有什么简单的方法可以加减数字以便计算列表项的数量?
例如,以下列表包含三个项目
\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}