情報建築学って何さ? このページをアンテナに追加 RSSフィード

2010-01-07

初心者のための Emacs と YaTeX (+RefTeX) を使った文書作成のチュートリアル -BibTeX編

論文作成にあたって,本文中での文献参照や巻末の参考文献リストは不可欠な要素です.

参考文献を作成したり,文中へ参考文献を挿入する作業は面倒なものです.

しかし,BibTeX という文献管理システムと,Emacs で使用できる RefTeX-mode を用いることで,手軽に参照番号の挿入や文献管理ができるようになります.

ここでは,BibTeX と RefTeX-mode を用いた,文中への参照番号の挿入方法と,参考文献の一元管理について解説します.


一般的な参考文献リストの作成と文中への参照番号の挿入

TeX では thebibliography 環境を使用することで,参考文献リストを作成することができます.

この thebibliography 環境内では bibitem コマンドを使用することで,文献リストを列挙できます.

サンプルを以下に示します.


\documentclass{jsarticle}
\title{初心者のための Emacs と Ya\TeX (+Ref\TeX ) を使った文書作成のチュートリアル --Bib\TeX}
\author{id:ckazu}
\date{\today}

\begin{document}
\maketitle

\section{\LaTeX の書籍}
\LaTeX を詳しく知りたいという場合にはKnuthによる文
献~\cite{knuth86,knuth79}や,日本語で書かれた奥村先生によ
る文献~\cite{奥村91}などを参照すると良いでしょう.

\begin{thebibliography}{9}
 \bibitem{knuth79}
         D.E.~Knuth.
         \newblock {\em {TEX and METAFONT: New directions in typesetting}}.
         \newblock American Mathematical Society Boston, MA, USA, 1979.
 \bibitem{knuth86}
         D.E.~Knuth, D.~Bibby, and I.~Makai.
         \newblock {\em {The TEXbook}}.
         \newblock Addison-Wesley Reading, MA, 1986.
 \bibitem{奥村91}
         奥村晴彦.
         \newblock {LATEX 美文書作成入門}.
         \newblock 技術評論社, 1991.
\end{thebibliography}

\end{document}

本文中から文献を参照する際には,cite コマンドを使用します.

\cite{hoge} などとすると,文献リストの中の \bibitem{hoge} とした文献を参照することができます.

cite コマンドは section 型コマンドですので,C-c s citeとすることで補完が可能です.

しかし,RefTeX-mode というさらに便利なものがありますので,そちらを使用することをお勧めします.

この RefTeX-mode については,後述します.


BibTeX の利用

投稿論文学位論文などになると,数十件の論文を参照することになります.

ですから,前述の方法は数件の文献を参照するだけなら問題ありませんが,数が多くなった場合に少々面倒です.

また,参照した文献は,別の文書でも参照する可能性が高いでしょう.

そのような場合に,一々コピペして来たり,リストを作り直したりするのは二度手間になりますし,同じ文献なのに表記の異なった文献情報になってしまう可能性もあります.

したがって,文献リストは別のファイルで一元管理する方法をとる方が良いでしょう.

そのための便利な仕組みとして,BibTeX があります.


BibTeX では,文献情報を hoge.bib などとしたファイルに個別に収録しておきます.

この bib ファイルを,TeX 文書中から \bibliography{references} として参照することで,thebibliography 環境によって文献を明示的に記述しなくても参照が可能となります.

具体的には,次のようにします.

\documentclass{jsarticle}
\title{初心者のための Emacs と Ya\TeX (+Ref\TeX ) を使った文書作成のチュートリアル --Bib\TeX}
\author{id:ckazu}
\date{\today}

\begin{document}
\maketitle

\section{\LaTeX の書籍}
\LaTeX を詳しく知りたいという場合にはKnuthによる文
献~\cite{knuth1986texbook,knuth1979tex}や,日本語で書かれた奥村先生によ
る文献~\cite{奥村1991latex}などを参照すると良いでしょう.

\bibliographystyle{jplain}
\bibliography{references}

\end{document}

大分すっきりしました.

\bibliographystyle{jplain}

は,文献リストのスタイルを指定しています.

jplain は文献リストを[1][2]..[99]のように,数字で表示します.


ここを例えば,junsrt とすると,文書中に出現した順に番号付けされ,文献リストが並びます.

これ以外のスタイルでは,著者名をアルファベット順に並べた文献リストが生成されます.


