Sie sind hier

Listoffigures und größerer Zeilenabstand zwischen Bildern verschidener Chapter

Moin,

ich habe hier ein Problem mit meinem Abbildungsverzeichnis.

Ich verwende das Book-Format, aber habe jedoch die Nummerierung der Abbildungen durchgängig von 1 bis N gemacht. In der Listoffigures bekomme ich jetzt vor den Abbildungseinträgen eines jeden neuen Chapters einen vergrößerten Zeilendurchschuss. Da meine Nummerierung aber die Chapter-Nummer nicht beinhaltet, wirkt das ungewollt. Wie kriege ich es hin, dass alle Abstände zwischen den Abbildungseinträgen gleich groß sind?

Auf dem Bild ist der Abstand zwischen 22 und 23 zu sehen, der nicht da sein soll. Abbildung 23 liegt nicht mehr im Chapter von 22 sondern in einem neuen.

Viele Grüße
Jens

aka Voglscheuche

Edit: Falls der Abstand nicht auszugleichen ist, frage ich mich, ob ich stattdessen die jeweilige Chapter-Überschrift ins Abbildungsverzeichnis zwischen die jeweiligen Einträge bekomme.

Bild von Markus Kohm

\begingroup
\renewcommand*{\addvspace}[1]{}
\listoffigures
\endgroup

super, das geht

vielen Dank

Bild von Markus Kohm

Oder soll ich noch erklären, wie das funktioniert?

aber im Moment bin ich erstmal froh, dass es so klappt ;)

Bild von Markus Kohm

Zunächst: Schau dir mal eine lof-Datei an. Das ist die Datei, die beim Setzen des Abbildungsverzeichnisses von \listoffigures gelesen wird. Natürlich passiert bei \listoffigures noch mehr, aber das ist mal noch nicht so wichtig. In der Datei findest Du immer an der Stelle, an der nachher im Abbildungsverzeichnis ein vertikaler Abstand steht die Anweisung \addvspace mit einem Argument. Als Autor der verwendeten Klasse, weiß ich das natürlich auch ohne in die Datei zu schauen. Außerdem weiß ich, dass \addvspace innerhalb des Abbildungsverzeichnisses nicht auch noch für etwas anderes verwendet wird. Also liegt der Gedanke nahe, diese Anweisung innerhalb des Abbildungsverzeichnisses quasi zu deaktivieren. Das machen wir jetzt Schritt für Schritt:

\begingroup

Eine neue Gruppe wird geöffnet. Alle Definitionen, die nach dieser Anweisung folgen, und die nicht explizit als global deklariert werden, gelten nur, bis zu Ende dieser Gruppe.

\renewcommand*{\addvspace}[1]{}

Die Anweisung \addvspace wird umdefiniert. Der Stern bedeutet, dass im Argument kein Absatz erfolgen darf. Im konkreten Fall könnte man auf diese Einschränkung verzichten, da sie ohnehin sichergestellt ist. Ich halte es aber aus Prinzip für sinnvoll alles Anweisungen so zu definieren, außer in Argumenten soll explizit auch ein Absatz erlaubt sein. Die 1 in eckigen Klammern bedeutet, dass die Anweisung genau ein Argument haben soll. Innerhalb der darauf folgenden geschweiften Klammern steht, was die Anweisung tun soll. Das steht nichts, also soll sie auch nichts tun.

\listoffigures

Nun wird das Abbildungsverzeichnis gesetzt, wobei die neue Bedeutung von \addvspace verwendet wird.

\endgroup

Die oben geöffnete Gruppe wird wieder geschlossen. Damit gilt verlieren die lokalen Definitionen der Gruppe ihre Gültigkeit. \addvspace hat also wieder die ursprüngliche Bedeutung.

Übrigens gibt es auch noch eine andere Möglichkeit. Man könnte beispielsweise in der Präambel des Dokument folgendes verwenden:

\makeatletter
\AtBeginDocument{%

Die folgenden Anweisungen innerhalb von \begin{document} ausführen.

  \addtocontents{lof}{\protect\let\protect\addvspace\protect\@gobble}%
}
\makeatother

In die lof-Datei die Anweisung \let\protect\@gobble schreiben. Die \protect sind notwendig, damit nicht die Expansion der Anweisungen in die lof-Datei geschrieben wird. Die Anweisung \@gobble ist eine Anweisung, die ein Argument frisst und sonst nichts tut (vgl. die Umdefinierung von \addvspace oben).

Warum brauchen wir hier keine Gruppe, damit \addvspace später nicht diese neue Bedeutung behält? Ganz einfach: Bei KOMA-Script bleiben Definitionen, die in der lof-Datei stehen lokal, weil die Datei innerhalb einer Gruppe gelesen wird.

