12

toctreeをファイル名の降順で並べ替えるオプションを知っている人はいますか?昇順の場合、次の:glob:ようなオプションを使用できます。

.. toctree:
   :glob:

   2011*

これは、Sphinxドキュメント内で報告する必要がある再構成されたテキストで書かれた毎日のメモに便利です。

4

3 に答える 3

13

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の詳細:

于 2011-12-10T17:38:04.993 に答える
12

これにより、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*
于 2012-04-07T20:34:04.057 に答える
3

Sphinx 1.5以降では:reversed:、toctreeに追加できる組み込みのフラグがあります。

.. toctree::
   :glob:
   :reversed:

   2011*

詳細については、Sphinxのドキュメントを参照してください。

于 2018-01-30T18:10:07.730 に答える