删除 LoF 中各章节图片之间的间距

删除 LoF 中各章节图片之间的间距

当我在项目中生成图表列表时,所有图表都按章节分组。我希望整个列表不包含不同章节之间的任何额外换行符。

它看起来是这样的:

Figure 1.1 
Figure 1.2

Figure 2.1

Figure 3.1 
Figure 3.2

应该如何做:

Figure 1.1 
Figure 1.2
Figure 2.1
Figure 3.1 
Figure 3.2

我尝试应用以下解决方案但完全失败了:

我的主要文件:

\documentclass[12pt,oneside,titlepage,utf8x]{report}

\usepackage{times,a4wide,multirow,tabularx,graphicx} 
\usepackage{psfrag,fancyhdr,longtable}

\usepackage[T1]{fontenc}
\usepackage{float}
\usepackage[utf8]{inputenc}

\usepackage{url}
\usepackage{color}
\usepackage{verbatim}
\usepackage{fancyvrb}
\usepackage{natbib}
\usepackage{relsize}

\usepackage{caption}
\captionsetup[longtable]{belowskip=10pt}

\usepackage[left=4cm,top=2cm,right=3cm,bottom=2.5cm]{geometry}

\renewcommand{\chaptermark}[1]{\markboth{\nouppercase{\thechapter.\ #1}}{}}
\pagestyle{fancy}
\headheight 30pt
\rhead{}
\lfoot{}
\cfoot{\thepage}
\rfoot{}

\setlength{\parindent}{2em}
\setlength{\parskip}{1em}
\linespread{1.3} 

\begin{document}

\begin{titlepage}
\maketitle
\end{titlepage}

\tableofcontents

\chapter{First}
\label{sec:First}
\input{chapter1/chapter1}

\chapter{Second}
\label{sec:Second}
\input{chapter2/chapter2}

\chapter{Third}
\label{sec:Third}
\input{chapter3/chapter3}

\relsize{-1}
\listoffigures
\normalsize

\bibliography{praca_mgr}
\bibliographystyle{plain}
\nocite{*}

\end{document}

答案1

当您调用时,这将自动完成\chapter,从其定义中可以看出book.clsreport.cls

\newcommand\chapter{\if@openright\cleardoublepage\else\clearpage\fi
                    \thispagestyle{plain}%
                    \global\@topnum\z@
                    \@afterindentfalse
                    \secdef\@chapter\@schapter}
\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne
                       \if@mainmatter
                         \refstepcounter{chapter}%
                         \typeout{\@chapapp\space\thechapter.}%
                         \addcontentsline{toc}{chapter}%
                                   {\protect\numberline{\thechapter}#1}%
                       \else
                         \addcontentsline{toc}{chapter}{#1}%
                       \fi
                    \else
                      \addcontentsline{toc}{chapter}{#1}%
                    \fi
                    \chaptermark{#1}%
                    \addtocontents{lof}{\protect\addvspace{10\p@}}% <-- Gap in LoF
                    \addtocontents{lot}{\protect\addvspace{10\p@}}% <-- Gap in LoT
                    \if@twocolumn
                      \@topnewpage[\@makechapterhead{#2}]%
                    \else
                      \@makechapterhead{#2}%
                      \@afterheading
                    \fi}

将以下内容添加到文档序言中:

\usepackage{etoolbox}% http://ctan.org/pkg/etoolbox
\makeatletter
% \patchcmd{<cmd>}{<search>}{<replace>}{<succes>}{<failure>}
\patchcmd{\@chapter}{\addtocontents{lof}{\protect\addvspace{10\p@}}}{}{}{}% LoF
\patchcmd{\@chapter}{\addtocontents{lot}{\protect\addvspace{10\p@}}}{}{}{}% LoT
\makeatother

上述补丁删除了\addvspaceLoF 和 LoT 的插入;这是造成每章条目之间额外间隙的原因。

在此处输入图片描述

\documentclass{report}
\newcommand{\insertfigure}{\begin{figure}\caption{A figure}\end{figure}}
\usepackage{etoolbox}% http://ctan.org/pkg/etoolbox
\makeatletter
% \patchcmd{<cmd>}{<search>}{<replace>}{<succes>}{<failure>}
\patchcmd{\@chapter}{\addtocontents{lof}{\protect\addvspace{10\p@}}}{}{}{}
\patchcmd{\@chapter}{\addtocontents{lot}{\protect\addvspace{10\p@}}}{}{}{}
\makeatother
\begin{document}
\tableofcontents
\listoffigures
\chapter{A chapter}\insertfigure\insertfigure\insertfigure
\chapter{A chapter}\insertfigure\insertfigure\insertfigure
\chapter{A chapter}\insertfigure\insertfigure\insertfigure
\chapter{A chapter}\insertfigure\insertfigure\insertfigure
\end{document}

你可以选择同时使用两个补丁,也可以只使用其中一个补丁,只需注释掉所需的补丁即可。一个更简单的补丁可以删除两个间隙插入

\usepackage{etoolbox}% http://ctan.org/pkg/etoolbox
\makeatletter
\def\@gobblesix#1#2#3#4#5#6{}
\patchcmd{\@chapter}% <cmd>
  {\chaptermark{#1}}% <search>
  {\chaptermark{#1}\@gobblesix}% <replace>
  {}{}% <success><failure>
\makeatother

答案2

这是一个适用于 tufte-book 的快速而粗糙的解决方案,不需要任何额外的软件包。我只是暂时\addvspace用一个虚拟命令覆盖该命令。重要的是将文档其余部分恢复到旧定义。

\let\origaddvspace\addvspace
 \renewcommand{\addvspace}[1]{}
 \图列表
 \表列表
 \renewcommand{\addvspace}[1]{\origaddvspace{#1}}

答案3

也许这是最干净的解决方案。这解决了我的问题。

\usepackage[figurewithin=none]{caption}

相关内容