自定义类中未定义`\rm`控制序列,但适用于`report`,如何找到问题

自定义类中未定义`\rm`控制序列,但适用于`report`,如何找到问题

我正在使用自定义类,当我使用时,${\rm test}$我收到投诉,说它Undefined control sequence.也不处于文本模式。我尝试搜索文件cls和其他相关链接文件,\rm但我永远找不到它会被删除的位置,实际上,它在类中的用法如下:

\newcommand\@makecopyrightpage{
   \ColumnSave
   \pagenumbering{roman}
   \setcounter{page}{2}
   %\thispagestyle{empty} 
   \thispagestyle{plain}
   \null
   \vfill
   \if@copyright
      \begin{center}
         %\normalsize \rm Copyright \copyright\ \@copyrightyear
         %\ifx\@copyrightyear\@degreeyear\else , \@degreeyear \fi
         %\ by \@author \\
         %\@copyrightinfo
         \normalsize \normalfont \copyright\  \@copyrightyear  \hspace{1pt}
         \@author \\
      \end{center}
   \fi
   \vfill
   \ColumnRestore
}

\rm类中唯一可以找到的其他地方:

\def\ps@headings{\def\@oddfoot{}\def\@evenfoot{}%     No feet.
\def\@oddhead{\hbox {}\slshape \rightmark \hfil \rm\thepage}% Heading.
\def\chaptermark##1{\markright {\uppercase{\ifnum \c@secnumdepth >\m@ne
  \@chapapp\ \thechapter. \ \fi ##1}}}}

% Definition of 'myheadings' page style.
%
\def\ps@myheadings{\def\@oddhead{\hbox{}\slshape\rightmark \hfil \rm\thepage}%
\def\@oddfoot{}\def\@evenhead{\rm \thepage\hfil\slshape\leftmark\hbox {}}%
\def\@evenfoot{}\def\sectionmark##1{}\def\subsectionmark##1{}}

当我切换到时,\documentclass{report}一切正常。我该如何调查它在哪里丢失了?

答案1

LaTeX 中数学中罗马字母的语法$\mathrm{test}$不是${\rm test}$

\rm自 1993 年 LaTeX2e 发布以来,尚未在 LaTeX 中定义。

clsguide就像Latex 附带的编写 Latex 类的指南中描述的一样,你可以\rm通过以下方式定义

\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}

并且report该类确实这样做了,但是这是出于对 20 世纪 80 年代编写的文档的兼容性问题。本世纪编写的任何文档都不应使用,\rm因此对于现在编写的类来说,最好不是定义\rm并假设文档具有正确的标记。这样文档中的错误标记就很容易被发现和纠正。

相关内容