![保存动态计数器的值](https://linux22.com/image/328425/%E4%BF%9D%E5%AD%98%E5%8A%A8%E6%80%81%E8%AE%A1%E6%95%B0%E5%99%A8%E7%9A%84%E5%80%BC.png)
我想获得以下物品的组织:
- A部分
- 类别 1
- 项目1.1
- 项目1.2
- 第 2 类
- 项目2.1
- 类别 1
- B部分
- 类别 1
- 项目1.3
- 项目1.4
- 第 2 类
- 项目2.2
- 项目2.3
- 类别 1
- C部分
- 类别 1
- 项目 1.5
- 第 2 类
- 项目2.4
- 项目2.5
- 项目2.6
- 类别 1
使用如下代码:
\section{A}
\resetcategories
\nextcategory
\myitem{}
\myitem{}
\nextcategory
\myitem{}
\section{B}
\resetcategories
\nextcategory
\myitem{}
\myitem{}
\nextcategory
\myitem{}
\myitem{}
\section{C}
\resetcategories
\nextcategory
\myitem{}
\nextcategory
\myitem{}
\myitem{}
\myitem{}
因此,每个动态类别中都有一个动态项目计数器,但其值会被保存,即使类别计数器被重置,也可以恢复。
有没有一种巧妙的方法可以通过自定义计数器或变量来实现这一点?
答案1
TeX 寄存器的常见操作如下:
\newcount\catnum
\expandafter \newcount\csname itemnum1\endcsname
\expandafter \newcount\csname itemnum2\endcsname
\def\inum{itemnum\the\catnum}
\def\bull#1{\noindent\hskip#1\parindent
\hangindent=#1\parindent
\llap{$\bullet$\ }\ignorespaces
}
\def\section#1{\par\bull1 \catnum=0 section #1}
\def\nextcategory{\par\advance\catnum by1 \bull2 category \the\catnum}
\def\myitem{\par
\advance\csname\inum\endcsname by1 \bull3
item \the\catnum.\expandafter\the\csname\inum\endcsname}
\let\resetcategories=\relax
\section{A}
\resetcategories
\nextcategory
\myitem{}
\myitem{}
\nextcategory
\myitem{}
\section{B}
\resetcategories
\nextcategory
\myitem{}
\myitem{}
\nextcategory
\myitem{}
\myitem{}
\section{C}
\resetcategories
\nextcategory
\myitem{}
\nextcategory
\myitem{}
\myitem{}
\myitem{}
\bye
答案2
也许是这样,使用“恢复”enumitem
列表?
\documentclass{article}
\usepackage{enumitem}
\newlist{sectionlist}{enumerate}{3}
\setlist[sectionlist,1]{label={\Alph*}}
\setlist[sectionlist,2]{label={\arabic*}}
\setlist[sectionlist,3]{label*={.\arabic*}}
\begin{document}
\begin{sectionlist}
\item Section
\begin{sectionlist}
\item Category
\begin{sectionlist}[series=first]
\item Foo
\item Other Foo
\end{sectionlist}
\item Category
\begin{sectionlist}[series=second]
\item Foo
\item Other Foo
\end{sectionlist}
\end{sectionlist}
\item Section
\begin{sectionlist}
\item Category
\begin{sectionlist}[resume=first]
\item Foo
\item Other Foo
\end{sectionlist}
\item Category
\begin{sectionlist}[resume=second]
\item Foo
\item Other Foo
\item Yet another foo
\end{sectionlist}
\end{sectionlist}
\item Section
\begin{sectionlist}
\item Category
\begin{sectionlist}[resume=first]
\item Foo
\item Other Foo
\item Yet another foo
\end{sectionlist}
\item Category
\begin{sectionlist}[resume=second]
\item Foo
\item Other Foo
\item Yet another foo
\item Even yet another foo
\end{sectionlist}
\end{sectionlist}
\end{sectionlist}
\end{document}