J'ai deux clés en double -> .. command:: targetName dans mon doc sur deux pages distinctes. J'ai besoin de savoir comment puis-je créer un lien vers ces deux cibles distinctes en utilisant la syntaxe suivante :

Page-1 Click this -> :command:`targetName`  # this will always open the first targetName declared in the doc

Objectif:

Page-1 Click this -> :command:`targetName <page-1.html#targetName>`  # not working :/
Page-2 Click this -> :command:`targetName <page-2.html#targetName>`  # not working :/
Page-2 Click this -> `targetName <page-2.html#targetName>`_  # this will work but I don't want to use hyperlink instead of " :command: " cuz I want to keep my block style as is.
0
boudi 10 nov. 2020 à 15:37

1 réponse

Meilleure réponse

D'abord un peu de terminologie. Ce que vous appelez targetName s'appelle title dans reStructuredText. Le truc entre crochets angulaires est le target. Voir la Syntaxe des références croisées.

ReStructuredText ne prend pas en charge le balisage en ligne imbriqué, qui inclut les liens hypertexte de style. Cependant, il existe une solution de contournement avec le remplacement.

Comme reStructuredText ne prend pas en charge le balisage en ligne imbriqué, le seul moyen de créer une référence avec du texte stylisé est d'utiliser des substitutions avec la directive "replace":

I recommend you try |Python|_.

.. |Python| replace:: Python, *the* best language around
.. _Python: http://www.python.org/

Dans ton cas:

Page-1 Click this -> |myTarget|_

.. |myTarget| replace:: ``targetName``
.. _myTarget: page-1.html#targetName

Pour une personnalisation plus poussée de l'apparence, utilisez un style personnalisé. Voir Comment configurer des styles personnalisés pour reStructuredText, Sphinx, ReadTheDocs, etc. ? pour un exemple.

1
Steve Piercy 11 nov. 2020 à 08:15