I am using biblatex for citations and bibliography. Now I often have lists of multiple citations, for which biblatex has the \cites command. Now I can get citations to automatically sort if I don't want page numbers, but I cannot get it right with page numbers.

What I want is all citation ordered chronological (oldest first). Is this possible, or must I just do this by hand?

Here is an example.



  author = {Author, A.},
  year = {2001},
  title = {This book is from 2001},
  shorttitle = {2001},
  author = {Author, A.},
  year = {1999},
  title = {This book is from 1999},
  shorttitle = {1999},


This one is corrent.\footnote{\Cites{tom1,tom2}.}
This one is corrent.\footnote{\Cite{tom1,tom2}.}

This one is incorrent.\footnote{\Cites{tom1}{tom2}.}
This one is incorrent.\footnote{\Cites[1]{tom1}[12]{tom2}.}
  • 8
    Technically, the "incorrect" examples are correct as \Cites is a "multicite" command where each key is a stand-alone citation, not part of a list of citations. It's used precisely for manually ordering etc. You're right that there seems to be no cite ordering possible when you need to give pages for each key.
    – PLK
    Aug 4, 2012 at 14:35
  • Yeah, I realise that they are technically correct. Just not exactly what I want... I was hoping there was a way to solve this. Aug 5, 2012 at 9:42

1 Answer 1


Edited (2018-07-14) by moewe for biblatex >= v3.8. See the edit history for older biblatex versions.

The multicite commands take arbitrarily many arguments. They aren't designed to output a sorted citation list. It is possible to construct a two-pass version of \cites that will generate a sorted, qualified citation list.



% original definition of \cites

% new definition

% first pass saves keys, prenotes, postnotes

% second pass outputs sorted citation list

% internal list of saved keys => sorted argument list

% internal list of sorted entry keys
  \ifcsundef{blx@dlist@entry@\the\c@refsection @\blx@refcontext@context}
    {\global\csletcs{cbx@sortkeys}{blx@dlist@entry@\the\c@refsection @\blx@refcontext@context}}}


\newcommand{\cmd}[1]{\texttt{\textbackslash #1}}
\cmd{cite}: \cite{companion,ctan,vangennep,markey} \\
\cmd{cites}: \cites[e.g.][10]{companion}{ctan}{markey}[10--11]{vangennep} \\
\cmd{Cites}: \Cites{ctan}{markey}[e.g.][5--10]{companion}[10--11]{vangennep}

enter image description here

Note that this new version of \cites does not properly support multiprenote and multipostnote arguments of the form


A tidy resolution will probably warrant extension of biblatex internals. This is something we should consider as \textcites in the verbose styles suffers from the same limitation.

  • Ah, thanks for that. I've actually subsequently gone back and edited every use of \cites in my PhD... Oh well. Oct 4, 2012 at 14:21
  • What is the answer for this thread? I am getting stuck with this issue too. I want to cite two authors in a row but wanting to add their appropriate page numbers.
    – user24947
    Jan 24, 2013 at 19:43
  • @expling I've given an answer above. If you don't want the citations printed in the same order as the bibliography, then refer to this post: tex.stackexchange.com/q/18910.
    – Audrey
    Jan 26, 2013 at 17:37
  • With bibtex this works, but when using biber I get undefined control sequence \cbx@sortkeys.
    – user4514
    Mar 5, 2014 at 17:00
  • @user4514 That error resolves after you run biber the first time. To avoid it entirely replace the biber-specific code with \ifcsundef{blx@slists@\the\c@refsection @entry@\blx@sorting}{}{\global\letcs{\cbx@sortkeys}{blx@slists@\the\c@refsection @entry@\blx@sorting}}.
    – Audrey
    Mar 5, 2014 at 20:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.