有现成的文件用于准备 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.sty
。remreset
现已被宣布为过时。
\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