pandocコンテナに色々入れてみた
設計書をMarkdownで書いていたのだけど、提出できる(≒ Word的な)形にする必要があったので、調べていたら、素晴らしい記事にたどり着きました。
あとはPlantUMLに対応すればいい感じになりそうなので、コンテナに突っ込んでみました、という記事です。
元ネタ
いろいろパクリ参考にしました。感謝。
参考記事
- まだまだ Word で消耗してるの? 大学のレポートを Markdown で書こう (Docker 編)
- PandocインストールとPlantUMLフィルター
- Java 11 リリース後のオススメ Docker イメージを考える
参考ソース
リソース
使い方
Markdown → PDFは元ネタを参考にしてください。基本、「--filter /usr/share/plantuml/plantuml.py」オプションをつけるだけです。
PDFの出力例
$ docker run -it --rm -v `pwd`:/workspace ysogabe/alpine-pandoc-ja pandoc input.md -f markdown -o output.pdf -V documentclass=ltjarticle --pdf-engine=lualatex --filter /usr/share/plantuml/plantuml.py
やったこと
元のDockerfileを以下の通りいじりました。
- Dockerのベースイメージを「adoptopenjdk/openjdk12:alpine」に変更
- ビルドが通らなかったので、修正ついでにTeXのバージョンを上げた
- plantuml、pandocfiltersをインストールした
大したことしてないので、詳しくはソースをみてください。
PlantUMLの記載方法
pandocfiltersの「examples/plantuml-sample.md」を参考にしてください。
PlantUMLの書き方はいろいろありますが、
```plantuml → OK
```plantuml → NG
@startuml
@import "./uml/01.usecase.puml" → NG
```puml → NG
@startuml
です。(大量に文書があればfilterを修正するけど、grepでできる範囲だったので、文書で対応しました)
使ってみて
- やっぱり、ドキュメントの差分管理は便利
- typora使うと、図表もコピペでOK(PlantUMLのプレビューができれば完璧なのになぁ)
- 何気にWord出力が便利
これから
- CI:誤字、脱字、表記の揺れとかの自動チェック
- CD:最終生成物をどこで管理する?
謝辞
元ネタのおかげで、仕事がはかどりました。
修正
相互参照に対応できてなかったので、Dockerイメージを修正しました。PDFは相互参照できます。すばらしい。Wordでも相互参照したいなぁ。。。