在包中,enumerate
我可以使用设置标签\begin{enumerate}[label={[\arabic*]}]
。但是,如果我在etaremune
(提供反向列表)中尝试此操作,则会收到以下错误
- 包 xkeyval 错误:``label' 在系列 `template' 中未定义。\begin{etaremune}[label={[\arabic*]}]
我该如何在 中设置标签etaremune
?文档告诉我我可以使用相同的标签,但它对我来说不起作用。下面是显示此问题的 MWE。
\documentclass[12pt,letterpaper]{article}
\usepackage{enumitem} % added for adjusting the indent of publications. adjusted locally at each list
\usepackage{etaremune} % added for reverse numbering of enumerated lists
\begin{document}
\section{A list with etaremune and label (returns an error)}
\begin{etaremune}[label={[\arabic*]}]
\item An item in a list
\item An item in a list
\item An item in a list
\end{etaremune}
\section{A list with enumerate and label (no error)}
\begin{enumerate}[label={[\arabic*]}]
\item An item in a list
\item An item in a list
\item An item in a list
\end{enumerate}
\end{document}
答案1
以下是etaremune
使用的重新实现enumitem
。
这个想法是在最后设置一个指向最后使用的数字的标签。这可以借助 进行必要的算术运算\getrefnumber
。
显然需要两次运行才能使计数器同步。
\documentclass{article}
\usepackage{enumitem}
\usepackage{refcount}
\makeatletter
\AddEnumerateCounter*{\reversearabic}{\@reversearabic}{2}
\newcommand{\reversearabic}[1]{\expandafter\@reversearabic\csname c@#1\endcsname}
\newcommand{\@reversearabic}[1]{%
\number\numexpr\getrefnumber{this@etaremune@\romannumeral\c@etaremune}-#1+1\relax
}
\newcounter{etaremune}
\newenvironment{etaremune}[1][]{%
\stepcounter{etaremune}%
\begin{enumerate}[label=\reversearabic*.,#1]%
}{%
\edef\@currentlabel{\the\csname c@\@enumctr\endcsname}%
\label{this@etaremune@\romannumeral\c@etaremune}%
\end{enumerate}%
}
\makeatother
\begin{document}
\begin{enumerate}[label={[\arabic*]}]
\item one
\item two
\item three
\item four
\end{enumerate}
\begin{etaremune}[label={[\reversearabic*]}]
\item one
\item two
\item three
\item four
\end{etaremune}
\begin{etaremune}
\item one
\item two
\item three
\item four
\end{etaremune}
\end{document}