Error "Undefined control sequence. \chapter"

Editoren wie TexWorks, TeXmaker, TeXstudio, TeXnicCenter, Kile, LyX, vi, Emacs und Co.


BleenPaper
Forum-Newbie
Forum-Newbie
Beiträge: 6
Registriert: Sa 27. Aug 2022, 10:33

Error "Undefined control sequence. \chapter"

Beitrag von BleenPaper »

Hallo zusammen!

Ich bin neu bei LaTeX und fange gerade an, meine Bachelorarbeit zu schreiben. In den letzten Tagen hatte ich ein wirklich schwieriges Problem, das ich mit allen Mitteln lösen wollte, aber nichts hat funktioniert. Ich habe versucht, MikTeX mit TexMaker/TexStudio und TexLive mit TexWorks zu verwenden. Ich habe kein passendes Forum gefunden, hoffe aber, dass das hier in Ordnung ist. Ich weiß wirklich nicht viel über LaTeX, daher ist jeder Ratschlag wahrscheinlich hilfreich für mich.

Der Kern meines Problems: Immer wenn ich eine Datei, die den Befehl chapter verwendet, in meine main.tex (aus einer großen Vorlage) einfüge, lässt sich das Projekt nicht kompilieren und bleibt im Prozess stecken. Wenn ich die main.tex auf ein minimales Beispiel reduziere (mit der documentclass articel anstelle der Vorlage), lässt es sich nicht kompilieren und produziert den Fehler "Undefined control sequence. \chapter". Wenn ich den Mauszeiger über den rot markierten Befehl (in TexStudio) bewege, wird "unrecognized command" angezeigt.
\documentclass{article}

% Beginn des Dokuments -----------------------------------------
\begin{document}
	
% Chapters -------------------------------------------------------
\chapter{test}
Dies ist ein Testkapitel.

% Ende des Dokuments -------------------------------------------
\end{document}
Hat jemand eine Idee, was das Problem sein könnte und kann mir helfen? Das würde mir wirklich sehr sehr sehr weiterhelfen! Danke euch!

