Atualização importante para KoMaScript versão 3.14

Atualização importante para KoMaScript versão 3.14

Encontrei vários posts e perguntas de pessoas querendoremovero espaçamento vertical adicionado automaticamente à lista de figuras, mas meu problema é (exatamente) o oposto:

Estou usando a scrartclclasse document com seções como separador de nível mais alto. Na minha lista de figuras não há separação entre as figuras das diferentes seções.

Como posso adicionar essa separação visual?

Veja o seguinte exemplo de trabalho mínimo e a saída abaixo:

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

saída do mwe

Responder1

Você precisa corrigir o \@startsectioncomando; patch \sectiontambém é possível, mas adicionaria um comando de espaçamento também para arquivos \section*. Não é grande coisa, mas se for possível evitá-lo, melhor.

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

Explicação: \@dblargé executado somente quando temos \sectionsem *; então, antes do TeX executá-lo, adicionamos \artemis@space@loft, que adiciona uma anotação de espaço vertical nos arquivos .lofe .lot. É o mesmo que a bookclasse faz \chapter(10pt é usado ali, em um artigo um espaço menor parece mais apropriado). Ele usa uma técnica sugerida porJohannes_Bque explora um recurso do Koma-Script; desta forma, também os tipos float recém-definidos receberão o mesmo tratamento.

O parâmetro #2to \@startsectioné o nível da seção, então verificamos se é igual a \sectionnumdepth. Pois articledeve-se usar \@neem vez de \sectionnumdepthno corpo de \artemis@space@loft.

Adicionei \subsectionpara verificar se o espaçamento é adicionado apenas para seções (e é).

insira a descrição da imagem aqui

Atualização importante para KoMaScript versão 3.14

Quando a versão 3.14 recém-lançada das classes e pacotes KoMaScript foi instalada, o patch acima não funciona mais.

Para esta versão é necessário alterar

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

em

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

Obrigado a Johannes_B por ter notado isso tão cedo (a nova versão foi carregada no TeX Live em 8 de dezembro de 2014).

Se ambos os patches forem necessários para um trabalho cooperativo quando uma das partes ainda não atualizou o KoMaScript, então

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

deveria fazer.

informação relacionada