我正在尝试提出一个新的枚举列表环境“stepslist”,其中项目标记为“第 k 步,共 n 步”,其中 n 是一个 stepslist 环境中的项目总数,k 是其中的第 k 个项目。因此例如代码
\begin{stepslist}
\item A
\item B
\item C
\end{stepslist}
应呈现为:
第 1 步(共 3 步):A
第 2 步(共 3 步):B
步骤 3(共 3 步):C
和
\begin{stepslist}
\item A
\item B
\item C
\item D
\end{stepslist}
应呈现为:
第 1 步(共 4 步):A
第 2 步(共 4 步):B
步骤 3(共 4 步):C
步骤 4(共 4 步):D
我不想自己定义变量 n;我希望它的值由宏自动确定。与 GPT4 的对话建议采用“两遍方法”(这是有道理的,因为据我所知,它LaTeX
在列表环境的开头并不知道其中有多少个项目)。
我不知道这是否可以做到,但如果可以的话,我将非常感激一种可以在 Overleaf 中起作用的方法。
答案1
您可以设置一个用于计数项目的标签:
\documentclass{article}
\usepackage{enumitem} %
\newlist{stepslist}{enumerate}{1}
\setlist[stepslist,1]{label={Step \arabic* of \ref{steplist:\themylistcnt}:},ref=\arabic{stepslisti}}
\newcounter{mylistcnt} % for a unique label
\AddToHook{env/stepslist/begin}{\stepcounter{mylistcnt}}
\AddToHook{env/stepslist/end}{\label{steplist:\themylistcnt}}
\begin{document}
\begin{stepslist}
\item A
\item B
\item C
\item D
\end{stepslist}
\begin{stepslist}
\item A
\item B
\item C
\end{stepslist}
\end{document}