LaTeX tips: Bibliographies

The top ten list

A list of the most useful tips and the most common sources of errors.

Stylistic conventions for bibliographies in mathematical writing

While there is some degree of variation in the styles in which different journals set their bibliographies, there are a number generally accepted stylistic conventions for bibliographies in research level mathematical writing that authors should try to follow.

Formatting bibliographies with \bibitem

Manual formatting of bibliographies is accomplished with the thebibliography environment, using \bibitem to set an individual reference. The \bibitem command is a variation of the \item command, and its syntax is similar. Here is an example illustrating the formatting of four different types of bibliography entries: an ordinary journal article (Knuth), a book (Graham/Knuth/Patashnik), an article published in a conference proceedings (Erdos), and an unpublished paper (Simpson):


\begin{thebibliography}{9}


\bibitem{Erdos01} P. Erd\H os, \emph{A selection of problems and
results in combinatorics}, Recent trends in combinatorics (Matrahaza,
1995), Cambridge Univ. Press, Cambridge, 2001, pp. 1--6.

\bibitem{ConcreteMath}
R.L. Graham, D.E. Knuth, and O. Patashnik, \emph{Concrete
mathematics}, Addison-Wesley, Reading, MA, 1989.

\bibitem{Knuth92} D.E. Knuth, \emph{Two notes on notation}, Amer.
Math. Monthly \textbf{99} (1992), 403--422.

