Список листингов KOMA-script и LOF имеют неравное расстояние под заголовком

Список листингов KOMA-script и LOF имеют неравное расстояние под заголовком

Я заметил неожиданное поведение класса scrbook (xelatex) и списка листингов из listingsпакета. Расстояние между заголовками глав LOF и списка листингов и первыми записями каждого списка не одинаково. Пакет листингов создает гораздо больший зазор даже без настройки внешнего вида заголовков глав, как в MWE. Есть ли у кого-нибудь идеи, в чем может быть проблема и как ее исправить? Спасибо!

МВЭ:

\documentclass[
    10pt,
    oneside,
    listof=totoc,
    bibliography=totoc,
]{scrbook}

\usepackage{calc}
\usepackage{graphicx}
\usepackage{listings}

\setkomafont{chapter}{\Large\bfseries\MakeUppercase}
\renewcommand*{\chapterheadstartvskip}{\vspace*{-\topskip+2pt}}

\begin{document}
\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}

решение1

В лог-файле вашего кода есть два предупреждения:

Класс scrbook Предупреждение: \float@listheadобнаружено! Реализация \float@listheadстала устаревшей в KOMA-Script v3.01 2008/11/14 и была заменена несколькими более гибкими функциями пакета tocbasic. Возможно, реализация \float@listheadбудет вскоре удалена из KOMA-Script. Загрузка пакета scrhackможет помочь избежать этого предупреждения, если вы используете пакет, который все еще реализует устаревший \float@listheadинтерфейс в строке ввода 18.

и

Класс scrbook Предупреждение: \float@addtolistsобнаружено! Реализация \float@addtolistстала устаревшей в KOMA-Script v3.01 2008/11/14 и была заменена несколькими более гибкими функциями пакета tocbasic. Начиная с версии 3.12 поддержка устаревшего \float@addtolistинтерфейса была ограничена только некоторыми функциями KOMA-Script и была удалена из других. Загрузка пакета scrhackможет помочь избежать этого предупреждения, если вы используете пакет, который все еще реализует устаревший \float@addtolistинтерфейс.

Загрузите пакет scrhack, как указано в предупреждениях.

\documentclass[
    10pt,
    oneside,
    listof=totoc,
    bibliography=totoc,
]{scrbook}
\usepackage{scrhack}% <- added

\usepackage{calc}
\usepackage{graphicx}
\usepackage{listings}

\setkomafont{chapter}{\Large}
\RedeclareSectionCommand[
  beforeskip=\dimexpr-\topskip+2pt\relax,
  afterindent=false
]{chapter}

\makeatletter
\renewcommand\chapterlinesformat[3]{%
  \@hangfrom{#2}{\MakeUppercase{#3}}%
}
\makeatother

\begin{document}
\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}

введите описание изображения здесь

Связанный контент