mtpro2 根索引的 SQRT 影响后续间距

mtpro2 根索引的 SQRT 影响后续间距

我最近安装了 math professional II 字体 (mtpro2 lite)。除了带根索引的 SQRT 很差劲之外,它运行良好。

\[ \sqrt[100]{1000000} = 1000 \quad \sqrt[3]{1000000} = 100 \]

\[ \SQRT[100]{1000000} = 1000 \quad \SQRT[3]{1000000}= 100 \]

输出

mtpro2sqrt

这是精简版的问题吗(有意或无意)?完整版也有这个问题吗?我该如何定义一个新命令来自动处理这种情况?

答案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@}

这是默认设置,而 while 则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小配方。

相关内容