\bibitem{Simpson} H. Simpson, \emph{Proof of the Riemann
Hypothesis},  preprint (2003), available at 
\url{http://www.math.drofnats.edu/riemann.ps}.

\end{thebibliography}

Some points to note:

Generating bibliographies with bibtex

The basic philosophy underlying LaTeX is that of separating "logical formatting" from "visual formatting". Authors should only be concerned with the former and not have to worry about the latter. LaTeX makes this possible by allowing authors to specify document elements with logical constructs such as \author, \title, \section, etc., while the appearance of these items in the typeset document is determined by the document class.

Bibtex is a program that applies the same philosophy to bibliographies. In bibtex, bibliography entries are specified by providing values for fields such as author, title, volume, etc., without regard to the formatting of these items. The formatting is determined by a bibliography style, which plays the same role as the document class in LaTeX.

To set a bibliography using bibtex requires the following steps, which will be explained in detail below.

  1. Create a "bibtex database".
  2. Choose a bibliography style and insert an instruction in the tex file of the paper to load the bibtex database and format references according to this style file.
  3. Process the paper through multiple runs of latex and bibtex.
Here are the steps in detail:

Step 1. Creating a bibtex database

Like any database, a bibtex database consists of records and fields. Each bibtex record holds the bibliographic information for a single bibliography entry. Records begin with an "at" symbol (@), followed by the record type, and, in braces, a comma-separated list of entries of the form "fieldname = value", where the "fieldnames" are components of the bibliography entry such as "author", "title", etc. The following example shows how the four bibliography items listed above would be entered into a bibtex database:


@article{Knuth92,
        author = "D.E. Knuth",
        title = "Two notes on notation",
        journal = "Amer. Math. Monthly",
        volume = "99",
        year = "1992",
        pages = "403--422",
}

@book{ConcreteMath,
        author = "R.L. Graham and D.E. Knuth and O. Patashnik",
        title = "Concrete mathematics",
        publisher = "Addison-Wesley",
        address = "Reading, MA",
        year = "1989"
}

@unpublished{Simpson,
        author = "H. Simpson",
        title = "Proof of the {R}iemann {H}ypothesis",
        note = "preprint (2003), available at 
        \texttt{http://www.math.drofnats.edu/riemann.ps}",
}

@incollection{Er01,
        author = "P. Erd{\H o}s",
        title = "A selection of problems and results in combinatorics",
        booktitle = "Recent trends in combinatorics (Matrahaza, 1995)",
        publisher = "Cambridge Univ. Press",
        address = "Cambridge",
        pages = "1--6"
}


The four entries illustrate the most common entry types: article, book, incollection, unpublished. Depending on the bibliography style used, other types may be available, but in most cases the four types suffice. For a complete listing of possible record types, see Chapter 10 in Gratzer's book.

Here are some points to note:

Downloading bibtex records from MathSciNet. Perhaps the greatest advantage of using bibtex for bibliographies is that (at least for published papers) bibtex records can be downloaded from MathSciNet. This saves the time and effort to manually create these records, and, perhaps more importantly, virtually guarantees the accuracy of the records.

MathSciNet has a handy "clipboard" feature that greatly facilitates this task. For each of the bibliography entries, perform a regular MathSciNet search to locate the entry, click on "Add citation to clipboard", and move on to the next item in the bibliography. When you are done, click on the link "View clipboard" (near at the top left of the page), select "bibtex" as format, and "Save all". This will display bibtex versions of all records that have been saved to the clipboard. Now, save the page as a text file to be used as a bibtex database, or paste the records into an existing bibtex database file. (In netscape, use the "Save as" option from the File menu and select "text" as file format.) The final step consists in "matching up" the keys of the bibtex records with the citation keys of the paper. MathSciNet uses MR numbers (strings such as MR1999i:11139) for keys. Replace these MR numbers by the appropriate citation keys of the paper.

MathSciNet contains records of nearly all mathematical literature published during the past 50 years, but records for older references and unpublished items will still have to be created manually. Thus, even if MathSciNet is used to obtain bibtex records, a basic understanding of syntax of bibtex databases is necessary in order to create records that are not in MathSciNet.

Step 2. Loading the bibtex database

Once a bibtex database, say mybibliography.bib, has been created, it can be loaded by placing the following two commands at the end of the main tex file of the paper, just before \end{document}.

\bibliographystyle{amsplain}
\bibliography{mybibliography}

The \bibliographystyle{...} entry determines the formatting of bibliographies. There are four commonly used bibliography styles, plain, alpha, amsplain, amsalpha. The latter two may be preferable since those are the styles used by AMS publications. The "plain" versions of these styles generate numeric labels, the "alpha" versions generate alphanumeric labels constructed from the authors' initials and the year of publication.

Many publishers have in-house style files and ask authors of accepted papers to prepare final versions using those style files. This requires downloading and installing the publisher's style file; see the page "Installing and using custom packages and styles" for instructions on how to do this.

The \bibliography{...} entry tells LaTeX the name of the bibtex database containing the bibliographic information. The argument in braces should be the name of the bibtex file, but without the .bib extension. The above example assumes there is a file mybibliography.bib in the current directory. Note that this file can contain many more records than are needed for the particular paper. This allows one to keep all records in a single personal bibtex database; it also makes it possible to share bibtex databases, and to compile large databases of bibtex records in a particular field and make those available for anyone to use.

Step 3. Processing the paper through latex and bibtex

Assume you have a paper, called paper.tex, along with a bibtex database, mybibliography.bib, which has been loaded in the paper as shown above. To completely process the paper execute the following commands, in sequence:
  1. latex paper
  2. bibtex paper
  3. latex paper
  4. latex paper
The first run (through latex) generates an auxiliary file, paper.aux, containing information about citations (and other types of references), the bibliography style used, and the name of the bibtex database. The second run (through bibtex) uses the information in the auxiliary file, along with the data contained in the bibtex database, to create a file paper.bbl. This file contains a thebibliography environment with \bibitem entries formatted according to the bibliography style specified.

In principle, the file paper.bbl could be pasted into the main tex file (paper.tex), replacing the lines \bibliographystyle{...} \bibliography{...}. The resulting tex file would then be of the same form as a LaTeX file with a manually formatted bibliography. However, this is not necessary unless one wants to create a single self-contained file (e.g., because a publisher requested so).

The final two runs by latex process the paper again through latex, now using the file paper.bbl for the bibliography.

In situations with complex cross-referencing, it may be necessary to do more than two latex runs. If additional runs are necessary, LaTeX will issue an appropriate warning.


Back to the LaTeX Tips Page

Last modified: Mon 17 Sep 2007 12:42:07 PM CDT A.J. Hildebrand