{% raw %} pukiwikiにGraphvizプラグインというのがある。
graphvizはdot言語(?)で記述した構造を画像化するソフトだ。これをwikiのプラグインから使うというもの。 wikiで編集したdot言語が図に置き換わる。

ここのブログの以下のエントリで使っている図はgraphvizで描いたものだ。

導入

  • graphvizとlibrsvg2をインストールする。FC3、FC5の場合yumなりでインストールできちゃうはず。
    librsvg2はSVG出力しないか、pngでアンチエイリアスを使わない場合不要っぽいが、うちの環境では何かの依存関係ですでにインストールされていた。
  • GraphvizPluginをダウンロードする。
    今回使用したのは0.9
  • ダウンロードしたアーカイブをどこか適当な場所に展開する。
  • 展開先/graphvizplugin/0.9/ というディレクトリがあるはずなのでcdし「python setup.py bdist_egg」
    展開先/graphvizplugin/0.9/dist/graphviz-0.6.9-py2.3.egg というファイルが出来たはずなので、tracプロジェクトのplugins/ディレクトリにコピーする。 細かいことはREADMEに書いてある。
  • Graphviz Pluginはdotから生成した画像を保存する場所(=IMGのSRCのリンク先)が必要なのでこれを用意する。
    tracdもしくはwebサーバから書き込み可能にしなければならない。環境に応じて適宜。
    うちの環境では以下のディレクトリを使うことにした。
    tracプロジェクト/htdocs/graphviz/
  • trac.iniに[graphviz]セクションを追加する。
    うちの環境では以下の通り。他にもいろいろ設定できるが環境によって必須なのはgraphvizなどのコマンドのpath。
    [graphviz]
    cache_dir = tracプロジェクト/htdocs/graphviz
    png_antialias = 1
  • ここの環境ではtracdを使っているので再起動した。
Graphvizプラグインを導入し、tracのwikiに以下のように記述すると、
{{{
#!graphviz
digraph G {
    graph [rankdir="LR" size="6,4"]
    t1 [ label="明日は" ]
    t2 [ label="明日の" ]
    t3 [ label="風が" ]
    t4 [ label="吹く" ]
    t5 [ label="吹けば" ]
    t6 [ label="桶屋が" ]
    t7 [ label="儲かる" ]
    t1 -> t2 -> t3 -> t4
    t3 -> t5 -> t6 -> t7
    a->b->c
}
}}}

という画像が生成される。日本語も問題ない。

dot言語については本家Graphviz チュートリアルがわかりやすい。 {% endraw %}