LuaTeX と Unicode-math パッケージの組み合わせによる矢印の長さ

LuaTeX と Unicode-math パッケージの組み合わせによる矢印の長さ

unicode-mathおそらくかなり単純な質問ですが、 LuaLaTeX 内でパッケージを使用して、上または下に長い式を書いたときに矢印が伸びるようにすることは可能ですか?

たとえば、パッケージunicode-mathがロードされた次のコードでは、伸びた矢印は生成されず、矢印の上のテキストは矢印自体よりもはるかに長くなります。

% TeX engine: LuaLaTeX   
% TeX Live 2014   
% TeX encoding = UTF-8
\documentclass{minimal}
\usepackage{amsmath,
            unicode-math}

\begin{document}

$a \xrightarrow{b \to \infty} c$

\end{document}

答え1

これは、 がロードされたときunicode-mathに に相当するものを提供する と、(U+23AF HORIZONTAL LINE EXTENSION) のグリフを提供しない Latin Modern Math の両方のバグであると考えられます。関連する質問を参照してください。\std@minusamsmath\harrowextenderなぜfontspecはextarrowsパッケージを壊すのか

あなたの問題に対して、あなたはできることがあります

\documentclass{article}
\usepackage{amsmath,unicode-math}

\makeatletter
\AtBeginDocument{\Umathcharnumdef\std@minus\Umathcodenum`- }% \std@minus is minus
\makeatother

\begin{document}

$a \xrightarrow{b \to \infty} c$

\end{document}

よりよい回避策\harrowextenderとしては、利用可能な場合は以下を使用する必要があります。

\documentclass{article}
\usepackage{amsmath,unicode-math}
%\setmathfont{Asana Math} % if uncommented, \harrowextender would be used

\makeatletter
\AtBeginDocument{%
  \check@mathfonts
  \iffontchar\textfont\tw@\string"23AF
    \renewcommand{\relbar}{\mathrel\harrowextender}%
  \else
    \Umathcharnumdef\std@minus\Umathcodenum`-
  \fi}
\makeatother

\begin{document}

$a \xrightarrow{b \to \infty} c$

\end{document}

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

2 番目のコードは、\check@mathfontsフォントが数式ファミリに関連付けられていることを確認するために を使用します (LaTeX は通常、ドキュメント内で使用できない数式ファミリを使い果たすことを避けるために、最初の数式がタイプセットされるまでこれを実行しません)。

ではunicode-math、 で定義される数式フォントは\setmathfont数式ファミリ 2 に関連付けられているため、 に対応する文字が\harrowextenderフォント内に存在するかどうかを確認します (texdoc etexについては、e-TeX マニュアルを参照してください\iffontchar)。文字が存在する場合は、 をその記号として数式関係として再定義します。存在しない場合は、このコンテキストでが使用する\relbar名前で、マイナス記号を使用します。\std@minusamsmath

コードがないと、 は\std@minus「数式ファミリ 2 の文字 0 を選択」になります。これは、従来の TeX 数式フォントでは正しいのですが、 では正しくありませんunicode-math。そのため、この場合は、\std@minusをマイナス記号と同じコードを持つ数式文字に再定義します (コマンドtexdoc xetexの詳細については、 XeTeX マニュアル を参照してください\Umath...)。

関連情報