扩展sphinx.ext.graphviz并附加扩展名

时间:2016-01-08 15:48:26

标签: python-sphinx graphviz

我想扩展内置的sphinx-doc扩展名sphinx.ext.graphviz,但有一些功能。由于这些功能对我的用例非常特殊,我不想扩展sphinx.ext.graphviz本身。

基本上我只想(graphviz sources for reference

  • 使用graphviz解析以获取graphviz节点(~Traphviz.run()),
  • 修改节点的graphviz点代码(~node ['code'] = dotcode),
  • 输出/渲染(html / pdf)与graphviz无需修改(例如 html:html_visit_graphviz() - > render_dot_html())。

我已阅读sphinx-doc extension developer guide但未完全阅读 了解构建阶段/过程以及如何“组合”扩展,如上所述。

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

1 个答案:

答案 0 :(得分:0)

sphinx-doc贡献者提供的解决方案[https://github.com/sphinx-doc/sphinx/issues/2246]

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

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-read事件。它是在阅读阶段提出的。更详细地说,您可以在http://www.sphinx-doc.org/en/stable/extdev/appapi.html#sphinx-core-events

看到什么是“狮身人面像核心事件”