Переопределите \prime с помощью unicode-math

Переопределите \prime с помощью unicode-math

Я использую 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}

введите описание изображения здесь

Связанный контент