我想使用该\char
命令打印一些字符。Unicode 是2b45。我已经尝试过代码\char"2b45
,但它打印了一些非法字符和 b45。带括号的变体也不起作用。有人知道这个吗?我也尝试过其他变体,但它们也打印同样的东西。
答案1
正如 Joseph Wright 和其他人在评论中所说,您需要大写字母\char
,所以\char"2B45
。
还有其他选项。LaTeX 命令\symbol{"2B45}
本质上等同于\char
,并且始终显示当前字体的 #x2B45 位置处的字符。转义序列^^^^2b45
(通过采取小写字母)相当于输入 Unicode 字符 ⭅ (U+2B45)。如果该字符处于活动状态,此表单将触发其代码。
这是一个非常人为的例子,说明如何使用两者来定义一个符号,该符号在数学模式下生成具有正确运算符间距的数学符号,或者在文本模式下生成与当前文本格式匹配的符号。
请注意,第一个参数应该\newunicodechar
是 Unicode 字符本身,并且它应该生成一个命令来选择正确的字体并从中显示符号。
\tracinglostchars=2 % Print a warning if a character is missing.
\documentclass{book}
\usepackage{newunicodechar}
\usepackage{unicode-math} % Or another package with \LLeftarrow, such as stix2
\usepackage[paperwidth=10cm]{geometry} % Solely to format a MWE on TeX.SX
\defaultfontfeatures{Scale=MatchLowercase}
\setmathfont{STIX Two Math}
\newfontfamily\symbolfamily{STIX Two Math}[
BoldFont = *,
BoldFeatures = {FakeBold = 1.05},
SlantedFont = *,
SlantedFeatures = {FakeSlant = 0.25},
BoldSlantedFont = *,
BoldSlantedFeatures = {FakeBold = 1.05, FakeSlant = 0.25}
]
\newunicodechar{^^^^2b45}% ⭅
{\ifmmode\LLeftarrow% In math-mode, use the math symbol
\else{\symbolfamily\symbol{"2B45}}% In text mode, change the font family
\fi}
\begin{document}
The ⭅ symbol can be used in math mode as \(a ⭅ b\). If we had a full font family
containing this glyph, we could write it as \textbf{bold ⭅},
\textsl{slanted ⭅}, or {\bfseries\slshape both ⭅}.
\end{document}
答案2
还有一些词来补充Davislor 的精彩回答。
使用\char
并不是解决这个问题的最佳方式,因为 TeX 会忽略后面的空格字符。另一方面,\symbol
则不会。
尝试一下\char"2B45 is nice
,你会发现没有空间。它会在那里
\symbol{"2B45} is nice
如果你希望始终输入十六进制代码而不关心大小写,你可以定义一个包装器:
\documentclass{article}
\usepackage{fontspec}
\setmainfont{EB Garamond}
\ExplSyntaxOn
\NewExpandableDocumentCommand{\uni}{O{12}m}
{
\char_generate:nn { \int_from_hex:n { #2 } } { #1 }
}
\ExplSyntaxOff
\begin{document}
The character \uni{2b45} is nice and so is \uni{2B46}.
\end{document}
可选参数(默认值为 12)可用于在需要时生成具有不同类别代码的字符。