タイトル通りです。 タイトル変えました。
個人的な備忘録として、bstファイルを弄って参考文献の表示方法を変えるTipsを書き残しておきます。
問題1:タイトル大文字小文字 編
某学会が公式で出しているLaTeXソースファイルに含まれる.bstファイルを使うと、タイトルが先頭文字以外全て小文字になる。
- もちろん、文献情報を記載した場所(自分の場合は.bibファイルですが)では、適切に大文字が指定されています
問題の発現例
本当はこうなってほしい:
Hoge, F. (2024). The Impact of Hogehoge: Who Am I?. Journal of Internet Rojinkai, 1(1), 1-99.
でもなぜかこうなる:
Hoge, F. (2024). The impact of hogehoge: who am i?. Journal of Internet Rojinkai, 1(1), 1-99.
対策
自分が使用している.bstファイルには、次のような関数が設定されていました。
FUNCTION {format.title}
{ title
duplicate$ empty$ 'skip$
{ "t" change.case$ }
if$
"title" bibinfo.check
}
あまり.bstファイルの書き方には詳しくないのですが、ちょうど中段の
{ "t" change.case$ }
で、change.case$
という関数(?)が、"t"という引数を取っています(引数が前に来るとか初めての感覚……)。
これが「先頭文字と、bibtex等で文字が{}で囲われていない文字以外全てを小文字にする」という処理なのだそう。
(↓参考にしました)
なので、上のコードを次のように修正しました:
FUNCTION {format.title}
{ title
duplicate$ empty$ 'skip$
{ } % 中身を消す
if$
"title" bibinfo.check
}
対症療法ですが、これで何とかなりました。
問題2:著者名とハイフン 編
著者名にハイフンが含まれているのに、ハイフンが表示されない(APA準拠だとハイフンが必要)。
問題の発現例
著者名がHoge-Fuga P Hogera
の場合……
本当はこうなってほしい:Hogera, H.-F. P.
でもなぜかこうなる:Hogera, H.F.P.
対策
FUNCTION {format.names}
を変更します。
{ s nameptr % nameptr はイテレータ
"{vv~}{ll}{, jj}{, f{.}.}" % フォーマット
format.name$
bibinfo bibinfo.check
't := % 名前をtに保存
(以下略)
マジで意味分からん関数してるタスケテ
2行目のフォーマットが次のような意味を持っているのだそう。
-
{vv~}
:名前の接頭辞(例: "van", "de" など) -
{ll}
:フルファミリーネーム(姓) -
{, jj}
:接尾辞(例: "Jr.", "III" など) -
{, f{.}.}
:ファーストネーム(名)/ミドルネームのイニシャル
(perplexityに聞きました。日本では「パープレ」という略称で広めたいらしい)
で、最後の{, f{.}.}
を{, f.}
に変えるとうまくいきました。なんで??????
つまり、こう変える↓
{ s nameptr % nameptr はイテレータ
"{vv~}{ll}{, jj}{, f.}" % フォーマット
format.name$
bibinfo bibinfo.check
't := % 名前をtに保存
(以下略)
参考にしました↓
雑記
あー、.clsファイルとか.bstファイルとかちゃんと書き方覚えたいなー(10年前からずっと言ってる)。
誰かいい感じの教本とかWebサイトとか教えてくれないかなー(他力本願寺)