数年前からBibtexを使用しているのですが、最近になってWeb of ScienceやScitationから書誌をbibtex形式で出力するのが特に簡単になり、ほぼ週ごとにデータベースが増大しています。これを論文や報告書を書くときに使用しています。
bibtexで準備しているスタイルunsrt.bstを使うと、論文の場合我々が普段見慣れたものとは異なって、
著者1の名 著者1の姓, 著者2の名 著者2の姓,…., and 著者Nの名 著者Nの姓. 題目. 雑誌名, 巻(号):頁, 月 年.
の出力を得ます。bibファイルにすべての情報が保存されていると(Web of Scieneceからの出力は大抵そうなっている)、すべての項目が省略形でなく(例えば、Physical Review Letters)出力され、業績リストだとしても大変長ったらしくなり、論文や報告書、申請書に用いるには不適切です。Physical Revewが提供するスタイルファイルREVTEXでは題目は出力されませんが、すべての著者と雑誌名が省略無しで出力されます。
そこで、最も良くある著者が3名以上の論文の時、
著者1の名イニシャル. 著者1の姓, et al., 省略された雑誌名, 巻 (年) 頁.
つまり私の最近の論文だと、
I. Kakeya et al., Phys. Rev. B 79 (2009) 212503.
となるようにbstファイルをカスタマイズしました。
やることは以下の通り
- 著者が3名以上の時、著者1 et al., とする
- 表示させる項目の並び替え
- 雑誌名の対応
もとにしたbstファイルはエルゼビアが供給するelsart-num.bstです。このbstファイルはunsrt.bstをもとにしていると思われ、初心者にとっていじりやすいです。apsrev.bstは独自の関数を数多く含んでおり、手に負えません。
1. 著者が3名以上の時、”著者1の名イニシャル. 著者1の姓, et al.,” とするために、FUNCTION {format.names}の中身を書き換える
FUNCTION {format.names}
{ 's :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
numnames #3 >
{
#2 'namesleft :=
{ namesleft #0 > }
{ s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=
nameptr #1 >
{ namesleft #1 >
{ ", " * t * }
{ " {\it et~al}." * }
if$
}
't
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
}
{
{ namesleft #0 > }
{ s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=
nameptr #1 >
{ namesleft #1 >
{ ", " * t * }
{ numnames #1 >
{ "" * }
'skip$
if$
t "others" =
{ " et~al." * }
{ ", " * t * }
if$
}
if$
}
't
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
}
if$
}
2. 表示させる項目を”著者, 省略された雑誌名, 巻 (年) 頁.”とするために、FUNCTION {format.vol.num.pages}を変更
FUNCTION {format.vol.num.pages}
{
%SP 2001/01/23
% Add the leading space only if there is a volume
% volume field.or.null
" "
volume empty$
{ pop$ "" }
{ volume bold * }
if$
number empty$
'skip$
{
% "~(" number * ")" * *
volume empty$
{ "there's a number but no volume in " cite$ * warning$ }
'skip$
if$
}
if$
}
3. 雑誌名を省略形で表示させるために、string_abbrv.bibを作製し、他の文献データベースの入ったbibファイルと共に\bibliography{}の引数にする。文献データベースの雑誌名は最短の省略形で入力。
@string{PRL="Phys. Rev. Lett."}
@string{PRB="Phys. Rev. B"}
@string{APL="Appl. Phys. Lett."}
@string{JAP="J. Appl. Phys."}
@string{JPSJ="J. Phys. Soc. Jpn."}
@string{RSI="Rev. Sci. Instr."}
@string{SUST="Supercond. Sci. Technol."}
@string{PhysC="Physica C"}
雑誌の省略形については、bstファイルの末尾に含まれている場合もあり、その場合はstring_abbrv.bibは必要ない。