Probablemente tengo una pregunta bastante simple: ¿Es posible usar el unicode-math
paquete dentro de LuaLaTeX de manera que las flechas se estiren al escribir alguna expresión más larga encima o debajo?
Por ejemplo, el siguiente código con el paquete unicode-math
cargado no produce flechas alargadas y el texto sobre la flecha es mucho más largo que la propia flecha:
% 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}
Respuesta1
Consideraría que esto es un error tanto en unicode-math
, que debería proporcionar un buen equivalente de \std@minus
cuándo amsmath
se carga como en Latin Modern Math, que no proporciona un glifo para \harrowextender
(U+23AF EXTENSIÓN DE LÍNEA HORIZONTAL). Ver la pregunta relacionada¿Por qué fontspec rompe el paquete extarrows?
Para tu problema, puedes hacer
\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}
Se debería utilizar una mejor solución alternativa \harrowextender
cuando esté disponible:
\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}
El segundo código se utiliza \check@mathfonts
para garantizar que las fuentes estén asociadas a las familias matemáticas (LaTeX normalmente no hace esto hasta que se escribe la primera fórmula para evitar el uso de familias matemáticas que no se pueden usar en el documento).
Con unicode-math
, la fuente matemática definida por \setmathfont
está asociada a la familia matemática 2, por lo que comprobamos si el carácter correspondiente a \harrowextender
existe en la fuente (ver el manual de e-TeX, texdoc etex
para \iffontchar
). Si el carácter existe, redefinimos \relbar
que sea ese símbolo como relación matemática. De lo contrario, recurrimos al uso de un signo menos, debajo del nombre \std@minus
que se utiliza amsmath
en este contexto.
Lo que sucede sin el código es que \std@minus
se convierte en "elija el carácter 0 en la familia matemática 2", lo cual es correcto para las fuentes matemáticas tradicionales TeX, pero ya no es cierto para unicode-math
. Entonces, en este caso lo redefinimos \std@minus
para que sea un carácter matemático que tenga el mismo código que el signo menos (consulte el manual de XeTeX texdoc xetex
para obtener más información sobre \Umath...
los comandos).