我可以将 \supercite 定义为 \cite 吗?

我可以将 \supercite 定义为 \cite 吗?

我有一个使用 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

相关内容