2. reStructuredText 标记规范

reStructuredText 是一个使用简单且直觉化的构造来表述文档结构的标记语言。 这些结构既易读易写又容易处理。这篇文档自己就是 reStructuredText 的一个例子。 reStructuredText 的解析器是 docutils 的一个组件。

简单的隐式标记被轧来表述特殊构造,例如章节标题、项目列表、强调等等。 使用的标记尽可能地最小且不引人注意。基本的 reStructuredText 尽量使用较少的构造而扩展使用更复杂的显式标记。

reStructuredText 适用于任意长度的文档,从非常短(嵌入式的文档片段)到非常大(如本文档)。

第一个章节给出了一个快速总览,完整的规范在 语法描述 章节给出。

字面块(不会解析标记)被用来展示例子,表明标记的纯文本形式。

2.1. 总览

一篇 reStructuredText 文档是由体或块级元素组成的,并可以使用章节来组织。 `章节标题`_ 可以使用下划线或可选的上划线风格标记。章节可以包含 body 与子章节。 一些体元素可以包含进一步的元素,例如列表包含列表,列表包含段落或其他块元素等等。 作为一个段落,可以包含文本与 `行内标记`_ 元素。

这里有一些体元素的例子:

段落与行内标记
段落包含文本与行内标记:*着重*,**更着重**,`解释型文本`,``行内字面量``,
独立超链接(https://www.python.org),外部超链接(Python_),交叉引用(example_),
脚注([#1]_),引文引用([CIT2002]_),替换引用(|example|),以及行内链接目标
_`inline iternal targets`。

段落使用空行划分,左对齐。
几种列表
无序列表
-   这是无序列表,使用项目符号做前缀,每一条项目跟在后面
-   项目符号可以使用 ``*``, ``+`` 或 ``-``
有序列表
1.  这是有序列表
2.  有序列表可以使用数字、字母或罗马数字为前缀
#.  也可以使用 ``#`` 符号让之后的编号自动推导
定义列表
这是什么
    定义列表将术语与它的定义联系起来。

如何编写
    术语是一个单行文本,定义则是紧跟在其后的一个或多个段落或其他体元素。
    定义需要比术语多一个缩进。
字段列表
:啥: 字段列表将字段名映射为字段体,就像数据库记录一样,通常作为扩展语法的一部分。

:怎样: 字段名标记是一个冒号+字段名+冒号

    字段体可以是一个或多个体元素,第一个体元素可以跟在字段名后面,多余的需要比字段名多一个缩进。
选项列表

主要用来列出一个命令行程序的命令行选项:

-a              command-line option "a"
-b file         options can have arguments
                and long descriptions
--long          options can be long also
--input=file    long options can also have
                arguments
/V              DOS/VMS-style options too

选项和它的帮助信息之间需要至少有两个空格的间隔。

字面量块
字面量块是一个缩进或行前缀引言的块,在前一个段落的末尾需要有一个双冒号 ``::``
(就像这样 -->)::

    printf("%s", "Hello World!");
块引言
块引言由一个缩进的块元素组成:

    Everyone will going to die, but several of them need a little help.

        -- Lucian
文档测试块

专门用于 Python,执行文档测试:

>>> print("Hello World!")
Hello World
两种表格语法
网格表格

完整,但复杂而详细:

+------------------------+------------+----------+
| Header row, column 1   | Header 2   | Header 3 |
+========================+============+==========+
| body row 1, column 1   | column 2   | column 3 |
+------------------------+------------+----------+
| body row 2             | Cells may span        |
+------------------------+-----------------------+
简单表格

小而紧凑,但是受限:

====================  ==========  ==========
Header row, column 1  Header 2    Header 3
====================  ==========  ==========
body row 1, column 1  column 2    column 3
body row 2            Cells may span columns
====================  ======================
显式标记块

都以一个显式标记块符号(两个点加一个空格)开始:

脚注:

.. [1] 一个脚注由标签和一个或多个体元素组成。
    标签可以是纯数字或一个井号后接文字(``[#fn-example]``)。

    标签的引用需要在标签后加一个下划线: ``[1]_``,渲染出的效果和标签内容无关,而是自动编号。

    另外的体元素一贯地需要缩进一次。

引文:

.. [CIT2002] 和脚注一样,除了标签是文字的。引用处的标签也是文字。

超链接目标:

.. _Python: https://www.python.org/

.. _example:

    上面的 _Python 将会引向一处网址,而 _example 则是此段落。

指令(Directive):

.. image:: img/59498721_p0.jpg

替换定义:

.. |替换| replace:: 文本

注释:

.. 任何不满足标记规则的显式标记块都是注释,不会出现在输出中。

以下是上述例子的渲染效果:


段落包含文本与行内标记:着重更着重解释型文本行内字面量, 独立超链接(https://www.python.org),外部超链接(Python),交叉引用(example), 脚注([1]),引文引用([CIT2002]),替换引用(文本),以及行内链接目标 inline iternal targets

段落使用空行划分,左对齐。

  • 这是无序列表,使用项目符号做前缀,每一条项目跟在后面
  • 项目符号可以使用 *, +-
  1. 这是有序列表
  2. 有序列表可以使用数字、字母或罗马数字为前缀
  3. 也可以使用 # 符号让之后的编号自动推导
这是什么
定义列表将术语与它的定义联系起来。
如何编写
术语是一个单行文本,定义则是紧跟在其后的一个或多个段落或其他体元素。 定义需要比术语多一个缩进。
啥:

字段列表将字段名映射为字段体,就像数据库记录一样,通常作为扩展语法的一部分。

怎样:

字段名标记是一个冒号+字段名+冒号

字段体可以是一个或多个体元素,第一个体元素可以跟在字段名后面,多余的需要比字段名多一个缩进。

-a command-line option “a”
-b file options can have arguments and long descriptions
--long options can be long also
--input=file long options can also have arguments
/V DOS/VMS-style options too

字面量块是一个缩进或行前缀引言的块,在前一个段落的末尾需要有一个双冒号 :: (就像这样 –>):

printf("%s", "Hello World!");

块引言由一个缩进的块元素组成:

Everyone will going to die, but several of them need a little help.

– Lucian
>>> print("Hello World!")
Hello World
Header row, column 1 Header 2 Header 3
body row 1, column 1 column 2 column 3
body row 2 Cells may span
Header row, column 1 Header 2 Header 3
body row 1, column 1 column 2 column 3
body row 2 Cells may span columns
[1]

一个脚注由标签和一个或多个体元素组成。 标签可以是纯数字或一个井号后接文字([#fn-example])。

标签的引用需要在标签后加一个下划线: [1]_,渲染出的效果和标签内容无关,而是自动编号。

另外的体元素一贯地需要缩进一次。

[CIT2002]和脚注一样,除了标签是文字的。引用处的标签也是文字。
上面的 _Python 将会引向一处网址,而 _example 则是此段落。
_images/59498721_p0.jpg

2.2. 语法描述

下面的描述列出了与语法构造相对应的 “doctree元素” (文档树元素名称; XML DTD通用标识符)。 有关元素层次结构的详细信息,请参阅 Docutils文档树`Docutils通用DTD XML文档类型定义<https://docutils.sourceforge.io/docs/ref/docutils.dtd>`__