6.10 Pandoc の LaTeX テンプレートをカスタマイズする (*)
Pandoc はテンプレート を通じて Markdown を LaTeX に変換します. テンプレートは Pandoc 変数を含む LaTeX ファイルであり, Pandoc はこれらの変数を値に置き換えます. 以下は $body$
という変数を1つだけ含んだ単純なテンプレートです.
\documentclass{article}
\begin{document}
$body$
\end{document}
$body$
の値は Markdown ドキュメントの本文から生成された LaTeX コードです. 例えば Markdown で本文が Hello **world**!
ならば, $body$
の値は Hello \textbf{world}!
となります.
6.1, 6.2, 6.4節で紹介した LaTeX のカスタマイズ方法だけでは不十分なら, 代わりにカスタムテンプレートを使ってみてください. テンプレートはその内部に任意の LaTeX コードを使うことが可能なので, はるかに柔軟です. テンプレートを使うには, pdf_document
の template
オプション にテンプレートのパスを含めます.
output:
pdf_document:
template: my-template.tex
Pandocのデフォルトの LaTeX テンプレートは https://github.com/jgm/pandoc/tree/master/data/templates で見ることができます (ファイル名は default.latex
). 自分でテンプレートを作成したい場合, このテンプレートから作りたいと思うことでしょう.
Pandoc 変数 ($body$
や $title$
など) の完全なリストとその意味は Pandoc マニュアルの https://pandoc.org/MANUAL.html#templates で見ることができます. 任意のカスタム変数を使うこともでき, それは典型的には YAML メタデータからテンプレートへと与えられます. もし具体例で学びたいなら, MonashEBSTemplates パッケージ (https://github.com/robjhyndman/MonashEBSTemplates) を確認することもできます. これはいくつかのカスタム LaTeX テンプレートを提供しています. これらのテンプレートは inst/rmarkdown/templates/*/resources/
ディレクトリ (*
はテンプレート名を指します) 以下にあります. 例えば出力フォーマット MonashEBSTemplates::memo
用のテンプレートは YAML メタデータの変数 branding
を使って, モナシュ大学のブランドロゴを含むかどうかを制御できます. 以下のようにテンプレート内で if
文を使うことで実現しています.
$if(branding)$%
\includegraphics[height=1.5cm]{monash2}
\vspace*{-0.6cm}
$else$
\vspace*{-1cm}
$endif$