bstの編集:参考文献のand消したい

bibを使えば参考文献は楽勝.
例えば,

I. Suzuki, Z. Suzuki, and S. Suzuki, ジャーナル名, vol, pp (yaer).

となる.
しかし,日本語の文献だと

鈴木一郎, 鈴木次郎, and 鈴木三郎, ジャーナル名, vol, pp (yaer).

となって,日本語の名前の間にandがはいってしまう.
明らかに不自然なので,bstファイルをいじってandを消してみた.

現在使用しているbstはh-physrev3.
Physical Reviewという雑誌のbstファイルである.
この論文を読むことが多いので,これを採用してるが,正直何でもいい.

h-physrev3のarticleを定義しているところを探してみる.

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーFUNCTION {article}
{ output.bibitem
collaboration output
format.authors "author" output.check
new.block
以下略
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

どうやら筆者の並びはauthersという関数で別に定義されているらしい.
autherを定義しているところを探してみる.

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーFUNCTION {format.authors}
{ author empty$
{ "" }
{ author format.names }
if$
}
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

どうやらnamesという関数で定義しているらしい.めんどい.
namesを定義している箇所を探してみる.

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーFUNCTION {format.names}
{ 's :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames #100 >
s numnames "{ll}" format.name$ "others" = numnames #1 > and
or 'etal :=
〜途中略〜
if$
t "others" =
etal or
{ " {\em et~al.}" * }
{ " and " * t * }
if$
}
if$
}
't
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

おそらくautherが多すぎるとet al.をつけるとか書いてあるっぽい.
途中にandがでてきたので,こいつだろう.
このandを消しみると,参考文献のandが消えた.
ただ,これだとandが欲しい英語の文献もandが消えてしまうので,

1. FUNCTION {article}の全体をコピペして,{article}→{articleJ}と定義する.
2. articleJ中のformat.authorsをformat.authorsJとする.
3. FUNCTION {format.authors}全体をコピペし,{format.authors}→{format.authorsJ}
4. format.authorsJ中のauthor format.namesをauthor format.namesJとする.
5. FUNCTION {format.names}全体をコピペし,{format.names}→{format.namesJ}に.
6. format.namesJ中の{ " and " * t * }のandを消す." "とする.

 をすることで,日本語の文献はarticleではなく,articleJとすればandが消えてくれる.
しかし,もっと楽な方法がありそう.