如何添加或减去数字和索引来自动计算列表项?

如何添加或减去数字和索引来自动计算列表项?

有什么简单的方法可以加减数字以便计算列表项的数量?

例如,以下列表包含三个项目

\begin{enumerate}
  \setcounter{enumi}{5}
  \item No. 1
  \item No. 2
  \item No. 3
  \label{lst:num}
\end{enumerate}

然而,它将\ref{lst:num}等于“8”,因此它与项目的总数不符。

答案1

\setcounter{enumi}{5}计数器设置为5,因此最后一个引用自然不会给出项目总数,而是项目数 + 初始枚举计数器值

\begin{enumerate}
  \setcounter{enumi}{5}
  \item A No. 1
  \item A No. 2
  \item A No. 3
  \label{lst:num:a}
\end{enumerate} 

一个解决方案是不要将计数器设置为,5而是将其设置为0(自动完成),最后一项的标签等于项目总数。

\begin{enumerate}
  \setcounter{enumi}{5}
  \item B No. 1
  \item B No. 2
  \item B No. 3
  \label{lst:num:b}
\end{enumerate}

如果您想将计数器设置为非零值,但仍计算项目数量,则该包refcount可以帮助您。正如@egreg指出的那样,这仅适用于enumeration环境的第一级。

把这句话写在你的序言里

\newcommand{\listlength}[2]{% use: \listlength{label-of-first-item}{label-of-last-item}
  \the\numexpr\getrefnumber{#2}-\getrefnumber{#1}+1\relax   
}

这在你的实际文档中

\begin{enumerate}
\setcounter{enumi}{5}
  \item C No. 1 \label{lst:num:C:o}
  \item C No. 2
  \item C No. 3 \label{lst:num:C:l}
\end{enumerate} 
Number of items is: \listlength{lst:num:C:o}{lst:num:C:l}.

答案2

这解决了我的问题。

\usepackage{refcount}
\newcounter{bbb}\setcounter{bbb}{10}\addtocounterref{bbb}{lst:numEND2}
(\thebbb)
\newcounter{aaa}\setcounter{aaa}{9}\addtocounterref{aaa}{lst:numSTART2}
(\theaaa)
\addtocounter{bbb}{-\value{aaa}}

The list below contains \thebbb  items.

\begin{enumerate}
\setcounter{enumi}{5}
\item No. 1
\label{lst:numSTART2}
\item No. 2
\item No. 3
\label{lst:numEND2}
\end{enumerate}

相关内容