Wichtiges Update für KoMaScript Version 3.14

Wichtiges Update für KoMaScript Version 3.14

Ich habe mehrere Beiträge und Fragen von Leuten gefunden, dieentfernender vertikale Abstand wird automatisch zum Abbildungsverzeichnis hinzugefügt, mein Problem ist aber (genau) das Gegenteil:

Ich verwende die scrartclDokumentklasse mit Abschnitten als Trennzeichen der höchsten Ebene. In meinem Abbildungsverzeichnis gibt es keine Trennung zwischen den Abbildungen verschiedener Abschnitte.

Wie kann ich eine solche visuelle Trennung hinzufügen?

Sehen Sie sich das folgende minimal funktionierende Beispiel und die Ausgabe unten an:

\documentclass[11pt,a4paper]{scrartcl}

\usepackage{amsmath}

\numberwithin{figure}{section}

\begin{document}

\listoffigures

\section{Section}

\begin{figure}[ht]\caption{Figure}\end{figure}
\begin{figure}[ht]\caption{Figure}\end{figure}

\section{Section}

\begin{figure}[ht]\caption{Figure}\end{figure}

\end{document}

Ausgabe des MWE

Antwort1

Sie müssen den \@startsectionBefehl patchen. Patchen \sectionist auch möglich, würde aber auch für einen Leerzeichenbefehl hinzufügen \section*. Keine große Sache, aber wenn es sich vermeiden lässt, umso besser.

\documentclass[11pt,a4paper]{scrartcl}

\usepackage{amsmath}
\usepackage{etoolbox}

\makeatletter
\patchcmd{\@startsection}
  {\@dblarg}
  {\artemis@space@loft{#2}\@dblarg}
  {}{}
\newcommand{\artemis@space@loft}[1]{%
  \ifnum#1=\sectionnumdepth
    \doforeachtocfile[float]{%
      \addtocontents{\@currext}{\protect\addvspace{\@sectionlistsgap}}%
    }%
  \fi
}
\newcommand{\@sectionlistsgap}{5pt} % <-- change here the desired gap
\makeatother

\numberwithin{figure}{section}

\begin{document}

\listoffigures

\section{Section}

\begin{figure}[ht]\caption{Figure}\end{figure}
\begin{figure}[ht]\caption{Figure}\end{figure}

\section{Section}

\subsection{SUB}

\begin{figure}[ht]\caption{Figure}\end{figure}

\end{document}

Erklärung: \@dblargwird nur ausgeführt, wenn wir \sectionohne haben *; daher fügen wir vor der Ausführung durch TeX hinzu, \artemis@space@loftwodurch eine vertikale Leerzeichenannotation in die .lofund .lot-Dateien eingefügt wird. Dies ist dasselbe, was die bookKlasse für tut \chapter(dort wird 10pt verwendet, in einem Artikel scheint ein kleinerer Abstand angemessener). Es verwendet eine von vorgeschlagene TechnikJohannes_Bdas eine Funktion von Koma-Script ausnutzt; auf diese Weise erfahren auch neu definierte Float-Typen die gleiche Behandlung.

Der Parameter #2bis \@startsectionist die Abschnittsebene, daher prüfen wir, ob er mit identisch ist \sectionnumdepth. Für articlesollte man im Hauptteil \@nevon anstelle von verwenden .\sectionnumdepth\artemis@space@loft

Ich habe es hinzugefügt, \subsectionum zu überprüfen, ob der Abstand nur für Abschnitte hinzugefügt wird (und das wird er).

Bildbeschreibung hier eingeben

Wichtiges Update für KoMaScript Version 3.14

Wenn die neu veröffentlichte Version 3.14 von KoMaScript-Klassen und -Paketen installiert wurde, funktioniert der obige Patch nicht mehr.

Für diese Version muss man ändern

\patchcmd{\@startsection}
  {\@dblarg}
  {\artemis@space@loft{#2}\@dblarg}
  {}{}

hinein

\patchcmd{\scr@startsection}
  {\scr@section@dblarg}
  {\artemis@space@loft{#2}\scr@section@dblarg}
  {}{}

Danke an Johannes_B, dass er es so früh bemerkt hat (die neue Version wurde am 8. Dezember 2014 in TeX Live hochgeladen).

Wenn beide Patches für eine Zusammenarbeit erforderlich sind, wenn eine der Parteien KoMaScript noch nicht aktualisiert hat, dann

\makeatletter
\ifdefined\scr@startsection
  \patchcmd{\scr@startsection}
    {\scr@section@dblarg}
    {\artemis@space@loft{#2}\scr@section@dblarg}
    {}{}
\else
  \patchcmd{\@startsection}
    {\@dblarg}
    {\artemis@space@loft{#2}\@dblarg}
    {}{}
\fi
\newcommand{\artemis@space@loft}[1]{%
...

tun sollte.

verwandte Informationen