
Com base na perguntaA lista de listagens do script KOMA e LOF têm espaço desigual abaixo do títuloEstendi o exemplo com um TOC. Eu uso o pacote etoc em meu documento e a opção KOMA parskip=half
altera o espaçamento vertical entre o título do capítulo do TOC e as entradas do TOC. O espaçamento de LOF, LOF... permanece o mesmo. Como evitar essa incompatibilidade? As imagens devem ilustrar o problema. Muito obrigado antecipadamente!
Editar: eu compilo com 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}
Responder1
Nas listas sob controle de tocbasic
(lof, lot, lol) um final \parskip
é inserido antes que o espaçamento entre parágrafos seja desativado. Esta inserção pode ser desabilitada por
\doforeachtocfile{\setuptoc{#1}{noparskipfake}}
Mas então você tem menos espaço vertical entre o título da lista e a primeira entrada do que entre os títulos normais dos capítulos e o texto normal.
Portanto, seria melhor adicionar este final \parskip
antes que o espaçamento entre parágrafos seja desativado no índice analítico (toc) que está sob controle de etoc
. O \etocscrbookstyle
não leva isso \parskip
em consideração. Mas você pode corrigir \etocscrbookstyle
para adicionar o código relacionado a isso \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
Exemplo:
\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}