2.8. 角色

sphinx使用解释文本角色将语义标记插入到文档中。它们被写为 :rolename:`content '.

2.8.1. 交叉引用任意位置 / 锚

添加锚的步骤:

  1. 添加 label

  2. 适用 ref 角色 链接 label

为了支持对任何文档中任意位置的交叉引用,使用标准的REST标签。为此,在整个文档中,工作标签名称必须是唯一的。有两种方法可以引用标签:

  • :ref:`Label`
    • 如果将标签直接放置在节标题之前,可以使用 :ref:`label-name` .例如:

    .. _my-reference-label:
    
    Section to cross-reference
    --------------------------
    
    This is the text of the section.
    
    It refers to the section itself, see :ref:`my-reference-label`.
    
    .. 当节和引用位于不同的源文件中时,这也同样有效。
    
    • 自动标签同样适用于图像

    .. _my-figure:
    
    .. figure:: whatever
    
       Figure caption
    
  • :ref:`description _<Label>`
    • 如果不是以上情况,仍可以引用节标题之前未放置的标签,但必须使用以下语法为链接指定明确的标题: :ref:`Link title <label-name>`.

注意

引用标签(label)必须以下划线开头。引用标签时,必须省略下划线(请参见上面的示例)。

引用可下载文件 menuselection

.. 上方两个锚点的代码如下:

:ref:`引用可下载文件 <syntax/sphinx/rest/roles:引用可下载文件>`
:ref:`menuselection <syntax/sphinx/rest/roles:交叉引用任意位置 / 锚>`

重要

手动为每个部分添加一个明确的目标并确保其唯一性是一项艰巨的任务!幸运的是,Sphinx 包含一个扩展来帮助我们解决这个问题, autosectionlabel

要激活 autosectionlabel 扩展,请将其添加到您的 conf.py 文件中:

# Add the extension
extensions = [
   'sphinx.ext.autosectionlabel',
]

# Make sure the target is unique
autosectionlabel_prefix_document = True

Sphinx 将为您的所有部分创建明确的目标,目标名称的形式为 {path/to/page}:{title-of-section}.

- :ref:`guides/cross-referencing-with-sphinx:explicit targets`.

- :ref:`Custom title <guides/cross-referencing-with-sphinx:explicit targets>`.

2.8.2. 引用可下载文件

:download:`Title <path>`

此角色允许您链接到源树中的文件,这些文件不是可以查看的REST文档,而是可以下载的文件。

当您使用此角色时,被引用的文件将在生成时自动标记为包含在输出中(显然,仅用于HTML输出)。所有可下载的文件都放在 _downloads/<unique hash>/ 输出目录的子目录;处理重复的文件名。

See this example xml file.

.. 上文下载功能代码如下所示:
See :download:`this example xml file <../example/test.xml>`.

2.8.3. 交叉引用文档

:doc:`/text`

链接到指定的文档;可以绝对或相对方式指定文档名。如果没有给出明确的链接文本(与通常一样: :doc:`Monty Python members </people>` 链接标题将是给定文档的标题。

基础杂糅知识

./basic

.. 上方文档链接的实现代码如下:

:doc:`./basic`

:doc:`./basic <./basic>`

2.8.4. 数学

2.8.4.1. math

(2.8.1)\[e^{i\pi} + 1 = 0\]

Since Pythagoras, we know that \(a^2 + b^2 = c^2\).

\[α_t(i) = P(O_1, O_2, … O_t, q_t = S_i λ)\]

\(α_t(i) = P(O_1 × O_2 × … O_t × q_t = S_i λ)\)

The area of a circle is \(A_\text{c} = (\pi/4) d^2\).

Euler's identity, equation (2.8.1), was elected one of the most beautiful mathematical formulas.

.. 上方数学公式的代码为:

.. math:: e^{i\pi} + 1 = 0
   :label: euler

Since Pythagoras, we know that :math:`a^2 + b^2 = c^2`.

.. math::

   α_t(i) = P(O_1, O_2, … O_t, q_t = S_i λ)


:math:`α_t(i) = P(O_1 × O_2 × … O_t × q_t = S_i λ)`

The area of a circle is :math:`A_\text{c} = (\pi/4) d^2`.

Euler's identity, equation :math:numref:`euler`, was elected one of the
most beautiful mathematical formulas.

备注

:eq: 等同于 math:numref .

2.8.5. raw

包括原始目标格式标记。

“raw” 指示非restructuredtext数据,该数据将不受影响地传递给Writer。输出格式的名称在指令参数中给出。对原始数据的解释取决于作者。Writer可以忽略任何不匹配其格式的原始输出。


.. 上方分隔线代码如下所示:

.. raw:: html

   <hr width=200 size=10>

2.8.6. 其他语义标记

以下角色除了以不同的样式格式化文本外,不执行任何特殊操作:

2.8.6.1. strong

strong 角色标记的效果等同于双星号的字体加粗效果。

text text

.. 上方 text 的代码如下所示:
**text**
:strong:`text`

2.8.6.2. sub / subscript / 下标

The chemical formula for pure water is H2O.

The chemical formula for pure Hydrogen Peroxide is \(H_2 O_2\).

.. 上方化学公式的代码表示方式如下:

The chemical formula for pure water is |H2O|.

.. |H2O| replace:: H\ :sub:`2`\ O

The chemical formula for pure Hydrogen Peroxide is |H2O2|.

.. |H2O2| replace:: :math:`H_2 O_2`

2.8.6.3. sup / superscript / 上标

X2+ Y2= 25 (\(X^2 + Y^2 = 25\)).

.. 上方公式的代码表示方式如下:
|X2Y2| (|X2Y25|).

.. |X2Y2| replace:: X\ :sup:`2`\ + Y\ :sup:`2`\ = 25


.. |X2Y25| replace:: :math:`X^2 + Y^2 = 25`

2.8.6.4. abbr 文字提示

缩写。如果角色内容包含一个带括号的解释,它将被特殊处理:它将以HTML的形式显示在工具提示中,并且在LaTex中只输出一次。

LIFO.

.. 文字提示的实现方式:

:abbr:`LIFO (last-in, first-out)`.

2.8.6.6. guilabel 标签

guilabel

.. 上方按钮文本代码如下所示:

:guilabel:`guilabel`