ちょっとハマった。
Pandocでマークダウンファイルを変換する場合、YAMLフロントマターの設定と引数を用いた設定では、引数が優先権を持つ。で、HTMLファイルのhead
要素内に記述を追加する場合は
- 引数に
--include-in-header
を使ってファイルを指定する - YAMLフロントマターに
header-includes
を使って内容を指定する
の2パターンがある。ファイルを指定するか、内容を指定するか、ベツモノっぽいなと思いきや、マニュアルには
header-includes
contents specified by -H/--include-in-header (may have multiple values)
とあってどうやら、引数の方が強いらしい。
確かめてみよう。
まずはheader-includes
を使って<script></script>
を追加する。
MD=$(mktemp --suffix=".md")
echo -e \
"---
title: test
header-includes: |
<script></script>
---" >> "$MD"
pandoc $MD --standalone
## <!DOCTYPE html>
## <html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
## <head>
## <meta charset="utf-8" />
## <meta name="generator" content="pandoc" />
## <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
## <title>test</title>
## <style>
## code{white-space: pre-wrap;}
## span.smallcaps{font-variant: small-caps;}
## span.underline{text-decoration: underline;}
## div.column{display: inline-block; vertical-align: top; width: 50%;}
## </style>
## <!--[if lt IE 9]>
## <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
## <![endif]-->
## <script></script>
## </head>
## <body>
## <header id="title-block-header">
## <h1 class="title">test</h1>
## </header>
##
## </body>
## </html>
うまくいった。次に、追加で--include-in-header
に空ファイルを指定してみる。
HEADER=$(mktemp --suffix=".html")
MD=$(mktemp --suffix=".md")
echo -e \
"---
title: test
header-includes: |
<script></script>
---" >> "$MD"
pandoc $MD --standalone --include-in-header="$HEADER"
## <!DOCTYPE html>
## <html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
## <head>
## <meta charset="utf-8" />
## <meta name="generator" content="pandoc" />
## <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
## <title>test</title>
## <style>
## code{white-space: pre-wrap;}
## span.smallcaps{font-variant: small-caps;}
## span.underline{text-decoration: underline;}
## div.column{display: inline-block; vertical-align: top; width: 50%;}
## </style>
## <!--[if lt IE 9]>
## <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
## <![endif]-->
## </head>
## <body>
## <header id="title-block-header">
## <h1 class="title">test</h1>
## </header>
##
## </body>
## </html>
<script></script>
が消えた。
Pandocムツカシイ。