我正在编写一个宏来输出 Unicode 代码点U+1F642
答案1
\char
是一个 TeX 原语,以 a 为参数<number>
,没有需要使用括号作为参数的分隔符。
LaTeX 提供了\symbol
它的包装器。
\newcommand{\unicode}[2]{%
\texttt{U+#1} \symbol{"#1} \texttt{#2}%
}
应该\char
\newcommand{\unicode}[2]{%
\texttt{U+#1} \char"#1\space\space\texttt{#2}%
}
(第一个\space
被吞噬作为<number>
终结者,第二个被排版)。
最小示例:
\documentclass{article}
\usepackage{fontspec}
\setmainfont{CMU Serif}
\newcommand{\unicode}[2]{%
\texttt{U+#1} \symbol{"#1} \texttt{#2}%
}
\begin{document}
\unicode{0180}{LATIN SMALL LETTER B WITH STROKE}
\unicode{04AF}{CYRILLIC SMALL LETTER STRAIGHT U}
\end{document}
但是,如果您希望为某些字符指定不同的字体,则定义如下。请注意参数的顺序。
\documentclass{article}
\usepackage{fontspec}
\setmainfont{CMU Serif}
\newfontfamily{\djvusans}{DejaVu Sans}
\newcommand{\unicode}[3][]{%
\texttt{U+#2} {#1\symbol{"#2}} \texttt{#3}%
}
\begin{document}
\unicode{0180}{LATIN SMALL LETTER B WITH STROKE}
\unicode{04AF}{CYRILLIC SMALL LETTER STRAIGHT U}
\unicode[\djvusans]{1F0CA}{PLAYING CARD TEN OF DIAMONDS}
\end{document}
如果您希望可选参数放在最后(但我不推荐这样做),您可以使用\NewDocumentCommand
由 提供的,xparse
它由 加载fontspec
。
\documentclass{article}
\usepackage{fontspec}
\setmainfont{CMU Serif}
\newfontfamily{\djvusans}{DejaVu Sans}
\NewDocumentCommand{\unicode}{mmO{}}{%
\texttt{U+#1} {#3\symbol{"#1}} \texttt{#2}%
}
\begin{document}
\unicode{0180}{LATIN SMALL LETTER B WITH STROKE}
\unicode{04AF}{CYRILLIC SMALL LETTER STRAIGHT U}
\unicode{1F0CA}{PLAYING CARD TEN OF DIAMONDS}[\djvusans]
\end{document}