natbib

Der Autor von natbib mochte den Namen selbst nicht besonders. In natbib.dtx, der dokumentierten Quelle des Pakets, erklärt Patrick W. Daly, dass er von Stephen Gildeas natsci.bst stammt – natsci für natural sciences, Naturwissenschaften – und fügt in Klammern hinzu, es sei zugegebenermaßen ein hässlicher Name, der sich nun aber nicht mehr so leicht ändern lasse. Hässlich oder nicht: \usepackage{natbib} ist noch immer der Weg, mit dem ein LaTeX-Dokument Autor–Jahr-Zitate wie (Jones et al., 1990) aus klassischem BibTeX gewinnt. Diese Seite geht über die Grammatik von \citet und \citep hinaus, die zur Seite über das Zitieren gehört, und wendet sich den Stellen zu, an denen man tatsächlich hängen bleibt: mit welchen .bst-Dateien natbib arbeiten kann und mit welchen nicht, was (author?) bedeutet und welche von round, square, \bibpunct und \setcitestyle wirklich über die Klammern entscheidet.

\usepackage{natbib} und die drei mitgelieferten Stile: plainnat, abbrvnat, unsrtnat

Zwei Zeilen in der Präambel genügen: \usepackage{natbib} und \bibliographystyle{plainnat}. Die zweite wiegt schwerer, als sie aussieht – ein Fehler an dieser Stelle zerlegt die Zitate. natbib liefert drei .bst-Dateien mit – plainnat, abbrvnat und unsrtnat –, die das Literaturverzeichnis genauso setzen wie die Standardstile plain, abbrv und unsrt, aber in jedes \bibitem eine Zusatzangabe schreiben: Autor und Jahr, getrennt ausgezeichnet. Genau diese Zusatzangabe ist der ganze Kniff. Ein Standardstil schreibt nur \bibitem{jon90}, sodass LaTeX allein eine undurchsichtige Nummer setzen kann; die nat-Stile schreiben \bibitem[Jones et al.(1990)Jones, Baker, and Williams]{jon90}, und aus dieser einen Zeile baut natbib bei Bedarf eine gekürzte Autorenliste, eine vollständige, ein Jahr oder eine Nummer zusammen.

Die Aufrufreihenfolge bleibt die von reinem BibTeX: latex (oder pdflatex), dann bibtex, dann zweimal latex – der erste Durchlauf schreibt die Schlüssel in die .aux-Datei, bibtex erzeugt die .bbl, und die letzten beiden lesen die Labels zurück. Für japanische Literatur tritt pbibtex oder upbibtex an die Stelle von bibtex. natbib fügt genau eines hinzu: dieselbe .bib und dasselbe plainnat liefern auf Wunsch auch numerische Zitate. Autor–Jahr-Pakete gab es schon lange, bevor natbib 1993 erschien – harvard, apalike, chicago, astron –, doch jedes band ein Manuskript an ein einziges Zitierschema; der Wechsel zu einer numerisch zitierenden Zeitschrift bedeutete, den Fließtext zu ändern. natbib lernte, deren sämtliche \bibitem-Labels zu lesen, und machte aus dem Schema eine Paketoption.

document.tex
\documentclass{article}
\usepackage{natbib}
\bibliographystyle{plainnat}   % not plain: only plainnat carries author and year
\begin{document}

The line-breaking algorithm is described by \citet{knuth1986}.
The same idea is used elsewhere \citep[chap.~2]{lamport1994}.

\bibliography{refs}
\end{document}

% pdflatex doc -> bibtex doc -> pdflatex doc -> pdflatex doc
% (pbibtex or upbibtex instead of bibtex for Japanese references)

Zitate erscheinen als (author?): Author undefined for citation

