前言
在网上看到别人发的用「滑稽」拼成的自由组合定律图,我就想用 emoji
宏包做同样的事,有几个问题:
- 如何得到图片的一半、得到镜像的图片
- 如何定位
- 如何输出 emoji
好在前辈们制作的宏包满足我们的需求:
- 用
graphicx
宏包输出一半的 emoji、得到镜像的图片
- 用
calc
宏包得到 emoji 的尺寸
- 用
tikz
宏包定位
- 用
lualatex
编译方式、emoji
宏包输出 emoji
正文
思路
- 单独输出一个 pdf,一页为正常的 emoji,另一页为镜像的 emoji
- 用
calc
宏包得到 emoji 的尺寸 \def\baba{\includegraphics[page=1]{figure.pdf}} \def\mama{\includegraphics[page=2]{figure.pdf}} \newlength{\emojiwidth} \setlength{\emojiwidth}{0pt} \newlength{\emojiheight} \setlength{\emojiheight}{0pt} \setlength{\emojiwidth}{\widthof{\baba}} \setlength{\emojiheight}{\heightof{\baba}}
|
- 用
graphicx
宏包提供的 viewport
和 clip
参数输出一半的 emoji
完整代码
\documentclass{article} \begin{filecontents*}{figure.tex} \documentclass[fontset=fandol]{ctexart} \usepackage{emoji} \usepackage{graphicx} \setemojifont{Twemoji Mozilla} \def\mingzi{face-savoring-food} \def\baba{\scalebox{3}{\emoji{\mingzi}}} \def\mama{\scalebox{-3}[3]{\emoji{\mingzi}}} \pagestyle{empty} \begin{document} \baba\newpage\mama \end{document} \end{filecontents*}
\begin{filecontents*}{main.tex} \documentclass[fontset=fandol]{ctexart} \usepackage{graphicx,tikz} \usepackage{calc} \setCJKmonofont{FandolHei} \usepackage[default]{sourcecodepro} \usetikzlibrary{positioning} \def\baba{\includegraphics[page=1]{figure.pdf}} \def\mama{\includegraphics[page=2]{figure.pdf}} \newlength{\emojiwidth} \setlength{\emojiwidth}{0pt} \newlength{\emojiheight} \setlength{\emojiheight}{0pt} \setlength{\emojiwidth}{\widthof{\baba}} \setlength{\emojiheight}{\heightof{\baba}} \def\banba{\includegraphics[page=1,viewport= 0 0 0.5\emojiwidth{} \emojiheight,clip]{figure.pdf}} \def\banma{\includegraphics[page=2,viewport= 0.5\emojiwidth{} 0 \emojiwidth{} \emojiheight{},clip]{figure.pdf}} \def\bbanba{\includegraphics[page=1,viewport= 0.5\emojiwidth{} 0 \emojiwidth{} \emojiheight{},clip]{figure.pdf}} \def\bbanma{\includegraphics[page=2,viewport= 0 0 0.5\emojiwidth{} \emojiheight{},clip]{figure.pdf}} \pagestyle{empty} \begin{document} \begin{tikzpicture} \node (a) at (0,0) {亲本 P}; \node[right=2 of a] (b) {\parbox[t]{3\ccwd}{\centering\baba\\YYRR}}; \node[right=1 of b] (c) {$\times$}; \node[right=1 of c] (d) {\parbox[t]{3\ccwd}{\centering\mama\\yyrr}}; \node[below=1.5 of a] (e) {子一代 F1}; \node[below=1.3 of c] (f) {\parbox[t]{3\ccwd}{\centering\baba\\YyRr}}; \draw[-latex] (c) -- (f); \node[below=2 of e] (g) {子二代 F2}; \node[below=1.5 of f] (h) {}; \draw[-latex] (f) -- (h); \node[left=0.5 of h] (j) {\parbox[t]{3\ccwd}{\centering\banba\banma\\Y*rr}}; \node[left=0.5 of j] (i) {\parbox[t]{3\ccwd}{\centering\baba\\Y*R*}}; \node[right=0.5 of h] (k) {\parbox[t]{3\ccwd}{\centering\bbanma\bbanba\\yyR*}}; \node[right=0.5 of k] (l) {\parbox[t]{3\ccwd}{\centering\mama\\yyrr}}; \end{tikzpicture} \end{document} \end{filecontents*} \begin{document} \end{document}
|
编译环境、方式
编译环境:TEX Live 2020
先用 pdflatex
编译完整代码,得到 figure.tex
和 main.tex
,为了方便编译,写了一个 bat
脚本(命名为 make.bat
)
lualatex figure.tex pdfcrop figure.pdf figure.pdf lualatex main.tex pdfcrop main.pdf main.pdf
|
然后用「以管理员身份运行」(也可能是不必要的)的命令行下运行 make.bat
即可
更换其它的图片
只需要修改 figure.tex
中的 \def\mingzi{face-savoring-food}
即可(找 emoji 去 texdoc emoji
)
效果图
以 face-savoring-food
为例,效果为