Comment insérer une référence croisée dans une page reST / Sphinx vers un sous-en-tête ou une ancre dans une autre page du même ensemble de documentation?
python-sphinx
restructuredtext
Sue Walsh
la source
la source
Réponses:
L'expression «reST / Sphinx» rend la portée de la question floue. S'agit-il de reStructuredText en général et de Sphinx, ou uniquement de reStructuredText tel qu'il est utilisé dans Sphinx (et non de reStructuredText en général)? Je vais couvrir les deux car les personnes utilisant RST sont susceptibles de rencontrer les deux cas à un moment donné:
Sphinx
Outre les directives spécifiques au domaine qui peuvent être utilisées pour se lier à diverses entités telles que classes (
:class:
), il y a la:ref:
directive générale , documentée ici . Ils donnent cet exemple:Bien que le mécanisme général d'hyperliens proposé par RST fonctionne dans Sphinx, la documentation recommande de ne pas l'utiliser lors de l'utilisation de Sphinx:
RST, en général
Les outils qui convertissent les fichiers RST en HTML n'ont pas nécessairement une notion de collection . C'est le cas par exemple si vous comptez sur github pour convertir des fichiers RST en HTML ou si vous utilisez un outil de ligne de commande comme
rst2html
. Malheureusement, les différentes méthodes à utiliser pour obtenir le résultat souhaité varient en fonction de l'outil que vous utilisez. Par exemple, si vous utilisezrst2html
et que vous souhaitez que le fichier soitA.rst
lié à une section nommée «Section» dans le fichierother.rst
et que vous souhaitez que le HTML final fonctionne dans un navigateur, ilA.rst
contiendra:Vous devez créer un lien vers le fichier HTML final et vous devez savoir ce que sera
id
donné à la section. Si vous souhaitez faire de même pour un fichier servi via github:Ici aussi, vous devez connaître le
id
contenu de la section. Cependant, vous créez un lien vers le fichier RST car c'est uniquement lors de l'accès au fichier RST que le code HTML est créé. (Au moment de la rédaction de cette réponse, l'accès direct au HTML n'est pas autorisé.)Un exemple complet est disponible ici .
la source
RST, in General
, était une nouvelle décevante!).. _my-reference-label:
approche Sphinx est qu'ellemy-reference-label
est affichée dans l'URL après#
dans le lien. Il faut donc utiliser de jolis noms d'étiquettes. De plus, la table des#
matières crée toujours un -lien versSection to cross-reference
, et donc on se retrouve avec deux#
-liens différents vers la même section.:ref:`Link title <lmy-reference-label>`
Nouvelle, meilleure réponse pour 2016!
L' extension de sélection automatique vous permet de le faire facilement.
puis, plus tard ...
Cette extension est intégrée, il vous suffit donc de modifier
conf.py
La seule chose à laquelle vous devez faire attention est que vous ne pouvez plus dupliquer les titres internes dans la collection de documents. (Ça vaut le coup.)
la source
_page-title-learn-more
). C'est un peu ennuyeux, mais j'aime toujours me fier à l'autosection.autosectionlabel_prefix_document
option de configuration qui vous permet d'éviter le problème de doublon de titre en préfixant chaque étiquette de section avec le nom du document dont elle provient.:ref:`Link title <Internal Headline>`
. De plus, vous pouvez créer un lien direct vers une page (quickstart.rst par exemple) avec:doc:`quickstart`
Exemple:
où
Homebrew
est une section à l'intérieur d'un autre document nomméInstallation.rst
.Cela utilise la fonction de sélection automatique , vous devrez donc modifier
config.py
les éléments suivants:la source
autosectionlabel_maxdepth
, donc pour que l'autosectionlabel fonctionne, vous devez définir cette variable sur> =2
. En outre, si docs sont générés à subdir, commehtml
, vous devez ajouter un préfixe refs avec son nom::ref:'html/Installation:Homebrew'
. Pour cette raison, vous pouvez choisir un nom de répertoire générique, commegenerated
, pour rendre les références moins bizarres lorsqu'elles sont utilisées avec des formats autres que HTML. Pour cette raison, vous pourriez aussi bien'Homebrew <Installation.html#Homebrew>'__
utiliser la reST appropriée et ne pas être lié à Sphinx.html/
préfixe