! LaTeX 错误:命令 \removefromreset 已定义

! LaTeX 错误:命令 \removefromreset 已定义

有现成的文件用于准备 Latex 文档。我使用了 .cls 模板文件,它有以下代码:

\newcommand{\@removefromreset}[2]{{%
  \expandafter\let\csname c@#1\endcsname\@removefromreset
  \def\@elt##1{%
    \expandafter\ifx\csname c@##1\endcsname\@removefromreset
    \else
      \noexpand\@elt{##1}%
    \fi}%
  \expandafter\xdef\csname cl@#2\endcsname{%
    \csname cl@#2\endcsname}}}

但是,当我运行我的 .tex 文件时,出现错误“!LaTeX 错误:命令 \removefromreset 已经定义”

能否请你帮忙?

答案1

自 2018/04/01 发布 LaTeX 以来,该\@removefromreset命令已成为 LaTeX 内核的一部分。

D. Carlisle 的代码在remreset.sty(其作者是 D. Carlisle)中,并已纳入内核。自 2018/04/01 以来的任何较新版本的 LaTeX 必定会与从 复制过来的代码发生冲突remreset.styremreset现已被宣布为过时。

\newcommand{\@removefromreset}...消除错误的唯一方法是从类文件中删除。

remreset也不鼓励加载:(来自remreset.sty):

%... header omitted here

% \LoadClass{book}
% \@removefromreset{footnote}{chapter}

% 2018: package obsoleted as the command is defined in the LaTeX format.

\@ifundefined{@removefromreset}{%
\def\@removefromreset#1#2{{%
  \expandafter\let\csname c@#1\endcsname\@removefromreset
  \def\@elt##1{%
    \expandafter\ifx\csname c@##1\endcsname\@removefromreset
    \else
      \noexpand\@elt{##1}%
    \fi}%
  \expandafter\xdef\csname cl@#2\endcsname{%
    \csname cl@#2\endcsname}}}%
}{%
\PackageWarningNoLine{remreset}
    {The remreset package is obsolete:\MessageBreak
     \noexpand\@removefomresset is defined}%
}

答案2

如果您有权访问您的.cls并且可以更改内容,请删除或注释掉 的“新”定义\@removefromreset。如果您无权访问,则可以\@removefromreset在加载类之前捕获 的原始定义,然后在之后恢复它:

\makeatletter
\let\old@removefromreset\@removefromreset % Store \@removefromreset
\let\@removefromreset\relax
\makeatother

\documentclass{<your-class>} % Load your document class

\makeatletter
\let\@removefromreset\old@removefromreset % Restore \@removefromreset
\makeatother

相关内容