Dieses Paar – ein fettes (author?) im PDF und Package natbib Warning: Author undefined for citation 'knuth1986' on page 1 im Protokoll – bedeutet, dass der angegebene .bst-Stil kein Autor–Jahr beherrscht. \bibliographystyle{plain} zusammen mit \citet erzeugt es jedes Mal: plain.bst schreibt nackte \bibitem{knuth1986}-Labels, es gibt also keinen Autor, den natbib finden könnte, und \citet{knuth1986} fällt auf (author?) [1] zurück. Unangenehm ist, dass \citep im selben Dokument tadellos aussieht – es braucht nur die Nummer –, sodass sich der Schaden in einem langen Entwurf leicht verbirgt. Abhilfe schafft ein Stil, der die Daten mitführt: plainnat statt plain, abbrvnat statt abbrv, unsrtnat statt unsrt oder einer der Autor–Jahr-Stile, die natbib versteht (chicago, apalike, named, agsm, dcu, kluwer). Nach dem Stilwechsel bibtex erneut laufen lassen; eine Änderung allein in der .tex-Datei erneuert die Labels in der .bbl nicht.

thebibliography
% plain.bst writes this -- no author, no year, so \citet cannot work
\bibitem{jon90}

% plainnat.bst writes this -- short list, year, then the full list
\bibitem[Jones et al.(1990)Jones, Baker, and Williams]{jon90}

% apalike.bst and friends: the minimal form natbib still accepts
\bibitem[Jones et al., 1990]{jon90}

Die ganze Familie: \citet / \citep mit Stern sowie \citealt, \citealp, \citeauthor, \citeyear

Alles jenseits von \citet und \citep dient dazu, ein Zitat zu zerlegen. Die Sternformen setzen die vollständige Autorenliste, statt mit „et al.“ zu kürzen; \citealt und \citealp liefern denselben Inhalt wie \citet und \citep, aber ohne Klammern (das alt steht für textuell, das alp für parenthetisch). \citeauthor gibt allein den Autor zurück, \citeyear allein das Jahr, sodass sich ein Satz wie „Jones und Kollegen argumentierten bereits 1990, dass …“ von Hand bauen lässt. Die Ausgaben unten stammen aus \usepackage[round]{natbib} mit plainnat; der Schlüssel jon90 steht für Jones, Baker, and Williams (1990). Bemerkenswert: \citet war nicht von Anfang an dabei. natbib erschien 1993, \citet kam erst in Version 6.2 am 11. Januar 1996 hinzu – der Befehl, für den das Paket heute steht, ist mehr als zwei Jahre jünger als das Paket selbst.

BefehlBeispielausgabeVerwendung
\citet{jon90}Jones et al. (1990)textuell; der Autor wird Teil des Satzes
\citep{jon90}(Jones et al., 1990)parenthetisch; alles steht in Klammern
\citet*{jon90}Jones, Baker, and Williams (1990)vollständige Autorenliste, textuell
\citep*{jon90}(Jones, Baker, and Williams, 1990)vollständige Autorenliste, parenthetisch
\citealt{jon90}Jones et al. 1990\citet ohne Klammern
\citealp{jon90}Jones et al., 1990\citep ohne Klammern; für selbst gesetzte Klammern
\citeauthor{jon90}Jones et al.nur der Autor
\citeauthor*{jon90}Jones, Baker, and Williamsnur die vollständige Autorenliste
\citefullauthor{jon90}Jones, Baker, and Williamsidentisch mit \citeauthor*; die ältere Schreibweise
\citeyear{jon90}1990nur das Jahr
\citeyearpar{jon90}(1990)das Jahr in Klammern, wenn der Autor schon genannt wurde
\citetext{priv.\ comm.}(priv. comm.)freier Text innerhalb der Zitatklammern
\citenum{jon90}21die nackte Nummer, ohne Klammern und ohne Hochstellung

