« imlib2 on MacOSX | Main | MacOSXのホスト名を固定したい »
2007年1月29日
BibTeXで日本語の参考文献
[ カテゴリ:
Technology
]
この時期、あちらこちらでBibTeXが使われまくってると思うんですが、 日本語の文章でBibTeXを使うとちょっとした問題があります。 それは、日本語の参考文献の日付が英語になってしまうことです。 以下みたいに。
[31] 参考花子, 参考太郎. BibTeXで日本語を使う際の日付の出力に関する研究. BibTeX研究会 (BibTeX2005), pp.141-144, July 2005.
ちうわけで、このださい“July 2005”を“2005年7月”にしましょう、 というのが今回の趣旨です。
といっても、なかなかきれいな方法はありません(しらないだけかも)。 戦略としては、
- エントリが日本語か英語かで出力を変える
- 日付を出力する場面では月が既にマクロ展開されているので、 展開後の文字列に対応する月の数値(ややこしいな)に変換する
という感じ。 以下ではjunsrt.bstに対するパッチを掲載していますが、 月の名称と数字の対応だけに気をつけて変更すれば、 同じ戦略で他のスタイルにも適用できるでしょう。
--- junsrt.bst 2007-01-29 11:34:14.000000000 +0900
+++ junsrt.bst 2007-01-29 12:35:30.000000000 +0900
@@ -355,19 +355,45 @@
}
while$
}
+FUNCTION {format.date.month.to.number}
+{ month empty$ { "" }
+ { month "January" = { "1" }
+ { month "February" = { "2" }
+ { month "March" = { "3" }
+ { month "April" = { "4" }
+ { month "May" = { "5" }
+ { month "June" = { "6" }
+ { month "July" = { "7" }
+ { month "August" = { "8" }
+ { month "September" = { "9" }
+ { month "October" = { "10" }
+ { month "November" = { "11" }
+ { month "December" = { "12" }
+ 'month
+ if$ } if$ } if$ } if$ } if$ } if$ }
+ if$ } if$ } if$ } if$ } if$ } if$ }
+ if$
+}
FUNCTION {format.date}
{ year empty$
{ month empty$
{ "" }
{ "there's a month but no year in " cite$ * warning$
- month
+ is.kanji.entry
+ { format.date.month.to.number "月" * }
+ 'month
+ if$
}
if$
}
{ month empty$
'year
- { month " " * year * }
+ { is.kanji.entry
+ { year "年" * format.date.month.to.number "月" * * }
+ { month " " * year * }
+ if$
+ }
if$
}
if$
まあ見たまんまなんですが、戦略の前半はformat.dateに手を入れることで、 後半は関数format.date.month.to.numberを追加することで実現しています。 このスタイルだと、最初の例は以下のようになります。
[31] 参考花子, 参考太郎. BibTeXで日本語を使う際の日付の出力に関する研究. BibTeX研究会 (BibTeX2005), pp.141-144, 2005年7月.
Comments
利用させていただきました:)