Удалите пробелы перед \ 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}
PeaGon
источник
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.

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

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

Стобор
источник
4
Указывать на CTAN ( ctan.org ) - неплохая идея .
dmckee --- котенок экс-модератора
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