#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

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS