LoginSignup
5
3

More than 5 years have passed since last update.

MacでRe:VIEW文書にブロック図を埋め込む(blockdiag)

Last updated at Posted at 2016-03-03

Re:Viewは文書中に各種外部ツールを使ってグラフを埋め込む事ができますが、その一つとしてblockdiagをサポートしています。

スクリーンショット 2016-03-03 14.58.02.png

埋め込み画像を事前に生成し、リンクを埋め込む方法でも良いですが、文書作成時に埋め込む方が何かと便利なため以下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などで文書を生成すると、該当箇所に以下のようなブロック図が追加されているはずです。

スクリーンショット 2016-03-03 15.03.42.png

日本語フォントの埋め込み

日本語はデフォルトのままだと文字化けします。
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).
     "春は 曙" -> "夏 = 夜" -> "秋.夕暮れ" -> "冬 & つとめて";
  }
}

完成

スクリーンショット 2016-03-03 14.44.16.png

感想

Re:Viewはこれ以外にも、「graphviz」「gnuplot」「aafigure」をサポートしています。

同様にblockdiagになっているところを書き換えるだけで、簡単にグラフ図を文書に埋め込みできるので非常に便利です。

UMLを埋め込みたいのでPlantUMLを使って…と思ってreviewのbuilder.rbを弄ってましたので、余裕ができたらぷるり送ってみよう…

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3