Existe a possibilidade de acompanhar onde/quando uma macro está sendo redefinida

Existe a possibilidade de acompanhar onde/quando uma macro está sendo redefinida

Atualmente estou tentando resolver vários bugs para os quais seria conveniente se existisse um sistema em LaTeX onde você pudesse "espionar" uma determinada macro. Estou interessado em saber onde/quando uma macro está sendo redefinida. Idealmente, você poderia dizer \spy\mymacroe isso resultaria

`file.cls -> \newcommand\macro`,
`package.sty -> \renewcommand\macro`

e assim por diante.

Responder1

Você não pode fazer isso: por exemplo, um pacote poderia dizer

\newcommand{\redefinefoo}[1]{\renewcommand{\foo}{#1}}
\providecommand{\foo}{whatever}

e uma redefinição de \foopode ocorrer em qualquer lugar

\redefinefoo{something else}

é emitido, o que pode estar oculto em alguma outra macro.

Redefinir \def, no qual também \renewcommandse baseia, está fora de cogitação, pois quebraria quase tudo.

No entanto, você poderia dizer \tracingassigns=1no seu documento e no arquivo de log que encontraria

{changing \foo=\long macro:->whatever}
{into \foo=\long macro:->something else}

Com base na localização no logarquivo, você poderá adivinhar onde a redefinição está ocorrendo.

informação relacionada