我想打印一份在我的项目中所有sphinx文档中定义的所有标签的列表,包括我手动定义的标签
.. _mylabel:
以及sphinx自动生成的标签,例如:ref:`genindex`和:ref:`search`。
对于大型项目,我经常忘记我拼写某些标签(我是否称之为#34;示例","示例"或" sect-examples"?)。如果我可以打印出任何文件中定义的所有标签,我可以查看该列表并识别名称,而无需在每次我想引用某些内容时检查单个文件。
答案 0 :(得分:1)
当sphinx运行时,它会在名为environmment.pickle
的文件中保存有关其解析的文档的信息。这包括项目中定义的所有引用的标签,在第一个文件中显式,在运行sphinx时自动设置。
这是按域排序的。以下是我可以在“标准域”(std
)中找到所有标签的方式:
import cPickle
dat = cPickle.load(file('environment.pickle'))
dat.domaindata['std']['labels'].keys()
这对其他sphinx域同样有效。
您将看到始终定义标签modindex
(对于python模块索引),即使未生成模块索引(链接到此将是死的)。
Sphinx只定义了很少的标签(search
,genindex
,modindex
),因此这里所述的方法回答了我原来的问题,但可能只对调试sphinx扩展有用。
答案 1 :(得分:0)
最简单的方法是使用grep
并使用正则表达式进行搜索:
grep '^\.\. _' path/to/docs/* -r