Pfeillänge in LuaTeX in Kombination mit dem Unicode-Math-Paket

Pfeillänge in LuaTeX in Kombination mit dem Unicode-Math-Paket

Ich habe eine wahrscheinlich ziemlich einfache Frage: Ist es möglich, das unicode-mathPaket innerhalb von LuaLaTeX so zu verwenden, dass sich die Pfeile strecken, wenn man darüber oder darunter einen längeren Ausdruck schreibt?

Beispielsweise unicode-matherzeugt der folgende Code mit geladenem Paket keine gestreckten Pfeile und der Text über dem Pfeil ist viel länger als der Pfeil selbst:

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

Antwort1

Ich würde dies als Fehler sowohl in betrachten unicode-math, das ein gutes Äquivalent von liefern sollte, \std@minuswenn amsmathgeladen wird, als auch in der modernen lateinischen Mathematik, die kein Glyph für \harrowextender(U+23AF HORIZONTAL LINE EXTENSION) bereitstellt. Siehe die zugehörige FrageWarum Fontspec das Extarrows-Paket beschädigt

Für Ihr Problem können Sie

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

Als bessere Problemumgehung sollten Sie ( \harrowextendersofern verfügbar) Folgendes verwenden:

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

Bildbeschreibung hier eingeben

Der zweite Code stellt \check@mathfontssicher, dass den mathematischen Familien Schriftarten zugeordnet werden (LaTeX tut dies normalerweise erst, wenn die erste Formel gesetzt wird, um die Verwendung mathematischer Familien zu vermeiden, die im Dokument nicht ungenutzt bleiben können).

Mit wird unicode-mathdie von definierte mathematische Schriftart \setmathfontder mathematischen Familie 2 zugeordnet, daher prüfen wir, ob das entsprechende Zeichen \harrowextenderin der Schriftart vorhanden ist (siehe das e-TeX-Handbuch texdoc etexfür \iffontchar). Wenn das Zeichen vorhanden ist, definieren wir es neu, \relbarum dieses Symbol als mathematische Beziehung zu sein. Andernfalls verwenden wir ein Minuszeichen unter dem Namen, der in diesem Kontext \std@minusvon verwendet wird .amsmath

Ohne den Code wird daraus \std@minus„Wähle Zeichen 0 in der Mathematikfamilie 2“, was für die traditionellen TeX-Mathematikschriften richtig ist, aber für nicht mehr zutrifft unicode-math. In diesem Fall definieren wir also neu, \std@minusdass es ein mathematisches Zeichen mit demselben Code wie das Minuszeichen ist ( texdoc xetexweitere Informationen zu \Umath...Befehlen finden Sie im XeTeX-Handbuch, ).

verwandte Informationen