Sie sind hier

Manueller Seitenumbruch im Inhaltsverzeichnis

Ich habe heute (endlich) auf die aktuelle Version von KOMA-Script geupdated und musste dabei feststellen, dass sich wohl was an der Satzspiegel-Berechnung geaendert hat (keine Ahnung welche Version ich eigentlich vorher hatte). Irgendwie scheint mehr Text auf die Seite zu passen...

Prinzipiell stoert mich das im Fliesstext nicht, allerdings wird jetzt im Inhaltsverzeichnis die Seite an einer Stelle umgebrochen, die mir nicht gefaellt. In der alten Version schien es so, als wuerde ein ganzes chapter mit seinen sections auf eine neue Inhaltsverzeichnisseite geschoben, wenn es nicht mehr vollstaendig aufs Blatt passt. Jetzt wird dummerweise zwischen den sections die Seite umgebrochen, so dass eine section alleine auf der zweiten Seite vom Inhaltsverzeichnis zum Stehen kommt.

Kann man an irgendeiner Stelle permanent den Seitenumbruch im Inhaltsverzeichnis erzwingen? Bei BibTeX kann ich ja einfach die automatisch generierte Datei von Hand aendern nur wird das toc-File doch staendig neu generiert, oder? Fummelloesung waere natuerlich eine kleine Batch-Datei, die vor jedem LaTeX-Lauf das gewuenschte toc-File kopiert, aber vielleicht gehts auch eleganter.

Danke fuer Hinweise!

Bild von Markus Kohm

Die Satzspiegelberechnung ist eine feste Größe in KOMA-Script über viele, viele Versionen hinweg. Was vor einigen Versionen geändert wurde, ist der vertikale Abstand nach nicht nummerierten Kapitelüberschriften. Da gab es nämlich schlicht einen Bug, der war fälschlicherweise nämlich größer als bei nummerierten Überschriften.

Desweiteren trügt der Schein. Tatsächlich hat sich an \l@chapter ebenfalls schon lange nichts mehr geändert. Nach wie vor, werden Umbrüche vor Kapiteleinträgen im Inhaltsverzeichnis denen danach vorgezogen. Allerdings nicht ganz so stark, wie das eigentlich der Fall sein sollte. Da gibt es tatsächlich auch einen Bug.

Manuelle Umbrüche im Inhaltsverzeichnis kann man mit \addtocontents einfügen. Die entsprechende Anweisung muss dann im Dokument an der Stelle stehen, an der sie später im Inhaltsverzeichnis stehen soll.

Blubber und Bla.

\addtocontents{toc}{\protect\newpage}
\chapter{Nächste Kapitelüberschrift}

Dies würde beispielsweise vor der Kapitelüberschrift »Nachste Kapitelüberschrift« die Seite im Inhaltsverzeichnis beenden. Es sei außerdem auf die Möglichkeiten von \enlargethispage hingewiesen. Die Anweisung ist beispielsweise im usrguide erklärt, der fester Bestandteil von LaTeX ist.

Perfekt! Der addtocontents Befehl hat auf Anhieb funktioniert, genauso wollte ich das haben.

Der zusätzliche Platz im Inhaltsverzeichnis kam wohl tatsächlich durch den Bug mit den Abständen bei nicht nummerierten Kapitelüberschriften zustande denke ich. Der "Mehrplatz" auf meinen Seiten im Text hingegen stammt von einem aktuelleren subfigure Paket. Hatte halt meine ganze Distribution geupdated und dabei eben auch dieses Paket. Habe leider erst heute gesehen, dass in diesem Paket Schriften oder Abstände verkleinert wurden wodurch mein Text etwas verrutscht ist.

Hallo, auf den ersten Blick funktioniert diese Ergänzung, aber auf den Zweiten leider nicht.
Ich muss ebenfalls an einer bestimmmten Stelle des Inhaltsverzeichnisses einen manuellen Seitenumbruch vornehmen, da es sonst zwischen zwei Sections unterbrochen wird und nicht direkt vor einem Kapitel. Sieht sehr unschön aus.
Jetzt kommt das Problem:
Das Anhangsverzeichnis wird in zwei Seiten geteilt, die erste Seite enthält die Überschrift "Verzeichnis der Anhänge" und die zweite Seite die entsprechenden Einträge (siehe Bsp., wobei das Prozentzeichen bei %\addtocontents{toc}{\protect\newpage} zu löschen ist). Das soll aber alles auf eine Seite!
Jetzt Bsp., ich hoffe das ist minimal genug (mein letztes war es nicht!)

