
최근에 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}
두 번째 이미지는 원본 $\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
IMHO가 완전히 잘못된 코드 입니다. 그래서 내 수정 사항은 다음과 같습니다.
\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
작은 수식에는 사용을 자제해 주세요 .