BibTeX と bibtex-mode, reftex-mode の使い方

LaTeX で論文を作成するときに参考文献をどう書いていますか? 毎回毎回 thebibliography 環境を利用して一所懸命に全てを書いていますか? そんなの効率悪すぎます。 そう、もしあなたが Emacs を使っているのであれば、本当に効率が悪すぎるのです。 どうせなら BibTeX を利用して快適に作業しましょう。 :-)

目次

  1. BibTeX って何? 便利なの?
  2. bibtex-mode を利用したデータベースの作成
  3. reftex-mode を利用したデータベースの活用
  4. リンク

BibTeX って何? 便利なの?

参考文献となる論文・書籍群を専用のデータベースに登録しておけば、 LaTeX で論文・レポート等を作成する際に BibTeX 経由でそれを利用する事ができます。 一度データベースを作成してしまえば参考文献の一覧を作成する際の労力がかなり軽減できるので、 LaTeX を頻繁に利用する人にとって BibTeX は (長い目で見れば!) 便利この上ないツールと言えるでしょう。

bibtex-mode を利用したデータベースの作成

まず初めにデータベースを作成しましょう。 以下の書式に従った内容を並べて作成した、.bib という拡張子を持つファイルがそれです。

@文献の種類{その文献を表す一意の文字列,
  必須項目1 =        内容1,
  必須項目2 =        内容2,
  必須項目3 =        内容3,
  必須項目4 =        内容4,
  オプション項目A =  内容A,
  オプション項目B =  内容B
}

Emacs で .bib ファイルを開くと自動的に bibtex-mode になります。 この mode で提供されるコマンド群を使って作業すると楽です (メニューから辿って使えます)。 最低でも以下に出てくるものと、bibtex-next-field (\C-j) 位は覚えておきましょう。 また、必要であれば M-x describe-mode して何が出来るかチェックしておくと良いです。

文献の種類とその識別子

文献の種類には以下等が用意されています。

article

定期刊行物や雑誌に掲載の論文を示します。 bibtex-mode の場合、bibtex-Article (\C-c \C-e \C-a) でテンプレートが入力できます。

数学の場合、オプション項目の month, note 以外は全て記入する場合が多いようです。

book

出版社から発刊された書籍を示します。 bibtex-mode の場合、bibtex-Book (\C-c \C-e b) でテンプレートが入力できます。

数学の場合、オプション項目の month, note 以外は全て記入する場合が多いようです。

inproceedings

学術会報誌に掲載された報告を示します。 bibtex-mode の場合、bibtex-InProceedings (\C-c \C-e \C-p) でテンプレートが入力できます。

必須項目とオプション項目

address
出版社や研究機関、組織の住所。大手出版社なら単に都市を指定すれば良い。
author
論文・書籍の著者名。複数の著者を記述しても良い。
booktitle
部分的に引用した書籍等のタイトル。
edition
第二版 (Second) といった書籍の版。最初の文字は大文字にしておくと良い?
editor
書籍などの編集者名。複数の編集者を記述しても良い。
journal
定期刊行物の名前。
month
出版された月。
note
読者にとって有益なその他の追加情報。ISBN など。
number
シリーズになっている定期刊行物、雑誌、技術報告書の号数。
organization
会議を主催している団体名。
pages
論文などが掲載されているページ範囲。
publisher
出版社名。
series
シリーズ本やセットになった書籍のシリーズ名。
title
論文や書籍のタイトル。
volume
定期刊行物や複数巻がセットになった書籍の巻数。number と併用することが多い。
year
出版された年。

サンプル

Emacs 上で reftex-mode を利用する場合、文献を表す一意の文字列は以下の様に長く覚えにくいものでも問題ありません。

@Article{fuller80:_gener_serial_rings_ii,
  author =       {K. R. Fuller},
  title =        {On Generalization of Serial Rings {II}},
  journal =      {Comm. Algebra},
  year =         1980,
  volume =       8,
  number =       7,
  pages =        {635--661}
}

@Article{erdogdu87:_distr,
  author =       {V. Erdo{\u{g}}du},
  title =        {Distributive modules},
  journal =      {Canad. Math. Bull.},
  year =         1987,
  volume =       30,
  number =       2,
  pages =        {248--254}
}

