我想将enumerate
定理类型环境中的标签样式设置为定理环境之外的标签样式,但“向下一级”。也就是说,定理内部的 1 级标签看起来像定理外部的 2 级标签,定理内部的 2 级标签看起来像定理外部的 3 级标签,依此类推。如何“巧妙地”做到这一点?
在下面的 MWE 中,我可以在不同级别更改标签的样式,但我不想将它们更改为任意样式,而是更改为比文档类的默认样式低一级的样式。
\documentclass{scrreprt}
\usepackage{enumitem}
\usepackage{amsthm}
\newtheorem{theorem}{Theorem}[chapter]
\newtheorem{proposition}{Proposition}[chapter]
\newtheorem{lemma}{Lemma}[chapter]
%below changes enumerate label styles in theorem environments.
%See: https://tex.stackexchange.com/a/413862/9789
\usepackage{etoolbox}
\usepackage{pgffor}
\foreach \theoremenv in {theorem,proposition,lemma} {
\AtBeginEnvironment{\theoremenv}{%
\setlist[enumerate,1]{ref={\alph*},label={(\alph*)}}
\setlist[enumerate,2]{ref={\roman*},label={\roman*.}}
\setlist[enumerate,3]{ref={\Alph*},label={\Alph*.}}
}
}
\begin{document}
\begin{theorem}
This is a theorem. It has a few parts:
\begin{enumerate}
\item The first thing
\begin{enumerate}
\item The first part of the first thing
\item The second part of the second thing
\end{enumerate}
\item The second thing
\end{enumerate}
\end{theorem}
\end{document}
答案1
列表深度使用计数器处理\@listdepth
。您需要添加\global\advance\@listdepth\@ne
到开始环境和\global\advance\@listdepth\m@ne
结束环境,以模拟嵌套列表中的列表深度调整。请注意,这将适用于枚举和逐项列表。
(当然,您需要执行\makeatletter
并访问名称中的\makeatother
命令。@