防止项目标题和项目内容之间出现分页符

防止项目标题和项目内容之间出现分页符

我的标题出现在枚举列表中的项目之前。问题是,当标题出现在页面末尾而标题的内容出现在下一页时,我觉得它看起来很丑陋。我希望至少有一行来自项目内容的文本出现在标题之后。我试过\nopagebreak[4](似乎没有任何效果?)并begin{samepage}换行标题和整个段落(在页面上留下大片空白)。我希望有一个好的方法来解决它!

以下是重现该问题的示例代码:

\documentclass[letterpaper]{article}
\usepackage{enumitem}
\usepackage{lipsum}
\begin{document}
\begin{enumerate}
\item[]{\Huge{Heading}}
\item{\lipsum[1]}
\item[]{\Huge{Heading}}
\item{\lipsum[1]}
\item[]{\Huge{Heading}}
\item{\lipsum[1]}
\item[]{\Huge{Heading}}
\item{\lipsum[1]}
\end{enumerate}
\end{document}

以及有问题的输出图像(见页面底部)。在这种情况下,我希望将标题推到下一页,或者至少将段落的第一行文本拉到第一页。

在此处输入图片描述

答案1

needspace包允许在执行下一项操作之前保留垂直空间。如果空间不存在,它会发出分页符。在这里,我重新定义\item为在它之前执行\needspace。您可以更改我使用的值(\baselineskip),但它适用于您的 MWE。

\documentclass[letterpaper]{article}
\usepackage{enumitem}
\usepackage{lipsum}
\usepackage{needspace}
\let\svitem\item
\def\item{\needspace{\baselineskip}\svitem}
\begin{document}
\begin{enumerate}
\item[]{\Huge{Heading}}
\item{\lipsum[1]}
\item[]{\Huge{Heading}}
\item{\lipsum[1]}
\item[]{\Huge{Heading}}
\item{\lipsum[1]}
\item[]{\Huge{Heading}}
\item{\lipsum[1]}
\end{enumerate}
\end{document}

您可能仍会感到困惑,因为lipsum段落也会发出 ,\needspace并因此导致页面损坏。更好的方法是,\Hitem定义一个单独的 ,它单独发出\needspace

\documentclass[letterpaper]{article}
\usepackage{enumitem}
\usepackage{lipsum}
\usepackage{needspace}
\def\Hitem#1{\needspace{\baselineskip}\item[]{\Huge{#1}}}
\begin{document}
\begin{enumerate}
\Hitem{Heading}
\item{\lipsum[1]}
\Hitem{Heading}
\item{\lipsum[1]}
\Hitem{Heading}
\item{\lipsum[1]}
\Hitem{Heading}
\item{\lipsum[1]}
\end{enumerate}
\end{document}

答案2

使用包的解决方案 stackengine:根据构造,“标题”部分不能与内容的第一行分开,因为它属于第一行。它还具有大大简化代码的优势——除非您有特定的原因要使用自己的\item命令输入标题:

\documentclass[a4paper]{article}
\usepackage{enumitem}
\usepackage{stackengine}
\usepackage{lipsum}
\usepackage[bottom=45mm]{geometry}
\clubpenalty = 3500
\setstackgap{S}{\baselineskip}

\begin{document}

\lipsum[1]

\begin{enumerate}[label =\arabic*.\stackon{}{\rlap{\hspace{\labelsep}\Huge Heading}}]%
\item \lipsum[1]
\item \lipsum[1]
\item \lipsum[1]
\item \lipsum[1]
\item \lipsum[1]

\end{enumerate}

\end{document}% 

在此处输入图片描述

相关内容