微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何创建自动为引用创建标签的 Sphinx 角色?

如何解决如何创建自动为引用创建标签的 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 举报,一经查实,本站将立刻删除。