
Ist das nur bei mir so oder ist es ein bisschen unlogisch, dass
\documentclass[a4paper]{article}
\begin{document}
\makeatletter
\@ifundefined{chapter}{}{}
\makeatother
\ifdefined\chapter chapter\else no chapter\fi
\end{document}
kehrt zurückKapitel. Im Grunde \@ifundefined
wird also tatsächlich das Makro definiert (und es wird gleich \relax
)
Antwort1
Es ist nicht unlogisch, es isthistorisch. Sie verglichen mit
\ifdefined\chapter chapter\else no chapter\fi
Aber das ist ein E-Tex-Grundelement, das einige Jahre nach der Definition von LaTeX hinzugefügt wurde \@ifundefined
.
Die klassische TeX-Methode zur Definition dieser Definition (für einen CS-Namen, den Sie im Voraus nicht kennen) ist
\expandafter\ifx\csname chapter\endcsname\relax no chapter\else chapter\fi
und dastutDefinieren Sie \chapter
, dass es sich \relax
im „Kein Kapitel“-Fall befindet (und wie \@ifundefined
es definiert wird).
Beachten Sie, dass in LaTex-Versionen ab 2018 die Definition von \@ifundefined
so geändert wurde, dass der getestete Befehl nicht mehr als „be“ definiert wird, \relax
wenn er zuvor nicht definiert war.