R Markdownでプレゼンスライドを作成する。LaTeX Beamerで日本語PDFを出力
R StudioでR Markdownファイルを作ろうとしていたら、ウィザードにPresentationなんて項目があるのが気になった。
Default Output Format の PDF (Beamer) という項目を読むと、どうやらLaTeXの機能を使ってPDF形式のプレゼンファイルを出力できそうな感じがする。

もしR Markdownでパワーポイントのようなプレゼンファイルが作れるんだったら、すげー便利なんじゃないか?と思った。論文の作成も、論文へのZoteroの引用も、全部R Markdownでやりたいと思っていたところだし。
ちょうどプレゼンファイルを作りたいところだったので、試しに作ってみることにした。
R StudioはDockerコンテナで稼働中
まずは環境のおさらい。我が家では、自宅サーバー上にDockerコンテナとして今日も元気にR Studioは稼働している。
R StudioはRockerプロジェクトのイメージを使っており、このイメージはUbuntu Linuxをベースに作られている。
つまり、Ubuntu Linux に R Studio Server をインストールした状態である。
Rockerプロジェクトのイメージを少し改造しているが、ほぼ同プロジェクトのイメージがそのまま動いていると言えるだろう。
LaTeX環境をインストール
早速、ファイルを作ってみよう。先の「New R Markdown」ウィザードから、Presentationを選択し、PDF (Beamer)を選ぶ。

右下の「OK」をクリックすると、テンプレートが作られた。

一旦、このままエディタペイン上部にある「Knit」をクリックしてやると、どうもLaTeXがないぞと怒られているようだ。
LaTeXはRから tinytex というパッケージをインストールしてやることでも準備できるが、これだと後の工程で日本語の出力がうまくいかなかったため、OSに直接LaTeXをインストールしてやることにした。もちろん、日本語対応のためのパッケージも合わせて入れる。
R Studioの Terminal から apt でインストールしよう。R StudioはTerminalを開くと、直接DockerコンテナのUbuntu Linuxを操作できるから、ものすごく便利だ。
sudo apt install texlive-lang-japanese texlive-fonts-extra texlive-xetex
待つことしばし。インストールが終わったら、R Studioのセッションから一旦ログアウトして、改めてログインする (もしかしたら、再ログインは必要ないかもしれないが)。
その後、再びエディタペイン上部にある「Knit」をクリックしてやると、

それっぽいPDFが出力できた!
なお、LaTeX環境をインストールしたら、Dockerコンテナの容量が3GBくらい増えた。もともと3GBを切るくらいだったので、2倍以上になったことになる。LaTeX環境ってよっぽど容量を食うのね。そりゃ、インストールにも時間を食うわ。
また、LaTeXの何のパッケージをインストールするか悩むくらいなら、texlive-full を使えばよさそうだ。これならLaTeX環境を全部ぶっこんでくれるみたい。まあ、その分、ディスク容量を食うんだろう。
sudo apt install texlive-full
20年前は、UnixにLaTeX環境をインストールするにもアレヤコレヤと悩んだような気がするのだが、今ではこんなに簡単につくれるようになったんだなぁ、と思ったものだ。
OSに直接LaTeXをインストールしたことだし、あとでDockerfileに追記して、コンテナ作るときに取り込むようにしようかな。
日本語PDFを作成できるようにする
無事にPDFのプレゼンファイルが出力できたので、これはいけるだろうと、本文をちょいなちょいなと変えてみる。具体的には、本文中に日本語を入力して「Knit」してやる。
すると、なんだかよくわからないエラーが出てPDFファイルの出力に失敗する。なんとなく、日本語文字のUnicodeがうまく読めないと言っている気がする。
どうやらR Markdownから日本語PDFを作成するには、更に一工夫が必要なようだ。
色々と調べてみた結果、どうもR Markdownのヘッダー部分に少し追記してやれば行けるらしい。
具体的には、こんな内容を追記してやった。

header-includes:
- \usepackage{xltxtra}
- \usepackage{zxjatype}
- \usepackage[ipa]{zxjafont}
output:
beamer_presentation:
latex_engine: xelatex
header-includesの項は、LaTeXに日本語でもうまくコンパイルできるように指示しているらしい。
outputの項は、日本語を含むファイルでもコンパイルできる xelatex というエンジンを指定している。

ヘッダーを追記したら、「Knit」をクリックすると、、、

できた!
おわりに
R Markdownでパワーポイントのようなプレゼンファイルができるなんて素晴らしい!と思ってやってみたんだけど、意外とすんなり行かずにハマってしまった。
特に、日本語のPDFファイルを出力するところでハマってしまった。
そんな日本語を含むファイルへの対応に色々と悩んだんだけど、
- 日本語に対応したLaTeX環境をインストールすべし
- R Markdownファイルのヘッダーに、日本語対応するための要素を追記すべし
ということがわかった。
ようやく、R Markdownでプレゼンファイルを作ることができそうだ。
あとは、プレゼンファイルのテンプレートがちょっと微妙な気がするので、何かいい感じのものを探してみようかな。フォントの調整もできたらよさそう。
画像やグラフの挿入なんかもできるようになったらますます便利そうだし、ちょいちょい作りながら調べていくとしよう。