参考资料

  1. sphinx官方-主页
  2. sphinx官方-config.py :生成html、latex以及转换成pdf的多数格式均在这个文件里进行配置
  3. sphtinx官方-模板:本次使用第三方模板 sphinx_rtd_theme
  4. sphinx官方-latex输出配置说明
  5. sphinx官方-创建指令
  6. sphinx使用手册中文译文
  7. 博客1:环境搭建、快速构建

环境搭建

环境搭建参考博客1

  1. 安装python
  2. 安装sphinx
  3. 安装textlive(可选)
  4. 安装汉字字体(可选)
    • 以装宋体为例(simsun.ttc),字体文件要注意是否可用
  5. 安装第三方模板(可选)

构建文档

快速构建参考博客1

文档结构配置

  • 入口文件:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    .. toctree::
    :maxdepth: 2
    :hidden:

    README
    book/UOS4.0介绍
    book/快速入门/index
    book/UOS项目平台/index
    book/UOS管理平台/index
    book/UOS计费系统/index
    book/UOS审批系统/index
    book/UOS存储平台/index
    book/UOS工单系统/index
    • .. toctree:::这个指令用来设置文档组织结构,其中
      • :maxdepth: 2 :用来设置目录显示层级
      • :hidden: 用来设置是否在每个主页(index)中显示该目录
      • :number:用来设置是否在目录前列出编号
      • :caption: 目录用来修改在pdf中index前显示的文字,更多设置详见官方配置文档
    • 下面的部分表示组织起来的结构,这里分别是各个章节的主页,会显示章节标题。每个章节的主页中再以此种形式列出各自的结构组织。

config.py配置选项

  • 值得注意的通用配置

    1. 文档格式:source_suffix = '.rst'
    2. 编码类型(中文一定要用这个):source_encoding = 'utf-8'
    3. 文档入口:master_doc = 'index'
  • 值得注意的html输出配置

    • 使用第三方模板(可以参考sphtinx官方-模板博客1
      1. 文档开头:import sphinx_rtd_theme
      2. “Options for HTML output”部分:html_theme = 'sphinx_rtd_theme'
    • html_sidebars: html侧边栏显示(可以参考sphtinx官方-模板
    • 不显示文档源文件: html_show_sourcelink = False
    • 不在底边显示“sphinx创建”字样: html_show_sphinx = False
  • latex输出配置1(用于转换pdf)

    • 处理引擎配置:latex_engine = 'xelatex'

    • latex_elements配置中:

      • 纸张大小: 'papersize': 'a4paper'

      • 字体大小: 'pointsize': '10pt'

      • preamble配置:

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        '''
        \\usepackage{xeCJK}
        \\usepackage{indentfirst}
        \\setlength{\\parindent}{2em}
        \\setCJKmainfont{SimSun} #针对中文使用中文字体
        \\setCJKmonofont[Scale=0.9]{SimSun}
        \\setCJKfamilyfont{song}{SimSun}
        \\setCJKfamilyfont{sf}{SimSun}
        \\XeTeXlinebreakskip = 0pt plus 1pt
        \\setcounter{tocdepth}{2} #目录显示的层级
        \\setcounter{secnumdepth}{0} #文档中标题前显示的编号等级
        '''
    • 单页输出: 'classoptions': ',oneside'

    • 章节样式:'fncychap': ''空字符不使用章节

    • latex_documents配置的最后一项: 使用'howto' ,chm格式。

  • latex输出配置2(用于输出pdf)

    latex输出配置1输出的pdf不带页码,为了解决这个问题:

    • 增加:latex_toplevel_sectioning = 'section'
    • 修改:’howto’改为’manual’

    关于latex配置选项,详见:官方配置文档1官方配置文档2

表格配置

表格配置指令使用:.. tabularcolumns:: column spec ,放在表格所在文档表格前,详见:官方配置文档注意:超过30行的表格latex无法自动控制宽度,可以使用p{width}手动控制

转换pdf指令

首先生成latex文档,之后使用xelatex(主要是为了处理中文)生成pdf,第二次使用xelatex为了生成pdf文档目录和文档中的连接。

  1. make latex
  2. cd build/latex
  3. xelatex *.tex
  4. xelatex *.tex

关于转换pdf的方法

试用过四种方法,只有xelatex成功。以下是其他三种未成功的方法:

  1. latexpdf指令:生成文档错误,未继续;
  2. 借用rst2pdf:sphinx官网上有说rst2pdf已停止维护,针对最新版可能有问题,实际使用中英文能够正常显示,中文显示未乱码,即便编码规则设定为utf-8依然不能正常显示;
  3. 借用rinohtype:sphinx官方推荐的一种直接转换pdf的方法。但实际使用中发现转换时间过长,且依然没有能处理好中文显示的问题。