- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2023-06-04T20:21:15+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)
#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