biber / biblatex

Ein Wort genügt: Wird in der \usepackage-Zeile style=numeric durch style=authoryear ersetzt, erscheinen sämtliche Zitate im Text und sämtliche Einträge im Literaturverzeichnis in anderer Gestalt. Dieses eine Wort ist beinahe das ganze Argument für biblatex und sein Backend biber. Klassisches BibTeX sperrte die Formatierung in ein .bst-Programm in einer Stapelsprache; biblatex gibt die Formatierung an LaTeX-Makros zurück, die lesbar und umdefinierbar sind, und überlässt die Datenseite – Einlesen, Disambiguierung, Sortierung – dem Programm biber. Diese Seite behandelt die Präambel, die das trägt (\usepackage[backend=biber, style=…]{biblatex}, \addbibresource, \printbibliography), den Ablauf latex → biber → latex → latex, die Zitierbefehle \autocite, \parencite und \textcite sowie den häufigsten Unfall: Ein Editor ruft weiterhin bibtex auf, und das Literaturverzeichnis bleibt leer.

biblatex und biber: was das Paket ist und was das Programm

biblatex ist ein LaTeX-Paket, biber ein externes Programm. biblatex bestimmt, wie Zitate und das Literaturverzeichnis aussehen. biber liest die .bib, löst Querverweise auf, ermittelt, wo Autorennamen unterschieden werden müssen, sortiert alles und schreibt eine .bbl. Bei BibTeX steckten beide Aufgaben in derselben .bst-Datei – Datenverarbeitung wie Formatierung, geschrieben in einer namenlosen postfixen Stapelsprache, wie es die BibTeX-Seite beschreibt. biblatex hat diese Schicht getrennt. Nach den Worten des eigenen Handbuchs wird die Formatierung nun „vollständig durch TeX-Makros gesteuert“, und für den Entwurf eines neuen Stils genügen solide LaTeX-Kenntnisse.

  • die .bib (oder eine andere Datenquelle) in ein internes Datenmodell einlesen
  • crossref, Eintragsmengen und verwandte Einträge auflösen
  • die Daten erzeugen, mit denen gleiche Namen und Namenslisten unterschieden werden
  • jeden Eintrag strukturell gegen das Datenmodell prüfen
  • die Literaturlisten sortieren – auf Wunsch mehrere Listen in unterschiedlicher Ordnung
  • die .bbl schreiben, die biblatex anschließend wieder einliest

Das Backend wird mit der Option backend= gewählt; zulässig sind biber, bibtex und bibtex8, voreingestellt ist biber. Die drei unterscheiden sich zuerst in der Zeichenkodierung. Das biblatex-Handbuch beschreibt bibtex als Unterstützung „nur für US-ASCII, die Sortierung ist stets ohne Beachtung der Groß- und Kleinschreibung“, bibtex8 als Unterstützung für US-ASCII und 8-Bit-Kodierungen wie Latin 1 und biber als Unterstützung für US-ASCII, 8-Bit-Kodierungen, UTF-8, Umkodierung zur Laufzeit und locale-spezifische Sortierung. Anders gesagt: Mit bibtex ist jedes nicht englische Literaturverzeichnis bereits in der Sackgasse – der praktisch wichtigste Unterschied. biber ist in Perl geschrieben, wird aber von TeX Live und MacTeX als Programmdatei mitgeliefert; eine Perl-Installation ist nicht nötig.

Die Namen lohnen sich. biblatex stammt von Philipp Lehman, der es von 2006 bis 2012 allein entwickelte. 2012 übernahm Philip Kime das Paket, ab 2017 kamen regelmäßige Beiträge von Moritz Wemheuer hinzu; in den Übergabejahren halfen Audrey Boruvka und Joseph Wright. Das Handbuch führt Lehman weiterhin als Autor und hält fest, dass „ein Großteil seines hervorragenden ursprünglichen Codes im Kern erhalten geblieben ist“. biber stammt von Philip Kime und François Charette und lässt sich, da eigens für biblatex entworfen, nicht eigenständig verwenden – mit einer .bst fängt es nichts an. Während bibtex ein Allzweckwerkzeug war, ist biber ein Bestandteil von biblatex.

Das Minimum, das läuft: \usepackage{biblatex}, \addbibresource, \printbibliography

