ドキュメントの見出しレベルを、ドキュメントが属する(sub(sub(…)))フォルダーの深さのレベルに自動的に依存させる
私が持っているとしましょう:
- ソースフォルダの
foo0.rst
ルート(source
)にあるファイルsphinx-doc
、 foo1.rst
サブフォルダ内のファイルsubfolder1
のsource
、foo2.rst
サブフォルダ内のファイルsubfolder2
のsubfolder1
、
あれは:
$ tree source
source
├── foo0.rst
└── subfolder1
├── foo1.rst
└── subfolder2
└── foo2.rst
すべて同じ内容:
This a title
============
ここで、がindex.rst
含まれている場合:
Welcome to Test's documentation!
================================
.. toctree::
:maxdepth: 3
:caption: Contents:
foo0
subfolder1/foo1
subfolder1/subfolder2/foo2
make html
与える:
Welcome to Test’s documentation!
Contents:
• This a title
• This a title
• This a title
つまり、すべての見出しはセクションです。
代わりに取得したいのは次のとおりです。
Welcome to Test’s documentation!
Contents:
• This a title
◦ This a title
▪ This a title
それは次の見出しです:
foo0.rst
セクションであること、subfolder1/foo1.rst
サブセクション(セクションではない)であり、subfolder1/subfolder2/foo2.rst
サブサブセクションである(セクションではない)。
したがって、私の質問は、(sub(sub(...)))フォルダーに属するドキュメントの見出しレベルを、それらが属するフォルダーの深さのレベルに自動的に依存させることは可能ですか?
回答
toctree
エントリに適用されるスタイルは、使用しているテーマによって異なります。テーマのCSSは、スフィンクスがに翻訳することをエントリにスタイルを適用する<ul>
と、<li>
内のその場所の両方に応じて、「ドキュメント階層」あなたがチェーンどのように与えられtoctrees
、どのようにあなたの部分の構造の個々の中.rst
のファイルが編成されています。
たとえば、Sphinxが生成するHTML要素を調べます。toctree
なりますdiv class="toctree-wrapper compound"
と命名されたセクションの各レベルで<li class="toctree-l1">
、その後<li class="toctree-l2">
、等...
目的を達成する1つの方法は、(ここに示すように)ディレクティブtoctree
を使用して特定の.. class::
サイズを囲み、カスタムスタイルを適用することです。ただし、その場合、エントリとして含める他のファイルのスタイルに影響します。.rst
toctree
いずれにせよ、プロジェクトをリファクタリングすると、余分な作業が発生し、自動化が失われる可能性があります。
オプションをディレクティブと一緒に使用することで、1つの可能な回避策もあり:hidden:
ます:include:。表示のtoctree
前に非表示を宣言するとtoctree
、「ドキュメント階層」によって階層内のエントリの位置を修正できます。その後、オプションtoctree
なしで表示さ:hidden:
れると、.rst
ファイルエントリ<li>
が階層内の固定位置を持つ要素としてレンダリングされます。(完全な例はこの投稿で見ることができます)。
それは可能ですが、の特性に逆らって作業しますtoctree
。
一般的な解決策は.rst
、toctree
表示方法に応じてファイルとセクションを書き込むことです。(このアプローチにはすべての利点がありますが、.rst
ファイルの書き込み方法に制限を設けるという唯一の欠点があります)。CSSスタイルを適応させたり、回避策を使用したりするよりも、おそらくこれが望ましい解決策です。
編集:
私が以前に書いたことは有効ですが、おそらく一般的すぎます。そこで、この例の1つの可能な解決策を示します。以下が必要な場合:
Contents:
• This a title (foo0)
◦ This a title (foo1)
▪ This a title (foo2)
簡単なオプションは、toctree
sのチェーンを使用することです。表示しtoctree
たくない場合は、ドキュメント階層の下位にあるを非表示にすることができます。
index.rst
.. toctree::
:maxdepth: 3
foo0
とで foo0.rst
.. toctree::
:maxdepth: 3
:hidden:
subfolder1/foo1
とで subfolder1/foo1.rst
.. toctree::
:maxdepth: 3
:hidden:
subfolder1/subfolder2/foo2
結果は指定したとおりになります。