我正在使用以下代码尝试定义一个新列表,其显示效果如下图所示。当我尝试获取 mrcenumi 的 \value 并将其加一时,我得到了一个缺失的数字,该数字被视为零错误。有没有什么建议可以解释为什么会发生这种情况?
\usepackage{enumitem}
\newcounter{mrcenumi}
\setcounter{mrcenumi}{1}%
\newcounter{mrcenumii}
\setcounter{mrcenumii}{1}%
\newlist{mrcenum}{enumerate}{3}
\setlist[mrcenum,1]{label=\themrcenumi.}
\setlist[mrcenum,2]{label=\the\numexpr(\value{mrcenumi} + 1) \relax}
\setlist[mrcenum,3]{label*=\arabic*.}
答案1
您需要\protect\the
,因为如何enumitem
设置label
在\setlist
。
\documentclass{article}
\usepackage{enumitem}
\newlist{mrcenum}{enumerate}{3}
\setlist[mrcenum,1]{label=\arabic*.}
\setlist[mrcenum,2]{label=\protect\the\numexpr\value{mrcenumi}+1\relax.\arabic*.}
\setlist[mrcenum,3]{label*=\arabic*.}
\begin{document}
\begin{mrcenum}
\item a
\item b
\begin{mrcenum}
\item c
\item d
\begin{mrcenum}
\item e
\item f
\end{mrcenum}
\item g
\end{mrcenum}
\item h
\end{mrcenum}
\end{document}