# Vertical space in lists

What is the best way to globally change the amount of vertical space between items in list environments?

-

The easiest way to do this is to use the enumitem package.

\documentclass{article}
\usepackage{lipsum} % for dummy text
\usepackage{enumitem}
\setlist{nosep} % or \setlist{noitemsep} to leave space around whole list

\begin{document}
\lipsum[1]
\begin{enumerate}
\item foo
\item bar
\end{enumerate}
\lipsum[2]
\end{document}


The enumitem package also allows you to set the list spacing for a particular type or level of list, or for any particular individual list:

\setlist[2]{noitemsep} % sets the itemsep and parsep for all level two lists to 0
\setenumerate{noitemsep} % sets no itemsep for enumerate lists only
\begin{enumerate}[noitemsep] % sets no itemsep for just this list
...
\end{enumerate}


The nosep parameter removes all vertical spacing within and around the list; the noitemsep parameter removes spacing from items but leaves space around the whole list.

The package also allows complete control over all other aspects of the list formatting too.

-
This is probably the best package for the job. It accepts key value arguments so you could say \begin{enumerate}[itemsep=1pt, topsep=12pt, partopsep=0pt] etc, maybe you should expand a bit in your answer. –  Yiannis Lazarides Feb 9 '11 at 16:01
@Yiannis The question did ask for a global change. But I've added some other examples along the lines of what you suggest. Thanks. –  Alan Munn Feb 9 '11 at 16:11
Without using this package I can specify the type of item numbering as an optional parameter, e.g. \begin{itemize}[(i)]. How do I do this while using enumitem? Right now I get an error: missing endcsname. –  Will May 23 '12 at 4:00
@Will The syntax you suggest is that of the enumerate package. You can emulate that package with enumitem by loading it with the [shortlabels] option (i.e. \usepackage[shortlabels]{enumitem}) But the recommended way is to use the label key: \begin{enumerate}[label={(\roman*)}]. See the enumitem documentation for more information. –  Alan Munn May 23 '12 at 4:06
Perfect, thank you! –  Will May 25 '12 at 2:13

the least demanding way to do it (no further packages or whatsoever needed) is to define your own environment like this ...

\newenvironment{myitemize}
{ \begin{itemize}
\setlength{\itemsep}{0pt}
\setlength{\parskip}{0pt}
\setlength{\parsep}{0pt}     }
{ \end{itemize}                  }


... and use it like this ...

\begin{myitemize}
\item one
\item two
\item three
\end{myitemize}

-

You can use paralist package and use any of its 'compact' lists (compactitem, compactenum, compactdesc).

\documentclass{article}
\usepackage{paralist}
\begin{document}
Regular itemize
\begin{itemize}
\item First
\item Second
\item Third
\end{itemize}

Compactitem
\begin{compactitem}
\item First
\item Second
\item Third
\end{compactitem}
\end{document}

-

Load package paralist and set

\usepackage{paralist}
\let\itemize\compactitem
\let\enditemize\endcompactitem
\let\enumerate\compactenum
\let\endenumerate\endcompactenum
\let\description\compactdesc
\let\enddescription\endcompactdesc
\pltopsep=\medskipamount
\plitemsep=1pt
\plparsep=1pt


or load package enumitem and \setlist{nosep}

-