Добавление перекрестной ссылки на подзаголовок или привязку на другой странице


Как вставить перекрестную ссылку на странице reST / Sphinx в подзаголовок или привязку на другой странице в том же наборе документации?

3 65

3 ответа:

игнорировать этот ответ, он не работает: лучше использовать ответ от Louis

для якоря, вы можете определить "короткие" имена якоря, как это:

.. _ShortAnchor:

Target Header goes here
=======================

Some text.

для ссылки на этот заголовок используйте:

For more details, see ShortAnchor_.

обратите внимание, что это даже расширяет ShortAnchor до полного имени заголовка.

вы также можете использовать полное имя заголовка, как:

See `Target Header goes here`_ chapter.

но это больше ошибка, склонная к изменению текста заголовка.

все это работает с несколькими исходными файлами, являющимися частью одной окончательной документации.

выражение "reST / Sphinx" делает объем вопроса неясным. Речь идет о реструктурированном тексте вообще и Сфинкс, или только о reStructuredText а в Сфинкс (а не реструктурированный текст вообще)? Я собираюсь охватить оба, так как люди, использующие RST, вероятно, столкнутся с обоими случаями в какой-то момент:

Сфинкс

помимо директив, специфичных для домена, которые могут использоваться для связи с различными сущности, такие как классы (:class:) вот и генерал

новый, лучший ответ на 2016 год!

The расширение автосекции позволяет сделать это легко.

=============
Some Document
=============


Internal Headline
=================

потом, позже...

===============
Some Other Doc
===============


A link-  :ref:`Internal Headline`

это расширение встроено, так что все, что вам нужно, это редактировать conf.py

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

единственное, что вы должны быть осторожны, это то, что теперь вы не можете дублировать внутренние заголовки в коллекции doc. (Стоить того.)