
Recientemente instalé la fuente Math Professional II (mtpro2 lite). Funciona bien excepto que el SQRT con índice raíz apesta.
\[ \sqrt[100]{1000000} = 1000 \quad \sqrt[3]{1000000} = 100 \]
\[ \SQRT[100]{1000000} = 1000 \quad \SQRT[3]{1000000}= 100 \]
Producción
¿Es esto un problema de la versión lite (intencionada o no)? ¿La versión completa también tiene este problema? ¿Cómo puedo definir un nuevo comando para manejar la situación automáticamente?
Respuesta1
No sé exactamente por qué esto soluciona el problema, pero parece que sí. ;-)
\documentclass{article}
\usepackage{mtpro2}
\usepackage{mathtools}
\newcommand{\SQRTFIX}[2][ ]{{\hphantom{\scriptscriptstyle{#1}}}\SQRT[\mathllap{#1}]{#2}}
\begin{document}
\[ \sqrt[100]{1000000} = 1000 \quad \sqrt[3]{1000000} = 100 \]
\[
\SQRT[100]{1000000} = 1000 \quad \SQRT[3]{1000000} = 100
\]
\[
\SQRTFIX[100]{1000000} =1000 \quad \SQRTFIX[3]{1000000} = 100
\]
\end{document}
La segunda imagen simplemente muestra en el cuadro amarillo lo que hace el $\SQRT$ original y en el cuadro azul lo que hace $\SQRTFIX$.
Respuesta2
Gracias a la increíble vista de @JPi, pude localizar exactamente el error en el mtpro2
paquete. Todos los créditos son para él/ella.
La solución de @JPisugiere queel espacio de compensación es de alguna manera el ancho del índice raíz. Confirmo que este es el caso. El índice raíz se coloca dentro de un cuadro llamado \rootbox
. Así es como LaTeX define su ubicación:
% From ltmath.dtx:
\def\r@@t#1#2{%
\setbox\z@\hbox{$\m@th#1\sqrtsign{#2}$}%
\dimen@\ht\z@ \advance\dimen@-\dp\z@
\mkern5mu\raise.6\dimen@\copy\rootbox
\mkern-10mu\box\z@}
que es el valor predeterminado, mientras que mtpro2
hace algunas cosas similares como:
% From mtpro2.dtx or mtpro2.sty
\def\R@@T#1#2{\setbox\z@\hbox{$\UPROOT@\z@\LEFTROOT@\z@\m@th#1\SQR@@T{#2}$}%
\dimen@\ht\z@\advance\dimen@-\dp\z@
\dimen@ii\dimen@
\setbox\tw@\hbox{$\m@th#1\mskip\UPROOT@ mu$}\advance\dimen@ii by1.667\wd\tw@
\setbox\tw@\hbox{$\m@th#1\mskip10mu$}%
\ifcase\SQcount@\advance\dimen@3\wd\tw@\or\advance\[email protected]\wd\tw@\or
\advance\dimen@\wd\tw@\fi
\mkern1mu\kern.13\dimen@\mkern-\LEFTROOT@ mu
\raise.5\dimen@ii\copy\rootbox % was .44
\mkern-1mu\kern-.13\dimen@\mkern\LEFTROOT@ mu\box\z@\kern-\wd\rootbox
\LEFTROOT\z@\UPROOT\z@}
Centrándonos en las estructuras generales, vemos inmediatamente que \R@@T
haadicionalcódigo de \kern-\wd\rootbox
, que en mi humilde opinión está completamente equivocado. Así que aquí está mi solución:
\documentclass{article}
\usepackage{newtxtext}
\usepackage{mtpro2}% lite or complete, does not matter here
\usepackage{etoolbox}
\makeatletter
\patchcmd\R@@T
{\kern-\wd\rootbox} % search this within \R@@T
{} % replace it with nothing
{}{}
\makeatother
\begin{document}
\[ \sqrt[100]{1000000} = 1000 \quad \sqrt[3]{1000000} = 100 \]
\[ \SQRT[100]{1000000} = 1000 \quad \SQRT[3]{1000000} = 100 \]
\end{document}
Nota: \sqrt
y \SQRT
, por diseño, producirán resultados ligeramente diferentes (como se ve en la imagen de arriba). \SQRT
se supone que debe usarse pararealmente grandefórmulas (de ahí la incómoda ubicación del índice raíz).Absténgase de utilizarlo \SQRT
para fórmulas pequeñas.