日本語文献用のBetter BibTeXの引用キー（citation key）の設定

このページでは Zotero のプラグイン（アドオン）である Better BibTeX for Zotero における、BibTeX 用の引用キー（citation key） 生成の設定、特に日本語文献用の引用キー生成の設定について説明しています。

**［注］2022/8/31追記** 2022年7月頃に、Better BibTeX for Zoteroの引用キー形式の指定方法が変更になったようです。ですので、このページの説明は古いバージョンには合わないと思います。


**［注］** このページでは現時点（2022-08-31）での、Zotero と Better BibTeX を前提として説明します。以下のバージョンのものです。

- Zotero の 6.0.14-beta.1+79246196a
- Better BibTeX for Zotero の 6.7.22

新しいバージョンでは動作が変わっている可能性がありますので注意してください。

## Zotero と Better BibTeX プラグインとは？

「[Zotero](https://www.zotero.org/)」という文献管理サービスがあります。文献情報をクラウド上に保存・管理するような仕組みになっているものです。同じようなものとして「[Mendeley](https://www.elsevier.com/ja-jp/solutions/mendeley)」というものもあり、私は Meledely をずっと利用していたのですが Zotero に乗り換えました。それぞれ一長一短がありますが、デスクトップアプリについては Zotero の方が機能が豊富で使いやすいと思います。それもあり今は Zotero に変えて満足しています。

Zotero と Mendeley の比較は例えば以下のページでおこなわれています。

- [\[メモ\] Mendeley: Exodus ~Mendeley から Zotero への移行の手引き~ \- ill\-identified diary](https://ill-identified.hatenablog.com/entry/2019/03/05/195257)

Zotero は文献管理をするものですが、その文献を BibTeX（あるいは、biblatex）で利用したいという人もいると思います。私もそうです。そのような人には、Zotero と BibTeX の橋渡しをする機能を提供する「[Better BibTeX for Zotero](https://retorque.re/zotero-better-bibtex/)（以下、BBT）」という Zotero の拡張機能（プラグイン、アドオン）が便利です。BBT については上のページでも説明されていますし、他にも例えば以下のページで説明されています。

- <a href="https://plaza.umin.ac.jp/shoei05/wp/index.php/2020/10/31/206/">Zotero で citation keys を設定する ( zotero-better-bibtex ) - shoei05</a>

他にも BBT の基本的な機能については説明したページはたくさんありますので、ここでは省略します。

<a id="org9f94280"></a>

## Better BibTeX による BibTeX citation key の生成

BibTeX では各文献に引用ためのキー（citation key、以下、引用キー）を設定しておく必要があります。BBT にはこの引用キーを（著者名、タイトル、出版年などの情報をもとに）自動で作成してくれる機能があります。また、その引用キーの形式を自分でカスタマイズすることができます。

引用キーの形式は BBT の設定画面で指定できます。引用キー形式（Citation key format）の既定値は次のように設定されています。

    auth.lower + shorttitle(3,3) + year

これの正確な意味については <https://retorque.re/zotero-better-bibtex/citing/> というページで詳しく解説されていますので、それを見て欲しいのですが、おおまかにいうと

-   `auth.lower` -> First authorのlast nameだけを取り出し、それを小文字にする
-   `shorttitle(3,3)` -> title の最初の 3 つの単語を取り出し、それぞれの最初の一文字目を大文字とし、3つの単語をつなげる
-   `year` -> yearの値を取り出す

という意味で、この3つを全部繋げたものを引用キーとするということです。

例えば、以下のような文献を考えます（本来、引用キーが指定される部分をここでは ?????としています）。

    @article{?????,
      title        = {Labor Market Distortions and Welfare-Decreasing International
                      Emissions Trading},
      author       = {Takeda, Shiro and Arimura, Toshi H. and Sugino, Makoto},
      year         = 2019,
      month        = sep,
      volume       = 74,
      pages        = {271--293},
      issn         = {0924-6460, 1573-1502},
      doi          = {10.1007/s10640-018-00317-4},
      journal      = {Environmental and Resource Economics},
      language     = {en},
      number       = 1
    }

この文献の場合、上のような指定をしておくと

> takedaLaborMarketDistortions2019

という引用キーが生成されます。形式の指定を変更すれば、これをかなり自由に変更することができます。例えば、

    auth.lower + "-" + year  + "-" + journal(off)  + "-" + shorttitle(3,3)

のように指定すると、引用キーは次のようになります。

> takeda-2019-EnvironmentalandResourceEconomics-LaborMarketDistortions

`journal(off)` はジャーナル名を短縮せずに表示するという指定です（単に `journal` とだけすれば、短縮形の名前になります）。また、区切りに "-" を入れる指定にしています。

<a id="org123b55b"></a>

## 日本語文献用の citation key の生成

英語の文献は以上のような形になるのですが、日本語の文献の場合、ちょっと話が変わってきます。日本語文献の場合、著者名やタイトルに日本語の文字（漢字、ひらがな、カタカナ）が入ってきます。引用キーを生成する際にこの日本語の文字をどう扱うかについて、以下のような選択肢があります。

1) 日本語文字をピンイン（pin-yin）に変換して扱う
2) 日本語文字をローマ字に変換して扱う
3) 日本語文字をそのまま日本語文字として扱う

