Inhaltsverzeichnis, Kapitelnamen mit/ohne Nr. auf einer Höhe

Inhalt, Abbildungen, Tabellen, Quellcodes und andere Verzeichnisse


Karawane
Forum-Newbie
Forum-Newbie
Beiträge: 9
Registriert: Di 30. Jul 2013, 12:16

Inhaltsverzeichnis, Kapitelnamen mit/ohne Nr. auf einer Höhe

Beitrag von Karawane »

Guten Abend,

ich habe ein Problem mit der Formatierung des Inhaltsverzeichnisses und finde im Forum und im Komascript-FAQ lauter ähnliche Fragen und Antworten, aber nicht genau das, was ich brauche:

In meiner Arbeit gibt es ein Vorwort, das im Inhaltsverzeichnis im Stil einer Kapitelüberschrift aufgenommen werden soll, allerdings ohne Nummer. Die folgenden Kapitel tragen eine Nummer.

Nun steht im Inhaltsverzeichnis "Vorwort" und dann die Nummern der folgenden Kapitel auf einer Höhe; schöner wäre allerdings, wenn "Vorwort" auf der Höhe vom ersten Kapitelnamen stünde, also passend nach rechts eingerückt wäre.
\documentclass{scrbook}

\begin{document}
\tableofcontents
\chapter*{Vorwort}
\addcontentsline{toc}{chapter}{Vorwort}
\chapter{Erster Kapitel}
\chapter{Zweites Kapitel}
\end{document}
Eine unsaubere Lösung wäre natürlich, sich mittels \hspace was zu bauen, also
....
\addcontentsline{toc}{chapter}{\hspace{....} Vorwort}
....
aber kennt jemand eine saubere Lösung?

Gruß K.

Benutzeravatar
Sepp99
Forum-Meister
Forum-Meister
Beiträge: 1569
Registriert: So 29. Aug 2010, 17:26
Wohnort: Offenhausen/OÖ

Beitrag von Sepp99 »

Eventuell
\addchap
in der Doku von KOMA-Script nachgelesen?

Sepp

skater
Forum-Guru
Forum-Guru
Beiträge: 356
Registriert: Do 12. Mär 2009, 14:34
Wohnort: Berlin

Beitrag von skater »

\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{lmodern}
\typearea{calc}
\begin{document}

\tableofcontents

\section*{Vorwort}
\addcontentsline{toc}{section}{\protect\numberline{}Vorwort}

Deine \emph{unsaubere} Lösung ist schon die richtige Richtung.
Die \emph{saubere} Version findet sich im \emph{›LaTeX-Begleiter‹} auf Seite~50.

\section{Erstes Kapitel}

\end{document}

Noch so einer

Beitrag von Noch so einer »

Es gibt auch eine wirklich saubere Lösung, die alle \addsec-Einträge behandelt:
\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{lmodern}
\typearea{calc}

