\SetMathAlphabet이 \rm을 망쳤습니다.

\SetMathAlphabet이 \rm을 망쳤습니다.

다음과 같은 최소한의 예를 고려하십시오.

\documentclass{article}
\SetMathAlphabet{\mathrm}{normal}{\encodingdefault}{\rmdefault}{m}{n}%

\begin{document}
\parindent0pt
X$\rm -1$\\
X$\rm -1$\\
X$\rm -1$

\end{document}

그 결과 다음 dvi 출력이 생성됩니다(Texlive2019):

컴파일된 MWE의 스크린샷

첫 번째 줄의 빼기 기호는 이항 연산자처럼 간격이 지정되어 있지만 모든 후속 줄에서는 단항 연산자와 같은 이유는 무엇입니까?

(그리고 나는 일반 tex 글꼴 스위치를 사용해서는 안 된다는 것을 알고 있습니다. 이 코드는 핵심 문제를 보여주기 위해 축소되었으며 2008년으로 거슬러 올라가고 이전 버전과 호환되어야 하는 훨씬 더 큰 스타일 시트의 일부입니다. \rm또한, X예제의 s는 간격을 표시하기 위한 것일 뿐이며 에 속하지 않습니다 $-1$.

답변1

다음에서 수정 사항을 추가해 볼 수 있습니다.https://github.com/latex3/latex2e/commit/06692e해결 된www.latex-project.org/cgi-bin/ltxbugs2html?pr=latex/3357

\documentclass{article}
\usepackage{etoolbox}

\makeatletter
\patchcmd\document@select@group{#1{#4}}{\expandafter#1\ifx\math@bgroup\bgroup{#4}\else#4\fi}{}{\fail}
\makeatother

\SetMathAlphabet{\mathrm}{normal}{\encodingdefault}{\rmdefault}{m}{n}%
\begin{document}
\parindent0pt
X$\rm -1$\\
X$\rm -1$\\
X$\rm -1$


\end{document}

관련 정보