Re:Viewは文書中に各種外部ツールを使ってグラフを埋め込む事ができますが、その一つとしてblockdiagをサポートしています。
埋め込み画像を事前に生成し、リンクを埋め込む方法でも良いですが、文書作成時に埋め込む方が何かと便利なため以下Re:View文書に組み込むための覚書です。
参考サイト
ブロック図生成ツール blockdiag — blockdiag 1.0 ドキュメント
ブロック図生成ツール blockdiagを導入してみました - Qiita
必須パッケージ
Re:Viewでblockdiag画像を生成するには、事前にblockdiag自体をインストールしておく必要があります(内部でblockdiagを直接コマンドで読んで画像(orPDF)を生成し、それを組み込むような動作をしています)。
blockdiagはpythonのpip
もしくはeasy_install
を使ってすぐにインストールします。
pip install blockdiag
# blockdiagでpdfを出力するために必要
※ WindowsやLinux等の導入手順は、公式を参照して下さい
blockdiag の概要 — blockdiag 1.0 ドキュメント
ERROR: unknown format: PDF
Re:Viewの出力フォーマットがPDFの場合、このままではエラーメッセージが出力されます。PDF出力をする場合はreportlabも合わせてインストールする必要があります。
pip install reportlab
Re:View文書の書き方
文書中にgraphブロック形式で以下のように記述するだけです。
//graph[graph_name][blockdiag]{
diagram {
blockdiag {
A -> B -> C -> D;
A -> E -> F -> G;
}
}
}
後はreview_pdfmaker
などで文書を生成すると、該当箇所に以下のようなブロック図が追加されているはずです。
日本語フォントの埋め込み
日本語はデフォルトのままだと文字化けします。
blockdiagは任意のフォントを埋め込む機能を持っているため、$HOME/.blockdiagrc
を以下を参考に作成して下さい。
# フォントの場所は任意です
$ cat $HOME/.blockdiagrc
[blockdiag]
fontpath = /Users/user/Library/fonts/Ricty-Regular.ttf
そして日本語を記述したブロック図を文書に記述して生成してみます
//graph[graph_name][blockdiag]{
diagram {
// Set M17N text using label property.
A [label = "起"];
B [label = "承"];
C [label = "転"];
D [label = "結"];
A -> B -> C -> D;
// Use M17N text directly (need to quote).
春 -> 夏 -> 秋 -> 冬;
// Use M17N text including symbol characters (need to quote).
"春は 曙" -> "夏 = 夜" -> "秋.夕暮れ" -> "冬 & つとめて";
}
}
完成
感想
Re:Viewはこれ以外にも、「graphviz」「gnuplot」「aafigure」をサポートしています。
同様にblockdiagになっているところを書き換えるだけで、簡単にグラフ図を文書に埋め込みできるので非常に便利です。
UMLを埋め込みたいのでPlantUMLを使って…と思ってreviewのbuilder.rbを弄ってましたので、余裕ができたらぷるり送ってみよう…