BibTeX+Emacsで参考文献データベース

なぜBibTeXを使うのか

thebibiliograpy環境によるリストの作成

LaTeXには参考文献リストを出力するためのthebibliography環境があるので, 特別なプログラムを使わなくても簡単に参考文献リストを書くことができます. TeXで文書中に参考文献をいれるための最も基本的な方法は, 本文の適当な位置に次のように記述しておくことです.

\begin{thebibliography}{999}
  \bibitem{honiden98} 本位田真一, 大須賀昭彦: オブジェクト指向から
エージェント指向へ, 1998, ソフトバンク
  \bibitem{sirai82} 白井良明, 辻井潤一: 人工知能, 岩波講座 情報科学22,
1982, 岩波書店
\end{thebibliography}

このように記述しておくと,概ね次のようにタイプセットされるでしょう.

[1] 本位田真一, 大須賀昭彦: オブジェクト指向からエージェント指向へ,
    1998, ソフトバンク
[2] 白井良明, 辻井潤一: 人工知能, 岩波講座 情報科学22,
    1982, 岩波書店

そして,TeXソース中に「たのしく入門したい人は,本位田さんの本 \cite{honiden98}を参照してください」のように書いておけば, 「たのしく入門したい人は,本位田さんの本[1]を参照してください」のようにタイプセットされます (ここまでは知ってますよね?). このようにLaTeXではthebibiliography環境を利用することで, 簡単に参考文献リストをタイプセットすることができるわけで,特に欲張らないのであれば,これで十分だと思います.

がっ,しかし,あなたのまわりのパワーユーザーな人たちは, たいていBibTeXと呼ばれるプログラムを使って参考文献の管理をしていると思います. なぜパワーユーザーな人たちはわざわざ別のプログラムを使用して参考文献の管理をしているのでしょうか?

BibTeXデータベースを作成しておけば再利用が容易

パワーユーザーが不思議なプログラムを使っている場合,その動機にはたいてい再利用というキーワードを含まれています. 要するに,一度作成したものを必要になるたびに何度も作り直してしまうようなことはかっこわるいと思っているのです.

参考文献の項目を書く作業はたった数行のわりにけっこうたいへんだということは既に実感しているでしょう. おくづけ(裏表紙の裏のあたりにある著作権情報や著者の略歴などが書いてあるページ)を見ながら正確に写さないといけないし, 著者が珍しい名前だったりすると変換するのもたいへんで,「本位田」と書くために 「本 位置^H 田園^H」 (^Hはバックスペースを押すという意味)のように涙ぐましい(?)努力をしながら変換して, そのうえ一所懸命うつしている最中に本がバサッと閉じてしまったりということもよくおこります (真ん中あたりだとおとなしく開いている本も,おくづけのあたりはとても反抗的なのです). これだけ苦労して(?)作成したのだから容易に再利用できるような資源にしておきたいと考えるのは当然でしょう.

ここまで読んで「そんなのthebibiliography環境で作っておいて Emacsのキル&ヤンク機能で切り張りすればいいじゃないか」と思った人はなかなかいいセンスです. が,\bibitemの行をエディタで切り張りする方法が使えるのは, どの文書に目的の文献項目が含まれているかがわかっているときだけです. 文書の数がふえてくると,どの文書に目的の\bibitem行が含まれているかを調べることの方がたいへんになってきます. 以上のような理由から,BibTeXのような効率よく資源の再利用を行える仕組みが必要になってくるわけです.

BibTeXを使うと何をどう書くべきかについて悩まなくてよくなる(Emacs/BibTeXモード併用時のみ)

thebibiliography環境を使って参考文献リストを書く場合, 「何を」「どの順に」「どのような書式で」書くのかは,リストを作成する瞬間の気分に依存しているという非常に不安定な作業なのです. 手作業で\bibitemを書く場合, どうしても出版年と出版社名を書く位置が逆になったりといったようなゆらぎが起こります.

