2009-06-29 19 views
74

In lattice, come posso eliminare lo spazio inserito prima dell'elemento?Elimina spazio prima begin {itemize}

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

Sto votando per chiudere questa domanda come off-topic perché è più adatto su [tex.se]. – Werner

risposta

50

Prova \vspace{-5mm} prima dell'articolo.

+1

Accetto la soluzione perché è più semplice (se utilizzata insieme a \ newcommand) rispetto agli altri – Alexandru

+72

\ vspace è la strada per la rovina. Non devi combattere LaTeX, ma piuttosto abbracciarlo. – Eric

+14

sì, ma a volte il combattimento è troppo da gestire. –

11

I "propri" modi LaTeX per farlo è quello di utilizzare un pacchetto che consente di specificare la spaziatura che si desidera. Ci sono diversi tale pacchetto, e queste due pagine contengono dei collegamenti a liste dei loro ...

+4

Non è mai una cattiva idea per puntare a CTAN (http://www.ctan.org/) . – dmckee

+12

Tuttavia, è generalmente una cattiva idea affermare che esiste un modo "corretto" di fare qualsiasi cosa in latex;). – 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

Questo riduce molto spazio bianco attorno all'elenco, ma non riesce a rimuovere alcuni degli spazi bianchi immediatamente sopra e sotto l'elenco stesso. – jevon

7

Sono molto contento del paralist package. Oltre ad aggiungere l'opzione per eliminare lo spazio, aggiunge anche altre cose carine come le versioni compatte di itemize, enumerare e descrivere gli ambienti.

+0

In particolare, Fabian si riferisce ad asparaitem, asparaenum e asparadesc e ad altre cose come compactittem, compactenum e compactdesc. aspara crea ancora un nuovo paragrafo. Questo è ancora un po 'fastidioso se li metti in un tavolo senza un paragrafo precedente, come lo sono io, ma sospetto che ci sia un trucco meno brutto per sistemarlo. –

87

Il modo per risolvere questo tipo di problema è quello di ridefinire l'ambiente relativo elenco. Il pacchetto enumitem è il mio modo preferito per fare questo genere di cose; ha molte opzioni e parametri che possono essere variati, sia per tutti gli elenchi che per ogni lista individualmente.

Ecco come fare (qualcosa di simile) che cosa è Penso che si desidera:

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

Perfetto. Semplice come la risposta di [Stefano Borini], ma questa soluzione funziona anche se ci sono liste annidate. Grazie. – devsnd

+18

Anche se imposto le opzioni su [topsep = 0px, partopsep = 0px] lo spazio verticale prima che la lista sia ancora lì - quindi IMHO questa risposta non funziona. – Robert

+0

@Robert, perché non utilizzare un numero negativo? Questo funziona per me: '\ begin {enumerate} [topsep = -5px, partopsep = 0px] ...' – zkurtz

31

Usa \vspace{-\topsep} prima \begin{itemize}.

Usa \setlength{\parskip}{0pt} \setlength{\itemsep}{0pt plus 1pt} dopo \begin{itemize}.

E per lo spazio dopo l'elenco, utilizzare \vspace{-\topsep} dopo \end{itemize}.

\vspace{-\topsep} 
\begin{itemize} 
    \setlength{\parskip}{0pt} 
    \setlength{\itemsep}{0pt plus 1pt} 
    \item ... 
    \item ... 
\end{itemize} 
\vspace{-\topsep} 
+0

Bello! Sfortunatamente l'enumerazione è incompatibile con il beamer, quindi mi piacciono i metodi indipendenti dal pacchetto. 'topsep' era troppo aggressivo per me, quindi sono andato con \ vspace {-0.5 \ topsep}' – craq

7

Il modo più pulito per voi per raggiungere questo obiettivo è quello di utilizzare il pacchetto dienumitem (http://mirror.hmc.edu/ctan/macros/latex/contrib/enumitem/enumitem.pdf). Ad esempio,

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} 

Inoltre, se si desidera utilizzare questa impostazione a livello globale attraverso le liste, è possibile utilizzare

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

Si noti tuttavia che questo pacchetto non funziona bene con la beamer pacchetto che viene utilizzato per effettuare presentazioni in lattice.

+0

Come notato (e corretto) altrove, le recenti versioni di enumitem includono un'opzione [nosep] che è stata progettata per rimuovere lo spazio sopra e sotto l'elenco e tra gli elementi ... ma non lo fa se si utilizza anche il pacchetto parskip. Herbert Voß ha pubblicato una soluzione a questo proposito su c.t.t. - \ setlist {partopsep = - \ parskip, parsep = 0pt} –

Problemi correlati