6.1 プリアンブルに LaTeX コードを追加する
LaTeX 文書の一般的な構造はこのようになっています.
\documentclass{article}
% preamble
\begin{document}
% body
\end{document}
これは文書クラスを \documentclass{}
で宣言し, 必要に応じて特定の LaTeX パッケージを読み込んだり特定のオプションをプリアンブルで設定し, そして \begin{document}
に続いて文書の本文を書き始めています. Markdown 文書はほとんどがこの文書の本文に対応します.
プリアンブルになにか追加したい時, pdf_document
の includes
オプションを使わねばなりません. このオプションは3つのサブオプションを持ちます. in_header
, before_body
, そして after_body
です. いずれも1つ以上のファイルパスを指定できます. in_header
に指定されたファイルはプリアンブルに追加されます. before_body
と after_body
に指定されたファイルはそれぞれ本文の前と後に追加されます.
例えば以下はテキスト内のハイパーリンクを脚注に変える小ワザです. この小ワザが役に立つのは, PDF 出力された文書が紙に印刷されたときに, 読者は紙面上のリンク (\href{URL}{text}
で生成されたもの) をクリックすることはできませんが, 脚注で URL を見ることはできるからです. この小ワザはテキストと URL の両方を表示します.
% あなたはレンダリング前に \href のコピーを保存したいかもしれない
% \let\oldhref\href
\renewcommand{\href}[2]{#2\footnote{\url{#1}}}
上記のコードを任意のファイル名(例えば preamble.tex
) に保存してから, プリアンブルに読み込んでください.
output:
pdf_document:
includes:
in_header: "preamble.tex"
この小ワザに限れば, 実際に自分で実装しなくても, Pandoc のデフォルトの TaTeX テンプレート (6.2節参照) に組み込まれた機能である YAML オプション links-as-notes
を true
にすることで簡単にできます.
コードをプリアンブルに追加する別の方法として, YAML フロントマター の header-includes
フィールドに直接コードを与えることができます. 6.3節でその例を紹介しています. header-includes
を使う利点は R Markdown 1文書の内部に全てを含められることです. しかしレポートを複数の出力フォーマットで生成したいのなら, やはり includes
を使う方法をお薦めします. header-includes
は使われ方に制約がないため, 非 LaTeX 出力の文書に対しても読み込まれてしまうからです. これと比較して, includes
オプションは pdf_document
フォーマットにのみ適用されます.