有没有一种简单的方法可以确保分页符不会介入\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
您已将 的默认布局\section
从display
-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}