如何防止两个节标题之间出现分页符

如何防止两个节标题之间出现分页符

我有一个基于 book.cls 的自定义文档类,其中以下代码有时会在两个后续部分之间产生分页符:

  \section{Introduction}
  % page break may occur here
  \subsection{Getting started}

我完全感到困惑,因为我对分段命令的定义与 book.cls 中的定义几乎相同:

\newcommand \headingfont {\fontfamily{phv}\fontseries{bc}\fontshape{n}\selectfont}
\newcommand\section{\@startsection {section}{1}{\headerindent}%
                                   {-3.5ex \@plus -1ex \@minus -.2ex}%
                                   {2ex \@plus.2ex}%
                                   {\color{MMIblue}\headingfont\Large}}
\newcommand\subsection{\@startsection{subsection}{2}{\headerindent}%
                                     {-3.25ex\@plus -1ex \@minus -.2ex}%
                                     {2ex \@plus .2ex}%
                                     {\color{MMIblue}\headingfont\large}}
\newcommand\subsubsection{\@startsection{subsubsection}{3}{\headerindent}%
                                     {-3.25ex\@plus -1ex \@minus -.2ex}%
                                     {2ex \@plus .2ex}%
                                     {\color{MMIblue}\headingfont\normalsize}}
% etc.

有什么想法可能导致 LaTeX 允许分页?

答案1

问题在于\color{MMIblue}插入的内容会破坏在章节标题后不允许分页的机制。

使用

\newcommand\section{%
  \@startsection{section}{1}
    {\headerindent}%
    {-3.5ex \@plus -1ex \@minus -.2ex}%
    {2ex \@plus.2ex}%
    {\headingfont\Large\textcolor{MMIblue}}}

其之所以有效,是因为第六个参数中的最后一条指令将\@startsection章节标题(带有编号)读为一个支撑组,然后可以将其解释\textcolor为其第二个参数。

答案2

如果您想避免分页,请将您的文本、章节标题等放入同一页面区域。

\begin{samepage}
\section{Introduction}
% page break may occur here
\subsection{Getting started}
\end{samepage}

现在section和将来subsection应该始终保持一致。

但是,如果你将一个放置\label在节/子节中,但在 samepage 环境之外,则对标签的引用将显示上一节的编号

相关内容