使用 unicode-math 重新定义 \prime

使用 unicode-math 重新定义 \prime

我正在使用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}

在此处输入图片描述

相关内容