Yamamoto's Laboratory
練習
参考文献処理
コンピューター LaTeX 参考文献処理

LaTeX参考文献処理(BibTeX)文献データベースの作成と参照方法

LaTeX では文献参照に BibTeX が使われます.その文献データベースの作成方法と参照方法について説明します.

目次


はじめに

論文や報告書などの論理が重んじられる文章では,「正確」かつ「分かりやすく」記述することが求められます.しばしば,これらの要求はトレードオフの関係になります.正確に書こうとすると,文書が長くなり分かり難くなります.そこで,様々な文書作成テクニックを使い,この相反する要求に答えます.そのひとつに「文献参照」があります.具体例は,論文や報告書の最後にまとめられている「参考文献」です.これを使うと,そこに記述されている詳細はこの文献を見てね —と意思表示ができます.WEBページのリンクのようなものです.

LaTeX は,この文献参照がとても良く出来ています.文献データベース (テキストファイル) を作り,本文中でそれを呼び出すだけです.すると,そこに番号 (例:[1]) がふられ,文書の最後に参照文献のリストが書き出されます.短時間で報告書を作成することの多い,私にとっては無くてなならない機能です,「Word を使え」という人には,笑っちゃいますね.

文献データベース

作成

LaTeXでは,参考文献を示すために,しばしば bibtex が使われます.これを使うためには,データベースが必要になります.通常の文書ではさまざまな文献が参照されるので,bibtexでは文献の種類を示してデータベースを作成します.表1に,BibTeXで作成する文献データベースを示します.文献の種類に応じたデータ項目を書きます.記述をさけることができない必須項目と,記述しなくてもよい任意項目があります.

BibTeX の文献データベースの内容
文献種類 bibtex 必須項目 (エントリー) 任意項目 (エントリー)
学術論文 @article auther, title, journal year volume, number, pages, month, note
博士論文 @phdthesis author, title, school, year type, address, month, note
修士論文 @mastersthesis author, title, school, year type, address, month, note
プロシーディングス @proceedings title, year editor, volume, number, series, address, month, organization, publisher, note
プロシーディングスの一部 @inproceedings author, title, booktitle, year editor, volume, number, series, pages, address, month, organization, publisher, note
会議録 @conference author, title, booktitle, year editor, volume, number, series, pages, address, month, organization, publisher, note
書籍 @book author または editor, title, publisher, year volume, number, series, address, edition, month, note
小冊子 @booklet title author, howpublished, address, month, year, note
書籍の一部 @inbook author または editor, title, chapter または pages, publisher, year volume, number, series, type, address, edition, month, year
書籍の一部(表題あり) @incollection author, title, booktitle, publisher, year editor, volume, number, series, type, chapter, pages, address, edition, month, note
マニュアル @manual title author, organization, address, edition, month, year, note
技術報告書 @techreport author, title, institution, year type, number, address, month, note
未発表 @unpublished author, title, note month, year
その他 @misc なし author, title, howpublished, month, year, note

この表やいろいろものを参考に,文献データベースファイルを作成します.文献データベースは,以下のように記述します.

@文献種類{
文献参照名,
author = "著者",
title = "タイトル",
publisher = "出版社",
year = "出版年",
volume = "",
series = "シリーズ名"
}

ひとつのファイルに,複数のデータを記述可能です.ファイルが大きくなりすぎた場合には,カテゴリごとにファイルを分割することも可能です.文献データベースファイルは,bibという拡張子を付けて保存します.私が作成した文献データベース(reference.bib)を参考に載せます.

保管場所

強く推奨

TeX Live の場合,文献データベースファイル (*.bib) の保管場所は以下を強く推奨します.

文献データファイル(*.bib)を格納するディレクトリー 使用単位
Linux の場合
 ~/texmf/pbibtex/bib/ 個人
 /usr/local/texlive/texmf-local/pbibtex/bib/ グループ
Windows の場合
 C:/Users/ユーザー名/texmf/pbibtex/bib/ 個人
 C:/texlive/texmf-local/tex/platex/ グループ

一般事項

文献データベースファイル (*.bib) は,pbibtex のサーチパスから決まります.サーチパスは,環境変数 BIBINPUTS で指定されます.この環境変数の値は,

$ kpsewhich -var-value BIBINPUTS.pbibtex

で調べることができます.私の環境変数 BIBINPUTS.pbibtex の値は,次のとおりです.

.:{
/home/yamamoto/.texlive2015/texmf-config,
/home/yamamoto/.texlive2015/texmf-var,
/home/yamamoto/texmf,
!!/usr/local/texlive/2015/texmf-config,
!!/usr/local/texlive/2015/texmf-var,
!!/usr/local/texlive/texmf-local,
!!/usr/local/texlive/2015/texmf-dist
}/{pbibtex,bibtex}/bib//

先頭に二重感嘆符 「!!」 があるディレクトリーは,デフォルトでは検索しません.後述する方法で,ファイル「ls-R」をアップデートすると,検索します.また,パスの最後が「//」で終わっているものは,再帰的にサブディレクトリーも検索対象になります.

