Ich habe eine wahrscheinlich ziemlich einfache Frage: Ist es möglich, das unicode-math
Paket innerhalb von LuaLaTeX so zu verwenden, dass sich die Pfeile strecken, wenn man darüber oder darunter einen längeren Ausdruck schreibt?
Beispielsweise unicode-math
erzeugt 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@minus
wenn amsmath
geladen 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 ( \harrowextender
sofern 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}
Der zweite Code stellt \check@mathfonts
sicher, 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-math
die von definierte mathematische Schriftart \setmathfont
der mathematischen Familie 2 zugeordnet, daher prüfen wir, ob das entsprechende Zeichen \harrowextender
in der Schriftart vorhanden ist (siehe das e-TeX-Handbuch texdoc etex
für \iffontchar
). Wenn das Zeichen vorhanden ist, definieren wir es neu, \relbar
um dieses Symbol als mathematische Beziehung zu sein. Andernfalls verwenden wir ein Minuszeichen unter dem Namen, der in diesem Kontext \std@minus
von 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@minus
dass es ein mathematisches Zeichen mit demselben Code wie das Minuszeichen ist ( texdoc xetex
weitere Informationen zu \Umath...
Befehlen finden Sie im XeTeX-Handbuch, ).