
答案1
不知道為什麼這可以解決問題,但似乎可以。 ;-)
\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}
第二張圖片僅在黃色框中顯示了原始 $\SQRT$ 的作用,在藍色框中顯示了 $\SQRTFIX$ 的作用。
答案2
感謝@JPi 驚人的眼力,我能夠準確地找到mtpro2
包中的錯誤。所有功勞都歸他/她所有。
@JPi的解決方案建議偏移空間在某種程度上是根索引的寬度。我確認情況確實如此。根索引被放置在一個名為 的盒子內\rootbox
。以下是 LaTeX 定義其位置的方式:
% 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@}
這是預設的,同時也mtpro2
做了一些類似的事情,例如:
% 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@}
專注於整體結構,我們立即\R@@T
看到額外的的程式碼\kern-\wd\rootbox
,恕我直言,這是完全錯誤的。所以這是我的修復:
\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}
筆記:\sqrt
和\SQRT
,根據設計,會產生略有不同的結果(如上圖所示)。\SQRT
應該用於真的很大公式(因此根索引的位置很尷尬)。請勿用於\SQRT
小配方。