また,jalpha とすると,[KBM86][Knu79][奥村91]などのように,著者名と西暦を組み合わせたスタイルになります.

beamer や prosper などを使用してプレゼンテーションに用いるスライドを作成する場合などは,参考文献が [1] や [2] などの番号では不都合なので,著者名と西暦のスタイルを使用する方が良いでしょう.

ただ,アルファベットの3文字分を採用する形なので,少々判読性に欠けます.

そこで,私は [Knuth79] などとしてくれる,人工知能学会 (http://www.ai-gakkai.or.jp/jsai/journal/download.html) のスタイル (jsai.bst) を流用しています.



\bibliography{references}

は,文献情報を記述した,bib ファイルを指定します.

ここでは,references.bib という文献リストを指定しています.

拡張子の bib は必要ありません.


さて,文献情報を記述した bib ファイルはどのようなものでしょうか.

以下に,今回使用した references.bib を示します.


@book{knuth1986texbook,
  title={{The TEXbook}},
  author={Knuth, D.E. and Bibby, D. and Makai, I.},
  year={1986},
  publisher={Addison-Wesley Reading, MA}
}
@book{knuth1979tex,
  title={{TEX and METAFONT: New directions in typesetting}},
  author={Knuth, D.E.},
  year={1979},
  publisher={American Mathematical Society Boston, MA, USA}
}
@book{奥村1991latex,
  title={{LATEX 美文書作成入門}},
  author={奥村晴彦},
  year={1991},
  publisher={技術評論社}
}
@misc{中野1998日本語,
  title={{日本語 LATEX 2$\varepsilon$ ブック}},
  author={中野賢},
  year={1998},
  publisher={アスキー}
}

BibTeX の書式には様々な種類があり,また,BibTeX ファイルを作成するための bibtex-mode も用意されているのですが,このような文献リストを一々自分で作成するのは面倒です.

では,どうやって文献リストを作成するのかというと,Web に頼ることにします.


文献検索サービスを利用した BibTeX リストの作成

文献情報を自分で作成するのは面倒ですし,個人的には間違って入力しちゃいそうなので嫌です.極力やりたくありません.

さて,大学で研究に取り組んでいる場合,どうやって過去の文献を調べているでしょうか.

現在は,論文集や学会誌を中心に探すということは少ないのではないかと思われます.

大体,WWW で検索して探してくることが多いのではないでしょうか.


代表的な文献検索サービスがいくつかありますが,ほとんどのサービスで BibTeX の文献情報も掲載してくれています.

ここでは,google scholar の検索結果から BibTeX の文献情報を取得してみましょう.


google scholar (http://scholar.google.com/schhp?hl=ja) ではデフォルトで文献情報を表示しない設定になっていますので,まずはその設定を変更します.

検索ボタンの右にある「scholar 設定」から,設定フォームに移動します.


f:id:ckazu:20100107225824p:image


一番下にある「文献管理」のラジオボックスを次のように変更します.


f:id:ckazu:20100107225825p:image


これで,google scholar で検索をすると,その検索結果に BibTeX の文献情報へのリンクが表示されるようになります.


f:id:ckazu:20100107225826p:image


実際に,クリックしてみると,次のように BibTeX の文献情報が表示されます.


f:id:ckazu:20100107225827p:image


これを,bib ファイルにコピペします.


f:id:ckazu:20100108073242p:image


このようにして,手軽に BibTeX の文献情報を取得することができますから,論文を検索して読む際にその都度 bib ファイルに追加しておくと良いと思います.

そうすれば,いざ論文を書く際に,もう一度文献情報を調べるといった二度手間も防ぐことができます.


RefTeX-mode の利用

さて,BibTeX の概念も分かり,文献リストも作成できました.

では,実際に文書中から文献情報を参照してみましょう.


これまでやってきたのは,極力楽をするためです.

ですから,もちろん \cite{knuth1979tex} などのようにコマンドを手打ちする必要はありません.

BibTeX の文献参照をより効率的に利用するために,RefTeX-mode を使用します.

Emacs のステータスバーに Ref と表示されていれば RefTeX-mode に移行済みです.


f:id:ckazu:20100107225830p:image


もし,RefTeX-mode になっていなければ,M-x reftex-mode として明示的に移行できます.

ただ,毎回この作業をするのは面倒ですので,tex ファイルを開いた場合に自動的に RefTeX-mode に移項するように設定することをお勧めします.

この .emacs の設定は http://d.hatena.ne.jp/ckazu/20090413/1239549131 に書いてあります.


では,RefTeX-mode で文献の参照をしてみます.

C-c [ とします.

すると,

Regex { && Regex...}: []:

のような表示になります.


f:id:ckazu:20100107225828p:image


※ もしうまく行かない場合,emacs再起動してみて下さい.


ここでは,文献リストの全文検索ができます.

目的の著者名やタイトル,出版年などの文字列を入力して文献リストを検索できます.

なお,ここでは,正規表現を使用することができます.


f:id:ckazu:20100107225829p:image


検索にマッチしたものがリストアップされますので,目的の文献があれば選択します.

すると,文中のカーソル位置に自動的に \cite{hoge} などとして挿入されます.


このようにして,論文や書籍を読む毎に bib ファイルに文献リストを溜めておき,いざ執筆する際にはその文献リストを検索することで容易に参照することができます.

また,文献リストは bib ファイルとして存在しますから,別の文書を執筆する際にも同じ bib ファイルを指定すれば良いことになります.


タイプセット

では,最後に BibTeX による参考文献を付加した文書を作成してみます.

単にタイプセットをするだけでは,参考文献が挿入されません.

一度タイプセットした後に,C-c t b として bib ファイルから参考文献の情報を作成します.

これは,コマンドラインから

$ jbibtex hoge

としたのと同様です.

この操作によって,参考文献のリストが作成されます.

具体的には,bbl ファイルがその実体です.

bbl ファイルの中身を覗くと,このエントリの最初に出てきた,thebibliography 環境を使用した文献リストが作成されていることが分かると思います。


f:id:ckazu:20100108073241p:image


BibTeX でやっていることは,bib ファイルにある文献データベースから必要な文献情報だけを抜き出し,指定されたフォーマットに従って thebibliography 環境とその中の bibitem コマンドを作成することです.


bbl ファイルを作成したら,もう一度タイプセットを行います.

これによって,作成した bbl ファイルからラベルの情報を取得します.

この時点で,巻末の参考文献リストが挿入されます.

しかし,これだけではまだ実際に参照番号が割り当たっていませんから,もう一度タイプセットを行います.

これで,ようやく正しい参照番号が付加されます.


ごちゃごちゃ書きましたが,要するに文献リストを更新したり,文中に新しい文献の参照を追加したり,一時ファイルを削除したりした場合には,C-c t j > C-c t b >C-c t j > C-c t jとしなさいということでした.

platex > jbibtex > platex > platex ということです.


その他

参照番号の段落落ちを防ぐ

文献~\cite{hoge} などとして,段落落ちするのを防ぎましょう.

※ ~ は,空白文字ですが,前後の文字との間に改行を挟まない空白を示します。


複数の参考文献を指定する

複数の参考文献を指定する場合,\cite{hoge1,hoge2} などとすることができます.

このようにすると,[1,2] や [hog98, hog02] などのように,カッコの中に複数の参照番号が併記されます.

これを,YaTeX (RefTeX) で実現するには,次のようにします.

まず,C-c [ で挿入する.

\cite{hoge1} となる.

{hoge1} の中で,再び C-c [ とする.

これで,\cite{hoge1,hoge2} のような参照を記述できます.


すべての参考文献を表示する

BibTeX では,文中で参照した文献のみを参考文献として表示します.

しかし,bib ファイルにある参考文献をすべて表示させたい場合もあるかと思います.

そのような場合には,次の一行を加えることで,すべての文献を表示させることができます.

\nocite{*}


複数の bib ファイルを指定する

目的に応じて,文献リストを分けたいという場合もあるかと思います.

そのような場合は,

\bibliography{list1,list2,list3}

などのようにすることで,複数の bib ファイルを参照できます.

この場合でも,RefTeX-mode はすべての bib ファイルを対象に動作してくれます.


自分で bib ファイルを作製する

文献によっては,Web のサービスでは見つからないようなものもあるでしょう.

そのような場合は,自ら文献情報を作製する必要が生じます.


ですが,ここでは扱いません.

BibTeX の詳細な書式や bibtex-mode の使い方については,以下のサイトに譲ることにします.

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/ckazu/20100107/1262871971
リンク元