![如何跳过反向枚举中的项目?](https://linux22.com/image/387730/%E5%A6%82%E4%BD%95%E8%B7%B3%E8%BF%87%E5%8F%8D%E5%90%91%E6%9E%9A%E4%B8%BE%E4%B8%AD%E7%9A%84%E9%A1%B9%E7%9B%AE%EF%BC%9F.png)
我正在使用 etemune 包来创建反向枚举,并且我希望能够改变计数器,以便跳过某个项目但枚举仍然以 1 结束。
\documentclass{article}
\usepackage{etaremune}
\begin{document}
\begin{etaremune}
\item the fourth
\item the third
%%\item the second
\item the first
\end{etaremune}
\end{document}
答案1
改变编号的一种方法是\addtocounter
命令。但是,仅在被跳过的项目的位置使用它将会改变 tex 文件中紧随其后的项目,而不是计数方案中紧随其后的项目。解决此不便的方法是按如下方式处理计数器。
\documentclass{article}
\usepackage{etaremune}
\begin{document}
\begin{etaremune}
\addtocounter{enumi}{1}
\item the fourth
\item the third
%%\item the second
\addtocounter{enumi}{-1}
\item the first
\end{etaremune}
\end{document}
答案2
除了枚举环境的常规计数器(现在为倒数)外,etaremune
还使用第二个计数器,称为EM@itemctr
。此计数器像平常一样向上计数,用于确定环境有多少个项目,以便在下次运行期间可以使用正确的起始值。
etaremune
因此,您可以通过减少\@enumctr
(=enum<i+>
其中<i+>
代表适当数量的i
)一个并增加一个来跳过环境中的一项EM@itemctr
。我在下面定义的宏\etaremuneskip
正是这样做的(如果您想跳过多个项目,它会接受一个可选参数)。
\documentclass{article}
\pagestyle{empty}
\usepackage{etaremune}
\makeatletter %% <- make @ usable in command names
\newcommand*\etaremuneskip[1][1]{%
\addtocounter{EM@itemctr}{#1}%
\addtocounter{\@enumctr}{-#1}%
}
\makeatother %% <- revert @
\begin{document}
\begin{etaremune}
\item the fourth\label{fourth}
\begin{etaremune}
\item the f-th
\item the e-th
\etaremuneskip[3]
\item the a-th
\end{etaremune}
\item the third \label{third}
\etaremuneskip
\item the first\label{first}
\end{etaremune}
\end{document}
(除了它被本地化到应该插入物品的地方之外,我认为这对您自己发布的答案没有任何好处。)