Jeder \cite…-Befehl nimmt dieselben Anmerkungen in eckigen Klammern entgegen, doch Dalys eigenes Handbuch sagt ausdrücklich: Anmerkungen sind für \citep gedacht. An \citeyear oder \citeauthor gehängt, ergeben sie keinen Fehler, werden im numerischen Modus jedoch stillschweigend ignoriert, und im Autor–Jahr-Modus wird nur die nachgestellte Anmerkung berücksichtigt. Mehrere Schlüssel in \citet gelten ebenfalls als nicht empfohlen: Mit Anmerkungen wiederholt sich die vorangestellte vor jedem Jahr, während die nachgestellte nur am letzten hängt – von Daly als eingestandene Fehler bezeichnet, deren Beseitigung den Aufwand angesichts des fragwürdigen Nutzens nicht lohne. In der Praxis übernimmt \citep die Sammelzitate, und \citet bleibt bei einem Werk. Mehrere Arbeiten desselben Autors aus demselben Jahr werden automatisch zu (Jones et al., 1990a,b) zusammengezogen.

latex
The algorithm is due to \citet{knuth1986}.
It runs in linear time \citep[Theorem~3]{knuth1986}.
See the discussion of line breaking \citep[see][chap.~2]{knuth1986}.
Similar ideas appear elsewhere \citep{knuth1986,lamport1994}.
Both papers agree \citep{jon90a,jon90b}.   % -> (Jones et al., 1990a,b)

% author and year taken apart by hand
\citeauthor{jon90} first made the claim in \citeyear{jon90}.

\Citet und \Citep: „della“ oder „van der“ am Satzanfang großschreiben

Dafür gibt es die großgeschriebenen Formen \Citet, \Citep, \Citealt, \Citealp und \Citeauthor (auch mit Stern). Nötig werden sie, wenn ein Nachname ein „von-Teil“ trägt – das della in della Robbia, das van der in van der Waals. Mitten im Satz ist die Kleinschreibung richtig, \citet{dRob98} setzt also della Robbia (1998); beginnt ein Satz mit diesem Namen, muss er jedoch groß beginnen. natbib schreibt den Nachnamen in der .bib-Datei nicht um, sondern setzt allein den ersten Buchstaben der Ausgabe groß – dieselbe Arbeit lässt sich so mitten im Satz und am Satzanfang zitieren, während das Literaturverzeichnis eine einzige Schreibung behält.

BefehlAusgabe
\citet{dRob98}della Robbia (1998)
\Citet{dRob98}Della Robbia (1998)
\Citep{dRob98}(Della Robbia, 1998)
\Citealt{dRob98}Della Robbia 1998
\Citealp{dRob98}Della Robbia, 1998
\Citeauthor{dRob98}Della Robbia

Von Autor–Jahr zu numbers oder super, ohne den Fließtext anzufassen

Ein Wort in den Optionen genügt. Mit \usepackage[numbers]{natbib} wird \citet{jon90} zu Jones et al. [21], \citep{jon90} zu [21] und das mit Anmerkung versehene \citep[chap.~2]{jon90} zu [21, chap. 2]. \usepackage[super]{natbib} liefert die hochgestellten Zahlen, wie sie Nature und verwandte Zeitschriften verwenden. Die \citet und \citep im Text bleiben unverändert – genau darum schrieb Daly natbib: Ein Wechsel der Zielzeitschrift sollte eine Zeile in der Präambel kosten und sonst nichts. Das Literaturverzeichnis selbst regelt die .bst-Datei, plainnat kann also bleiben, während die Zitate numerisch werden.

Im numerischen Modus kommen drei Optionen für Reihenfolge und Verdichtung ins Spiel. sort bringt Mehrfachzitate in die Reihenfolge des Literaturverzeichnisses, compress fasst zusammenhängende Folgen zu Bereichen zusammen, sort&compress tut beides – daher wird aus \citep{a,b,c} statt [21, 19, 20] ein [19–21]. Zwei Punkte sind zu beachten. Mehrere Schlüssel in \citet ergeben hier noch weniger Sinn als im Autor–Jahr-Modus, denn übrig bleibt eine Autorenliste vor einer Zahlenkette. Und im super-Modus verhält sich \citeyearpar genau wie \citeyear und verliert seine Klammern; wer für eine Zeitschrift Klammern um eine hochgestellte Zahl braucht, etwa in der Form (Ref. 21), muss sie mit \setcitestyle{open={(},close={)}} ausdrücklich setzen. Ein Befehl unterläuft zudem still das Versprechen dieses Abschnitts: Das schlichte \cite verhält sich im Autor–Jahr-Modus wie \citet, im numerischen und im Hochstellungsmodus dagegen wie \citep. Ein darauf gebauter Satz wechselt also mit dem Modus seine grammatische Rolle. Mit natbib schreibt man \citet oder \citep und niemals \cite.

