确保分页符不会介于节标题和列表之间

确保分页符不会介于节标题和列表之间

有没有一种简单的方法可以确保分页符不会介入\section宏(或另一个类似的宏)和\itemize环境(或另一个类似的环境)之间?

我已经使用包来titlesec使其\section看起来像我想要的那样,但我想知道是否可以向 titlesec 添加一些内容以确保在部分标题和列表之间不会有分页符。

问题代码如下:

\documentclass{book}
\usepackage{lipsum}
\usepackage{titlesec}

\titleformat{\section}[runin]
{\normalfont\scshape}
{}{0pt}{}
\titlespacing{\section}
{\parindent}{*2}{\wordsep}

\begin{document}

\lipsum[10-14]

Words

Words

Words

Words

\section{Section}
\begin{itemize}
    \item Words
    \item Words
    \item Words
\end{itemize}

\end{document}

答案1

您已将 的默认布局\sectiondisplay-style 标题更改为runin-style 标题。由于除了列表之外,后面没有任何内容,因此\section会出现分页符。您可以方便地在遇到这些奇怪情况\pagebreak时先发出一个\section。或者,可以通过以下方式提供自动化解决方案(需要进行一些微调)needspace

\documentclass{book}

\usepackage{lipsum}
\usepackage{titlesec,needspace}

\titleformat{\section}[runin]
  {\normalfont\scshape}
  {}{0pt}{}
\titlespacing{\section}
  {\parindent}{*2}{\wordsep}

\NewCommandCopy{\oldsection}{\section}
\RenewDocumentCommand{\section}{}{%
  \needspace{2\baselineskip}% Need roughly 2 lines available, otherwise issue a page break
  \oldsection
}

\begin{document}

\lipsum[10-14]

Words

Words

Words

Words

\section{Section}
\begin{itemize}
  \item Words
  \item Words
  \item Words
\end{itemize}

\end{document}

相关内容