Sphinxを使用して、非Pythonプロジェクトを文書化します。各サブモジュールに./doc
フォルダーを配布し、そのモジュールを文書化するsubmodule_name.rst
ファイルを含めたい。次に、これらのファイルをマスター階層に取り込み、設計全体の仕様を作成します。
つまり:
Project
docs
spec
project_spec.rst
conf.py
modules
module1
docs
module1.rst
src
module2
docs
module2.rst
src
次のように、マスターproject_spec.rst
ドキュメントtoctreeにファイルを含めようとしました。
.. toctree::
:numbered:
:maxdepth: 2
Module 1 <../../modules/module1/docs/module1>
ただし、次のエラーメッセージが表示されます。
警告:toctreeには、存在しないドキュメントu'modules/module1/docs/module1 'への参照が含まれています
何らかの形でドキュメントパスで../
を使用することはできませんか?
更新:conf.pyの場所を追加しました
更新:以下のインクルードトリックを除き、これはまだ(2019)不可能です。プッシュされ続ける未解決の問題があります: https://github.com/sphinx-doc/sphinx/issues/701
はい、できます!
(Windowsでは機能しない)シンボリックリンクの代わりに、.. include::
ディレクティブ以外は何も含まれていないスタブドキュメントを作成します。
ソースツリーの最上位にあるREADMEファイルにリンクしようとして、これに遭遇しました。readme_link.rst
というファイルに次のコードを入れました。
.. include:: ../README
次に、index.rst
で、toctreeを次のようにしました。
Contents:
.. toctree::
:maxdepth: 2
readme_link
other_stuff
これで、インデックスページにリリースノートへのリンクがあります。
http://reinout.vanrees.org/weblog/2010/12/08/include-external-in-sphinx.html の提案に感謝
答えはノーだと思われます。toc-treeにリストされているドキュメントは、 ソースディレクトリ 、つまり マスタードキュメント および_conf.py
_(およびサブディレクトリ)。
STScIでは、Sphinxで個々のプロジェクトのドキュメントを作成し、次に(toctreeを使用して)これらのプロジェクト固有のドキュメントを多数含む「マスタードキュメント」を作成します。これを行うには、マスタードキュメントのドキュメントソースディレクトリにプロジェクトのドキュメントソースディレクトリへのシンボリックリンクを作成します。これは、toctreeがドキュメントソースツリーの外部にファイルを含めたくないようだからです。
したがって、shutil
を使用してファイルをコピーするのではなく、_Project/docs/spec
_ディレクトリ内のすべてのモジュールにシンボリックリンクを追加してみてください。 _Project/modules
_へのシンボリックリンクを作成する場合、tocツリーでこれらのファイルを単に_modules/module1/docs/module1
_などとして参照します。
Conf.pyで、sys.pathおよびos.pathを使用してシステムに相対パスを追加します
例えば:
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'))
次に、通常どおりindex.rstを使用し、同じディレクトリ内のrstファイルを参照します。したがって、ローカルSphinxフォルダーのindex.rstで:
Contents:
.. toctree::
:maxdepth: 4
Package1 <package1.rst>
Package2 <package2.rst>
Package3 <package3.rst>
その後、package1.rstで、通常は相対パッケージを参照できるようになります。
Package1 package
=====================
Submodules
----------
Submodule1 module
----------------------------------
.. automodule:: file_within_directory_1
:members:
:undoc-members:
:show-inheritance:
Submodule1 module
----------------------------------
.. automodule:: file_within_directory_2
:members:
:undoc-members:
:show-inheritance:
1つの解決策として、../
をバックアップする相対リンクを使用することが本当に不可能な場合は、shutil
を使用して、仕様のconf.py
内のspecフォルダーツリーにファイルをコピーできます。しかし、どうしても必要な場合を除き、複数のコピーを持ちたくないのです。
また、rootにindex.rstファイルのみ、Project/docsにある他のすべてのsphinxのものだけを持つようにsphinxを構成することもできます。
Windowsの場合、すべてのsphinxファイルとディレクトリ(index.rstを除く)をdocs /に移動し、変更しました。
docs/make.bat
: 変化する
set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% .
に
set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% -c . ..
docs/conf.py
:追加
sys.path.insert(0, os.path.abspath('..'))