Longitud de flecha en LuaTeX en combinación con el paquete unicode-math

Longitud de flecha en LuaTeX en combinación con el paquete unicode-math

Probablemente tengo una pregunta bastante simple: ¿Es posible usar el unicode-mathpaquete 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-mathcargado 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@minuscuándo amsmathse 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 \harrowextendercuando 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}

ingrese la descripción de la imagen aquí

El segundo código se utiliza \check@mathfontspara 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 \setmathfontestá asociada a la familia matemática 2, por lo que comprobamos si el carácter correspondiente a \harrowextenderexiste en la fuente (ver el manual de e-TeX, texdoc etexpara \iffontchar). Si el carácter existe, redefinimos \relbarque sea ese símbolo como relación matemática. De lo contrario, recurrimos al uso de un signo menos, debajo del nombre \std@minusque se utiliza amsmathen este contexto.

Lo que sucede sin el código es que \std@minusse 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@minuspara que sea un carácter matemático que tenga el mismo código que el signo menos (consulte el manual de XeTeX texdoc xetexpara obtener más información sobre \Umath...los comandos).

información relacionada