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節参照) もまた役に立つかもしれない, ということも覚えておいてください.