大多数时候,我喜欢段落之间有一点间距,设置\parskip
为 5pt。
但是,我希望我的列表成为前面的文本段落的一部分,但其中的 5pt 来自下一段。
它们看起来应该是这样的:
A paragraph (precedint)
Another paragraph with a list
* an item
* another item
Yet another paragraph (following)
并且不喜欢
A paragraph (precedint)
Another paragraph with a list
<I don´t want this space>
* an item
* another item
Yet another paragraph (following)
据我了解,列表有一个\topsep
添加在前面的文本和后面的文本之间,以及\parskip
和\partopsep
。
我看不出如何强制执行像“bottomsep”这样的行为,因为根据 LaTeX 书和 enumitem 手册(\topsep
+ \parskip
[+ \partopsep
]),前面的文本和后面的文本的距离是相同的。
答案1
我认为 OP 实际上并不关心为什么没有\bottomsep
宏,而是关心如何解决他们面临的间距问题。
正如OP正确指出的那样,\topsep + \parskip
在每个之前和之后添加itemize
。使用该选项nosep
将删除所有垂直间距,但将保留\parskip
每个之前和之后的间距itemize
。
因此,我们可以做的是使用该选项并在列表前before
添加等于长度的负间距:\parskip
\documentclass{article}
\setlength{\parskip}{5pt}
\usepackage{enumitem}
\setlist[itemize]{nosep % removes all spacing, except for \parskip
, before={\vspace*{-\parskip}} %
}
\begin{document}
Some text
\begin{itemize}
\item Hello
\item Bye
\begin{itemize}
\item Hello
\item Bye
\end{itemize}
\item Hello
\end{itemize}
Some more text
Even more text
\end{document}
答案2
我找到了一个解决方案:
\setlength{\parskip}{5pt}
\usepackage{enumitem}
\setlist[itemize]{noitemsep%
, topsep=-5pt%
,after=\newline%
}%
这是最好的解决方案吗?