PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : addtocontents-Eintrag ragt in den Seitenrand



dielix
02-07-2008, 23:18
Ich habe meinem Inhaltsverzeichnis mit folgendem Befehl einen neuen (seitennummerlosen) Eintrag hinzugefügt:

\addtocontents{toc}{\centerline{\normalfont\scshap e{%
Eine eingefügte Zwischenüberschrift, die manchmal so lang ist,%
dass sie über den Rand ragt}}\endgraf}
Klappt prima, nur das längere Einträge nicht umgebrochen werden, sondern in den Seitenrand hineinragen. Ich will sie auch nicht manuell umbrechen (mal abgesehen davon, dass ich nicht weiß, wie das geht), sondern möchte, dass die Zeile so wie alle "normalen" Einträge automatisch umgebrochen wird, wenn sie zu lang ist. Hat jemand eine Idee?

Hier noch das vollständige Listing:


\documentclass[a4paper,12pt]{book}
\usepackage[utf8]{inputenc}

\begin{document}
\tableofcontents
\chapter{blablabla}
Hier kommt mein Text
\chapter{blub}
Noch mehr Text

\addtocontents{toc}{\centerline{\normalfont\scshap e{Eine eingefügte Zwischenüberschrift, die manchmal so lang ist, dass sie über den Rand ragt}}\endgraf}

\section{Jetzt mal ne Section}
Wieder ein bißchen Text.

\section{Noch ne Section}
Und so weier.
\end{document}

Stefan_K
03-07-2008, 00:24
Hallo dielix,

wenn du \centerline weglässt, wird automatisch umgebrochen. Statt \centerline kannst Du \centering verwenden:

\addtocontents{toc}{\protect\centering\normalfont\ scshape{Text}\endgraf}

Viele Grüße,

Stefan

dielix
03-07-2008, 07:02
Vielen Dank für die schnelle Antwort. Die Sache hat soweit zunächst erstmal geklappt, jedoch tritt nun ein blöder Effekt bei den Einträgen der Ebene \chapter (§ 1 ... ) auf. Bei diesen wird nun teilweise die erste Zeile eingerückt. Aber nicht immer. Ganz komisch. Zur Erläuterung habe ich zwei Bilder eingefügt.

Meine manuell eingefügten Texte kommen im Inhaltsverzeichnis zwischen die Ebenen von \part und \chapter. Hat es vielleicht etwas mit

\endgraf
zu tun? ich weiß gar nicht, wozu der Befehl da ist. Habe ihn gehirnlos irgendwo abgetippt.

Übrigens: Die Einträge von \part (1. Teil ... ) habe ich nicht auf diese Weise eingefügt, auch wenn sie so aussehen. Das macht die Dokumentenklasse (jurabook) automatisch so.

Besten Dank.

http://img354.imageshack.us/img354/1866/toc1ru5.th.png (http://img354.imageshack.us/my.php?image=toc1ru5.png)

http://img45.imageshack.us/img45/6343/toc2px1.th.png (http://img45.imageshack.us/my.php?image=toc2px1.png)

Stefan_K
03-07-2008, 12:06
\endgraf erzeugt einen Absatzumbruch, in plain.tex und latex.ltx steht:

\let\endgraf=\par

Bei mir tritt diese Einrückung nicht auf. Versuche geschweifte Klammern für die Begrenzung der Wirkung von \centering:

\addtocontents{toc}{{\protect\centering\normalfont \scshape Text\endgraf}}
Wenn das noch nicht hilft, könntest Du \endgraph tatsächlich einmal durch \par ersetzen.

Stefan

dielix
05-07-2008, 12:34
Vielen Dank für die wertvolle Hilfe. Die zusätzlichen Klammern haben das Problem behoben.

Übrigens: Sollen Beiträge hier - wie in anderen Foren üblich - auf [GELÖST] gesetzt werden?

Bis zum nächsten mal herzliche Grüße von

Dielix.

