Sphinx的.. include :: directive和“重复标签”警告

时间:2013-04-28 11:00:08

标签: python python-sphinx

我正在尝试使用Sphinx.. include:: directive将一个文件中的文档包含在另一个文件中,以避免重复文档的源文本。我所包含的部分位于configuration.rst(它是配置设置的参考文档的一部分),它包含一些用于交叉引用每个配置设置的标签:

.. start_config-authorization

.. _ckan.auth.anon_create_dataset:

ckan.auth.anon_create_dataset
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Example::

 ckan.auth.anon_create_dataset = False

Default value: ``False``

Allow users to create datasets without registering and logging in.


.. _ckan.auth.create_unowned_dataset:

ckan.auth.create_unowned_dataset
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

...

.. end_config-authorization

在另一个文件(authorization.rst)中,我只包含configuration.rst内联的授权配置设置,如下所示:

.. include:: /configuration.rst
    :start-after: start_config-authorization
    :end-before: end_config-authorization

问题是所包含文本中的标签会从Sphinx产生此警告:

doc/configuration.rst:224: WARNING: duplicate label ckan.auth.anon_create_dataset, other instance in doc/authorization.rst

到目前为止,如果我提出的话,交叉引用似乎没有被打破:

:ref:`ckan.auth.anon_create_dataset`

在第三个文件中,这正确地生成ckan.auth.anon_create_datasetconfiguration.html定义的链接(而不是authorization.html中包含的副本。)

简单地忽略或消除这些重复标签警告是否安全,并期望所有交叉引用链接到configuration.html?或者我应该找到另一种方法吗?

2 个答案:

答案 0 :(得分:5)

有两种方法可以解决此问题:切换到其他扩展程序(* .inc),或将任何包含文件添加到exclude_patterns中的conf.py

答案 1 :(得分:0)

安全忽略?它仍然是一个警告,但原始内容似乎阻止了所包含的标签,所以如果你不时检查它不应该太危险。

您是否尝试将内容放入文件中,而不是没有标签的索引,在任何需要的地方包含此文件,并使用标签创建索引文件并包含未标记的内容?最后一个文件应该由引用指向。

Ps:我没有测试过,因为标签可能会被包含而不是标准内容所克服。