もっと本質的な問題もあります. 先の文献[2]の項目の書き方を再掲しますのでよく見てください.

[2] 白井良明, 辻井潤一: 人工知能, 岩波講座 情報科学22,
    1982, 岩波書店

自己流で文献項目を作成する場合,この本のタイトルの書き方はかなり多様なものになるでしょう. 単に「人工知能」とだけ書く人もいるでしょうし, 「岩波講座 情報科学22 人工知能」のように書く人, さらにわかりやすさを重視し て「岩波講座 情報科学22」をスモールフォント指定し, 「人工知能」の部分をボールドにするというような人もいそうな気がします. このように,タイトルの前にスモールフォントで「理工系学生のための」といったまえがきがしてあったり, タイトルの後ろに「〜基礎と例題〜」のような副題らしきものがついていたりすると, どのように書くべきか悩むことになるわけです.

このような場合にもBibTeXを利用することは有効な解決策になります. わかりやすいように具体例で説明しましょう. 上の文献[2]の正確なおくづけは次のようなものです.

岩波講座 情報科学22            (全24巻 第7回配本)
-------------------------------------------------
人工知能
1982年4月9日 発行
(以下略)
-------------------------------------------------
               (C) 岩波書店 1982 Printed in Japan

これをBibTeXデータベースで書くと次のようになります.

@book{iwanamiai,
    author = {白井 良明 and 辻井 潤一},
    title = {人工知能},
    publisher = {岩波書店},
    year = 1982,
    volume = {情報科学22},
    series = {岩波講座},
    edition = {(第7回配本)},
    month = {April},
}

「岩波講座」はシリーズ名ですからseriesに, 「情報科学22」は第22巻の意味ですからvolumeに, 「(第7回配本)」は第7刷と近い意味ですからeditionにというように, その要素の意味していることから論理的に分類することができるようになっています. このように分類した各要素がどのように出力されるかはBibTeXが自動的に決定してくれるので, もう「何を」「どの順に」「どのような書式で」書くかというような物理的な問題に悩まされなくてすみます.

このように文献の著者名,タイトル,出版年,出版社などの情報を論理的なレベルで分類しておくことの重要さはいうまでもありませんし, 管理を論理的なレベルで行うことによって, 自分が自分の文書を読む読者に与えなければならない情報が何かをはっきりと意識できるようになります. このような面でも BibTeXを利用した場合の効用は大きいのです.

BibTeXを使う理由にはここまでで説明したこと以外にも,たとえばエキスパートみたいでカッコイイというようなミーハーな理由から, プリンセスメーカー(古い?)だけでは飽きたらず,現在はデータベースを育てているというような特殊な事情までいろいろある(?)のですが, ここまで読破した人は,もう「なぜ昨日までの私はBibTeXを使っていなかったのだろう」という自責の念すら感じ, 一刻も早くBibTeXを使い始めたいという強い思いに背中を押されるような気分に違いありません. 急いで(しかし慎重に)次節以降を読んで,早々にBibTeXを使い始めてください.

jBibTeXを利用する場合の.texの書き方

BibTeXを利用して参考文献管理を行う場合,TeXソースの方には次のように2行書いておくだけです.

\bibliographystyle{jplain}
\bibliography{articles}

ここでjplainは文献一覧や\citeで参照された際にどんな形式で出力されるかを決定するスタイルの指定です. jplainは最もシンプルなスタイルで,一覧の方は50音またはアルファベット順に並べられ, ラベルは[1]のように数字で表示されます. 他にもいくつかのスタイルが標準で装備されていますが, 普通はjplainだけを使っていればOKです. また,\bibliographyの引数に与えているarticlesはjBibTeXを利用して作る文献データベースのファイル名です. ここでは,articles.bibというファイル名で文献データベースを作成することを想定しています. データベースが1枚のファイルで大きくなりすぎるのが嫌な人は用途別に複数のファイルを使うというようなことも可能です. 例えば論文はarticles.bibに,書籍はbooks.bibにわけておくというような使い方もいいかも知れません. 複数のファイルを使う場合は次のようにコンマで区切って指定します.

