我有以下 MWE:
\documentclass{article}
\usepackage{enumitem}
\begin{document}
\begin{enumerate}[label=\textbf{\arabic*}\hspace{4mm}]
\item BLAH BLAH BLAH \begin{enumerate}[label=(\Alph*),leftmargin=0.85cm,itemsep=2ex] \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \end{enumerate}\vskip 9mm
\item BLAH BLAH BLAH \begin{enumerate}[label=(\Alph*),leftmargin=0.85cm,itemsep=2ex] \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \end{enumerate}\vskip 9mm
\item BLAH BLAH BLAH \begin{enumerate}[label=(\Alph*),leftmargin=0.85cm,itemsep=2ex] \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \end{enumerate}\vskip 9mm
\item BLAH BLAH BLAH \begin{enumerate}[label=(\Alph*),leftmargin=0.85cm,itemsep=2ex] \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \end{enumerate}\vskip 9mm
\item BLAH BLAH BLAH \begin{enumerate}[label=(\Alph*),leftmargin=0.85cm,itemsep=2ex] \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \end{enumerate}\vskip 9mm
\item BLAH BLAH BLAH \begin{enumerate}[label=(\Alph*),leftmargin=0.85cm,itemsep=2ex] \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \end{enumerate}\vskip 9mm
\item BLAH BLAH BLAH \begin{enumerate}[label=(\Alph*),leftmargin=0.85cm,itemsep=2ex] \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \end{enumerate}\vskip 9mm
\item BLAH BLAH BLAH \begin{enumerate}[label=(\Alph*),leftmargin=0.85cm,itemsep=2ex] \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \end{enumerate}\vskip 9mm
\item BLAH BLAH BLAH \begin{enumerate}[label=(\Alph*),leftmargin=0.85cm,itemsep=2ex] \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \end{enumerate}\vskip 9mm
\end{enumerate}
\end{document}
如果您注意到第 5 部分需要从新的页面开始。
第 9 部分也需要从新的一页开始。
我如何从序言中修改 \item 环境,以便强制任何超过两页的项目自动开始新页面而不影响其他项目。
我知道如何使用 needspace 包对部分进行操作。但我无法让它修改项目。
\usepackage{needspace}
\usepackage{xpatch}
\xpretocmd{\section}{\needspace{6\baselineskip}}{}{}
答案1
您可以更改惩罚的定义,以告诉 LaTeX 何时需要分页符。添加beginpenalty=10000,midpenalty=10000
到枚举选项中。
这不是序言中的改变,但对于任何列表,只需定义一次就足够了,并且所有子列表也将被定义。
梅威瑟:
\documentclass{article}
\usepackage{enumitem}
\begin{document}
\begin{enumerate}[label=\textbf{\arabic*}\hspace{4mm},beginpenalty=10000,midpenalty=10000]
\item BLAH BLAH BLAH \begin{enumerate}[label=(\Alph*),leftmargin=0.85cm,itemsep=2ex] \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \end{enumerate}\vskip 9mm
\item BLAH BLAH BLAH \begin{enumerate}[label=(\Alph*),leftmargin=0.85cm,itemsep=2ex] \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \end{enumerate}\vskip 9mm
\item BLAH BLAH BLAH \begin{enumerate}[label=(\Alph*),leftmargin=0.85cm,itemsep=2ex] \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \end{enumerate}\vskip 9mm
\item BLAH BLAH BLAH \begin{enumerate}[label=(\Alph*),leftmargin=0.85cm,itemsep=2ex] \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \end{enumerate}\vskip 9mm
\item BLAH BLAH BLAH \begin{enumerate}[label=(\Alph*),leftmargin=0.85cm,itemsep=2ex] \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \end{enumerate}\vskip 9mm
\item BLAH BLAH BLAH \begin{enumerate}[label=(\Alph*),leftmargin=0.85cm,itemsep=2ex] \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \end{enumerate}\vskip 9mm
\item BLAH BLAH BLAH \begin{enumerate}[label=(\Alph*),leftmargin=0.85cm,itemsep=2ex] \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \end{enumerate}\vskip 9mm
\item BLAH BLAH BLAH \begin{enumerate}[label=(\Alph*),leftmargin=0.85cm,itemsep=2ex] \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \end{enumerate}\vskip 9mm
\item BLAH BLAH BLAH \begin{enumerate}[label=(\Alph*),leftmargin=0.85cm,itemsep=2ex] \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \end{enumerate}\vskip 9mm
\end{enumerate}
\end{document}
LaTex 将文本放在块中。方框之间的空间称为粘连。惩罚用于告诉 LaTeX 何时可以中断粘连。10000 表示不中断。
如果您告诉 LaTeX 不要在列表中间断行,则整个列表将是一个不可断行的框。当出现分页符时,LaTeX 会将列表中的所有项目推送到新页面。但是,由于这是一个嵌套列表,如果您仅定义中间惩罚,则 LaTeX 可能会在列表开始之前断行,这意味着您将得到
- 等等等等等等
- 分页符 -
(A)啦啦啦啦
(B)胡说……
当你告诉 LaTeX 不要在开始时断开并且不要在中间断开时,整个列表及其父列表将被视为一个单独的框并且不会被断开。
请注意,结束惩罚未定义为不中断。如果您定义了结束惩罚,当某些列表溢出到边距之外(例如图像太大)时,您将在一页内获得列表,而不会中断。
答案2
一个尴尬的解决方案是将每个都封装\item
在一个中\vbox
。
\documentclass{article}
\usepackage{enumitem}
\begin{document}
\begin{enumerate}[label={\textbf{\arabic*}\hspace{4mm}}]
\vbox{\item BLAH BLAH BLAH \begin{enumerate}[label=(\Alph*),leftmargin=0.85cm,itemsep=2ex] \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \end{enumerate}}\vskip 9mm
\vbox{\item BLAH BLAH BLAH \begin{enumerate}[label=(\Alph*),leftmargin=0.85cm,itemsep=2ex] \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \end{enumerate}}\vskip 9mm
\vbox{\item BLAH BLAH BLAH \begin{enumerate}[label=(\Alph*),leftmargin=0.85cm,itemsep=2ex] \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \end{enumerate}}\vskip 9mm
\vbox{\item BLAH BLAH BLAH \begin{enumerate}[label=(\Alph*),leftmargin=0.85cm,itemsep=2ex] \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \end{enumerate}}\vskip 9mm
\vbox{\item BLAH BLAH BLAH \begin{enumerate}[label=(\Alph*),leftmargin=0.85cm,itemsep=2ex] \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \end{enumerate}}\vskip 9mm
\vbox{\item BLAH BLAH BLAH \begin{enumerate}[label=(\Alph*),leftmargin=0.85cm,itemsep=2ex] \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \end{enumerate}}\vskip 9mm
\vbox{\item BLAH BLAH BLAH \begin{enumerate}[label=(\Alph*),leftmargin=0.85cm,itemsep=2ex] \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \end{enumerate}}\vskip 9mm
\vbox{\item BLAH BLAH BLAH \begin{enumerate}[label=(\Alph*),leftmargin=0.85cm,itemsep=2ex] \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \end{enumerate}}\vskip 9mm
\vbox{\item BLAH BLAH BLAH \begin{enumerate}[label=(\Alph*),leftmargin=0.85cm,itemsep=2ex] \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \item BLAH BLAH BLAH \end{enumerate}}\vskip 9mm
\end{enumerate}
\end{document}