biber / biblatex

biblatex is the modern package that assembles your bibliography on the LaTeX side. Where classic BibTeX fixed the look in .bst, an idiosyncratic little language, biblatex writes styles as LaTeX macros, handles Unicode natively, and gives fine control over sorting and multiple reference lists. Its companion — the program that reads and sorts the data — is biber. In the document you load a .bib with \addbibresource, cite with \parencite or \textcite, and print the list with \printbibliography.

What biblatex and biber are

These are easy to confuse, so separate the roles first. biblatex is a LaTeX package responsible for how citations look and how the reference list is formatted. biber is an external program (a backend) dedicated to biblatex: it reads the .bib file, sorts and processes the entries, and hands them to biblatex in a form it can typeset. Think of the job that BibTeX’s .bst used to do as now split in two — formatting goes to biblatex (the LaTeX side) and reading and sorting goes to biber.

The biblatex manual states plainly that biber is “the default backend of biblatex.” biber handles us-ascii, 8-bit encodings, and UTF-8, and it supports locale-aware sorting (sortlocale). You can choose the backend with the backend= option — the legacy bibtex/bibtex8 are still selectable — but to get Unicode and flexible sorting, **biber is the de facto standard**.

Minimal setup (load and print)

Usage has three parts. In the preamble you pick a style and backend with **\usepackage[...]{biblatex}, then register the database with \addbibresource{refs.bib}**. In the body you cite with the \cite family, and you place **\printbibliography** where the reference list should appear.

document.tex
\documentclass{article}
\usepackage[style=authoryear, backend=biber]{biblatex}
\addbibresource{refs.bib}   % preamble; the .bib extension IS included

\begin{document}

The theory was introduced by \textcite{shannon1948}.
Later work built on it~\parencite{knuth1984}.

\printbibliography

\end{document}

The two biggest visible differences from BibTeX: first, you register the database in the **preamble with \addbibresource{refs.bib}**, not with \bibliography{refs} at the end of the body; second, **you do include the .bib extension here** (BibTeX’s \bibliography took none). You may write \addbibresource several times to keep databases in separate files.

You select a style with a single style=. It is a master option that **loads both the bibliography style (.bbx) and the citation style (.cbx) at once**. Only when you want them to differ do you set bibstyle= (the list’s look) and citestyle= (the citations’ look) separately. The .bib file itself — @article and friends, with citation keys — is written exactly as for BibTeX and is covered in detail on its own page.

Citation commands

A core strength of biblatex is its rich set of citation commands chosen by meaning. Besides the bare \cite, you pick from the following by context. Every command takes a prenote (“see”…) and postnote (a page number…) as in \parencite[prenote][postnote]{key}, and you may pass several comma-separated keys.

CommandWhat it printsWhen to use it
\citeThe bare label, no additions (square brackets in numeric/alphabetic)The minimal form, woven into text
\parenciteThe whole citation in parentheses (brackets in numeric/alphabetic)Parenthetical citations, e.g. at a clause end
\textciteAuthor names plus a bracketed label, “Author (year)”When the cite is a grammatical part of the sentence
\footcitePuts the whole citation in a footnote, ending with a periodStyles that give sources in footnotes
\autociteThe style-driven form (and it moves punctuation)To let the style decide, switchable globally
\citeauthor / \citeyearAuthor only / year onlyReferring to just the author or year in prose

Use **\textcite when the citation is part of the sentence — “as Knuth (1984) showed…” — putting the author in subject position. Use \parencite for the opposite: a quiet parenthetical at a clause end. \autocite** sits one level up: whether it behaves like \parencite or \footcite (or \supercite in numeric styles) is switched by the **autocite= option**. autocite=plain makes it act like \cite, inline like \parencite, footnote like \footcite, and superscript gives a superscript form (in practice each style sets a sensible default).

To cite several works at once, each with its own pre/postnote, use the multicite forms such as \parencites and \autocites: \parencites[35]{key1}[88--120]{key2}{key3} attaches a separate postnote to each entry.

The style system

