我正在开发一个sphinx扩展,其中包含一个这样的自定义索引:
from sphinx.domains import Index
class MyIndex(Index):
"""
Index subclass to provide the Python module index.
"""
name = 'funcindex'
localname = 'Function Index'
shortname = 'functions'
def generate(self, docnames=None):
collapse = False
content = []
for o in self.domain.data['objects']:
dirtype, name = o
docname, anchor = self.domain.data['objects'][o]
entries = [name, 0, docname, anchor, '','','']
letter = name[0]
content.append((letter, [entries]))
return (content, collapse)
def setup(app):
app.add_index_to_domain('std', MyIndex)
如何引用此索引? 由于sphinx默认生成的indeces列表如下所示:
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`
如何将自己的MyIndex
添加到此列表中?
Sphinx 确实生成文件std-funcindex.html
,看起来不错。我缺少的是一种引用此文件的方法。我尝试了下面的所有组合,但它们不起作用:
:ref:`funcindex`
:ref:`std-funcindex`
:ref:`std_funcindex`
答案 0 :(得分:2)
不幸的是,在当前版本的Sphinx(1.2.3)中,使用add_index_to_domain
时没有添加任何标签。以下代码将手动执行此操作(继续问题中的示例):
def setup(app):
app.add_index_to_domain('std', MyIndex)
StandardDomain.initial_data['labels']['funcindex'] = ('std-funcindex', '', 'Function Index')
StandardDomain.initial_data['anonlabels']['funcindex'] = ('std-funcindex', '')
启用
:ref:`funcindex`
作为自定义索引的参考。