Estoy usando Sphinx para documentar un proyecto que no es de Python. Quiero distribuir ./doc
carpetas en cada submódulo, que contienen submodule_name.rst
archivos para documentar ese módulo. Luego quiero absorber esos archivos en la jerarquía maestra para crear una especificación para todo el diseño.
Es decir:
Project
docs
spec
project_spec.rst
conf.py
modules
module1
docs
module1.rst
src
module2
docs
module2.rst
src
project_spec.rst
Intenté incluir archivos en el documento maestro en un árbol como este:
.. toctree::
:numbered:
:maxdepth: 2
Module 1 <../../modules/module1/docs/module1>
Sin embargo, este mensaje de error resulta:
ADVERTENCIA: toctree contiene una referencia a un documento no existente u'modules / module1 / docs / module1 '
¿No es posible usarlo ../
en una ruta de documento de alguna manera?
Actualización: agregada ubicación conf.py
Actualización: Aparte del truco de inclusión a continuación, esto todavía (2019) no es posible. Hay un problema abierto que sigue avanzando: https://github.com/sphinx-doc/sphinx/issues/701
fuente
.rst
extensión a la líneaModule 1 <../../modules/module1/docs/module1>
?source_suffix
está configurado.rst
en suconf.py
archivo de configuración. Además, ¿dónde está este archivo en la jerarquía de su directorio, ya que parece que todas las rutas son relativas a este archivo?source_suffix
está configurado en.rst
yconf.py
está en la misma carpeta que elproject_spec.rst
archivo.Respuestas:
¡Sí tu puedes!
En lugar de un enlace simbólico (que no funcionará en Windows), cree un documento auxiliar que no contenga nada más que una
.. include::
directiva.Me encontré con esto tratando de vincular a un archivo README que estaba en la parte superior del árbol de fuentes. Pongo lo siguiente en un archivo llamado
readme_link.rst
:Luego
index.rst
, hice que el árbol pareciera:Contents: .. toctree:: :maxdepth: 2 readme_link other_stuff
Y ahora tengo un enlace a mis notas de lanzamiento en mi página de índice.
Gracias a http://reinout.vanrees.org/weblog/2010/12/08/include-external-in-sphinx.html por la sugerencia
fuente
docs
) que enlaza con el directorio actual ('.'). Luego puede usar: download:docs\foo.rst
y esto funcionaría para archivos dentro de ladocs
carpeta o su padre... include:: ../readme.rst
incluida la extensión.Parece que la respuesta es no, los documentos enumerados en el árbol toc deben residir dentro del directorio de origen , es decir, el directorio que contiene su documento maestro y
conf.py
(y cualquier subdirectorio).De la lista de correo sphinx-dev :
Entonces, en lugar de copiar archivos usando
shutil
, puede intentar agregar enlaces simbólicos a todos sus módulos en elProject/docs/spec
directorio. Si crea un enlace simbólicoProject/modules
, entonces hará referencia a estos archivos en su árbol toc simplemente comomodules/module1/docs/module1
etc.fuente
sys.path
en conf.py, pero no funcionó.En conf.py, agregue las rutas relativas al sistema usando sys.path y os.path
Por ejemplo:
import os import sys sys.path.insert(0, os.path.abspath('..')) sys.path.insert(0, os.path.abspath('../../Directory1')) sys.path.insert(0, os.path.abspath('../../Directory2'))
Luego use su index.rst como de costumbre, haciendo referencia a los primeros archivos en el mismo directorio. Entonces en mi index.rst en mi carpeta local de Sphinx:
Contents: .. toctree:: :maxdepth: 4 Package1 <package1.rst> Package2 <package2.rst> Package3 <package3.rst>
Luego, en package1.rst, debería poder hacer referencia a los paquetes relativos normalmente.
fuente
Package1
? ¿Es ese el primerpath
uso especificadosys.path.insert
? ¿O hay un tutorial en alguna parte? Parece que no puedo encontrar el documento relevante.Package1
es una entrada con nombre para que la tabla de contenido muestre "Paquete1" como título de la sección.También es posible configurar sphinx para tener solo el archivo index.rst en la raíz y todas las demás cosas de sphinx en Project / docs:
Para Windows, moví todos los archivos y directorios de sphinx (excepto index.rst) a docs / y cambié:
docs/make.bat
: Cambioa
docs/conf.py
: Agregarsys.path.insert(0, os.path.abspath('..'))
fuente
Resolví mi problema bastante similar con la diferencia de que quería incluir un portátil jupyter externo. Había instalado nbsphinx pero no pude hacerlo funcionar. Lo que no funcionó:
Tenía el directorio que quería incluir la raíz en la ruta:
conf.py:
import os import sys sys.path.insert(...
El uso del
.. include:: directive
archivo se incluyó en la documentación, pero tal como está.Finalmente lo que resolvió el problema fue instalar el paquete nbsphinx-link
fuente
Una solución, si es realmente imposible usar enlaces relativos que respaldan
../
es que podría usarshutil
para copiar los archivos en el árbol de carpetas de especificaciones enconf.py
la especificación, pero prefiero no tener varias copias a menos que sea absolutamente necesario.fuente