可能重复:
我可以重新定义一个命令来包含它自己吗?
我如何重新定义使用原始宏的相同宏?
\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}