매크로가 재정의되는 위치/시기를 따를 가능성이 있습니까?

매크로가 재정의되는 위치/시기를 따를 가능성이 있습니까?

나는 현재 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재정의가 발생하는 위치를 추측할 수 있습니다.

관련 정보