
最近、math professional II フォント (mtpro2 lite) をインストールしました。ルート インデックスの SQRT がダメなこと以外は、問題なく動作します。
\[ \sqrt[100]{1000000} = 1000 \quad \sqrt[3]{1000000} = 100 \]
\[ \SQRT[100]{1000000} = 1000 \quad \SQRT[3]{1000000}= 100 \]
出力
これはライト バージョンの問題ですか (意図的かどうかは関係ありません)? 完全バージョンにもこの問題がありますか? 状況を自動的に処理する新しいコマンドを定義するにはどうすればよいでしょうか?
答え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}
2 番目の画像では、黄色のボックスに元の $\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
少量処方でのご使用はお控えください。