为什么数学模式下的 \rm 在某些 tex 编辑器中有效,而在其他 tex 编辑器中无效?

为什么数学模式下的 \rm 在某些 tex 编辑器中有效,而在其他 tex 编辑器中无效?

我刚刚收到.tex同事发来的一个文件,该文件包含几个\rm数学模式命令。我们都在使用 Windows,但他使用的是 WinEdt,而我使用的是 TeXmaker。在他的计算机上,该文件编译时没有错误,但在我的笔记本上却收到错误消息,提示\rm命令未定义。这是怎么回事?

非常感谢。

答案1

\rm在 latex 格式中未定义。一些类定义它是为了与 LaTeX 2.09(即 1993 年之前编写的文档)兼容。Koma 类以前定义它时带有警告,但较新的版本没有定义它,因此如果使用它,您会收到错误。

经过 20 年的贬值,scrartcl作者认为它不再需要了,这并不是无理取闹。

您用来编写文件的编辑器(winedt、texmaker 等)与此完全无关。

答案2

你使用的编辑器并不重要。重要的是scrartcl你使用哪个版本。直到最近(2016 年 6 月),KOMA 脚本文档类 -- scrartclscrreprtscrbook--有点容忍已弃用的字体切换指令\rm\bf\it等,同时在遇到这些指令时发出大量警告消息。然而,在 2016 年 6 月,KOMA-Script 类对这些指令的支持已完全停止。

如果你真的、肯定、绝对必须使用\rm和其他已弃用的字体切换指令,您可以将以下代码(直接从中提取article.cls)添加到您的序言中:

\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}

请注意\sl\sc仅在文本模式下有效,但不是在数学模式下。请参阅这篇文章了解有关此主题的更多信息。


完整的 MWE:

在此处输入图片描述

\documentclass{scrartcl}
% The following code is from the file `article.cls`
\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}

\begin{document}
$a$ $\it a$ $\rm a$ $\bf a$ $\sf a$ $\tt a$ 
\end{document}

相关内容