(Edit: Hatte übersehen, dass das ein deutsches Forum ist :'D)

ich meine ja nur

Re: Error "Undefined control sequence. \chapter"

Beitrag von ich meine ja nur »

First of all: This is a German LaTeX forum. So you should ask questions in German. For an international forum in English see, e.g., our partner forum LaTeX.org.

Class article does not provide command \chapter. Either start with \section or use another class, like report, book, scrreprt, scrbook or many more report or book classes. I also suggest to read a complete LaTeX introduction. It would give you a lot of basic information and would a void lots of typical beginner mistakes.

Die Klasse article bietet keinen Befehl [tt}\chapter[/tt]. Du solltest daher entweder mit \section beginnen oder eine andere Klasse wie report, book, scrreprt, scrbook oder eine der vielen weiteren Bericht- oder Buchklassen verwenden. Ich empfehle außerdem das Studium einer vollständigen LaTeX-Einführung. Eine solche vermittelt ein gewisses Grundverständnis und hilf unzählige Angängerfehler zu vermeiden.

ich meine ja nur

Re: Error "Undefined control sequence. \chapter"

Beitrag von ich meine ja nur »

PS: Das ist übrigens kein Editor-Problem, sondern ein allgemeines LaTeX-Problem. Wann immer ein Fehler während des LaTeX-Laufs gemeldet wird, ist das Problem nicht vom Editor abhängig. Ausnahme ist: Wenn bereits der Aufruf von LaTeX selbst schief geht, selbiges aber in der Konsole bzw. im Terminal bzw. in der Eingabeaufforderung oder der Powershell funktioniert.

BleenPaper
Forum-Newbie
Forum-Newbie
Beiträge: 6
Registriert: Sa 27. Aug 2022, 10:33

Re: Error "Undefined control sequence. \chapter"

Beitrag von BleenPaper »

Danke für die wirklich schnelle Antwort und sorry für die Anfängerfehler :') - da werde ich mir definitv mal ein paar Tutorials reinziehen müssen.

Nichtsdestotrotz besteht das Problem tatsächlich, das Template erbt (?) von scrreport ("\LoadClass{scrreprt}[2015/10/03]") und hängt beim Compilieren von eingebundenen Kapiteln, die "\chapter" beinhalten. Das hängen tritt nicht auf, wenn ich in den .tex Dateien das "\chapter" durch "\section" ersetze :(.

ich meine ja nur

Re: Error "Undefined control sequence. \chapter"

Beitrag von ich meine ja nur »

BleenPaper hat geschrieben:
Sa 27. Aug 2022, 11:27
Nichtsdestotrotz besteht das Problem tatsächlich, das Template erbt (?) von scrreport ("\LoadClass{scrreprt}[2015/10/03]") und hängt beim Compilieren von eingebundenen Kapiteln, die "\chapter" beinhalten.
Das passt aber nicht zu deinem obigen Beispiel. Dort wird keine Klasse verwendet, die auf scrreprt basiert, sondern article.

Ohne tatsächliches vollständiges Minimalbeispiel, mit dem wir das Problem reproduzieren können, könne wir dir nicht sagen, was da schief läuft. Wir können dir aber sagen, dass leider sehr viele Templates, die man im Internet findet oder die an Universitäten verteilt werden, total veraltet und schlecht gemacht sind. Für einen besseren Einstieg → Wie eine Dokumentvorlage auf Basis von KOMA-Script aussehen könnte oder How to make a document template based on KOMA-Script.

BleenPaper
Forum-Newbie
Forum-Newbie
Beiträge: 6
Registriert: Sa 27. Aug 2022, 10:33

Re: Error "Undefined control sequence. \chapter"

Beitrag von BleenPaper »

Das stimmt, mein Minimalbeispiel war nicht korrekt bzw. nicht vergleichbar mit meinem tatsächlichen Problem - das war mein Fehler. Das Beispiel müsste auf dem scrreport basieren, damit tritt aber kein Fehler auf und alles kompiliert korrekt.

Das das Template scheint wirklich nicht auf dem aktuellsten Stand zu sein, letztes Update ist ca. zwei Jahre her. Ich habe leider nicht die Zeit und Lust das zu überarbeiten, wenn es nicht unbedingt notwendig ist :').

Ich konnte das Problem zum Glück inzwischen durch stückweises löschen der Template Klasse auf einen Codeabschnitt eingrenzen. Wenn ich den folgenden Abschnitt lösche, kompilieren alle Dateien problemlos.
% Configuration of the Chapter Headings --------------------------
% Disable dots after section numbers
\KOMAoptions{numbers=nodotatend}
% Add one additional line over chapters saying "Chapter #"
\KOMAoptions{chapterprefix=true}
% Changes the chapter mark in the header to "Chapter #:" instead of
% "Chapter #"
\renewcommand*{\chaptermarkformat}{%
   \chapapp\nobreakspace\thechapter:\enskip%
}
% Create Chapter Headings separated by a line
\renewcommand{\chapterlineswithprefixformat}[3]{%
   % if the chapter is unnumbered (prefix is empty)
   \ifthenelse{\equal{#2}{}}%
   % then only show the title text
   {#3}%
   % else if chapter is numbered
   {%
      % set numeration in uppercase letters right-aligned
      {\raggedleft \MakeUppercase{#2}}\nobreak
      % create a line spanning the whole page
      \rule[.5\baselineskip]{\textwidth}{0.4pt}\\*
      % insert the title text
      #3
   }%
}
Ich kann damit aktuell nicht viel anfangen - kannst du anhand dessen erkennen, warum der "\chapter" command nicht funktioniert? Wenn du die Zeit hast freue ich mich über eine kurze Erklärung, sonst werde ich mich auch mal oberflächlich in die Klassenerstellung einarbeiten und versuchen das zu verstehen :].

Danke dir auf jeden Fall - es hat mir schonmal geholfen zu wissen, woran es alles nicht liegt!

BleenPaper
Forum-Newbie
Forum-Newbie
Beiträge: 6
Registriert: Sa 27. Aug 2022, 10:33

Re: Error "Undefined control sequence. \chapter"

Beitrag von BleenPaper »

Wenn ich später Zeit finde schreibe ich vielleicht mal ein wirkliches Minimalbeispiel, bei welchem du oder andere das reproduzieren könnt.

ich meine ja nur

Re: Error "Undefined control sequence. \chapter"

Beitrag von ich meine ja nur »

Das Problem ist das \MakeUppercase, das bei aktuellen LaTeX anders definiert ist als früher und deshalb an der Stelle nicht (mehr) funktioniert. Funktionieren dürfte (mangels Minimalbeispiel ungetestet):
\renewcommand*{\chapterformat}{\MakeUppercase{\chapapp~\thechapter\autodot}}
\renewcommand{\chapterlineswithprefixformat}[3]{%
   % if the chapter is unnumbered (prefix is empty)
   \IfArgIsEmpty{#1}%
   {#3}% then only show the title text
   { % else if chapter is numbered
      % set numeration right-aligned
      {\raggedleft #2\par}\nobreak
      % create a line spanning the whole page
      \raggedchapter\noindent
      \rule[.5\baselineskip]{\textwidth}{0.4pt}\par\nobreak
      % insert the title text
      #3
   }%
}
Ich würde das mit dem \MakeUppercase aber vermeiden. Automatischer Versalsatz ist eigentlich fast immer schlecht. Siehe auch: Tschicholds Hauptregeln der Typografie.

Ich glaube, der KOMA-Script-Autor hat ganz ähnliche Stile auch im KOMA-Script Wiki. Schau ggf. lieber dort.

BleenPaper
Forum-Newbie
Forum-Newbie
Beiträge: 6
Registriert: Sa 27. Aug 2022, 10:33

Re: Error "Undefined control sequence. \chapter"

Beitrag von BleenPaper »

Soweit kann die Klasse mit deinem Ersatzcode genutzt werden, es treten keine Fehler auf.

Habe mal ein Minimalbeispiel gebaut, das hoffentlich minimal genug ist ^^. Beim Ausprobieren muss einer der beiden Abschnitte OLD und NEW gelöscht werden. Wenn OLD stehen bleibt, kann das PDF nicht gebaut werden und steckt während des Bauvorgangs fest. Wenn NEW (der Code von dir) stehen bleibt, baut das PDF. Ich hoffe, das ist bei dir reproduzierbar - wenn nicht würde ich es so stehen lassen und bin froh, dass soweit alles läuft :).
Dateianhänge
fooClass.zip
(978 Bytes) 105-mal heruntergeladen

ich meine ja nur

Re: Error "Undefined control sequence. \chapter"

Beitrag von ich meine ja nur »

Minimalbeispiele als Anhang sind suboptimal, weil sie nicht direkt im Online-Editor/Compiler verarbeitet werden können. Außerdem ist das Beispiel nicht ohne Änderung lauffähig, weil ein Kommentar ohne % am Zeilenanfang daher kommt. Der OLD-Teil ist ohnehin nicht funktionsfähig, weil er ein Paket verwendet, das nicht geladen wird. Hier zur Demonstration einmal, wie das gleiche als echtes Minimalbeispiel (verlinkte Anleitung beachten!) realisierbar wäre:
% First we generate the class from within the minimal working example
% using the filecontents environment as explained in
% <https://texwelt.de/fragen/569>.
\begin{filecontents}[force]{test-class.cls}
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{fooClass}[]
\LoadClass{scrreprt}[]
\KOMAoptions{chapterprefix=true}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Changes the chapter mark in the header to "Chapter #:" instead
% of "Chapter #":
\renewcommand*{\chaptermarkformat}{\chapapp\nobreakspace\thechapter:\enskip}

% Create Chapter Headings separated by a line and with upper case prefix line.
\iftrue % change this to \iffalse to see a possible solution of the problem
% OLD: Code with \MakeUppercase issue
\RequirePackage{ifthen}% The old code uses package ifthen, which is not really
                       % needed, because KOMA-Script provides \IfArgIsEmpty
                       % and alternatively \Ifstr. However, we use the
                       % original code and therefore have to load the package.
\renewcommand{\chapterlineswithprefixformat}[3]{%
   % if the chapter is unnumbered (prefix is empty)
   \ifthenelse{\equal{#2}{}}%
   % then only show the title text
   {#3}%
   % else if chapter is numbered
   {%
      % set numeration in uppercase letters right-aligned
      {\raggedleft \MakeUppercase{#2}}\nobreak
      % create a line spanning the whole page
      \rule[.5\baselineskip]{\textwidth}{0.4pt}\\*
      % insert the title text
      #3
   }%
}
\else
% NEW: Code without \MakeUppercase issue and several improvements.
\renewcommand*{\chapterformat}{\MakeUppercase{\chapapp~\thechapter\autodot}}% Uppercase prefix and number
\renewcommand{\chapterlineswithprefixformat}[3]{%
   % if the chapter is unnumbered (prefix is empty)
   \IfArgIsEmpty{#1}%
   {#3}% then only show the title text
   {% else if chapter is numbered
      % set numeration right-aligned
      {\raggedleft #2\par}\nobreak
      % create a line spanning the whole page
      \raggedchapter\noindent% \noindent only needed, if \raggedchapter is empty
      \rule[.5\baselineskip]{\textwidth}{0.4pt}\par\nobreak
      #3% last but not least the title text (with optionally additional formatting
   }%
}
\fi
\end{filecontents}
% Now let's use it.
\documentclass{test-class}
\usepackage{blindtext}% Useful for small demonstration documents.

\begin{document}
\tableofcontents
\blinddocument
\end{document}
Aber genau genommen ist hier der Umweg über eine Wrapper-Klasse für scrreprt überhaupt nicht notwendig. Stattdessen würde:
\documentclass[chapterprefix]{scrreprt}

% Changes the chapter mark in the header to "Chapter #:" instead
% of "Chapter #":
\renewcommand*{\chaptermarkformat}{\chapapp\nobreakspace\thechapter:\enskip}

% Create Chapter Headings separated by a line and with upper case prefix line.
\iftrue % change to \iffalse to see a possible solution of the problem
% OLD: Code with \MakeUppercase issue
\usepackage{ifthen}% The old code uses package ifthen, which is not really
                   % needed, because KOMA-Script provides \IfArgIsEmpty
                   % and alternatively \Ifstr. However, we use the
                   % original code and therefore have to load the package.
\renewcommand{\chapterlineswithprefixformat}[3]{%
   % if the chapter is unnumbered (prefix is empty)
   \ifthenelse{\equal{#2}{}}%
   % then only show the title text
   {#3}%
   % else if chapter is numbered
   {%
      % set numeration in uppercase letters right-aligned
      {\raggedleft \MakeUppercase{#2}}\nobreak
      % create a line spanning the whole page
      \rule[.5\baselineskip]{\textwidth}{0.4pt}\\*
      % insert the title text
      #3
   }%
}
\else
% NEW: Code without \MakeUppercase issue and several improvements.
\renewcommand*{\chapterformat}{\MakeUppercase{\chapapp~\thechapter\autodot}}% Uppercase prefix and number
\renewcommand{\chapterlineswithprefixformat}[3]{%
   % if the chapter is unnumbered (prefix is empty)
   \IfArgIsEmpty{#1}%
   {#3}% then only show the title text
   {% else if chapter is numbered
      % set numeration right-aligned
      {\raggedleft #2\par}\nobreak
      % create a line spanning the whole page
      \raggedchapter\noindent% \noindent only needed, if \raggedchapter is empty
      \rule[.5\baselineskip]{\textwidth}{0.4pt}\par\nobreak
      #3% last but not least the title text (with optionally additional formatting
   }%
}
\fi

\usepackage{blindtext}% Useful for small demonstration documents.

\begin{document}
\tableofcontents
\blinddocument
\end{document}
vollkommen genügen. Bei beiden Beispielen kann man direkt im Online-Editor das \iftrue in \iffalse ändern, um statt des Problems eine mögliche Lösung zu testen. Das ist also ein klarer Vorteil gegenüber irgendwelchen Bastel-Archiven. Dazu wäre ich sogar unterwegs in der Bahn mit meinem Tablet in der Lage gewesen, statt erst jetzt im Büro.

Und wie bereits gesagt: Für Linien in Überschriften hat der KOMA-Script-Autor mehrere Vorschläge im KOMA-Script-Wiki.

Antworten