レッスン 12

参考文献の引用

このレッスンでは文献データベースの基本を押さえます。データベースの作り方と、有名な2つのフレームワークを使用したデータベースの利用法を学んでいきましょう。

文献を引用するとき、文献情報を直接文書に含めることもできますが、基本的には1つまたは複数の外部ファイルから文献情報を取り出すことになるでしょう。そうした外部ファイルは文献データベースと呼ばれ、文献情報をコンピュータが処理しやすい形で保持しています。文献データベースを使用すると、情報の再利用が容易になり、またすべて手作業で文献リストを整形する必要がなくなります。

なお、本レッスンでは英語の文献を扱う場合について説明します。日本語の文献を扱う場合については、別のドキュメントを参照してください(いずれ付録レッスンに追加するかもしれません)。

文献データベース

文献データベースはしばしば「BibTeXファイル」と呼ばれ、拡張子は.bibです。そうしたファイルでは、各文献が1エントリに対応し、また各エントリには複数のフィールドが含まれます。例を見てみましょう。

@article{Thomas2008,
  author  = {Thomas, Christine M. and Liu, Tianbiao and Hall, Michael B.
             and Darensbourg, Marcetta Y.},
  title   = {Series of Mixed Valent {Fe(II)Fe(I)} Complexes That Model the
             {H(OX)} State of [{FeFe}]Hydrogenase: Redox Properties,
             Density-Functional Theory Investigation, and Reactivity with
             Extrinsic {CO}},
  journal = {Inorg. Chem.},
  year    = {2008},
  volume  = {47},
  number  = {15},
  pages   = {7009-7024},
  doi     = {10.1021/ic800654a},
}
@book{Graham1995,
  author    = {Ronald L. Graham and Donald E. Knuth and Oren Patashnik},
  title     = {Concrete Mathematics},
  publisher = {Addison-Wesley},
  year      = {1995},
}

ここには論文記事(article)と書籍(book)の情報が含まれています。この2種類は圧倒的に使用頻度の高いものです。上の例を見るとわかるように、各エントリは@から始まり、すべての情報は続くブレースの中に記述されます。

さまざまなフィールドはkey-value形式で与えられます。例外は(各エントリの冒頭にある)「キー」と呼ばれる文献の「名前」です。このキーは単なるラベルなのでどのように決めても構いませんが、上では著者名と出版年の組み合わせとしました。この命名法は一般的に用いられているものです。

具体的にどんなフィールドを与える必要があるかはエントリの種類に依りますが、ほとんどの場合自明です。上記の例がそうであるようにauthorフィールドでは各著者の名前はandで区切られています。このことは重要です。出力を整形するためには、著者名の区切りがどこであるかが明示されている必要があります。またarticleエントリのtitleフィールドでは、一部が余計にブレースで囲まれています。これらはあらゆる種類の大文字・小文字の自動変更を防止するためにあります。

BibTeXファイルを直接手で編集するのは大変なので、専用のエディタを用いられることが多いです。JabRefというエディタがクロスプラットフォームで広く使われていますが、選択肢は他にもあります。またDOI(Digital Object Identifier)の付された文献であればdoi2bibを用いるとBibTeXエントリを簡単に生成することができます。ただし、こうした自動生成ツールを用いる場合には妥当な出力になっているかどうか必ず確認するようにしてください。

ここでは、デモンストレーションのために上記のシンプルな例を使用します。その内容をlearnlatex.bibという名前で「保存」しています。

データベースの情報を活用する

データベース内の文献情報を文書に反映するには3つのステップが必要になります。まず第1ステップは LaTeX を用いて文書をタイプセットすることで、その際に当該文書で引用されている文献の一覧がファイルに書き出されます。第2ステップでは、別の専用プログラムを使用してデータベースから引用されている文献の情報を抜き出し、そして適切な順番に並び替えます。最後の第3ステップで再び LaTeX によって文書のタイプセットを行い、最終的な出力に引用と参考文献リストを反映します。通常、すべての引用を解決し切るためには、第3ステップの LaTeX 実行は2回以上行う必要があります。

第2ステップで利用できる専用プログラムとしてメジャーなものはBibTeXとBiberの2つです。Biberは必ずbiblatexパッケージとともに使われてきました。Biberは日本語も扱うことが可能です。一方のBibTeXはパッケージなしの場合やnatbibパッケージを使用する場合に利用します。なおBibTeXでは日本語を扱うことはできないので、代わりにpBibTeXを使用します。

