BibTeX is reference management software for formatting lists of references. The BibTeX tool is typically used together with the LaTeX document preparation system. Within the typesetting system, its name is styled as . The name is a portmanteau of the abbreviation of "bibliography" and TeX.

BibTeX makes it easy to cite sources in a consistent manner, by separating bibliographic information from the presentation of this information, similarly to the separation of content and presentation/style supported by LaTeX itself.

a .bst file (the style file), which specifies the general reference-list style and specifies how to format individual entries, and which is written by a style designer [..] in a special-purpose language [..], and

.bib file(s) constituting a database of all reference-list entries the user might ever hope to use.

BibTeX chooses from the .bib file(s) only those entries specified by the .aux file (that is, those given by LaTeX's \cite or \nocite commands), and creates as output a .bbl file containing these entries together with the formatting commands specified by the .bst file [..]. LaTeX will use the .bbl file, perhaps edited by the user, to produce the reference list.[1]

During the period following BibTeX's implementation in 1985, several reimplementations have been published:

BibTeXu

A reimplementation of bibtex (by Yannis Haralambous and his students) that supports the UTF-8 character set. Taco Hoekwater of the LuaTeX team has criticized it [1].

bibtex8

A reimplementation of bibtex that supports 8-bit character sets.

CL-BibTeX

A completely compatible reimplementation of bibtex in Common Lisp, capable of using bibtex .bst files directly or converting them into human-readable Lisp .lbst files. CL-BibTeX supports Unicode in Unicode Lisp implementations, using any character set that Lisp knows about.

MLBibTeX

A reimplementation of BibTeX focusing on multilingual features, by Jean-Michel Hufflen. [2]

biblatex

A complete reimplementation. "It redesigns the way in which LaTeX interacts with BibTeX at a fairly fundamental level. With biblatex, BibTeX is only used to sort the bibliography and to generate labels. Instead of being implemented in BibTeX's style files, the formatting of the bibliography is entirely controlled by TeX macros."[3]

Biber

A bibliography processing program for biblatex with a superset of BibTeX functionality, including Unicode 6.0 support, locale-sensitive sorting and UTF-8 citekeys. [3]

Bibulous

A drop-in BibTeX replacement based on style templates, including full Unicode support, written in Python. [4]

BibTeX uses a style-independent text-based file format for lists of bibliography items, such as articles, books, and theses. BibTeX bibliography file names usually end in .bib.

A BibTeX database contained in a .bib file is formed by "entries" (each corresponding to a bibliographical item, e.g. a journal paper or a conference paper) and each entry is formed by "fields" (e.g., "author", "year", "title"). The types of entries and fields used in virtually all BibTeX styles BibTeX are listed below.

edition: The edition of a book, long form (such as "First" or "Second")

editor: The name(s) of the editor(s)

eprint: A specification of an electronic publication, often a preprint or a technical report

howpublished: How it was published, if the publishing method is nonstandard

institution: The institution that was involved in the publishing, but not necessarily the publisher

journal: The journal or magazine the work was published in

key: A hidden field used for specifying or overriding the alphabetical order of entries (when the "author" and "editor" fields are missing). Note that this is very different from the key (mentioned just after this list) that is used to cite or cross-reference the entry.

month: The month of publication (or, if unpublished, the month of creation)

note: Miscellaneous extra information

number: The "(issue) number" of a journal, magazine, or tech-report, if applicable. (Most publications have a "volume", but no "number" field.)

BibTeX formats bibliographic items according to a style file, typically by generating TeX or LaTeX formatting commands. However, style files for generating HTML output also exist. BibTeX style files, for which the suffix .bst is common, are written in a simple, stack-based programming language (dubbed "BibTeX Anonymous Forth-Like Language", or "BAFLL", by Drew McDermott) that describes how bibliography items should be formatted. There are some packages which can generate .bst files automatically (like custom-bib or Bib-it).

Most journals or publishers that support LaTeX have a customized bibliographic style file for the convenience of the authors. This ensures that the bibliographic style meets the guidelines of the publisher with minimal effort.

If a document references this handbook, the bibliographic information may be formatted in different ways depending on which citation style (APA, MLA, Chicago etc.) is employed. The way LaTeX deals with this is by specifying \cite commands and the desired bibliography style in the LaTeX document. If the command \cite{abramowitz+stegun} appears inside a LaTeX document, the bibtex program will include this book in the list of references for the document and generate appropriate LaTeX formatting code. When viewing the formatted LaTeX document, the result might look like this:

Depending on the style file, BibTeX may rearrange authors' last names, change the case of titles, omit fields present in the .bib file, format text in italics, add punctuation, etc. Since the same style file is used for an entire list of references, these are all formatted consistently with minimal effort required from authors or editors.

Last name prefixes such as von, van and der are handled automatically, provided they are in lower case to distinguish them from middle names. Multiple word last names are distinguished from first and middle names by placing the last names first, then a comma, then the first and middle names. Name suffixes such as Jr., Sr., and III are generally handled by using two comma separators as in the following example:

BibTeX allows referring to other publications via the crossref field. In the following example the 'author:06' publication references to 'conference:06'.

@INPROCEEDINGS{author:06,title={Some publication title},author={First Author and Second Author},crossref={conference:06},pages={330--331},
}@PROCEEDINGS{conference:06,editor={First Editor and Second Editor},title={Proceedings of the Xth Conference on XYZ},booktitle={Proceedings of the Xth Conference on XYZ},year= 2006,month = oct,
}

The referred entry must stand below the referring one. Remember to add booktitle to the proceedings entry in order to avoid 'empty booktitle' BibTex warning. The LaTeX output of this input might look like:

Author, First and Author, Second (October 2006), Some publication title, in: Proceedings of the Xth Conference on XYZ, pp 330-331.