Beseitigen Sie Leerzeichen vor \ begin {itemize} [geschlossen]

101

Wie entferne ich in Latex das vor dem Auflisten eingefügte Leerzeichen?

\begin{itemize} % produces lots of vertical space
\item ...
\item ...
\end{itemize}
Alexandru
quelle
6
Ich stimme dafür, diese Frage als nicht zum Thema gehörend zu schließen, da sie für TeX - LaTeX besser geeignet ist .
Werner
Es gibt richtige Antworten auf diese Frage in tex.stackexchange.com/q/86054/157031 . (Link von PatrickT geteilt ist auch auf den Punkt)
Cyriac Antony

Antworten:

64

Versuchen Sie es \vspace{-5mm}vor dem Itemize.

Stefano Borini
quelle
106
\ vspace ist der Weg zum Ruin. Sie dürfen LaTeX nicht bekämpfen, sondern müssen es annehmen.
Eric
26
Ja, aber manchmal ist der Kampf zu viel, um damit fertig zu werden.
Stefano Borini
30
Du meinst, die Umarmung ist zu viel und der Kampf ist einfacher :-)
Joachim Breitner
1
Dies sollte \ vspace {-3,5 mm} sein .
Jason
10
@ Jason und alle: Die Antwort von Paolo unten ist auch einfach und viel besser: \ vspace {- \ topsep}
Joce
114

Die Möglichkeit, diese Art von Problem zu beheben, besteht darin, die relevante Listenumgebung neu zu definieren. Das enumitemPaket ist meine Lieblingsmethode, um so etwas zu tun. Es gibt viele Optionen und Parameter, die entweder für alle Listen oder für jede Liste einzeln variiert werden können.

Hier erfahren Sie, wie Sie (so etwas wie) tun, was Sie meiner Meinung nach wollen:

\ usepackage {enumitem}
\ setlist {nolistsep}

oder

\ usepackage {enumitem}
\ setlist {nasep}
Will Robertson
quelle
2
Perfekt. Genauso einfach wie die Antwort von [Stefano Borini], aber diese Lösung funktioniert auch, wenn es verschachtelte Listen gibt. Danke dir.
devsnd
26
Selbst wenn ich die Optionen auf [topsep = 0px, partopsep = 0px] setze, ist der vertikale Raum vor der Liste noch vorhanden - daher funktioniert diese Antwort meiner Meinung nach nicht.
Robert
2
@ Robert, warum nicht eine negative Zahl verwenden? Das funktioniert bei mir: \begin{enumerate}[topsep=-5px,partopsep=0px] ...
zkurtz
@Robert: Gemäß den Enumitem-Dokumenten wird der vertikale Abstand vor und nach einer Liste durch angegeben \parsep + \topsep [+ \partopsep], sodass Sie entweder eine negative Zahl \topsepoder \partopsepeine negative Zahl festlegen müssen, um einen positiven Wert von zu kompensieren \parsep.
Balu
43

Verwenden Sie \vspace{-\topsep}vor \begin{itemize}.

Verwenden Sie \setlength{\parskip}{0pt} \setlength{\itemsep}{0pt plus 1pt}nach \begin{itemize}.

Und für das Leerzeichen nach der Liste verwenden Sie \vspace{-\topsep}nach \end{itemize}.

\vspace{-\topsep}
\begin{itemize}
  \setlength{\parskip}{0pt}
  \setlength{\itemsep}{0pt plus 1pt}
  \item ...
  \item ...
\end{itemize}
\vspace{-\topsep}
PeaGon
quelle
4
Nett! Leider ist enumitem nicht mit Beamer kompatibel, daher mag ich paketunabhängige Methoden. topsepwar zu aggressiv für mich, also ging ich mit \ vspace {-0.5 \ topsep} `
craq
14

Der sauberste Weg, dies zu erreichen, ist die Verwendung des Enumitem- Pakets ( https://ctan.org/pkg/enumitem ). Beispielsweise,

Geben Sie hier die Bildbeschreibung ein

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

Wenn Sie diese Einstellung global über Listen hinweg verwenden möchten, können Sie sie außerdem verwenden

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

Beachten Sie jedoch, dass dieses Paket nicht gut mit dem Beamer- Paket zusammenarbeitet, mit dem Präsentationen in Latex erstellt werden.

user3613932
quelle
Wie an anderer Stelle erwähnt (und korrigiert), enthalten die neueren Versionen von enumitem eine [nasp] -Option, mit der Leerzeichen über und unter der Liste sowie zwischen den Elementen entfernt werden können. Dies ist jedoch nicht der Fall, wenn Sie auch verwenden das Parskip-Paket. Herbert Voß hat eine Lösung für dieses Problem auf ctt - \ setlist {partopsep = - \ parskip, parsep = 0pt}
Peter Flynn
13

Die "richtige" LaTeX-Methode besteht darin, ein Paket zu verwenden, mit dem Sie den gewünschten Abstand angeben können. Es gibt mehrere solcher Pakete, und diese beiden Seiten verlinken auf Listen von ihnen ...

Stobor
quelle
4
Es ist nie eine schlechte Idee, auf CTAN ( ctan.org ) zu verweisen .
dmckee --- Ex-Moderator Kätzchen
20
Es ist jedoch im Allgemeinen eine schlechte Idee zu behaupten, dass es einen "richtigen" Weg gibt, etwas in Latex zu tun;).
Cheshirekow
7

Ich bin sehr zufrieden mit dem Paralistenpaket . Neben der Option, den Speicherplatz zu entfernen, werden auch andere nützliche Dinge hinzugefügt, z. B. kompakte Versionen der Umgebungen zum Auflisten, Auflisten und Beschreiben von Elementen.

Fabian Steeg
quelle
1
Insbesondere bezieht sich Fabian auf Asparit, Asparenum und Asparadesc und auf andere Dinge wie Compactittem, Compactenum und Compactdesc. aspara erstellt noch einen neuen Absatz. Dies ist immer noch etwas ärgerlich, wenn Sie sie wie ich in eine Tabelle ohne vorhergehenden Absatz einfügen, aber ich vermute, dass es einen weniger hässlichen Hack gibt, um dies zu beheben.
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
quelle
2
Dies reduziert einen Großteil der Leerzeichen in der Liste, entfernt jedoch nicht einige der Leerzeichen unmittelbar über und unter der Liste.
Jevon