52

To build a list of publications, I wish to show the most recent on top of the list, while keeping the numbering similar. This can be achieved manually by doing something like:

\begin{enumerate}
\item[42] pub num 42
\item[41] pub num 41
\item[...]
\item[1] pub num 1
\end{enumerate}

but is there a more principled approach?

4
  • 9
    See the etaremune package. I think there was a question about reverse numbering of bibliographies as well, I'll search. Edit: tex.stackexchange.com/questions/58642/bibtex-reverse-numbering/… Apr 23, 2013 at 12:31
  • CTAN also lists revnumerate, but I'm afraid it's not included in TL. Apr 23, 2013 at 14:48
  • 1
    @PauloCereda: it’s revnum, and it’s not in tl because the author didn’t provide any statement of the licence — any licence must be listed, as otherwise no-one knows what the licence may be. (nowadays we might prod the author for a statement of licence, but revnum was uploaded in 1998, somewhat before we had started paying detailed attention to the licensing situation.) Apr 23, 2013 at 16:00
  • @wasteofspace: Ah I see, thanks! :) Apr 23, 2013 at 16:08

2 Answers 2

66

The etaremune package provides an etaremune environment that does just this. Note that two compile runs is necessary to get the correct numbering.

enter image description here

\documentclass{article}
\usepackage{etaremune}
\begin{document}
\begin{etaremune}
  \item Last things first
  \item \ldots
  \item First things last
\end{etaremune}
\end{document}
3
  • 2
    The problem I encountered with etaremune is that I do not seem to be able to change margins and indentation for the list, as I can with the enumerate package.
    – user47979
    Mar 14, 2014 at 18:50
  • 1
    @user47979 You could always ask a new question about that problem. Mar 14, 2014 at 19:11
  • 1
    … and I love the self-explanatory name of the package!
    – meduz
    Sep 19, 2021 at 21:00
13

Here's a the first solution that comes to mind. Kind of a hack actually, but it works fine.

\documentclass{article}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\newenvironment{benumerate}[1]{
    \let\oldItem\item
    \def\item{\addtocounter{enumi}{-2}\oldItem}
    \begin{enumerate}
    \setcounter{enumi}{#1}
    \addtocounter{enumi}{1}
}{
    \end{enumerate}
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{document}

\begin{enumerate}
  \item A  % 1
  \item B  % 2
  \item C  % 3
\end{enumerate}

\begin{benumerate}{9}
  \item A  % 9
  \item B  % 8
  \item C  % 7
\end{benumerate}

\end{document}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

The benumerate environment expects one mandatory argument: the first number of the list. Ideally you wouldn't have to give it (if you always expect to end the list with 1). But that solution would be a bit more complicated.

2
  • 1
    Hm. I'm just now seeing Torbjørn's comment. Of course the etaremune package is more elegant than my hack. And more importantly, it has a much funnier name. ;-)
    – mhelvens
    Apr 23, 2013 at 14:44
  • A somwhat simple approch would be to redefine \theenumi to yse the last value +1 -`\value{enumi};. Jul 21, 2023 at 14:41

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .