R の統合開発環境 RStudio を使っていて「RMarkdownなる便利なものがあるのか!」ということで環境構築をしたら手強かったので備忘録&共有をかねて記事化しますた。
環境
- macOS Mojave 10.14.4
- texlive 2018 (もともと入っていたTeX)
R & 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 のコンソールからインストールしてもらう方法:
install.packages('tinytex')
tinytex::install_tinytex()
もう1つは shell からインストールする方法:
curl -sL "https://yihui.name/gh/tinytex/tools/install-unx.sh" | sh
早速 RMarkdown を書く (日本語なし)
RMarkdown を書き始める前に一旦サンプルのファイルを pdf 化できるか試しましょう。
RStudio にて 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
からフォントをインストールする
tlmgr install lm
つまずきポイント3 - 必要なライブラリをインストールしているはずなのにエラーが出て止まる
R Markdown の 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
が無いと言われてしまう現象がありました。
解決策 - パッケージ一覧表を (残念ながら手動で) 更新する
sudo mktexlsr
TeX には ls-R というパッケージの一覧ファイルがあり、これの更新をしないとインストールを行っても有効にならないとのことでした。
TinyTeX は sudo
なしで実行できることもウリにしているため、このコマンドも sudo
がつかなかった事により引き起こされた事象なのかなと推察しました。
RMarkdown に日本語を書く
こちらの記事にて書かれているように、ヘッダーの部分を書き換えればできるはず:
---
- output: pdf_document
+ output:
+ pdf_document:
+ latex_engine: xelatex
+ documentclass: bxjsarticle
+ classoption: xelatex,ja=standard
+ geometry: no
---
ですが、まだ伏兵がいらっしゃいます。
つまずきポイント4 - Option clash...
! LaTeX Error : Option clash for package geometry
解決策 - テンプレートファイルから geometry の読み込み部分をなくす
こちらの記事を参考に...
幕引き
とりあえず日本語をきちんと書ける状態まで持ち込むことに成功しました...
手こずった時の参考になれば幸いです
おまけ
RStudio で日本語入力すると挙動不審なので、好きなエディタで編集して shell からコンパイルできるように設定しました。
export PATH=$PATH:/Applications/RStudio.app/Contents/MacOS/pandoc
function rmd2pdf() { R -q -e "rmarkdown::render('$1', output_format = 'pdf_document')" }
rmd2pdf sample.Rmd