bibtex-mode のキー生成の挙動をいじってみた

なんとなく調べてみたら,いろいろ変数あるじゃんってことでやってみました。こんな設定にしたら,普段手で入力してるのと同じようなものが勝手に生成されそうです。

(setq bibtex-autokey-name-case-convert-function 'capitalize
      bibtex-autokey-names 'infty
      bibtex-autokey-year-title-separator ":"
      bibtex-autokey-titleword-length 'infty
      bibtex-autokey-titlewords 0
      bibtex-autokey-titlewords-stretch 3
      bibtex-autokey-titleword-abbrevs () ; may be useful if set appropriately
      bibtex-autokey-titleword-case-convert-function 'capitalize
      bibtex-autokey-titleword-separator ""
      )
@Unpublished{BarXyzzy09:GeneratingPrettierKeys,
    author = {Foo Bar and Baz Quux Xyzzy},
    title = {Generating Prettier Keys},
    note = {this is a test entry},
    year = 2009}

基本的な規則は

  • 著者の姓を camel case で並べる
  • 年の下二桁
  • セミコロン
  • タイトルや内容から適当に単語を取り出して camel case で並べる

という感じでやってます。

タイトルから単語を抜き出すのは自動では難しそうなので,「タイトルの単語数が少ないときだけそのまま全部使う」ということにしました。そうでないときはセミコロン以下は生成されません。どうせ C-c C-c した後ミニバッファで修正できるので,そのときに自分で入力する方向で。

ついでに設定用変数群などの解説を書こうかと思ったけど M-x describe-function RET bibtex-generate-autokey すれば出てくるようなことしか書けないのでやめた。