我正在使用基于回忆录的模板,并且我有一个长度超过一页的图表列表。出于页面布局目的,删除图表列表标题和实际列表之间的一些空白以将其放在一页上会很有用。我已经包含了我认为应该是 MWE 的内容,以及我期望从中得到的解决方案tocloft 包在注释中。取消注释此内容会给我一个未定义的控制序列错误\cftafterloftitleskip
。有人能告诉我这种方法的错误是什么吗?或者如果方法本身是错误的,我该怎么做?
\documentclass{memoir}
\usepackage{capt-of}
%\usepackage{tocloft}
%\setlength{\cftafterloftitleskip}{0pt}
\begin{document}
\listoffigures
\captionof{figure}{A}
\captionof{figure}{A}
\captionof{figure}{A}
\captionof{figure}{A}
\captionof{figure}{A}
\captionof{figure}{A}
\captionof{figure}{A}
\captionof{figure}{A}
\captionof{figure}{A}
\captionof{figure}{A}
\captionof{figure}{A}
\captionof{figure}{A}
\captionof{figure}{A}
\captionof{figure}{A}
\captionof{figure}{A}
\captionof{figure}{A}
\captionof{figure}{A}
\captionof{figure}{A}
\captionof{figure}{A}
\captionof{figure}{A}
\captionof{figure}{A}
\captionof{figure}{A}
\captionof{figure}{A}
\captionof{figure}{A}
\captionof{figure}{A}
\captionof{figure}{A}
\captionof{figure}{A}
\captionof{figure}{A}
\captionof{figure}{A}
\captionof{figure}{A}
\captionof{figure}{A}
\captionof{figure}{A}
\captionof{figure}{A}
\captionof{figure}{A}
\captionof{figure}{A}
\captionof{figure}{A}
\captionof{figure}{A}
\end{document}
答案1
该类memoir
模拟了tocloft
包,但做得并不完美。因此,\cftafterloftitleskip
没有定义或使用类似的长度。
您不必只修改单个章节(图表列表),因为其他章节的间距可能不同,所以您只能修改所有章节的间距,这样看起来会很奇怪。
我不确定是否建议根据单个章节的内容来设置章节标题的布局,但这是一个选择。
看起来最容易修改的两个参数是\beforechapskip
和\afterchapskip
。
在您的 MWE 中,列表多出两行,因此作为合理的起点,您可以考虑将这两个参数的总和缩小为2\baselineskip
。例如,放入\addtolength\beforechapskip{-2\baselineskip}
序言中会产生这样的结果。
当然,您可以选择更改\beforechapskip
-1.5\baselineskip 和。\afterchapskip
以.5\baselineskip
我(完全业余)的观点来看,减少章节标题上方的空间比减少其下方的空间看起来更好。
(顺便说一句,在编译这个特定示例时,图形列表并不完全正确。图 0.1 在第 2 页,图 0.24 在第 3 页。您还必须运行pdflatex
三次才能获得此结果。)
答案2
问题是每个\chapter
命令都会写入\addvspace{10pt}
文件lof
(以及lot
)。
因此,lof
文件总是以至少一个\addvspace{10pt}
将第一个标题向下推的标题开始。
一个解决方案是在开始时添加一个宏,以递归方式消除这些不需要的垂直空格。
该openany
选项只是面对面显示页面;lipsum
用于添加内容。
它是如何工作的?宏\killaddvspace
检查下一个标记是否是\addvspace
,在这种情况下,它会调用\killedaddvspace
吞噬\addvspace{10pt}
并\killaddvspace
再次调用。当没有更多\addvspace
行要删除时,宏什么也不做。
\documentclass[a4paper,openany]{memoir}
\usepackage{lipsum}
\makeatletter
\newcommand{\killaddvspace}{%
\@ifnextchar\addvspace{\killedaddvspace}{}%
}
\newcommand{\killedaddvspace}[2]{\killaddvspace}
\AtBeginDocument{\addtocontents{lof}{\protect\killaddvspace}}
\makeatother
\begin{document}
\frontmatter
\chapter{Abstract}
\lipsum[1-2]
\clearpage
\listoffigures
\mainmatter
\chapter{No figures}
\newcommand{\testchapter}{%
\chapter{Test}
\lipsum[2]
\begin{figure}
\caption{Caption}
\end{figure}
\lipsum[3]
\begin{figure}
\caption{Caption}
\end{figure}
\lipsum[4]
\begin{figure}
\caption{Caption}
\end{figure}
\lipsum[5-8]
}
\testchapter
\testchapter
\testchapter
\testchapter
\testchapter
\end{document}