この記事を書いたのは 2015/8/10 です |
RStudio で利用できる R Markdown は 通常のMarkdown記法 にRの実行コマンドを追加したようなもので、書き上がったドキュメントはHTMLやMS Wordなんかにちゃちゃっと変換できます。ただし、PDFに変換するには一手間必要になるのと、場合によってはエラーにハマることがあるので、今回はそれを実践した時の事をメモしておきます。
R MarkdownからPDFへの変換は途中LaTeXを経由するため、LaTeXの処理系が必要になります。そのためのMikTeXを調達します。MikTeXのダウンロードページ からBasic MikTeXを入手。64bit版は "Other Downloads" から。
インストーラを実行してインストール。"Install missing packages on-the-fly" はYesで良いでしょう。
終わったら スタートメニュー → MikTeX → Maintenance (Admin) → Update (Admin) で、念のため既存パッケージを最新状態にアップデート。
次に スタートメニュー → MikTeX → Maintenance (Admin) → Package Manager (Admin) を起動。
"Keywords" のフィールドに「mathspec」と入力して検索を掛け、mathspecをInstallします。(これを省くとエラーにハマるのは後述)
Tools → Global Options… から、左メニューのSweaveを開きます。これは新しくR Markdownを作成するときのデフォルト値になります。
R Markdownの先頭に以下を記述します。
--- title: "たいとる" author: "おーさー" date: "Wednesday, December 24, 2014" output: pdf_document: latex_engine: xelatex mainfont: Meiryo monofont: Meiryo ---
ポイントは `output` と `(main|mono)font`。
まず、`output` を指定してやらないとPDF自体を作ってくれません。`latex_engine` も必ず指定します。
そして `mainfont` と `monofont` で、日本語のフォントを指定します。これをしないと標準では英字フォントが選択されるので、フォントに載っていない文字、つまり日本語が真っ白けになるというわけです。
ひとまずここまでやれば、[Knit PDF] でPDFが作成できます。
僕が最初に knit PDF したときは、RStudioにこんなエラーが出ました。
output file: testpdf.knit.md ! Undefined control sequence. \fontspec_calc_scale:n ...ec_tmpb_dim }\fp_div:Nn \l_fontspec_tmpa_fp {\l_fo... l.21 \setmainfont{Meiryo} pandoc.exe: Error producing PDF from TeX source ?G???[: pandoc document conversion failed with error 43
何やら `setmainfont` する段階でpandocがコケている様子。R Markdownから `(main|mono)font` を抜けば正常にPDFは作れましたが、もちろん日本語文字は表示されません。
悩んだ末に判明した原因が、mathspec なるパッケージの不足です。
このパッケージ、標準ではMikTeXには導入されていませんが、R Markdownの雛形ファイル `Program Files\R\R-x.x.x\library\rmarkdown\rmd\latex\default.tex` を覗くと、XeLaTeX環境では `usepackage{fontspec}` の代わりに `usepackage{mathspec}` される設定になっていました。
RStudioで日本語PDF - ぼやかないつもりのメモ
RStudioから使えるR Markdownで日本語のPDFを作成する - りんごがでている
RStudioを使ったPDF文書の作成 - uri@Qiita