Sphinx&Graphvizで日本語を含むグラフを出力する方法

※ 環境は以前(id:re_guzy:20101012)と同じ

基本的にはドキュメントを見ればOKだが、日本語を記述すると文字化けするので、その回避策をメモしておく。

まずはconf.pyでgraphviz拡張を有効にする。

# conf.pyを修正
extensions = ['sphinx.ext.autodoc','rst2pdf.pdfbuilder', 'sphinx.ext.graphviz']

この時点でも以下のようにすれば、日本語を使うことができる。

.. digraph:: testname

 node[fontname=ipag]
 "bar" -> "baz" -> "日本語"

ただ、毎回フォントを指定するのも面倒なので、以下のようにconf.pyに追記してしまう。

# conf.pyに追記, IPAゴシックを使う場合
graphviz_dot_args = [
    '-Gfontname=ipag',
    '-Nfontname=ipag',
    '-Efontname=ipag',
]

そうすると、以下のように記述しても日本語が文字化けしません。

.. digraph:: testname

 graph[rankdir=LR]
 "bar" -> "baz" -> "日本語"

出力した図はこんな感じ。


※ フォントが見つからない場合、環境変数DOTFONTPATHを指定する必要があるかも

SET DOTFONTPATH=%WINDIR%\Fonts;YOUR_FONT_DIR;