我创建了一个类文件。它定义了文档文件中使用的命令。我想更改一些命令名称,但我还希望旧文档文件在不更改它们的情况下正常工作。
举个例子来说明一下:
\begin{filecontents}{a.cls}
\ProvidesClass{a}
\LoadClass{scrartcl}
\RequirePackage{scrpage2}
%
\def\commandnameA#1{\def\@commandnameA{#1}}
\commandnameA{}
%
\newpagestyle{a}{{}{}{A:\@commandnameA}}{{}{}{}}
\pagestyle{a}
\end{filecontents}
\documentclass{a}
\begin{document}
\commandnameA{test}
test
\end{document}
对于这个例子,我想在类文件中将“commandnameA”更改为“commandnameB”,并让文档文件工作,无论它是否
\commandnameA{test}
包含\commandnameB{test}
。
任何帮助都将受到赞赏。
答案1
\let\commandnameB\commandnameA
在你的类文件中。那么这两个宏是相同的!
答案2
您可以添加已弃用的警告\commandnameA
:
\def\commandnameB{%
\commandnameA%
\ClassWarning{yourclass}{Command \string\commandnameA\space is deprecated.%
\MessageBreak Use \string\commandnameA\space instead.}%
}
答案3
由于\commandnameA
和/或\commandnameB
期望争论,Tobi 的解决方案应该是
\protected\def\commandnameB{%
\ClassWarning{myclass}{Command `\string\commandnameA' is deprecated.
\MessageBreak Use `\string\commandnameB' instead}%
\commandnameA
}
我已添加,\protected
因为\commandnameB
它不可扩展。