Éliminez l'espace avant \ begin {itemize} [fermé]

101

Dans Latex, comment éliminer l'espace inséré avant de détailler?

\begin{itemize} % produces lots of vertical space
\item ...
\item ...
\end{itemize}
Alexandru
la source
6
Je vote pour fermer cette question comme hors sujet car elle est mieux adaptée sur TeX - LaTeX .
Werner
Il y a des réponses correctes à cette question dans tex.stackexchange.com/q/86054/157031 . (Le lien partagé par PatrickT est également sur le point)
Cyriac Antony

Réponses:

64

Essayez \vspace{-5mm}avant la taille.

Stefano Borini
la source
106
\ vspace est le chemin de la ruine. Vous ne devez pas combattre LaTeX, mais plutôt l'adopter.
Eric
26
oui, mais parfois le combat est trop difficile à gérer.
Stefano Borini le
30
Vous voulez dire que l'étreinte est trop difficile à gérer et que le combat est plus facile :-)
Joachim Breitner
1
Cela devrait être \ vspace {-3,5 mm} .
Jason
10
@Jason et tout: la réponse de Paolo ci-dessous est simple aussi et bien meilleure: \ vspace {- \ topsep}
Joce
114

La manière de résoudre ce genre de problème est de redéfinir l'environnement de liste pertinent. Le enumitempackage est ma façon préférée de faire ce genre de chose; il comporte de nombreuses options et paramètres qui peuvent être modifiés, soit pour toutes les listes, soit pour chaque liste individuellement.

Voici comment faire (quelque chose comme) ce que je pense que vous voulez:

\ usepackage {enumitem}
\ setlist {nolistsep}

ou

\ usepackage {enumitem}
\ setlist {nosep}
Will Robertson
la source
2
Parfait. Tout aussi simple que la réponse de [Stefano Borini], mais cette solution fonctionne même s'il y a des listes imbriquées. Je vous remercie.
devsnd
27
Même si je règle les options sur [topsep = 0px, partopsep = 0px], l'espace vertical avant que la liste soit toujours là - par conséquent, à mon humble avis, cette réponse ne fonctionne pas.
Robert
2
@Robert, pourquoi ne pas utiliser un nombre négatif? Cela fonctionne pour moi: \begin{enumerate}[topsep=-5px,partopsep=0px] ...
zkurtz
@Robert: Selon la documentation enumitem, l'espace vertical avant et après une liste est donné par \parsep + \topsep [+ \partopsep], vous devez donc définir \topsepou utiliser \partopsepun nombre négatif pour compenser toute valeur positive de \parsep.
balu le
44

Utiliser \vspace{-\topsep}avant \begin{itemize}.

Utiliser \setlength{\parskip}{0pt} \setlength{\itemsep}{0pt plus 1pt}après \begin{itemize}.

Et pour l'espace après la liste, utilisez \vspace{-\topsep}après \end{itemize}.

\vspace{-\topsep}
\begin{itemize}
  \setlength{\parskip}{0pt}
  \setlength{\itemsep}{0pt plus 1pt}
  \item ...
  \item ...
\end{itemize}
\vspace{-\topsep}
PeaGon
la source
5
Agréable! Malheureusement, enumitem est incompatible avec beamer, donc j'aime les méthodes indépendantes des paquets. topsepétait trop agressif pour moi, alors je suis allé avec \ vspace {-0.5 \ topsep} `
craq
14

Le moyen le plus propre pour vous d'accomplir cela est d'utiliser le package enumitem ( https://ctan.org/pkg/enumitem ). Par exemple,

entrez la description de l'image ici

\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}

De plus, si vous souhaitez utiliser ce paramètre globalement dans les listes, vous pouvez utiliser

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

Cependant, notez que ce package ne fonctionne pas bien avec le package beamer qui est utilisé pour faire des présentations en Latex.

user3613932
la source
Comme indiqué (et corrigé) ailleurs, les versions récentes de enumitem incluent une option [nosep] qui est conçue pour supprimer l'espace au-dessus et en dessous de la liste ainsi qu'entre les éléments ... mais cela ne le fait pas si vous utilisez également le package parskip. Herbert Voß a publié une solution à ce problème sur ctt - \ setlist {partopsep = - \ parskip, parsep = 0pt}
Peter Flynn
13

La "bonne" façon LaTeX de le faire est d'utiliser un package qui vous permet de spécifier l'espacement souhaité. Il existe plusieurs packages de ce type, et ces deux pages renvoient à des listes d'entre eux ...

Stobor
la source
4
Ce n'est jamais une mauvaise idée de pointer vers CTAN ( ctan.org ).
dmckee --- ex-moderator chaton
20
C'est, cependant, généralement une mauvaise idée de prétendre qu'il existe une manière "correcte" de faire quoi que ce soit en latex;).
cheshirekow
7

Je suis très content du paquet paraliste . Outre l'ajout de l'option d'élimination de l'espace, il ajoute également d'autres choses intéressantes comme des versions compactes de l'article, énumérer et décrire les environnements.

Fabian Steeg
la source
1
Plus précisément, Fabian fait référence à l'asparaitem, l'asparaenum et l'asparadesc et à d'autres choses comme compactittem, compactenum et compactdesc. aspara crée encore un nouveau paragraphe. C'est encore un peu ennuyeux si vous les mettez dans un tableau sans paragraphe précédent, comme je le suis, mais je soupçonne qu'il y a un hack moins laid pour résoudre ce problème.
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
la source
2
Cela réduit une grande partie des espaces autour de la liste, mais ne parvient pas à supprimer une partie des espaces juste au-dessus et en dessous de la liste elle-même.
jevon