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?

Mensch
  • 65,388
meduz
  • 1,247
  • 9
    See the etaremune package. I think there was a question about reverse numbering of bibliographies as well, I'll search. Edit: http://tex.stackexchange.com/questions/58642/bibtex-reverse-numbering/75613#75613 – Torbjørn T. Apr 23 '13 at 12:31
  • CTAN also lists revnumerate, but I'm afraid it's not included in TL. – Paulo Cereda Apr 23 '13 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.) – wasteofspace Apr 23 '13 at 16:00
  • @wasteofspace: Ah I see, thanks! :) – Paulo Cereda Apr 23 '13 at 16:08

2 Answers2

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}
Torbjørn T.
  • 206,688
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.

mhelvens
  • 6,126
  • 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 '13 at 14:44
  • A somwhat simple approch would be to redefine \theenumi to yse the last value +1 -`\value{enumi};. – John Kormylo Jul 21 '23 at 14:41