\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

Почему в первой строке минус стоит как бинарный оператор, а во всех последующих — как унарный оператор?

(И я знаю, что мне не следует использовать переключатели шрифтов plain tex; этот код сокращен, чтобы показать основную проблему, и является частью гораздо большей таблицы стилей, которая датируется 2008 годом и должна быть обратно совместима, поэтому я не могу опустить \rm. Кроме того, Xs в примере нужны только для того, чтобы показать интервал, они не относятся к $-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}

Связанный контент