雰囲気でBibTeX入門(その1)
(2021/03/06)
— ぜんぜんわからない……雰囲気でLaTeXをいじっている……。
BibTeXを導入したので、自分のような雰囲気でLaTeXを使っている数学系の人のためにも、忘れないうちにメモっておきます。
以下、いくつかの段階に分けて導入していきます。ただし日本語環境でのLaTeXの設定は済んでいるとします(方法はTeXworks/設定 - TeXWikiを見てください)。
環境は次の通りですが、他の環境でもだいたい同じだとは思います:
- OS: Windows10
- TeXディストリビューション: TeX Live 2020
- タイプセット設定: pLaTeX(ptex2pdf) (LuaLaTeXに移行するべき、それはそう)
- 使用エディタ: TeXworks (あとでTeXstudioの話もする)
間違っている箇所やわかりにくい箇所があれば遠慮なく教えてください。
目次
- BibTeXとは?
- とりあえずBibTeXを使って参考文献を出力してみる
- 文献データベースを一つにまとめる
- Latexmkと自動コンパイル(飛ばしてもいい)
- TeXstudioの設定(飛ばしてもいい)
主な参考文献
- 奥村晴彦、黒木裕介。『LaTeX2e美文書作成入門 改訂第7版』、技術評論社、2017。(手元には第7版しかなかったので第7版を引用しています。2020年に改訂第8版が出版されましたが、第8版でもほとんど同じです)
- BibTeX - Ryo Otoguro
- LaTeX参考文献処理(BibTeX)-文献データベースの作成と参照方法-
- BibTeX 使い方 メモ
- [BiBTeX]BibTeX 概要 - 今西衞研究室
- The quick BibTeX guide
- BiBTeXとは - Qiita
- 経済学におけるBibTeXの利用 - Qiita
その他、個別にリンクを付けてあります。
BibTeXとは?
BibTeXとは、LaTeXにおける文献参照のためのツールのこと。
メリット:
- bibファイルに文献のデータを保存しておけば、引用キーを指定するだけで参考文献を自動生成してくれる。よっていちいち手動で文献リストをならべずに済むし、リスト漏れすることもなくなる。
- 著者名やタイトルの情報を意味論的に管理入力できる。よって参考文献を統一した形式で出力でき、指定の形式が変わっても簡単に対応できる。
- 一度つくった参考文献データベースは使いまわるので、LaTeX文書ごとにbibファイルを作成する必要がない。
- etc...
デメリット:
- 自分のようななんちゃってTeXユーザには、設定とか使い方がまるでわからん。
さらに言えばBibTeXは欧文専用であり、日本語で利用するためにはpBibTeXの設定をする必要がある(以前はjBibTeXというのが使われていたらしい)。このページでは、自分がpBibTeXを導入した方法を解説する。以下、BibTeXといえばpBibTeXのことを指すものとする。
なおBibTeXの後続としてBibLaTeXが開発されていて、Unicode対応であったり、BibTeXよりも自由に文献表示のカスタマイズができたりする。しかし現状では和文に対応していない(参考:biblatexとBibTeX - 武田史郎のウェブログ)。
とりあえずBibTeXを使って参考文献を出力してみる
BibTeXを使うために必要なのは、bibファイル(文献ファイル)とbstファイル(文献スタイルファイル)の二つ。これらはいずれもただのテキストファイルなので、いくらでも作れる。これらを処理するための(p)bibtex
はTeXLiveに標準的に入っているので、特に追加で何かをインストールする必要はない。
bstファイルも標準的なものは初めからインストールされているので、今は気にしない。とりあえず日本語用の一番シンプルなjplain.bstを使う。
①まずbibファイルを用意する。メモ帳を開いて、
@Book{Hartshorne:1977,
author = {Robin Hartshorne},
title = {Algebraic Geometry},
series = {Graduate Texts in Mathematics},
volume = {52},
publisher = {Springer-Verlag},
year = {1977},
}
@Book{上野:2005,
author = {上野 健爾},
yomi = {うえの けんじ},
title = {代数幾何},
publisher = {岩波書店},
year = {2005},
}
をコピー&ペーストし、myrefという名前をつけて保存する(ここで文字コードはUTF-8としておく)。メモ帳を閉じて、myref.txtの拡張子を.bibに変更する。
②次にTeXworksで適当なtexファイル(例えばtest.tex)を作って、
%%% test.tex %%%
\documentclass{jsarticle}
\begin{document}
% myref.bib で登録したラベルを参照する
Hartshorne~\cite{Hartshorne:1977}は代数幾何学の定番の教科書である.和書で言えば上野~\cite{上野:2005}がある.
\bibliographystyle{jplain} % jplain.bstの読み込み。参考文献の表示形式を指定する。拡張子はつけない
\bibliography{myref} % myref.bibの読み込み。複数のbibファイルを読み込む場合は {myref,myref2} とスペースを入れないで並べる
\end{document}
と書く。myref.bibをtest.texと同じフォルダ(ディレクトリ)に移動させておく。
③最後にTeXworksでpbibtex
を実行できるように設定する。TeXworksを開いている状態から、編集->設定->タイプセットと進み、「タイプセットの方法」枠内の +
ボタンを押す。「タイプセットの設定をする」ウインドウにて
- 名前: pBibTeX
- プログラム: pbibtex.exe
- 引数: 上から
- -kanji=utf8
- $basename
と記入し、「実行後、PDFを表示する」のチェックを外してから、OKボタンを押す(わからなければTeXworksでBibTeXを扱う - hanzomemoの画像を見てください)。すると「タイプセットの方法」の一覧にpBibTeXが追加されていることが確認できる。$basename
などの意味に関しては、Defining new typesetting toolsを参照してください。
これで準備は完了。
④あとはコンパイルすればよいが、(p)bibtex
を使って参考文献を表示させるためには、このとき少し手間が要る。TeXworks上で、
- LaTeXを実行する(pLaTeX(ptex2pdf)でタイプセットする)
- BibTeXを実行する(タイプセットボタン横のプルダウンからpBibTeXを選んでタイプセットする)
- LaTeXを実行する(タイプセット方法をpLaTeX(ptex2pdf)に戻してタイプセットする)
- LaTeXを実行する(もう一度pLaTeX(ptex2pdf)でタイプセットする)
と実行する(画像とか載せるのめんどうなのでわからなければbibTeXの導入メモ - 生存報告書を参照してください)。やっていることは、
- texファイルを
platex
で処理し、参照情報を含むauxファイルを生成する。pdf上では[?]で表示される - auxファイルを
pbibtex
で処理し、bblファイルを作成する - texファイルにbblファイルを取り込んで
platex
で処理する。pdf上では引用した文献が参考文献に追加されて表示される - もう一度texファイルを
platex
で処理して、相互参照の番号付けを解決する。pdfでは[?]のままだったものが正しく表示される
ということ。これでとりあえずBibTeXが使えているはずで、表示されるpdfには
Hartshorne [1] は代数幾何学の定番の教科書である.和書で言えば上野 [2] がある.
参考文献
[1] Robin Hartshorne. Algebraic Geomtry, Vol. 52 of Graduate Texts in Mathematics. Springer-Verlag, 1977.
[2] 上野健爾. 代数幾何. 岩波書店, 2005.
といった文章が出ているはず。bibファイルの詳しい書き方は、雰囲気でBibTeX入門(その2)を見てください。
とりあえずBibTeXが使えるようになったが、まだまだやっておくことがある。
文献データベースを一つにまとめる
myref.bibに文献情報をどんどん加えていけば、自分だけの文献リストが出来上がってくる。同じmyref.bibを他のtexファイルでも読み込んで使っていきたい。そんなときは、bibファイルを C:\Users\ユーザー名\texmf\bibtex\bib の中に移動させるだけでよい。なければ作る。すなわち
- C:\Users\ユーザー名 を開き、「texmf」という名前のフォルダを作る
- 今作った「texmf」フォルダを開いて、「bibtex」という名前のフォルダを作る
- 今作った「bibtex」フォルダを開いて、「bib」 という名前のフォルダを作る
- 今作った「bib」フォルダを開き、ここにbibファイルを置く
とする。これで、毎回「myref.bibをtexファイルと同じフォルダに置く」をする必要なく、\bibliography{myref}
と書いておけば、ちゃんと C:\Users\ユーザー名\texmf\bibtex\bib にあるmyref.bibを読み込んで使ってくれるようになる。
なお、C:\Users\ユーザー名\texmf という場所は、デフォルトで変数 TEXMFHOME
に入力されている場所で、TeXのシステム更新に影響を受けない。個人のユーザが用意したファイル(ダウンロードしたstyファイルやbibファイルやbstファイルなど)はこの場所に置くのが基本(参考:ユーザがファイルを追加したい場合は(ローカルな追加) - TeXwiki)。
もしシステム全体で共通して用いるのであれば、デフォルトで変数 TEXMFLOCAL
に入力されている C:\texlive\texmf-local 以下の場所に置く。この場合は、TEXMFHOME
に置いたときと違ってtex
が見つけてくれないので、探して読む込んでくれるように一覧表(ls-R)の更新を行う必要がある(一覧表の更新、つまりmktexlsr
の実行についてはstyファイルを置く場所・置いた後にすること - 粗大メモ置き場が参考になる)。しかし、ことbibファイルについては自分用の文献データベースファイルなので、 TEXMFHOME
の場所に置くべきだろう。
もっと違う場所(例えば自前のバックアップフォルダなど)に置いて使いたいときは、環境変数BIBINPUTS
にパスを追加する必要がある。
あたりを参考のこと。
Latexmkと自動コンパイル
BibTeXを使って参考文献を出力するとき、platex
->pbibtex
->platex
->platex
と四回もコンパイルしないといけない。人によっては、これを大変面倒だと思う人がいるかもしれない。
そこでlatexmkというツールを使って、文書を作成するのに必要な回数タイプセットしてくれるように設定する。これはBibTeXやMakeindexなど複数の実行が必要なものに対して役に立つ。なお、latexmkの代替としてllmkというツールも開発されている(参考:llmk プロジェクトが始動しました - ラング・ラグー)。そのほか、ClutTeXという自動化ツールもある(参考:LaTeX処理自動化ツール ClutTeX をリリースした - 雑記帳)。
Latexmkについては
- TeXworks で Latexmk を使えるようにする2つの方法
- latexmk で楽々 TeX タイプセットの薦め(& biblatex+biberで先進的な参考文献処理)
- latexmkの設定 - コンピュータ関係の雑多な記録
- Latexmk - TeX Wiki
- latexmk - TeX学習用リポジトリ
に大体書いてある。
①まずメモ帳で
#!/usr/bin/env perl
$latex = 'platex -synctex=1 -halt-on-error -interaction=nonstopmode -file-line-error %O %S';
$bibtex = 'pbibtex %O %S';
$makeindex = 'mendex %O -o %D %S';
$dvipdf = 'dvipdfmx %O -o %D %S';
$max_repeat = 5;
$pdf_mode = 3;
と書いて、名前を.latexmkrcとし、ファイルの種類を「すべてのファイル」にして保存する。置く場所は、test.texと同じフォルダか、C:\Users\ユーザー名 の中におく。
②次に、TeXworksにおいて、編集->設定->タイプセットと進み、「タイプセットの方法」枠内の +
ボタンを押す。「タイプセットの設定をする」ウインドウにて
- 名前: Latexmk
- プログラム: latexmk
- 引数: 上から
- -pdfdvi
- $fullname
と記入し、「実行後、PDFを表示する」のチェックを入れたまま、OKボタンを押す。すると「タイプセットの方法」の一覧にLatexmkが追加されていることが確認できる。.latexmkrcに書いたことを、引数のところに直接書いておいても良い。
③あとはタイプセットのプルダウンからLatexmkを選択してひとたびタイプセットを実行すれば、必要に応じて自動的にpbibtex
を実行したりplatex
を複数回実行してくれる。
ただし、普通にコンパイルするより時間がかかる場合があるので注意されたい(私はこの点をストレスフルに感じるので、普段は設定していない)。
TeXstudioの設定
TeXstudioについては、y.さんのTeX講習会資料の付録Aを参照のこと。ここに書いてある日本語でLaTeXをする設定は済んでいるとする。
TeXstudioでpbibtex
を実行する操作は、ツール->文献(ショートカットはF8)である。一度コンパイルして、ツール->文献して、再びコンパイル(ビルド&表示)すれば、参考文献が反映される。
TeXstudioでもlatexmkの設定ができる。上の.latexmkrcのファイルは作ってあるとするとき、TeXstudioを開いて
- オプション->TeXstudioの設定 と進む
- コマンドのLatexmkの欄を、
latexmk.exe -pdfdvi %.tex
に変更する - ビルドの「ビルド&表示」の欄のスパナ(レンチ?)アイコンをクリックして、コマンドのリストを上から順に、Latexmk、DviPdf、PDF Viewerになるように追加・並べ替える
とすると、ビルド&表示(ショートカットはデフォルトでF5)すればlatexmkが動いてくれるようになる。