toctreeをファイル名の降順で並べ替えるオプションを知っている人はいますか?昇順の場合、次の:glob:
ようなオプションを使用できます。
.. toctree:
:glob:
2011*
これは、Sphinxドキュメント内で報告する必要がある再構成されたテキストで書かれた毎日のメモに便利です。
toctreeをファイル名の降順で並べ替えるオプションを知っている人はいますか?昇順の場合、次の:glob:
ようなオプションを使用できます。
.. toctree:
:glob:
2011*
これは、Sphinxドキュメント内で報告する必要がある再構成されたテキストで書かれた毎日のメモに便利です。
toctreeを逆ソートする簡単なオプションはありません。ただし、ファイルに書き込む前にドキュメント構造を変更することでそれを行うことができます。ここに提案があります。次のコードをconf.pyに追加します。
def reverse_toctree(app, doctree, docname):
"""Reverse the order of entries in the root toctree if 'glob' is used."""
if docname == "index":
for node in doctree.traverse():
if node.tagname == "toctree" and node.get("glob"):
node["entries"].reverse()
break
def setup(app):
app.connect("doctree-resolved", reverse_toctree)
reverse_toctree()
コールバック関数は、doctree-resolved
イベントが発生したときに呼び出されます。toctree
この関数は、ドキュメントツリー内のノードを見つけて、その場で変更します。
SphinxおよびDocutilsAPIの詳細:
これにより、toctreeに逆のオプションが追加されます。
from sphinx.directives import TocTree
from docutils.parsers.rst import directives
class NewTocTree(TocTree):
option_spec = dict(TocTree.option_spec,
reversed=directives.flag)
def run(self):
rst = super(NewTocTree, self).run()
if 'reversed' in self.options:
rst[0][0]['entries'].reverse()
return rst
def setup(app):
app.add_directive('toctree', NewTocTree)
これにより、次のことが可能になります。
Contents:
.. toctree::
:maxdepth: 2
:reversed:
:glob:
20*
Sphinx 1.5以降では:reversed:
、toctreeに追加できる組み込みのフラグがあります。
.. toctree::
:glob:
:reversed:
2011*
詳細については、Sphinxのドキュメントを参照してください。