directive

hello

class HelloWorld(Directive):
    def run(self):
        paragraph_node = nodes.paragraph(text='Hello World!')
        return [paragraph_node]

.. helloworld::

Hello World!

  • Directive では独自ノードを作り

  • visitor 関数で独自ノードを画像に変換する

しかし、キャプションをうまく扱うためには次のようなやり方をするとよいでしょう。

  • Directive では figure ノード、caption ノードと画像を表す独自ノードを作る

  • visitor 関数で独自ノードを画像に変換する

sphinx.ext.graphviz

sphinx/ext/graphviz.py

# setup.py

class graphviz(nodes.General, nodes.Inline, nodes.Element):
    pass

def setup(app: Sphinx) -> Dict[str, Any]:
    app.add_node(graphviz,
                 html=(html_visit_graphviz, None), # 👈 graphviz node から html を出力する
                 latex=(latex_visit_graphviz, None),
                 texinfo=(texinfo_visit_graphviz, None),
                 text=(text_visit_graphviz, None),
                 man=(man_visit_graphviz, None))
    app.add_directive('graphviz', Graphviz) # 👈 graphviz node を作る
    app.add_directive('graph', GraphvizSimple)
    app.add_directive('digraph', GraphvizSimple)
    app.add_config_value('graphviz_dot', 'dot', 'html')
    app.add_config_value('graphviz_dot_args', [], 'html')
    app.add_config_value('graphviz_output_format', 'png', 'html')
    app.add_css_file('graphviz.css')
    app.connect('build-finished', on_build_finished) # 👈 copy css
    return {'version': sphinx.__display_version__, 'parallel_read_safe': True}

folium

graphviz を参考に作ってみる。

https://python-visualization.github.io/folium/quickstart.html#Getting-Started

.. folium
    :location: 45.5236, -122.6750
    :caption: 45.5236, -122.6750

45.5236, -122.6750