Como ajustar o espaçamento de listas

O livro de Lamport lista vários parâmetros para o layout de listas (coisas como \topsep, \itemsep e \parsep), mas falha ao não mencionar que eles são definidos automaticamente dentro das listas padrão (definidas pelo LaTeX). Isso acontece porque cada lista executa um comando \@listdepth (a profundidade aparecendo como um numeral romano em letra minúscula); além disso, o \@listi do primeiro nível geralmente é redefinido quando o tamanho da fonte é alterado. Consequentemente, fica bem complicado para o usuário controlar o espaçamento em listas. Com certeza, a solução verdadeira é usar uma classe de documento projetada com um espaçamento de lista mais modesto, mas todos nós sabemos que essas coisas são difíceis de encontrar. A classe memoir não fornece listas mais compactas, mas oferece ao usuário controle sobre o espaçamento de lista usando \firmlist e \tightlist (e as versões com *deles); veja a seção 8.6 do manual de memoir.

Existem pacotes que fornecem algum controle do espaçamento de listas, mas eles raramente abordam a separação da lista em relação ao texto adjacente (definido por \topsep). O pacote expdlist , entre seus muitos controles da aparência de listas de description, oferece um parâmetro de compactação (veja a documentação); o pacote mdwlist oferece um comando \makecompactlist para as definições de lista próprias dos usuários, e o utiliza para definir listas compactas dos tipos itemize*, enumerate* and description*. Na verdade, você pode escrever listas tais como definidas por esses comandos de forma bem direta — por exemplo:

\newenvironment{itemize*}%
  {\begin{itemize}%
    \setlength{\itemsep}{0pt}%
    \setlength{\parskip}{0pt}}%
  {\end{itemize}}
O pacote paralist fornece vários métodos para compactação de listas: O pacote manipula os rótulos de seu próprio ambiente enumerate , assim como faz o pacote enumerate.

O Paralist também fornece equivalentes ao itemize (asparaitem, etc.), e equivalentes ao description (asparadesc, etc.).

O pacote multenum oferece uma forma mais regular do inparaenum do paralist; você define uma grade nocional na qual as entradas da lista devem aparecer, e os itens da lista sempre aparecerão nas posições dessa grade. O efeito é semelhante ao das teclas de ‘tabulação’ de máquinas de escrever tradicionais; o pacote foi desenvolvido para páginas de exemplos ou listas de respostas nos apêndices de um livro.

Os pacotes expdlist, mdwlist e paralist oferecem outros recursos para configuração de lista: você não deve tentar as abordagens do tipo “faça você mesmo” descritas abaixo se for precisar de um dos pacotes para algum outro propósito de configuração de lista.

Para máxima flexibilidade (incluindo manipulação do \topsep), o pacote enumitem permite o ajuste de parâmetros de lista usando um formato tipo “chave=‹valor›”. Por exemplo, pode-se escrever

\usepackage{enumitem}
...
\begin{enumerate}[topsep=0pt, partopsep=0pt]
\item ...
\item ...
\end{enumerate}
para suprimir todo o espaçamento acima e abaixo da sua lista, ou
\usepackage{enumitem}
...
\begin{enumerate}[itemsep=2pt,parsep=2pt]
\item ...
\item ...
\end{enumerate}
para definir o espaçamento entre itens e entre parágrafos dentro de itens. O Enumitem também permite a manipulação do formato de rótulo de uma forma mais “básica” (e, portanto, mais flexível) do que o pacote enumerate.

O máximo em compactação (de todo tipo) é oferecido pelo pacote savetrees, incluindo compactação de listas. O objetivo principal do pacote é economizar espaço a cada oportunidade: não o utilize se você estiver sob qualquer restrição de design!

enumerate.sty
Distributed as part of 2etools
enumitem.sty
enumitem
expdlist.sty
expdlist
memoir.cls
memoir
memoir manual
memoir-man
mdwlist.sty
Distributed as part of mdwtools
multenum.sty
multenum
paralist.sty
paralist
savetrees.sty
savetrees

This answer last edited: 2012-10-30


Do you have any question? Ask on: latex.net.br - we love qood questions!