请考虑以下最小示例:
\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):
为什么第一行中的减号像二元运算符一样间隔开,而所有后续行中的减号却像一元运算符一样间隔开?
(我知道我不应该使用纯文本字体开关;此代码已简化以显示核心问题,并且是可追溯到 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}