Wie füge ich einen Querverweis in eine reST / Sphinx-Seite ein, entweder in einen Unterheader oder in einen Anker auf einer anderen Seite im selben Dokumentationssatz?
python-sphinx
restructuredtext
Sue Walsh
quelle
quelle
Antworten:
Der Ausdruck "reST / Sphinx" macht den Umfang der Frage unklar. Geht es um reStructuredText im Allgemeinen und Sphinx oder nur um reStructuredText, wie in Sphinx verwendet wird (und nicht um reStructuredText im Allgemeinen)? Ich werde beide behandeln, da Menschen, die RST verwenden, wahrscheinlich irgendwann auf beide Fälle stoßen:
Sphinx
Neben den domänenspezifischen Anweisungen, die zum Verknüpfen mit verschiedenen Entitäten wie classes (
:class:
) verwendet werden können, gibt es die hier:ref:
dokumentierte allgemeine Anweisung . Sie geben dieses Beispiel:Obwohl der von RST angebotene allgemeine Hyperlinking-Mechanismus in Sphinx funktioniert, wird in der Dokumentation davon abgeraten, ihn bei Verwendung von Sphinx zu verwenden:
RST im Allgemeinen
Die Tools, die RST-Dateien in HTML konvertieren, müssen nicht unbedingt eine Sammlung enthalten . Dies ist beispielsweise der Fall, wenn Sie sich beim Konvertieren von RST-Dateien in HTML auf github verlassen oder wenn Sie ein Befehlszeilenprogramm wie verwenden
rst2html
. Leider variieren die verschiedenen Methoden, um das gewünschte Ergebnis zu erzielen, je nachdem, welches Tool Sie verwenden. Wenn Sie beispielsweise verwendenrst2html
und möchten, dass die DateiA.rst
mit einem Abschnitt mit dem Namen "Abschnitt" in der Datei verknüpft wirdother.rst
und der endgültige HTML-Code in einem Browser funktioniert,A.rst
enthält er Folgendes:Sie müssen auf die endgültige HTML-Datei verlinken und wissen
id
, wie der Abschnitt aussehen wird. Wenn Sie dasselbe für eine Datei tun möchten, die über github bereitgestellt wird:Auch hier müssen Sie die
id
Angaben zum Abschnitt kennen. Sie verknüpfen jedoch die RST-Datei, da der HTML-Code erst beim Zugriff auf die RST-Datei erstellt wird. (Zum Zeitpunkt des Schreibens dieser Antwort ist der direkte Zugriff auf HTML nicht zulässig.)Ein vollständiges Beispiel finden Sie hier .
quelle
RST, in General
enttäuschende Nachrichten!).. _my-reference-label:
Ansatzes besteht darin, dassmy-reference-label
er in der URL nach#
dem Link angezeigt wird . Man muss also hübsche Markennamen verwenden. Außerdem erstellt das Inhaltsverzeichnis immer einen#
Link zuSection to cross-reference
und somit#
erhält man zwei verschiedene Links zu demselben Abschnitt.:ref:`Link title <lmy-reference-label>`
Neue, bessere Antwort für 2016!
Mit der Autosection-Erweiterung können Sie dies ganz einfach tun.
dann später...
Diese Erweiterung ist integriert. Sie müssen sie also nur bearbeiten
conf.py
Das einzige, worauf Sie achten müssen, ist, dass Sie jetzt keine internen Überschriften in der gesamten Dokumentensammlung duplizieren können. (Es ist es wert.)
quelle
_page-title-learn-more
). Es ist ein bisschen nervig, aber ich mag es immer noch, mich hauptsächlich auf die Autosection zu verlassen.autosectionlabel_prefix_document
Konfigurationsoption ein, mit der Sie das Problem doppelter Überschriften vermeiden können, indem Sie jeder Abschnittsbezeichnung den Namen des Dokuments voranstellen, aus dem es stammt.:ref:`Link title <Internal Headline>`
. Sie können auch mit:doc:`quickstart`
Beispiel:
Wo
Homebrew
ist ein Abschnitt in einem anderen Dokument mit dem NamenInstallation.rst
.Dies verwendet die automatische Schnittfunktion und muss daher wie folgt bearbeitet werden
config.py
:quelle
autosectionlabel_maxdepth
, sodass Sie diese Variable auf> = setzen müssen, damit das Autosectionlabel funktioniert2
. Wenn Dokumente wie in Unterverzeichnissen generiert werdenhtml
, müssen Sie refs den Namen voranstellen ::ref:'html/Installation:Homebrew'
. Aus diesem Grund möchten Sie möglicherweise einen generischen Verzeichnisnamen auswählengenerated
, um Refs weniger seltsam aussehen zu lassen, wenn sie mit anderen Formaten als HTML verwendet werden. Aus diesem Grund können Sie auch'Homebrew <Installation.html#Homebrew>'__
das richtige reST verwenden und nicht an Sphinx gebunden sein.html/
Präfix nicht