概要
以下の2つの記事を参考にしてアメリカ物理学会(APS)の標準のbibtexのスタイルファイルapsrev4-2.bstで日本語の本も表示することができるようにしてみた。
これまで、bstファイルは何が書いてあるのかさっぱりわからなかったが、上記の記事で、雰囲気はわかるようになった。大変すばらしい記事だ。今回はapsrev4-2.bstを使って日本語の本を処理するための改造法について記載する。
これで本の日本語表記ができるようになった。具体的には”[1] 山田 一郎 , 山田 次郎 , 山田 三郎 , 山田 四郎 , 「文献 1 」 ( 五郎社 , 2019).”とできるようになる。
とりあえず現時点でのバージョンを以下のようにアップロードしておく:
以下のコードをtexファイルに追加して使用できる。
\usepackage[sort&compress,numbers]{natbib} \usepackage{doi}\usepackage{hyperref} \bibliographystyle{apsrev4-2ja}
bibファイルには以下のようにisjapaneseを追加する:
@book{jt, author = {一郎, 山田 and 次郎, 山田 and 三郎, 山田 and 四郎, 山田}, year = {2019}, title = {文献1}, publisher = {五郎社}, isjapanese = {true} }
isjapaneseを自動追加するコードが「日本語と英語の共存するbibtexのスタイルファイルを作る」に公開されている。
変更の詳細
日本語文献用の変数を追加
まず、上の参考サイトにあるように日本語文献情報の設定をbibファイルに入れれるようにする:
41a42 > isjapanese
186c187 < INTEGERS { control.author.jnrlst control.author.dotless control.author.nospace control.author.initials control.author.nocomma control.author.first control.author.reversed } --- > INTEGERS { control.author.jnrlst control.author.dotless control.author.nospace control.author.initials control.author.nocomma control.author.first control.author.reversed japanese.flag}
220,221d220 < #0 < 'japanese.flag :=
さらに、bookで日本語が扱えるようにするために、FUNCTION {book}に以下のような日本語化フラグの設定を追加。
2699c2733,2741 < { output.bibitem --- > { > %%変更箇所1:日本語エントリに何かあれば日本語化するフラグを立てる > isjapanese empty$ > {skip$} > {#1 'japanese.flag :=} > if$ > %%変更箇所1ここまで > > output.bibitem 2742a2785,2788 > > %%変更箇所2:次の文献のために日本語化フラグの解除(0に戻しておく) > #0 'japanese.flag := > %%変更箇所2ここまで
and抑制
日本語文献に対してandを抑制するにはbbl.and関数を書き変えるとよい。
828c839,847 < "and" --- > % 日本語の場合はandを抑制 > japanese.flag #0 = > { > "and" > } > { > "" > } > if$
名前を「山田 太郎」のような日本語表記に
format.names.morfont関数内を書き変える。
1487,1493c1506,1518 < control.author.initials { < "f" % default: name + surname + comma junior < } { < "ff" < } if$ < control.author.dotless 'skip$ { < "." * % nm-init % Initials. + surname (J. F. Smith) control.author.initials --- > > % 日本語の場合は名前を略さない > japanese.flag #1 = > {"ff"} > { > control.author.initials { > "f" % default: name + surname + comma junior > } { > "ff" > } if$ > control.author.dotless 'skip$ { > "." * % nm-init % Initials. + surname (J. F. Smith) control.author.initials > } if$ 1494a1520 > 1497c1523,1531 < { tie.or.space.prefix bib.fname.font swap$ * } --- > { > % 日本語の場合は名前と名字を入れ変える > japanese.flag #1 = > {swap$} > {skip$} > if$ > > tie.or.space.prefix bib.fname.font swap$ * > }
文献の強調を「」にする
761,766c760,777 < duplicate$ empty$ < { pop$ "" } < { < "\emph {" swap$ * "}" * < } < if$ --- > % 日本語の場合はemphasizeを「」で包むだけにする > japanese.flag #0 = > { > duplicate$ empty$ > { pop$ "" } > { > "\emph {" swap$ * "}" * > } > if$ > } > { > duplicate$ empty$ > { pop$ "" } > { > "「" swap$ * "」" * > } > if$ > } if$
arXivは表示しないようにする
#0 ‘control.eprint :=としてディフォルトではarXiv情報は表示しない。
216c217 < #0 --- > #1