Actualización importante para KoMaScript versión 3.14

Actualización importante para KoMaScript versión 3.14

He encontrado varias publicaciones y preguntas de personas que quiereneliminarel espaciado vertical se agrega automáticamente a la lista de figuras, pero mi problema es (exactamente) el opuesto:

Estoy usando la scrartclclase de documento con secciones como separador de nivel más alto. En mi lista de figuras no hay separación entre las figuras de diferentes apartados.

¿Cómo puedo agregar tal separación visual?

Vea el siguiente ejemplo de trabajo mínimo y el resultado a continuación:

\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}

salida del mwe

Respuesta1

Necesita parchear el \@startsectioncomando; También es posible aplicar parches \section, pero agregaría un comando de espaciado también para archivos \section*. No es gran cosa, pero si es posible evitarlo, mejor.

\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}

Explicación: \@dblargse ejecuta solo cuando tenemos \sectionsin *; Entonces, antes de que TeX lo ejecute, agregamos \artemis@space@loft, que agrega una anotación de espacio vertical en los archivos .lofy .lot. Esto es lo mismo que bookhace la clase \chapter(allí se usa 10 puntos, en un artículo un espacio más pequeño parece más apropiado). Utiliza una técnica sugerida porjohannes_bque explota una característica de Koma-Script; de esta manera, también los tipos flotantes recién definidos recibirán el mismo tratamiento.

El parámetro #2to \@startsectiones el nivel de sección, por lo que verificamos que sea el mismo que \sectionnumdepth. Porque articlese debe usar \@neen lugar de \sectionnumdepthen el cuerpo de \artemis@space@loft.

Agregué \subsectionpara verificar que el espaciado se agregue solo para las secciones (y así es).

ingrese la descripción de la imagen aquí

Actualización importante para KoMaScript versión 3.14

Cuando se instala la versión 3.14 recién lanzada de las clases y paquetes de KoMaScript, el parche anterior ya no funciona.

Para esta versión hay que cambiar.

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

en

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

Gracias a Johannes_B por haberlo notado tan temprano (la nueva versión se subió a TeX Live el 8 de diciembre de 2014).

Si ambos parches son necesarios para un trabajo cooperativo cuando una de las partes aún no ha actualizado KoMaScript, entonces

\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]{%
...

debería hacer.

información relacionada