我正在使用unicode-math
(使用 XeLaTeX)来设置我的文本和数学字体。但是,使用Garamond-math
数学字体时,我发现\prime
符号离字母太近了:
我正在尝试重新定义\prime
命令,如果可能的话,我想'
在数学模式下重新映射,以便它提供正确的间距。但是,“通常”的解决方案是重新定义\prime
,即(MWE)
\documentclass{article}
\usepackage{unicode-math}
\setmathfont{Garamond-Math.otf}[StylisticSet={5,7,9}]
\let\originalprime\prime
\def\prime{\mkern3mu\originalprime\mkern-3}
\begin{document}
$f'(x)$
\end{document}
但这个解决方案似乎在这种情况下不起作用。我也试过了
\usepackage{newunicodechar}
\AtBeginDocument{\newunicodechar{′}{\mkern3mu\prime\mkern-3u}}
但它再次没有效果。
答案1
在unicode-math
命令中\prime
,内部函数被定义,用于f'(x)
处理时。因此重新定义\prime
不会产生任何效果,除非你做明确地使用它。
不幸的是,没有用于修改行为的接口。但以下内容适用于 的当前版本unicode-math
。然而,由于访问私有函数,不能保证在未来版本中保持稳定。
\documentclass{article}
\usepackage{unicode-math}
\setmathfont{Garamond-Math.otf}[StylisticSet={5,7,9}]
\ExplSyntaxOn
\cs_set:Npn \__um_prime_single_mchar { \mkern2mu\Umathchar"0"0"2032\mkern-2mu~}
\cs_set:Npn \__um_prime_double_mchar { \mkern2mu\Umathchar"0"0"2033\mkern-2mu~}
\cs_set:Npn \__um_prime_triple_mchar { \mkern2mu\Umathchar"0"0"2034\mkern-2mu~}
\ExplSyntaxOff
\begin{document}
$f'(x)+f''(x)+f'''(x)$
$g'(x)+g''(x)+g'''(x)$
$h'(x)+h''(x)+h'''(x)$
\end{document}