Org-Modeとbiblatexで日英混在文献を作成する
org-modeで本を書きたかった
教科書を書いた。参考文献の大半は日本語だが一部英語のものも混じっている。翻訳書も多く含まれている。
執筆にはemacsとorg-modeを選択した。 文献の管理にはZoteroを使用し、org-modeとZoteroをつなぐ文献管理ツールにはBiblatexを選択した。
普通はWordで書くのかもしれないが、長文を書くときには長らくこの組み合わせを使用している。 だが、文献リストをツールを使って管理しなければならない日本語文献を書いたことがなかった。
今回の取組で、LaTeXで日本語文献を扱うのは、想像以上にめんどうなことがわかった。 同時に、ChatGPTに設定を聞きながら進めてみたところ、かなり助けられた。が、いちばん大事なところで嘘っぽい話もあったので注意が必要だ。 ChatGPTに頼るなら、ある程度問題がわかっていないと、逆にはまるかもしれない。
執筆要件
- org-modeで執筆する
- 文献管理にはZoteroを使用する
- 引用時にはCitarで文献データベースから文献を選択して引用する
- 文書は全部で一つの文書として執筆を進める(章ごとに分割しない)
- 文献リストは章ごとに掲載する
文献の収集・管理:Zotero
Zoteroでは、本に使用する文献を特定のフォルダに集めておいて、そのフォルダに含まれる文献をbibファイルに出力するよう設定しておいた。このファイルは更新のたびにアップデートするようにできるので、いつでもZoteroで文献データベースを変更できる。
org-modeの運用
biblatexかBibTeXか
bibtexのばあい、有名なのが武田史郎氏が作成・公開してくださっているjecon.bstがある。
第一にbiblatexでは参考文献のリストを複数作成することができます。一次文献、二次文献で参考文献リストを別にするというようなことができるようです。第二に、biblatexを使うと引用部分で非常に多様な形式を利用できます。BibTeXでは参考文献部分のカスタマイズはかなりできますが、引用部分のカスタマイズの自由度は高くありません。 (出所:「biblatexとBibTeX - 武田史郎のウェブログ」、https://shiro-takeda.hateblo.jp/entry/2660 )
執筆をかなり進めた頃に、文献リストは章ごとに作成する必要があることを知った。 LaTeXにはこの目的を実現するためにchapterbibと呼ばれるパッケージがあるが、こちらは文書を章ごとに分割する必要があるように見えた。 ちょっと試してみたが、思ったような挙動にならなかった。
この段階でBibTeXを諦めて、BibLaTeXを使用することに決まった。
解決方法
うまくいった方法
BibLaTeXを使いたいならドキュメントを読めと言われそうだが、このドキュメント357ページもある。いずれは読むべきな気もするけれど、ちょっと手が出なかった。検索しながら該当部分をつまみ食いするような読み方では、とうてい自分の思う表記は実現できなかった。
そんなわけで先人の知恵に頼ろうと、検索して上位に出てくる次の2つを試してみた。しかし、うまく動かなかった。
- 「GitHub - sbtseiji/biblatex-jpa: 日本心理学会2022年版文献スタイル」、https://github.com/sbtseiji/biblatex-jpa
- 「BibLaTeXで日本語と英語の文献の混在を扱う方法(2021年11月) - GitPress.io」、https://gitpress.io/@statrstart/biblatex01
前者はそもそも日本語文献を判定してくれなかった。language=japanese 的な表現がある場所があるのだが、筆者の環境では日本語文献は認識されなかった。 筆者のbibファイルの言語欄は「langid」となっているのでこれを一括して「language」と変換してみたが、認識してくれない。バージョンの問題なのかもしれない。
後者はかなりいいところまでカスタマイズできたが、引用部分を著者の姓(年)としたかったのに、著者のフルネーム(年)から変更ができなかった。あと一歩だったのだが、残念ながらそれ以上のカスタマイズは断念した。
最終的には、以下のサイトで公開されているbiblatex.cfgファイルを用いる方法が目的に一番近かった。
スタイルを自作するほど高度なものではなく、簡易的に日本語文献の書式を整える。 (出所:「BibLaTeXで日本語文献を扱う · Obsica」、https://obsica.com/biblatex-japanese-config/ )
公開してくださっているファイルでほとんど問題がなかったのだが、著者が複数の場合の「他」と引用箇所で(名前, 年)とすることの2点を修正するために、以下を設定に追加した。
\DefineBibliographyStrings{english}{andothers={他}} \DeclareDelimFormat{nameyeardelim}{\addcomma\space}
なお、biblatex.cfgをどこにおいて、TeXのソースでどう読み込ませればいいのかとしばし悩んだ。答えは、「ソースと同じ場所においておくと、自動的に読み込まれる」だった。
カタカナ名が問題だ
最後まで残った問題が、カタカナ表記の著者をどうするかだ。多くは外国人で、名姓の順で呼ばれることが一般的だ。例えば、ジャレド・ダイアモンドはダイアモンドが姓なので、リストには、ジャレド・ダイアモンド、またはダイアモンド,ジャレドとしたところだ。できれば前者が望ましい。
この問題を解決しようとして、Zoteroの著者管理において、姓の部分にジャレドとしてしまうと、本文中の引用部分が「ジャレド(年)」となってしまう。 もちろん、これはありえない。
文献を日本語文献と英語文献を判別することはできても、著者の氏名表記の順序まで判別できないためだ。おそらく、name:last-family的なプロパティを用意して、それを見ながらスタイルのほうで調整するのがベストな解なのだと思う。だがそのばあいでも、姓名がよい著者と名姓がよい著者が混在すると、対応は難しそうだ。
以上から、最終的な解は次の2つのうちのどちらかとなった。 本文中の引用表記を重視するか、文献リストでの表示を重視するかで選択する。
解1:名 姓とする方法
参考文献リストで自然に表示されるように、Zoteroの氏名を姓名を逆転して入力する。つまりは、姓に名を名に姓を入れる。
当然ながら、本文中の引用では普通に引用すると、ジャレド(2012)のようになる。
だが、emacsのcitarはこういうケースにも対応できるようになっている。 引用キーがDiamond2012であるとすると、通常は[cite:@Diamond2012]なのを以下のように表記することで期待した表記ができる。
主語的に使用、つまり〇〇(年)とする場合は、次のようにする。
ダイアモンド[cite/na:@Diamond2012]は。。。
← /naとすると、(年)だけが表示されることを利用する。
LaTeXでは、ダイアモンド\autocite*{Diamond2012}となる。
文末に使用:(〇〇, 年)のときはこんな感じ。
これはなんとかである[cite/na:ダイアモンド, @Diamond2012]。
← 上記に加えて、()内の@の前に書いた表記は@以下と同様、()内にそのまま表示されることを利用する。
LaTeXでは、\autocite*[ダイアモンド,][]{Diamond2012}となる。
一応コメントしておくが、この方法、引用部分、文献リストともにうまくいく。だが、Zoteroでは、姓名が逆転しているという気持ち悪さはある。 正直、かなり気持ち悪くて、ちゃんとした解ではない・・・と感じてしまう。
解2:姓,名とする方法
解1が面倒なときは、表記が「ダイアモンド,ジャレド」で良いと妥協する。このばあい、著者の名前欄を「,ジャレド」とする。
スタイルの設定で姓と名の間に「,」を入れる方法もあるが、こうすると日本人著者までもが「坂田,裕輔」のような表記になる。
このばあい、本文中の引用は特に意識する必要がない。
うまくいかなかった方法
標準
普通に作成すると、著者の名前が一文字だけ表記されて、後は省略されてしまう。
「坂田, 裕.」などである。これはさすがにありえない。数が少なければ手作業で修正できるかと思ったが、biblatexのばあい、それができない。
武田氏が書くとおりだ。
一つ目はBibTeXでは参考文献部分を最終的に手で修正することができるという点です。biblatexでは参考文献部分の表示はTeXの処理の内部でおこなわれるので参考文献部分を手で修正することはできないようです。 (出所:「biblatexとBibTeX - 武田史郎のウェブログ」、https://shiro-takeda.hateblo.jp/entry/2660 )
この問題はBibLaTeXで日本語と英語の文献の混在を扱う方法(2021年11月)で紹介されているように、biblatex2bibitem–Convert BibLaTeX-generated bibliography to bibitemsを使えば、アイテムを取り出すことはできそうだ。が、ちょっと今はそこまで試していない。
jpaなど
jpaがうまくいかなかったのは、languageをうまく判定してくれないため。この問題を解決するために、bibファイルに手動でlanguageを追加すると、いくつか追加する分にはうまく動いた。しかし、langidを一括でlanguageに変換した場合、うまくいかない。
理由は全くわからなかった。
Zoteroでのコメント
Zoteroの文献データにメモを書ける。論文から必要な部分をコピペしておいたりできる。 メモはあまり重視していないので、適当に思いついた部分を選択して、メモ欄に貼り付けるような運用をしていた。
このデータベースをLaTeXに読み込ませると、なぜかエラーが出て、処理が進まない。
文献を一つ一つ手作業で削除して、エラー箇所を調べると、メモ内の括弧がちゃんと閉じていないものがある。これがエラーを引き起こしていた。
この点は該当箇所を見つけて一つずつエラーを修正した。
BibLaTeXで日英混在を扱う決定版が見当たらないわけ
この問題だが、そもそも日英混在を使おうという著者が少ないのだと思う。
普通の印刷所はLaTeX原稿を受け入れてくれない。執筆はLaTeXで行うものの、出版社に提出あるいはジャーナルに投稿する段階でLaTeXではないフォーマットに変換することが多そうだ。
僕の場合は、印刷所がLaTeXを受け入れてくれたけれども、組版にLaTeXを使っていないようで、校正作業はpdfへの赤入れ手作業になった。
また、LaTeXを使う人の多くは、英語で論文を書いて公開する人で、日本語はサブ的にしか使わないのだろう。
そんなわけで、日英混在の文献を管理する必要があるケースは結構あるけれど、最後は手作業でなんとかしてしまうのだろうと思われる。