68

I use this code now:

\documentclass[11pt]{article}
\usepackage{enumerate}
\begin{document}
\begin{enumerate}
\item a
\item b
\item c
\end{enumerate}
\end{document}

I want to decrease the line spacing between a,b,c. Can someone help me do this?

And how do I remove the space BEFORE enumerate?

0

4 Answers 4

99

Better to use the latest and powerful enumitem package.

\documentclass[11pt]{article}
\usepackage{enumitem}
\begin{document}
Some text here.
\begin{enumerate}[topsep=0pt,itemsep=-1ex,partopsep=1ex,parsep=1ex]
\item a
\item b
\item c
\end{enumerate}
Some more text.
\end{document}

Here you may have to adjust these parameters as per your needs:

  1. \topsep: space between first item and preceding paragraph.
  2. \partopsep: extra space added to \topsep when environment starts a new paragraph.
  3. \itemsep: space between successive items.

In the above code the parameters are set locally. If you want, you can make them global with the help of \setlist[enumerate]{topsep=0pt,itemsep=-1ex,partopsep=1ex,parsep=1ex}. For details, refer the enumitem manual at texdoc.

You can suppress all of these spaces by using nolistsep.

\documentclass[11pt]{article}
\usepackage{enumitem}
\begin{document}
\noindent Some text here.
\begin{enumerate}[nolistsep]
\item a
\item b
\item c
\end{enumerate}
Some more text.
\end{document}

enter image description here

1
  • Is it possible to do this same manipulations in the enumerate package instead of enumitem?
    – Jim
    May 11, 2020 at 2:12
31

Instead of using a package, you can also use the built-in features and define a new environment

\newenvironment{tight_enumerate}{
\begin{enumerate}
  \setlength{\itemsep}{0pt}
  \setlength{\parskip}{0pt}
}{\end{enumerate}}

This will nicely squeeze the items close together. If you need them even closer, you can use negative numbers, but be careful not to cause overlapping text.

3
  • How can I use this approach to affect whole document?
    – 71GA
    Sep 11, 2015 at 17:20
  • If you replace all enumerates in the document with tight_enumerate it should work out. If you don't want to do that you can also use \renewenvironment{enumerate} instead to overwrite the original enumerate settings (for this document)
    – Michiel
    Sep 21, 2015 at 8:52
  • I think this is correct way of doing it. In my case, I only wanted to modify enumerate for only specific list not all. Sep 21, 2015 at 20:51
17

enumitem offers ready-made options for eliminating the space between items and paragraphs within the list (noitemsep) or all vertical spacing (nosep):

Standard enumitem options for killing vertical spacing

\documentclass[11pt]{article}
\usepackage{enumitem, kantlipsum}
\begin{document}
  \paragraph{List without vertical spacing between items and paragraphs:}
  \kant[2]
  \begin{enumerate}[noitemsep]
    \item a
    \item b
    \item c
  \end{enumerate}
  Something after the list.

  \paragraph{List without vertical spacing:}
  \kant[3]
  \begin{enumerate}[nosep]
    \item a
    \item b
    \item c
  \end{enumerate}
  Something after the list.
\end{document}

Note, however, that nolistsep is now considered deprecated and should not be used.

9

Use the enumitem package instead of enumerate

\usepackage[shortlabels]{enumitem}

then it will support the same suntax as the enumerate package.

The enumerate package does not provide any extra configurations other than the label.

1
  • Ah that worked great. enumitem was breaking some of my previous enumerate commands. Apr 14, 2015 at 23:47

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .