指令¶
如前所述 , 指令是显式标记的通用块。虽然Docutils提供了许多指令, 但Sphinx提供了更多指令, 并使用指令作为主要的扩展机制之一。
请参阅 域 , 了解域添加的角色。
参见
有关Docutils提供的指令的概述, 请参阅 reStructuredText Primer 。
目录¶
由于reST没有连接多个文档或将文档拆分为多个输出文件的工具, 因此Sphinx使用自定义指令来添加文档所包含的单个文件之间的关系, 以及目录。 toctree
指令是中心元素。
注解
可以使用 include 指令将一个文件简单地”包含”在另一个文件中。
注解
对于本地目录, 请使用标准的reST contents指令 。
-
.. toctree::
¶ 该指令使用指令体中给出的文档的各个TOC(包括 “TOC tree”)在当前位置插入 “TOC tree”。相对文档名称(不以斜杠开头)与指令所在的文档相关, 绝对名称相对于源目录。可以给出数字”maxdepth”选项以指示树的深度;默认情况下, 包括所有级别。 1
考虑这个例子(取自Python docs的库引用索引):
.. toctree:: :maxdepth: 2 intro strings datatypes numeric (many more documents listed here)
这完成了两件事:
插入所有这些文档的目录, 最大深度为2, 表示一个嵌套标题。这些文件中的
toctree
指令也被考虑在内。Sphinx知道文档
intro
,strings
等的相对顺序, 并且它知道它们是所显示文档的子项, 即库索引。根据这些信息, 它会生成 “next chapter” , “previous chapter” 和 “parent chapter” 链接。
项
第一个
toctree
中的文档标题将自动从引用文档的标题中读取。如果这不是您想要的, 您可以使用与reST超链接类似的语法指定显式标题和目标(和Sphinx的 cross-referencing syntax )。这看起来像:.. toctree:: intro All about strings <strings> datatypes
上面的第二行将链接到
strings
文档, 但是将使用标题 “All about strings” 而不是strings
文档的标题。您还可以通过提供HTTP URL而不是文档名称来添加外部链接。
章节编号
如果你想在HTML输出中有节号, 请给 toplevel toctree一个
numbered
选项。例如:.. toctree:: :numbered: foo bar
编号然后从
foo
的标题开始。子toctrees是自动编号的(不要给那些numbered
标志)。通过将深度作为
numbered
的数字参数, 也可以编号到特定深度。其他选项
你可以使用
caption
选项提供一个 toctree 标题, 你可以使用name
选项来提供可以通过使用引用的隐式目标名ref
.. toctree:: :caption: Table of Contents :name: mastertoc foo
如果只想显示树中文档的标题, 而不是同一级别的其他标题, 则可以使用
titlesonly
选项:.. toctree:: :titlesonly: foo bar
你可以在toctree指令中使用 “globbing ” , 给出
glob
标志选项。然后将所有条目与可用文档列表进行匹配, 并按字母顺序将匹配项插入到列表中。例:.. toctree:: :glob: intro* recipe/* *
这首先包括所有名称以
intro
开头的文件, 然后是recipe
文件夹中的所有文件, 然后是所有剩余的文件(当然包含该指令的文件除外)。2特殊条目名称
self
代表包含toctree指令的文档。如果要从toctree生成”站点地图”, 这非常有用。您可以使用
reversed
标志选项来反转列表中条目的顺序。当使用glob
标志选项来反转文件的顺序时, 这非常有用。例:.. toctree:: :glob: :reversed: recipe/*
你也可以给指令一个”隐藏”选项, 比如:
.. toctree:: :hidden: doc_1 doc_2
这仍将通知Sphinx文档层次结构, 但不会在指令的位置插入文档中的链接 - 如果您打算自己, 以不同的样式或HTML侧边栏插入这些链接, 这是有意义的。
如果您只想拥有一个顶级toctree并隐藏所有其他较低级别的toctree, 则可以将”includehidden”选项添加到顶级toctree条目:
.. toctree:: :includehidden: doc_1 doc_2
然后可以通过 “hidden” 选项消除所有其他toctree条目。
最后, source directory (或子目录)中的所有文档必须出现在某些
toctree
指令中;如果Sphinx找到未包含的文件, 它将发出警告, 因为这意味着无法通过标准导航访问此文件。使用
exclude_patterns
可以完全排除文档或目录。使用 “orphan” 元数据 来构建文档, 但通知Sphinx它是无法通过toctree访问的。“master document” (由
master_doc
选择)是TOC树层次结构的 “root” 。如果你没有给出maxdepth
选项, 它可以用作文档的主页面, 也可以用作 “完整的目录”。在 0.3 版更改: 添加了 “globbing” 选项。
在 0.6 版更改: 添加了 “numbered” 和 “hidden” 选项以及外部链接和对 “self” 引用的支持。
在 1.0 版更改: 添加了 “titlesonly” 选项。
在 1.1 版更改: 在 “numbered” 中添加了数字参数。
在 1.2 版更改: 添加了 “includehidden” 选项。
在 1.3 版更改: 添加了 “caption” 和 “name” 选项。
特别的名字¶
Sphinx保留一些文件名供自己使用;您不应该尝试使用这些名称创建文档 - 这将导致问题。
特殊文档名称(以及为它们生成的页面)是:
genindex
,modindex
,search
它们分别用于通用索引, Python模块索引和搜索页面。
通用索引用模块中的条目填充, 所有索引生成 对象描述 , 以及来自
index
指令。Python模块索引包含一个条目
py:module
指令。搜索页面包含一个表单, 该表单使用生成的JSON搜索索引和JavaScript对搜索词的生成文档进行全文搜索;它应该适用于支持现代JavaScript的每个主流浏览器。
每个名字都以
_
开头虽然Sphinx目前只使用了很少这样的名称, 但您不应该创建包含此类名称的文档或包含文档的目录。 (使用
_
作为自定义模板目录的前缀是可以的。)
警告
小心文件名中的异常字符。某些格式可能会以意外的方式解释这些字符:
对于基于HTML的格式, 不要使用冒号
:
。与其他部分的链接可能无效。不要使用加号
+
作为ePub格式。可能找不到某些资源。
段落级标记¶
这些指令创建短段落, 可以在内部信息单元和普通文本中使用。
-
.. note::
关于API的一个特别重要的信息, 用户在使用该注释所涉及的任何API时应该注意这些信息。指令的内容应以完整的句子写成, 并包括所有适当的标点符号。
例:
.. note:: This function is not suitable for sending spam e-mails.
-
.. warning::
关于API的一些重要信息, 用户在使用警告所涉及的任何API时都应该非常清楚。指令的内容应以完整的句子写成, 并包括所有适当的标点符号。这不同于
note
, 因为建议使用note
以获取有关安全性的信息。
-
.. versionadded::
version
¶ 该指令记录了将所描述的功能添加到库或C API的项目版本。当这适用于整个模块时, 应该在任何散文之前将其放置在模块部分的顶部。
必须给出第一个参数, 并且是有问题的版本;您可以添加第二个参数, 其中包含 简要 的更改说明。
例:
.. versionadded:: 2.5 The *spam* parameter.
请注意, 指令头和说明之间必须没有空行;这是为了使这些块在标记中在视觉上连续。
-
.. versionchanged::
version
¶ 类似于
versionadded
, 但以某种方式描述命名特征中的更改时间和内容(新参数, 更改的副作用等)。
-
.. deprecated::
version
¶ 类似于
versionchanged
, 但描述了该功能何时被弃用。还可以给出解释, 例如通知读者应该使用什么。例:.. deprecated:: 3.1 Use :func:`spam` instead.
-
.. seealso::
¶ 许多部分包括对模块文档或外部文档的引用列表。这些列表使用
seealso
指令创建。seealso
指令通常放在任何子部分之前的部分中。对于HTML输出, 它显示为从文本的主流中框出来。以下内容
seealso
指令应该是reST定义列表。例:.. seealso:: Module :py:mod:`zipfile` Documentation of the :py:mod:`zipfile` standard module. `GNU tar manual, Basic Tar Format <http://link>`_ Documentation for tar archive files, including GNU tar extensions.
还有一个 “短式” 允许看起来像这样:
.. seealso:: modules :py:mod:`zipfile`, :py:mod:`tarfile`
0.5 新版功能: 短式。
-
.. rubric::
title
¶ 该指令创建一个段落标题, 不用于创建目录节点。
注解
如果标题的 title 是 “Footnotes ” (或所选语言的等价物), 则LaTeX编写器会忽略此标题, 因为假定它仅包含脚注定义, 因此会创建一个空标题。
-
.. centered::
¶ 该指令创建一个居中的粗体文本行。使用方法如下:
.. centered:: LICENSE AGREEMENT
1.1 版后已移除: 此演示文稿指令是旧版本的遗留代码。使用
rst-class
指令代替并添加适当的样式。
-
.. hlist::
¶ 该指令必须包含项目符号列表。它会通过水平分布多个项目或减少项目间距来将其转换为更紧凑的列表, 具体取决于构建器。
对于支持水平分布的构建器, 有一个
columns
选项, 用于指定列数;它默认为2.示例:.. hlist:: :columns: 3 * A list of * short items * that should be * displayed * horizontally
0.6 新版功能.
代码高亮¶
有多种方法可以在Sphinx中显示语法高亮的文字代码块:使用 reST doctest blocks ;使用 reST literal blocks , 可选择与 highlight
指令结合使用;使用 code-block
指令;并使用 literalinclude
指令。Doctest blocks 只能用于显示交互式Python会话, 而其余三个可用于其他语言。在这三个文件中, 当整个文档或至少大部分文档使用具有相同语法的代码块并且应该以相同的方式设置样式时, 文字块是有用的。另一方面, 当你想要对每个块的样式进行更精细的控制, 或者当你有一个包含使用多种不同语法的代码块的文档时, 第一个 code-block
指令更有意义。最后, literalinclude
指令对于在文档中包含整个代码文件非常有用。
在所有情况下, 语法高亮由 Pygments 提供。使用文字块时, 使用源文件中的任何 highlight
指令进行配置。当遇到 highlight
指令时, 它会被使用, 直到遇到下一个 highlight
指令。如果文件中没有 highlight
指令, 则使用全局突出显示语言。这默认为 python
, 但可以使用 highlight_language
配置值进行配置。支持以下值:
none
(没有突出显示)default
(类似于python3
但是回退到none
没有警告突出显示失败;默认情况下highlight_language
未设置)guess
(让Pygments根据内容猜测词法分析器, 只适用于某些识别良好的语言)python
rest
c
… 以及Pygments支持的任何其他 词法分析器别名
如果使用所选语言突出显示失败(即Pygments发出 “错误” 标记), 则不会以任何方式突出显示该块。
重要
支持的词法分类别名列表与Pygment版本相关联。如果要确保一致突出显示, 则应修复Pygments的版本。
-
.. highlight::
language
¶ 例:
.. highlight:: c
在遇到下一个
highlight
指令之前, 将使用该语言。如前所述, language 可以是Pygments支持的任何词法分类别名。其他选项
Pygments可以为代码块生成行号。要启用此功能, 请使用
linenothreshold
选项。.. highlight:: python :linenothreshold: 5
这将为超过五行的所有代码块生成行号。
-
.. code-block::
[language]
¶ 例:
.. code-block:: ruby Some Ruby code.
该指令的别名
sourcecode
也可以。该指令将语言名称作为参数。它可以是Pygments支持的任何词法分析别名。如果没有给出, 将使用highlight
指令的设置。如果没有设置, 将使用highlight_language
。其他选项
Pygments可以为代码块生成行号。要启用此功能, 请使用
linenos
标志选项。.. code-block:: ruby :linenos: Some more Ruby code.
可以使用
lineno-start
选项选择第一个行号。如果存在,linenos
标志会自动激活:.. code-block:: ruby :lineno-start: 10 Some more Ruby code, with line numbering starting at 10.
另外, 可以给出一个
emphasisize-lines
选项让Pygments强调特定的行:.. code-block:: python :emphasize-lines: 3,5 def some_function(): interesting = False print 'This line is highlighted.' print 'This one is not...' print '...but this one is.'
可以给出
caption
选项以在代码块之前显示该名称。可以使用name
选项提供隐式目标名称, 可以使用以下命令引用ref
。例如:.. code-block:: python :caption: this.py :name: this-py print 'Explicit is better than implicit.'
可以使用
dedent
选项从代码块中去除缩进字符。例如:.. code-block:: ruby :dedent: 4 some ruby code
在 1.1 版更改: 添加了 “强调线” 选项。
在 1.3 版更改: 添加了
lineno-start
,caption
,name
和dedent
选项。在 1.6.6 版更改: LaTeX支持
emphasisize-lines
选项。在 2.0 版更改:
language
参数变为可选参数。
-
.. literalinclude::
filename
¶ 通过将示例文本存储在仅包含纯文本的外部文件中, 可以包括更长的逐字文本显示。可以使用
literalinclude
指令包含该文件。 3 例如, 要包含Python源文件example.py
, 使用:.. literalinclude:: example.py
文件名通常相对于当前文件的路径。但是, 如果它是绝对的(以
/
开头), 它相对于顶级源目录。其他选项
像
code-block
, 该指令支持linenos
标志选项来打开行号,lineno-start
选项来选择第一行号,强调 - lines
选项用于强调特定行,name
选项用于提供隐式目标名称,dedent
选项用于删除代码块的缩进字符, 还有language
选项用于选择a语言与当前文件的标准语言不同。另外, 它支持caption
选项;但是, 这可以提供没有参数使用文件名作为标题。选项示例:.. literalinclude:: example.rb :language: ruby :emphasize-lines: 12,15-18 :linenos:
如果给出带有所需制表符宽度的
tab-width
选项, 则会扩展输入中的制表符。假设包含文件在
source_encoding
中编码。如果文件具有不同的编码, 则可以使用encoding
选项指定它:.. literalinclude:: example.py :encoding: latin-1
该指令还支持仅包含文件的一部分。如果它是一个Python模块, 你可以选择一个类, 函数或方法来包含使用
pyobject
选项:.. literalinclude:: example.py :pyobject: Timer.start
这只包括属于文件中
Timer
类中start()
方法的代码行。或者, 您可以通过给出
lines
选项来准确指定要包含的行:.. literalinclude:: example.py :lines: 1,3,5-10,20-
这包括第1,3,5到10行和第20行到最后一行。
控制文件的哪个部分的另一种方法是使用
start-after
和end-before
选项(或者只使用其中一个)。如果start-after
作为字符串选项给出, 则仅包括在包含该字符串的第一行之后的行。如果end-before
作为字符串选项给出, 则只包含在包含该字符串的第一行之前的行。start-at
和end-at
选项的行为方式类似, 但包含匹配字符串的行。使用
start-after
选择的行仍然可以使用lines
, 第一个允许的行按照惯例使用行号1
。当以上述任何方式选择行时, “强调行” 中的行号指的是从 “1” 开始连续计数的所选行。
指定要显示的文件的特定部分时, 显示原始行号可能很有用。这可以使用
lineno-match
选项来完成, 但是只有当选择包含连续的行时才允许这样做。您可以分别使用
prepend
和append
选项为所包含的代码添加和/或附加一行。这很有用, 例如用于突出显示不包含<?php
/?>
标记的PHP代码。如果要显示代码的差异, 可以通过给出
diff
选项来指定旧文件:.. literalinclude:: example.py :diff: example.py.orig
这显示了
example.py
和example.py.orig
之间的差异, 统一的diff格式。在 0.4.3 版更改: 添加了
encoding
选项。在 0.6 版更改: 添加了
pyobject
,lines
,start-after
和end-before
选项, 以及对绝对文件名的支持。在 1.0 版更改: 添加了
prepend
,append
和tab-width
选项。在 1.3 版更改: 添加了
diff
,lineno-match
,caption
,name
和dedent
选项。在 1.5 版更改: 添加了
start-at
和end-at
选项。在 1.6 版更改: 使用
start-after
和lines
时, 第一行按照start-after
被认为是lines
的行号1
。
术语¶
-
.. glossary::
该指令必须包含带有术语和定义的reST定义列表标记。然后, 这些定义可以引用
term
角色。例:.. glossary:: environment A structure where information about all documents under the root is saved, and used for cross-referencing. The environment is pickled after the parsing stage, so that successive runs only need to read and parse new and changed documents. source directory The directory which, including its subdirectories, contains all source files for one Sphinx project.
与常规定义列表相比, 每个条目允许 multiple 术语, 并且允许使用内联标记。您可以链接到所有条款。例如:
.. glossary:: term 1 term 2 Definition of both terms.
(术语表排序时, 第一个术语确定排序顺序。)
如果要为一般索引条目指定 “分组键”, 可以将 “键” 设置为 “term : key” 。例如:
.. glossary:: term 1 : A term 2 : B Definition of both terms.
请注意, “key” 用于按键分组键。 “key” 未正常化; 键 “A” 和 “a” 成为不同的组。使用 “key” 中的整个字符代替第一个字符;它用于 “组合字符序列” 和 “代理对” 分组键。
在i18n情况下, 即使原始文本只有 “term” 部分, 也可以指定 “本地化 term : key”。在这种情况下, 翻译的 “本地化术语” 将分类在 “密钥” 组中。
0.6 新版功能: 您现在可以为glossary指令提供一个
:sorted:
标志, 该标志将按字母顺序自动对条目进行排序。在 1.1 版更改: 现在支持多个术语和内联标记。
在 1.4 版更改: 词汇表术语的索引键应视为 experimental 。
元信息标记¶
标识当前部分的作者。该论点应包括作者的姓名, 以便它可用于演示文稿和电子邮件地址。地址的域名部分应为小写。例:
.. sectionauthor:: Guido van Rossum <guido@python.org>
默认情况下, 此标记不会以任何方式反映在输出中(它有助于跟踪贡献), 但您可以将配置值
show_authors
设置为True
以使它们生成一个段落输出。
codeauthor
指令, 可以多次出现, 命名所描述代码的作者, 就像sectionauthor
命名一篇文档的作者。如果show_authors
配置值为 “True” , 它也只产生输出。
索引生成标记¶
Sphinx自动从所有对象描述(如函数, 类或属性)创建索引条目, 如 域 中所述。
但是, 还有明确的标记可用, 以使索引更加全面, 并在文档中启用索引条目, 其中信息不主要包含在信息单元中, 例如语言参考。
-
.. index::
<entries>
¶ 该指令包含一个或多个索引条目。每个条目由一个类型和一个值组成, 用冒号分隔。
例如:
.. index:: single: execution; context module: __main__ module: sys triple: module; search; path The execution context --------------------- ...
该指令包含五个条目, 这些条目将转换为生成的索引中的条目, 该条目链接到索引语句的确切位置(或者, 如果是脱机介质, 则是相应的页码)。
由于索引指令在源中的位置生成交叉引用目标, 因此将它们*放在它们引用的东西之前是有意义的 - 例如标题, 如上例所示。
可能的条目类型是:
- single
创建单个索引条目。可以通过用分号分隔子条目文本来创建子条目(下面也使用此符号来描述创建的条目)。
- pair
pair: loop; statement` 是一个创建两个索引条目的快捷方式, 即
loop; statement
和statement; loop
。- triple
同样,
triple: module; search; path
是一个创建三个索引条目的快捷方式, 它们是module; search path
,search; path, module
和path; module search
。- see
see: entry; other
创建一个索引条目, 从entry
引用到other
。- seealso
就像
see
, 但是插入 “see also” 而不是 “see” 。- module, keyword, operator, object, exception, statement, builtin
这些都创建了两个索引条目。例如,
module:hashlib
创建条目module; hashlib
和hashlib; module
。 (这些是特定于Python的, 因此已弃用。)
您可以通过在前面添加感叹号来标记 “main” 索引条目。生成的索引中强调了对 “main” 条目的引用。例如, 如果两个页面包含:
.. index:: Python
和一页包含:
.. index:: ! Python
然后在三个反向链接中强调后一页面的反向链接。
对于仅包含 “single” 条目的索引指令, 有一种简写符号:
.. index:: BNF, grammar, syntax, notation
这将创建四个索引条目。
在 1.1 版更改: 添加了
see
和seealso
类型, 以及标记主条目。
引用基于标签的内容¶
-
.. only::
<expression>
¶ 仅当 expression 为true时才包含指令的内容。表达式应该包含标签, 例如:
.. only:: html and draft
未定义的标签是假的, 定义的标签(通过
-t
命令行选项或在conf.py
中, 参见 here)是真的。支持布尔表达式, 也使用括号(如html and (latex or draft)
)。format 和当前构建器的 name (
html
,latex
或text
)始终设置为标签 4 。为了明确区分格式和名称, 它们还添加了前缀format_
和builder_
, 例如: epub构建器定义了标签html
,epub
,format_html
和builder_epub
。读取配置文件 后, 将设置这些标准标记, 因此它们不可用。
所有标记必须遵循标识符语法, 如 标识符和关键字 文档中所述。即, 标记表达式可能只包含标记符合Python变量的语法。在ASCII中, 它由大写和小写字母
A
到Z
和下划线_
组成, 除了第一个字符可以使用数字0
到9
。0.6 新版功能.
在 1.2 版更改: 添加了构建器的名称和前缀。
警告
该指令旨在仅控制文档的内容。它无法控制部分, 标签等。
表格¶
使用 reStructuredText tables , 即
网格表语法 (ref),
简单的表格语法 (ref),
csv-table 句法,
或者 list-table 语法。
table 指令作为 grid 和 simple 语法的可选包装。
它们在HTML输出中工作正常, 但是在LaTeX中使用表格时会有一些问题:列宽很难自动正确确定。因此, 存在以下指令:
-
.. tabularcolumns::
column spec
¶ 该指令为源文件中出现的下一个表提供了 “column spec” 。规范是LaTeX “tabulary” 包的环境的第二个参数(Sphinx用它来翻译表)。它可以具有:
|l|l|l|
这意味着三个左调整, 不间断的列。对于应该自动断开的具有较长文本的列, 请使用标准的
p{width}
构造或tabulary的自动说明符:L
用自动宽度冲洗左列
R
用自动宽度冲洗右列
C
中心列, 自动宽度
J
对齐自动宽度的列
LRCJ
列的自动宽度由tabulary
与第一遍中观察到的份额成比例, 其中表格单元格以其自然的 “horizontal” 宽度呈现。默认情况下, Sphinx为每列使用带有
J
的表格布局。0.3 新版功能.
在 1.6 版更改: 由于自定义Sphinx LaTeX宏, 合并的单元格现在可以包含多个段落并且处理得更好。这种新颖的情况促使人们默认切换到
J
说明符而不是L
。提示
Sphinx实际上使用
T
说明符来完成\newcolumntype{T}{J}
。要恢复到以前的默认值, 请在LaTeX前导码中插入\newcolumntype{T}{L}
(参见latex_elements
)。tabulary的一个常见问题是内容很少的列被 “squeezed” 。最小列宽是一个名为
\tymin
的表格参数。您可以通过\ setlength{\tymin}{40pt}
在LaTeX前导码中全局设置它。否则, 使用
tabularcolumns
指令, 对该列使用显式的p{40pt}
(例如)。您也可以使用l
说明符, 但如果某个合并单元格与该列相交, 则会使设置列宽的任务更加困难。警告
使用
longtable
而不是tabulary
呈现超过30行的表, 以允许分页。L
,R
, … 说明符不适用于这些表。包含类似列表的元素(如对象描述, 块引用或任何类型的列表)的表不能使用
tabulary
开箱即用。因此, 如果你没有给出tabularcolumns
指令, 它们就会被设置为标准的LaTeXtabular
(或longtable
)环境。如果你这样做, 表格将设置为tabulary
, 但你必须使用p{width}
构造(或者下面描述的Sphinx的\X
和\Y
说明符) )包含这些元素的列。文字块根本不适用于
tabulary
, 因此包含文字块的表总是设置为tabular
。用于文字块的逐字环境仅适用于p{width}
(和\X
或\Y
)列, 因此Sphinx为包含文字块的表生成此类列规范。从Sphinx 1.5开始, 使用
\X{a}{b}
说明符(说明字母*中有*反斜杠)。它就像p{width}
, 宽度设置为当前行宽的一小部分a/b
。你可以在tabularcolumns
中使用它(如果某些LaTeX宏也被称为\X
, 这不是问题。)b
不是*不需要列的总数, 也不是\X
说明符的分数之和加起来为1。例如|\X{2}{5}|\X{1}{5}|\X{1}{5}|
是合法的, 表格将占据线宽的80% , 它的三个列中的第一个具有与下两个列的总和相同的宽度。这由 table 指令的
:widths:
选项使用。从Sphinx 1.6开始, 还有
\Y{f}
说明符允许一个十进制参数, 例如\Y{0.15}
: 这与\X{3}{20}
的效果相同。在 1.6 版更改: 来自复杂网格表(多行, 多列或两者)的合并单元格现在允许块引用, 列表, 文字块, … 和常规单元格一样。
Sphinx的合并单元格与
p{width}
,\X{a}{b}
,Y{f}
和 tabulary 列完美交互。注解
tabularcolumns
与表指令的:widths:
选项冲突。如果两者都指定, 则:widths:
选项将被忽略。
数学¶
数学的输入语言是LaTeX标记。这是纯文本数学符号的事实上的标准, 并且具有额外的优点, 即在构建LaTeX输出时不需要进一步的转换。
请记住, 当你将数学标记放在 Python文档字符串 中读取 autodoc
时, 你要么必须加倍所有的反斜杠, 要么使用Python原始字符串(r"raw"
)。
-
.. math::
¶ 显示数学的指令(数学为自己的整行)。
该指令支持多个方程式, 应该用空行分隔:
.. math:: (a + b)^2 = a^2 + 2ab + b^2 (a - b)^2 = a^2 - 2ab + b^2
另外, 每个单独的等式都设置在一个
split
环境中, 这意味着你可以在一个等式中有多个对齐的行, 在&
对齐并用\\
.. math:: (a + b)^2 &= (a + b)(a + b) \\ &= a^2 + 2ab + b^2
有关更多详细信息, 请查看 AmSMath LaTeX package 的文档。
当数学只有一行文本时, 它也可以作为指令参数给出:
.. math:: (a + b)^2 = a^2 + 2ab + b^2
通常, 方程式没有编号。如果你想要你的方程式得到一个数字, 使用
label
选项。给定时, 它选择方程的内部标签, 通过它可以交叉引用, 并导致发出方程编号。请参阅eq
作为示例。编号样式取决于输出格式。还有一个选项
nowrap
可以防止在数学环境中包含给定的数学。当您提供此选项时, 您必须确保自己正确设置了数学运算。例如:.. math:: :nowrap: \begin{eqnarray} y & = & ax^2 + bx + c \\ f(x) & = & x^2 + 2xy + y^2 \end{eqnarray}
参见
- Sphinx中对HTML输出的数学支持
使用HTML构建器渲染数学选项。
latex_engine
说明如何配置LaTeX构建器以在数学标记中支持Unicode文字。
语法制作显示¶
特殊标记可用于显示正式语法的制作。标记很简单, 不会尝试对BNF(或任何派生形式)的所有方面进行建模, 但提供的足够允许以一种方式显示无上下文的语法, 使得符号的使用呈现为定义的超链接符号。有这个指令:
-
.. productionlist::
[name]
¶ 该指令用于包含一组制作。每个生产都在一行上给出, 并由一个名称组成, 由以下定义中的冒号分隔。如果定义跨越多行, 则每个延续行必须以与第一行中相同的列放置冒号开头。
参数
productionlist
用于区分属于不同语法的不同生产列表集。productionlist
指令参数中不允许有空行。该定义可以包含标记为解释文本的标记名称(例如
sum ::= `integer` "+" `integer`
) - 这会生成对这些标记的生成的交叉引用。在生产列表之外, 您可以使用以下命令引用令牌生产token
。请注意, 在生产中不再进行reST解析, 因此您不必转义
*
或|
字符。
以下是Python参考手册中的示例:
.. productionlist::
try_stmt: try1_stmt | try2_stmt
try1_stmt: "try" ":" `suite`
: ("except" [`expression` ["," `target`]] ":" `suite`)+
: ["else" ":" `suite`]
: ["finally" ":" `suite`]
try2_stmt: "try" ":" `suite`
: "finally" ":" `suite`
脚注