This package defines the \emo{<emoji-name>}
macro for including color emoji in
a document no matter the LaTeX engine. It uses the Noto color emoji font if the
engine supports doing so and falls back onto PDF graphics otherwise. In either
case, \emo{desert-island}
results in 🏝 and \emo{parrot}
results in 🦜. Emo
may come in particularly handy when dealing with academic publishers that
provide only minimal support for non-Latin scripts (cough,
ACM, cough).
Emo's source repository is https://github.com/apparebit/emo. It also is available through CTAN. Emo supports conversion to HTML with LaTeXML or TeX4ht. When using the latter tool, please be sure to use |make4ht -l| as invocation.
When emo is used with the extra
option, this package also defines the
\lingchi
and \YHWH
macros for 凌遲 and יהוה, respectively. Both macros
preserve a subsequent space as space, no backslash needed.
When used with the index
option, this package also emits a raw index entry for
each use of an emoji into an emo index or .edx
file.
To extract files embedded in emo.dtx, run pdftex emo.dtx
. Note
that plain old tex
won't do, since it mangles this README. pdflatex
works,
but also generates the package documentation. The embedded files are build.sh
,
emo.ins
, emo.sty
, emo.sty.ltxml
, emo-support.sty
, canary.tex
,
demo.tex
, and README.md
.
To run emo's tests and build its documentation, make build.sh
executable
by invoking chmod +x build.sh
and then run ./build.sh
, which:
- Tests emo on pdfTeX, XeTeX, and LuaTeX—see canary.pdf;
- Tests emo with LaTeXML and TeX4ht—see demo.html;
- Builds the documentation with indices—see emo.pdf.
To configure the emoji, run python3 config/emo.py
with appropriate
arguments. The package documentation explains the configuration tool
in detail, but you may find the -h
for help option sufficient to get started.
To install this package, place emo.def
, emo.sty
, emo.sty.ltxml
,
emo-lingchi.ttf
, and the emo-graphics
directory with the fallback PDF files
somewhere where LaTeX can find them. In a pinch, your project directory will do.
By default, emo supports all of the emoji listed below. In order of Unicode's emoji groups, emo's pre-configured emoji include:
- All emoji in Unicode's Smileys & Emotion group;
- All emoji in the People & Body group that do not override gender, hair, or skin color;
- All emoji in the Animals & Nature, Food & Drink, Travel & Places, Activities, Objects, and Symbols groups;
- All emoji in the flag subgroup of the Flags group;
- The EU flag.
In Unicode display order, that's the following 1,415 out of 3,655 possible emoji as of Unicode 15.0:
😀 😃 😄 😁 😆 😅 🤣 😂 🙂 🙃 🫠 😉 😊 😇 🥰 😍 🤩 😘 😗
The package documentation explains the underlying naming scheme. It
also explains how to update the configuration with the emo.py
script, which takes care of most heavy lifting by downloading the sources for
Noto color emoji, converting SVG into PDF graphics compatible with pdfTeX and
XeTeX, and generating up-to-date emo.def
files.
This package combines code written in LaTeX, Python, and Perl with Unicode data about emoji as well as graphics and fonts derived from Google's Noto fonts. As a result, a number of different licenses apply, all of which are OSI approved and non-copyleft:
- This package's LaTeX code is © Copyright 2023 by Robert Grimm and has been released under the LPPL v1.3c or later.
- The emo.py configuration script also is © Copyright 2023 by Robert Grimm but has been released under the Apache 2.0 license.
- The emoji-test.txt configuration file is a data file from Unicode TR-51 and hence subject to the Unicode License.
- The
emo-lingchi.ttf
font is a two-glyph subset of the serif traditional Chinese version of Google's Noto fonts and hence subject to the SIL Open Font License v1.1. - The PDF graphics in the
emo-graphics
directory are derived from the sources for Noto's color emoji and hence subject to the Apache 2.0 license.