使用附加扩展名扩展 sphinx.ext.graphviz
Extending sphinx.ext.graphviz with additional extension
我想用一些功能扩展内置的 sphinx-doc 扩展 sphinx.ext.graphviz。由于这些功能对于我的用例来说非常特殊,我不想扩展 sphinx.ext.graphviz 本身。
基本上我只是想 (graphviz sources for reference)
- 用 graphviz 解析以获得 graphviz 节点 (~ Graphviz.run()),
- 修改节点的graphviz dotcode (~ node['code'] = dotcode),
- output/render (html/pdf) with graphviz without modification (~ e.g. for
html: html_visit_graphviz() -> render_dot_html()).
我已阅读 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"
我想用一些功能扩展内置的 sphinx-doc 扩展 sphinx.ext.graphviz。由于这些功能对于我的用例来说非常特殊,我不想扩展 sphinx.ext.graphviz 本身。
基本上我只是想 (graphviz sources for reference)
- 用 graphviz 解析以获得 graphviz 节点 (~ Graphviz.run()),
- 修改节点的graphviz dotcode (~ node['code'] = dotcode),
- output/render (html/pdf) with graphviz without modification (~ e.g. for html: html_visit_graphviz() -> render_dot_html()).
我已阅读 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"