我正在尝试使用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_dataset
中configuration.html
定义的链接(而不是authorization.html
中包含的副本。)
简单地忽略或消除这些重复标签警告是否安全,并期望所有交叉引用链接到configuration.html
?或者我应该找到另一种方法吗?
答案 0 :(得分:5)
有两种方法可以解决此问题:切换到其他扩展程序(* .inc),或将任何包含文件添加到exclude_patterns
中的conf.py
。
答案 1 :(得分:0)
安全忽略?它仍然是一个警告,但原始内容似乎阻止了所包含的标签,所以如果你不时检查它不应该太危险。
您是否尝试将内容放入文件中,而不是没有标签的索引,在任何需要的地方包含此文件,并使用标签创建索引文件并包含未标记的内容?最后一个文件应该由引用指向。
Ps:我没有测试过,因为标签可能会被包含而不是标准内容所克服。