The paralist
package provides compressed lists, the new environments are called compactitem
, compactenum
and compactdesc
. Use it just like the corresponding standard list environments. It can even keep lists within a paragraph.
The enumitem
provides more features but also compressed lists, for instance by
\usepackage{enumitem}
\setlist{nolistsep,leftmargin=*}
\setlist
modifies all lists, \setitemize
just itemize
etc. It takes an optional parameter that stands for the level that should be changed, default it alters all levels. Since enumitem
allows a lot more customization I prefer it over paralist
, but the latter is easier to use and fits better to the question here.
Based on the answer to this other question, here is a solution that preserves even distance between baselines.
\makeatletter
\let\tightset@fontsize\set@fontsize
\patchcmd\tightset@fontsize{#3}{#2}{}{}
\newcommand{\tighten}{\let\set@fontsize\tightset@fontsize
\fontsize{\f@size}{\f@baselineskip}\selectfont}
\makeatother
Then the list can be input as
\begin{enumerate}[parsep=0pt]
\item List 1
\begin{enumerate}[label=\Alph*.,before*=\tighten,noitemsep,topsep=0pt]
\item Item Aabcg
\item Item Bagcb
\item Item Cabcg
\item Item Dagcb
\end{enumerate}
\end{enumerate}
Minimal example:
\documentclass[a4paper]{article}
\usepackage{etoolbox,enumitem}
\makeatletter
\let\tightset@fontsize\set@fontsize
\patchcmd\tightset@fontsize{#3}{#2}{}{}
\newcommand{\tighten}{\let\set@fontsize\tightset@fontsize
\fontsize{\f@size}{\f@baselineskip}\selectfont}
\makeatother
\begin{document}
\begin{enumerate}[parsep=0pt]
\item List 1
\begin{enumerate}[label=\Alph*.,before*=\tighten,nolistsep,topsep=0pt]
\item Item A
\item Item B
\item Item C
\item Item D
\end{enumerate}
\end{enumerate}
\end{document}
Checking the output with \showbox
proves that the spacing is the same: between the "List 1" line and the "Item A" line, TeX inserts 3.16669pt glue, exactly the same as the glue inserted between the "Item A" and the "Item B" lines (and the others as well), which is right, since those lines have no descenders. The height of the "Item A" line is 6.83331pt, which added to 3.16669pt gives 10pt.
There might be a slight difference in a real document if \topsep
in the inner list is not set to zero (the nolistsep
key sets it to 0pt plus 0.1pt
), but not with the article class which does \raggedbottom
.
Best Answer
With the
enumitem
package, you can add more space between items as follows:An
itemsep
of5em
is obviously insanely big, but it shows what can be done.If you want the change to be global (i.e. apply to all lists) then you could instead add
\setitemize{itemsep=5em}
to your preamble. But with a sensible itemsep, obviously.