我刚刚收到.tex
同事发来的一个文件,该文件包含几个\rm
数学模式命令。我们都在使用 Windows,但他使用的是 WinEdt,而我使用的是 TeXmaker。在他的计算机上,该文件编译时没有错误,但在我的笔记本上却收到错误消息,提示\rm
命令未定义。这是怎么回事?
非常感谢。
答案1
\rm
在 latex 格式中未定义。一些类定义它是为了与 LaTeX 2.09(即 1993 年之前编写的文档)兼容。Koma 类以前定义它时带有警告,但较新的版本没有定义它,因此如果使用它,您会收到错误。
经过 20 年的贬值,scrartcl
作者认为它不再需要了,这并不是无理取闹。
您用来编写文件的编辑器(winedt、texmaker 等)与此完全无关。
答案2
你使用的编辑器并不重要。重要的是scrartcl
你使用哪个版本。直到最近(2016 年 6 月),KOMA 脚本文档类 -- scrartcl
、scrreprt
和scrbook
--有点容忍已弃用的字体切换指令\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}