我目前正在尝试解决几个错误,如果 LaTeX 中有一个系统可以“监视”某个宏,那将非常方便。我对重新定义宏的位置/时间感兴趣。理想情况下,您可以说,\spy\mymacro
它会输出
`file.cls -> \newcommand\macro`,
`package.sty -> \renewcommand\macro`
等等。
答案1
你不能这样做:例如一个包可以说
\newcommand{\redefinefoo}[1]{\renewcommand{\foo}{#1}}
\providecommand{\foo}{whatever}
\foo
任何地方都会重新定义权力
\redefinefoo{something else}
已发出,但它本身可能隐藏在其他宏中。
重新定义\def
也\renewcommand
基于此,这是不可能的,因为它会破坏几乎所有的东西。
但是,你可以\tracingassigns=1
在文档和日志文件中找到
{changing \foo=\long macro:->whatever}
{into \foo=\long macro:->something else}
根据log
文件中的位置,您也许能够猜出重新定义发生的位置。