在没有包的列表中更改 \topsep

在没有包的列表中更改 \topsep

考虑以下代码

\documentclass{article}
\usepackage{lipsum}
\begin{document}

\setlength{\topsep}{3\baselineskip}
%\setlength{\partopsep}{3\baselineskip}

\hrulefill

\begin{enumerate}
\itemsep=20pt
\item \lipsum[2]
\item \lipsum[2]
\end{enumerate}

\end{document} 

我知道有可能\itemsep通过enumitem包进行更改,但我希望有一种方法可以在不需要包的情况下在本地进行更改。

为什么改变长度\topsep对项目前后的垂直空间没有影响,与\partopsep长度不同(删除之前的% \setlength{\partopsep}{3\baselineskip})。

答案1

这是因为 是由类在名为、、等\topsep的内部宏中定义的,具体取决于列表的嵌套深度。此宏在 处调用。另一方面,是在类中全局定义的。\@listi\@listii\@listiii\begin{list}\partopsep

因此,您必须根据嵌套深度更改这些宏。例如:

\makeatletter
\let\orig@listi\@listi
\def\@listi{\orig@listi\topsep=3\baselineskip}
\makeatother

相关内容