「Knuth (1986) は段落を行に分ける手続きを詳述しています」と「段落を行に分ける手続きはすでに詳述されています (Knuth, 1986)」——同じ本を指していても、この二つの引用は文法上まったく別の部品です。前者は文の主語そのもので、後者は文の外に置かれた注記にすぎません。LaTeX の引用が \cite ひとつで済まず、natbib の \citet/\citep、biblatex の \textcite/\parencite と対で用意されているのは、この違いを出力側が知る必要があるからです。このページでは、引用マークの出しかたからページ番号の添えかた、複数文献のまとめかた、そして引用が [?] になったときの直しかたまでを、「その一文を声に出して読んで、まだ文になっているか」という一本の基準で見ていきます。
\cite{key} の書き方——引用キー・複数引用・ページ番号
\cite{knuth} は本文に [1] を出し、同時にその文献を参考文献リストへ登録します。knuth は 引用キー で、自分で決める短い名前です。キーは出力には一切現れません——現れるのは、リスト側で決まった番号やラベルだけです。複数の文献はカンマで区切って一度に渡せて、\cite{knuth,lamport} は [1, 2] になります。ページなどの注記を添えたいときは省略可能な引数を使い、\cite[p.~5]{knuth} は [1, p. 5] を出します。~ は改行を許さない空白なので、p. と 5 が行末で分かれません。
素の LaTeX が受け取る注記は ひとつだけ で、置かれる場所も文献番号の後ろに固定されています。「(see Knuth, 1986, p. 94)」のように前置きを付けたい、という要求はここでは通りません。この制限を外すのが natbib と biblatex で、両者は省略可能な引数を二つ取ります——後半の「ページや章を添える」で扱います。逆に言えば、素の \cite で書ける範囲は思ったより狭い、ということが先にわかります。
% \cite prints the mark and registers the work
The algorithm is described in detail~\cite{knuth}.
% several keys in one command, comma separated
Both accounts agree on this point~\cite{knuth,lamport}.
% one optional argument = a note printed after the reference
The rule appears on page 5~\cite[p.~5]{knuth}.
% register a work in the list without printing a mark
\nocite{lamport}本文では引用しないがリストには載せたい文献には \nocite{key} を使います。引用マークは出力されず、登録だけが行われます。特別な書き方の \nocite{*} は .bib ファイル中の すべての項目 をリストに含めます。ただしこれは BibTeX や biber がリストを組み立てるときにだけ意味を持ちます。手書きの thebibliography では書いた \bibitem がそのまま全部印刷されるので、\nocite{*} を足しても何も変わりません。文献データベースの全件を一覧したいとき専用の道具だ、と覚えておけば十分です。
\citet と \citep、\textcite と \parencite の違い
判断基準はひとつ、著者名が文の部品として働いているか です。働いているなら natbib の \citet{knuth}(→ Knuth (1986))か biblatex の \textcite{knuth}(同じ出力)、働いていないなら \citep{knuth}(→ (Knuth, 1986))か \parencite{knuth}(→ (Knuth 1986))を選びます。biblatex のマニュアルはこの区別をはっきり言葉にしていて、\textcite は文の流れの中で主語の位置に入るためのものだと説明し、\autocite については「文法上、文の一部になってはいけない場所で使う」と釘を刺しています。つまりこの二系統は見た目の好みではなく、文の構造に対応しています。
% natbib: \citet is textual, \citep is parenthetical
\citet{knuth} describes how a paragraph is broken into lines.
The procedure is described in detail~\citep{knuth}.
% biblatex: same split, different names
\textcite{knuth} describes how a paragraph is broken into lines.
The procedure is described in detail~\parencite{knuth}.取り違えると、出力は英語(あるいは日本語)として壊れます。\citep を主語の位置に置けば「(Knuth, 1986) は段落を行に分ける手続きを詳述しています」となり、括弧が主語をやっている奇妙な文になります。逆に文末で \citet を使えば「……手続きはすでに詳述されています Knuth (1986)」と、行き場のない人名が残ります。校正でこの二つを見分けるのは意外に難しく、しかも投稿規定のチェックにも引っかかりません——文法の誤りであって、体裁の誤りではない からです。
では素の \cite に任せればよいのでは、と思うところですが、\cite は文法を見ていません。natbib の \cite は モードの別名 でしかなく、authoryear オプションでは \citet に、numbers オプションでは \citep になります。文の構造ではなく、プリアンブルに書いた一語で決まるのです。biblatex の \cite はさらに素っ気なく、括弧を一切足さない裸のラベルで、style=authoryear では Knuth 1986 とだけ出ます——地の文にも括弧内にも収まらない形です。命令はあなたの文の構文を見ることができません。見られるのはあなただけで、だから役割を明示する命令が別に用意されています。
この区別は著者‑年式だけの話だと思われがちですが、番号式でも生き残ります。natbib の番号モードでは \citet{knuth} は Knuth [1]、\citep{knuth} は [1] を出します。biblatex の style=numeric でも \textcite は Knuth [1] です。だから「とりあえず \cite で書いておいて、あとで体裁を切り替える」という進め方は事故のもとになります。切り替えた瞬間、地の文に埋め込むはずだった引用がすべて角括弧に潰れ、主語を失った文だけが残るからです。役割は書くときに決めて記録しておく——これが唯一の安全策です。
| 命令(natbib) | 出力例(authoryear) | 役割 |
|---|---|---|
\citet | Knuth (1986) | 地の文用。著者名が文の部品になる |
\citep | (Knuth, 1986) | 括弧用。文の外側に置く注記 |
\cite | Knuth (1986) | 別名。authoryear では \citet、numbers では \citep |
\citealt | Knuth 1986 | 括弧なしの地の文形。自分で括弧を組みたいとき |
\citealp | Knuth, 1986 | 括弧を外した括弧形。読点だけが残る |
\citeauthor | Knuth | 著者名だけ。二度目以降の言及に |
\citeyear | 1986 | 年だけ。著者名を自分で書いたあとに続ける |
\citeyearpar | (1986) | 括弧付きの年。\citeauthor と組み合わせる |
\citenum | 1 | 番号だけ。上付きにはならない |
\citetext | (priv. comm.) | 文献キーを持たない注記を引用括弧に入れる |
\citet と \citep には星付きの形もあり、スタイルが et al. に省略する著者名を 全員分 展開します。三人の共著なら \citep{jbw} が (Jones et al., 1990) になるところ、\citep*{jbw} は (Jones, Baker, and Williams, 1990) を出します。初出だけ全員の名を挙げる、という規定を持つ雑誌で使う場面があります。なお展開できるかどうかは .bst スタイル側が全著者名を持っているかによるので、対応していないスタイルでは星を付けても省略形のままです。
biblatex 側は同じ二系統に加えて、引用の置き場所 そのものを命令にしています。\footcite は引用全体を脚注へ送り、\supercite は番号を上付きで出します。\autocite は一段抽象的で、パッケージオプション autocite の値(plain/inline/footnote/superscript)に従って \cite・\parencite・\footcite・\supercite のどれかに化けます。本文を \autocite で書いておけば、括弧内引用と脚注引用をプリアンブルの一語で切り替えられる——ただし \textcite の役割は肩代わりできません。文の一部になっている引用を機械的に脚注へ落とすことはできないからです。中でも面白いのは \smartcite で、本文中では \footcite のように、脚注の中では \parencite のように振る舞い、自分がどこに置かれたかを見て形を変えます。
| 命令(biblatex) | 出力例(style=authoryear) | 役割 |
|---|---|---|
\textcite | Knuth (1986) | 地の文用。主語の位置に入る |
\parencite | (Knuth 1986) | 括弧用。番号系スタイルでは角括弧 |
\cite | Knuth 1986 | 素のラベル。括弧を一切足さない |
\autocite | (Knuth 1986) | オプション autocite に従って形を変える |
\footcite | 脚注に Knuth 1986. | 引用全体を脚注へ送り、末尾に終止符を付ける |
\smartcite | 脚注に Knuth 1986. | 本文では \footcite、脚注の中では \parencite として振る舞う |
\supercite | 上付きの番号(括弧なし) | 番号系スタイル専用。前後の注記は捨てられる |
\cite* | 1986 | 著者‑年式では年だけ、著者‑タイトル式では標題だけ |
ページや章を添える——[p.~5] と前置き注記 [see][p.~94]
natbib と biblatex はどちらも省略可能な引数を 二つ 取り、前が前置き注記、後ろが後置き注記です。\citep[see][p.~94]{knuth} は (see Knuth, 1986, p. 94) を、\citet[chap.~2]{lamport} は Lamport (1994, chap. 2) を出します。ページ以外の位置指定——章、節、図、行——もそのまま後置き注記に書けます。素の \cite にできなかった「前に一言添える」がここで可能になるわけです。
ここに、経験者でも一度は踏む落とし穴があります。省略可能な引数がひとつだけのときは、それは後置き注記として読まれます。だから前置きだけを付けたつもりで \citep[e.g.,]{knuth} と書くと、出力は (Knuth, 1986, e.g.,) になり、「例えば」が文献の後ろに落ちます。biblatex でも同じで、\parencite[see]{knuth} は (Knuth 1986, see) です。正しくは空の第二引数を残して \citep[e.g.,][]{knuth}。角括弧が二つ並ぶ見た目は間違いに見えますが、これが正解です。
biblatex には気の利いた追加があります。後置き注記が 数字だけ のときは、それをページ番号と解釈して p. を自分で足します。\parencite[25]{knuth} は (Knuth 1986, p. 25) です。しかも接頭辞は固定ではなく、.bib の項目に pagination フィールドを置けば変えられます。pagination = {verse} なら同じ [17] が v. 17 に、section なら § 17 になります。ページで数えない古典作品や楽譜を扱う原稿では、この一行で全引用の表記がそろいます。
% one optional argument is always the post-note
\citep[p.~94]{knuth} % -> (Knuth, 1986, p. 94)
% two optional arguments are pre-note and post-note
\citep[see][p.~94]{knuth} % -> (see Knuth, 1986, p. 94)
% a pre-note alone still needs the empty second bracket
\citep[e.g.,][]{knuth} % -> (e.g., Knuth, 1986)
\citep[e.g.,]{knuth} % -> (Knuth, 1986, e.g.,) <- wrong
% biblatex reads a bare number as a page and adds "p."
\parencite[25]{knuth} % -> (Knuth 1986, p. 25)複数の文献をまとめて引用する——番号の並べ替えと圧縮
複数の文献は 必ずひとつの命令にまとめて 渡します。\citep{knuth,lamport} は (Knuth, 1986; Lamport, 1994)、番号式なら [1, 2] になります。\cite{knuth}\cite{lamport} と続けて書くと [1][2] のように別々のまま並び、スタイル側は並べ替えることも範囲にまとめることもできません。一緒に見せられなかったものを整えることはできない、というだけの話です。地の文の複数引用も同じで、biblatex の \textcite{knuth,lamport} は Knuth (1986) and Lamport (1994) と接続詞まで補ってくれるので、文はきちんと文のままです。
文献ごとに別々のページ番号を付けたいときは、biblatex の複数形(qualified citation list)を使います。\textcites[59]{knuth}[12]{lamport} は Knuth (1986, p. 59) and Lamport (1994, p. 12) を出し、各キーが自分の前置き・後置き注記を持てます。\parencites、\footcites など、対応する複数形が一通りそろっています。natbib には同等の仕組みがないので、注記が文献ごとに違う場合は \citep[p.~59]{knuth} と \citep[p.~12]{lamport} を並べ、あいだの接続詞は自分で書くことになります。
番号式のまま体裁だけ整えたいなら、Donald Arseneau の cite パッケージが手軽です。\usepackage{cite} と読み込むだけで標準の \cite が賢くなり、番号を 昇順に並べ替え、連続する番号を 範囲に圧縮 します。\cite{c,a,b,e} が 2・3・4・6 番を指すなら、出力は [2–4, 6]。オプションは superscript(別名 super)で上付き、nosort で並べ替えを止め、nocompress で範囲圧縮を止め、nospace で番号間の空白を詰め、nobreak で改行を抑えます。ただし natbib と biblatex は自前の並べ替え・圧縮を持っており(natbib なら sort と sort&compress オプション)、そちらを使っているなら cite は不要です。
\cite の番号はどこから来るか——thebibliography と \bibitem
\cite{key} が出す番号の出どころは、同じ key を持つ \bibitem です。参考文献リストをその場で書き下す最も基本的な方法が thebibliography 環境で、その中の \bibitem{key} ... ひとつが文献一件を表します。並んだ順に 1, 2, 3 … と番号が振られ、\cite はその番号を引いてきます。\begin{thebibliography}{99} の {99} は もっとも幅の広いラベル を渡す引数で、ラベル欄の幅がここから決まります。項目が 10 件以上なら {99}、9 件以下なら {9} が目安で、誤ると番号がそろわず字下げがばらつきます。番号ではなく独自のラベルを使いたいときは \bibitem[KL94]{lamport} と書けば、[KL94] がラベルになり \cite{lamport} もそれを出力します。
\begin{thebibliography}{99}
\bibitem{knuth}
Donald E. Knuth, \emph{The \TeX book}, Addison-Wesley, 1986.
% an optional argument replaces the automatic number
\bibitem[KL94]{lamport}
Leslie Lamport, \emph{\LaTeX: A Document Preparation System},
2nd ed., Addison-Wesley, 1994.
\end{thebibliography}手書きの thebibliography が向くのは、文献が数件しかないときと、体裁を完全に自分で決めたいときです。それを超えると、文献情報を .bib ファイルに 整形前のデータ として蓄え、BibTeX や biber にリストを組ませるほうが速く、正確で、使い回しが効きます。番号付け・並べ替え・体裁が投稿規定に合わせて自動化され、同じ .bib を何本もの原稿で共有できます。重要なのは、本文側の書き方は何も変わらない ことです。\cite{knuth} は \bibitem を探す代わりに .bib の項目を探すようになるだけで、このページで見た命令はそのまま通用します。
引用が [?] になる/Citation ... undefined と出るとき
[?] は「そのページを組んだ時点で、.aux にそのキーのラベルが無かった」という意味です。ログには LaTeX Warning: Citation 'nosuchkey' on page 1 undefined on input line 4. が出て、最後にまとめて LaTeX Warning: There were undefined references. が付きます。原因は二つしかありません。実行回数が足りない か、キーが違う かです。
実行回数の話は、番号や相互参照とまったく同じ仕組みです。1 回目の実行で \bibitem の番号が .aux に書き出され、2 回目でそれを読み戻して \cite の位置に入ります。BibTeX や biber を挟むなら順序は latex → bibtex(または biber)→ latex → latex で、中央の一手を飛ばすと [?] のままになります。キーの側は単純なタイプミスのほか、.bib を書き換えたのに BibTeX を回していない場合も同じ症状になります。.aux を消して最初からやり直すと切り分けが早いです。
biblatex は疑問符を出さず、キーそのもの を印字します。\parencite{nosuchkey} は (nosuchkey) となり、ログには Package biblatex Warning: The following entry could not be found ... が並びます。見た目は不気味ですが、どのキーが迷子かがそのまま紙面に出るので、原因の特定はむしろ速いです。
もうひとつ、natbib 特有の症状があります。\citet を使ったのに出力が (author?) [1] になり、ログに Package natbib Warning: Author undefined for citation 'knuth' と出る場合です。原因は引用命令ではなく .bst スタイルのほうで、\bibliographystyle{plain} のような natbib 非対応のスタイルは、著者名と年を含んだラベルを \bibitem に書き出しません。\bibliographystyle{plainnat} のような natbib 対応スタイルに替えれば直ります。\citet が動かないと思ったら、まず .bst を疑うのが早道です。
natbib と biblatex、どちらの引用命令を使うか
どちらか一方だけを読み込み、最後まで貫く ——これが唯一の実務上の答えです。二つは同じ仕事を別の設計で解いており、同時に読み込むと命令名が衝突します。投稿先がクラスファイルやスタイルを配っている場合は、それが要求するほうに従うのが先決で、多くの学会クラスは natbib を前提にしています。自分で選べるなら、biblatex は Unicode の扱い、多言語、脚注引用、分野ごとのスタイルの豊富さで有利です。natbib は 1993 年から使われていて対応する .bst が膨大にあり、古いテンプレートとの相性で選ばれ続けています。
どちらを選んでも、判断の順序は変わりません。まず その引用が文の部品かどうか を決め、\citet/\textcite か \citep/\parencite かを選ぶ。次に位置指定が要るなら省略可能な引数を、複数まとめるならカンマ区切りかqualified list を使う。体裁——括弧の種類、番号か著者‑年か、区切り記号——は最後で、そこはパッケージオプションと .bst/スタイルの仕事です。この順で書いておけば、投稿先が変わっても直すのは最後の一層だけで済みます。