Abbildungsverzeichnis unterteilen in Section Subsection

Layout von Seiten, Rändern, Fusszeilen, usw, modifizieren


heinrich
Forum-Anfänger
Forum-Anfänger
Beiträge: 16
Registriert: Mo 14. Mai 2018, 19:28

Abbildungsverzeichnis unterteilen in Section Subsection

Beitrag 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!!!

Gast

Beitrag 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

gast

Beitrag 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

Gast

Beitrag 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.

Gast

Beitrag 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.

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2456
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

Das zweite \makeatletter scheint kein Problem zu sein, muss aber auch nicht übernommen werden.

Antworten