Es gibt noch eine Möglichkeit für die Präambel. Man könnte einfach \listoffigures umdefinieren. Das lasse ich als Übung, wobei die Frage »Wie kann ich ein LaTeX-Makro umdefinieren und dabei auf dessen bisherige Bedeutung zugreifen?« in der De-TeX-FAQ zu beachten ist, bzw. nützliche Hinweise gibt.

Da ich Abbildungen, Tabellen und Karten in den Verzeichnissen ebenfalls ganz durchnummeriere bin ich zum Glück auf die Anweisungen hier gestoßen und habe sie für mich übernommen.

\begingroup
\renewcommand*{\addvspace}[1]{}
\listoffigures
\listoftables	
\listof{Karte}{Kartenverzeichnis}
\endgroup

Nun verringert sich allerdings auch der Abstand zwischen dem Titel "Abbildungsverzeichnis" etc. und der ersten Abbildungen.

Mit welchem Befehl kann ich das unterbinden?

Muss ich da etwas an der lof Datei verändern? Allerdings traue ich mir das nicht wirklich zu...

Vielen Dank im Voraus!

Bild von Markus Kohm

Theoretisch könntest Du die Anweisung einfach per \addtocontents in das entsprechende Verzeichnis verschieben. Je nachdem, welche Version von KOMA-Script Du verwendest, kannst Du aber auch einfach die Klassenoption chapteratlists=0pt oder listsof=nochaptergap verwenden.

VIELENE DANK für die schnelle Antwort.
Entschuldigung. Ich glaube, da stehe ich ein wenig auf dem Schlauch.

Wenn ich

\makeatother
\makeatletter
\AtBeginDocument{%
\addtocontents{lof}{\protect\let\protect\addvspace\protect\@gobble}%
}
\makeatother

in meine Präambel schiebe, habe ich den gleichen Effekt, der Abstand zwischen dem Titel "Abbildungsverzeichnis" etc. und der ersten Abbildungen ist wieder verringert....

Bild von Markus Kohm

Dann ist das vermutlich der Abstand für das erste Kapitel, der natürlich ebenfalls nicht in das Verzeichnis geschrieben wird. Mehr kann ich da jetzt nicht orakeln.

Das Problem besteht leider weiterhin. Ich habe jetzt mal ein Beispiel beigesteuert. Hoffe, es entspricht einigermaßen den Anforderungen an ein Minimalbeispiel...

Grüße

\documentclass[a4paper, 12 pt, DIV10, oneside, smallheadings, liststotoc, bibtotoc,							
pointlessnumbers, halfparskip-, tocindent,
draft %final
]{scrbook}	

\usepackage{setspace}\onehalfspacing
\usepackage[a4paper,right=25mm,left=30mm,top=25mm,bottom=30mm]{geometry}

\clubpenalty = 10000 % schliesst Schusterjungen aus
\widowpenalty = 10000 % schliesst Hurenkinder aus

\usepackage[automark, headsepline, ilines]{scrpage2}

\frenchspacing 																							% 
\usepackage[latin1]{inputenc}
\usepackage{cite}
\usepackage[T1]{fontenc}

\usepackage{units}
\usepackage{amsmath,amssymb,amstext}

\addtokomafont{sectioning}{\rmfamily}								
\addtokomafont{chapter}{\large}
\addtokomafont{section}{\normalsize}
\addtokomafont{subsection}{\normalfont\textbf}

\renewcommand{\chapterheadendvskip}{\vspace{-2pt}}

%Abstand vor und nach Section/Subsection zu Text verringern---------------------------------------------------
\makeatletter
\renewcommand\section{\@startsection{section}{1}{\z@}%
 {-1.6ex \@plus -1ex \@minus -.2ex}%
 {0.3ex \@plus.2ex}%
 {\ifnum \scr@compatibility>\@nameuse{scr@v@2.96}\setlength{\parfillskip}{\z@
    plus 1fil}\fi
  \raggedsection\normalfont\sectfont\size@section}%
}
\renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
{-1.6ex\@plus -1ex \@minus -.2ex}%
 {0.3ex \@plus .2ex}%
{\ifnum \scr@compatibility>\@nameuse{scr@v@2.96}\setlength{\parfillskip}{\z@
     plus 1fil}\fi
   \raggedsection\normalfont\sectfont\size@subsection
  }%
}

\makeatother


% Kopf- und Fußzeilen --------------------------------------------------------------------------------------------------
\pagestyle{scrheadings}
\clearscrheadfoot %Kopf- und Fußzeile werden gelöscht
\ofoot{\pagemark} %Seitenzahl wird in die Fußzeile außen geschrieben
\ohead{\headmark}

\renewcommand*{\chapterpagestyle}{scrheadings}               
\setkomafont{disposition}{\normalcolor\bfseries}  					

\usepackage[ngerman]{babel}
\usepackage[babel,german=quotes]{csquotes}  

