LoginSignup
8
7

More than 5 years have passed since last update.

R Markdown 環境構築 & トラブルシューティング

Posted at

R の統合開発環境 RStudio を使っていて「RMarkdownなる便利なものがあるのか!」ということで環境構築をしたら手強かったので備忘録&共有をかねて記事化しますた。

環境

  • macOS Mojave 10.14.4
  • texlive 2018 (もともと入っていたTeX)

R & RStudio のインストールについて

  • R はココから .pkg をダウンロード、インストール
  • RStudio は brew cask install rstudio とかでインストール (参考)

しました。

TinyTeX のインストール

RMarkdown .Rmd から pdf へのコンパイルを行うために TinyTeX という小構成の TeX Distribution を使う必要があるのですが、これのインストール時に注意があります。

つまずきポイント1 - 他のTeX Distributionが入っている

TeX は tlmgr という専用のパッケージ管理ツールを持っているのですが、複数の Distribution がインストールされている (自分の場合は texlive と TinyTeX が混在してしまった状態) と PATH の設定によってどちらが使われるのか不定となり、正しく動作しません。

解決策 - TinyTeX 以外の Distribution は削除する

あまり気が乗らないかもしれませんが、こうしてしまうのがおすすめです。
texlive なら /usr/local/texlive 以下をごっそり消してしまえばほぼおしまいです。

Main

TinyTeX のインストールには2つ方法があります。
1つは RStudio のコンソールからインストールしてもらう方法:

R-console
install.packages('tinytex')
tinytex::install_tinytex()

もう1つは shell からインストールする方法:

shell
curl -sL "https://yihui.name/gh/tinytex/tools/install-unx.sh" | sh

:tada:

早速 RMarkdown を書く (日本語なし)

RMarkdown を書き始める前に一旦サンプルのファイルを pdf 化できるか試しましょう。
RStudio にて Rmarkdown を作成します:
gen-rmarkdown
作成できたら Command + Shift + k で pdf にコンパイルします。

おそらくここで必要なライブラリなどのインストールがなされるのですが、2つほどトラブルが起きる可能性があります。

つまずきポイント2 - Font が見つからない?

Font TU/lmr/m/n/10=[lmroman10-regular]:mapping=tex-text at 10.0pt not loadable: ...

このエラーは TinyTeX の LoadPath 内に指定されたフォント (上記の場合 lmroman) が見つからないことを意味するそうです。

解決策 - tlmgr からフォントをインストールする

shell
tlmgr install lm

つまずきポイント3 - 必要なライブラリをインストールしているはずなのにエラーが出て止まる

R Markdown の console に流れていくログを見てると (記憶を辿っているので異なるかも):

R-console
tlmgr search --file --global '/hogehoge.sty'
tlmgr install hogehoge
...
...done mktexlsr
tlmgr path add
tlmgr search --file --global '/hogehoge.sty'

! LaTeX Error : hogehoge.sty not found

tlmgr install した後に検索をかけても .sty が無いと言われてしまう現象がありました。

解決策 - パッケージ一覧表を (残念ながら手動で) 更新する

shell
sudo mktexlsr

TeX には ls-R というパッケージの一覧ファイルがあり、これの更新をしないとインストールを行っても有効にならないとのことでした。
TinyTeX は sudo なしで実行できることもウリにしているため、このコマンドも sudo がつかなかった事により引き起こされた事象なのかなと推察しました。

:tada::tada:

RMarkdown に日本語を書く

こちらの記事にて書かれているように、ヘッダーの部分を書き換えればできるはず:

sample.Rmd
---
- output: pdf_document
+ output:
+   pdf_document: 
+     latex_engine: xelatex 
+ documentclass: bxjsarticle
+ classoption: xelatex,ja=standard
+ geometry: no
---

ですが、まだ伏兵がいらっしゃいます。

つまずきポイント4 - Option clash...

R-console
! LaTeX Error : Option clash for package geometry

解決策 - テンプレートファイルから geometry の読み込み部分をなくす

こちらの記事を参考に...

:tada::tada::tada:

幕引き

とりあえず日本語をきちんと書ける状態まで持ち込むことに成功しました...
手こずった時の参考になれば幸いです:smile:

おまけ

RStudio で日本語入力すると挙動不審なので、好きなエディタで編集して shell からコンパイルできるように設定しました。

.zshrc
export PATH=$PATH:/Applications/RStudio.app/Contents/MacOS/pandoc
function rmd2pdf() { R -q -e "rmarkdown::render('$1', output_format = 'pdf_document')" }
shell
rmd2pdf sample.Rmd

:tada::tada::tada::tada:

8
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
7