In meiner LaTeX Vorlage hatte ich Abfragen eingebaut die auf die Existenz von Befehlen als auch der geladenen Klassen prüfen. Davon ausgehend hat mich Markus Kohm darauf hingewiesen dass es grundsätzlich keine gute Idee ist auf die geladene Klasse zu prüfen wenn man nur daran interessiert ist ob eine Anweisung vorhanden ist (in meinem Fall z.B. der Befehl \chapter) oder nicht. Hier ein Beispiel zur Umsetzung der Prüfung auf Existenz der Anweisung \chapter bool Variable definieren
\newboolean{chapteravailable}%
\setboolean{chapteravailable}{false}%
Möglichkeiten zum Testen der Existenz einer Anweisung
  • TeX
    \begingroup\expandafter\expandafter\expandafter\endgroup
    \expandafter\ifx\csname chapter\endcsname\relax
      \setboolean{chapteravailable}{false}%
    \else
      \setboolean{chapteravailable}{true}%
    \fi
  • e-TeX
    % Is \chapter undefined? (needs e-TeX)
    \ifcsname chapter\endcsname
      \setboolean{chapteravailable}{true}%
    \else
      \setboolean{chapteravailable}{false}%
    \fi
  • feature of package scrkbase
    % Is \chapter undefined or relax?
    \RequiresPackage{scrkbase}
    \ifundefined{chapter}{% using a beta feature of KOMA-Script
      \setboolean{chapteravailable}{false}%
    }{
      \setboolean{chapteravailable}{true}%
    }
  • feature of KOMA-Script
    % Is \chapter undefined or relax and define it \relax,
    % if it was undefined
    \@ifundefined{chapter}{% using a beta feature of KOMA-Script
      \setboolean{chapteravailable}{false}%
    }{
      \setboolean{chapteravailable}{true}%
    }
Die entgültige Anweisung zum Test auf \chapter
\providecommand{\IfChapterDefined}[1]{\ifthenelse{\boolean{chapteravailable}}{#1}{}}%
\providecommand{\IfElseChapterDefined}[2]{\ifthenelse{\boolean{chapteravailable}}{#1}{#2}}%