biblatex + biber — Modern Bibliography Management
CTAN: https://ctan.org/pkg/biblatex
Manual: texdoc biblatex
Setup
\usepackage[
backend=biber, % modern backend (not bibtex)
style=authoryear, % citation + bibliography style
sorting=nyt, % name-year-title
maxbibnames=99, % show all authors in bibliography
maxcitenames=2, % truncate in citations
]{biblatex}
\addbibresource{references.bib} % .bib file (include extension!)
% At end of document:
\printbibliography
Compilation Workflow
pdflatex main.tex # 1. Generate .bcf file
biber main # 2. Process bibliography (no extension!)
pdflatex main.tex # 3. Resolve references
pdflatex main.tex # 4. Final pass (page numbers, back-refs)
Or with latexmk: latexmk -pdf main.tex (handles everything automatically).
.bib File Format
@article{einstein1905,
author = {Einstein, Albert},
title = {On the Electrodynamics of Moving Bodies},
journal = {Annalen der Physik},
year = {1905},
volume = {322},
number = {10},
pages = {891--921},
doi = {10.1002/andp.19053221004},
}
@book{knuth1984,
author = {Knuth, Donald E.},
title = {The {\TeX}book},
publisher = {Addison-Wesley},
year = {1984},
isbn = {0-201-13447-0},
}
@inproceedings{smith2023,
author = {Smith, John and Doe, Jane},
title = {Deep Learning for Everything},
booktitle = {Proceedings of ICML},
year = {2023},
pages = {100--110},
doi = {10.1234/icml.2023.100},
}
@online{wiki2024,
author = {{Wikipedia contributors}},
title = {LaTeX},
url = {https://en.wikipedia.org/wiki/LaTeX},
urldate = {2024-01-15},
year = {2024},
}
@thesis{jones2020,
author = {Jones, Alice},
title = {Quantum Computing Applications},
type = {phdthesis},
institution = {MIT},
year = {2020},
}
@manual{pgfmanual,
author = {Tantau, Till},
title = {The TikZ and PGF Packages},
year = {2023},
url = {https://ctan.org/pkg/pgf},
}
Common Entry Types
| Type | Use for |
|---|
@article | Journal articles |
@book | Books |
@inproceedings | Conference papers |
@incollection | Chapter in edited book |
@thesis | PhD/Master's thesis (use type field) |
@online | Websites, web resources |
@manual | Technical documentation |
@techreport | Technical reports |
@misc | Anything else |
@unpublished | Unpublished manuscripts |
@patent | Patents |
@software | Software packages |
Common Fields
| Field | Description |
|---|
author | Author(s) — {Last, First and Last, First} |
title | Title — protect caps with {NASA} |
year/date | Publication year or full date (2023-06-15) |
journal | Journal name |
booktitle | Conference/collection title |
publisher | Publisher |
volume/number | Volume and issue |
pages | Page range (10--20) |
doi | Digital Object Identifier |
url | Web URL |
urldate | Access date for online sources |
isbn/issn | Identifiers |
editor | Editor(s) |
edition | Edition ({2nd}) |
note | Additional notes |
abstract | Abstract (not printed by default) |
keywords | Keywords for filtering |
langid | Language (english, german) — for hyphenation |
Author Name Formats
author = {Last, First}, % single
author = {Last, First and Last, First}, % multiple
author = {Last, Jr., First}, % suffix
author = {{World Health Organization}}, % corporate (double braces)
author = {da Silva, João}, % name particles
Citation Commands
| Command | Output (authoryear) | Output (numeric) |
|---|
\cite{key} | Einstein 1905 | [1] |
\parencite{key} | (Einstein 1905) | [1] |
\textcite{key} | Einstein (1905) | Einstein [1] |
\autocite{key} | Style-dependent | Style-dependent |
\fullcite{key} | Full bibliography entry inline | — |
\footcite{key} | Footnote citation | — |
\citeauthor{key} | Einstein | Einstein |
\citeyear{key} | 1905 | 1905 |
\citetitle{key} | On the Electro... | — |
With Options
\parencite[see][p.~42]{einstein1905}
% Output: (see Einstein 1905, p. 42)
\parencite[p.~42]{einstein1905}
% Output: (Einstein 1905, p. 42)
% Multiple citations
\parencite{einstein1905, knuth1984}
% Output: (Einstein 1905; Knuth 1984)
Bibliography Styles
| Style | Citation | Bibliography | Use for |
|---|
authoryear | Einstein (1905) | Alphabetical by author | Humanities, social sciences |
numeric | [1] | Numbered by citation order | Sciences, engineering |
alphabetic | [Ein05] | Alphabetical labels | Math, CS |
authortitle | Einstein, "On the..." | Author-title | Humanities |
verbose | Full cite in footnotes | Detailed | Law, history |
ieee | [1] | IEEE format | Engineering (needs biblatex-ieee) |
apa | (Einstein, 1905) | APA 7th ed | Psychology (needs biblatex-apa) |
chicago-authordate | (Einstein 1905) | Chicago | Humanities (needs biblatex-chicago) |
nature | ¹ | Nature format | Natural sciences (biblatex-nature) |
% For IEEE:
\usepackage[style=ieee, backend=biber]{biblatex}
% For APA:
\usepackage[style=apa, backend=biber]{biblatex}
% Also needs: \DeclareLanguageMapping{english}{english-apa}
Sorting Options
| Value | Sorting order |
|---|
nty | Name, title, year (default for authoryear) |
nyt | Name, year, title |
none | Citation order (for numeric) |
ynt | Year, name, title |
anyt | Alphabetic label, name, year, title |
Printing the Bibliography
% Simple
\printbibliography
% With title
\printbibliography[title={References}]
% As section (not chapter)
\printbibliography[heading=subbibliography]
% Filtered
\printbibliography[type=article, title={Journal Articles}]
\printbibliography[keyword=primary, title={Primary Sources}]
\printbibliography[notkeyword=primary, title={Secondary Sources}]
Multiple Bibliographies
% By type
\printbibliography[type=book, heading=subbibliography, title={Books}]
\printbibliography[type=article, heading=subbibliography, title={Articles}]
% By keyword
% In .bib: keywords = {primary}
\printbibliography[keyword=primary, title={Primary Sources}]
\printbibliography[notkeyword=primary, title={Other Sources}]
% Per chapter (refsection)
\begin{refsection}
\chapter{First Chapter}
Text \cite{something}.
\printbibliography[heading=subbibliography]
\end{refsection}
Useful Options
\usepackage[
backend=biber,
style=authoryear,
sorting=nyt,
maxbibnames=99, % all authors in bibliography
maxcitenames=2, % "Smith et al." after 2 authors
mincitenames=1, % show at least 1 before "et al."
uniquelist=false, % don't disambiguate with more names
uniquename=false, % don't disambiguate with initials
dashed=false, % repeat author name (vs dash for same author)
doi=true, % print DOIs
isbn=false, % hide ISBNs
url=false, % hide URLs (except @online)
eprint=false, % hide eprint info
date=year, % show only year
]{biblatex}
Comparison: biblatex vs natbib/BibTeX
| Feature | biblatex + biber | natbib + BibTeX |
|---|
| Unicode | ✅ Full support | ❌ Limited |
| Styles | Flexible (LaTeX macros) | .bst files (hard to edit) |
| Entry types | More (@online, @software) | Fewer |
| Filtering | keyword, type filters | Manual |
| Multiple bibliographies | Built-in | Needs multibib/etc |
| Fine-grained citations | \textcite, \parencite, etc | \citet, \citep |
| Date handling | Full dates, ranges | Year only |
| Name handling | Sophisticated | Basic |
| Compilation | pdflatex → biber → pdflatex² | pdflatex → bibtex → pdflatex² |
| Journal requirement | Some require BibTeX | ✅ Traditional |
Recommendation: Use biblatex for new documents. Use natbib only if a journal template requires it.
Common Pitfalls
| Problem | Cause | Fix |
|---|
| "I found no \citation commands" | biber not run | Run biber after first pdflatex |
| "I found no \bibstyle command" | Mixing bibtex with biblatex | Use biber, not bibtex |
| Citation shows [key] | biber hasn't run / error | Check biber log, re-run |
.bib file not found | Missing extension in \addbibresource | Include .bib extension |
| Unicode in .bib fails | Using BibTeX backend | Use backend=biber |
| Author "et al." wrong | maxcitenames too low | Adjust maxcitenames |
| Style not found | Missing package | Install biblatex-ieee, biblatex-apa, etc. |
| Refsection empty | Citations outside refsection | Each refsection is independent |
| Name sorting wrong | Particles (van, de) | Use \DeclareNameAlias or check useprefix |
| "Runaway argument" | Missing comma in .bib | Check .bib syntax (commas between fields) |