
Ich versuche derzeit, mehrere Fehler zu beheben, für die es praktisch wäre, wenn es in LaTeX ein System gäbe, mit dem man ein bestimmtes Makro „ausspionieren“ könnte. Mich interessiert, wo/wann ein Makro neu definiert wird. Im Idealfall könnte man sagen, \spy\mymacro
und es würde ausgeben
`file.cls -> \newcommand\macro`,
`package.sty -> \renewcommand\macro`
und so weiter.
Antwort1
Das geht nicht: Ein Paket könnte beispielsweise sagen
\newcommand{\redefinefoo}[1]{\renewcommand{\foo}{#1}}
\providecommand{\foo}{whatever}
und eine Neudefinition von \foo
könnte überall stattfinden
\redefinefoo{something else}
ausgegeben, das selbst in einem anderen Makro verborgen sein könnte.
Eine Neudefinition von \def
, auf der auch \renewcommand
basiert, kommt nicht in Frage, da dadurch fast alles kaputt gehen würde.
Sie könnten jedoch sagen, dass \tracingassigns=1
Sie in Ihrem Dokument und in der Protokolldatei Folgendes finden würden:
{changing \foo=\long macro:->whatever}
{into \foo=\long macro:->something else}
Anhand der Position in der log
Datei können Sie möglicherweise erraten, wo die Neudefinition stattfindet.