Удалите пробелы перед \ begin {itemize} [закрыто]


102

Как в латексе убрать пробел перед детализированием?

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

6
Я голосую за то, чтобы закрыть этот вопрос как не по теме, потому что он больше подходит для TeX - LaTeX .
Вернер


Правильные ответы на этот вопрос можно найти в tex.stackexchange.com/q/86054/157031 . (Ссылка, предоставленная PatrickT, также
Cyriac Antony

Ответы:


64

Попробуйте, \vspace{-5mm}прежде чем перечислять.


106
\ vspace - это путь к гибели. Вы не должны бороться с LaTeX, а лучше принять его.
Эрик

26
да, но иногда драка становится невыносимой.
Стефано Борини

30
Вы имеете в виду, что объятия слишком тяжелы, и бороться легче :-)
Иоахим Брайтнер

2
Это должно быть \ vspace {-3,5 мм} .
Джейсон

10
@ Джейсон и все остальное: ответ Паоло ниже тоже прост и намного лучше: \ vspace {- \ topsep}
Джос,

114

Способ решить эту проблему - переопределить соответствующую среду списка. enumitemПакет мой любимый способ сделать такого рода вещи; он имеет множество опций и параметров, которые можно изменять как для всех списков, так и для каждого списка в отдельности.

Вот как сделать (что-то вроде) то, что, я думаю, вам нужно:

\ usepackage {enumitem}
\ setlist {nolistsep}

или

\ usepackage {enumitem}
\ setlist {носеп}

2
Отлично. Так же просто, как ответ [Стефано Борини], но это решение работает даже при наличии вложенных списков. Спасибо.
devsnd

27
Даже если я установил параметры на [topsep = 0px, partopsep = 0px], вертикальное пространство перед списком все еще существует - следовательно, IMHO этот ответ не работает.
Роберт

2
@ Роберт, почему бы не использовать отрицательное число? У меня это работает: \begin{enumerate}[topsep=-5px,partopsep=0px] ...
zkurtz

@Robert: Согласно документации enumitem, вертикальное пространство до и после списка задается \parsep + \topsep [+ \partopsep], поэтому вам нужно либо установить, \topsepлибо \partopsepотрицательное число, чтобы компенсировать любое положительное значение \parsep.
балу

44

Использовать \vspace{-\topsep}раньше \begin{itemize}.

Используйте \setlength{\parskip}{0pt} \setlength{\itemsep}{0pt plus 1pt}после \begin{itemize}.

А для пробела после списка используйте \vspace{-\topsep}после \end{itemize}.

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

5
Ницца! К сожалению, enumitem несовместим с beamer, поэтому мне нравятся методы, независимые от пакетов. topsepбыл слишком агрессивен для меня, поэтому я выбрал \ vspace {-0.5 \ topsep} `
craq

15

Самый простой способ сделать это - использовать пакет enumitem ( https://ctan.org/pkg/enumitem ). Например,

введите описание изображения здесь

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

Кроме того, если вы хотите использовать этот параметр глобально в списках, вы можете использовать

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

Однако обратите внимание, что этот пакет плохо работает с пакетом beamer , который используется для создания презентаций в Latex.


Как отмечалось (и исправлялось) в другом месте, последние версии enumitem включают параметр [Nosep], который предназначен для удаления пробелов над и под списком, а также между элементами ... но он не делает этого, если вы также используете пакет парскип. Герберт Фосс опубликовал решение этой проблемы на ctt - \ setlist {partopsep = - \ parskip, parsep = 0pt}
Питер Флинн

13

«Правильный» способ сделать это в LaTeX - использовать пакет, который позволяет вам указать желаемый интервал. Таких пакетов несколько, и на этих двух страницах есть ссылки на их списки ...



20
Однако вообще плохая идея утверждать, что есть "правильный" способ сделать что-либо в латексе;).
cheshirekow

7

Я очень доволен пакетом паралистов . Помимо добавления опции удаления пространства, он также добавляет другие приятные вещи, такие как компактные версии элементов, перечисления и описания сред.


1
В частности, Fabian имеет в виду asparaitem, asparaenum и asparadesc, а также другие вещи, такие как compactittem, compactenum и compactdesc. aspara все же создает новый абзац. Это все еще немного раздражает, если вы помещаете их в таблицу без предыдущего абзаца, как я, но я подозреваю, что есть менее уродливый способ исправить это.
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
Это уменьшает большое количество пробелов вокруг списка, но не позволяет удалить некоторые пробелы непосредственно над и под самим списком.
jevon
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.