LaTeX以外のツールを実行する方法は使用するエディタによって異なります。このチュートリアルで用意しているオンラインシステムでは、すべて裏方のスクリプトによって一連の処理を自動的にこなすようになっています。お手許のエディタの場合は、「すべてよしなに処理」するためのボタンが用意されているか、あるいは第1ステップと第3ステップのLaTeX実行の間に手動でBibTeXまたはBiberの実行を行う必要があるかもしれません。

引用と文献リストのフォーマットはBibTeXデータベースとは独立に「スタイル」と呼ばれるものによって制御されています。その具体的な仕組みはnatbibを使用する場合とbiblatexを使用する場合で少し異なりますが、基本的なアイデアは同じです。いずれにしても、LaTeXユーザは引用と参考文献のフォーマットを選ぶことが可能です。

natbibを使用する場合

パッケージを使用しなくてもLaTeX文書で引用をすることはできますが、かなり機能的には制限が大きいです。そこで、ここではnatbibパッケージを利用した場合について紹介します。このパッケージを使用すると、さまざまなフォーマットの引用が実現でき、またスタイルも豊富です。

基本的な使い方は次の例を見てください。

\RequirePackage{plautopatch}
\documentclass[dvipdfmx]{jlreq}
\usepackage{natbib}

\begin{document}
\citet{Graham1995}は多くの数式を記述しました。また\citet{Thomas2008}にはいくつか化学式が出てきます。

カッコで囲うタイプの引用:\citep{Graham1995}と\citep[p.~56]{Thomas2008}。

\citep[参考][pp.~45--48]{Graham1995}

同時に引用する場合は\citep{Graham1995,Thomas2008}

\bibliographystyle{plainnat}
\bibliography{learnlatex}
\end{document}

データベースに含まれる各エントリはキーを指定することによって引用します。natbibパッケージではテキスト形式の引用とカッコで囲う形式の引用を両方サポートしていて、それぞれ\citet\citepコマンドで実現できます。文献スタイルは\bibliographystyleコマンドで指定します。ここではplainnatスタイルを利用しました。実際の文献リストは\bibliographyコマンドによって挿入されます。このコマンドの引数に、使用するデータベースの名前を指定します。カンマ区切りで複数指定することも可能です。

ページを指定して引用する場合はオプション引数で指定します。オプション引数を2つ与えた場合は、1つ目が引用の先頭に出力されるので、短い注記を付けるのに使うことができます。この場合、2つ目の引数にページ番号を氏指定します。

上記の例では著者名と出版年を明示するスタイルを使用していますが、引用番号を付けるスタイルもあります。その場合はnatbibパッケージを読み込む際にnumbersオプションを指定します。

biblatexを使用する場合

biblatexパッケージのしくみはnatbibとは少し異なり、データベースの指定をプリアンブルで行う一方で実際の文献リスト出力の指示は本文で行うようになっています。そのため、いくつか新しいコマンドが登場します。

\RequirePackage{plautopatch}
\documentclass[dvipdfmx]{jlreq}
\usepackage[style=authoryear]{biblatex}
\addbibresource{learnlatex.bib} % 文献データベース

\begin{document}
\autocite{Graham1995}は多くの数式を記述しました。

ちょっと複雑な引用を試してみます:\parencite{Graham1995}または
\textcite{Thomas2008}もしくは\citetitle{Graham1995}。

\autocite[56]{Thomas2008}

\autocite[See][45-48]{Graham1995}

同時に引用する場合は\autocite{Thomas2008,Graham1995}

\printbibliography
\end{document}

natbib\bibliographyでは.bibを省略することができましたが、\addbibresourceではデータベースのファイル名をフルネームで与えなければなりません。またbiblatexでは引用のコマンド名が長めですが、いずれも推測するのは容易でしょう。

また引用の前後に出力する短いテキストは、やはりオプション引数により指定することができます。biblatexが自動的に適切な接頭辞を付与するので、ページ番号の前にp.~pp.~を手動で記入する必要がないことに注意してください。

biblatexでは、文献リストのスタイルはパッケージの読み込み時に指定します。ここではauthoryearスタイルを利用しましたが、numericスタイルをはじめ数々のスタイルが用意されています。

練習問題

natbibbiblatexのコード例を両方実行してみましょう。natbibの場合はLaTeX、BibTeX、LaTeX、LaTeXを、biblatexの場合はLaTeX、Biber、LaTeXを実行する必要があるはずです。手許のエディタではどうすればこの手順の実行ができるのか調べてみましょう。あるいは、その手順が既に自動化されているOverleafやTeXLive.netを試してみてください。

データベースに新しいエントリを追加し、何箇所かで引用してみましょう。データベースにない文献を引用するとどのような出力になるでしょうか。natbibbiblatexnumbericオプションも試してみましょう。