\bibliographystyle{jplain}
\bibliography{articles, books}

文献データベースの作り方

ここがBibTeXを運用する上でもっとも重要なポイントです. 先に「なぜBibTeXを使うのか」で説明したようにBibTeXを使うことの意義については疑う余地はありません. しかし,BibTeXを単独で運用するには非常に大きな何点があるのです. それはデータベースの作り方がけっこう難しく, かなりの頻度でマニュアルやTeXの参考書など参照しながらデータベースを作らなければならなくなるということです. 例えば先に次のようなデータベースの例を出しましたが,このようなフォーマットを暗記していられないでしょう.

@book{iwanamiai,
    author = {白井 良明 and 辻井 潤一},
    title = {人工知能},
    publisher = {岩波書店},
    year = 1982,
    volume = {情報科学22},
    series = {岩波講座},
    edition = {(第7回配本)},
    month = {April}
}

しかし,心配にはおよびません. なぜならEmacsのBibTeXモードを使うことで全てが解決するからです. EmacsのBibTeXモードを利用してデータベースを作成すれば,覚えなければならないことは,ほんの少しです.

まず,Emacsで新規にarticles.bibを開いてみてください. Emacsのモード表示がBibTeXになったはずです. そしてメニューバーには新しくEntry-TypesとBibTeX-Editの2つのメニューが追加されていると思います. 試しに上の例を入力してみましょう. メニューEntry-Typesからbookを選んでください. すると次のようなテキストが挿入されます.

@Book{,
  ALTauthor =    {},
  ALTeditor =    {},
  title =        {},
  publisher =    {},
  year =         {},
  OPTkey =       {},
  OPTvolume =    {},
  OPTnumber =    {},
  OPTseries =    {},
  OPTaddress =   {},
  OPTedition =   {},
  OPTmonth =     {},
  OPTnote =      {},
  OPTannote =    {}
}

これを次のように書き換えます.

@Book{iwanamiai,
  ALTauthor =    {白井 良明 and 辻井 潤一},
  ALTeditor =    {},
  title =        {人工知能},
  publisher =    {岩波書店},
  year =         {1982},
  OPTkey =       {},
  OPTvolume =    {情報科学22},
  OPTnumber =    {},
  OPTseries =    {岩波講座},
  OPTaddress =   {},
  OPTedition =   {(第7回配本)},
  OPTmonth =     {April},
  OPTnote =      {},
  OPTannote =    {}
}

