Hilangkan spasi sebelum \ begin {itemize} [closed]

101

Di Latex, bagaimana cara menghilangkan spasi yang dimasukkan sebelum itemize?

\begin{itemize} % produces lots of vertical space
\item ...
\item ...
\end{itemize}
Alexandru
sumber
6
Saya memilih untuk menutup pertanyaan ini sebagai di luar topik karena lebih cocok di TeX - LaTeX .
Werner
Ada jawaban yang benar untuk pertanyaan ini di tex.stackexchange.com/q/86054/157031 . (Tautan yang dibagikan oleh PatrickT juga tepat)
Cyriac Antony

Jawaban:

64

Coba \vspace{-5mm}sebelum memerinci.

Stefano Borini
sumber
106
\ vspace adalah jalan menuju kehancuran. Anda tidak harus melawan LaTeX, melainkan menerimanya.
Eric
26
ya, tapi terkadang pertarungan terlalu berat untuk ditangani.
Stefano Borini
30
Maksud Anda pelukan itu terlalu berat untuk ditangani, dan pertarungan lebih mudah :-)
Joachim Breitner
1
Ini harus menjadi \ vspace {-3.5mm} .
Jason
10
@Jason dan semua: jawaban dari Paolo di bawah ini juga sederhana dan jauh lebih baik: \ vspace {- \ topsep}
Joce
114

Cara untuk memperbaiki masalah semacam ini adalah dengan mendefinisikan kembali lingkungan daftar yang relevan. The enumitempaket adalah cara favorit saya untuk melakukan hal semacam ini; memiliki banyak opsi dan parameter yang dapat divariasikan, baik untuk semua daftar atau untuk setiap daftar satu per satu.

Inilah cara melakukan (sesuatu seperti) apa yang menurut saya Anda inginkan:

\ usepackage {enumitem}
\ setlist {nolistsep}

atau

\ usepackage {enumitem}
\ setlist {nosep}
Will Robertson
sumber
2
Sempurna. Semudah jawaban [Stefano Borini], tetapi solusi ini berfungsi meskipun ada daftar bersarang. Terima kasih.
devsnd
27
Bahkan jika saya menyetel opsi ke [topsep = 0px, partopsep = 0px] ruang vertikal sebelum daftar masih ada - maka IMHO jawaban ini tidak berfungsi.
Robert
2
@ Robert, mengapa tidak menggunakan angka negatif? Ini bekerja untuk saya: \begin{enumerate}[topsep=-5px,partopsep=0px] ...
zkurtz
@Robert: Menurut dokumen enumitem, spasi vertikal sebelum dan sesudah daftar diberikan \parsep + \topsep [+ \partopsep], jadi Anda harus menyetel \topsepatau \partopsepke angka negatif untuk mengimbangi nilai positif apa pun \parsep.
balu
44

Gunakan \vspace{-\topsep}sebelumnya \begin{itemize}.

Gunakan \setlength{\parskip}{0pt} \setlength{\itemsep}{0pt plus 1pt}setelah \begin{itemize}.

Dan untuk spasi setelah daftar, gunakan \vspace{-\topsep}setelah \end{itemize}.

\vspace{-\topsep}
\begin{itemize}
  \setlength{\parskip}{0pt}
  \setlength{\itemsep}{0pt plus 1pt}
  \item ...
  \item ...
\end{itemize}
\vspace{-\topsep}
PeaGon
sumber
5
Bagus! Sayangnya enumitem tidak kompatibel dengan beamer, jadi saya suka metode paket-independen. topsepterlalu agresif bagi saya, jadi saya menggunakan \ vspace {-0.5 \ topsep} `
craq
14

Cara terbersih bagi Anda untuk melakukannya adalah dengan menggunakan paket enumitem ( https://ctan.org/pkg/enumitem ). Sebagai contoh,

masukkan deskripsi gambar di sini

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

Selain itu, jika Anda ingin menggunakan pengaturan ini secara global di seluruh daftar, Anda dapat menggunakan

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

Namun, perhatikan bahwa paket ini tidak berfungsi dengan baik dengan paket beamer yang digunakan untuk membuat presentasi di Latex.

pengguna3613932
sumber
Sebagaimana dicatat (dan dikoreksi) di tempat lain, versi enumitem terbaru menyertakan opsi [nosep] yang dirancang untuk menghapus spasi di atas dan di bawah daftar serta di antara item ... tetapi tidak melakukan ini jika Anda juga menggunakan paket parskip. Herbert Voß memposting solusi untuk ini di ctt - \ setlist {partopsep = - \ parskip, parsep = 0pt}
Peter Flynn
13

Cara LaTeX yang "tepat" untuk melakukannya adalah dengan menggunakan paket yang memungkinkan Anda menentukan jarak yang Anda inginkan. Ada beberapa paket seperti itu, dan kedua halaman ini memiliki pranala ke daftar mereka ...

Stobor
sumber
4
Bukan ide yang buruk untuk menunjuk ke CTAN ( ctan.org ).
dmckee --- mantan moderator anak kucing
20
Namun, umumnya ide yang buruk untuk mengklaim ada cara yang "tepat" untuk melakukan apa pun dalam lateks;).
cheshirekow
7

Saya sangat senang dengan paket paralist . Selain menambahkan opsi untuk menghilangkan ruang, ia juga menambahkan hal-hal bagus lainnya seperti versi ringkas dari itemize, enumerate and description environment.

Fabian Steeg
sumber
1
Secara khusus, Fabian mengacu pada asparaitem, asparaenum dan asparadesc dan hal-hal lain seperti compactittem, compactenum dan compactdesc. aspara masih membuat paragraf baru. Ini masih sedikit menjengkelkan jika Anda meletakkannya di tabel tanpa paragraf sebelumnya, seperti saya, tetapi saya curiga ada peretasan yang tidak terlalu buruk untuk memperbaikinya.
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
sumber
2
Ini mengurangi banyak spasi kosong di sekitar daftar, tetapi gagal menghapus beberapa spasi tepat di atas dan di bawah daftar itu sendiri.
jevon