如何跳过反向枚举中的项目?

如何跳过反向枚举中的项目?

我正在使用 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}

output

(除了它被本地化到应该插入物品的地方之外,我认为这对您自己发布的答案没有任何好处。)

相关内容