考虑以下代码
\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