dielix
05-07-2008, 16:42
Leider hat sich beim Durchsehen noch ein kleines Folgeproblem ergeben. Ein bis zwei der manuell eingefügten Überschriften (Abschnitt ...) stehen als Schusterjungen als letzte Zeile auf einer Seite, sollten in diesen Fällen aber auf die nächste Seite rutschen. Zur Veranschaulichung:

http://img372.imageshack.us/img372/1741/toc3wc7.th.png (http://img372.imageshack.us/my.php?image=toc3wc7.png)

Bekommt man das hin?

Sabrina.Dankers
05-07-2008, 17:17
Leider hat sich beim Durchsehen noch ein kleines Folgeproblem ergeben. Ein bis zwei der manuell eingefügten Überschriften (Abschnitt ...) stehen als Schusterjungen als letzte Zeile auf einer Seite, sollten in diesen Fällen aber auf die nächste Seite rutschen. Zur Veranschaulichung:

http://img372.imageshack.us/img372/1741/toc3wc7.th.png (http://img372.imageshack.us/my.php?image=toc3wc7.png)

Bekommt man das hin?

Füg deinem durch addcontents erstellten Eintrag zu Anfang ein \newpage hinzu, dann wird's auf die nächste Seite geschoben.

dielix
05-07-2008, 18:20
Vielen Dank für den Tipp. An \newpage hatte ich auch schon gedacht. In Wirklichkeit ist die Sache aber komplizierter, weil ich für die ganze Zwischenüberschriftsgeschichte einen neuen Befehl definiert habe:

\newcommand{\abschnitt}[1]{
\cleardoublepage
\begin{center}
\large{\scshape #1}
\end{center}
\addtocontents{toc}{\vspace{0.4cm}}
\addtocontents{toc}{{\protect\centering\normalfont \scshape #1\endgraf}}
\addtocontents{ovw}{\vspace{0.4cm}}
\addtocontents{ovw}{{\protect\centering\normalfont \scshape{#1}\endgraf}}}
Wenn ich im Text eine neue Abschnittsüberschrift einfügen will, wähle ich

\abschnitt{Hier meine Abschnittsüberschrift}

Ich hatte daran gedacht, dass man die Sache mit /newpage derart automatisieren kann, dass LaTeX weiß, wann es einen Umbruch einfügen soll und wann nicht. Ist wahrscheinlich nicht ganz so einfach zu realisieren. Kann ich in meinen Befehl eine Option einbauen um im Fall des Falles ein /newpage zu erzwingen?

Sabrina.Dankers
05-07-2008, 18:43
Vielen Dank für den Tipp. An \newpage hatte ich auch schon gedacht. In Wirklichkeit ist die Sache aber komplizierter, weil ich für die ganze Zwischenüberschriftsgeschichte einen neuen Befehl definiert habe:

\newcommand{\abschnitt}[1]{
\cleardoublepage
\begin{center}
\large{\scshape #1}
\end{center}
\addtocontents{toc}{\vspace{0.4cm}}
\addtocontents{toc}{{\protect\centering\normalfont \scshape #1\endgraf}}
\addtocontents{ovw}{\vspace{0.4cm}}
\addtocontents{ovw}{{\protect\centering\normalfont \scshape{#1}\endgraf}}}
Wenn ich im Text eine neue Abschnittsüberschrift einfügen will, wähle ich

\abschnitt{Hier meine Abschnittsüberschrift}

Ich hatte daran gedacht, dass man die Sache mit /newpage derart automatisieren kann, dass LaTeX weiß, wann es einen Umbruch einfügen soll und wann nicht. Ist wahrscheinlich nicht ganz so einfach zu realisieren. Kann ich in meinen Befehl eine Option einbauen um im Fall des Falles ein /newpage zu erzwingen?

Das müsste ja theoretisch mit einer If-Abfrage zu berwerkstelligen sein, aber damit hab ich noch nie was gemacht und kann dir daher nicht helfen.