2013-04-28 69 views
7

我试图用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 

的问题是,所包含的文本中的标签生产从狮身人面像这样的警告:

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

到目前为止交叉引用似乎并没有被打破,如果我把:

:ref:`ckan.auth.anon_create_dataset` 

在第三个文件,这会产生正确的configuration.html(而不是包含副本的链接到的ckan.auth.anon_create_dataset定义它在authorization.html)。

简单地忽略或沉默这些重复标签警告是否安全?并且期望所有交叉引用链接到configuration.html?或者我应该找到另一种方式来做到这一点?

回答

0

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

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

Ps:我还没有测试过,所以标签可能会被其后面是包含而非标准内容的事实超越。

+0

不是。我认为如果检测到重复,它将被忽略。要么引用没有链接,要么目标不会被创建,或者两者都不会。 – erikbwork 2013-09-26 09:34:10

3

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