我有许多具有连续枚举的节和小节(即,如果第一节在 4 处停止,则第二节从 5 开始计数)。如下所示:
\section{Section 1 (Number of Items in section: 3)}
\begin{enumerate}[resume]
\item Item 1
\item Item 2
\item Item 3
\end{enumerate}
\section{Section 2 (Number of Items in section: 2)}
\begin{enumerate}[resume]
\item Item 4
\item Item 5
\end{enumerate}
我想要做的是自动执行“部分中的项目数:x”部分。现在,我正在手动计算项目数,但是有没有办法获取下一节中的项目数并自动更新它?
谢谢!
答案1
对于这个包来说这是一个相当容易的任务xcntperchap
(我是这个包的作者,好吧——厚颜无耻的宣传 ;-))
这个包的主要目的是计算enumi
每个轨道级别计数器 X(此处)section
出现多少个 Y(此处)。
基本用法是\RegisterCounters{section}{enumi,...}
,第一个参数用于保存跟踪级别,即“结构”级别,第二个参数保存应在此处跟踪的计数器名称的逗号分隔列表enumi
(因为这是enumerate
第一级计数器)
可以使用多个轨道级别,只需\RegisterCounters
对每个轨道级别使用即可,即使跟踪的计数器也可以在多个轨道级别中使用,“簿记”是在后面完成的,不同的轨道级别不会干扰!
所有信息都存储在一个\jobname.cpc
文件中,可以在第二次编译运行期间使用以下命令检索该信息:
\ObtainTrackedValue[counter value]{section}{enumi}
指定counter value
应跟踪哪个部分编号。省略它,则使用轨道级别计数器的当前值(此处section
),如果不想为当前部分值烦恼,这将非常方便。
该软件包相当新,是 的后继者cntperchap
,可在CTAN xcntperchap
由于是在后台使用,所以这个resume
特性enumitem
确实有一个负面的副作用。xcntperchap
xassoccnt
\documentclass{article}
\usepackage{xcntperchap}
\usepackage{enumitem}
\RegisterCounters{section}{enumi}
\begin{document}
\section{Section 1 -- with \ObtainTrackedValue{section}{enumi} items}
\begin{enumerate}[resume]
\item Item 1
\item Item 2
\item Item 3
\end{enumerate}
\section{Section 2 -- with \ObtainTrackedValue{section}{enumi} items}
\begin{enumerate}[resume]
\item Item 4
\item Item 5
\end{enumerate}
\end{document}