Python Sphinx锚点在任意一行

时间:2015-06-13 19:49:19

标签: python documentation anchor python-sphinx restructuredtext

如何使用Sphinx在ReST中的任意一行设置锚点引用?

更清楚,这是一个例子:

A title with an anchor
----------------------

some stuff

这会创建一个标题A title with an anchor,并在该行的末尾添加一个额外的 on-hover 字符,这将是该行的锚点引用/标题。

现在在以下情况......

``some arbitrary line``
    this is actually a definition

...我希望some arbitrary line有一个锚点,与标题相同。

1 个答案:

答案 0 :(得分:8)

您可以使用名为ref的角色执行此操作: https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-ref

具体阅读第2个要点,该要点说明如果未在标题之前放置引用会发生什么。

例如,在名为example.rst的文件中,您可以使用以下方法:

.. _arbitrary-anchor:

Some Arbitrary Line
    This is actually a definition

标签"任意锚"在整个文件中必须是独一无二的。要在文档中的某个位置引用此锚点,您可以执行以下操作:

Lorem ipsum :ref:`here is the anchor link <arbitrary-anchor>` dolor sit amet

不幸的是,当悬停超过引用行时,此锚点不会显示,但您应该能够使用http://example.com/example.html#arbitrary-anchor

的显式链接访问它

由于您提到定义 - 还值得注意的是,有一个名为term的角色可以让您在词汇表中引用定义。

有关如何使用此功能的示例,请参阅:http://sphinx-doc.org/glossary.html#term-role

以及如何在第3段中引用它: http://sphinx-doc.org/domains.html#domains

最后,如果您需要在段落中间插入一个锚点,一种方法是使用<a id=#sample>inline anchor</a>创建一个明确的raw rolehttp://docutils.sourceforge.net/docs/ref/rst/roles.html#raw

修改

还有一个选择。这将创建一个锚点和悬停效果。

.. rst:role:: Sample rst role

    This is a sample definition which links back to its anchor :rst:role:`Sample rst role`

这是一个有趣的指令,我已经使用了一段时间了。当我查看此页面的来源时,我发现了它:

http://sphinx-doc.org/markup/inline.html#inline-markup

http://sphinx-doc.org/_sources/markup/inline.txt

当您悬停时,文字如下所示: enter image description here

点击链接后,文字如下所示: enter image description here

此选项不太理想,因为它会在定义的左侧和右侧显示:。但这很好,因为它创造了一个锚点并悬停在不是标题的东西上(所以它也不会出现在TOC中,这正是我想要的)