命令名称的向后兼容性

命令名称的向后兼容性

我创建了一个类文件。它定义了文档文件中使用的命令。我想更改一些命令名称,但我还希望旧文档文件在不更改它们的情况下正常工作。

举个例子来说明一下:

\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它不可扩展。

相关内容