\usepackage[section]{placeins}
\usepackage{float}
% Definiert den Gleitumgebungs-Stil "Linien"
\makeatletter
\newcommand\fs@Linien{\fs@plain
% \@fs@pre = Vor der Abbildung
  \def\@fs@pre{}%
% \@fs@mid = Zwischen Beschriftung und Inhalt
  \def\@fs@mid{%
   \setlength{\abovecaptionskip}{6mm}						
    \hrule height 0.3pt\relax
    \vspace{12pt}}%
% \@fs@post = Nach der Abbildung
  \def\@fs@post{%
    \vspace{12pt}%
    \hrule height 0.3pt\relax
    \ifx\@Quelle\@undefined \else
      \vspace{2mm}{\scriptsize Quelle: \@Quelle\par}%
      \global\let\@Quelle\@undefined
    \fi}%
  \let\@fs@iftopcapt\iftrue
% Quellenhinweise unter Abbildungen und Tabellen
  \newcommand\Quelle[1]{\@bsphack\gdef\@Quelle{##1}\@esphack}%
}
\makeatother

%Definiert "figure" um, so daß der Stil "Linien" verwendet wird
\floatstyle{Linien}
\restylefloat{figure}
\restylefloat{table}
%Definiert zusätzliche Float-Umgebung für verwendete Karten
\floatstyle{Linien}
\newfloat{Karte}{htb}{loM}

\usepackage{chngcntr}
\counterwithout{figure}{chapter}
\counterwithout{table}{chapter}
\counterwithout{Karte}{chapter}

\usepackage[font={small},labelfont={small, bf},singlelinecheck=off]{caption}
\addto\captionsngerman{%									 
  \renewcommand{\figurename}{Abb.}%
  \renewcommand{\tablename}{Tab.}%
}

\begin{document}

\pagenumbering{Roman}
\tableofcontents					
\markboth{Inhaltsverzeichnis}{Inhaltsverzeichnis}

\begingroup
\renewcommand*{\addvspace}[1]{}

\listoffigures						
\addtocontents{lof}{\protect\renewcommand*\protect\addvspace[1]{}}
\clearpage
\listoftables						
\clearpage
\listof{Karte}{Kartenverzeichnis}
\endgroup

\clearpage

\addchap{Abkürzungsverzeichnis}

\begin{tabbing}
  Abb.\hspace{6em}\= Abbildung  \\
  ADAC\> Allgemeiner Deutscher Automobil-Club\\
  BAT\> British American Tobacco Germany GmbH\\
  bzw.\> beziehungsweise  \\
  ca.\> circa \\
  cm\> Centimeter\\
  $CO_{2}$\> Kohlenstoffdioxid\\
\end{tabbing}

%anschließend wird arabisch nummeriert
\clearpage
\pagenumbering{arabic}


\chapter{Eins}

\begin{figure}
\caption{Das ist die erste Abbildung}
\end{figure}

\begin{figure}
\caption{Das ist die erste Abbildung}
\end{figure}

\begin{table}
\caption{Das ist die erste Abbildung}
\end{table}

\chapter{Zwei}

\begin{Karte}
\caption{Das ist die erste Abbildung}
\end{Karte}

\begin{figure}
\caption{Das ist die erste Abbildung}
\end{figure}

\chapter{Drei}

\begin{figure}
\caption{Das ist die erste Abbildung}
\end{figure}

\begin{table}
\caption{Das ist die erste Abbildung}
\end{table}

\end{document}
Bild von Markus Kohm

... ein Minimalbeispiel zu sein. Wenn es Dich nicht stört, dass Du eben warten musst, bis ich die Zeit finde, das selbst zu minimalisieren, ist das natürlich kein Problem.

Ja, das habe ich vermute. Ich war mir nur nicht sicher, ob sich evt. irgendwelche Abhängigkeiten ergeben.

Ich habe nun mal ein zusätzliches \addtocontents{lof}{\protect\vspace{8pt}} eingefügt, auch wenn das vielleicht nicht ganz sauber ist...??

\begingroup
\renewcommand*{\addvspace}[1]{}
\listoffigures						%Abbildungsverzeichnis wird eingefügt
\addtocontents{lof}{\protect\vspace{8pt}}
\addtocontents{lof}{\protect\renewcommand*\protect\addvspace[1]{}}
\endgroup


Das führt wieder zu einem Abstand zwischen "Abbildungsverzeichnis" und erstem Eintrag.
Bild von Markus Kohm

Inzwischen kann man den Abstand, den scrbook bei jedem Kapitel in die Gleitumgebungsverzeichisse einfügt, einfach per Option listof=nochaptergap abschalten. Näheres ist der KOMA-Script-Anleitung oder dem KOMA-Script-Buch zu entnehmen.

Comments for "Listoffigures und größerer Zeilenabstand zwischen Bildern verschidener Chapter" abonnieren