根据旧宏重新定义宏

根据旧宏重新定义宏

可能重复:
我可以重新定义一个命令来包含它自己吗?

我如何重新定义使用原始宏的相同宏?

\newcommand{\macro}{zzz}
\renewcommand{\macro}{xyz\macro}

(这会导致无限循环)

调用\macro应该打印 xyzzzz。(我想重新定义一些符号)

答案1

假设宏没有可选参数,您可以使用:

\newcommand{\macro}{zzz}
\let\OldMacro\macro
\renewcommand{\macro}{xyz\OldMacro}

如果你想重新定义一个具有可选参数的宏,你必须\LetLtxMacro使用包裹letltxmacro。 的详细描述\LetLtxMacro可以在这个问题中找到闭平方根符号

下面的 MWE 得出:

在此处输入图片描述

\documentclass{article}

\newcommand{\macro}{zzz}
\let\OldMacro\macro
\renewcommand{\macro}{xyz\OldMacro}

\begin{document}
\verb|\OldMacro:| \OldMacro

\verb|\macro:| \macro
\end{document}

相关内容