
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\mymacro
e 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 \foo
pode ocorrer em qualquer lugar
\redefinefoo{something else}
é emitido, o que pode estar oculto em alguma outra macro.
Redefinir \def
, no qual também \renewcommand
se baseia, está fora de cogitação, pois quebraria quase tudo.
No entanto, você poderia dizer \tracingassigns=1
no 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 log
arquivo, você poderá adivinhar onde a redefinição está ocorrendo.