
是只有我這樣還是有點不合邏輯
\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
。
進行該定義的經典 TeX 方法(對於您事先不知道的 csname)是
\expandafter\ifx\csname chapter\endcsname\relax no chapter\else chapter\fi
然後做定義\chapter
為\relax
無章節情況(以及如何\@ifundefined
定義)。
請注意,在 2018 年以後的 LaTex 版本中, 的定義\@ifundefined
已被修改,因此\relax
如果之前未定義,則不再定義測試命令。