8

I'm writing a paper and I need a specific entry in the bibliography go first in the list. The rest of entries should be sorted as usual. I use plain bibliography style and an external .bib file.

For example: there are three authors: Jack Alien, John Bravo and Ally Complex and their papers will be sorted in references as [1] Alien, [2] Bravo, [3] Complex. But I'd like it to be: [1] Complex, [2] Alien, [3] Bravo.

I know, that I can do something like in How to change order of a bibliography style manually (bilingual bibliography), but the single .bib file is used in many projects and in those projects the references should be sorted in standard way.

So, how to accomplish, that a specific reference will be placed first in the bibliography?

  • 2
    You need one entry in one document to go first? It is surely easiest to make a duplicate entry (but with a unique key) of that one entry that uses the trick in the linked to question, and just cite that entry in this one-off document and then not cite it in everything else. If you are going to do fancy sorting things frequently, you should consider switching to biber+biblatex. – jon May 20 '13 at 20:22
  • @jon Yes, exactly -- one entry in one document. And your comment is a solution for me. Post your comment as an answer to let me mark it. Thanks! – jacek.ciach May 20 '13 at 20:46
  • Make a copy of the .bib file and modify that one. If the change is just for one article, it's the simplest way to go. Otherwise, switch to biblatex – egreg May 20 '13 at 21:42
10

For a one-off document where there is only one (or very few) entries that require special sorting treatment, it is not unreasonable to create a 'special' entry and use that entry instead.

\documentclass[12pt]{article}
\usepackage{natbib}
\newcommand{\noop}[1]{}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@Article{adams1986,
  author =   {Adams, Anthony},
  title =    {Article Title},
  journal =  {Journal},
  year =     1986,
  volume =   46,
  pages =    {1--35},
}
@Article{zedson2013,
  author =   {Zedson, John},
  title =    {Zarticle title},
  journal =      {Journal},
  year =     2013,
  volume =   22,
  pages =    {141--181},
}
@Article{zedson2013-special,
  author =   {{\noop{AAA}}Zedson, John},
  title =    {Zarticle title},
  journal =      {Journal},
  year =     2013,
  volume =   22,
  pages =    {141--181},
  annote =       {NOTE: use for special sorting},
}
\end{filecontents}
\begin{document}

\cite{adams1986}
\cite{zedson2013}
\cite{zedson2013-special}

\bibliographystyle{plain}
\bibliography{\jobname}
\end{document}

If you use biber, an easy way to achieve unorthodox/special sorting is to add a sortkey = {<sortkey>} to the entry in question. From the biblatex manual (§ 2.2.3):

A field used to modify the sorting order of the bibliography. Think of this field as the master sort key. If present, biblatex uses this field during sorting and ignores everything else, except for the presort field. Please refer to § 3.5 for further details. This field is consumed by the backend processing and does not appear in the .bbl.

If only using (an alphabetical) biblatex (style) with BibTeX as the backend, you can do something similar by utilizing the sortname field.

1

A very simple solution:

Just add

\begin{document}
\nocite{refName}

and it will force that reference to be the first entry in the bib, assuming you are using a bib style that sorts by order of appearance, like IEEE.

  • 1
    If I wanted to use a ,,sort by order of appearance'' style, I would not ask the question ;). BTW, I'd like to point out, that in the question I noted I used plain style (which uses alphabetical sorting), so your solution, in fact, isn't an answer for my question. – jacek.ciach Nov 21 '13 at 9:30
  • Yes, but for some other sorting function, e.g., using IEEEtran, this works correctly. – Ioannis Filippidis Oct 27 '14 at 23:06

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.