読者です 読者をやめる 読者になる 読者になる

日本語対応のditaaをpandocで使用する

PlantUMLなどでditaaを使用してみたが、ditaaは便利そうなのに日本語が非対応で残念。 しかし、日本語に対応したditaaも存在する。

これをpandocのフィルタと組み合わせて、pandocのマークダウンから直接、日本語ditaaを使用してみる。

作業ディレクト

jarファイルなどパスが通っているところに置かれていれば、どこでも良いと思うが、今回は~/binにパスを通して使用する。

jditaa.jarの入手

$ cd ~/bin
$ wget https://github.com/luozengbin/dot.emacs.d/raw/master/extra/org-ditaa/jditaa.jar

pandoc filter(codeblock-diagrams.pl)の入手

$ cd ~/bin
$ wget https://gist.githubusercontent.com/bpj/5454765371a4e3c1a8354fedced1cc6b/raw/0802b99341be3ca5abb3e1d49b1e6f5f79d367f3/codeblock-diagrams.pl
$ chmod +x ./codeblock-diagrams.pl

フィルタをjditaaに対応するために修正する。

--- codeblock-diagrams.pl~   2016-10-31 11:20:08.963133308 +0900
+++ codeblock-diagrams.pl 2016-10-31 11:21:13.333003211 +0900
@@ -93,7 +93,7 @@ my %ditaa;
 {
     my $loc = dirname(abs_path($0));
     my $home = abs_path($ENV{HOME});
-    my %jar = (png => "ditaa0_6b.jar", pdf => "DitaaEps.jar");
+    my %jar = (png => "jditaa.jar");
     JAR:
     while ( my($fmt, $name) = each %jar ) {
         PATH:

Pandoc::Elemntsの入手

$ cpan install Pandoc::Elements

実行コマンド

次のように使用する。

$ pandoc -F codeblock-diagrams.pl [-M dia_format=pdf|png] [PANDOC-OPTIONS] [FILE-NAME ...]

実行例

サンプル

```{.ditaa .no-separation scale=1.2 .fig_}

    +----------+      +--------+     +--------+  +-----+  +-----+  +-----+
    |          |      |        |     |        |  |     |  |     |  |     |
    | markdown |----->| pandoc |---->| output |  | img |  | img |  | img |
    | {d}      |      |        |     | {d}    |  | {d} |  | {d} |  | {d} |
    |          |      +--------+     |        |  |     |  |     |  |     |
    +----------+         |  ^        +--------+  +-----+  +-----+  +-----+
                         v  |                       ^        ^        ^ 
                      +--------+   +--------+       |        |        |     
                      |        |-->| ditaa  |-------+        |        |
                      | filter |   +--------+                |        |
                      |        |-->| dot    |----------------+        |
                      |        |   +--------+                         |
                      |        |-->| rdfdot |-------------------------+
                      +--------+   +--------+
```

次のようになる。

f:id:mickey_happygolucky:20161101033910p:plain

日本語

```{.ditaa .no-separation scale=1.0 .fig_}

    +----------+      +--------+     +--------+  +-----+  +-----+  +-----+
    |          |      |        |     |        |  |     |  |     |  |     |
    | マーク   |      |        |     |        |  |     |  |     |  |     |
    | ダウン   |----->| pandoc |---->| output |  | img |  | img |  | img |
    | {d}      |      |        |     | {d}    |  | {d} |  | {d} |  | {d} |
    |          |      |        |     |        |  |     |  |     |  |     |
    +----------+      +--------+     +--------+  +-----+  +-----+  +-----+
                         |  ^                       ^        ^        ^ 
                         v  |                       |        |        |
                      +--------+   +--------+       |        |        |     
                      |        |-->| ditaa  |-------+        |        |
                      | filter |   +--------+                |        |
                      |        |-->| dot    |----------------+        |
                      |        |   +--------+                         |
                      |        |-->| rdfdot |-------------------------+
                      +--------+   +--------+
```

次のようになる。

f:id:mickey_happygolucky:20161101033916p:plain

ditaaで絵を書くときはRictyなどの等幅フォントがよい。