<!DOCTYPE html>
<html><head>
<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
<title>BibTeX</title>
</head>

<body>
<h2 align="left">BibTeX</h2>

<p align="right"><em>A printer friendly PDF version of this page is available
<a href="bibtex-format.pdf">bibtex-format.pdf  (48Kb)</a></em></p>

<h3>Description</h3>
BibTeX is a program and file format designed by Oren Patashnik and Leslie
Lamport in 1985 for the LaTeX document preparation system. The format is
entirely character based, so it can be used by any program (although the
standard character set for accents is TeX). It is field (tag) based and the
BibTeX program will ignore unknown fields, so it is expandable. It is
probably the most common format for bibliographies on the Internet.

<h3>References</h3>
<ul>
  <li><cite>LaTeX: A Document Preparation System</cite> by Leslie Lamport,
    1986, Addison-Wesley.</li>
  <li><cite>BibTeXing</cite> ( <a
    href="ftp://sunsite.unc.edu/pub/packages/TeX/biblio/bibtex/distribs/doc/btxdoc.tex">
    <tt>btxdoc.tex</tt></a>), by Oren Patashnik, February 1988, (BibTeX
    distribution).</li>
  <li><a href="http://jasper.ora.com/texhelp/bibtx-4.html">Help file for
    BibTeX format</a></li>
  <li><a href="http://hypatia.dcs.qmw.ac.uk/html/bibliography.html">Hypatia's
    Guide to BibTeX</a>. A very nice document that serves the same function
    of this one.</li>
</ul>

<h3>Software Support</h3>
The BibTeX program uses <a
href="http://jasper.ora.com/texhelp/bibtx-50.html">style files</a>, a list of
citations from LaTeX, and a BibTeX database to create a LaTeX file listing
the cited references.

<p>Dana Jacobsen maintains a <a
href="http://www.ecst.csuchico.edu/~jacobsd/bib/tools/bibtex.html">list of
some BibTeX tools</a>.</p>

<p>If you're looking for BibTeX for the Mac, Vince Darley has done a <a
href="http://www.fas.harvard.edu/~darley/MacBibTeX.html">port of BibTeX to
the Mac</a>.</p>

<p><a
href="http://www.ecst.csuchico.edu/~jacobsd/bib/bp/index.html"><cite>bp</cite></a>
and BibDB both fully support BibTeX.</p>

<h3>Examples</h3>
<pre>@article{Gettys90,
   author = {Jim Gettys and Phil Karlton and Scott McGregor},
   title = {The {X} Window System, Version 11},
   journal = {Software Practice and Experience},
   volume = {20},
   number = {S2},
   year = {1990},
   abstract = {A technical overview of the X11 functionality.  This is an update
of the X10 TOG paper by Scheifler \&amp; Gettys.}
}</pre>

