Edited at

Sphinxで全ページ共通の目次を作る

More than 3 years have passed since last update.


index.rst

まず、全ページに表示させたいドキュメントをトップページに書く。(トップページじゃなくても良いのかもしれないけど(忘れた)、分かりやすいのでトップページに書いた。)


index.rst

.. toctree:: 

:maxdepth: 5
:hidden:

document1.rst
document2.rst


この時に :hidden: を使って、index.htmlには表示しないようにする。


_templates

次に、_templatesディレクトリを作成して、globaltoc.html みたいなのを作成。


doc/_templates/globaltoc.html

<div id="toc" class="sidebarRow">

<h3><a href="{{ pathto(master_doc) }}">{{ _('目次') }}</a></h3>

{%- if sphinx_version[:3] >= '1.2' %}
{{ toctree (maxdepth=5, collapse=False, includehidden=True) }}
{% else %}
{{ toctree (maxdepth=5, collapse=False) }}
{% endif %}
</div>


includehidden=True とすることによって、共通の目次上ではドキュメント名が見える。


conf.py

conf.pyの該当部分を書く。


conf.py

# Add any paths that contain templates here, relative to this directory.

templates_path = ['_templates']

...

# Custom sidebar templates, maps document names to template names.
html_sidebars = {
'**': ['searchbox.html', 'globaltoc.html', 'relations.html'],
}


サイドバーはこんな感じにした。


参考