Seite 1 von 1
Abbildungsverzeichnis unterteilen in Section Subsection
Verfasst: Mo 4. Mär 2019, 16:11
von heinrich
Hallo,
mein Abbildungsverzeichnis erstellt automatisch Abstände zwischen den einzelnen Chaptern. Das ist auch super.
Ich hätte das auch gerne zwischen den Section und Subsections.
Hätte jemand evtl eine Idee wie ich das hin bekomme oder wo ich eine Antwort finden würde?
Das wichtigste aus der Präambel wäre vermutlich das hier:
\documentclass[a4paper,10pt,open=right, twoside,]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{amsfonts}
\usepackage{scrhack}
%Abstand im Abbildungsverzeichnis
\makeatletter
\renewcommand{\l@figure}{\@dottedtocline{1}{5em}{3.7em}}
\makeatother
\begin{document}
\newpage
\listoffigures
\newpage
\end{document}
Für jeden Tipp dankbar!!!
Verfasst: Mo 4. Mär 2019, 16:53
von Gast
Zunächst einmal sei empfohlen, \l@figure nicht in der gezeigten Weise umzudefinieren, sondern besser etwas wie
\DeclareTOCStyleEntry[%
numwidth=3.7em
indent=5em
]{default}{figure}
zu verwenden. Näheres zu der Anweisung findest du im tocbasic-Kapitel in Teil II der
KOMA-Script-Anleitung, [d]scrguide[/d].
In derselben Anleitung findest du auch \addchaptertocentry, \addsectiontocentry, \addsubsectiontocentry und \doforeachtocfile. Über \addchaptertocentry wird in der Voreinstellung nicht nur der Inhaltsverzeichniseintrag für Kapitel erzeugt, sondern optional auch ein Eintrag in die anderen Verzeichnissen. Man kann das für \addsectiontocentry adaptieren (ungetestet):
\makeatletter
\renewcommand*{\addsectiontocentry}[2]{%
\addtocentrydefault{section}{#1}{#2}%
\doforeachtocfile{%
\addtocontents{\@currext}{\protect\addvspace{.5\protect\baselineskip}}%
}%
}
\makeatother
Verfasst: Mo 4. Mär 2019, 19:26
von gast
Super, funktioniert.
Vielen Dank!
PS:
Bei der Änderung von \l@figure bekomme ich eine Fehlermeldung. Liegt bestimmt ein Konflikt mit einem anderem Paket vor... Mal sehen, lese mich mal ein
Verfasst: Mo 4. Mär 2019, 19:47
von Gast
Das fehlt ein Komma zwischen den Optionen. Und \doforeachtocfile würde ich per optionalem Argument auf float einschränken. Sonst landet der Abstand beispielsweise auch im Inhaltsverzeichnis.
Verfasst: Di 5. Mär 2019, 10:39
von Gast
Ja, stimmt. Ich war gestern nicht so ganz in der Verfassung, das komplett auszuführen. Hier einmal ein Beispiel:
\documentclass[10pt,open=right,twoside]{scrreprt}
\usepackage[utf8]{inputenc}% Bei Verwendung einer aktuellen LaTeX-Installation überflüssig!
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{scrhack}% Damit wird der Abstand auch bei listings berücksichtigt!
\usepackage{xpatch}% Sehr gut, um vorhandene Anweisungen zu erweitern.
% Einzüge im Abbildungsverzeichnis
\DeclareTOCStyleEntry[%
numwidth=3.7em,
indent=5em, % bisschen viel, oder?
]{default}{figure}
% Abstände in den Gleitumgebungsverzeichnisse für \chapter, \section
% und \subsection
\KOMAoptions{listof=chaptergapline}% eine Zeile lässt sich für \chapter
% einfach per Option einstellen
% Für \section und \subsection geht es nicht ohne Umdefinieren oder Patchen.
% \@currext benötigt wird, müssen wir
\makeatletter % @ zu einem Buchstaben machen
\xapptocmd{\addsectiontocentry}{%
\doforeachtocfile[float]{% Bei allen Gleitumgebungsverzeichnissen (Besitzer "float"):
\addtocontents{\@currext}{%
\protect\addvspace{.75\protect\baselineskip}% Einen mittleren Abstand einfügen.
}%
}%
}{}{\PatchFailed}
\makeatletter % @ zu einem Buchstaben machen
\xapptocmd{\addsubsectiontocentry}{%
\doforeachtocfile[float]{% Bei allen Gleitumgebungsverzeichnissen:
\addtocontents{\@currext}{%
\protect\addvspace{.5\protect\baselineskip}% Einen kleineren Abstand einfügen.
}%
}%
}{}{\PatchFailed}
\makeatother % \makeatletter wieder aufheben
% Nur zur Verdeutlichung ändere ich jetzt noch die Nummerierung der
% Abbildungen. Das war nicht verlangt und sollte daher weggelassen werden:
\counterwithin*{figure}{section}
\counterwithin*{figure}{subsection}
\renewcommand*{\thefigure}{%
\ifnum\value{subsection}<1
\ifnum\value{section}<1
\ifnum\value{chapter}<1
\else \thechapter.\fi
\else \thesection.\fi
\else \thesubsection.\fi
\arabic{figure}%
}
\begin{document}
\listoffigures
\chapter{Erstes Kapitel}
\captionof{figure}{Erste, gefakte Testabbildung}
\captionof{figure}{Zweite, gefakte Testabbildung}
\chapter{Zweites Kapitel}
\captionof{figure}{Dritte, gefakte Testabbildung}
\captionof{figure}{Vierte, gefakte Testabbildung}
\section{Erster Abschnitt}
\captionof{figure}{Fünfte, gefakte Testabbildung}
\subsection{Erster Unterabschnitt}
\captionof{figure}{Sechste, gefakte Testabbildung}
\captionof{figure}{Siebte, gefakte Testabbildung}
\chapter{Drittes Kapitel}
\section{Noch ein Abschnitt}
\subsection{Noch ein Unterabschnitt}
\captionof{figure}{Achte, gefakte Testabbildung}
\captionof{figure}{Neunte, gefakte Testabbildung}
\end{document}
Man sieht an dem Beispiel auch gleich, dass sich die Abstände nicht aufsummieren, sondern dank \addvspace der größte der aufeinandertreffenden Abstände verwendet wird.
Mit Option \chapteratlists kann man den Abstand bei \chapter übrigens auch noch feiner einstellen.
Verfasst: Di 5. Mär 2019, 15:20
von Bartman
Das zweite \makeatletter scheint kein Problem zu sein, muss aber auch nicht übernommen werden.