xaringanthemerパッケージのライトな解説
たまたま最近NARUTOを読み返す機会があって、その流れでxaringan
パッケージを使い始めてみたら気に入ったので、これからもたまに使っていこうかと思っています。
一応説明しておくと...xaringan
とは、Yihui Xie氏により作られた、RMarkdownでHTMLスライドを生成するためのパッケージです。
詳しくは、氏の著書「R Markdown: The Definitive Guide」をご参照ください。
RMarkdownでHTMLスライドを生成するには、デフォルトのioslidesやSlidyを使うという手もあるのですが、拡張性の高さやちょっとした小技が使えるのが、xaringan
の魅力かと思います。
例えばこちらのスライドはxaringan
で作成されていますが、このスライドを開きながら、キーボードの「m」を押すと、ちょっとした忍術が使えます。
さて、xaringan
パッケージによりHTMLスライドが生成できるわけなので、見栄えを色々と変更するには、CSSをいじればいいということになります。xaringan
にはデフォルトのテーマ(theme)が設定されていますが、このテーマを変更する、いくつかのテンプレートが用意されています。例えばmetropolisというテーマを選択すると、こちらのページのようにスライドの見栄えが変わります。詳しくは「R Markdown: The Definitive Guide」をご参照ください。
ところが! xaringanthemer
というパッケージを見つけてしまいました。その名の通り、xaringan
で作成するHTMLスライドのテーマ(theme)を、ユーザが任意に操作しやすくするためのパッケージです。CSSよくわかんないや...という人でも、手軽にスライドの見栄えを調整できるようになります。
あまりの便利さに驚いたんですが、僕が調べた限りでは、xaringanthemer
パッケージに関する日本語の解説記事は見つからなかったので、備忘録がてら記事にまとめました。
と言っても使い方は簡単で、とりあえずパッケージをインストールしたあとで...
# install.packages("devtools") devtools::install_github("gadenbuie/xaringanthemer")
新規.Rmd
ファイルを立ち上げる際に、Ninja Themed Presentationを選択するだけです。
詳しくはREADMEのところを読めばわかりますが、xaringanthemer
も様々なテーマのテンプレートを用意しています。そしてそのテンプレート(これ自体が関数)は、様々な「見栄え」に関する引数を持っています。文字の色からフォントから見出しのサイズから...引数の多さにびっくりします。
例えばこちらの記事に埋め込んだスライドは、mono_light()
というテンプレートを使用しているため、緑を基調とした色合いになっていますが、下のように任意に設定を変更していました。必要なことは、.Rmdファイル冒頭で適当なRチャンクを作り、その中に以下を記述するだけです。
library(xaringanthemer) mono_light( base_color = "#1c5253", text_font_size = "30px", code_font_size = "20px", padding = "1em 1em 1em 1em",#margin header_h1_font_size = "45px", header_h2_font_size = "40px", header_h3_font_size = "35px", header_color = "midnightblue", header_font_google = google_font("Song Myung"), text_font_google = google_font("Song Myung", "400", "400i"), code_font_google = google_font("Song Myung"), link_color = "chocolate" )
また、任意のCSSをextra_css
という引数に与え、カスタマイズすることもできます。例えば以下の例では、指定した文字の色を赤にしたり、フォントサイズをデフォルトの50%にしたりするための準備をしています。
extra_css <- list( ".red" = list(color = "red"), ".small" = list("font-size" = "50%"), ".full-width" = list( display = "flex", width = "100%", flex = "1 1 auto" ) ) mono_light( extra_css = extra_css )
あとはMarkdown記法でドキュメントを執筆する際に、
買い物しようと街まで出かけたら、.red[財布忘れちゃったよ!] あーあ、ツイてない。.small[トホホ...]
などと書いてレンダリングすれば、「財布忘れちゃったよ」の部分が赤く、「トホホ...」の部分のフォントサイズが半分になって表示されます。
僕自身、xaringan
を使い始めたばかりで、まだよくわかっていない部分も多いのですが、お役に立てば幸いです。
Enjoy!!