biblatex ships with general-purpose styles; passing a name to style= changes the whole look. The main ones are below. Each switches both how citations look (.cbx) and how the list looks (.bbx) together.

StyleCitation lookTrait
numericA number like [1]The default; like LaTeX’s standard numbers. numeric-comp ranges as [1–3]
alphabeticAlphanumeric labels like [Jon95]Like BibTeX’s alpha; a short tag from author+year
authoryearAuthor–year like “Doe 1995a”Adds a, b… for same author/year; -comp groups the author
authortitleAuthor plus short titleCommon in the humanities; year not foregrounded
verboseFull citation on first use, short form afterFor detailed sources given in footnotes

Beyond these, field-specific styles abound: **ieee for engineering, apa for psychology and others (the biblatex-apa package), nature and science for the natural sciences, chicago** (biblatex-chicago), oscola for law, mla for the humanities, and more — letting you match a venue’s format without writing .bst. Several are installable from CTAN.

You can tune the look further with load-time options. **sorting=** picks the order (nty = name, title, year is the default; nyt = name, year, title; ynt = year, name, title; none = leave in citation order), **maxbibnames / maxcitenames set how many authors print before “et al.”, and backref=true** adds back-references from each entry to where it was cited. maxnames is the master option that sets these together.

The build (using biber)

This is where BibTeX users first stumble. To produce a biblatex bibliography correctly, the classic order is latex → biber → latex → latex. The reason for several passes is the same as BibTeX — the engine and biber exchange data through auxiliary files — but the decisive difference is that **you call biber, not bibtex**. It is the same with pdflatex: just replace latex with pdflatex.

terminal
$ pdflatex document.tex   # 1st pass: records cited keys
$ biber    document        # NOT bibtex: reads .bcf + .bib, sorts/processes
$ pdflatex document.tex    # pulls in the processed data
$ pdflatex document.tex    # resolves all references

You hand biber the job name (no extension), not the .tex. biber reads the control file .bcf (XML) that biblatex writes. A common failure is leaving your editor or latexmk **configured to call bibtex**, which yields undefined-citation warnings or a blank bibliography. Once you choose backend=biber, point the tooling at biber too. Because four manual passes are tedious, the usual practice is to delegate to **latexmk**.

terminal
$ latexmk -pdf document.tex   # detects biblatex and runs biber automatically

Recent latexmk detects biblatex and calls biber automatically, usually finishing the needed passes in one invocation (on older setups you put a biber configuration in .latexmkrc alongside $pdf_mode). For Japanese you typeset with upLaTeX etc. and go through DVI to PDF with dvipdfmx; because biber is Unicode-aware, giving **sortlocale=ja_JP** sorts Japanese correctly (and a common workflow uses the langid field to split Japanese and Western reference lists).

Why biblatex over BibTeX

biblatex/biber is favored for new projects because it tackles BibTeX’s structural limits head-on. Concretely:

  • Full Unicode. biber handles UTF-8 directly, so multilingual author names and accents are no trouble.
  • Styles written in LaTeX. Formatting is controlled by LaTeX macros and load options — no stack-oriented .bst to write.
  • Flexible sorting and localization. sorting= and sortlocale give precise control over order and language.
  • Multiple bibliographies. \printbibliography[type=...] or [keyword=...] splits the list by type or topic.
  • Rich citation commands. \textcite, \parencite, \autocite and others let you cite by meaning, consistently.

That last point — multiple lists — pays off in practice: separating primary from secondary sources, or grouping by document type, all without touching the data. \printbibliography filters include type= (only a given entry type), nottype= (exclude that type), keyword= / notkeyword= (filter by the keywords field in the .bib), and heading= / title= (set the heading).

document.tex
\printbibliography[type=article, title={Journal articles}]
\printbibliography[type=book,    title={Books}]
\printbibliography[keyword=primary, title={Primary sources}]

If you are used to natbib from the BibTeX era, \usepackage[natbib=true]{biblatex} provides natbib-style aliases like \citep and \citet, which eases migration.