假设我们有一段文本,它在末尾引入了一些垂直间距(例如,某个环境的头部)。在该空间之后,出现了一个枚举,它也会引入自己的垂直间隙。我们认为这两个间隙加在一起太多了,并决定删除插入的垂直间隙enumerate
(例如,因为这个间隙有据可查;参见 enumitem.pdf 的图 1):
\documentclass{article}
\pagestyle{empty}
\usepackage{enumitem}
\begin{document}
Text before the list.\\%%% the explicit newline is not really present in a larger example. In this MWE, it's simply for demonstration that a vertical gap above enumerate is introduced somehow.
\vskip-\topsep\vskip-\parskip\vskip-\partopsep\vskip0pt plus.5ex minus.5ex
\begin{enumerate}
\item First item. It's long and includes formulas and can include sub-lists.
\item Second item. It's long and includes formulas and can include sub-lists.
\end{enumerate}
\the\topsep\\
\the\parskip\\
\the\partopsep
\end{document}
运行lualatex
结果
这似乎在一个小的例子中效果很好,因为有足够的垂直空间,而且只有一页,所以忽略了所有的拉伸和收缩值。我看到减号也会否定拉伸和收缩值;根据我的理解,\vskip-\topsep\vskip-\parskip\vskip-\partopsep
加上环境的开始enumerate
,实际上会抵消所有垂直跳跃的总和,包括拉伸和收缩值。如果我错了,请纠正我!因为我们仍然希望在列表开始之前至少有一点弹性,所以我们通过 添加了 ½ ex 的弹性\vskip0pt plus.5ex minus.5ex
。
那么,在大型示例中,拉伸和收缩值确实发挥了作用,情况又如何呢?有没有\vskip-\topsep\vskip-\parskip\vskip-\partopsep\vskip0pt plus.5ex minus.5ex
一种好方法可以消除多余的垂直间隙并保持一点弹性?如果是这样,有没有更好的方法?如果没有,该怎么办?
(顺便说一句,我们没有更改相关的跳过\topsep
、\parksip
和\partopsep
(无论是直接更改还是通过 enumitem 的命令更改),因为这两项的内容通常可能会使用这些跳过。)