全局更改仅适用于定义和定理环境中的列表

全局更改仅适用于定义和定理环境中的列表

为了编辑我的讲义和工作表,我使用了 enumitem 包。我经常进行全局更改,例如在序言中使用以下代码:

\setenumerate[1]{label={\bfseries\arabic*)}}
\setenumerate[2]{label={\bfseries\alph*.},nosep}

但现在我只想在已定义的环境中修改列表,例如定义和定理环境。当然,我随时可以在需要时进行更改:

\begin{definitions}
\begin{enumerate}[leftmargin=!,labelsep=1ex,labelindent=0pt,labelwidth=2.5ex,itemindent=3.5ex,label={\bfseries\arabic*.}]
\item ...
\item ...
\end{enumerate}
\end{definitions}

但是我怎样才能避免系统地复制和粘贴这些代码行呢?

感谢您的时间和帮助。

答案1

使用当前的 latex,您可以使用通用环境钩子

\documentclass{article}
\usepackage{enumitem}
\AddToHook{env/quote/begin}{\setenumerate[1]{label={\bfseries \arabic*)}}}
\begin{document}
\begin{enumerate}
\item a
\item b
\end{enumerate}

\begin{quote}
\begin{enumerate}
\item a
\item b
\end{enumerate}
\end{quote}

\begin{enumerate}
\item a
\item b
\end{enumerate}

\end{document}

在此处输入图片描述

答案2

正在加载enumitem,您可以使用

\AtBeginEnvironment{definitions}{\setlist[enumerate,1]{…} \setlist[enumerate,2]{…}}

其他环境也类似。

相关内容