6.12 ハードコア LaTeX ユーザーのために (*)

R Markdown はきっと執筆と組版のための最善の文書フォーマットではないでしょう. シンプルさは長所であると同時に短所でもあります. LaTeX はタイプすべきコマンドの多さと引き換えに, 組版の観点で Markdown よりはるかに強力です. あなたにとって組版がはるかに優先すべき事項で, あらゆる LaTeX コマンドや環境を使うことに満足しているのなら, 文書全体で Markdown を使う代わりに純粋な LaTeX コードを使えばよいのです.

knitr パッケージは R Markdown に限定されない多様なソース文書フォーマットをサポートしています. 以下は R コードと純粋な LaTeX コードが混ざり合っている例です

\documentclass{article}
\usepackage[T1]{fontenc}

\begin{document}

これがコードチャンクです.

<<foo, fig.height=4>>=
1 + 1
par(mar = c(4, 4, .2, .2))
plot(rnorm(100))
@

インラインコードを書くこともできます. 例えば $\pi=\Sexpr{pi}$ とか,
 \Sexpr{1.9910214e28} で大きな数値を表現できます.

\end{document}

例えば上記のファイルが latex.Rnw であるようにファイル名には通常 .Rnw という拡張子がつきます. 考え方は同じですが R コードチャンク構文とインライン R コードを書く構文とは異なっています. R コードチャンクは <<>>= で始まり (チャンクオプションは括弧内に書きます), @ で終わります. インライン R コードは Sexpr{} 内に書きます.

knitr::knit() 関数は Rnw 文書を出力ファイルである LaTeX (.tex) にコンパイルでき, それをさらに pdflatex といった LaTeX ツールを通して PDF にコンパイルできます. .Rnw から PDF を一足飛びでコンパイルするのに knitr::knit2pdf() を使うこともできます. RStudio を使っているならツールバーの Compile PDF を押すこともできます. 注意してほしいのは, Rnw 文書をコンパイルする方法のデフォルトは Sweave であり, これを knitr に変更することです (その方法はこの投稿 http://stackoverflow.com/q/27592837/559676 を確認してください).

Rnw 文書は LaTeX のフルパワーをあなたにもたらします. Markdown ではほんとうに解決の難しい組版の問題があるのなら, これは最終手段となるでしょう. ただし, Markdown をやめる前に, カスタム Pandoc LaTeX テンプレート (6.10節参照) もまた役に立つかもしれない, ということも覚えておいてください.