如何解决如何创建自动为引用创建标签的 Sphinx 角色?
在我的文档中,我经常提到 XML 标签。所以我尝试编写一个小的扩展来简化向文档添加和引用标签的过程。文档应如下所示:
My text,referencing to :xmltag-ref:`ExampleTag` here.
The :xmltag:`ExampleTag` Explained in Detail
--------------------------------------------
This section describes the tag...
我写了一个这样的简单扩展:
import re
from docutils import nodes
def xmltag(name,rawtext,text,lineno,inliner,options={},content=[]):
literal_node = nodes.literal(text=text,classes=['xmltag'])
# <--- HERE: How to add target?
result_nodes = [literal_node]
return result_nodes,[]
def xmltag_ref(name,content=[]):
source = f'tag-{text}'
reference_node = nodes.reference(classes=['xmltag-ref'],text=text)
reference_node['refid'] = source
result_nodes = [reference_node]
return result_nodes,[]
def setup(app):
app.add_role("xmltag-ref",xmltag_ref)
app.add_role("xmltag",xmltag)
return {
'version': '1.0','parallel_read_safe': True,'parallel_write_safe': True,}
如果我手动添加引用,一切都会按预期进行,但是如果在标题中定义了标签,我找不到如何自动添加标签的方法。
我喜欢自动引用的工作方式,例如使用 option
指令:
.. option:: --example
text...
这会自动创建一个标签,可以使用 :option:'--example'
引用。我想要类似的东西,但可以灵活地在标题中使用它,这也会在 TOC 中创建一个条目。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。