\bibliography{references}
LaTeX Bibliography
A complete guide to managing references in LaTeX — from a simple BibTeX .bib file to the modern BibLaTeX + Biber workflow. Includes entry types, cite commands, bibliography styles, and the correct compilation order.
Which should you use?
Use BibLaTeX + Biber for new projects. It supports more entry types, flexible citation styles, per-chapter bibliographies, and active maintenance. BibTeX is legacy but still widely supported — required for arXiv submissions and older journal templates.
\section{Quick start}
Quick Start with BibTeX
Two files: a .bib database and your .tex document.
Step 1 — Create references.bib
% references.bib
@article{einstein1905,
author = {Einstein, Albert},
title = {On the Electrodynamics of Moving Bodies},
journal = {Annalen der Physik},
year = {1905},
volume = {17},
pages = {891--921}
}
@book{knuth1984,
author = {Knuth, Donald E.},
title = {The \TeX{}book},
publisher = {Addison-Wesley},
year = {1984}
}Step 2 — Reference in your document
\documentclass{article}
\usepackage{natbib}
\begin{document}
Einstein's theory of special relativity \citep{einstein1905} revolutionized physics.
The \TeX{}book by \citet{knuth1984} is the definitive reference.
\bibliographystyle{plain}
\bibliography{references}
\end{document}\section{Entry types}
BibTeX Entry Types
Common entry types and their required fields.
| Type | Description |
|---|---|
| @article | Journal article |
| @book | Published book |
| @inproceedings | Conference paper |
| @thesis | Thesis or dissertation |
| @online | Web resource (BibLaTeX) |
| @misc | Miscellaneous source |
\section{Cite commands}
Cite Commands
natbib commands for BibTeX; biblatex commands for the modern workflow.
| Package | Command |
|---|---|
| natbib | \cite{key} |
| natbib | \citep{key} |
| natbib | \citet{key} |
| natbib | \citealp{key} |
| biblatex | \autocite{key} |
| biblatex | \textcite{key} |
| biblatex | \parencite{key} |
\section{Modern approach}
The Modern Approach: BibLaTeX
BibLaTeX with the Biber backend replaces BibTeX's legacy toolchain. It supports UTF-8 natively, more entry types, and flexible citation style configuration through package options.
\documentclass{article}
\usepackage[
backend=biber,
style=authoryear,
sorting=nyt
]{biblatex}
\addbibresource{references.bib}
\begin{document}
This result was shown by \textcite{einstein1905}.
For LaTeX fundamentals, see \autocite{knuth1984}.
\printbibliography
\end{document}style=authoryear
Author-year citations (Smith, 2024). Default for humanities.
style=numeric
Numbered citations [1], [2]. Common in sciences and engineering.
style=alphabetic
Alphanumeric labels [Ein05]. Middle ground between named and numbered.
\section{Bibliography styles}
Bibliography Styles
| Style | Package | Description |
|---|---|---|
| plain | BibTeX | Numbered, alphabetical order |
| alpha | BibTeX | Label-based (e.g. [Ein05]) |
| abbrv | BibTeX | Abbreviated author names |
| IEEEtran | BibTeX | IEEE journal style |
| authoryear | BibLaTeX | Author-year citations (Chicago-like) |
| numeric | BibLaTeX | Numbered citations |
| alphabetic | BibLaTeX | Alphanumeric labels |
\section{Compilation order}
Compilation Order
LaTeX + BibTeX requires multiple passes to resolve citations and build the bibliography.
pdflatexwrites .aux
bibtexreads .aux → .bbl
pdflatexreads .bbl
pdflatexresolves refs
Or automate with latexmk -pdf — see the latexmk guide for details.
\section{Common mistakes}
Common Mistakes
Missing \bibliography command
BibTeX only generates the bibliography where \bibliography{filename} appears. Without it, no reference list is printed, even if \cite commands are present.
Fix: Add \bibliographystyle{plain} and \bibliography{references} before \end{document}.
Wrong .bib filename
\bibliography{references} expects a file named references.bib in the same directory. A mismatch produces a "I found no \bibstyle command" or similar error.
Fix: Ensure the filename in \bibliography{} exactly matches your .bib file, without the .bib extension.
Not running BibTeX
LaTeX alone does not process .bib files. Skipping the bibtex run leaves citations as [?] and omits the bibliography — a very common beginner mistake.
Fix: Run: pdflatex → bibtex → pdflatex → pdflatex. Or use latexmk -pdf to automate this.
\begin{document}
Compile your bibliography online
FormaTeX runs pdfLaTeX with BibTeX automatically. Paste your .tex source and get a PDF — no local install required.

