Zlikwiduj miejsce przed \ begin {itemize} [zamknięte]

102

Jak w programie Latex wyeliminować miejsce wstawione przed pozycją?

\begin{itemize} % produces lots of vertical space
\item ...
\item ...
\end{itemize}
Alexandru
źródło
6
Głosuję za zamknięciem tego pytania jako niezwiązanego z tematem, ponieważ lepiej pasuje do TeX-a - LaTeX .
Werner
Prawidłowe odpowiedzi na to pytanie znajdują się w tex.stackexchange.com/q/86054/157031 . (Link udostępniony przez PatrickT jest również na miejscu)
Cyriac Antony

Odpowiedzi:

64

Wypróbuj \vspace{-5mm}przed wyszczególnieniem.

Stefano Borini
źródło
106
\ vspace to droga do ruiny. Nie możesz walczyć z LaTeX-em, ale raczej go objąć.
Eric
26
tak, ale czasami walka jest zbyt trudna do zniesienia.
Stefano Borini
30
Masz na myśli uścisk, który jest zbyt trudny do zniesienia, a walka jest łatwiejsza :-)
Joachim Breitner
2
To powinno być \ vspace {-3,5mm} .
Jason
10
@Jason i wszyscy: odpowiedź Paolo poniżej jest również prosta i znacznie lepsza: \ vspace {- \ topsep}
Joce.
114

Sposobem na rozwiązanie tego rodzaju problemu jest ponowne zdefiniowanie odpowiedniego środowiska list. enumitemPakiet jest moim ulubionym sposobem na tego typu rzeczy; ma wiele opcji i parametrów, które można zmieniać, albo dla wszystkich list, albo dla każdej listy indywidualnie.

Oto, jak zrobić (coś w stylu) tego, co myślę, że chcesz:

\ usepackage {enumitem}
\ setlist {nolistsep}

lub

\ usepackage {enumitem}
\ setlist {nosep}
Will Robertson
źródło
2
Idealny. Równie proste, jak odpowiedź [Stefano Borini], ale to rozwiązanie działa nawet wtedy, gdy istnieją listy zagnieżdżone. Dziękuję Ci.
devsnd
27
Nawet jeśli ustawię opcje na [topsep = 0px, partopsep = 0px], pionowa przestrzeń przed listą wciąż tam jest - stąd IMHO ta odpowiedź nie działa.
Robert
2
@Robert, dlaczego nie użyć liczby ujemnej? To działa dla mnie: \begin{enumerate}[topsep=-5px,partopsep=0px] ...
zkurtz
@Robert: Zgodnie z dokumentacją enumitem, pionowa przestrzeń przed i po liście jest podawana przez \parsep + \topsep [+ \partopsep], więc musisz ustawić \topseplub \partopsepna liczbę ujemną, aby skompensować jakąkolwiek dodatnią wartość \parsep.
balu
44

Użyj \vspace{-\topsep}przed \begin{itemize}.

Użyj \setlength{\parskip}{0pt} \setlength{\itemsep}{0pt plus 1pt}po \begin{itemize}.

W przypadku miejsca po liście użyj \vspace{-\topsep}po \end{itemize}.

\vspace{-\topsep}
\begin{itemize}
  \setlength{\parskip}{0pt}
  \setlength{\itemsep}{0pt plus 1pt}
  \item ...
  \item ...
\end{itemize}
\vspace{-\topsep}
PeaGon
źródło
5
Miły! Niestety enumitem jest niekompatybilny z beamer'em, więc lubię metody niezależne od pakietu. topsepbył dla mnie zbyt agresywny, więc wybrałem \ vspace {-0.5 \ topsep} `
craq
15

Najczystszym sposobem osiągnięcia tego jest użycie pakietu enumitem ( https://ctan.org/pkg/enumitem ). Na przykład,

wprowadź opis obrazu tutaj

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

Ponadto, jeśli chcesz używać tego ustawienia globalnie na wszystkich listach, możesz użyć

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

Należy jednak pamiętać, że ten pakiet nie działa dobrze z pakietem projektora , który jest używany do tworzenia prezentacji w lateksie.

user3613932
źródło
Jak zauważono (i poprawiono) w innym miejscu, ostatnie wersje enumitem zawierają opcję [nosep], która ma na celu usunięcie spacji nad i pod listą, a także między elementami ... ale nie robi tego, jeśli używasz również pakiet parskip. Herbert Voß opublikował rozwiązanie tego problemu na ctt - \ setlist {partopsep = - \ parskip, parsep = 0pt}
Peter Flynn
13

„Właściwym” sposobem LaTeX-a jest użycie pakietu, który pozwala określić żądane odstępy. Takich pakietów jest kilka, a te dwie strony odsyłają do ich list ...

Stobor
źródło
4
Nigdy nie jest złym pomysłem wskazanie CTAN ( ctan.org ).
dmckee --- kociak ex-moderator
20
Jednak generalnie złym pomysłem jest twierdzenie, że istnieje „właściwy” sposób robienia czegokolwiek w lateksie;).
Cheshirekow
7

Jestem bardzo zadowolony z pakietu paralistycznego . Oprócz dodania opcji eliminacji miejsca, dodaje również inne fajne rzeczy, takie jak kompaktowe wersje wyszczególniania, wyliczania i opisywania środowisk.

Fabian Steeg
źródło
1
W szczególności Fabian odnosi się do asparaitem, asparaenum i asparadesc oraz innych rzeczy, takich jak compactittem, compactenum i compactdesc. aspara nadal tworzy nowy akapit. Jest to nadal nieco denerwujące, jeśli umieszczasz je w tabeli bez poprzedzającego akapitu, tak jak ja, ale podejrzewam, że istnieje mniej brzydki hack, aby to naprawić.
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
źródło
2
Zmniejsza to wiele białych znaków wokół listy, ale nie usuwa niektórych białych znaków bezpośrednio nad i pod samą listą.
jevon