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?

user32451
  • 973

4 Answers4

100

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 '20 at 02: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.

Michiel
  • 575
  • How can I use this approach to affect whole document? – 71GA Sep 11 '15 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 '15 at 08: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. – Joarder Kamal Sep 21 '15 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.

cfr
  • 198,882
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.

daleif
  • 54,450