以下、それぞれの選択肢について説明します。

### 1) 日本語文字部分をピンインに変換して扱う

ピンインは中国語の発音記号のようなものですから、日本語文献の日本語文字をピンインに変換されても無意味どころか、害でしかないのですが、**なぜか BBT の既定の設定ではこの動作になってしまいます**。

例えば、次のような日本語文献で

    @article{?????,
      title        = {{炭素価格の二重の配当}},
      author       = {有村, 俊秀 and 武田, 史郎 and 尾沼, 広基},
      year         = 2018,
      volume       = 11,
      pages        = {73--78},
      doi          = {10.14927/reeps.11.2_73},
      journal      = {環境経済・政策研究},
      language     = {Japanese},
      number       = 2
    }

引用キー形式としては既定値の

    auth.lower + shorttitle(3,3) + year

が使われている場合、引用キーは

> youcunTanSuJiaGenoErChongnoPeiDang2018
    
となってしまいます。「有村」が「youcun」に変換されていることからわかるように、漢字がピンインに変換されてしまいます。

**これがデフォールトの動作なのですが、これでは普通の人はさすがに困りますから設定を変更する必要があります。**

### 2) 日本語文字部分をローマ字に変換して扱う

BBT の設定の [Better BibTeX] -> [Citation keys] -> [Advanced] -> [Citaion keys] に 

    Apply kuroshiro romajization in Japanese names/titles. Use a lot of memory
    
というオプション（以下、kuroshiro オプション）があります。これをオンにすると、引用キーを生成する際に日本語文字の部分がローマ字化されます。「kuroshiro」とは [kuroshiro](https://kuroshiro.org/) で提供されている、日本語文字（漢字、平仮名、片仮名）をローマ字に変換するライブラリーです。

例えば、上の「有村他 (2018)」の文献の引用キーは次のようになります。

> arimuraTansoKakakuNo2018
    
日本語文字をローマ字化した上で引用キーを作成したい場合は、この方法を用います。


### 3) 日本語文字部分をそのまま日本語文字として扱う

2 で日本語文字部分をローマ字化して扱う設定を説明しましたが、(u)pBibTeX を使っている場合、引用キーには日本語文字を利用しても問題ないですから、そもそもローマ字化する必然性はありません。日本語文字はそのまま日本語文字のままで引用キーに利用するという方法もあります。このようにするには

- a) まず、kuroshiro オプションをオフにする。
- b) さらに、「Force citation key to plain text」というオプションをオフにする。

その上で、引用キー形式を例えば以下のように変更します。

     auth + shorttitle + year

以上のように設定すると、有村他（2018）の引用キーは以下のようになります。

> 有村炭素価格の二重の配当2018

私はこの3番目の設定を使って、日本語文字をそのまま引用キーに利用しています。ただし、引用キー形式には次のような設定をしています。

    auth + "-" + year + "-" + title.splitIdeographs.select(1,4).capitalize

各設定は以下のような意味を持ちます。

-   `splitIdeographs` は日本語（漢字、ひらがな）の場合、1文字を1単語扱いするというフィルター
-   `capitalize` は最初の文字を大文字にするフィルター
-   `select=1,4` は最初の4つの単語のみを抜き出すというフィルター

`splitIdeographs` と `select=1,4` の設定により、日本語文献の場合、タイトルの最初の4文字が引用キーに使われることになります。

以上のような設定をしておくことで、例の文献の引用キーは次のようになります。

> 有村-2018-炭素価格

タイトルの最初4文字のみを利用するという設定にしているので、「炭素価格」の4文字が利用されています。最初の4文字ではなく、もう少し長めに設定したほうがわかりやすくなるのですが、5文字、6文字とすると今度は英語の文献の場合に困ります。というのは、日本語文字を「最初の○文字」と設定すると、英語の文献では「最初の○単語」になってしまうため、引用キーが長くなりやすいからです。

例えば、最初に例に出した英語文献の場合には

> Takeda-2019-LaborMarketDistortionsWelfaredecreasing

とい引用キーになります。最初の4単語のみ利用するという設定でもこんなに引用キーが長くなってしまいます。これでは長いので、最初の3単語のみと設定すると、今度は日本語文献では最初の3文字という設定になるので、少しわかりにくくなります（他の文献との区別もしにくくなります）。妥協点として「日本語文献は最初の4文字＝英語文献は最初の4単語」という設定にしています。