Elimine o espaço antes de \ begin {itemize} [fechado]

101

No Latex, como elimino o espaço inserido antes de itemizar?

\begin{itemize} % produces lots of vertical space
\item ...
\item ...
\end{itemize}
Alexandru
fonte
6
Estou votando para fechar esta questão como fora do tópico porque é mais adequado para TeX - LaTeX .
Werner
Existem respostas corretas para essa pergunta em tex.stackexchange.com/q/86054/157031 . (Link compartilhado por PatrickT também está no ponto)
Cyriac Antony

Respostas:

64

Experimente \vspace{-5mm}antes de detalhar.

Stefano Borini
fonte
106
\ vspace é o caminho para a ruína. Você não deve lutar contra o LaTeX, mas sim abraçá-lo.
Eric
26
sim, mas às vezes a luta é demais para suportar.
Stefano Borini
30
Quer dizer que o abraço é demais para aguentar e a luta é mais fácil :-)
Joachim Breitner
1
Deve ser \ vspace {-3,5 mm} .
Jason
10
@Jason e tudo: a resposta de Paolo abaixo também é simples e muito melhor: \ vspace {- \ topsep}
Joce
114

A maneira de corrigir esse tipo de problema é redefinir o ambiente de lista relevante. O enumitempacote é minha maneira favorita de fazer esse tipo de coisa; ele tem muitas opções e parâmetros que podem ser variados, seja para todas as listas ou para cada lista individualmente.

Veja como fazer (algo como) o que acho que você quer:

\ usepackage {enumitem}
\ setlist {nolistsep}

ou

\ usepackage {enumitem}
\ setlist {nosep}
Will Robertson
fonte
2
Perfeito. Tão fácil quanto a resposta de [Stefano Borini], mas essa solução funciona mesmo se houver listas aninhadas. Obrigado.
devsnd
27
Mesmo se eu definir as opções para [topsep = 0px, partopsep = 0px], o espaço vertical antes da lista ainda está lá - portanto, IMHO, esta resposta não funciona.
Robert
2
@Robert, por que não usar um número negativo? Isso funciona para mim: \begin{enumerate}[topsep=-5px,partopsep=0px] ...
zkurtz
@Robert: De acordo com os documentos enumitem, o espaço vertical antes e depois de uma lista é fornecido por \parsep + \topsep [+ \partopsep], então você deve definir \topsepou \partopsepcomo um número negativo para compensar qualquer valor positivo de \parsep.
balu
44

Use \vspace{-\topsep}antes \begin{itemize}.

Use \setlength{\parskip}{0pt} \setlength{\itemsep}{0pt plus 1pt}depois \begin{itemize}.

E para o espaço após a lista, use \vspace{-\topsep}depois \end{itemize}.

\vspace{-\topsep}
\begin{itemize}
  \setlength{\parskip}{0pt}
  \setlength{\itemsep}{0pt plus 1pt}
  \item ...
  \item ...
\end{itemize}
\vspace{-\topsep}
PeaGon
fonte
5
Agradável! Infelizmente, enumitem é incompatível com o beamer, então gosto de métodos independentes de pacote. topsepera muito agressivo para mim, então optei por \ vspace {-0.5 \ topsep} `
craq
14

A maneira mais limpa de fazer isso é usar o pacote enumitem ( https://ctan.org/pkg/enumitem ). Por exemplo,

insira a descrição da imagem aqui

\documentclass{article}
\usepackage{enumitem}% http://ctan.org/pkg/enumitem
\begin{document}
\noindent Here is some text and I want to make sure
there is no spacing the different items. 
\begin{itemize}[noitemsep]
  \item Item 1
  \item Item 2
  \item Item 3
\end{itemize}
\noindent Here is some text and I want to make sure
there is no spacing between this line and the item
list below it.
\begin{itemize}[noitemsep,topsep=0pt]
  \item Item 1
  \item Item 2
  \item Item 3
\end{itemize}
\end{document}

Além disso, se você quiser usar essa configuração globalmente nas listas, você pode usar

\usepackage{enumitem}% http://ctan.org/pkg/enumitem
\setlist[itemize]{noitemsep, topsep=0pt}

No entanto, observe que este pacote não funciona bem com o pacote beamer que é usado para fazer apresentações em Latex.

user3613932
fonte
Conforme observado (e corrigido) em outro lugar, as versões recentes de enumitem incluem uma opção [nosep] que é projetada para remover espaço acima e abaixo da lista, bem como entre os itens ... mas não faz isso se você também estiver usando o pacote parskip. Herbert Voß postou uma solução para isso em ctt - \ setlist {partopsep = - \ parskip, parsep = 0pt}
Peter Flynn
13

A maneira "apropriada" do LaTeX de fazer isso é usar um pacote que permite que você especifique o espaçamento que deseja. Existem vários desses pacotes, e essas duas páginas possuem links para listas deles ...

Stobor
fonte
4
Nunca é uma má ideia apontar para CTAN ( ctan.org ).
dmckee --- ex-moderador gatinho
20
No entanto, geralmente é uma má idéia afirmar que existe uma maneira "adequada" de fazer qualquer coisa no látex;).
cheshirekow
7

Estou muito feliz com o pacote do paralista . Além de adicionar a opção de eliminar o espaço, ele também adiciona outras coisas interessantes, como versões compactas de itens, enumerar e descrever ambientes.

Fabian Steeg
fonte
1
Especificamente, Fabian está se referindo a asparaitem, asparaenum e asparadesc e a outras coisas como compactittem, compactenum e compactdesc. aspara cria um novo parágrafo ainda. Isso ainda é um pouco irritante se você os colocar em uma tabela sem um parágrafo anterior, como eu, mas suspeito que haja um hack menos feio para consertar isso.
Thomas Levine
6
\renewcommand{\@listI}{%
\leftmargin=25pt
\rightmargin=0pt
\labelsep=5pt
\labelwidth=20pt
\itemindent=0pt
\listparindent=0pt
\topsep=0pt plus 2pt minus 4pt
\partopsep=0pt plus 1pt minus 1pt
\parsep=0pt plus 1pt
\itemsep=\parsep}
Alexey Malistov
fonte
2
Isso reduz muitos dos espaços em branco ao redor da lista, mas não remove alguns dos espaços em branco imediatamente acima e abaixo da própria lista.
jevon