\documentclass[a4paper,oneside,pointlessnumbers]{scrbook}
\usepackage{typearea}
\usepackage[latin1]{inputenc}
\usepackage{scrpage2}
\usepackage{hyperref}
%Seitenstil mit Kolumnentitel
\pagestyle{scrheadings}

%Aufteilung des Inhaltsverzeichnisses in Hauptteil und Anhangsverzeichnis
\makeatletter% --> De-TeX-FAQ
\newcommand*{\maintoc}{% Hauptinhaltsverzeichnis
\begingroup
\@fileswfalse% kein neues Verzeichnis öffnen
\renewcommand*{\appendixattoc}{% Trennanweisung im Inhaltsverzeichnis
\value{tocdepth}=-10000 % lokal tocdepth auf sehr kleinen Wert setzen
}%
\tableofcontents% Verzeichnis ausgeben
\endgroup
}
\newcommand*{\appendixtoc}{% Anhangsinhaltsverzeichnis
\begingroup
\edef\@alltocdepth{\the\value{tocdepth}}% tocdepth merken
\setcounter{tocdepth}{-10000}% Keine Verzeichniseinträge
\renewcommand*{\contentsname}{% Verzeichnisname ändern
Verzeichnis der Anh\"ange}%
\renewcommand*{\appendixattoc}{% Trennanweisung im Inhaltsverzeichnis
\setcounter{tocdepth}{\@alltocdepth}% tocdepth wiederherstellen
}%
\tableofcontents% Verzeichnis ausgeben
\setcounter{tocdepth}{\@alltocdepth}% tocdepth wiederherstellen
\endgroup
}
\newcommand*{\appendixattoc}{% Trennanweisung im Inhaltsverzeichnis
}
\g@addto@macro\appendix{% \appendix erweitern
\if@openright\cleardoublepage\else\clearpage\fi% Neue Seite
\phantomsection
\addcontentsline{toc}{chapter}{\appendixname}% Eintrag ins Hauptverzeichnis
\addtocontents{toc}{\protect\appendixattoc}% Trennanweisung in die toc-Datei
}
\makeatother

\begin{document}
\subject{\sf\textbf{Praxissemesterbericht}}
\title{Einführung von IMDS}
\author{ich}
\maketitle
\clearpage

%Begin des Vorspanns
\frontmatter
\addchap*{Vorwort}

%Inhaltsverzeichnis
\maintoc

%Begin des Hauptteils
\mainmatter

\chapter{Hintergrund}
\section{EU-Altautoverordnung}
\subsection{Verbotene chemische Reinstoffe}
\section{Umsetzung in nationale Gesetze}
\subsection{Zeitplan zur Umsetzung}
%\addtocontents{toc}{\protect\newpage}
\chapter{IMDS und EDS}
\section{Struktur}
\subsection{Sicherheitsmaßnahmen}
\section{Dateneingabe}
\subsection{Manuell}
\section{Allgemeine Materialdatenblätter}
\subsection{IMDS-Commitees}
\section{Aufbau der MDB's}
\subsection{Werkstoffe}
\appendix
\addpart*{Anhang}
\appendixtoc
\chapter{Alles}
\chapter{wird}
\chapter{gut}
\end{document}

Kann man den Befehl (%\addtocontents{toc}{\protect\newpage}) anschließend wieder abschalten? Ist folgende Lösung die eleganteste (sie funtkioniert!)?

http://www.mrunix.de/forums/showthread.php?t=52407

Gruß
Oliver

Bild von Markus Kohm

Man kann allenfalls \onlymaintoc gleich robust deklarieren, damit man sich ein \protect spart. Bei der Gelegenheit habe ich gleich noch das Paket ifthenelse, das ich persönlich nicht sehr mag, eingespart.

\DeclareRobustCommand{\onlymaintoc}[1]{%
  \ifnum\value{tocdeph}=-10000\relax #1\fi
}

und dann:

\addtocontents{toc}{\onlymaintoc{\protect\newpage}}

Und wenn wir schon dabei sind, kann man natürlich auch eine Art if-Anweisung daraus machen, damit man auch Material angeben kann, dass nur im Anhangsverzeichnis zur Ausführung kommt:

\DeclareRobustCommand{\ifmaintoc}{%
  \ifnum\value{tocdeph}=-10000\relax
    \expandafter\@firstoftwo
  \else
    \expandafter\@secondoftwo
  \fi
}

und dann:

\addtocontents{toc}{\ifmaintoc{\protect\newline}{}}
Comments for "Manueller Seitenumbruch im Inhaltsverzeichnis" abonnieren