我有一个基于 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 环境之外,则对标签的引用将显示上一节的编号!