Technical Writing

More Bibliographies

Advanced bibliography functionality using Natbib for author-year citation styles and multiple bibliography management in LaTeX.

This is a gentle introduction to using some of the bibliography functionality available to LaTeX users beyond the BibTeX basics. This introduction won't be discussing how to create new styles or packages but rather how to use some existing ones. It is worth noting that Harvard, for example, is a citation style. It is associated with an alphabetical reference list secondarily ordered on date, but the only strictly defined element of Harvard style is the citation in author-date format.

The example data

The database used for the examples contains just the following:

@article{Erdos65,
    title = {Some very hard sums},
    journal = {Difficult Maths Today},
    author = {Paul Erdős and Arend Heyting and Luitzen Egbertus Brouwer},
    year = {1965},
    pages = {30}
}

The limits of BibTeX styles

Using cite.sty and BibTeX makes it very easy to produce some bibliography styles. But author-date styles - for example the often mentioned, never defined "Harvard" - are not so easy. It's true that you can download some .bst files from CTAN that will handle some variants but using them is not always straightforward. This guide deals with Natbib a supplementary package that can access .bib files and has sophisticated functionality for producing custom or default author-year format citations and bibliographies as well as the numerical styles handled by BibTeX.

Natbib

Natbib is a package created by Patrick Daly as a replacement for the cite.sty package when author-date citation styles are required. Natbib provides three associated bibliography styles:

  • plainnat
  • abbrvnat
  • unsrtnat

which correspond to the three styles available by default in BibTeX where you have a plain numbered style, an abbreviated numbered style and an unsorted numbered style.

Alongside these new styles is an extended set of citation commands to provide flexible citation formats. These are:

\citet[]{}

and

\citep[]{}

each of which has a number of variants.

The Preamble

All Natbib styles require that you load the package in your document preamble. A skeleton LaTeX file with Natbib might look like this:

\documentclass[]{article}
\usepackage[round]{natbib}

\begin{document}

Document body text with citations.

\bibliographystyle{plainnat}
\bibliography{myrefs}

\end{document}

Options

Options available with Natbib can be specified in the brackets on the \usepackage command. Among them are:

OptionEffect
round() parentheses
square square brackets
curly{} curly braces
angle<> angle brackets
semicolonseparate citations with ;
colonas semicolon
commaseparate with commas
authoryearauthor-year citations
numbersnumeric citations
supersuperscript citations
sortmultiple citations are ordered as in bibliography
sort&compressas sort but number ranges are compressed and hyphenated
compressnumber ranges are compressed and hyphenated but only where the 'natural' sort produces a continuous range
longnamesfirstfirst citation is full author list and subsequent citations are abbreviated
sectionbiballows multiple bibliographies in the same document
nonamebreakforces all author names onto one line
mergemerges a citation with a previous citation
elideelides any repeated elements in merged references
mciteignore merge

Citation

Basic Citation Commands

To cite with Natbib, use the commands \citet or \citep in your document. The "plain" versions of these commands produce abbreviated lists in the case of multiple authors but both have * variants which result in full author listings. We assume the use of the round option in these examples.

\citet and \citet*

The \citet command is used for textual citations, that is to say that author names appear in the text outside of the parenthetical reference to the date of publication. This command can take options for chapter, page numbers etc.

\citet{Erdos65}

produces: Erdős et al. (1965)

\citet[chapter 2]{Erdos65}

produces: Erdős et al. (1965, chapter 2)

\citet[pp. 10-12]{Erdos65}

produces: Erdős et al. (1965, pp. 10-12)

\citet[see][chap. 2]{Erdos65}

produces: Erdős et al. (see 1965, chap. 2)

Here are the \citet* versions:

\citet*{Erdos65}

produces: Erdős, Heyting and Brouwer (1965)

\citet*[chapter 2]{Erdos65}

produces: Erdős, Heyting and Brouwer (1965, chapter 2)

\citet*[pp. 10-12]{Erdos65}

produces: Erdős, Heyting and Brouwer (1965, pp. 10-12)

\citet*[see][chap. 2]{Erdos65}

produces: Erdős, Heyting and Brouwer (see 1965, chap. 2)

\citep and \citep*

The \citep command is used where the author name is to appear inside the parentheses alongside the date.

\citep{Erdos65}

produces: (Erdős et al. 1965)

\citep[chapter 2]{Erdos65}

produces: (Erdős et al. 1965, chapter 2)

\citep[pp. 10-12]{Erdos65}

produces: (Erdős et al. 1965, pp. 10-12)

\citep[see][chap. 2]{Erdos65}

produces: (see Erdős et al. 1965, chap. 2)

\citep[e.g.][]{Erdos65}

produces: (e.g. Erdős et al. 1965)

Here are the \citep* versions:

\citep*{Erdos65}

produces: (Erdős, Heyting and Brouwer 1965)

\citep*[chapter 2]{Erdos65}

produces: (Erdős, Heyting and Brouwer 1965, chapter 2)

\citep*[pp. 10-12]{Erdos65}

produces: (Erdős, Heyting and Brouwer 1965, pp. 10-12)

\citep*[see][chap. 2]{Erdos65}

produces: (see Erdős, Heyting and Brouwer, 1965, chap. 2)

\citep*[e.g.][]{Erdos65}

produces: (e.g. Erdős, Heyting and Brouwer, 1965)

The Reference List

Having dealt with basic varieties of citation, we turn to the creation of the bibliography or reference list.

Inserting a correct and correctly formatted bibliography when using Natbib is no different than when using plain BibTeX. There are two essential commands:

\bibliography{mybibliographydatabase}

which LaTeX interprets as an instruction to read a bibliographic database file (e.g. myrefs.bib) and insert the relevant data here, and

\bibliographystyle{plainnat}

which specifies how the data are to be presented.

Above the three basic Natbib styles were mentioned as analogues of the partially homonymous styles in BibTeX. Here is approximately how citations would appear in plainnat:

  • For \citet{Erdos65}: Erdős et al. (1965)
  • For \citep{Erdos65}: (Erdős et al. 1965)
  • For \citet*{Erdos65}: Erdős, Heyting and Brouwer (1965)
  • For \citep*{Erdos65}: (Erdős, Heyting and Brouwer 1965)

What more is there?

This covers the basic functionality provided by the package Natbib. It may not, of course, provide what you are looking for. If you don't find what you want here then you should probably next investigate harvard.sty which provides a slightly different set of author-date citation functions.

Copyright © 2026