\SetMathAlphabet mexe com \rm

\SetMathAlphabet mexe com \rm

Considere o seguinte exemplo mínimo:

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

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

\end{document}

o que resulta na seguinte saída dvi (Texlive2019):

captura de tela do MWE compilado

Por que o sinal de menos na primeira linha é espaçado como um operador binário, mas como um operador unário em todas as linhas subsequentes?

(E eu sei que não devo usar opções de fonte tex simples; esse código é reduzido para mostrar o problema principal e faz parte de uma folha de estilos muito maior que remonta a 2008 e deve ser compatível com versões anteriores, para que eu possa ' omitir o \rm. Além disso, o Xs no exemplo serve apenas para mostrar o espaçamento, ele não pertence ao $-1$).

Responder1

Você pode tentar adicionar a correção dehttps://github.com/latex3/latex2e/commit/06692eque resolveuwww.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}

informação relacionada