#author("2023-06-04T20:23:09+00:00","default:mogamin","mogamin") * RStudioでR Markdownから日本語PDFをKnitする [#q818bc81] #author("2023-06-04T20:23:53+00:00","default:mogamin","mogamin") * RStudio on Windows で R Markdown から日本語PDFをKnitする [#q818bc81] |この記事を書いたのは 2015/8/10 です| [[RStudio:http://www.rstudio.com/]] で利用できる R Markdown は [[通常のMarkdown記法:http://www.markdown.jp/what-is-markdown/]] にRの実行コマンドを追加したようなもので、書き上がったドキュメントはHTMLやMS Wordなんかにちゃちゃっと変換できます。ただし、PDFに変換するには一手間必要になるのと、場合によってはエラーにハマることがあるので、今回はそれを実践した時の事をメモしておきます。 ** 環境 [#c26603e8] - 元からあるもの -- Windows 7 x64 -- R 3.1.2 -- RStudio 0.98.1091 -この記事で新しく導入するもの -- MikTeX 2.9 ** MikTeXの準備 [#k8bd87da] R MarkdownからPDFへの変換は途中LaTeXを経由するため、LaTeXの処理系が必要になります。そのためのMikTeXを調達します。[[MikTeXのダウンロードページ:http://miktex.org/download]] からBasic MikTeXを入手。64bit版は "Other Downloads" から。 インストーラを実行してインストール。"Install missing packages on-the-fly" はYesで良いでしょう。 終わったら スタートメニュー → MikTeX → Maintenance (Admin) → Update (Admin) で、念のため既存パッケージを最新状態にアップデート。 次に スタートメニュー → MikTeX → Maintenance (Admin) → Package Manager (Admin) を起動。 "Keywords" のフィールドに「&color(red,mathspec);」と入力して検索を掛け、mathspecをInstallします。(これを省くとエラーにハマるのは後述) ** RStudioの設定 [#b78fce54] #ref(./20141224-rstudio-pdf-001.png,around,right,wrap,50%) Tools → Global Options… から、左メニューのSweaveを開きます。これは新しくR Markdownを作成するときのデフォルト値になります。 - 「Weave Rnw files using:」 → &color(red,knitr); - 「Typeset LaTeX into PDF using:」 → &color(red,XeLaTeX); #clear ** R MarkdownからPDF作成 [#u717ecbe] 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が作成できます。 *** おまけ: setmainfontのエラーでハマった件 [#q40cf0af] 僕が最初に 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}` される設定になっていました。 ** 参考 [#yada0986] [[RStudioで日本語PDF:http://d.hatena.ne.jp/takeshou/20140624/1403579987]] - ぼやかないつもりのメモ [[RStudioから使えるR Markdownで日本語のPDFを作成する:http://bicycle1885.hatenablog.com/entry/2014/10/15/032024]] - りんごがでている [[RStudioを使ったPDF文書の作成:http://qiita.com/uri/items/d9e50e8e5a37217a3f5d]] - uri@Qiita