
Basado en la preguntaLa lista de listados de KOMA-script y LOF tienen espacios desiguales debajo del encabezadoHe ampliado el ejemplo con un TOC. Utilizo el paquete etoc en mi documento y la opción KOMA parskip=half
cambia el espacio vertical entre el título del capítulo TOC y las entradas TOC. El espaciado de LOF, LOF... permanece igual. ¿Cómo evitar esta incompatibilidad? Las imágenes deben ilustrar el problema. ¡Muchas gracias por adelantado!
Editar: compilo con xelatex
MWE:
\documentclass[
10pt,
oneside,
listof=totoc,
bibliography=totoc,
]{scrbook}
\usepackage{scrhack}
\usepackage{setspace}
\usepackage{graphicx}
\usepackage{listings}
\usepackage{etoc}
\onehalfspacing
\KOMAoptions{parskip=half}
\begin{document}
\tableofcontents
\listoffigures
\listoftables
\lstlistoflistings
\chapter{A Chapter}
\begin{figure}
\centering\includegraphics[width=0.5\linewidth]{example-image}
\caption{First figure}
\end{figure}
\begin{table}
\caption{First table}
\centering
\begin{tabular}[width=0.5\linewidth]{ccc}
Cell 1 & Cell 2 & Cell 3
\end{tabular}
\end{table}
\begin{lstlisting}[caption={First listing}]
Some code
\end{lstlisting}
\end{document}
Respuesta1
En las listas bajo control de tocbasic
(lof, lot, lol) \parskip
se inserta un final antes de desactivar el espaciado entre párrafos. Esta inserción se puede desactivar mediante
\doforeachtocfile{\setuptoc{#1}{noparskipfake}}
Pero entonces tiene menos espacio vertical entre el título de la lista y la primera entrada que entre los títulos de capítulo normales y el texto normal.
Por lo tanto, sería mejor agregar este final \parskip
antes de que se desactive el espaciado entre párrafos en la tabla de contenido (toc) que está bajo el control de etoc
. El \etocscrbookstyle
no tiene esto \parskip
en cuenta. Pero puedes parchear \etocscrbookstyle
para agregar el código relacionado con esto \parskip
(copiado de tocbasic
):
\usepackage{xpatch}
\makeatletter
\xpatchcmd{\etocscrbookstyle}
{\setlength {\parskip }{\z@ }}
{%
\etoc@Iftocfeature{\@currext}{noparskipfake}{}{%
\ifvmode
\@tempskipa\lastskip
\vskip-\lastskip
\addtolength{\@tempskipa}{\parskip}%
\vskip\@tempskipa
\fi
}%
\setlength {\parskip }{\z@ }%
}{}{\PatchFailed}
\makeatother
\etocstandarddisplaystyle
Ejemplo:
\documentclass[
10pt,
oneside,
listof=totoc,
bibliography=totoc,
]{scrbook}
\usepackage{scrhack}
\usepackage{setspace}
\usepackage{graphicx}
\usepackage{listings}
\usepackage{etoc}
\onehalfspacing
\KOMAoptions{parskip=half}
\usepackage{xpatch}
\makeatletter
\xpatchcmd{\etocscrbookstyle}
{\setlength {\parskip }{\z@ }}
{%
\etoc@Iftocfeature{\@currext}{noparskipfake}{}{%
\ifvmode
\@tempskipa\lastskip
\vskip-\lastskip
\addtolength{\@tempskipa}{\parskip}%
\vskip\@tempskipa
\fi
}%
\setlength {\parskip }{\z@ }%
}{}{\PatchFailed}
\makeatother
\etocstandarddisplaystyle
\begin{document}
\tableofcontents
\listoffigures
\listoftables
\lstlistoflistings
\chapter{A Chapter}
Some text
\begin{figure}
\centering\includegraphics[width=0.5\linewidth]{example-image}
\caption{First figure}
\end{figure}
\begin{table}
\caption{First table}
\centering
\begin{tabular}[width=0.5\linewidth]{ccc}
Cell 1 & Cell 2 & Cell 3
\end{tabular}
\end{table}
\begin{lstlisting}[caption={First listing}]
Some code
\end{lstlisting}
\end{document}