使用附加扩展名扩展 sphinx.ext.graphviz

Extending sphinx.ext.graphviz with additional extension

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

基本上我只是想 (graphviz sources for reference)

我已阅读 sphinx-doc extension developer guide 但未完全阅读 了解构建 phases/procedure 以及如何 "combine" 如上所述的扩展。

是否可以修改“构建阶段”之间的内联 graphviz 代码 1: Reading" 和 "Build Phase 3: Resolving" 以某种方式使用额外的 "invokes" sphinx.ext.graphviz?

的 sphinx 扩展

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

看到什么是"Sphinx core events"