Pelican でplantUML(pandoc)
table contensせっかくうまくいったmarkdown + pandoc だけど、markdown っぽく記述したい。
例えばこんな感じ。
ということで、pandoc 対応。
```uml
@startuml
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response
Alice -> Bob: Another authentication Request
Alice <-- Bob: another authentication Response
@enduml
```
1 setup
plantuml は、前回の通り。
1.1 package
pandoc のバイナリは、直接もってくる。
$ curl https://github.com/jgm/pandoc/releases/download/2.0.1/pandoc-2.0.1-linux.tar.gz -o pandoc-2.0.1-linux.tar.gz
$ tar xvfz pandoc-2.0.1-linux.tar.gz
もってきたpandocのbinaryを /usr/local/bin にコピーしておく。
$ cp pandoc-2.0.1/bin/pandoc /usr/local/bin
1.2 pip install
plantuml 用のfilterに利用するので、 pandocfilters をinstallしておく。
$ pip install pandocfilters
1.3 filter script の準備
こんなscriptを準備した。
いろいろためしたけど、生成したpngファイルをどこに置くかが問題。
もういいやと、 --self-contained option で、埋め込みにしてしまった。
html source をみると、画像情報が埋め込まれている。
<p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUg...">
plantumlだけでなく、普通のimagefileを以下のように記述しても、埋め込みになってしまうけどいいや。

1.4 pelicanconf.py の設定
前回の plantuml は、もういらない。その代わり pandoc_reader を利用する。
注意すべきは、これで markdown化のlogic が pandoc に依存することになること。
PANDOC_ARGS は好みによると思う。scss を書き直しかも。
PLUGINS = [..., 'pandoc_reader']
PANDOC_ARGS = [
'--mathjax',
'--standalone',
'--quiet',
'--toc',
'--toc-depth=2',
'--number-sections',
'--self-contained',
'--filter=/site/plantuml-filter.py',
]
PANDOC_EXTENSIONS = [
'+hard_line_breaks',
'-citations'
]
2 plantUMLの出力結果
こんな感じで展開される。