如何使用Sphinx

时间:2019-07-08 09:31:06

标签: python-sphinx ini

我想在我的Sphinx文档中记录一个INI文件。我应该使用什么标记?

每当我在网上搜索时,都会得到Sphinx配置文件conf.py的描述。

standard domain有一些工具可以记录命令行程序,并且可以使用describeobject)角色,但是正如文档所述,“此指令产生与特定指令相同的格式。由域提供,但不会创建索引条目或交叉引用目标”

我需要一些更具体的内容来描述各节和选项并能够对其进行引用。

因此拥有一个INI文件:

[ui]
username = Mike
e-mail = mike@domain.com

我希望能够使用以下内容:

.. ini:section:: ui

    This section contains setting for use interface 

.. ini:option:: username

    User name
    ...

有没有比编写自己的扩展程序更好的方法了?

每当我在网上搜索时,都会得到Sphinx配置文件conf.py的描述。

standard domain有一些工具可以记录命令行程序,并且可以使用describeobject)角色,但是,正如该文件指出的那样,“此指令产生的格式与域提供的特定对象,但不会创建索引条目或交叉引用目标”。

我需要一些更具体的内容来描述各节和选项并能够对其进行引用。

因此拥有一个INI文件:

[ui]
username = Mike
e-mail = mike@domain.com

我希望能够使用以下内容:

.. ini:section:: ui

    This section contains setting for use interface 

.. ini:option:: username

    User name
    ...

并在

中进行引用

有没有比编写自己的扩展程序更好的方法了?

1 个答案:

答案 0 :(得分:2)

研究Sphinx和扩展的源代码后,这是我想到的最小解决方案。将代码段放入您的conf.py

from sphinx.application import Sphinx
from sphinx.util.docfields import Field


def setup(app: Sphinx):
    app.add_object_type(
        'confval',
        'confval',
        objname='configuration value',
        indextemplate='pair: %s; configuration value',
        doc_field_types=[
            Field('type', label='Type', has_arg=False, names=('type',)),
            Field('default', label='Default', has_arg=False, names=('default',)),
        ]
    )

这将添加一对指令.. confval::和一个角色:confval:,它们模仿.. option:: / :option:.. envvar:: / :envvar:对。

示例

Configuration
-------------

For more verbose output, increase the :confval:`verbose` parameter.
To show the traceback, set :confval:`show_traceback = True <show_traceback>`.

.. confval:: verbose

   :type: integer
   :default: 0

   More verbose output.

.. confval:: show_traceback

   :type: boolean
   :default: ``False``

   Show traceback on errors.


.. confval:: output

   :type: string
   :default: ``-``

   Target path to write the output.

提供为

enter image description here

允许在整个文档中使用漂亮的交叉引用。