我有一份包含许多标题和小标题的文件。进一步在文本中我想链接回其中一个标题。如果没有:ref:
标签的冗余,我该怎么做?内容似乎拿起标题就好了。我希望这样的事情:`#polled-data-retrieval`_
。
答案 0 :(得分:26)
reStructuredText支持implicit hyperlink targets。来自reStructuredText quick reference:
章节标题,脚注和引文自动生成超链接目标(标题文本或脚注/引文标签用作超链接名称)。
所以下面的文字(取自reStructuredText快速参考,拼写错误和所有):
Titles are targets, too
=======================
Implict references, like `Titles are targets, too`_.
生成类似于以下内容的HTML:
<strong><a name="title">Titles are targets, too</a></strong>
<p>Implict references, like <a href="#title">Titles are targets, too</a>.</p>
答案 1 :(得分:14)
2016年新的,更好的答案!
autosection extension可让您轻松完成此操作,并使用真正的交叉引用。
=============
Some Document
=============
Internal Headline
=================
然后,稍后......
===============
Some Other Doc
===============
A link- :ref:`Internal Headline`
此扩展程序是内置的,因此您只需编辑conf.py
extensions = [
.
. other
. extensions
. already
. listed
.
'sphinx.ext.autosectionlabel',
]
您唯一需要注意的是,现在您无法在整个文档集合中复制内部标题。 (值得。)
答案 2 :(得分:8)
克里斯回答中的一小部分内容:
如果要链接到标题而不使用链接的标题的确切名称,则可以这样操作:
Titles are targets, too
=======================
See `here <#titles-are-targets-too>`_
这将呈现为:
<h1 id="titles-are-targets-too">Titles are targets, too</h1>
<p>See <a href="#titles-are-targets-too">here</a></p>
答案 3 :(得分:0)
使用标题文字不是一个好选择。标题可能会更改或可能会得到纠正。现在,有一种简单的方法可以找出更改后断开了谁的链接以及链接的位置。
建议通过标准reStructuredText链接到节(例如
Requirement already up-to-date: fastprogress in /usr/local/lib/python3.6/dist-packages (0.2.1)
)使用ref,因为它可跨文件工作,更改节标题时,如果不正确将发出警告,并且适用于所有支持交叉引用的构建器。
来源:https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-ref
与sphinx.ext.autosectionlabel
extension提出的隐式定义的锚点相比,使用Adam Michael Wood提出的Chris至少是一种更加结构化的方法。
您应该使用带有引用和符号目标名称的显式链接(就像LaTeX一样。)
`Section title`_
创建目标。.. _refname:
引用目标。 如果目标后面有标题,则会在链接文本中使用该标题。