nopagebreak 在连续的列表环境之间添加不必要的空间

nopagebreak 在连续的列表环境之间添加不必要的空间

在两个连续的列表环境之间添加内容\nopagebreak会在它们之间添加垂直空间。如何才能在不添加虚假垂直空间的情况下防止分页?

梅威瑟:

\documentclass{article}

\begin{document}
\begin{minipage}[t]{.495\linewidth}
  \textbf{Allowing page breaks:}
  \begin{trivlist}\item AAA \end{trivlist}
  \begin{trivlist}\item AAA \end{trivlist}
\end{minipage}
%
\begin{minipage}[t]{.495\linewidth}
  \textbf{Disallowing page breaks:}
  \begin{trivlist}\item AAA \end{trivlist}
  \nopagebreak
  \begin{trivlist}\item AAA \end{trivlist}
\end{minipage}
\end{document}

并排比较

答案1

假设小页面只是为了显示(否则你可以简单地省略\nopagebreak你可以备份然后在惩罚后重新插入胶水以便下面的列表看到它。在小页面里面你可以用去除胶水\unskip但假设这真的是为了主垂直列表把它留在那里但留有负空间。

在此处输入图片描述

\documentclass{article}

\begin{document}
\begin{minipage}[t]{.495\linewidth}
  \textbf{Allowing page breaks:}
  \begin{trivlist}\item AAA \end{trivlist}
  \begin{trivlist}\item AAA \end{trivlist}
\end{minipage}
%
\begin{minipage}[t]{.495\linewidth}
  \textbf{Disallowing page breaks:}
  \begin{trivlist}\item AAA \end{trivlist}
\ifnum\lastnodetype=11 % glue
\skip0=\lastskip
\vskip-\skip0
  \nopagebreak
\vskip\skip0
\else
\nopagebreak
\fi
  \begin{trivlist}\item AAA \end{trivlist}
\end{minipage}
\end{document}

相关内容