下面的代码说明了我的问题。我已经删除了很多分隔列表的空间,但如果我在列表后面立即有一行文本,那么这行文本就会被推高,以至于与最后一个列表项重叠。我可以通过添加\setlist[enumerate, 1]{after=\vspace*{10pt}}
但如果有不列表下方的行。显然我可以通过手动添加空格来临时修复它,但是必须向规范中添加参数以解决此问题的方法\setlist
。感谢您的任何建议。
\documentclass{amsart}
\parindent=0 pt
\parskip=12 pt
\usepackage{lipsum}
\usepackage{enumitem}
\def\myTopSep{-8pt}
\def\myItemSep{0ex}
\def\myParSep{0ex}
\def\myParTopSep{0ex}
\setlist[enumerate]{topsep=\myTopSep,itemsep=\myItemSep,partopsep=\myParTopSep,parsep=\myParSep}
\begin{document}
\lipsum[1][1-3]
\begin{enumerate}
\item one
\item two
\begin{enumerate}
\item three
\item four
\end{enumerate}
This is a line
\item one
\item two
\begin{enumerate}
\item three
\item four
\end{enumerate}
\item one
\item two
\end{enumerate}
\par
Now I'm going to add \verb+\setlist[enumerate, 1]{after=\vspace*{10pt}}+ etc
\par
\lipsum[1][1-3]
\setlist[enumerate, 1]{after=\vspace*{10pt}}
\setlist[enumerate, 2]{after=\vspace*{10pt}}
\lipsum[1][1-3]
\begin{enumerate}
\item one
\item two
\begin{enumerate}
\item three
\item four
\end{enumerate}
This is a line
\item one
\item two
\begin{enumerate}
\item three
\item four
\end{enumerate}
\item one
\item two
\end{enumerate}
\lipsum[1][1-3]
\end{document}
答案1
我认为根本问题在于您设置了\parskip=12 pt
或更多 LaTeX-y,。\parskip=1\baselineskip
在我看来,如果这是文档其他部分的正确值,那么它也应该是列表环境(如enumerate
和)的正确值itemize
。
如果您确实必须消灭列表环境周围的非零值,则可以为1 级列表环境\parskip
设置选项before=\vspace{-1\baselineskip}
和,仅为2 级(及以上)列表环境设置选项和。after=\vspace{-1\baselineskip}
nosep
nosep
另外:设置选项nosep
必须比设置topsep
、itemsep
、partopsep
和parsep
更容易0pt
。
\documentclass{amsart}
\parindent=0pt
\parskip=1\baselineskip
\usepackage{lipsum}
\usepackage{enumitem}
\setlist[enumerate,1]{nosep,
before=\vspace{-1\baselineskip},
after =\vspace{-1\baselineskip}}
\setlist[enumerate,2]{nosep}
\begin{document}
\lipsum[1][1-4] % filler text
\begin{enumerate}
\item one
\item two
\begin{enumerate}
\item three
\item four
\end{enumerate}
This is a line
\item one
\item two
\begin{enumerate}
\item three
\item four
\end{enumerate}
\item one
\item two
\end{enumerate}
\lipsum[1][5-8] % filler text
\end{document}