cucumber flesh

Rを中心としたデータ分析・統計解析らへんの話題をしていくだけ

💮ついに念願の「knitrで生成したPDF上で絵文字を出力する」ことに成功したぞ

そういえば我々はRで絵文字を扱うことに情熱を燃やしていた時期があった(2月14日になにしてるんだ、と今思った)。

notchained.hatenablog.com

github.com

http://rpubs.com/yutannihilation/rollingsushi

qiita.com

qiita.com

{remoji}を使えば、Rのコンソールやknitしたhtmlやmdに絵文字を出力させることができるようになるが、思うように絵文字を表示できず、猛者たちが挫折して文字コードの闇に落ちていった。残された課題は日本語を含んだPDFに絵文字を埋め込むことと、plotに絵文字を使うこと(いわゆるpch = 🍣)。であった。私はスターウォーズ エピソード5でのヨーダが如く、誰かがなんとかしてくれるのをじっと待つことにした(PDFに絵文字を埋め込むことが無理そうだったのでFont-Awesomeで代用しようとしていた

それから数ヶ月... 課題の一つである「knitしたPDFに絵文字」を使うことができるようになったので、その方法を整理しておく。

情熱よ再び

きっかけはこちらの記事。

d.hatena.ne.jp

coloremoji パッケージは大変有用で素晴らしいパッケージである。だがしかしチョット不満な点もある。それは、このパッケージが upLaTeX でしか使えないことである。LaTeX 文書でカラー絵文字を使うことがある程度の有用性を持つのであれば、pLaTeX や LuaLaTeX 等の他のエンジンでも当然使えるべきではないか。

……ということで、作ってみた。

自分が日本語を含んだRmarkdownをPDFとして出力する場合に使っているエンジンがXeLaTeXであったので、これは!!と思って実践することに。

必要なもの

それぞれのインストール方法について、ちょっと時間が経ってしまって忘れている部分が多い...。上記の記事等を参考にしてもらいたい。

Rmarkdown上で絵文字を扱う際の注意

RmdのYAMLは(最低限)次のように設定する。

XeLaTeXを使用する場合...

---
title: "Change the title"
header-includes:
  - \usepackage[twitter]{bxcoloremoji}
  - \usepackage{zxjatype}
  - \setjamainfont{Hiragino Kaku Gothic Pro}
  - \usepackage{fontspec}
output:
  pdf_document:
    latex_engine: xelatex
---

LuaLaTeXの場合...

---
title: "Change the title"
header-includes:
  - \usepackage{luatexja}
  - \usepackage[twitter]{bxcoloremoji}
output:
  pdf_document: 
    latex_engine: lualatex
---

\coloremojiでは引数に絵文字をそのまま与えることで任意の絵文字を出力することができるが、Rmdで利用する場合にはremoji::emojiを使うこともできる。その際は\coloremojiに与える引数にインラインコードとしてremoji::emojiで絵文字用の文字コードを渡す。

\coloremoji(🍣)
\coloremoji{`r remoji::emoji("sushi")`}

どちらの方法でも寿司が表示される。やったぜ。

TeX職人の皆さまに感謝です。

Next... pch = 🍣

参考) https://rpubs.com/rehart/90158, http://emojione.com