Ich verwende Sphinx, um ein Nicht-Python-Projekt zu dokumentieren. Ich möchte ./doc
Ordner in jedem Submodul verteilen , die submodule_name.rst
Dateien enthalten , um dieses Modul zu dokumentieren. Ich möchte diese Dateien dann in die Master-Hierarchie einfügen, um eine Spezifikation für das gesamte Design zu erstellen.
Dh:
Project
docs
spec
project_spec.rst
conf.py
modules
module1
docs
module1.rst
src
module2
docs
module2.rst
src
Ich habe versucht, Dateien project_spec.rst
wie folgt in den Hauptdokumentbaum aufzunehmen:
.. toctree::
:numbered:
:maxdepth: 2
Module 1 <../../modules/module1/docs/module1>
Diese Fehlermeldung führt jedoch zu:
WARNUNG: toctree enthält Verweise auf nicht vorhandene Dokumente u'modules / module1 / docs / module1 '
Ist es nicht möglich, ../
irgendwie in einem Dokumentpfad zu verwenden ?
Update: Conf.py-Speicherort hinzugefügt
Update: Abgesehen von dem unten stehenden Include-Trick ist dies (2019) immer noch nicht möglich. Es gibt ein offenes Problem, das immer weiter vorangetrieben wird: https://github.com/sphinx-doc/sphinx/issues/701
quelle
.rst
Erweiterung zur Zeile hinzufügenModule 1 <../../modules/module1/docs/module1>
?source_suffix
wird auf.rst
in Ihrerconf.py
Konfigurationsdatei. Wo befindet sich diese Datei in Ihrer Verzeichnishierarchie, da anscheinend alle Pfade relativ zu dieser Datei sind?source_suffix
ist auf eingestellt.rst
undconf.py
befindet sich im selben Ordner wie dieproject_spec.rst
Datei.Antworten:
Ja, du kannst!
Erstellen Sie anstelle eines Symlinks (der unter Windows nicht funktioniert) ein Stub-Dokument, das nur eine
.. include::
Direktive enthält.Ich bin auf diesen Versuch gestoßen, eine Verknüpfung zu einer README-Datei herzustellen, die sich oben im Quellbaum befindet. Ich habe Folgendes in eine Datei mit dem Namen eingefügt
readme_link.rst
:Dann
index.rst
ließ ich den Baum so aussehen:Und jetzt habe ich einen Link zu meinen Versionshinweisen auf meiner Indexseite.
Vielen Dank an http://reinout.vanrees.org/weblog/2010/12/08/include-external-in-sphinx.html für den Vorschlag
quelle
docs
) erstellen , der auf das aktuelle Verzeichnis ('.') Verlinkt. Dann können Siedocs\foo.rst
Folgendes verwenden: download: und dies würde für Dateien innerhalb desdocs
Ordners oder seines übergeordneten Ordners funktionieren ... include:: ../readme.rst
einschließlich der Erweiterung verwenden.Es scheint, dass die Antwort Nein lautet. Die im toc-Baum aufgelisteten Dokumente müssen sich im Quellverzeichnis befinden , dh im Verzeichnis , das Ihr Masterdokument und
conf.py
(und alle Unterverzeichnisse) enthält.Aus der Sphinx-Dev-Mailingliste :
Anstatt Dateien mit zu kopieren, können
shutil
Sie versuchen, allen Modulen imProject/docs/spec
Verzeichnis Symlinks hinzuzufügen . Wenn Sie einen Symlink zu Ihnen erstellen,Project/modules
verweisen Sie auf diese Dateien in Ihrem toc-Baum einfach wiemodules/module1/docs/module1
usw.quelle
sys.path
in der Datei conf.py hinzuzufügen, aber das hat nicht funktioniert.Fügen Sie in conf.py die relativen Pfade mit sys.path und os.path zum System hinzu
Beispielsweise:
Verwenden Sie dann wie gewohnt Ihre index.rst und verweisen Sie auf die ersten Dateien im selben Verzeichnis. Also in meiner index.rst in meinem lokalen Sphinx-Ordner:
Dann sollten Sie in package1.rst in der Lage sein, normal auf die relativen Pakete zu verweisen.
quelle
Package1
? Wird das zuerst mitpath
angegebensys.path.insert
? Oder gibt es irgendwo ein Tutorial? Ich kann das relevante Dokument anscheinend nicht finden.Package1
ist ein benannter Eintrag, sodass im Inhaltsverzeichnis "Paket1" als Titel des Abschnitts angezeigt wird.Es ist auch möglich, Sphinx so zu konfigurieren, dass nur die Datei index.rst im Stammverzeichnis und alle anderen Sphinx-Dateien in Project / docs enthalten sind:
Für Windows habe ich alle Sphinx-Dateien und Verzeichnisse (außer index.rst) in docs / verschoben und Folgendes geändert:
docs/make.bat
: Veränderungzu
docs/conf.py
: Hinzufügenquelle
Ich habe mein ziemlich ähnliches Problem mit dem Unterschied gelöst, dass ich ein externes Jupyter-Notebook einbauen wollte. Ich hatte nbsphinx installiert, konnte es aber nicht zum Laufen bringen. Was hat nicht funktioniert:
Ich hatte das Verzeichnis, in das ich das Stammverzeichnis aufnehmen wollte:
conf.py:
import os import sys sys.path.insert(...
Die Verwendung der
.. include:: directive
Datei war in der Dokumentation enthalten, aber wie sie ist.Schließlich löste das Problem die Installation des Pakets nbsphinx-link
quelle
Eine Lösung, wenn es wirklich unmöglich ist, relative Links zu verwenden, die gesichert werden,
../
besteht darin, dass ichshutil
die Dateien in den Spezifikationsordnerbaum in der Spezifikation kopieren könnteconf.py
, aber ich würde lieber nicht mehrere Kopien haben, es sei denn, dies ist absolut notwendig.quelle