
В настоящее время я пытаюсь решить несколько ошибок, для которых было бы удобно, если бы существовала система в 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
файле вы можете догадаться, где происходит переопределение.