仅在枚举&内部更改\ parskip逐项列出环境

时间:2010-02-01 22:34:37

标签: latex markup

我是否有办法在某些环境中将\parskip更改为其他值,即enumerateitemize

我想在段落(\setlength{\parskip}{1em plus 1pt minus 1pt})之间留出空格,但不要在itemize或enumerate中。

4 个答案:

答案 0 :(得分:13)

如果您使用enumitem套餐,可以在序言中说明

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

得到你想要的东西。 enumitem允许进行更多列表自定义,有关详细信息,请参阅其文档。

答案 1 :(得分:6)

是的,你可以;但您必须更改类文件中的enumerateitemize环境(通过复制它们并添加\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等。

答案 2 :(得分:5)

你也可以使用:

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

,这只会影响当前列表。

答案 3 :(得分:0)

对序言的以下添加更新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可以完全相同。