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

這是預設的,同時也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小配方。

相關內容