我想要实现的目标

我想要实现的目标

这是不是重复的预防分页符。

我想要实现的目标

考虑这样一个itemize环境,其中一个\items 被拆分在一页的底部和下一页的开头:

我希望\item(或者整个itemize环境)位于下一页的顶部,而不是分成两页。

但是,如果有任何(合理的)方法可以将其放在当前页面上,那么它应该优先考虑这一点。

我希望这件事能够完成自动地,因此没有例如needspace包。

我尝试过的方法

我怀疑这会受到惩罚。我一直在研究\samepage定义中的那些以及列出的那些在这个答案中

例如\@itempenalty\@M不起作用,这让我有点困惑。

可能我不太明白惩罚实际上起什么作用。我理解的是,如果某个惩罚很高,那么解释器将试图避免因这个惩罚而中断。我不明白的是,当它无法插入内容时(在正常限制下),如何鼓励分页。

代码

我正在处理一个包,这只是一个 MWE。

项目拆分到各个页面,在这个例子中没有空间,所以我想让itemize环境(我只需要有\item问题的)跳转到下一页。 (我添加了一个,\makeatletter所以你不必这样做。

\documentclass{article}
\usepackage{lipsum}
\setlength{\parindent}{0em}
\makeatletter

\begin{document}
  \lipsum[1-4]
  \bgroup 
    %\bgroup is okay here, right? 
    % (Then the penalties should go back at \egroup?)

    %% Magic, amazing penalty code can go here. %%
    %% ... or wherever it fits best ...         %%

    \begin{itemize}
      \item\lipsum[10-12]
    \end{itemize}
  \egroup
\end{document}

这实际上不是一个关于惩罚的问题,尽管我不介意提供链接或解释来阐明编译器(即 pdftex)如何处理惩罚。

提前谢谢大家 :)


请随意建议或修改标题,使其更切中问题的核心。我觉得这个标题有点不靠谱?

答案1

您可以使用\filbreak(参见https://tex.stackexchange.com/a/72787/4427

\documentclass{article}
\usepackage{lipsum}
\usepackage{etoolbox}

\begin{document}

\lipsum[1-4]
\begin{itemize}\preto\item{\filbreak}
\item test\\on\\three lines
\item test
\item\lipsum[10-12]
\end{itemize}
\lipsum[1-4]

\end{document}

在此处输入图片描述

相关内容