BibLaTeXの使い方まとめ

TeXの参考文献管理といえばBibTeXが定番だが,最近ではBibLaTeX+biberというのがあって,BibTeXよりもカスタマイズがしやすいらしい.日本語ドキュメントがほとんどないので,適当に公式マニュアルとStack Exchangeあたりを参考にまとめてみた.

使い方

biberはTeX Live2013から同梱されているらしい.ないならば,CTANあたりかtlmgrを使って適当にインストールする.
使いたいTeXファイルのプリアンブルに以下のように書く.

\usepackage{biblatex} 
\addbibsource{sample.bib} % bibファイルを拡張子つきで書く

\addbibsourceは\bibliographyに対応すると思っておけばよいのだが,拡張子が必要なことに注意

参考文献を表示したいところには

\printbibliography  % 参考文献を表示

と書くだけ.そこまで難しくない.

カスタマイズ

BibTeXにくらべてBibLaTeXはカスタマイズが容易.たいていの変更はスタイルファイルを編集せずとも実行できる.

citeスタイル

デフォルトは[1],[2],... のようなnumericスタイルだが,[Smith13]のようなalphabeticスタイルも簡単に指定できる.

\usepackage[style=alphabetic]{biblatex} % eg., [Smith13]

natbibのようなauthoryearスタイルもある.

\usepackage[style=authoryear]{biblatex} % eg., (Smith et al., 2013)
参考文献リストのスタイル

論文タイトルにダブルクオーテーションをつけたい(取りたい)とか,巻数を太字にしたいとか,ある部分を斜体にしたい(ローマンにしたい)とか,色々なこともできる.\DeclareFieldFormatをプリアンブルに書く.

\DeclareFieldFormat*{volume}{\mkbibbold{#1}} % 巻数を太字にする
\DeclareFieldFormat*{title}{\mkbibquote{#1\adddot}}  % タイトルにダブルクオーテーションをつける
\DeclareFieldFormat[article]{book}{\mkbibemph{#1}}  % article要素のbookを斜体にする

\mkbibquoteはダブルクオーテーションでくくるコマンドで,\adddotはドットが必要ならドットを補うコマンド.なお,publisherとかはfieldではなくlist扱いらしいので,\DeclareListFormatを使う.*1

著者名とタイトルの間の区切り文字をコロンにしたい・コロンを取りたいなどもできる.

\renewcommand{\labelnamepunct}{\addcolon\addspace} % eg., J. Smith: "A great paper."
\renewbibmacro{in:}{} % in: Some journal の "in:" を取る

In: は "in:" という名前のマクロが使われているので,それを空文字列に再定義している.*2

ジャーナル名の短縮

SIAM Journal of Computing -> SIAM J. Comput. みたいな短縮は,BibTeXだとbibファイルにaliasを登録しないとできなかったが,BibLaTeXだとTeXソースから可能.しかも正規表現まで使える.変換規則は\DeclareSourcemapで宣言する.

\DeclareSourcemap{
  \maps[datatype=bibtex, overwrite=true]{
    \map{
       \step[fieldsource=journal, % journalエントリーを変更
             match=\regexp{Journal\sof\sthe\sLondon\sMathematical\sSociety}, %正規表現
             replace={J. London Math. Sci.}] % 正規表現にマッチしたらこれに置き換わる
       \step[fieldsource=journal, 
             match=\regexp{SIAM\sJournal\sof\sDiscrete\sMathematics}, 
             replace={SIAM J. Discrete Math.}] % 別のジャーナル用
    }
  }
}

\mapsが\mapをまとめるためのコマンド.\mapが1つの置換マクロで,\stepが1ステップの置換に相当する.\stepをたくさん書くと置換を次々に行う\mapを定義できる.

*1:エントリーの分類は公式マニュアルを参照

*2:デフォルト以外のスタイルを使っている場合はまた別