2009-06-29 7 views
74

Wie entferne ich in Latex den vor dem Aufteilen eingefügten Platz?Platz vor begin {itemize} entfernen

\begin{itemize} % produces lots of vertical space 
\item ... 
\item ... 
\end{itemize} 
+5

Ich stimme ab, diese Frage als Off-Topic zu schließen, weil sie auf [tex.se] besser geeignet ist. – Werner

Antwort

50

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

+1

Ich akzeptiere deine Lösung, weil es einfacher ist (wenn es zusammen mit \ newcommand verwendet wird) als die anderen – Alexandru

+72

\ vspace ist die Straße zu ruinieren. Sie müssen LaTeX nicht bekämpfen, sondern es umarmen. – Eric

+14

Ja, aber manchmal ist der Kampf zu viel, um damit umzugehen. –

11

Die "richtigen" LaTeX-Möglichkeiten sind ein Paket, mit dem Sie den gewünschten Abstand angeben können. Es gibt mehrere solche Pakete, und diese beiden Seiten verlinken auf Listen von ihnen ...

+4

Es ist nie eine schlechte Idee, auf CTAN (http://www.ctan.org/) zu zeigen . – dmckee

+12

Es ist jedoch generell eine schlechte Idee zu behaupten, dass es einen "richtigen" Weg gibt, etwas in Latex zu machen;). – cheshirekow

5
\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} 
+1

Dies reduziert eine Menge des Leerraums um die Liste herum, aber es gelingt nicht, einige der Leerräume unmittelbar über und unter der Liste selbst zu entfernen. – jevon

7

Ich bin sehr zufrieden mit den paralist package. Neben der Option, den Speicherplatz zu entfernen, fügt es auch andere nette Dinge wie kompakte Versionen der itemize-, enumerate- und describe-Umgebungen hinzu.

+0

Im Speziellen bezieht sich Fabian auf asparaitem, asparaenum und asparadesc und auf andere Dinge wie compactittem, compactenum und compactdesc. aspara erstellt immer noch einen neuen Absatz. Das ist immer noch ein bisschen nervig, wenn man sie in einen Tisch ohne einen vorhergehenden Absatz legt, wie ich es bin, aber ich vermute, dass es einen weniger hässlichen Hack gibt, um das zu beheben. –

87

Um diese Art von Problem zu beheben, müssen Sie die relevante Listenumgebung neu definieren. Das Paket enumitem ist meine bevorzugte Art, so etwas zu tun; es hat viele Optionen und Parameter, die variiert werden können, entweder für alle Listen oder für jede Liste einzeln.

Hier ist, wie zu tun (so etwas wie), was es ist, ich glaube, Sie wollen:

 
\usepackage{enumitem} 
\setlist{nolistsep} 
+2

Perfekt. Genauso einfach wie die Antwort von [Stefano Borini], _but_ diese Lösung funktioniert aber auch, wenn verschachtelte Listen existieren. Vielen Dank. – devsnd

+18

Auch wenn ich die Optionen auf [topsep = 0px, partopsep = 0px] setze, ist der vertikale Abstand vor der Liste immer noch da - daher funktioniert diese Antwort IMHO nicht. – Robert

+0

@Robert, warum nicht eine negative Zahl verwenden? Das funktioniert für mich: '\ begin {enumerate} [topsep = -5px, partopsep = 0px] ...' – zkurtz

31

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

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

Und für den Raum 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} 
+0

Schön! Leider ist enumitem nicht mit Beamer kompatibel, daher mag ich paketunabhängige Methoden. 'topsep' war zu aggressiv für mich, also ging ich mit \ vspace {-0.5 \ topsep}' – craq

7

Der sauberste Weg für Sie, dies zu erreichen ist das enumitem Paket (http://mirror.hmc.edu/ctan/macros/latex/contrib/enumitem/enumitem.pdf) zu verwenden. Zum Beispiel

enter image description here

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

Außerdem, wenn Sie diese Einstellung global über Listen verwenden möchten, können Sie

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

Beachten Sie jedoch, verwenden, die dieses Paket mit der nicht gut funktioniert Beamer Paket, das verwendet wird, um Präsentationen in Latex zu machen.

+0

Wie bereits erwähnt (und korrigiert) woanders, enthalten die letzten Versionen von enumitem eine [nosep] -Option, die Speicherplatz über und entfernen soll unter der Liste sowie zwischen den Elementen ... aber das tut es nicht, wenn Sie auch das Parskip-Paket verwenden. Herbert Voß hat auf c.t.t. - \ setlist {partopsep = - \ parskip, parsep = 0pt} –

Verwandte Themen