如何打印sphinx项目中定义的所有标签?

时间:2014-10-31 02:51:47

标签: python python-sphinx

我想打印一份在我的项目中所有sphinx文档中定义的所有标签的列表,包括我手动定义的标签

.. _mylabel:

以及sphinx自动生成的标签,例如:ref:`genindex`和:ref:`search`。

对于大型项目,我经常忘记我拼写某些标签(我是否称之为#34;示例","示例"或" sect-examples"?)。如果我可以打印出任何文件中定义的所有标签,我可以查看该列表并识别名称,而无需在每次我想引用某些内容时检查单个文件。

2 个答案:

答案 0 :(得分:1)

当sphinx运行时,它会在名为environmment.pickle的文件中保存有关其解析的文档的信息。这包括项目中定义的所有引用的标签,在第一个文件中显式,在运行sphinx时自动设置。 这是按域排序的。以下是我可以在“标准域”(std)中找到所有标签的方式:

import cPickle
dat = cPickle.load(file('environment.pickle'))
dat.domaindata['std']['labels'].keys()

这对其他sphinx域同样有效。 您将看到始终定义标签modindex(对于python模块索引),即使未生成模块索引(链接到此将是死的)。

Sphinx只定义了很少的标签(searchgenindexmodindex),因此这里所述的方法回答了我原来的问题,但可能只对调试sphinx扩展有用。

答案 1 :(得分:0)

最简单的方法是使用grep并使用正则表达式进行搜索:

grep '^\.\. _' path/to/docs/* -r