在 etemune 中更改标签

在 etemune 中更改标签

在包中,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}

在此处输入图片描述

相关内容