\renewcommand*{\addsectiontocentry}[2]{%
  \ifstr{#1}{}{% Eintrag ohne Nummer:
    % mit "Null-Nummer" versehen.
    \addtocentrydefault{section}{\protect\null}{#2}%
  }{%
    % Eintrag mit Nummer
    \addtocentrydefault{section}{#1}{#2}%
  }%
}

\begin{document}

\tableofcontents

\addsec{Vorwort}

Es gibt auch eine wirklich saubere Lösung dieses Problems.

\section{Erstes Kapitel}

\end{document}
Wenn ich den FAQ-Eintrag »Wie kann man im Inhaltsverzeichnis die Seitenzahlen für Kapiteleinträge unterdrücken?« von gestern (der mich überhaupt erst auf die Idee gebracht hat) richtig deute, dann wird diese Lösung ab KOMA-Script 3.12 auch für die Inhaltsverzeichniseinträge gelten, die von Option listof=totoc gesetzt werden. Derzeit ist das leider noch nicht der Fall. Dem Vernehmen nach müssen wir auch nicht mehr allzu lange auf KOMA-Script 3.12 warten.

Besserwisser

Beitrag von Besserwisser »

Findet außer mir niemand, dass das so gar nicht mehr schön aussieht bzw. erst, wenn man auch noch Option toc=flat angibt?

Karawane
Forum-Newbie
Forum-Newbie
Beiträge: 9
Registriert: Di 30. Jul 2013, 12:16

Beitrag von Karawane »

Vielen Dank für die Antworten! Das klappt so. Allerdings taucht in meinem Dokument ein weiteres Problem auf, da ich die Nummerierung der Kapitelüberschriften über
\renewcommand{\thechapter}{\Roman{chapter}}
also römische Ziffern anzeigen lasse. Damit kriege ich im Inhaltsverzeichnis vor dem Vorwort einen Punkt (der sonst nach der römischen Ziffer steht).

Mit dem Vorschlag von Noch so einer sieht das dann so aus:
\documentclass{scrbook}
\renewcommand{\thechapter}{\Roman{chapter}}
\renewcommand*{\addchaptertocentry}[2]{%
  \ifstr{#1}{}{\addtocentrydefault{chapter}{\protect\null}{#2}}{\addtocentrydefault{chapter}{#1}{#2}}}
\begin{document}
\tableofcontents
\addchap{Vorwort}
\chapter{Erster Kapitel}
\chapter{Zweites Kapitel}
\end{document}
Woher kommt der Punkt (der hinter den römischen Ziffern durchaus sein soll) und wie kriege ich ihn weg?

Danke, Gruß K.

Noch so einer

Beitrag von Noch so einer »

Der Punkt kommt vom \autodot, das KOMA-Script beim ersten Argument von \numberline einfügt, um den Punkt bei nicht rein arabischer Nummerierung einzufügen. Mit einer kleinen Änderung, lässt sich dieser beseitigen:
\documentclass{scrbook}
\renewcommand{\thechapter}{\Roman{chapter}}
\renewcommand*{\addchaptertocentry}[2]{%
  \ifstr{#1}{}{%
    \addtocentrydefault{chapter}{% \autodot für diesen Eintrag deaktivieren
      \protect\let\protect\autodot\protect\relax
    }{#2}%
  }{%
    \addtocentrydefault{chapter}{#1}{#2}%
  }%
}
\begin{document}
\tableofcontents
\addchap{Vorwort}
\chapter{Erster Kapitel}
\chapter{Zweites Kapitel}
\end{document}
Ich würde Dir außerdem empfehlen, die Formatierung des Quellcodes übersichtlich zu halten und auch die Kommentare aus meinem ursprünglichen Beitrag zu erhalten, damit man wenigstens eine leise Ahnung davon hat, was da gemacht wird. Wenn Du das hingegen zu Spaghetti-Code umwandelst blickt da niemand mehr durch.

Besserwisser

Beitrag von Besserwisser »

Die nächste KOMA-Script-Version scheint dafür übrigens einen Option toc=nonumberline zu bieten.

Noch so einer

Beitrag von Noch so einer »

Besserwisser hat geschrieben:Die nächste KOMA-Script-Version scheint dafür übrigens einen Option toc=nonumberline zu bieten.
Wohl eher umgekehrt:
  • toc=nonumberline entspricht der Voreinstellung, bei der nicht nummerierte Einträge linksbündig mit den Nummern sind
  • toc=numberline entspricht dem hier Gewünschten, bei dem die nicht nummerierten Einträge linksbündig mit dem Text der nummerierten Einträge sind.

Karawane
Forum-Newbie
Forum-Newbie
Beiträge: 9
Registriert: Di 30. Jul 2013, 12:16

Beitrag von Karawane »

Herzlichen Dank, Noch so einer!
Und Du hast sicherlich recht mit der Kommentierung, ja.

Gruß K.

Antworten