7.9 カスタム HTML テンプレートを使う (*)

既に6.10節で LaTeX テンプレートについて話しました. カスタム HTML テンプレート を指定すると, Pandoc が Markdown を HTML へと変換できます. 以下は簡単なテンプレートの例です.

<html>
  <head>
    <title>$title$</title>
    $for(css)$
    <link rel="stylesheet" href="$css$" type="text/css" />
    $endfor$
  </head>
  <body>
  $body$
  </body>
</html>

テンプレートに $title$, $body$ といったいくつかの変数が含まれているのがわかるでしょう. Pandoc 変数の完全なリストとそれぞれの意味については https://pandoc.org/MANUAL.html#templates で検索できます.

テンプレートによってあなたは HTML 出力をカスタマイズする究極の力を得ることになります. 例えば好きな CSS スタイルシートや JavaScript コード, あるいはライブラリを <head> 内で読み込ませたりできます. あるいは次のように, 文書が下書きか最終稿かを示すブーリアン変数 draft も使えます.

<head>
<style type="text/css">
.logo {
  float: right;
}
</style>
</head>

<body>
<div class="logo">
$if(draft)$
<!-- use draft.png to show that this is a draft -->
<img src="images/draft.png" alt="Draft mode" />
$else$
<!-- insert the formal logo if this is final -->
<img src="images/logo.png" alt="Final version" />
$endif$
</div>

$body$
</body>

すると Rmd 文書の YAML メタデータ内で draft 変数に true または false を設定できます. 例えばこのように.

---
title: "An Important Report"
draft: true
---

テンプレートを Rmd 文書に適用するためには, テンプレートをファイルに保存した上で, html_documenttemplate オプションにファイルパスを与えます. 例えばこのように.

output:
  html_document:
    template: my-template.html

rmarkdown パッケージに同梱したカスタム HTML テンプレートを読み込んで使用しており, これは Pandoc のデフォルトテンプレートとは異なります. Pandoc のデフォルトを使うには template: null で指定できます.