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:
The paralist package provides several approaches to list compaction:\newenvironment{itemize*}% {\begin{itemize}% \setlength{\itemsep}{0pt}% \setlength{\parskip}{0pt}}% {\end{itemize}}
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);
compactenum
environment is the same sort of
compact list as is provided in expdlist and
mdwlist; and
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.
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
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.\usepackage{enumitem} ... \begin{enumerate}[topsep=0pt, partopsep=0pt] \item ... ... \end{enumerate}
This question on the Web: http://www.tex.ac.uk/cgi-bin/texfaq2html?label=complist