ill-identified diary

所属組織の見解などとは一切関係なく小難しい話しかしません

[R] [TeX] rmarkdownでスライドをpdfで出力するフォーマットパッケージを作った

2020/7/10 追記: 更新していろいろ変わった. 特に名前が rmdCJKからrmdjaに変わっている点に注意
2020/9/21 追記: リポジトリ変更

こっちの内容は古くなったので R Markdown の日本語テンプレートが欲しい場合や技術的な詳細は GitHub - Gedevan-Aleksizde/rmdja: R Markdown/Bookdown の日本語用フォーマット の導入方法を見てください.


概要


タイトルの通り.

github.com


今の所, Linux (Ubuntu) と Mac (mojave) で動作確認した. 以下は出力例兼用例集

rmdja/inst/resources/examples/beamer at master · Gedevan-Aleksizde/rmdja · GitHub


なお, このリポジトリはもともと自分用のLaTeX関係のテンプレートを置いていたので, LyXや Jupyter Notebook に使うテンプレートも置いてある(後者はかなりやっつけ仕事). 基本的に自分用なのでレイアウトの改善要望には応えない可能性が高いが, 使うのは自由.

わからないことは R-wakalang などで質問してほしい. バグ指摘も歓迎



詳細

いちおう補足しておくと, rmarkdown という, 背後でpandocなどを走らせてRのソースコードを含んだ文書をhtmlやpdfやdocxなどに変換するパッケージがある*1

しかし, pdfに関しては, 背後でLaTeXを使っており, これはデフォルトの設定では日本語を含む文書に関していろいろと調整が必要になる. 例えば伊東宏樹先生の以下のスライドでは, LuaLaTeX と beamer でスライドを作る例が紹介されている.

www.slideshare.net

で, 先月の第85回 Tokyo.R で以下のような発表があった

atusy.github.io

現状では日本語をうまく表示させるためにいろいろ設定を書く必要があったのだが, 上記で紹介されているようにRMarkdownフォーマットはRの関数であるので, 自分で作ることができる. atusyやkazutan氏などはhtml形式のスライドを作る方法に関する資料をいくつも残していてとても有用なのだが, LaTeXユーザーにとってはやはりpdfにレンダリングしたいということで作った.

要件と制約

リポジトリにも書いてあるが, 主な要件として

  • TeXLive が必要

- XeCJK に依存しているため, レイアウトがたまにおかしくなる.
- XeLaTeXならばzxjatypeで, LuaLaTeXならばluatex-ja で日本語を出力する

である. 但し, これは参考文献リストのフォーマットにこだわると出力にどうしてもupBibTeXが必要だったための措置である. あまりフォーマットに拘らないなら, インストールしなくともよい. その場合, biblio-style, citation_optionsを指定せず, citation_packages: biblatexを指定し, options(tinytex.latexmk.emulation = F)も消す.

tinytexでは不十分な箇所があるのでTeX Live を別途インストールする必要がある. しかしバージョン違いであれこれ対処するのが面倒なのでそのうちtinytexの方をいじる必要がありそうだ. これは私の勘違い (当時何を思ってこう書いたのか不明). 基本的には tinytex のほうが簡単なはず. TeX 環境を未構築の人は TinyTeX 非公式日本語版ドキュメント などを参考にtinytexパッケージのインストールおよびTeXのインストールが必要.

当初はzxjatypeを使うようにしていたが, 最近のバージョンだとmicrotypeと競合することがわかり, 自分の LaTeX知識では難しくなったので妥協した. おそらく pandocのテンプレートなどもいじらないと解決できなさそう (lualatexで良いのではないか)

補足

beamerでなくhtmlで良いのならば既にもっと良い資料があるので以下を参考に.

kazutan.github.io

kazutan.github.io