📚

Markdown + Zotero + Pythonで日本語文献対応の参考文献リストを自動作成

に公開

日本人著者名のローマ字読みに対応した参考文献リスト

博論で LaTeX(Overleaf)を使い、Citation Key を用いて参考文献リストが自動作成されるメリットはひしひしと感じていた。特に、jecon.bst を用いて、日本人著者のローマ字読みを反映したリストを作成できるのが助かった。

https://github.com/ShiroTakeda/jecon-bst

だが、日常的に LaTeX を使うかというと、そうではないのが実情である。自分の分野では論文や予稿の提出はすべて Word で行うので、原稿執筆は Markdown で行い、最後にコピー&ペーストするのがやりやすい。LaTeX を使って PDF ができてしまうのはむしろ面倒である。「日本人著者名のローマ字読みに対応した参考文献リストを自動作成したいが、組版と PDF 出力はしたくない」というのが個人的なニーズであった。

Jurism でいけるか

ニーズを満たすために最初に検討したのは Zotero の Word 連携プラグインである。Markdown を使う形式ではないものの、どうせ最終的に.docx ファイルにするならば許容範囲かと思い調べた。

ここで初めて知ったのは、Zotero の多言語対応フォークである Jurism という文献管理ソフトウェアが存在することだった。

https://juris-m.github.io

通常の Zotero には著者名のローマ字読みを入力するフィールドが用意されていない。そのため、LaTex で使う場合には、Extra フィールドに

tex.yomi: Sugiyama, Kohei

という形式で記入しておくことになる。こうすると Better BibTeX プラグインがパースし、出力される BibTeX ファイルに

yomi = {Sugiyama, Kohei}

が記入される。

ところが Jurism はフィールドを拡張して、著者名の下に Romaji を記入できるようにしてくれる。拡張版の CSL を使うことで、ローマ字読みを考慮した文献リストを作成してくれるという触れ込みだった。

https://mineta.hatenablog.com/entry/2023/03/02/154131

これはいいと思って使ってみたのだが、残念ながら連携はうまくいかなかった。Word で引用する文献を指定するダイアログは開くのだが、文献を指定すると Jurism が必ず落ちてしまう。

Jurism は個人が開発しているようで、最新版でも元になっている Zotero のバージョンは 6 と一昔前のものだ。何かしらエラーが起きているようだがすぐには直らないだろう。

こういうとき Claude Code を活用してエラー源を診断して直すという選択肢を自分は Saboten 開発を通して得たわけだが、さすがに巨大な Jurism/Zotero のソースコードに手を加えるのは無理そうだなという気分になる。

https://github.com/Juris-M/zotero

まあ、そもそも Zotero がオープンソースなおかげでこういうことを考えられるわけで、それだけでも大変ありがたいところである。

Python でどうにかする

そこで別のアプローチを取った。結論から言えば、Markdown ファイルを次のように変換する Python スクリプトを Claude Code に作ってもらった。

元の Markdown ファイル

## はじめに

[[辻 2019]] によれば、YouTube のような動画共有プラットフォームには「参加型文化」が見られる。そこでは「きょうの料理」のようにかつてはもっぱらテレビ放送されていたチュートリアル動画([[古川 2019]])を、誰もが「ユーザー生成コンテンツ」として投稿することができる([[Utz & Wolfers 2022]])。同時に、誰もが YouTube を「実用情報版の Wikipedia」として利用し、学ぶことができる([[Pires et al. 2021]])。

変換後の Markdown ファイル

## はじめに

辻 (2019) によれば、YouTube のような動画共有プラットフォームには「参加型文化」が見られる。そこでは「きょうの料理」のようにかつてはもっぱらテレビ放送されていたチュートリアル動画(古川, 2019)を、誰もが「ユーザー生成コンテンツ」として投稿することができる(Utz and Wolfers, 2022)。同時に、誰もが YouTube を「実用情報版の Wikipedia」として利用し、学ぶことができる(Pires et al., 2021)。

## 参考文献

- 古川敏明 (2019) 「テレビ番組『きょうの料理』におけるトークの通時的談話分析」 『コミュニケーション文化論集 : 大妻女子大学コミュニケーション文化学会機関誌』, 第17号, 59--80頁.
- Pires, Fernanda, Masanet, Maria-Jose, and Scolari, Carlos A. (2021) "What Are Teens Doing with YouTube? Practices, Uses and Metaphors of the Most Popular Audio-Visual Platform" *Information, Communication & Society*, Vol. 24, No. 9, pp. 1175--1191.
- 辻泰明 (2019) 『インターネット動画メディア論:映像コミュニケーション革命の現状分析』,岡山:大学教育出版.
- Utz, Sonja and Wolfers, Lara N. (2022) "How-to Videos on YouTube: The Role of the Instructor" *Information, Communication & Society*, Vol. 25, No. 7, pp. 959--974.

日本人著者名のローマ字読みに対応した参考文献リストが作成されていることがわかる。

スクリプトは二段構えになっていて、原稿ファイルをもとに文献情報を探しにいく部分と、得られた文献情報をもとに文献リストを整形する部分からなっている。文献情報は以下の流れで探しに行っている。

(フロントマターに citekey が書かれた文献ノートがなぜ存在するのかと言えば、日々の Obsidian 運用で Zotero Integration を使っているからである)

こうすることで、

  • 自分の Obsidian 運用をそのまま活かして原稿を書ける(著者名 発行年.md という文献ノートをたくさん書いており、それにリンクを張る形で文献引用を表現できる)
  • 文献リストを作成する際に、Zotero の Better BibTeX プラグイン が生成してくれる yomi フィールドつきの BibTeX ファイルを活用できる

文献リストは、英語文献の場合は author の綴りを、日本語文献の場合は yomi の綴りを用いることでアルファベット順にソートできる。

ジャーナル名やページ数などの記載方法については、jecon.bst の実装を参考にするよう Claude Code に指示することで、とりあえず形になっている。ただ、ブックチャプターなど文献の種類が増えたときに上手く動作するかはわからない。

このあたりは Saboten 同様、実用しながらそのつど手を加えていくことになるだろう。

PaperGararge Diary

Discussion