我正在使用此解决方案将图表和表格列表划分为章节,但是,我在页面底部有一个单独的章节标题,然后表格标题在下一页。当发生这种情况时(即当列表中的图表少于 2 个时),我想要做的是强制打开新页面。原始线程在这里 -https://tex.stackexchange.com/a/68340/51337
我确信目录也可以这样做,以确保它看起来不会很奇怪,但我不知道该怎么做。我知道你可以在 \chapter{} 命令前添加 \addtocontents{toc}{\protect\newpage} 来强制目录中出现新页面,但这并不是我真正想要的
\documentclass{book}
\usepackage{etoolbox}
\makeatletter
\def\thischaptertitle{}
\apptocmd{\@chapter}{\gdef\thischaptertitle{#1}}{}{}
\newcommand{\DeclareDividedList}[1]%
{\newcounter{#1@chapter}\setcounter{#1@chapter}{0}}
\pretocmd{\addcontentsline}%
{\ifltxcounter{#1@chapter}%
{%
\ifnumgreater{\thechapter}{\value{#1@chapter}}{%
\setcounter{#1@chapter}{\thechapter}%
\addtocontents{#1}{\protect\contentsline{chapter}%
{\protect\numberline {\thechapter} {\thischaptertitle}}{}{} }
}{}%
}{}%
}{}{}
\makeatother
\DeclareDividedList{lof}
\DeclareDividedList{lot}
\begin{document}
\tableofcontents
\listoffigures
\listoftables
\mainmatter
\chapter{Introduction with no Figures}
\chapter{Test Chapter with Figures but no Tables}
\begin{figure}
\caption{caption text}
\end{figure}
\begin{figure}
\caption{caption text}
\end{figure}
\chapter{Test Chapter with Tables but no Figures}
\begin{table}
\caption{caption text}
\end{table}
\begin{table}
\caption{caption text}
\end{table}
\chapter{Test Chapter with Figures and Tables}
\begin{figure}
\caption{caption text}
\end{figure}
\begin{table}
\caption{caption text}
\end{table}
\begin{figure}
\caption{caption text}
\end{figure}
\begin{table}
\caption{caption text}
\end{table}
\begin{figure}
\caption{caption text}
\end{figure}
\end{document}
答案1
我会利用needspace
包裹\Needspace{<len>}
并在章节标题前插入:
\usepackage{needspace}% http://ctan.org/pkg/needspace
%...
\pretocmd{\addcontentsline}%
{\ifltxcounter{#1@chapter}%
{%
\ifnumgreater{\value{chapter}}{\value{#1@chapter}}{%
\setcounter{#1@chapter}{\value{chapter}}%
\addtocontents{#1}{\protect\Needspace{3.5\baselineskip}%
\protect\contentsline{chapter}%
{\protect\numberline {\thechapter} {\thischaptertitle}}{}{} }
}{}%
}{}%
}{}{}
%...
上面我使用了3.5\baselineskip
,但你可能需要调整一下以确保它满足你的最低 2 个浮点数要求。.lof
你的最小示例现在类似于:
\addvspace {10\p@ }
\addvspace {10\p@ }
\Needspace {3.5\baselineskip }\contentsline {chapter}{\numberline {2} {Test Chapter with Figures but no Tables}}{}{}
\contentsline {figure}{\numberline {2.1}{\ignorespaces caption text}}{3}
\contentsline {figure}{\numberline {2.2}{\ignorespaces caption text}}{4}
\addvspace {10\p@ }
\addvspace {10\p@ }
\Needspace {3.5\baselineskip }\contentsline {chapter}{\numberline {4} {Test Chapter with Figures and Tables}}{}{}
\contentsline {figure}{\numberline {4.1}{\ignorespaces caption text}}{7}
\contentsline {figure}{\numberline {4.2}{\ignorespaces caption text}}{8}
\contentsline {figure}{\numberline {4.3}{\ignorespaces caption text}}{8}
3.5\baselineskip
这意味着,如果在设置章节标题时页面上可用的内容不足,则会强制分页。
它可能不是一个最佳的解决方案,因为只有一个图的章节可能仍然适合放在 LoF/LoT 的底部,但它也可能充足的。
为了真正满足您的要求,必须跟踪每章的浮点数,然后在设置章节标题时以此为条件,同时跟踪页面上的位置同时。