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