したがって,検索パスはカレントディレクトリーと以下の表のとおりになります.カレントディレクトリーは,ソースファイル(*.tex)のある場所です.再帰的に検索は行わないので,文献データベースをサブディレクトリーに入れる場合には,そのソースファイル(*.tex)へのカレントディレクトリーからのパスを記述する必要があります.

カレントディレクトリー以外のパス.「~」は,ユーザーのホームディレクトリーを表しています.
検索パス
~/.texlive2015/texmf-config/{pbibtex,bibtex}/bib/
~/.texlive2015/texmf-var/{pbibtex,bibtex}/bib/
~/texmf/{pbibtex,bibtex}/bib/

これらはユーザーのディレクトリーなので,複数のユーザーが使用しているPCで,同じ文献データベースを利用する場合は不向きです.この場合は,環境変数 BIBINPUTS が示すディレクトリー「/usr/local/texlive/texmf-local/bibtex/bib/」を使います.これは再帰的に検索されるので,サブディレクトリーを作ることもできます.環境変数 BIBINPUTS が示すいくつかのディレクトリー「/usr/local/texlive/2015/...」に保管することも可能ですが,それらの場所に保管することはお勧めしません.TeX Live のバージョンアップに伴い,検索パスからはずレスことになるからです.

サーチしないディレクトリー指定がある(例:/usr/local/texlive/texmf-local/bibtex/bib)にファイルを置くこともできます.そこにファイルを保管した場合には,ルートになり,コマンド「mktexlsr」を実行します.理由は分かりませんが「$sudo mktexlsr」ではだめです.

$ sudo su
# mktexlsr

筆者の場合

筆者の場合は,以下の場所に文献データベースファイル(*.bib)を保管しています.

  • 通常のドキュメントに使うデータベースファイルは,「~/texmf/bibtex/bib/」です.
  • 複数のユーザーでドキュメントを共有する場合には,LaTeXのソースファイル(*.tex)があるディレクトリーにサブディレクトリーを作り,そこに保管します.

LaTeX文章へ反映

LaTeXの本文中で,参考文献として示したい場所に「\cite{文献参照名}」を書きます.そこに,括弧で囲まれて文献番号が書かれます.実体と参照番号が離れないように「~\cite{文献参照名}」とするのが作法のようです.そして,LaTeX文章中の参考文献のリストを載せたい場所に,以下のように書きます.通常は,文章の最後の方になります.

\bibliographystyle{junsrt}
\bibliography{文献データベースファイル名(.bibはつけない)}

junsrt を指定することで,参考文献は引用順に並びます.

また,次のようにカンマ区切りで,複数の文献データベースファイルを指定することも可能です.ただし,カンマの後に空白を入れることはできません.

\bibliography{CatDB,DogDB,RabbitDB,MouseDB}

ここで示した方法の他に,いろいろなオプションやテクニックがあります.気に入らない点があれば,自分で調べてみるのがよいでしょう.

コンパイル

例えば,「hoge.tex」という LaTeX の文書で文献データベースを使う場合について説明します.文献データのファイルは,LaTeX のソースの中では「\bibliography{文献データベースファイル名}」として取り込まれます,このような文書では,以下の手順により,文献データが反映された dvi ファイルを作ることができます.

  1. 最初は,通常の platex によるコンパイル
    $ platex  hoge.tex
  2. 次は,BibTexによる処理をします.TeX Live とそれ以前ではコマンドが異なります.TeX Live の場合のコマンドは「pbibtex」,それ以前は「jbibtex」です.
    $ pbibtex hoge        TeX Live の場合
    $ jbibtex hoge        TeX Live 以前の場合
  3. 最後に,もう一度,platex によるコンパイル
    $ platex  hoge.tex
    これで,参照文献ファイル「hoge.bbl」ができあがります.これはテキストファイルで,参照文献の一覧が記述されています.同時に作成される「hoge.blg」はログファイルです.

面倒なことですが,「*.tex」は二回のコンパイルが必要になります.

様々なテクニック

エントリーの呼び出し (usebib)

usebib package を使うと,データベース (bib ファイル) からエントリーを呼び出すことができます.LaTeX 中に,「\usebibentry{hoge}{title}」と 記載すると,文献 hoge のタイトルが表示されます.もちろん,作者 (auther) や雑誌名 (journal),その他を表示することができます.

プリアンブル

TeX Live の場合は,インストール作業は不要です.usebib 使うには,プリアンブルに

\usepackage{usebib}
\bibinput{bibファイルへのパス(.bib無し)}

を記述します.複数の bib ファイルがある場合は,「\bibinput{bibファイル}」を複数記述します.エントリーが表示されない場合は,\bibinputの前に, \newbibfield{エントリー}を書きます.

本文

文献のエントリーを書き出したい場所に以下を記述します.

\usebibentry{文献参照名}{エントリー}

ページ作成情報

参考資料

  1. 奥村晴彦, LaTeX2e 美文書作成入門, 改訂第3版, 技術評論社, ISBN4-7741-1940-7

更新履歴

2006年頃 ページの新規作成
2015年04月11日 TeX Live への対応と出力ファイルの説明の追加
2016年01月31日 「保管場所」を記載.文書の体裁の修正.


no counter