0

Is there a way to let biblatex+biber sort the authors list alphabetically using the last name of the authors before applying any further processing (e.g., replace long lists with et al.)?

I use biblatex and biber with the following settings:

\RequirePackage[
 backend=biber,
 citestyle=numeric-comp,
 maxnames=3,
 minnames=1,
 sorting=none)
]

MWE

input:

@article{example1,
  author = {Blastname, Tim and Alastname, Tom},
  title = {Example Title}
  [..]
}

@article{example2,
  author = {Blastname, Tim and Alastname, Tom and Clastname, Tam},
  title = {Example Title}
  [..]
}

@article{example3,
  author = {Blastname, Tim and Alastname, Tom and Clastname, Tam and Dlastname, Tum},
  title = {Example Title}
  [..]
}

desired output (assuming they are cited in the above order):

[1] T. Alastname and T. Blastname. "Example Title", [..]

[2] T. Alastname, T. Blastname, and T. Clastname. "Example Title", [..]

[3] T. Alastname et al. "Example Title", [..]

So I do not want to change the ordering of the references in the bibliography, but the order of the authors in each reference.

1

No.

I'm afraid Biber has no functionality to sort within name lists. (Neither does BibTeX.) I guess this is not a highly sought after feature since no style guide I know of advocates changing the order in name lists: In some fields they have meaning and even in those where order does not necessarily indicate contribution or seniority a paper may still be known by its first author and re-sorting to get a different first author would be problematic.

If you need this feature (and think it would be useful for others as well), you can open a feature request at https://github.com/plk/biber/issues.


I have one idea for a work-around on the biblatex side. But the implementation was too tricky to pull of for now. The idea would be to loop through all authors of the paper and create a separate dataonly entry for each author (the entry key could come from its hash). Biber would then sort these author-only entries by name. We could then essentially get a list of sorted name hashes. When an entry is printed we would loop through all hashes and add them to a list. We would then take that list and sort it (by looping through the sorted list of all names). Then we would retrieve the name information from the hashes.

It seems that this idea should work, but it would require quite a bit of work. It might be easier just to sort the name lists with an external script. The script would probably work better if it could parse BibTeX name lists and there are libraries out that can do this.

  • Thanks for the additional information. I was thinking about this, as many of the references I have to cite have >1000 authors. In these cases, the authors are usually sorted alphabetically (split into the different institutions) and/or replaced by a collaboration name. Thus, it might have been nice to sort all papers in the bibliography the same way. If this is a lot of additional work (as you suggest), it might not be worth it. – ppmt Mar 28 at 9:56
  • 1
    @ppmt I tried to cobble something together based on my idea in the second part of the answer, but I couldn't quite get it to work for some very technical reasons (that are not quite clear to me at the moment). Since it is extremely unusual to re-sort names I would advise against it if you only considered it for consistency reasons. – moewe Mar 28 at 10:00

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.