喂食
\documentclass{article}
\pagestyle{empty}
%%% The culprit lines start
\usepackage[math-style=ISO]{unicode-math}
\setmainfont[Ligatures=TeX]{TeX Gyre Termes}
\setsansfont{TeX Gyre Heros}[Scale=0.88]
\setmonofont{TeX Gyre Cursor}
\setmathfont[Ligatures=TeX]{TeX Gyre Termes Math}
%%% The culprit lines end.
\usepackage{etoolbox}
\usepackage{xparse}
\usepackage{xcolor}
\newcommand{\someColor}{blue}
%%%% \myMacro should print the argument in italics. If the argument is moreover some nontrivial text (producing more than just a single symbol), it should be set up as text (with proper spacing and ligatures).
\ExplSyntaxOn
\NewDocumentCommand{\myMacro}{m}{
\ifdefempty{\someColor}{\ifmmode\mathit{#1}\else\textit{#1}\fi}{\ifmmode\mathit{\color{\someColor}#1}\else\textit{\textcolor{\someColor}{#1}}\fi}
}
\ExplSyntaxOff
\begin{document}\noindent
\(\myMacro{a}\)\\
\(\myMacro{alpha}\)\\
\(\myMacro{\alpha}\)\\
\(\myMacro{Finite\_word\_with\_\alpha}\)\\
\myMacro{a}\\
\myMacro{alpha}\\
\myMacro{\(\alpha\)}\\
\myMacro{Finite\_word\_with\_\(\alpha\)}
\end{document}
导致xelatex
如您所见,\mathit{\alpha}
不会按给定的方式打印(但如果删除了与 unicode-math 相关的罪魁祸首行,则会打印)。为什么?\alpha
无论它是独立符号还是斜体数学标识符的一部分,如何将其变为斜体?
答案1
unicode-math
与传统 TeX 相比,数学模式中处理希腊字母的方式存在根本区别。
在旧版 TeX 中,\alpha
是一个“不变”的符号,因为它不受数学字母的影响。有了unicode-math
它,它就不变了。在您的例子中,\alpha
应该从文本斜体字体中获取,该字体没有对应的字形,您会得到
Missing character: There is no
答案2
\alpha 是 U+1D6FC),\mathit 使用文本字体并且没有这个字形,如果你查看日志,你会发现一个缺少的字符消息:
Missing character: There is no
答案3
默认情况下(与 的行为不同amsmath
),unicode-math
在命令的参数中使用文本字体\mathit
。您可以在日志中找到以下错误信息
Missing character: There is no
答案4
该unicode-math
包使用\mathit
、\mathrm
等表示数学模式下的单词,使用\symit
、\symrm
等表示数学符号。因此,如果您使用\mathit{ft}
,您可能会得到与 不同的字距调整\symit{ft}
,甚至是文本连字。当您有两个连续的F数学模式下的符号且无斜体校正:
\tracinglostchars=2 % Warn if a character is missing!
\documentclass{article}
\usepackage{unicode-math}
\pagestyle{empty}
\begin{document}
\begin{gather*}
\mathit{f f l \alpha} \\
\symit{f f l \alpha}
\end{gather*}
\end{document}
该\tracinglostchars=2
命令将向您显示错误消息:
Missing character: There is no