
나만 그런 건지, 아니면 좀 비논리적인 건지
\documentclass[a4paper]{article}
\begin{document}
\makeatletter
\@ifundefined{chapter}{}{}
\makeatother
\ifdefined\chapter chapter\else no chapter\fi
\end{document}
보고장. 따라서 기본적으로 \@ifundefined
실제로 매크로를 정의하게 됩니다(와 동일하게 만듭니다 \relax
).
답변1
비논리적인 건 아니고요.역사적인. 당신은 다음과 비교했습니다.
\ifdefined\chapter chapter\else no chapter\fi
그러나 이는 LaTeX가 정의된 지 몇 년 후에 추가된 e-tex 기본 요소입니다 \@ifundefined
.
(미리 모르는 csname에 대해) 해당 정의를 만드는 고전적인 TeX 방식은 다음과 같습니다.
\expandafter\ifx\csname chapter\endcsname\relax no chapter\else chapter\fi
그리고 그거하다챕터가 없는 경우 \chapter
로 정의합니다 ( 정의 방법).\relax
\@ifundefined
2018년부터 LaTex 릴리스에서는 정의가 수정되어 이전에 정의되지 않은 경우 \@ifundefined
더 이상 테스트된 명령을 정의하지 않습니다 .\relax