
我目前正在嘗試解決幾個錯誤,如果 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
文件中的位置,您也許能夠猜測重新定義發生的位置。