@Book{anderson92:_rings_categ_modul,
  author =       {F. W. Anderson and K. R. Fuller},
  title =        {Rings and Categories of Modules},
  publisher =    {Springer-Verlag},
  year =         1992,
  edition =      {Second},
  address =      {Berlin-New York},
  note =         {ISBN: 3-540-97845-3}
}

bibtex-mode で各エントリーのテンプレートを挿入すると、 オプション項目の先頭には“OPT”が、2 択の項目の先頭には“ALT”が付く場合があります。 これらは、エントリーの各項目を入力し終わった後に bibtex-clean-entry (\C-c \C-c) すると、 必要に応じて整えられます (空の項目が自動的に削除されるなど)。 また、この際に文献を表す一意の文字列が入力されていないと、該当箇所へ自動的に適当な文字列を入力してくれます。

reftex-mode を利用したデータベースの活用

上記の手順で作成した .bib ファイル群…ここでは math.bib, comp.bib としましょう…を、 それを利用したい .tex ファイル…ここでは algebra.tex としましょう…と同じディレクトリにコピーします。 そして次にこの algebra.tex の適当な場所 (参考文献のところ) に以下を書き加えましょう。

\bibliographystyle{plain}
\bibliography{math,comp}

参考文献の項目に日本語がある場合は以下です。

\bibliographystyle{jplain}
\bibliography{math,comp}

これで準備完了です。 後は reftex-mode を有効にして、論文を呼び出したいところで reftex-citation (\C-c [) してみれば良いです。 この際、キーワードを尋ねられますので、論文名や著者名の一部を入力しましょう (正規表現可)。 すると候補の一覧が表示されますので、適当に選択しましょう。

本文中で直接的に参照しない文献を参考文献に載せたい場合は、\nocite を利用しましょう。 これは \cite と同じ書式で利用できます。

上記を含む編集作業が終わったら、実際にコマンドを入力して .dvi ファイルを作成するわけですが、この操作が普段とはちょっと異なります。 具体的には以下の手順です (日本語環境が必要な場合、latex, bibtex の部分をそれぞれ platex, jbibtex とする)。 YaTeX を利用している場合、Emacs 上からこれらの操作を実行できます。

$ latex algebra
$ bibtex algebra
$ latex algebra
$ latex algebra

以上で作業完了です。 旨くいっているか確認してみましょう。

bibliographystyle について

\bibliographystyle の引数によって、参考文献の書式を多少変更できます。 ここでもいくつか紹介しておきます。

unsrt (junsrt)
参照順に記述。項目は [1] の形式。
plain (jplain)
著者名をアルファベット順に記述。項目は [1] の形式。
alpha (jalpha)
著者名をアルファベット順に記述。項目は [著者名の省略形 出版年の下二桁] の形式。

他にも American Mathematical Society による amsplain, amsalpha などがあります。 数学の場合、amsplain を利用するのが無難かもしれません。

reftex-mode を自動的に有効にする

以下 (の適当な行) を ~/.emacs に書いておけば、 標準の LaTeX-mode や AUCTeX, YaTeX などで .tex ファイルを編集する際、自動的に reftex-mode が有効になります。

(add-hook 'latex-mode-hook 'turn-on-reftex) ; with Emacs latex mode
(add-hook 'LaTeX-mode-hook 'turn-on-reftex) ; with AUCTeX LaTeX mode
(add-hook 'yatex-mode-hook 'turn-on-reftex) ; with YaTeX mode

もし比較的新しい reftex-mode 環境を利用しているのであれば、 YaTeX 対策として以下の様にしておくと良いでしょう。 もちろんこの場合、上記 3 行のうち最終行は要りません。

(add-hook 'yatex-mode-hook
          #'(lambda ()
              (reftex-mode 1)
              (define-key reftex-mode-map
                (concat YaTeX-prefix ">") 'YaTeX-comment-region)
              (define-key reftex-mode-map
                (concat YaTeX-prefix "<") 'YaTeX-uncomment-region)))

BibTeX の変わった利用法

上記の手順で作業を済ませると、algebra.tex と同じディレクトリに algebra.bbl というファイルが出来ているはずです。 この内容を利用して algebra.tex に thebibliography 環境で参考文献の一覧を作成することも可能です。

リンク

bibtex (bibtex 入力支援環境) について
http://www.math.s.chiba-u.ac.jp/~matsu/emacs/emacs21/bibtex.html
index.html