<h3>Common problems</h3>
<ul>
  <li>The original documents specified a large number of field names, but
    there are many common items that are not listed. A list of some of the
    ones people have added are below.</li>
  <li>When using BibTeX, the interaction between names and accenting is
    somewhat tricky. You should use `G{\"o}del' or `G{\"{o}}del', and not
    `{G{\"{o}}del}' or `{G\"{o}del}'.</li>
  <li>The BibTeX program is written, as is all TeX, using static data
    structures, and the maximum length of any one string is by default 1000
    characters. It is not uncommon for fields like abstract and contents to
    overflow this buffer. Solutions to this include
    <ul>
      <li>change the source code to BibTeX (I've changed mine to 3000)</li>
      <li>use <tt>\include{<i>file.tex</i>}</tt> to include an external
      file</li>
      <li>split the field into <i>field1</i>, <i>field2</i>, ...</li>
    </ul>
  </li>
</ul>

<h3>Format Description</h3>

<h3>Special features</h3>
The <tt>@STRING</tt> command is used to define abbreviations for use by
BibTeX. The command <tt>@string{jgg1 = "Journal of Gnats and Gnus,
Series~1"}</tt> defines 'jgg1' to be the abbreviation for the string "Journal
of Gnats and Gnus, Series~1". Any reference outside of quotes or braces to
<tt>jgg1</tt> will be filled in with the full string.

<p>The <tt>@PREAMBLE</tt> command is used to define formatter code that will
be output directly to the <tt>bbl</tt> file produced by the BibTeX program.
This usually consists of LaTeX macros. It is unclear what one should do with
the fields when converting to a format that does not use TeX.</p>

<p>The <tt>@COMMENT</tt> command lets you put any text inside it. It isn't
really necessary, since BibTeX will ignore any text that isn't inside an
entry. However, you can not have an <b>@</b> character outside of an item.</p>

<h3>Standard entry types</h3>
<dl>
  <dt><tt>@article</tt></dt>
    <dd>An article from a journal or magazine.</dd>
  <dt><tt>@book</tt></dt>
    <dd>A book with an explicit publisher.</dd>
  <dt><tt>@booklet</tt></dt>
    <dd>A work that is printed and bound, but without a named publisher or
      sponsoring institution.</dd>
  <dt><tt>@conference</tt></dt>
    <dd>The same as <tt>inproceedings</tt>.</dd>
  <dt><tt>@inbook</tt></dt>
    <dd>A part of a book, which may be a chapter (or section or whatever)
      and/or a range of pages.</dd>
  <dt><tt>@incollection</tt></dt>
    <dd>A part of a book having its own title.</dd>
  <dt><tt>@inproceedings</tt></dt>
    <dd>An article in a conference proceedings.</dd>
  <dt><tt>@manual</tt></dt>
    <dd>Technical documentation.</dd>
  <dt><tt>@mastersthesis</tt></dt>
    <dd>A Master's thesis.</dd>
  <dt><tt>@misc</tt></dt>
    <dd>Use this type when nothing else fits.</dd>
  <dt><tt>@phdthesis</tt></dt>
    <dd>A PhD thesis.</dd>
  <dt><tt>@proceedings</tt></dt>
    <dd>The proceedings of a conference.</dd>
  <dt><tt>@techreport</tt></dt>
    <dd>A report published by a school or other institution, usually numbered
      within a series.</dd>
  <dt><tt>@unpublished</tt></dt>
    <dd>A document having an author and title, but not formally
    published.</dd>
</dl>

<h3>Other entry types</h3>
Using these entry types is not recommended, but they might occur in some
bibliographies.
<dl>
  <dt><tt>@collection</tt></dt>
    <dd>A collection of works. The same as <tt>proceedings</tt></dd>
  <dt><tt>@patent</tt></dt>
    <dd>A patent.</dd>
</dl>

<h3>Standard fields</h3>
For now I'm going to be lazy and give you what Oren Patashnik wrote about the
fields. I'll redo this sometime, including references to how each field
should be formatted.
<dl>
  <dt><tt>address</tt></dt>
    <dd>Usually the address of the <tt>publisher</tt> or other type of
      institution. For major publishing houses, van Leunen recommends
      omitting the information entirely. For small publishers, on the other
      hand, you can help the reader by giving the complete address.</dd>
  <dt><tt>annote</tt></dt>
    <dd>An annotation. It is not used by the standard bibliography styles,
      but may be used by others that produce an annotated bibliography.</dd>
  <dt><tt>author</tt></dt>
    <dd>The name(s) of the author(s), in the format described in the LaTeX
      book.</dd>
  <dt><tt>booktitle</tt></dt>
    <dd>Title of a book, part of which is being cited. See the LaTeX book for
      how to type titles. For book entries, use the <tt>title</tt> field
      instead.</dd>
  <dt><tt>chapter</tt></dt>
    <dd>A chapter (or section or whatever) number.</dd>
  <dt><tt>crossref</tt></dt>
    <dd>The database key of the entry being cross referenced. Any fields that
      are missing from the current record are inherited from the field being
      cross referenced.</dd>
  <dt><tt>edition</tt></dt>
    <dd>The edition of a book---for example, ``Second''. This should be an
      ordinal, and should have the first letter capitalized, as shown here;
      the standard styles convert to lower case when necessary.</dd>
  <dt><tt>editor</tt></dt>
    <dd>Name(s) of editor(s), typed as indicated in the LaTeX book. If there
      is also an <tt>author</tt> field, then the <tt>editor</tt> field gives
      the editor of the book or collection in which the reference
    appears.</dd>
  <dt><tt>howpublished</tt></dt>
    <dd>How something strange has been published. The first word should be
      capitalized.</dd>
  <dt><tt>institution</tt></dt>
    <dd>The sponsoring institution of a technical report.</dd>
  <dt><tt>journal</tt></dt>
    <dd>A journal name. Abbreviations are provided for many journals.</dd>
  <dt><tt>key</tt></dt>
    <dd>Used for alphabetizing, cross referencing, and creating a label when
      the ``author'' information <!-- See odds-and-ends -->
       is missing. This field should not be confused with the key that
      appears in the <tt>cite</tt> command and at the beginning of the
      database entry.</dd>
  <dt><tt>month</tt></dt>
    <dd>The month in which the work was published or, for an unpublished
      work, in which it was written. You should use the standard three-letter
      abbreviation, as described in Appendix B.1.3 of the LaTeX book.</dd>
  <dt><tt>note</tt></dt>
    <dd>Any additional information that can help the reader. The first word
      should be capitalized.</dd>
  <dt><tt>number</tt></dt>
    <dd>The number of a journal, magazine, technical report, or of a work in
      a series. An issue of a journal or magazine is usually identified by
      its volume and number; the organization that issues a technical report
      usually gives it a number; and sometimes books are given numbers in a
      named series.</dd>
  <dt><tt>organization</tt></dt>
    <dd>The organization that sponsors a conference or that publishes a
      <tt>manual</tt>.</dd>
  <dt><tt>pages</tt></dt>
    <dd>One or more page numbers or range of numbers, such as
      <tt>42--111</tt> or <tt>7,41,73--97</tt> or <tt>43+</tt> (the
      `<tt>+</tt>' in this last example indicates pages following that don't
      form a simple range). To make it easier to maintain
      <cite>Scribe</cite>-compatible databases, the standard styles convert a
      single dash (as in <tt>7-33</tt>) to the double dash used in TeX to
      denote number ranges (as in <tt>7--33</tt>).</dd>
  <dt><tt>publisher</tt></dt>
    <dd>The publisher's name.</dd>
  <dt><tt>school</tt></dt>
    <dd>The name of the school where a thesis was written.</dd>
  <dt><tt>series</tt></dt>
    <dd>The name of a series or set of books. When citing an entire book, the
      the <tt>title</tt> field gives its title and an optional
      <tt>series</tt> field gives the name of a series or multi-volume set in
      which the book is published.</dd>
  <dt><tt>title</tt></dt>
    <dd>The work's title, typed as explained in the LaTeX book.</dd>
  <dt><tt>type</tt></dt>
    <dd>The type of a technical report---for example, ``Research Note''.</dd>
  <dt><tt>volume</tt></dt>
    <dd>The volume of a journal or multi-volume book.</dd>
  <dt><tt>year</tt></dt>
    <dd>The year of publication or, for an unpublished work, the year it was
      written. Generally it should consist of four numerals, such as
      <tt>1984</tt>, although the standard styles can handle any
      <tt>year</tt> whose last four nonpunctuation characters are numerals,
      such as `\hbox{(about 1984)}'.</dd>
</dl>

<h3>Other fields</h3>
BibTeX is extremely popular, and many people have used it to store
information. Here is a list of some of the more common fields:
<dl>
  <dt><tt>affiliation</tt></dt>
    <dd>The authors affiliation.</dd>
  <dt><tt>abstract</tt></dt>
    <dd>An abstract of the work.</dd>
  <dt><tt>contents</tt></dt>
    <dd>A Table of Contents</dd>
  <dt><tt>copyright</tt></dt>
    <dd>Copyright information.</dd>
  <dt><tt>ISBN</tt></dt>
    <dd>The International Standard Book Number.</dd>
  <dt><tt>ISSN</tt></dt>
    <dd>The International Standard Serial Number. Used to identify a
    journal.</dd>
  <dt><tt>keywords</tt></dt>
    <dd>Key words used for searching or possibly for annotation.</dd>
  <dt><tt>language</tt></dt>
    <dd>The language the document is in.</dd>
  <dt><tt>location</tt></dt>
    <dd>A location associated with the entry, such as the city in which a
      conference took place.</dd>
  <dt><tt>LCCN</tt></dt>
    <dd>The Library of Congress Call Number. I've also seen this as
      <tt>lib-congress</tt>.</dd>
  <dt><tt>mrnumber</tt></dt>
    <dd>The <i>Mathematical Reviews</i> number.</dd>
  <dt><tt>price</tt></dt>
    <dd>The price of the document.</dd>
  <dt><tt>size</tt></dt>
    <dd>The physical dimensions of a work.</dd>
  <dt><tt>URL</tt></dt>
    <dd>The WWW Universal Resource Locator that points to the item being
      referenced. This often is used for technical reports to point to the
      ftp site where the postscript source of the report is located.</dd>
</dl>
[<a href="/~jacobsd/bib/formats/index.html">Back to Formats</a>]
<hr>
<b>12 December 1996</b>
<address>
  <a href="http://www.ecst.csuchico.edu/~jacobsd/Dana.html">Dana
  Jacobsen</a><br>
  dana@acm.org
</address>
<!-- The following section added by WWWOFFLE -->
</body>
</html>