latex
% author-year, the mode the nat styles assume
\usepackage{natbib}

% numeric, sorted, consecutive runs folded into ranges: [19-21]
\usepackage[numbers,sort&compress]{natbib}

% superscript numbers, as used by Nature and its relatives
\usepackage[super,sort&compress]{natbib}

% the body text is identical in all three cases

Warum plainnat [Jones et al., 1990] setzt: round, square, \bibpunct, \setcitestyle

Weil \bibliographystyle{plainnat} natbibs eigenes \bibstyle@plainnat aufruft, das als \bibpunct{[}{]}{,}{a}{,}{,} definiert ist. natbib führt eine nach .bst-Namen geordnete Tabelle von Satzzeichen mit – chicago bekommt runde Klammern und Semikola, agu eckige Klammern, nature klammerlose Hochstellungen –, und plainnat, abbrvnat sowie unsrtnat sind sämtlich auf eckige Klammern mit Komma-Trennung gesetzt. Oft liest man, natbib verwende standardmäßig runde Klammern; dieser Standard wird nur bei einer .bst-Datei sichtbar, deren Name nicht in natbibs Tabelle steht. Umgekehrt führt jede ausdrücklich genannte Klammer-, Trenn- oder Modusoption dazu, dass natbib intern nobibstyle ausführt und die vom .bst gesteuerte Interpunktion abschaltet. \usepackage[round]{natbib} stellt also selbst mit plainnat die runden Klammern wieder her, und \usepackage[authoryear]{natbib} schaltet den Mechanismus bewusst wieder ein.

OptionWirkung
roundrunde Klammern (…); Vorgabe, wenn natbib den .bst-Namen nicht kennt
squareeckige Klammern […]
curlygeschweifte Klammern {…}
anglespitze Klammern <…>
semicolonMehrfachzitate mit Semikolon trennen
colonidentisch mit semicolon; die falsch benannte Urform, in 8.0 richtig geschrieben ergänzt
commaMehrfachzitate mit Komma trennen
authoryearAutor–Jahr-Modus; schaltet zugleich die vom .bst gesteuerte Interpunktion wieder ein
numbersnumerischer Modus; führt intern auch square und comma aus
superhochgestellte Zahlen ohne Klammern (Nature-Stil)
sortMehrfachzitate in die Reihenfolge des Literaturverzeichnisses bringen
compresszusammenhängende Folgen ohne Sortieren zu Bereichen zusammenfassen
sort&compresssortieren und dann zu Bereichen zusammenfassen, ergibt [19–21]
longnamesfirstbeim ersten Zitat eines Werks die volle Autorenliste, danach et al.
sectionbibzusammen mit chapterbib das Literaturverzeichnis als \section* setzen
mergemit * markierte Schlüssel unter einer Nummer zusammenfassen; die mcite-Funktion

Um das Erscheinungsbild nach dem Laden noch zu ändern, dient \setcitestyle{…}, ergänzt in natbib 8.0 im Jahr 2007. Es nimmt eine kommagetrennte Liste von Schlüsselwörtern entgegen: der Modus ist authoryear, numbers oder super, die Klammern sind round, square, curly oder angle, das Trennzeichen semicolon oder comma. Feiner steuert man über key={value}-Paare – open={(} und close={)} für die Klammern selbst, citesep={;} zwischen Mehrfachzitaten, aysep={,} zwischen Autor und Jahr, yysep={,} zwischen Jahren und notesep={, } vor einer Anmerkung. \setcitestyle{square,aysep={},yysep={;}} trifft damit genau eine Vorgabe, die eckige Klammern, kein Komma zwischen Autor und Jahr und Semikola zwischen den Jahren verlangt.

