
¿Soy solo yo o es un poco ilógico que
\documentclass[a4paper]{article}
\begin{document}
\makeatletter
\@ifundefined{chapter}{}{}
\makeatother
\ifdefined\chapter chapter\else no chapter\fi
\end{document}
devolucionescapítulo. Básicamente \@ifundefined
, termina definiendo la macro (haciéndola igual a \relax
)
Respuesta1
No es ilógico, lo es.histórico. te comparaste con
\ifdefined\chapter chapter\else no chapter\fi
Pero esa es una primitiva de e-tex agregada algunos años después de que se definiera LaTeX \@ifundefined
.
La forma clásica de TeX de hacer esa definición (para un nombre cs que no conoce de antemano) es
\expandafter\ifx\csname chapter\endcsname\relax no chapter\else chapter\fi
y esohacedefina \chapter
estar \relax
en el caso sin capítulo (y así es como \@ifundefined
se define).
Tenga en cuenta que en las versiones de LaTex a partir de 2018, la definición de \@ifundefined
se modificó para que ya no defina el comando probado como \relax
si no estuviera definido anteriormente.