减少图表标题后的空白

减少图表标题后的空白

我正在使用基于回忆录的模板,并且我有一个长度超过一页的图表列表。出于页面布局目的,删除图表列表标题和实际列表之间的一些空白以将其放在一页上会很有用。真实世界示例演示我已经包含了我认为应该是 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}

在此处输入图片描述

相关内容