【发布时间】:2010-02-01 22:34:36
【问题描述】:
有什么方法可以在某些环境中将\parskip 更改为不同的值,即enumerate 和itemize。
我希望段落之间有空格 (\setlength{\parskip}{1em plus 1pt minus 1pt}),但不在 itemize 或 enumerate 内。
【问题讨论】:
有什么方法可以在某些环境中将\parskip 更改为不同的值,即enumerate 和itemize。
我希望段落之间有空格 (\setlength{\parskip}{1em plus 1pt minus 1pt}),但不在 itemize 或 enumerate 内。
【问题讨论】:
如果你使用enumitem 包,你可以在你的序言中说
\setlist[itemize]{parsep=0pt}
\setlist[enumerate]{parsep=0pt}
得到你想要的。 enumitem 允许进行更多列表自定义,请参阅其文档了解详细信息。
【讨论】:
beamer.
是的,你可以;但是您必须从类文件中更改 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 等。
【讨论】:
\expandafter\def\expandafter\@listi\expandafter{\@listi \parsep 1em plus 1pt minus 1pt} 这样,你不需要复制现有的设置(\expandafter 会为你做这些)。
你也可以使用:
begin{itemize} \itemsep -5pt
\item foo
\item bar
\end{itemize}
这只会影响当前列表。
【讨论】:
序言中的以下补充更新了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 时的调整:
\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 的做法完全相同。
【讨论】: