[Tex/LaTex] Citing a range of papers using numeric keys as in \cite{a, b, c} -> [1-3]

biblatexbibliographiescite-packagecitingnatbib

How can I cite a range of papers, the output is a range of numbers, instead of a list of numbers? In other words, when I type

... some dummy text here is due to me \cite{me1, me2, me3, me4} ...

I want the output to be

… some dummy text here is due to me [3-6] …

instead of

… some dummy text here is due to me [3.4.5.6] …

(I use LaTeX, and am currently using the amsart class and whatever it includes. But I am open to other suggestions.)

Best Answer

The cite, natbib, and biblatex packages, at least, will all do this.


A minimal example which demonstrates the behaviour is:

\documentclass{article}
\begin{document}
hello \cite{article-full,book-full,mastersthesis-full}
\bibliographystyle{unsrt}
\bibliography{xampl}
\end{document}

If you have basic bibliography needs, adding \usepackage{cite} will produce the desired behaviour.

If you have more complex bibliography needs, nowadays I recommend biblatex as a first choice, although natbib has a long and distinguished history in this space and is possibly a better option if you want a more ‘stable’ solution.

For biblatex, you would now write this example as:

\documentclass{article}
\usepackage[style=numeric-comp]{biblatex}
\bibliography{xampl}
\begin{document}
hello \cite{article-full,book-full,mastersthesis-full}
\printbibliography
\end{document}

Noting that you need to process the bibliography using biber instead of bibtex. (You can use bibtex by adding backend=bibtex to the package options, but I'm not sure if that is currently recommended for new documents.)

If you are using natbib, a minimal example would be:

\documentclass{article}
\usepackage[numbers,sort&compress]{natbib}
\begin{document}
hello \citep{article-full,booklet-full,mastersthesis-full}
\bibliographystyle{unsrtnat}
\bibliography{xampl}
\end{document}
Related Question