Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

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

share|improve this question

4 Answers 4

up vote 80 down vote accepted

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.

share|improve this answer
5  
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
1  
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
1  
@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

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}
share|improve this answer

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}
share|improve this answer

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}

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.