是否有可能跟踪宏被重新定义的位置/时间

是否有可能跟踪宏被重新定义的位置/时间

我目前正在尝试解决几个错误,如果 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文件中的位置,您也许能够猜出重新定义发生的位置。

相关内容