📄

PandocでPlantUMLをMarkdownに埋め込む

2023/02/13に公開

PandocでPlantUMLをMarkdownに埋め込む

Pandocにはlua-filtersがあり、これらを使うとPandocの機能を拡張できる。

その中のdiagram-generatorはMarkdownにPlantUMLやGraphvizが埋め込めてたいへん便利。

diagram-generatorの利用方法

公式のドキュメントに実行例が載っている。

https://github.com/pandoc/lua-filters/tree/master/diagram-generator#how-to-run-pandoc

が、公式にはWindowsでの利用方法しか記載がないので、mac用にコマンドを叩くとこんな感じになった。

$ pandoc README.md -f markdown -t html --embed-resources --standalone --lua-filter=filters/diagram-generator.lua --metadata=plantumlPath:/opt/homebrew/Cellar/plantuml/1.2023.1/libexec/plantuml.jar --metadata=javaPath:/usr/bin/java -o README.html

--lua-filter--metadata=plantumlPathmetadata=javaPath にそれぞれのパスを指定してやればいい。

また、公式では--self-containedオプションを使っていたが、実行すると以下のようなWARNINGが出たので、--embed-resourcesにしている。

[WARNING] Deprecated: --self-contained. use --embed-resources --standalone

Emacsのmarkdown-modeから使う

Emacsのmarkdown-modeでは、markdown-commandにMarkdownをhtmlへ変換するコマンドを指定することができる。lua-filterを使うpandocを指定してやればEmacsからでも実行できる。

(setq markdown-command (concat "pandoc " "--embed-resources " "--standalone " "--lua-filter="filters/diagram-generator/diagram-generator.lua " "--metadata=plantumlPath:/opt/homebrew/Cellar/plantuml/1.2023.1/libexec/plantuml.jar "  "--metadata=javaPath:/usr/bin/java"))

Image from Gyazo

GitHubで編集を提案

Discussion