Изменить \ parskip только внутри среды enumerate & itemize - PullRequest
7 голосов
/ 02 февраля 2010

Можно ли как-нибудь изменить \parskip на другое значение в определенных средах, а именно enumerate и itemize.

Я хочу иметь пробел между абзацами (\setlength{\parskip}{1em plus 1pt minus 1pt}), но не внутри itemize или enumerate.

Ответы [ 4 ]

13 голосов
/ 29 июля 2013

Если вы используете пакет enumitem, вы можете сказать в своей преамбуле

\setlist[itemize]{parsep=0pt}
\setlist[enumerate]{parsep=0pt}

чтобы получить то, что вы хотите. enumitem позволяет выполнять гораздо больше настроек списка, подробности см. В его документации.

6 голосов
/ 02 февраля 2010

Да, вы можете; но вам придется изменить либо окружения enumerate и itemize из вашего файла класса (скопировав их и добавив \parskip), либо переопределив \@listi, который работает для всех списков:

\makeatletter

\def\@listi{%
  % default settings for base LaTeX classes at 10pt:
  \parsep 4pt plus 2pt minus 1pt
  \topsep 8pt plus 2pt minus 4pt
  \itemsep 4pt plus 2pt minus 1pt
  % your settings:
  \parskip 1em plus 1pt minus 1pt
}

\makeatother

Если вы хотите использовать разные настройки для уровней вложенного списка, измените \@listii, \@listiii и т. Д.

5 голосов
/ 02 февраля 2010

Вы также можете использовать:

begin{itemize} \itemsep -5pt
\item foo
\item bar
\end{itemize}

, и это повлияет только на текущий список.

0 голосов
/ 15 июля 2015

Следующее дополнение к преамбуле обновляет enumerate для внесения предлагаемых изменений:

\let\oldenumerate\enumerate% Keep a copy of \enumerate (or \begin{enumerate})
\let\endoldenumerate\endenumerate% Keep a copy of \endenumerate (or \end{enumerate})
\renewenvironment{enumerate}
  {\begin{oldenumerate}
     \setlength{\parskip}{0pt}}% Adjust \parskip to suit your needs
  {\end{oldenumerate}}

Вот полный минимальный пример, показывающий настройку при установке \parskip на 0pt:

enter image description here

\documentclass{article}
\begin{document}

\begin{enumerate}
  \item First line

    Second line
\end{enumerate}

\let\oldenumerate\enumerate
\let\endoldenumerate\endenumerate
\renewenvironment{enumerate}
  {\begin{oldenumerate}
     \setlength{\parskip}{0pt}}
  {\end{oldenumerate}}

\begin{enumerate}
  \item First line

    Second line
\end{enumerate}

\end{document}

Можно было бы сделать то же самое для itemize.

...