書き換え終わったらC-c C-cとタイプしてください. するとブレースの中が空のものは取り除かれて,先のデータベースの例と同じ状態になります. ここで@Book{のうしろのiwanamiaiが\cite{}で参照する際のラベルになります. ラベルをうっかり書き忘れて(あるいはわざと書かずに)C-c C-cすると, ミニバッファにラベルを入力するようにプロンプトが出ます. このときデフォルトのラベルが表示されて,上記の例だとデフォルトラベルは「良明82」です. すなわちEmacsのBibTeXモードが選ぶデフォルトのラベルは最初の著者の名前と出版年の下2桁をつないだ文字列になります. これをそのままラベルとして採用してもよいのですが,アルファベットの方が何かと便利な場合が多いので, sirai82のようなラベルの付け方が典型的でしょう.

入力しなければならない項目と無理に入力しなくてもよい項目

ブレースの中にデータを記入していく際に気をつけなければならないことがいくつかありますので説明しておきます. 先ずはALT(オルタネイティブ)とOPT(オプション)です.

C-c C-cする前とした後の状態が異なる項目がいくつかあることに気がついたでしょうか. 例えばC-c C-cする前はALTauthorという項目だったものが, C-c C-cすると先頭のALTがとれてauthorになっています. 同じように先頭のOPTがとれている項目もいくつかあります. 実はこのALTとOPTはデータベースを作成するユーザーにヒントを与えるために付加されているもので, ALTはどちらか一方を入力するべき項目,OPTは必要なければ入力しなくてもよい項目を示していま す.

例えばALTauthorALTeditorはどちらか一方だけが入力できる項目です. 普通は著者名をALTauthorの方に書いておけばよいですが, 辞典などのように著者が20人いて「金田一○○監修」のような文献の場合, ALTeditorの方に「金田一○○」だけを書くというように使い分けます. また,OPTで始まる項目は必要と思われる最低限のものを書いておけばよいと思います. 最初のうちはがんばってできるだけたくさん書こうとしますが,たくさん書いてもあまり意義深い結果にはなりません. 先の例ではOPTvolumeに「情報科学22」とか OPTseriesに「岩波講座」など几帳面に書きましたが普通は書かなくていいでしょう. 書籍(Book)は,著者名か編集社名のどちらかとタイトル,出版社,出版年が特定できれば十分です.

いろいろなタイプを適切に使い分ける

先の例では,書籍をデータベースに登録したわけですが,書籍の枠にはまらない出版物(あるいは非出版物)もあります. その代表例が論文です. 書籍では出版社は必ず書かなければならない項目でしたが,論文の場合,ふつう出版社というものが存在していません. そのかわりとしては学会名や会誌名を記載することになるでしょう. ためしに論文もデータベースに登録してみましょう. Entry-TypesメニューからArticle in Journalを選んでください. すると次のようなテキストが挿入されます.

@Article{,
  author =       {},
  title =        {},
  journal =      {},
  year =         {},
  OPTkey =       {},
  OPTvolume =    {},
  OPTnumber =    {},
  OPTpages =     {},
  OPTmonth =     {},
  OPTnote =      {},
  OPTannote =    {}
}

項目の入力は先の書籍の場合とほとんど同じです. 次のように入力してC-c C-cを押してください.

@Article{yokoo96,
  author =       {横尾 真 and 北村 泰彦},
  title =        {淘汰を用いたマルチエージェント実時間探索の高速化:
        協調探索への競争の導入},
  journal =      {コンピュータソフトウェア},
  year =         {1996},
  OPTkey =       {},
  OPTvolume =    {},
  OPTnumber =    {},
  OPTpages =     {},
  OPTmonth =     {},
  OPTnote =      {},
  OPTannote =    {}
}

ここまでの説明で(細かいことは除いて) BibTeXデータベースをだいたいどのように作成していけばよいか理解できたと思います. BibTeXデータベースに登録できるカテゴリとしてはここで紹介した書籍(Book)や論文(Article)のほかに, 修士論文(Masterthesis)や技術文書(Manual)などがあります. そして,正しいカテゴリを選んでいれば,わりとすんなり項目を埋めることができますが, 間違ったカテゴリを選んでいると「この項目には何を書けばいいの?」という状態になってしまいます. 例えば修士論文カテゴリでは必須項目として学校名を求められるようになっています. 細かな部分については,ここで全てを説明することはできませんので,TeXの参考書を読んでみてください.

TeXソースからの参照の仕方

TeXソースの方の\cite{}の書き方はBibTeXを使わずに thebibliography環境を使って書いた場合と全く同じです. 例えば先の例の人工知能の本を参照したい場合は\cite{iwanamiai}, 論文を参照したい場合は\cite{yokoo96}とします.

また,明示的に\cite{}で参照しないけど, リストには載せておきたいという文献がある場合には文書のどこかに\nocite{}コマンドを使って書いておきます. 例えば先の論文をリストに載せておきたい場合,\nocite{yokoo96}のように書いておきます. 特殊な例として,\nocite{*}と書いておくとデータベース中の全ての文献がリストに載ります.

BibTeXを使った文書をタイプセットする手順

参考文献リストの作成にBibTeXを利用した場合,ソースをタイプセットする手順がいつもと少し違います. BibTeXを使わない場合はplatexを何回かかけるだけだったのですが, BibTeXを使った場合は, platexjbibtexplatexplatexの順に合計4回処理を行う必要があります. 例えばTeXソースがsample.texだった場合,次のように処理します.

$ platex sample
$ jbibtex sample
$ platex sample
$ platex sample

ここで2番目のjbibtexで処理するときも対象はsampleであることに注意してください. .bibファイルを処理するわけではありません. BibTeXデータベースファイルはarticles.bibであってもこのファイルは直接は1度も指定されません. このファイルはTeXソースファイル中の\bibliography{articles}という記述から (正確には,この記述によって書き出される.auxファイルの記述から)間接的に参照されるようになっています. jbibtexが処理するファイルは実はsample.auxなのです (ただしjbibtex sample.auxのようにサフィックスをつけてはいけません. 必ずサフィックスは省略してjbibtex sampleとしてください).

jbibtexは毎回処理する必要はありません. TeXソース中で参照している参考文献が増えたり減ったりしたときだけかければOKです.

データを記入する際の注意点

BibTeXデータベースに文献を登録する際に, authorフィールドとtitleフィールドには独特のルールがあるので注意して記入しなければなりません.

authorフィールド

ここまでにいくつかの例を挙げているのですでに気がついていると思いますが, authorフィールドに人名を書く場合には姓と名をスペースで区切って書き, 複数の人名を書く場合は間をandでつなぐ必要があります. 次の例を参考にしてください.

  ALTauthor =    {白井 良明 and 辻井 潤一},

もちろんこのままが出力されるわけではありません. BibTeXが自動的に書式を整えてくれます. 実際にはjplaneだと「白井良明,辻井潤一」のようにタイプセットされます. また,次のようにand othersと書いておくと「白井良明,辻井潤一ほか」となります.

  ALTauthor =    {白井 良明 and 辻井 潤一 and others},

要するに,最終的なタイプセット結果はBibTeXが決めるので, ここでの指定はどの部分が姓でどの部分が名であるかをBibTeXに教えるために行われるものだということを理解しておいてください.

また,次の2通りの書き方はどちらも同じ結果になります.

  ALTauthor =    {Knuth, Donald E.}
  ALTauthor =    {Donald E. Knuth}

titleフィールド

titleで注意すべきことは英語のタイトルの場合, 単語の大文字・小文字をBibTeXが決定するということです(日本語の場合は影響がないので気にする必要はありません). 一般にタイトル中の単語は,冠詞,前置詞,接続詞は全て小文字で, それ以外のものは頭文字だけを大文字で始めます. ただし文頭は冠詞や前置詞でも大文字で始めます. 次の例を参考にしてください.

  title =        {Distributed Agent Naming Service}

しかし,このままではFORTRANとかUNIXみたいに全て大文字でタイプセットして欲しい場合に困ってしまいます. そのような場合には,この部分は大文字・小文字の変換をしてほしくないということをBibTeXに教えるために, 次のように{}でくくっておきます.

  title =        {{KQML} --- A Language and Protocol for Knowledge and
        Information Exchange}
  title =        {An Overview of {KQML}: A Knowledge Query and
        Manipulation Language},

ここまで読めばとりあえずBibTeXで参考文献データベースを作って運用していける知識がついたでしょう(?). さらに詳細なことが知りたい場合は,TeXの参考書[3][4]を読んでください.

[3] 中野賢: 日本語LaTeX2eブック, 1997, アスキー, pp.256--257
[4] 乙部巌己, 江口庄英: pLaTeX2e for WINDOWS Another Manual,
    Vol.2 Extended Kit, 1997, ソフトバンク, pp.83--105

また,カテゴリーの決め方については,BibTeX:カテゴリーの決め方をご参照ください.


はたいたかし(連絡先はこちら
1998/10/04 初版
2004/09/05 訂
トップページに戻る