何のためにPandocを使っているか
レポートを書くために使っている.(Markdown->LaTeX->PDF)
レポートによってテンプレートが違うが,切り替えるのが引数だし,いつも引数を指定するとか面倒くさい.
Makefile作るのもなんか違うし,どうせならYAMLヘッダにそういうの書きたいよね?みたいな話.
Pandoc Markdown のテンプレートの話
引数で指定できたり,テンプレートディレクトリがあるのは知っているが,そういうことではない.
独自のhashを指定して,Markdownを読み込ませた時に上のヘッダをパースして,引数を構築して渡してあげるだけのシェルスクリプトを書いただけの話である.
シェルスクリプトでYAMLパース
bash-yamlという便利なシェルスクリプトがあったので利用した.
どんな感じのツールになったか?
atpons/pdmkで公開している.
homebrewで入れたい場合は,以下のようにしてインストールする.
使い方
$ brew tap atpons/pdmk
$ brew install pdmk
文書として以下のようなファイルがあるとする.
---
_pdmk_template: template.tex # 喰わせたいテンプレートファイルの名前.保存場所は以下に示す
_pdmk_output: pdf # 出力ファイル拡張子
_pdmk_arg: "--latex-engine=lualatex --toc" #その他のオプション
title: hogehoge # 以下はテンプレート準拠のヘッダでOK
---
ここに文章
pdmkに喰わせるときは以下のように入力する.
$ pdmk file.md
すると,file.pdf
が同じ場所に落ちてくる.
_pdmk_template
に入力されたファイルがドキュメントルートと同じ場所にあった場合はそのファイルをテンプレートとしてPandocに渡す.
もし存在しない場合は ~/.pdmk/template
内にある同名ファイルをテンプレートとして渡す.
このようにすることで,テンプレートファイルの管理がしやすくなると考えた.
共通テンプレートディレクトリを使う
~/.pdmk
└── template
└── template.tex
テンプレートとドキュメントと一緒に管理したい時
(あまり使わない,というか標準でもこれなら出来ないこともないはず)
mydocument
├── document.md
└── template.tex
どう使っていくか
テンプレートディレクトリにはテンプレートをガンガン保存していき,ドキュメントの作成時に3つのhashを書く.
あとはコマンドを打つだけで,ストレスフリーなレポート書き環境を実現できる.
完全に自分向けであるが,やりたいことが出来たのでよしとする.
あとがき
https://github.com/jgm/pandoc/issues/4627
https://github.com/msprev/panzer
https://github.com/htdebeer/pandocomatic
これぞ車輪の再発明,でした・・・