将一个交叉引用添加到另一个页面中的子标题或锚点

如何将reST / Sphinx页面中的交叉引用插入到相同文档集的另一个页面中的子标题或锚点?

忽略这个答案,它不起作用:更好地使用Louis的答案

对于锚点,你可以定义如下的“短”锚点名称:

 .. _ShortAnchor: Target Header goes here ======================= Some text. 

要引用该标题,请使用:

 For more details, see ShortAnchor_. 

请注意,这甚至将ShortAnchor扩展为标题的全名。

您也可以使用完整的标题名称,如:

 See `Target Header goes here`_ chapter. 

但是这更容易出错修改标题文本。

所有这些工作跨多个源文件是最后一个文档的一部分。

“reST /狮身人面像”的expression使问题的范围不清楚。 是关于一般的reStructuredText 狮身人面像,还是关于狮身人面像中使用的 reStructuredText(而不是一般的reStructuredText)? 我将涵盖两者,因为使用RST的人很可能会遇到两种情况:

狮身人面像

除了可用于链接到各种实体(如:class: :)的特定于域的指令之外,还有一些通用的:ref:指令, 这里有logging 。 他们举这个例子:

  .. _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`. 

尽pipeRST提供的通用超链接机制在Sphinx中有效,但文档build议不要在使用Sphinx时使用它:

使用refbuild议通过标准的reStructuredText链接到部分(如Section title _),因为它跨越文件工作,部分标题发生变化时,以及所有支持交叉引用的构build器。

RST,一般

将RST文件转换为HTML的工具不一定有收集的概念。 例如,如果您依赖github将RST文件转换为HTML,或者使用了像rst2html这样的命令行工具,就是rst2html 。 不幸的是,用来获得所需结果的各种方法取决于您使用的工具。 例如,如果您使用rst2html并且您希望文件A.rst链接到文件A.rst中名为“Section”的节,并且希望最终的HTML在浏览器中工作,则A.rst将包含:

 `This <other.html#section>`__ is a reference to a section in another file, which works with ``rst2html``. Unfortunately, it does not work when the HTML is generated through github. 

你必须链接到最终的HTML文件,你必须知道给该部分的id是什么。 如果你想对通过github提供的文件做同样的事情:

 `This <other.rst#section>`__ is a reference to a section in another file, which works on github. Unfortunately, it does not work when you use ``rst2html``. 

在这里你也需要知道该部分的id 。 但是,链接到RST文件,因为它只是在访问创buildHTML的RST文件时。 (在写这个答案时,不允许直接访问HTML。)

这里有一个完整的例子。

新的,2016年更好的答案!

自动切分扩展可以让你轻松做到这一点。

 ============= Some Document ============= Internal Headline ================= 

那么以后…

 =============== Some Other Doc =============== A link- :ref:`Internal Headline` 

这个扩展是内置的,所以你所需要的只是编辑conf.py

 extensions = [ . . other . extensions . already . listed . 'sphinx.ext.autosectionlabel', ] 

唯一需要注意的是,现在您不能在整个文档集合中重复内部标题。 (值得。)