Estou usando o Sphinx para documentar um projeto não Python. Desejo distribuir ./doc
pastas em cada submódulo, contendo submodule_name.rst
arquivos para documentar aquele módulo. Em seguida, quero sugar esses arquivos para a hierarquia mestre para criar uma especificação para todo o design.
Ie:
Project
docs
spec
project_spec.rst
conf.py
modules
module1
docs
module1.rst
src
module2
docs
module2.rst
src
Tentei incluir arquivos no project_spec.rst
documento mestre para a árvore assim:
.. toctree::
:numbered:
:maxdepth: 2
Module 1 <../../modules/module1/docs/module1>
No entanto, essa mensagem de erro resulta:
AVISO: toctree contém referência a documento não existente u'modules / module1 / docs / module1 '
Não é possível usar ../
em um caminho de documento de alguma forma?
Atualização: Adicionado local conf.py
Atualização: Além do truque de inclusão abaixo, isso ainda (2019) não é possível. Há um problema aberto que continua sendo levado adiante: https://github.com/sphinx-doc/sphinx/issues/701
fonte
.rst
ramal à linhaModule 1 <../../modules/module1/docs/module1>
?source_suffix
esteja definido como.rst
em seuconf.py
arquivo de configuração. Além disso, onde está esse arquivo em sua hierarquia de diretório, uma vez que parece que todos os caminhos são relativos a esse arquivo?source_suffix
está definido como.rst
econf.py
está na mesma pasta que oproject_spec.rst
arquivo.Respostas:
Sim você pode!
No lugar de um link simbólico (que não funciona no Windows), crie um documento stub que não contenha nada além de uma
.. include::
diretiva.Corri para isso tentando vincular a um arquivo README que estava no topo da árvore de origem. Coloquei o seguinte em um arquivo chamado
readme_link.rst
:Em seguida
index.rst
, fiz a árvore toc parecer:Contents: .. toctree:: :maxdepth: 2 readme_link other_stuff
E agora eu tenho um link para minhas notas de lançamento na minha página de índice.
Agradecimentos a http://reinout.vanrees.org/weblog/2010/12/08/include-external-in-sphinx.html pela sugestão
fonte
docs
) que se vincula a current-dir ('.'). Então você pode usar: download:docs\foo.rst
e isso funcionaria paradocs
arquivos dentro da pasta ou de seu pai... include:: ../readme.rst
incluindo a extensão.Parece que a resposta é não, os documentos listados na árvore toc devem residir no diretório de origem , ou seja, o diretório que contém seu documento mestre e
conf.py
(e quaisquer subdiretórios).Da lista de e-mails sphinx-dev :
Portanto, em vez de copiar os arquivos usando,
shutil
você pode tentar adicionar links simbólicos para todos os seus módulos noProject/docs/spec
diretório. Se você criar um link simbólico paraProject/modules
você, fará referência a esses arquivos em sua árvore de toque simplesmente comomodules/module1/docs/module1
etc.fonte
sys.path
arquivo conf.py, mas não funcionou.Em conf.py, adicione os caminhos relativos ao sistema usando sys.path e os.path
Por exemplo:
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'))
Em seguida, use seu index.rst como de costume, referenciando os primeiros arquivos no mesmo diretório. Então, em meu index.rst em minha pasta local Sphinx:
Contents: .. toctree:: :maxdepth: 4 Package1 <package1.rst> Package2 <package2.rst> Package3 <package3.rst>
Em seguida, em package1.rst, você deve ser capaz de apenas referenciar os pacotes relativos normalmente.
fonte
Package1
? Isso épath
especificado primeiro usandosys.path.insert
? Ou existe um tutorial em algum lugar? Não consigo encontrar o documento relevante.Package1
é uma entrada nomeada para que o sumário mostre "Pacote1" como o título da seção.Também é possível configurar o sphinx para ter apenas o arquivo index.rst na raiz e todas as outras coisas do sphinx em Project / docs:
Para o Windows, movi todos os arquivos e dirs sphinx (exceto index.rst) para docs / e alterei:
docs/make.bat
: Mudançapara
docs/conf.py
: Adicionarsys.path.insert(0, os.path.abspath('..'))
fonte
Resolvi meu problema bastante semelhante com a diferença que queria incluir um notebook jupyter externo. Eu tinha instalado o nbsphinx, mas não conseguia fazê-lo funcionar. O que não funcionou:
Eu tinha o diretório que queria incluir a raiz no caminho:
conf.py:
import os import sys sys.path.insert(...
Usando o,
.. include:: directive
o arquivo foi incluído na documentação, mas como está.Finalmente, o que resolveu o problema foi instalar o pacote nbsphinx-link
fonte
Uma solução, se for realmente impossível usar links relativos de backup,
../
é que eu poderia usarshutil
para copiar os arquivos para a árvore de pastas de especificações noconf.py
for the spec, mas prefiro não ter várias cópias, a menos que seja absolutamente necessário.fonte