我想使用Sphinx "TODO" Directive example引用嵌入在.rst文件中的todo
实例。例如,如果.rst文件内容包含:
.. todo:: foo
.. todo:: bar
我可以看到以下代码(取自Sphinx TODO示例页面)
class TodoDirective(SphinxDirective):
# this enables content in the directive
has_content = True
def run(self):
targetid = 'todo-%d' % self.env.new_serialno('todo')
targetnode = nodes.target('', '', ids=[targetid])
todo_node = todo('\n'.join(self.content))
todo_node += nodes.title(_('Todo'), _('Todo'))
self.state.nested_parse(self.content, self.content_offset, todo_node)
if not hasattr(self.env, 'todo_all_todos'):
self.env.todo_all_todos = []
self.env.todo_all_todos.append({
'docname': self.env.docname,
'lineno': self.lineno,
'todo': todo_node.deepcopy(),
'target': targetnode,
})
return [targetnode, todo_node]
使用ids
:todo-0
和todo-1
创建目标节点。
通过在.rst文件中嵌入指令成功引用的,如下所示:
.. todolist::
我想做的是引用.rst文件中的todo
项,如下所示:
:ref:`todo-0`
:ref:`todo-1`
这将需要获取TodoDirective
来为每个目标节点生成标签。我一直不知道该怎么做
这个简单的项目发布在这里:https://github.com/natersoz/sphinx_sandbox
我找到了一种执行此操作的方法。它可能只适用于HTML输出:
此参考链接将成功链接到TODO。 所有其他引用尝试均失败。i、 e.这些都失败了:
我遇到了与您相同的问题,并且能够通过查看autosectionlabel扩展来解决这个问题
他们所做的是添加对标签域数据的引用。我让它在自定义指令中工作,如下所示:
键是上面代码的第二行
您还希望将标签添加到
anonlabels
,以便能够通过像这样:
相关问题 更多 >
编程相关推荐