preamble
\usepackage[round,semicolon]{natbib}   % (Jones et al., 1990; Smith, 1989)
\bibliographystyle{plainnat}

% change it again, later in the preamble (natbib 8.0 and later)
\setcitestyle{square,aysep={},yysep={;}}

% the older equivalent: [notesep]{open}{close}{citesep}{mode}{aysep}{yysep}
% mode: n = numeric, s = superscript, anything else = author-year
\bibpunct[, ]{(}{)}{;}{a}{,}{,}

\bibpunct ist der ältere Befehl für dieselbe Aufgabe und nimmt ein optionales und sechs obligatorische Argumente entgegen: der Reihe nach die öffnende Klammer, die schließende Klammer, das Trennzeichen zwischen Mehrfachzitaten, den Modus (n numerisch, s hochgestellt, alles andere Autor–Jahr), das Satzzeichen zwischen Autor und Jahr sowie das zwischen den Jahren desselben Autors. Das vorangestellte optionale Argument ist die Zeichenfolge unmittelbar vor einer Anmerkung, standardmäßig , . \setcitestyle liest sich klarer und ist daher in neuen Dokumenten vorzuziehen; \bibpunct muss man vor allem lesen können, wenn es in einem alten Manuskript oder einer Klassendatei auftaucht. Man kann auch nur die Interpunktion eines bekannten .bst übernehmen, etwa mit \citestyle{chicago}; und um einer eigenen .bst-Datei eine Interpunktion zuzuordnen, genügt \newcommand{\bibstyle@mystyle}{\bibpunct…} in einer natbib.cfg\bibliographystyle{mystyle} wendet sie dann von selbst an.

Klassen, die natbib von selbst laden: nonatbib in elsarticle und das Paket cite, das nicht dazugehört

Wenn \citet funktioniert, obwohl nie ein \usepackage{natbib} geschrieben wurde, hat die Klassendatei es geladen. Elseviers elsarticle führt \RequirePackage[\@biboptions]{natbib} aus und stellt eigens \documentclass[nonatbib]{elsarticle} bereit, damit man es unterbinden kann. revtex4-2 der American Physical Society lädt es als \RequirePackage[sort&compress]{natbib}, samt Mindestversion. In TeX Live 2024 erwähnen 92 Klassendateien natbib, und Daly selbst schrieb, es werde von vielen Zeitschriften unterstützt – ja gefordert. Daraus folgt eine Falle: Ein zusätzliches \usepackage{cite}, um die Nummern zu ordnen, führt zu Package natbib Warning: The 'cite' package should not be used with natbib. Use option 'sort' instead. Der Ersatz für cite heißt sort oder sort&compress, der Ersatz für mcite heißt merge oder elide. Und citeref muss nach natbib geladen werden, sonst folgt ein Fehler.

natbib oder biblatex: womit ein neues Dokument beginnen

Nennt die Einreichungsvorschrift eine .bst-Datei, dann natbib; steht bei einem neuen Dokument die Wahl frei, ist biblatex die stärkere Option. natbibs Vorzug liegt darin, dass vorhandene .bib-Dateien, .bst-Stile und das Programm bibtex unverändert weiterlaufen – und, wie eben gesehen, sehr viele Zeitschriftenklassen es voraussetzen. biblatex, im Gespann mit dem sortierenden Backend biber, steuert Reihenfolge wie Formatierung auf der LaTeX-Seite und war von Anfang an auf mehrsprachige, lokalisierte Ausgabe angelegt. natbib selbst steht seit Version 8.31b von 2010 still; der Code für merge und elide wurde von der American Physical Society in Auftrag gegeben und von Arthur Ogawa geschrieben – das (PWD, AO) in der Versionszeile sind die Initialen der beiden Autoren. Beide lassen sich nicht kombinieren, es ist also eines von beiden zu wählen. Die Entsprechungen der Befehle (\citet\textcite, \citep\parencite) stehen auf der Seite zum Zitieren, die biblatex-Seite behandelt die Seite zu biber / biblatex.