我有一个使用 supercite 的文档,它运行良好,但我现在使用一组不同的软件包,cite 运行得更好。因此,我不必更改它们,有没有办法可以定义\supercite
为\cite
?
答案1
重申并扩展我的评论作为答案(根据约瑟夫赖特的要求):
将一个现有命令替换为另一个现有命令的一般方法是使用\let
。在当前情况下,将采用以下语法
\let\supercite\cite
为了进行调用,请\supercite
使用 的代码副本\cite
。需要注意的是\let
会复制 代码,这样,如果您稍后在代码中重新分配\cite
,则分配的\supercite
仍将包含原始\cite
代码的副本。
必须注意两个命令的参数结构是否兼容。如果不兼容,您至少会失去一些功能,或者最坏的情况是破坏现有代码。(我不熟悉\supercite
,但本网站上引用该命令的几个问题似乎表明参数列表与兼容\cite
。)
人们经常做的另一件事是在重新分配命令之前保存命令的副本,例如
\let\savesupercite\supercite
\let\supercite\cite
这样,如果您稍后在文档中需要重新调用未改变的代码,或者需要重新分配它,则\supercite
可以使用该原始代码。\savesupercite
下面是一个 MWE,展示了\let
在这种情况下如何重新分配事物:
\documentclass{article}
\parindent 0ex
\parskip 1ex
\begin{document}
\def\cite{CITE}
\def\supercite{SUPERCITE}
\let\savesupercite\supercite
\let\supercite\cite
Upon reassignment, \verb|\supercite| calls upon \supercite
whereas \verb|\savesupercite| can be used to recover the original
\savesupercite{} code.
\def\cite{XXX}
Even if I reassign \verb|\cite| to \cite, the reassigned
\verb|\supercite| still contains a copy of the original \supercite{} code.
\end{document}
综上所述,您的问题表明,重新分配\supercite
到使用\cite
是为了避免在特别长的文档中键入/删除,而不是作为您希望在一般用途中采用的编码替换。在这种情况下,使用文本编辑器的搜索和替换功能应该允许将调用从更改为,而\supercite
无需\cite
重新分配任何命令。这样做有助于避免代码读者产生混淆,因为它将使读者立即明白您实际上使用的是\cite
而不是\supercite
。