6.1 プリアンブルに LaTeX コードを追加する

LaTeX 文書の一般的な構造はこのようになっています.

\documentclass{article}
% preamble
\begin{document}
% body
\end{document}

これは文書クラスを \documentclass{} で宣言し, 必要に応じて特定の LaTeX パッケージを読み込んだり特定のオプションをプリアンブルで設定し, そして \begin{document} に続いて文書の本文を書き始めています. Markdown 文書はほとんどがこの文書の本文に対応します.

プリアンブルになにか追加したい時, pdf_documentincludes オプションを使わねばなりません. このオプションは3つのサブオプションを持ちます. in_header, before_body, そして after_body です. いずれも1つ以上のファイルパスを指定できます. in_header に指定されたファイルはプリアンブルに追加されます. before_bodyafter_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-notestrue にすることで簡単にできます.

コードをプリアンブルに追加する別の方法として, YAML フロントマター の header-includes フィールドに直接コードを与えることができます. 6.3節でその例を紹介しています. header-includes を使う利点は R Markdown 1文書の内部に全てを含められることです. しかしレポートを複数の出力フォーマットで生成したいのなら, やはり includes を使う方法をお薦めします. header-includes は使われ方に制約がないため, 非 LaTeX 出力の文書に対しても読み込まれてしまうからです. これと比較して, includes オプションは pdf_document フォーマットにのみ適用されます.