natbib

natbib は、古典的な BibTeX を使ったまま 著者‑年式(author–year)の引用 を実現する、定番のパッケージです。標準の \cite を作り直し、地の文に溶け込ませる \citet(Jones et al. (1990))と、丸括弧でくくる \citep((Jones et al., 1990))を区別できます。著者‑年式と番号式の両方を扱え、plainnatabbrvnatunsrtnat という専用スタイルが付属します。このページでは、豊富な引用命令の一覧と出力例、括弧や区切りを変えるオプション、そして新しい biblatex との関係を見ていきます。

読み込みと文献スタイル

natbib はプリアンブルで \usepackage{natbib} と読み込みます。文献リストの体裁は \bibliographystyle で選び、natbib 専用の plainnatabbrvnatunsrtnat を指定するのが基本です。これらは標準の plainabbrvunsrt に対応する natbib 版で、著者‑年式・番号式のどちらでも使えます。文献データは .bib ファイルに置き、\bibliography{ファイル名} で読み込みます。

document.tex
\documentclass{article}
\usepackage{natbib}
\bibliographystyle{plainnat}
\begin{document}

The design of \TeX{} is described in detail by \citet{knuth1986}.
This result has been confirmed elsewhere \citep{lamport1994}.

\bibliography{refs}
\end{document}

処理の流れは通常の BibTeX と同じです。latex(または pdflatex)→ bibtexlatexlatex と、LaTeX・BibTeX・LaTeX 2 回 の順で実行すると、引用と文献リストが確定します。日本語文献を含む場合は bibtex の代わりに pbibtex / upbibtex を使います。詳しくは BibTeX のページを参照してください。

二つの基本命令 — \citet と \citep

natbib の中心は、地の文の引用 \citet括弧の引用 \citep の二つです。\citet{key} は著者名を文の一部として出力し、年だけを括弧に入れます(Jones et al. (1990))。「Jones et al. (1990) はこう述べている」のように主語として使えます。\citep{key} は全体を括弧でくくり((Jones et al., 1990))、文末などに添える形になります。標準の \cite は著者‑年式では \citet のように、番号式では \citep のように振る舞ってしまうため、natbib では 使わないのが安全 です。

省略可能な引数で 注記 を添えられます。注記が一つなら 後注(citation の後ろ)になり、\citep[chap.~2]{key}(Jones et al., 1990, chap. 2) を出力します。注記を二つ書くと 前注と後注 になり、\citep[see][p.~5]{key}(see Jones et al., 1990, p. 5) となります。前注だけ付けたいときは、後注を空にして \citep[see][]{key} とします((see Jones et al., 1990))。~ は途中で行が折れないようにする連結用の空白です。

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}.

引用命令の一覧

natbib は \citet / \citep を起点に、用途別の派生命令を揃えています。次の表は 著者‑年式 での出力例です(引用キー jon90 は Jones, Baker, Williams(1990)を指すものとします)。星付き\citet* / \citep* は「ほか」で省略せず 全著者名 を並べ、\citealt / \citealp括弧を付けない 形を出力します。\citeauthor は著者名だけ、\citeyear は年だけ、\citeyearpar は年を括弧に入れて返します。

命令出力例用途
\citet{jon90}Jones et al. (1990)地の文の引用(著者を主語に)
\citep{jon90}(Jones et al., 1990)括弧でくくる引用
\citet*{jon90}Jones, Baker, and Williams (1990)全著者名(地の文)
\citep*{jon90}(Jones, Baker, and Williams, 1990)全著者名(括弧)
\citealt{jon90}Jones et al. 1990括弧なし・地の文
\citealp{jon90}Jones et al., 1990括弧なし・括弧の中身だけ
\citeauthor{jon90}Jones et al.著者名のみ
\citeauthor*{jon90}Jones, Baker, and Williams全著者名のみ
\citeyear{jon90}1990年のみ
\citeyearpar{jon90}(1990)年を括弧に入れて

\citealp は名前のとおり \citep から括弧を外したもので、注記も付けられます。\citealp[chap.~2]{jon90}Jones et al., 1990, chap. 2 を出力します。括弧の中に自由なテキストと引用を混ぜたいときは \citetext{...} が便利で、\citetext{priv.\ comm.}(priv. comm.) となります。\citefullauthor{key}\citeauthor* と同じく全著者名を返します。

