
Ich habe vor Kurzem die Schriftart Math Professional II (mtpro2 lite) installiert. Sie funktioniert einwandfrei, nur dass SQRT mit Stammindex Mist ist.
\[ \sqrt[100]{1000000} = 1000 \quad \sqrt[3]{1000000} = 100 \]
\[ \SQRT[100]{1000000} = 1000 \quad \SQRT[3]{1000000}= 100 \]
Ausgabe
Ist das ein Problem der Lite-Version (beabsichtigt oder nicht)? Tritt dieses Problem auch bei der Vollversion auf? Wie kann ich einen neuen Befehl definieren, um die Situation automatisch zu handhaben?
Antwort1
Ich weiß nicht genau, warum das das Problem behebt, aber es scheint so. ;-)
\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}
Das zweite Bild zeigt einfach im gelben Feld, was das ursprüngliche $\SQRT$ macht, und im blauen Feld, was $\SQRTFIX$ macht.
Antwort2
Dank @JPis erstaunlichem Sehvermögen konnte ich den Fehler im mtpro2
Paket genau ausfindig machen. Alle Anerkennung gebührt ihm/ihr.
@JPis Lösungschlägt vor, dassder Versatzraum ist in etwa die Breite des Stammindexes. Ich bestätige, dass dies der Fall ist. Der Stammindex wird in einer Box mit dem Namen platziert \rootbox
. So definiert LaTeX seine Platzierung:
% 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@}
Dies ist die Standardeinstellung, während mtpro2
ähnliche Dinge ausgeführt werden, beispielsweise:
% 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@}
Wenn wir uns auf die Gesamtstrukturen konzentrieren, sehen wir sofort, \R@@T
dasszusätzlichCode von \kern-\wd\rootbox
, der meiner Meinung nach völlig falsch ist. Hier ist also meine Lösung:
\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}
Notiz: \sqrt
und \SQRT
führen konstruktionsbedingt zu leicht unterschiedlichen Ergebnissen (wie im obigen Bild zu sehen).\SQRT
soll verwendet werden fürrichtig großFormeln (daher die umständliche Platzierung des Stammindex).Bitte verzichten Sie auf die Verwendung \SQRT
für kleine Formeln.