消除\ begin {itemize}之前的空格[关闭]


101

在Latex中,如何消除在逐项列出之前插入的空格?

\begin{itemize} % produces lots of vertical space
\item ...
\item ...
\end{itemize}

6
我投票结束这个问题是因为离题,因为它更适合TeX-LaTeX
Werner '18


tex.stackexchange.com/q/86054/157031中对此问题有正确答案。(PatrickT共享的链接也很重要)
Cyriac Antony

Answers:


64

\vspace{-5mm}逐项尝试之前。


106
\ vspace是毁灭之路。您不能与LaTeX战斗,而应该拥抱它。
埃里克

26
是的,但是有时候战斗太难应付了。
Stefano Borini,2009年

30
您的意思是拥抱实在太难处理了,打架也比较容易:-)
Joachim Breitner

1
这应该是\ vspace {-3.5mm}
杰森

10
@Jason和所有人:以下Paolo的回答也很简单,而且要好得多:\ vspace {-\ topsep}
Joce 2014年

114

解决此类问题的方法是重新定义相关列表环境。这个enumitem包是我最喜欢做这种事情的方式。它具有许多可以更改的选项和参数,无论是对于所有列表还是单独针对每个列表。

这是我想您想要做的事情(类似):

\ usepackage {enumitem}
\ setlist {nolistsep}

要么

\ usepackage {enumitem}
\ setlist {nosep}

2
完善。就像[Stefano Borini]的答案一样简单,但是即使存在嵌套列表,此解决方案也可以使用。谢谢。
devsnd 2012年

27
即使我将选项设置为[topsep = 0px,partopsep = 0px],列表之前的垂直空间仍然存在-因此,恕我直言,此答案不起作用。
罗伯特

2
@Robert,为什么不使用负数?这对我\begin{enumerate}[topsep=-5px,partopsep=0px] ...
有用

@Robert:根据enumitem文档,列表前后的垂直空间由给出\parsep + \topsep [+ \partopsep],因此您必须设置\topsep\partopsep设置为负数以补偿的任何正值\parsep
balu

44

\vspace{-\topsep}之前使用\begin{itemize}

使用\setlength{\parskip}{0pt} \setlength{\itemsep}{0pt plus 1pt}\begin{itemize}

对于列表后的空格,请使用\vspace{-\topsep}after \end{itemize}

\vspace{-\topsep}
\begin{itemize}
  \setlength{\parskip}{0pt}
  \setlength{\itemsep}{0pt plus 1pt}
  \item ...
  \item ...
\end{itemize}
\vspace{-\topsep}

5
真好!不幸的是,enumitem与Beamer不兼容,所以我喜欢与包装无关的方法。topsep对我来说太激进了,所以我选择了\ vspace {-0.5 \ topsep}`
craq 2015年

14

完成此操作的最干净的方法是使用enumitem软件包(https://ctan.org/pkg/enumitem)。例如,

在此处输入图片说明

\documentclass{article}
\usepackage{enumitem}% http://ctan.org/pkg/enumitem
\begin{document}
\noindent Here is some text and I want to make sure
there is no spacing the different items. 
\begin{itemize}[noitemsep]
  \item Item 1
  \item Item 2
  \item Item 3
\end{itemize}
\noindent Here is some text and I want to make sure
there is no spacing between this line and the item
list below it.
\begin{itemize}[noitemsep,topsep=0pt]
  \item Item 1
  \item Item 2
  \item Item 3
\end{itemize}
\end{document}

此外,如果要在列表中全局使用此设置,则可以使用

\usepackage{enumitem}% http://ctan.org/pkg/enumitem
\setlist[itemize]{noitemsep, topsep=0pt}

但是,请注意,此软件包不能与用于在Latex中进行演示的投影仪软件包配合使用。


正如其他地方所指出(并已纠正)的那样,最新版本的enumitem包含[nosep]选项,该选项旨在删除列表上方和下方以及项目之间的空间...但是如果您还使用此选项,则不会这样做。 parskip软件包。赫伯特·沃斯(HerbertVoß)在ctt上发布了此解决方案-\ setlist {partopsep =-\ parskip,parsep = 0pt}
彼得·弗林

13

LaTeX的“适当”方法是使用允许您指定所需间距的软件包。有几个这样的程序包,这两页链接到它们的列表...


4
指向CTAN(ctan.org)从来不是一个坏主意。
dmckee ---前主持人小猫,2009年

20
但是,通常认为在乳胶中有一种“正确的”方法来做任何事情是个坏主意;)。
cheshirekow 2012年

7

我对paralist软件包感到非常满意。除了增加消除空间的选项外,还增加了其他一些不错的功能,例如紧凑的逐项列出,枚举和描述环境。


1
特别是,Fabian指的是天冬酰胺,天冬酰胺和天冬酰胺,以及其他事物,例如致密,致密和致密。aspara仍会创建一个新段落。如果像我一样,如果将它们放在没有前一段的桌子中,这仍然有点烦人,但是我怀疑有一个不太丑陋的方法可以解决此问题。
Thomas Levine 2012年

6
\renewcommand{\@listI}{%
\leftmargin=25pt
\rightmargin=0pt
\labelsep=5pt
\labelwidth=20pt
\itemindent=0pt
\listparindent=0pt
\topsep=0pt plus 2pt minus 4pt
\partopsep=0pt plus 1pt minus 1pt
\parsep=0pt plus 1pt
\itemsep=\parsep}

2
这会减少列表周围的大量空白,但无法删除列表本身正上方和下方的某些空白。
jevon 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.