文頭で頭文字を大文字に — \Citet / \Citep

著者名に van derdella のような 前置部分(von part) があると、\citet{dRob98} は小文字のまま della Robbia (1998) を出力します。文頭ではこれを大文字で始めたいので、頭文字を強制的に大文字にする 大文字版 の命令が用意されています。\Citet\Citep\Citealt\Citealp\Citeauthor のように、先頭を大文字にした名前を使います(星付きも存在します)。

命令出力例
\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

複数引用と番号式モード

カンマ区切りで複数の文献をまとめて引用できます。著者‑年式では、同じ著者で年だけが違う 隣り合う文献は著者名を繰り返さずまとめられます。\citep{jon90,jam91}(Jones et al., 1990; James et al. 1991)\citep{jon90,jon91}(Jones et al., 1990, 1991)、同じ著者・同じ年なら \citep{jon90a,jon90b}(Jones et al., 1990a,b) になります。

同じ原稿を 番号式 に切り替えるのも、natbib なら本文を書き換えずに済みます。\usepackage[numbers]{natbib} のようにオプションを渡すか、\setcitestyle{numbers} を使えば、\citet / \citep の出力が番号に変わります。番号式では \citet{jon90}Jones et al. [21]\citep{jon90}[21]、注記付きの \citep[chap.~2]{jon90}[21, chap. 2] になります。\usepackage[super]{natbib} を選べば、Nature 誌のような 上付き番号 にできます。なお番号式では \citet に複数引用を渡すのは推奨されません。

括弧と区切りのオプション

引用の 体裁(括弧の種類や区切り文字) は、パッケージ読み込み時のオプションで一括指定できます。括弧は round(既定の丸括弧)・square(角括弧)・curly(波括弧)・angle(山括弧)。複数引用の区切りは semicolon(既定のセミコロン)・comma(カンマ)。モードは authoryear(既定)・numberssuper。さらに番号を並べ替える sort、連続番号を範囲に圧縮する sort&compress(例: 3–6, 15)、並べ替えずに圧縮する compress があります。

latex
\usepackage[square,numbers,sort&compress]{natbib}

ほかにも、最初の引用だけ全著者を出す longnamesfirstchapterbib と併用して文献リストを \section* にする sectionbib などがあります。なお colonsemicolon と同じ働きで、初期の用語の誤りが残ったものです。

読み込み後に体裁を変えたいときは \setcitestyle{...}(natbib 8 で追加)を使い、キーワードをカンマ区切りで渡します。モードは authoryear / numbers / super、括弧は round / square または open={(}close={)}、区切りは semicolon / comma または citesep={;}、著者と年の間は aysep={,}、年と年の間は yysep={,}、後注の前は notesep={, }。たとえば \setcitestyle{square,aysep={},yysep={;}} のように細かく調整できます。

古くからある \bibpunct でも同じ調整ができます。プリアンブルで使い、省略可能な 1 引数 + 必須 6 引数 をとります。順に、開き括弧・閉じ括弧・複数引用の区切り・モード指定(番号式は n、上付きは s、それ以外は著者‑年式)・著者と年の間・著者共通時の年の区切りで、既定は \bibpunct{(}{)}{;}{a}{,}{,} です(先頭の省略可能引数は後注の前の文字)。\setcitestyle のほうが読みやすいため、新規には \setcitestyle をおすすめします。

natbib と biblatex

natbib は、従来の BibTeX の資産をそのまま活かしながら著者‑年式へ橋渡しする 役割を担ってきました。既存の .bib ファイルと .bst スタイル、BibTeX という処理系をそのまま使えるのが強みで、多くの学会・出版社がいまも natbib を前提にしています。

一方、より新しい代替が biblatex(処理系 biber と組み合わせる)です。biblatex は並べ替えや書式を LaTeX 側で柔軟に制御でき、多言語やローカライズにも強い設計です。新規プロジェクトで自由に選べるなら biblatex も有力ですが、投稿規定が natbib(または特定の .bst)を指定している場合は natbib を使います。両者は併用できないため、どちらか一方 を選びます。詳しくは biber / biblatex のページを参照してください。