LoginSignup
1
3

More than 5 years have passed since last update.

Pandoc MarkdownでYAMLヘッダにテンプレートを指定したい話

Last updated at Posted at 2018-05-06

何のためにPandocを使っているか

レポートを書くために使っている.(Markdown->LaTeX->PDF)
レポートによってテンプレートが違うが,切り替えるのが引数だし,いつも引数を指定するとか面倒くさい.
Makefile作るのもなんか違うし,どうせならYAMLヘッダにそういうの書きたいよね?みたいな話.

Pandoc Markdown のテンプレートの話

引数で指定できたり,テンプレートディレクトリがあるのは知っているが,そういうことではない.
独自のhashを指定して,Markdownを読み込ませた時に上のヘッダをパースして,引数を構築して渡してあげるだけのシェルスクリプトを書いただけの話である.

シェルスクリプトでYAMLパース

bash-yamlという便利なシェルスクリプトがあったので利用した.

どんな感じのツールになったか?

atpons/pdmkで公開している.

homebrewで入れたい場合は,以下のようにしてインストールする.

使い方

$ brew tap atpons/pdmk
$ brew install pdmk

文書として以下のようなファイルがあるとする.

file.md
---
_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

これぞ車輪の再発明,でした・・・

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3