\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例の はスペースを示すためだけのものであり、 には属していません$-1$。)

答え1

修正を追加してみてくださいコミット:解決した翻訳元: ...

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

関連情報