\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}

ここに画像の説明を入力してください

関連情報