PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Vertikalen Abstand im Inhaltsverzeichnis bei Änderung der Gliederungsebene anpassen



thomsen
26-07-2013, 13:07
Hallo Zusammen!

Ich arbeite noch nicht sehr lange mit Latex und wende mich daher mit einem kleinen Problem an euch. Ich möchte den vertikalen Abstand im Inhaltsverzeichnis zwischen den Kapiteln (oder Unterkapiteln usw.) nur dann ändern, wenn darauf eine andere Gliederungsebene folgt.
Hier einmal ein Beispiel:



\documentclass[a4paper,12pt,headsepline,plainheadsepline,toc=bibl iographynumbered]{scrartcl}
\usepackage [latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[titles]{tocloft}


\begin{document}
%Formatierung des Inhaltsverzeichnises:
\setlength{\cftsecnumwidth}{3.5em}
\setlength{\cftsubsecnumwidth}{\cftsecnumwidth}
\setlength{\cftsubsecindent}{\cftsecindent}
\setlength{\cftsubsubsecnumwidth}{\cftsecnumwidth}
\setlength{\cftsubsubsecindent}{\cftsecindent}
\setlength{\cftbeforesecskip}{1em}
\setlength{\cftbeforesubsecskip}{0.8em}
\setlength{\cftbeforesubsubsecskip}{0.5em}


\tableofcontents
\newpage


\section{Kapitel 1}
\subsection{test 1}
\subsection{test 2}
\subsection{test 3}
\subsubsection{untertest 1}
\subsubsection{untertest 2}
\subsubsection{untertest 3}
\subsection{test 4}
\section{Kapitel 2}
\section{Kapitel 3}
\subsection{test 1}
\subsection{test 4}
\subsection{test 5}
\subsubsection{untertest 4}
\subsubsection{untertest 5}
\subsubsection{untertest 6}


\end{document}


In diesem Beispiel würde ich es gerne erreichen, dass der Befehl:

\setlength{\cftbeforesubsecskip}{0.8em}
nur vor dem Punkt "test 1" und nicht vor den Punkten "test 2", und "test 3" ausgeführt wird.
Das selbe Spiel dann auch mit der subsubsection (untertest).

Ich würde also gerne erreichen, dass mein Verzeichnis etwas geblockt wird.
Sprich wenn die selben Gliederungsebenen aufeinander folgen, soll sich der vertikale Abstand nicht ändern (oder besser noch mit einem anderen Wert definiert werden).
Hoffentlich war das verständlich :)

Gibt es eine Möglichkeit dies zu erreichen.
Vielen Dank für eure Hilfe.

MFG Thomsen

klops
29-07-2013, 10:03
Wenn man die Verzeichnissen von KOMA-Script nicht mit anderen Paketen verändert, dann gibt es bereits eine Erkennung von "Gliederungsgruppen" über penalties. Das könnte man prinzipiell dann auch für Dein Ansinnen verwenden:
\documentclass[a4paper,12pt,headsepline,plainheadsepline,toc=bibl iographynumbered]{scrartcl}
\usepackage [latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}

\usepackage{etoolbox}

\makeatletter
\patchcmd{\l@section}{%
\ifnum \lastpenalty<20009
\addpenalty{\@secpenalty}%
\fi
}{%
\ifnum \lastpenalty<20008
\addpenalty{\@secpenalty}%
\else
\ifnum \lastpenalty=20008
\addpenalty{\@secpenalty}%
\expandafter\expandafter\expandafter\@gobbletwo
\fi
\fi
}{}{\undefined}% Fehler melden, falls patchen nicht funktionierte
\patchcmd{\bprot@dottedtocline}{%
\advance \@tempcnta by -#1
}{%
\advance \@tempcnta by -#1
\ifnum \numexpr\@tempcnta-1\relax=\lastpenalty
\else\aftergroup\addmyextraspace\fi
}{}{\undefined}% Fehler melden, falls patchen nicht funktionierte
\newcommand*{\addmyextraspace}{\addvspace{0.8em}}
\makeatother

\begin{document}
\tableofcontents
\newpage


\section{Kapitel 1}
\subsection{test 1}
\subsection{test 2}
\subsection{test 3}
\subsubsection{untertest 1}
\subsubsection{untertest 2}
\subsubsection{untertest 3}
\subsection{test 4}
\section{Kapitel 2}
\section{Kapitel 3}
\subsection{test 1}
\subsection{test 4}
\subsection{test 5}
\subsubsection{untertest 4}
\subsubsection{untertest 5}
\subsubsection{untertest 6}


\end{document}
Ich finde das allerdings nicht unbedingt erstrebenswert. Der fehlende Abstand zwischen den Kapiteln macht das überdeutlich.

thomsen
01-08-2013, 09:41
Wow!

Das ist eine geniale Lösung. Darauf wäre ich selbst nie gekommen.
Allerdings muss ich zu meiner Schande gestehen, dass ich keine Ahnung habe, wie das ganze funktioniert.
Könntest du mir dies vielleicht nur erklären?

Natürlich ist diese Art der Formatierung nicht perfekt, aber ich habe hier eine Vorgabe bei einem Bericht an die ich mich halten muss. Daher diese Formatierung.

Vielen, vielen Dank für deine Hilfe.
MFG Thomsen