在同一个页面中封装逐字块会同时创建寡妇和孤儿

在同一个页面中封装逐字块会同时创建寡妇和孤儿

我遗漏了一些东西:将逐字块括在同一页面展开上一页并将逐字块移动到新页面,但也会拖动上一段的最后一行,从而在上一页上创建孤行,在新页面上的逐字块之前创建寡行:

paragraph line one bla bla etc and so on 
line two bla bla etc end of paragraph

\begin{samepage}
\begin{verbatim}
line  1
line  2
line  3
line  4
line  5
line  6
line  7
line  8
line  9
line 10
\end{verbatim}
\end{samepage}

如果我排除同一页面然后分页符就会出现line 8在逐字块之后。

当我包括同一页面然后拉伸前一页(不是底部参差不齐),将逐字块完整地带到下一页。 它还会将第一行和第二行之间的最后一段拆分开来,在上一页创建一个孤行,并在新页面上创建一个孤行。

为什么会这样?我该如何预防?

答案1

samepage设置\@beginparpenalty为 10000。此惩罚由列表使用,使用它您可以防止在列表前直接分页。的实现 verbatim使用列表,因此它也受设置的影响(其他也会受到影响的环境例如centerquote。您可以添加断点,例如\goodbreak

\documentclass{article}
\begin{document}
x

\vspace{37\baselineskip}
paragraph line one bla bla etc and so on\\
line two bla bla etc end of paragraph

%\goodbreak %uncomment
\begin{samepage}
\begin{verbatim}
line  1
line  2
line  3
line  4
line  5
line  6
line  7
line  8
line  9
line 10
\end{verbatim}
\end{samepage}
\end{document}

相关内容