Gibt es eine Möglichkeit zu verfolgen, wo/wann ein Makro neu definiert wird?

Gibt es eine Möglichkeit zu verfolgen, wo/wann ein Makro neu definiert wird?

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\mymacround 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 \fookönnte überall stattfinden

\redefinefoo{something else}

ausgegeben, das selbst in einem anderen Makro verborgen sein könnte.

Eine Neudefinition von \def, auf der auch \renewcommandbasiert, kommt nicht in Frage, da dadurch fast alles kaputt gehen würde.

Sie könnten jedoch sagen, dass \tracingassigns=1Sie 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 logDatei können Sie möglicherweise erraten, wo die Neudefinition stattfindet.

verwandte Informationen