Drei Befehle genügen. In der Präambel wird das Paket mit \usepackage[backend=biber, style=…]{biblatex} geladen, ebenfalls in der Präambel die Datenbank mit \addbibresource{refs.bib} angemeldet, und \printbibliography steht dort, wo die Liste hingehört. Zitiert wird mit \autocite, \parencite und Verwandten. Die .bib-Datei selbst – Eintragstypen wie @article, Zitierschlüssel, Felder – wird genau wie bei BibTeX geschrieben und auf der Seite zur Literaturdatenbank behandelt. Genau deshalb kostet der Umstieg weniger, als es scheint.

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

\begin{document}

\textcite{shannon1948} introduced the measure.
Later work built on it \autocite[see][45]{knuth1984}.

\printbibliography

\end{document}

Der erste Stolperstein für Umsteiger von BibTeX ist die Anmeldung der Datenbank. \addbibresource steht ausschließlich in der Präambel und ersetzt das \bibliography{refs} am Ende des Textkörpers. Außerdem muss die Endung .bib mitgeschrieben werden: \bibliography kam ohne aus, \addbibresource verlangt den vollständigen Dateinamen, sodass \addbibresource{refs} die Datei schlicht nicht findet. Mehrfaches Aufführen verteilt die Datenbank auf mehrere Dateien; mit biber als Backend sind zusätzlich Glob-Muster wie \addbibresource[glob]{bib/*.bib} sowie entfernte Quellen mit http:// möglich. \bibliographystyle hat hier keine Aufgabe mehr – der Stil wird über die Optionen von \usepackage bestimmt.

Dieses style= ist in Wahrheit eine Sammeloption, die zwei Dateien zugleich lädt: style=authoryear zieht authoryear.bbx für das Literaturverzeichnis und authoryear.cbx für die Zitate heran. Voreingestellt ist numeric. Nur wenn beide auseinanderfallen sollen – etwa eine Autor-Jahr-Liste bei numerischen Zitaten –, werden bibstyle= und citestyle= getrennt gesetzt. Im Alltag genügt das eine style=.

Warum der Ablauf latex → biber → latex → latex lautet

Weil LaTeX erst nach einem Durchlauf weiß, was zitiert wurde. Im ersten Durchlauf schreibt biblatex die Zitierschlüssel und die gesamte Konfiguration in eine XML-Steuerdatei, die .bcf. biber liest diese .bcf, gleicht sie mit der .bib ab, verarbeitet alles und schreibt eine .bbl. Der zweite Durchlauf zieht die .bbl herein, der dritte klärt Querverweise und Seitenzahlen. Die Rechnung entspricht der von BibTeX, doch aufgerufen wird biber, nicht bibtex, und übergeben wird nicht die .tex, sondern der Jobname ohne Endung. Bei pdflatex oder lualatex ändert sich nur der Name des latex-Schritts, die Struktur bleibt gleich.

terminal
$ pdflatex document.tex   # 1st pass: writes document.bcf with the cited keys
$ biber    document       # NOT bibtex, and no .tex extension: reads .bcf, writes .bbl
$ pdflatex document.tex   # 2nd pass: pulls the .bbl in
$ pdflatex document.tex   # 3rd pass: settles cross-references and page numbers

Fast jeder Fehlschlag hat hier dieselbe Ursache: Editor oder latexmk rufen weiterhin bibtex auf. biblatex schreibt weder \citation noch \bibdata noch \bibstyle in die .aux, weshalb bibtex document gleich drei Zeilen ausgibt: I found no \citation commands---while reading file document.aux, I found no \bibdata command---while reading file document.aux, I found no \bibstyle command---while reading file document.aux. Eine .bbl entsteht nicht, und LaTeX meldet LaTeX Warning: Empty bibliography sowie LaTeX Warning: Citation 'knuth1984' on page 1 undefined, gefolgt von Package biblatex Warning: Please (re)run Biber on the file:. Diese letzte Zeile ist bereits die vollständige Antwort: Dort, wo bisher bibtex lief, gehört biber hin.

terminal
$ latexmk -pdf document.tex   # detects biblatex in the .fls/.bcf and runs biber itself

Vier Befehle von Hand sind kein Arbeitsablauf, deshalb übernimmt das in der Praxis latexmk. Neuere Fassungen erkennen biblatex, rufen biber selbsttätig auf und wiederholen die Durchläufe so oft wie nötig. Aus einem Editor heraus ist eine latexmk-Engine der sicherste Weg: die LaTeXmk-Engines in TeXShop oder ein latexmk-Rezept in LaTeX Workshop für VS Code. Overleaf erkennt biblatex und startet biber von selbst. Nur selbst geschriebene Build-Skripte brauchen einen Blick – dort wird die Zeile bibtex zu biber.

is wrong format version: biber und biblatex bilden ein festes Paar

biber und biblatex arbeiten nur in zueinander passenden Versionen. Das biber-Handbuch enthält eine Kompatibilitätstabelle für beide; ab biber 2.7 / biblatex 3.7 laufen die Nebenversionsnummern im Gleichschritt – TeX Live 2024 liefert biber 2.19 zu biblatex 3.19. Bemerkbar wird das, wenn eine Paketverwaltung allein biblatex aktualisiert oder wenn ein getrennt installiertes biber (etwa aus Homebrew) im PATH weiter vorne steht. Das Symptom ist die Warnung Package biblatex Warning: File 'document.bbl' is wrong format version - expected … neben einem Literaturverzeichnis, das sich nicht ändern will. Die Abhilfe ist unspektakulär: biber und biblatex gemeinsam aus derselben Distribution aktualisieren, document.bbl löschen, neu übersetzen. Ein Vergleich von biber --version mit der biblatex-Version am Kopf der Protokolldatei zeigt sofort, ob beide auseinandergelaufen sind.

style=numeric oder style=authoryear: den Zitierstil mit einem Wort wechseln

Ein anderer Name in style= verändert Zitate und Literaturverzeichnis gemeinsam. biblatex bringt fünf Allzweckfamilien mit – numeric, alphabetic, authoryear, authortitle und verbose – jeweils mit Varianten. Bemerkenswert ist, dass ein Stil beim Laden auch seinen eigenen Vorgabewert für autocite= festlegt: numeric, alphabetic und authoryear setzen autocite=inline, authortitle und verbose dagegen autocite=footnote. Die fachliche Annahme – Zitate im Fließtext oder Quellen in Fußnoten – steckt also bereits im Stil.

style=Aussehen eines ZitatsZugrunde liegende Annahme
numeric[1]Voreinstellung; entspricht LaTeX’ eigener Nummerierung und setzt autocite=inline
numeric-comp[1--3, 7, 8]Fasst aufeinanderfolgende Nummern zusammen: aus [8, 3, 1, 7, 2] wird [1--3, 7, 8]
alphabetic[Jon95] / [JW86]Gegenstück zu BibTeX’ alpha.bst; ein kurzes Kürzel aus Autor und Jahr
authoryearDoe 1995aHängt a, b… an, wenn derselbe Autor im selben Jahr mehrfach publiziert hat
authoryear-compDoe 1992, 1995a,bNennt den Autor nur einmal, wenn mehrere Schlüssel eines Befehls ihn teilen
authortitleDoe, Short titleStellt das Jahr nicht voran und nutzt shorttitle, falls vorhanden; autocite=footnote
verboseErst vollständig, danach KurzformNennt beim ersten Zitat alle Daten und kommt daher ohne Verzeichnis aus

Schreibt ein Publikationsort ein Format vor, führt ein fertiges Stilpaket am schnellsten zum Ziel. TeX Live enthält biblatex-ieee für die Ingenieurwissenschaften, biblatex-apa für Psychologie und Nachbarfächer, biblatex-chicago und biblatex-mla für die Geisteswissenschaften, biblatex-nature und biblatex-science für die Naturwissenschaften, oscola für das englische Recht sowie eine Reihe nationaler Normen: biblatex-gb7714-2015 für die chinesische GB/T 7714-2015, biblatex-gost für die russische GOST, biblatex-abnt für die brasilianische ABNT. Für den deutschsprachigen geisteswissenschaftlichen Apparat gibt es zusätzlich biblatex-dw von Dominik Waßenhoven, daneben biblatex-german-legal und biblatex-fiwi. Wo eine Zeitschrift weiterhin nur eine .bst ausgibt, bleibt BibTeX die ehrliche Antwort; wo diese Grenze verläuft, zeigt die BibTeX-Seite.

\autocite, \parencite oder \textcite: welchen Zitierbefehl wählen

\textcite, wenn der Autorname als Satzteil gelesen wird; \parencite, wenn das Zitat als Anmerkung außerhalb des Satzes steht; \autocite, wenn der Stil entscheiden soll. Die grammatische Begründung dieser Dreiteilung – „Knuth (1986) zeigte“ und „… wie gezeigt wurde (Knuth, 1986)“ sind verschiedene grammatische Objekte – steht auf der Seite zu den Grundlagen des Zitierens; hier geht es um die Mechanik. Jeder Zitierbefehl hat die Form \parencite[Vorbemerkung][Nachbemerkung]{Schlüssel} und nimmt mehrere durch Kommas getrennte Schlüssel. Eine Klammer ergibt die Nachbemerkung – \parencite[45]{knuth1984} –, zwei Klammern beides – \parencite[see][45]{knuth1984}.

BefehlWas erscheintWann sinnvoll
\citeDas bloße Label ohne ZusätzeWenn weder Klammern noch Fußnote erwünscht sind
\parenciteDas ganze Zitat in runden Klammern (eckig bei numerischen und alphabetischen Stilen)Die häufigste Form: eine Anmerkung am Ende eines Satzteils
\textciteAutorname plus eingeklammertes Jahr oder Label: Doe (1995)Wenn der Autorname Satzglied ist, etwa Subjekt
\footciteSetzt das ganze Zitat in eine Fußnote und schließt mit einem PunktFächer, die Quellen in Fußnoten nennen
\autociteWird je nach autocite= zu einer der obigen FormenWenn die Zitatform des ganzen Dokuments auf einmal umschaltbar sein soll
\citeauthorNur den AutornamenWenn im Text nur die Person genannt wird, ohne Jahr oder Nummer
\citeyearNur das ErscheinungsjahrAls Ergänzung, wenn der Autorname eben im Text stand

\autocite steht eine Ebene über den übrigen Befehlen: Was daraus wird, entscheidet die Option autocite= bei \usepackage. Zulässig sind plain (verhält sich wie \cite), inline (\parencite), footnote (\footcite) und superscript. Zudem schaut \autocite der Interpunktion nicht nur voraus, es verschiebt sie: Bei autocite=footnote wandert ein nachfolgendes Satzzeichen so, dass die Fußnotenziffer hinter der Interpunktion steht. Diese kleine Aufmerksamkeit erlaubt es, ein ganzes Dokument von Zitaten im Text auf Zitate in Fußnoten umzustellen, ohne jeden Satz neu zu interpungieren.

Sollen mehrere Werke auf einmal zitiert werden, jedes mit eigener Nachbemerkung, gibt es die multicite-Formen mit angehängtem s. \parencites[35]{key1}[88--120]{key2}{key3} behält ein einziges Klammerpaar und gibt jedem Werk dennoch seine Seitenangabe; \autocites und \footcites folgen demselben Muster. Und wer natbib aus BibTeX-Zeiten in den Fingern hat, schreibt \usepackage[natbib=true]{biblatex} und erhält \citep, \citet und Verwandte als Aliase. Als Brücke beim Umstieg ist das nützlich; neue Dokumente verhalten sich bei einem Stilwechsel jedoch berechenbarer, wenn sie bei den eigenen Befehlen von biblatex bleiben.

sorting= und sortlocale=: nicht englische Literaturverzeichnisse richtig ordnen

Die Reihenfolge legt sorting= fest. Voreingestellt ist nty – die Anfangsbuchstaben von name, title, year. Daneben stehen nyt (Name, Jahr, Titel), ynt (Jahr, Name, Titel), ydnt (Jahr absteigend) und none, das die Einträge in Zitierreihenfolge belässt. Alles davon lässt sich umschalten, ohne die .bib anzurühren. Bei BibTeX steckten diese Entscheidungen in der .bst und waren nur über die Wahl zwischen plain, unsrt und alpha erreichbar.

Hinzu kommt: Was bei denselben Zeichenketten „die richtige Reihenfolge“ ist, hängt von der Sprache ab. biber überlässt das dem Perl-Modul Unicode::Collate, das den Unicode Collation Algorithm (UCA) vollständig umsetzt, und legt darüber die Locale-Anpassungen des CLDR. Der Effekt ist leicht zu sehen. Im Deutschen liefert sortlocale=de_DE Mohr → Möller → Muster; mit der Telefonbuchordnung sortlocale=de_DE_phonebook gilt ö als oe, und die Liste lautet Möller → Mohr → Muster. Im Spanischen ist es noch auffälliger: In traditioneller Orthographie behandelt sortlocale=es_ES_trad ch als eigenen Buchstaben, sodass Chávez hinter Cortázar einsortiert wird (mit dem modernen es_ES ergibt sich Cela → Chávez → Cortázar). Das biber-Handbuch weist eigens darauf hin, dass babels spanish auf das moderne es_ES abgebildet wird; wer die traditionelle Ordnung braucht, muss es_ES_trad selbst angeben.

preamble
\usepackage[
  backend=biber,
  style=authoryear,
  sorting=nyt,                % name, year, title
  sortlocale=de_DE_phonebook, % locale tailoring: umlauts sort as oe/ue/ae
  maxbibnames=99,             % list every author in the bibliography
  maxcitenames=2,             % but shorten to "et al." inside citations
  backref=true                % back-links from each entry to its citations
]{biblatex}

Ein Sortieralgorithmus kann nur mit den Zeichen arbeiten, die man ihm gibt – und diese Grenze wird im Japanischen, Chinesischen und Koreanischen spürbar. sortlocale=ja_JP greift zwar auf die japanische Anpassung zu, doch Kanji tragen keine Lesung; wer Gojūon- oder Pinyin-Ordnung erwartet, wird enttäuscht. Soll die Reihenfolge der Lesung folgen, muss die Lesung in den Daten stehen: die Namenslesung in sortname, ein beliebiger Sortierschlüssel in sortkey. Das biblatex-Handbuch nennt sortkey den Hauptsortierschlüssel – ist er gesetzt, richtet sich die Sortierung allein nach ihm, abgesehen von presort. Für den einen Eintrag, der sich partout nicht einfügen will, ist das die stets wirksame letzte Möglichkeit.

Dieselbe \usepackage-Zeile regelt auch, wie Autorenlisten gekürzt werden. maxnames steht voreingestellt auf 3, minnames auf 1; maxbibnames und maxcitenames übernehmen ohne eigene Angabe schlicht den Wert von maxnames. maxnames ist also der Elternwert, die beiden anderen sind seine Kinder. Die Kombination, zu der in der Praxis gegriffen wird, steht im Codebeispiel oben: im Literaturverzeichnis alle Namen (maxbibnames=99), in den Zitaten dagegen zwei Namen und „et al.“ (maxcitenames=2) – mit maxnames allein nicht ausdrückbar. Mit backref=true endet jeder Eintrag mit den Seiten, auf denen er zitiert wurde; beim Korrekturlesen langer Arbeiten zahlt sich das aus.

Das Literaturverzeichnis aufteilen: \printbibliography[type=…] und keyword=

\printbibliography darf beliebig oft auftreten, jedes Mal mit einem anderen Filter. Die Schlüssel sind type= (nur dieser Eintragstyp), nottype= (alle außer diesem), keyword= und notkeyword= (Filterung über das Feld keywords in der .bib), category= und notcategory= (mit \DeclareBibliographyCategory deklarierte Klassen) sowie heading= und title= für die Überschriften. Primär- von Sekundärliteratur zu trennen oder Bücher von Aufsätzen kostet damit keinerlei Eingriff in die Daten. Für Verwickelteres definiert \defbibfilter einen eigenen Filter – auch für eine nach Sprachen geteilte Liste, denn das Feld langid schaltet nur Lokalisierung und Trennmuster um und teilt von sich aus nichts.

document.tex
\printbibliography[type=article,   title={Journal articles}]
\printbibliography[type=book,      title={Books}]
\printbibliography[keyword=primary, title={Primary sources}]
\printbibliography[nottype=misc,   heading=bibintoc, title={Everything else}]

Die Entscheidung fällt in zwei Schritten. Gibt der Publikationsort eine .bst vor, bleibt man bei BibTeX; steht das Format zur eigenen Wahl, wechselt man zu biblatex und biber. Nach dem Wechsel sind nur drei Dinge zu tun: \usepackage[backend=biber, style=…]{biblatex} und \addbibresource{refs.bib} in die Präambel schreiben, \printbibliography setzen und beim Übersetzen biber statt bibtex aufrufen – oder das latexmk überlassen. Die .bib-Datei ist beiden gemeinsam, das Gesammelte geht also nicht verloren. Verändert hat sich nach vierzig Jahren dies: Eine Formatänderung bedeutet nicht mehr, eine .bst umzuschreiben, sondern ein Wort in \usepackage auszutauschen.