当我在项目中生成图表列表时,所有图表都按章节分组。我希望整个列表不包含不同章节之间的任何额外换行符。
它看起来是这样的:
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.cls
和report.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
上述补丁删除了\addvspace
LoF 和 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}