Loại bỏ không gian trước khi \ begin {itemize} [đóng cửa]


101

Trong Latex, làm cách nào để loại bỏ khoảng trống được chèn trước khi lặp lại?

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

6
Tôi bỏ phiếu để đóng câu hỏi này là lạc đề vì nó phù hợp hơn trên TeX - LaTeX .
Werner


Có câu trả lời chính xác cho câu hỏi này trong tex.stackexchange.com/q/86054/157031 . (Link chia sẻ bởi PatrickT cũng là ở điểm)
Cyriac Antony

Câu trả lời:


64

Hãy thử \vspace{-5mm}trước khi lặp lại.


106
\ vspace là con đường hủy hoại. Bạn không được chống lại LaTeX, mà phải nắm lấy nó.
Eric

26
có, nhưng đôi khi cuộc chiến là quá nhiều để xử lý.
Stefano Borini

30
Bạn có nghĩa là ôm quá nhiều để xử lý, và cuộc chiến dễ dàng hơn :-)
Joachim Breitner

1
Đây phải là \ vspace {-3.5mm} .
Jason

10
@ Jason và tất cả: câu trả lời bởi Paolo dưới đây là đơn giản quá và tốt hơn nhiều: \ vspace {- \ topsep}
Joce

114

Cách để khắc phục loại vấn đề này là xác định lại môi trường danh sách có liên quan. Các enumitemgói là cách yêu thích của tôi để làm việc này; nó có nhiều tùy chọn và tham số có thể thay đổi, cho tất cả các danh sách hoặc cho từng danh sách riêng lẻ.

Đây là cách thực hiện (giống như) những gì tôi nghĩ bạn muốn:

\ usepackage {enumitem}
\ setlist {nolistsep}

hoặc là

\ usepackage {enumitem}
\ setlist {arrowp}

2
Hoàn hảo. Cũng dễ dàng như câu trả lời của [Stefano Borini], nhưng giải pháp này hoạt động ngay cả khi có danh sách lồng nhau. Cảm ơn bạn.
devsnd

27
Ngay cả khi tôi đặt các tùy chọn thành [topsep = 0px, partopsep = 0px] thì không gian dọc trước danh sách vẫn ở đó - do đó IMHO câu trả lời này không hoạt động.
Robert

2
@Robert, tại sao không sử dụng một số âm? Điều này phù hợp với tôi: \begin{enumerate}[topsep=-5px,partopsep=0px] ...
zkurtz

@Robert: Theo tài liệu enumitem, khoảng trống dọc trước và sau một danh sách được cho bởi \parsep + \topsep [+ \partopsep], vì vậy bạn phải đặt \topsephoặc \partopsepthành một số âm để bù cho bất kỳ giá trị dương nào của \parsep.
balu

44

Sử dụng \vspace{-\topsep}trước đây \begin{itemize}.

Sử dụng \setlength{\parskip}{0pt} \setlength{\itemsep}{0pt plus 1pt}sau khi \begin{itemize}.

Và đối với khoảng trống sau danh sách, hãy sử dụng \vspace{-\topsep}sau \end{itemize}.

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

5
Đẹp! Thật không may, enumitem không tương thích với beamer, vì vậy tôi thích các phương pháp độc lập với gói. topsepquá hung hăng đối với tôi, vì vậy tôi đã sử dụng \ vspace {-0.5 \ topsep} '
craq 12/01/15

14

Cách tốt nhất để bạn thực hiện điều này là sử dụng gói enumitem ( https://ctan.org/pkg/enumitem ). Ví dụ,

nhập mô tả hình ảnh ở đây

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

Hơn nữa, nếu bạn muốn sử dụng cài đặt này trên toàn cầu trên các danh sách, bạn có thể sử dụng

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

Tuy nhiên, lưu ý rằng gói này không hoạt động tốt với gói beamer được sử dụng để tạo bản trình bày trong Latex.


Như đã lưu ý (và đã sửa chữa) ở nơi khác, các phiên bản gần đây của enumitem bao gồm tùy chọn [arrowp] được thiết kế để loại bỏ khoảng trống phía trên và bên dưới danh sách cũng như giữa các mục ... nhưng nó không thực hiện được điều này nếu bạn cũng đang sử dụng gói parskip. Herbert Voss đăng tải một giải pháp này trên CTT - \ setlist {partopsep = - \ parskip, parsep = 0pt}
Peter Flynn

13

Các cách LaTeX "thích hợp" để thực hiện là sử dụng một gói cho phép bạn chỉ định khoảng cách mà bạn muốn. Có một số gói như vậy và hai trang này liên kết đến danh sách của chúng ...


4
Không bao giờ là một ý tưởng tồi nếu chỉ vào CTAN ( ctan.org ).
dmckee --- cựu điều hành kitten

20
Tuy nhiên, nhìn chung là một ý kiến ​​tồi khi tuyên bố rằng có một cách "thích hợp" để làm bất cứ điều gì trong latex;).
cheshirekow

7

Tôi rất hài lòng với gói paralist . Bên cạnh việc thêm tùy chọn để loại bỏ không gian, nó cũng bổ sung những thứ hay ho khác như các phiên bản nhỏ gọn của môi trường lặp, liệt kê và mô tả.


1
Cụ thể, Fabian đang đề cập đến asparaitem, asparaenum và asparadesc và những thứ khác như compactittem, compactenum và compactdesc. aspara vẫn tạo một đoạn văn mới. Điều này vẫn hơi khó chịu nếu bạn đặt chúng vào một bảng mà không có đoạn trước, như tôi, nhưng tôi nghi ngờ rằng có một bản hack ít xấu hơn để sửa lỗi này.
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}

2
Điều này làm giảm rất nhiều khoảng trắng xung quanh danh sách, nhưng không thể xóa một số khoảng trắng ngay trên và dưới danh sách.
jevon
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.