图表分类列表

图表分类列表

我正在使用此解决方案将图表和表格列表划分为章节,但是,我在页面底部有一个单独的章节标题,然后表格标题在下一页。当发生这种情况时(即当列表中的图表少于 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 的底部,但它也可能充足的


为了真正满足您的要求,必须跟踪每章的浮点数,然后在设置章节标题时以此为条件,同时跟踪页面上的位置同时

相关内容