Python sphinx 扩展sphinx.ext.graphviz并增加扩展名

Python sphinx 扩展sphinx.ext.graphviz并增加扩展名,python-sphinx,graphviz,Python Sphinx,Graphviz,我想通过一些特性扩展内置的sphinx文档扩展sphinx.ext.graphviz。由于这些特性对于我的用例非常特殊,我不想扩展sphinx.ext.graphviz本身 本质上我只是想() 使用graphviz解析以获取graphviz节点(~graphviz.run()) 修改节点的graphviz点代码(~node['code']=dotcode) 使用graphviz输出/呈现(html/pdf),无需修改(例如 html:html\u visit\u graphviz()->ren

我想通过一些特性扩展内置的sphinx文档扩展sphinx.ext.graphviz。由于这些特性对于我的用例非常特殊,我不想扩展sphinx.ext.graphviz本身

本质上我只是想()

  • 使用graphviz解析以获取graphviz节点(~graphviz.run())
  • 修改节点的graphviz点代码(~node['code']=dotcode)
  • 使用graphviz输出/呈现(html/pdf),无需修改(例如 html:html\u visit\u graphviz()->render\u dot\u html()
我已经读了这本书,但还没有读完 了解构建阶段/过程以及如何“组合”上述扩展

是否可以在“构建阶段”之间修改内联graphviz代码 1:以某种方式使用额外的
sphinx扩展,“调用”sphinx.ext.graphviz?

sphinx文档贡献者提供的解决方案[:

也许您可以使用以下代码执行此操作:

def on_doctree_read(app, doctree):
    for node in doctree.traverse(graphviz):
        code = re.sub('\];', ', color = red];', node['code'])  # change color of nodes and edges
        node['code'] = code


def setup(app):
    app.connect('doctree-read', on_doctree_read)
在本例中,我使用了doctree读取事件。它是在读取阶段引发的。更详细地说,您可以在