LaTeX をしているときに絵文字を挿入したいことは多いでしょう。そんなときに、そのまま絵文字 😆 を挿入しようとしても上手くいきません 😵💫
適切なパッケージを使う必要があります。
本記事では、絵文字を挿入する際に必要なパッケージやそれらの特徴を紹介します 👍
絵文字を使うためのパッケージ
LaTeX で絵文字を利用するには、TeX Live に同梱されている 6 つのパッケージと同梱されていない 1 つのパッケージがあります。1
パッケージ | 対応 LaTeX | フォント |
---|---|---|
emoji | LuaLaTeX | 任意のフォント |
emotion | LuaLaTeX, XeLaTeX | 任意のフォント |
emo | すべて | Noto Color Emoji (images/font) |
hwemoji | pdfLaTeX | Twemoji (images) |
twemojis | すべて | Twemoji (images) |
byo-twemojis | すべて | Twemoji (TikZ) |
BXcoloremoji ⧉ | すべて | Twemoji (images) |
フォントが “images” となっているパッケージでは、絵文字を PDF や PNG として埋め込みます。これらのパッケージでは graphics パッケージを内部で利用しています。そのため、(u)pLaTeX 下では \documentclass
での dvipdfmx
の指定を忘れないようにしてください。
加えて、emo パッケージでは “images/font” としていますが、これは LuaLaTeX 以外では images を利用するのに対して、LuaLaTeX では Noto Color Emoji (/font) を利用するためです。
特記
emo パッケージは、デフォルトではいくつかの絵文字しかサポートしていません。そのため、emo.py による生成が必要になるようです。詳細は README を確認してください。
byo-twemojis パッケージは TikZ を利用して Twemoji を再現します。(“byo” は Build Your Own の略)
このパッケージでは顔絵文字のみしか利用できません。しかし、この顔絵文字は分解されたいくつかのパーツ (TikZ elements) を組み合わせて作成するため、既存の絵文字に無いオリジナルな絵文字を作成することも出来ます。(下図では右 2 つがオリジナル)
\byoTwemoji{head; eyes normal; mouth laughing}
\byoTwemoji{head; eyes normal; mouth grimacing}
\byoTwemoji[set Yellow={254, 231, 184}]{head; clown makeup; clown nose; clown hair; mouth smiling!yscale=1.2,yshift=-3,fill=byoTwemojiRed; eyes normal!yshift=-2}
\byoTwemoji[let Yellow=byoTwemojiLightRed,let Brown=byoTwemojiBlack]{head; eyes normal!yshift=1.5; eyebrows worried; mouth tongue hanging-out; sweat left right}
%%
%% ↓ これらはオリジナル絵文字
\byoTwemoji{head; eyes tightly closed pupil!yshift=2; eyebrows worried!yshift=1; mouth thermostat; bandage}
\byoTwemoji{head exploding; mouth goofy}
BXcoloremoji パッケージは TeX Live に集録されていませんが、非常によく利用される絵文字用パッケージです。単に絵文字を出力する以外にもいくつかの機能があり、画像による出力にも関わらず、和文的扱いをすることが出来ます。
また、デフォルトでは Twemoji フォントのみサポートしていますが、カスタム次第では他のフォントの絵文字を追加することも出来ます。(参考)
この意味では、BXcoloremoji のみが画像形式で複数フォントの絵文字を扱う方法が提供されています。2
加えて、Version 0.18 以降では twemojis
オプションを有効にすることで twemojis パッケージの PDF 画像を利用できるようになりました。(入力方法は BXcoloremoji のまま)
このオプションのメリットは、絵文字画像ファイル揃が不要で BXcoloremoji を利用できる点です。
そのため、Overleaf や Cloud LaTeX のような BXcoloremoji がインストールされていない環境であっても STY ファイルと DEF ファイルのみがあれば簡単に活用できます。
入力方法
それぞれのパッケージにおける入力方法と “😀” の表示例を紹介します。
パッケージ | 入力方法 | 例 |
---|---|---|
emoji | shortcodes |
\emoji{grinning-face} , (aliase: \emoji{grinning} ) |
emotion | 準リテラル | \emotion{😀} |
emo | shortcodes | \emoji{grinning-face} |
hwemoji | リテラル | 😀 |
twemojis | codepoints, shortcodes |
\(text)twemoji{1f600} (lowercase), \(text)twemoji{grinning face} , (aliase: \(text)twemoji{grinning} ) |
byo-twemojis | TikZ element names | \byoTwemoji{head; eyes normal; mouth laughing} |
BXcoloremoji | 準リテラル, codepoints, shortcodes |
\coloremoji{😀} , \coloremojicode{1f600} , \coloremojicode{:grinning:}
|
emoji、emo、twemojis の shortcodes は Unicode CLDR 名に由来します。一方で、BXcoloremoji は emoji-toolkit に由来します。
emoji と twemojis のパッケージガイドには shortcodes に関する情報が掲載されています。
絵文字の扱い方
すでに示しているように、絵文字はフォントとして埋め込むか画像として埋め込むかの 2 通りがあります。
フォント
絵文字をフォントとして挿入するこれらのパッケージでは fontspec パッケージを内部で利用しています。
そのため、LuaLaTeX や XeLaTeX といった限られた LaTeX のみで機能します。
emoji や emotion パッケージでは、以下のコマンドから任意のフォントが利用可能となっています。
パッケージ | フォント構成コマンド |
---|---|
emoji | \setemojifont |
emotion | \emotionsetup |
TeX Live では以下のフォントが同梱されており、これらを利用できます。もちろん、これ以外にも PC にインストールされたフォントを利用することも出来ます。
フォント | 色 | パッケージ |
---|---|---|
TwemojiMozilla.ttf | カラー | twemoji-colr |
NotoColorEmoji.ttf | カラー | noto-emoji |
NotoEmoji-Regular.ttf | 白黒 | noto-emoji |
ただし、フォントの仕様によって利用できないとされているものもあるようです。詳しくはパッケージガイドを参照してください。
上記のパッケージを利用する以外に fontspec を利用して絵文字を得ることもできるようです。(参考)
画像
絵文字を画像として挿入するこれらのパッケージでは graphics パッケージを内部で利用しています。
そのため、(u)pLaTeX 下では \documentclass
での dvipdfmx
の指定を忘れないようにしてください。
パッケージによって取り扱う画像の形式が異なります。また、見出しに絵文字を使う際に hyperref パッケージでブックマークを作成したときのブックマーク情報がどのように出力されるか異なります。
これらに関して以下の表にしました。
パッケージ | 画像形式 | ブックマーク情報 |
---|---|---|
emo | 指定子とパス | |
hwemoji | Unicode 文字 | |
twemojis | shortcodes | |
byo-twemojis | TikZ | TikZ element name |
BXcoloremoji | PDF, PNG | Unicode 文字 |
hwemoji と BXcoloremoji パッケージのみがまともにブックマークを出力することが出来ます。(BXcoloremoji の twemojis
オプションでも同様)
もしも hwemoji・BXcoloremoji 以外のパッケージを利用してブックマークに Unicode 文字として絵文字を出力したい場合は、\texorpdfstring
(hyperref) を利用してください。
縦書きで絵文字を使いたい
縦書きであっても絵文字を使いたいこともあるでしょう。その場合、絵文字の向きが縦向きになるように調整する必要があります。
縦書きにデフォルトで対応するパッケージは BXcoloremoji のみ です。これ以外のパッケージでは、時計回り 90 度回転した状態で表示されます。
ただし、\rotatebox
で 90 度回転させて、\raisebox
で位置を調整すればその限りではありません。(非常に面倒ですが)
特に、twemojis パッケージでは以下のように angle = 90
を構成すると、縦書きであっても上手く表示させることができます。
\twemoji[height=1.4\twemojiDefaultHeight, angle = 90]{grinning face}
このような構成をいちいち書くのは面倒なので、\texttwemoji
を以下のように再定義してしまえば、縦書きでもいい感じに表示されます。(参考)
%% 実際、twemojis では \texttwemoji を以下のような感じで定義しています
\renewcommand{\texttwemoji}[1]{%
\raisebox{-1ex}{\twemoji[height=1.4\twemojiDefaultHeight, angle = 90]{#1}}%
}%
余談
フォントによって絵文字を扱う emoji や emotion パッケージを使うことが最も楽な利用方法ですが、対応する LaTeX は限られています 🤔
画像によって絵文字を扱うパッケージを使う場合は、hwemoji(pdfLaTeX のみ)か BXcoloremoji パッケージを使うと良いでしょう。
BXcoloremoji は自力でインストールする必要がありますが、それほど難しい作業ではありません 🥳
LaTeX では絵文字を使うにも一苦労ですね ⛄
-
Apple Color Emoji (/images) を利用した coloremoji がありますが、これは TeX Live に同梱されていないため割愛しました。
導入したい場合は、CTAN あるいは GitHub リポジトリ からダウンロードできます。 ↩ -
Apple Color Emoji であれば coloremoji のリポジトリ、Noto Color Emoji であれば noto-emoji のリポジトリ を参照すると、絵文字の画像を取得できます。 ↩