我观察到 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
。 的实现可能很快会从 KOMA-Script 中删除。 如果您正在使用仍在输入行 18 上实现弃用接口的包,\float@listhead
则加载包可能有助于避免出现此警告。scrhack
\float@listhead
和
类 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}