UK TeX FAQ -- question label complist

### How to reduce list spacing

Lamport's book lists various parameters for the layout of list (things like `\``topsep`, `\``itemsep` and `\``parsep`), but fails to mention that they're set automatically within the list itself. It works by each list executes a command `\``@list``<depth>` (the depth appearing as a lower-case roman numeral); what's more, `\``@listi` is usually reset when the font size is changed. As a result, it's rather tricky for the user to control list spacing; of course, the real answer is to use a document class designed with more modest list spacing, but we all know such things are hard to come by. The memoir class wasn't designed for more compact lists per se, but offers the user control over the list spacing.

There are packages that provide some control of list spacing, but they seldom address the separation from surrounding text (defined by `\``topsep`). The expdlist package, among its many controls of the appearance of `description` lists, offers a compaction parameter (see the documentation); the mdwlist package offers a `\``makecompactlist` command for users' own list definitions, and uses it to define compact lists `itemize*`, `enumerate*` and `description*`. In fact, you can write lists such as these commands define pretty straightforwardly - for example:

>     \newenvironment{itemize*}%
>       {\begin{itemize}%
>         \setlength{\itemsep}{0pt}%
>         \setlength{\parskip}{0pt}}%
>       {\end{itemize}}

The paralist package provides several approaches to list compaction:

- its `asparaenum` environment formats each item as if it were a paragraph introduced by the enumeration label (which saves space if the item texts are long);
- its `compactenum` environment is the same sort of compact list as is provided in expdlist and mdwlist; and
- its `inparaenum` environment produces a list "in the paragraph", i.e., with no line break between items, which is a great space-saver if the list item texts are short.

The package will manipulate its `enumerate` environment labels just like the enumerate package does.

Paralist also provides `itemize` equivalents (`asparaitem`, etc.), and `description` equivalents (`asparadesc`, etc.).

The ultimate in compaction (of every sort) is offered by the savetrees package; compaction of lists is included. The package's prime purpose is to save space at every touch and turn: don't use it if you're under any design constraint whatever!

The expdlist, mdwlist and paralist packages all offer other facilities for list configuration: you should probably not try the "do-it-yourself" approaches outlined below if you need one of the packages for some other list configuration purpose.

For ultimate flexibility (including manipulation of `\``topsep`), the enumitem package permits adjustment of list parameters using a "key=<value>" format; so for example, one might write

>     \usepackage{enumitem}
>     ...
>     \begin{enumerate}[topsep=0pt, partopsep=0pt]
>     \item ...  ...
>     \end{enumerate}

to suppress all spacing above and below your list. Enumitem also permits manipulation of the label format in a more "basic" manner than the enumerate package does.

`enumerate.sty`
  Distributed as part of macros/latex/required/tools (zip, browse)
`enumitem.sty`
  macros/latex/contrib/enumitem (zip, browse)
`expdlist.sty`
  macros/latex/contrib/expdlist (zip, browse)
`memoir.cls`
  macros/latex/contrib/memoir (zip, browse)
`mdwlist.sty`
  Distributed as part of macros/latex/contrib/mdwtools (zip, browse)
`paralist.sty`
  macros/latex/contrib/paralist (zip, browse)
`savetrees.sty`
  macros/latex/contrib/savetrees (zip, browse)

This question on the Web: http://www.tex.ac.uk/cgi-bin/texfaq2html?label=complist