
을 사용하는 \coloneq
것과 같은 연산자를 정의하는 근거는 무엇입니까 ?mathtools.sty
\AtBeginDocument
\AtBeginDocument{
...
\providecommand*\coloneq{\vcentcolon\mathrel{\mkern-1.2mu}\mathrel{-}}
...
}
이러한 명령이 끝에 정의되면 무엇이 중단됩니까 mathtools.sty
? 이 우회로의 이점은 무엇입니까?
방금 문서에서 알았는데
\documentclass{article}
\usepackage{mathtools}
\let\defeq\coloneqq
\begin{document}
$a\defeq b$
\end{document}
\defeq
이것 때문에 정의되지 않은 상태로 유지되며 사용해야 합니다.
\AtBeginDocument{\let\defeq\coloneqq}
대신에.
답변1
어떤 용도로든 마찬가지로\AtBeginDocument
프리앰블 이후까지 실행이 지연됩니다. 이점은 로드된 다른 패키지와의 상호 작용을 평가할 수 있다는 것입니다(이전에또는후에).
를 사용하면 \providecommand
(이유가 무엇이든) 다른 패키지가 이라는 매크로를 생성하더라도 \coloneq
이를 재정의하지 않게 됩니다. 그러나 존재하지 않는 경우 이를 정의합니다.
패키지 작성자로서 당신은 어떤 다른 패키지가 당신의 패키지와 함께 로드될지 모르기 때문에 지연된 정의( 사용 \AtBeginDocument
), \def
s(존재에 관계없이 덮어쓰기) 또는 조건을 사용하여 이를 수용하려고 시도합니다.