概要
以下の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