9

私はSphinxを使用して、多くの参照を含むドキュメントを作成しています。

.. _human-factor:

The Human Factor
================

...

(see :ref:`human-factor` for details)

コンパイルされたドキュメントには、次のようなものが含まれています。

(詳細については、ヒューマンファクターを参照してください)

代わりに、次のようにフォーマットしてもらいたいと思います。

(詳細については、 5.1ヒューマンファクターを参照してください)

ソリューションをグーグルで検索してみたところ、latex hyperrefパッケージでこれを実行できることがわかりましたが、これをSphinxビルドに追加する方法がわかりません。

4

1 に答える 1

2

基本的にここからnumsec.pyを使用して解決しました:https ://github.com/jterrace/sphinxtr

セクション番号+タイトルを取得するには、doctree_resolved関数をこの関数に置き換える必要がありました(例:「5.1ヒューマンファクター」)。

def doctree_resolved(app, doctree, docname):
    secnums = app.builder.env.toc_secnumbers
    for node in doctree.traverse(nodes.reference):
        if 'refdocname' in node:
            refdocname = node['refdocname']
            if refdocname in secnums:
                secnum = secnums[refdocname]
                emphnode = node.children[0]
                textnode = emphnode.children[0]

                toclist = app.builder.env.tocs[refdocname]
                anchorname = None
                for refnode in toclist.traverse(nodes.reference):
                    if refnode.astext() == textnode.astext():
                        anchorname = refnode['anchorname']
                if anchorname is None:
                    continue
                linktext = '.'.join(map(str, secnum[anchorname]))
                node.replace(emphnode, nodes.Text(linktext
                    + ' ' + textnode))

これを機能させるには、conf.pyにnumsec拡張子を含め、次のようにtoctreeに:numbered:を追加する必要があります。

.. toctree::
   :maxdepth: 1
   :numbered:
于 2012-12-18T21:57:49.777 に答える