数年前から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ファイルをカスタマイズしました。
やることは以下の通り
もとにした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は必要ない。