![具有不同级别条目的垂直间距(使用 enumitem)](https://linux22.com/image/340409/%E5%85%B7%E6%9C%89%E4%B8%8D%E5%90%8C%E7%BA%A7%E5%88%AB%E6%9D%A1%E7%9B%AE%E7%9A%84%E5%9E%82%E7%9B%B4%E9%97%B4%E8%B7%9D%EF%BC%88%E4%BD%BF%E7%94%A8%20enumitem%EF%BC%89.png)
我目前正在研究列表中的垂直空间并稍微改变一下间距。我想出了这个答案:列表中的垂直空间
对于我来说,这个包工作得很好enumitem
。
但是我尝试编写一个两级(也可能是三级)列表。如下所示:
\documentclass[a4paper, 12pt]{report}
\usepackage[onehalfspacing]{setspace}
\usepackage{enumitem}
\renewcommand{\labelitemii}{$\diamond$}
...
\begin{itemize}[itemsep=5pt,parsep=0pt]
\item item sep \the\itemsep{} and parsep \the\parsep
\begin{itemize}
\item item sep \the\itemsep{} and parsep \the\parsep
\end{itemize}
\end{itemize}
正如你所看到的,在第 1 级的开头定义线条的分离会改变分离,但它没有将其更改为第 2 级。我想避免在每个级别都添加后缀[itemsep=5pt,parsep=0pt]
,因为我的列表中不同级别有各种项目。
对我来说重要的是我不想在全球范围内改变它(!)对于整个文档(!),对于其他列表,我仍然希望使用标准值。这就是为什么\setlist{itemsep=5pt,parsep=0pt}
文档开头的内容没有帮助的原因。
问题:有人能告诉我如何使用像上面这样的代码来自动改变所有级别的间距吗?(不仅仅是第 1 级)
我猜解决方案在于创建一个类似的个人环境\newenvironment{myitemize}
,但我不确定并且不知道如何做到这一点。
我将非常感激任何帮助,提前致谢!
答案1
您可以对 \setlist 进行分组。或者使用 before-key 将值传递给嵌套列表:
\documentclass[a4paper, 12pt]{report}
\usepackage[onehalfspacing]{setspace}
\usepackage{enumitem}
\renewcommand{\labelitemii}{$\diamond$}
\begin{document}
\begin{itemize}[itemsep=5pt,parsep=0pt,
before={\setlist{itemsep=5pt,parsep=0pt}}]
\item item sep \the\itemsep{} and parsep \the\parsep
\begin{itemize}
\item item sep \the\itemsep{} and parsep \the\parsep
\end{itemize}
\end{itemize}
Back to the old values:
\begin{itemize}
\item item sep \the\itemsep{} and parsep \the\parsep
\end{itemize}
\begingroup
\setlist{itemsep=5pt,parsep=0pt}
\begin{itemize}
\item item sep \the\itemsep{} and parsep \the\parsep
\begin{itemize}
\item item sep \the\itemsep{} and parsep \the\parsep
\end{itemize}
\end{itemize}
\endgroup
Back to the old values:
\begin{itemize}
\item item sep \the\itemsep{} and parsep \the\parsep
\end{itemize}
\end{document}