为什么 \mathrm 会出现错误?

为什么 \mathrm 会出现错误?

我正在尝试使用 \mathrm 从等式中删除斜体,如下所示:

\documentclass[a4paper]{article}

\usepackage{gb4e}
\usepackage{amsmath}

\begin{document}

\begin{equation}
  \mathrm{tr}(A)
\end{equation}

\end{document}

但我收到以下错误:

! LaTeX Error: Command \rmfamily invalid in math mode.

我怎样才能删除等式中的斜体?

答案1

gb4e包似乎完全损坏了,我会避免使用它,但定义\new@fontshape(任何东西)至少会阻止它完全破坏数学字体的变化。

\documentclass[a4paper]{article}


\ExpandArgs{c}\newcommand{new@fontshape}{}

\usepackage{gb4e}

\usepackage{amsmath}

\begin{document}

\begin{equation}
  \mathrm{tr}(A)
\end{equation}

\end{document}

运行无错误。

答案2

我们gb4e.sty发现

% For any REALLY old distributions without \rmfamily
\@ifundefined{rmfamily}{\let\rmfamily=\rm \let\bfseries=\bf}

\@ifundefined{new@fontshape}{\def\reset@font{}\let\mathrm\rmfamily\let\mathit\mit}{}

该方法一直有效直到大约 2015 年,当时 LaTeX 的新版本删除了内部命令\new@fontshape

source2e.pdf2011/06/27 我们发现

在此处输入图片描述

这表明在 2010 年软件包最后一次更新时查找\new@fontshape已经是错误的gb4e。它工作了一段时间,但这个错误未被发现,因为显然在今天之前没有人\mathrm一起使用过。gb4e

方法latexrelease

\RequirePackage[2014/01/01]{latexrelease}

不幸的是,只有在amsmath未加载时才有效(因为到该日期为止没有回滚)。

\new@fontshape因此唯一的方法是在加载之前提供一个定义gb4e

\ExpandArgs{c}\providecommand{new@fontshape}{}
\usepackage{gb4e}

向维护者投诉。

顺便说一句,如果您打算将数学与一起使用gb4e,最好提前发出\noautomath\begin{document}否则您可能会遇到其他奇怪的错误。

相关内容