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

ham*_*ogu 1 python python-sphinx

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

.. _mylabel:
Run Code Online (Sandbox Code Playgroud)

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

对于大型项目,我经常忘记我如何拼写某些标签(我称它为“示例”、“示例”还是“宗派示例”?)。如果我可以打印出任何文件中定义的所有标签,我可以查看该列表并识别名称,而无需每次我想引用某些文件时都检查单个文件。

ham*_*ogu 6

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

import cPickle
dat = cPickle.load(file('environment.pickle'))
dat.domaindata['std']['labels'].keys()
Run Code Online (Sandbox Code Playgroud)

这同样适用于其他 sphinx 域。您将看到标签modindex(用于 python 模块索引)始终被定义,即使模块索引未生成(指向此的链接将失效)。

Sphinx 仅定义了很少的标签 ( search, genindex, modindex),因此此处所述的方法回答了我最初的问题,但可能仅对调试 sphinx 扩展有用。