- まじでメモ
- まじで情報がない
能書き
BibLaTeX はマジで日本語情報が不足してるのでとりあえずメモ. 「BiBLaTeXに移行して日本語文献がうまく出力できないので調べている」とかでやってきたのがあなたなら, たぶん以下を読んでも問題は解決できない. 昔は Biblatex - TeX Wiki にもう少しなんか書いてあったような気がしたが, 今確認したらリンクをいくつか羅列してあるだけになっていた (qiitaの検索結果のリンクを張る意味とは……). そしてリンク切れになっているものも多い.
私がBibLaTeXでやりたかったのは, 「和文と欧文のまじった文献リストを適切な書式と順序で表示したい」をXeLaTeXとUnicodeのテキスト使ってやることだったが, 上記の記事ではわからないことのほうが多い.
とりあえず上記の中で簡潔かつ正確だと思われる記事は 『BibLaTeXの使い方まとめ - むしゃくしゃしてやった,今は反省している日記』 くらいか (5年以上前であることからも本件の情報がとにかく少ないことがわかる). わかりやすいがもちろんこれが全貌ではない. よって残された道は 公式ドキュメントを読むしかない. 幸いにも公式ドキュメントは量は多いが分かりやすく書かれている. (以下, ver. 3.15, 2020/8/19 版をもとに書いた)
BibLaTeX は (u)pBibTeX のように文字コードに制約があったり, わけわからん構文のスタイル (.bst
) を使ったりしない. 最初から Unicode に対応し, フォーマットは LaTeX のマクロで制御しており, いくつかのオプションだけでよくあるスタイルを使い分けられる. が, しかしそれは欧文限定で, Unicode対応のおかげで日本語は表示できるものの明らかに和文のスタイルにならない. もちろん.bst
をフォーマットを使いまわすこともできない.
基本は LaTeX の他のパッケージと同様に \usepackage[...]{biblatex}
で読み込み, この時に OPTION1=VALUE1,OPTION2=VALUE2,...
というふうにおおまかな書式を指定できる.
主なオプション
以下, 重要なオプションのみ紹介.
style
詳細は公式ドキュメント 3.3 節.style=
に指定する, 名前通りスタイル. 引用リスト(巻末の詳細な文献情報リストとその見出し)と, 本文中に表示される記号 (以下, 引用子) の書式.
名前 | 概要 |
---|---|
numeric |
[1], [1, 2]のような番号方式 |
alphabetical |
数学, 計算機科学系によくある(?)[A+B19] のような著者名と出版年の略称 |
authoryear |
社会科学系によくある著者姓 - 出版年 方式 (これまでnatbib.sty /harvard.sty )で使用できたやつ |
authortitle |
著者 - タイトル, リストでの出版年は後置され, 引用子は医療系?でよくある脚注になる |
verbose |
authortitle とほぼ同じだが, 引用子の脚注に引用リストと同等の情報が表示される |
reading |
個人的なリーディングリスト作成用. さらにmemo とかfile とか普通のフォーマットでは表示しないフィールドも表示する. 書式も独特のものになる |
draft |
さらに引用子はBibTeXデフォルトのように .bib の参照名になる. 動作確認用 |
debug |
draft に加え, .bib の全フィールドを表示するようになる |
また, ieee
, apa
のような著名な国際学会準拠スタイルも用意されている. これらは Overleaf のサイト "Biblatex bibliography styles - Overleaf, Online LaTeX Editor" に出力例がある (しかし全て欧文用なので日本語の出力例はない).
これらは引用リストと引用子の書式がセットになっているが, それぞれ bibstyle
, citestyle
オプションに分けて指定することもできる.
natbib
こっちは 著者 - 年 方式にするかどうかではなく, \citeit{}
, \citep{}
など natbib.sty が用意した多彩な引用子の書式との互換のために作られたオプション. true
/false
で指定
sorting, sortlocale
sorting
は引用リストをソートするルール. none
はソートせず, 本文に引用された順そのままで表示. デフォルトは nty
で, 名前 (n), タイトル (t), 出版年 (y), の並びで指定できる. 同様に巻数 (v) なども加えて, その並びでルールが分かるようなオプション名がいくつか用意されている (公式 3.1.1 節)
sortlocale
ソートロケール. おそらく欧文圏にしか対応していない. デフォルトの auto
は babel
/polygrossia
の設定を参照するらしいが, 私は普段どちらも使ってないので意味がなかった. が, 逆に言えばこれらで定義されている識別名を手動指定できる, ということで sortlocale=ja_JP
としたら, 順番は変わったがおそらく音読みで判定している (まあ特殊な読みの対応までは期待してないが). なら sortname
フィールドを指定すれば? とおもってひらがなで書いてみたらソートされるらしい. そしてそもそも sortlocale
なしでもできてしまうのだった*1. まあこれなら yomi
フィールドの中身をコピペするスクリプトとかでまとめて修正すれば後方互換とかもあまり気にならないし最低限の労力で対応できそう (私の検証はすごくいい加減で, 巻末のような .bib
ファイルを適当に引用して確認した).
なお, これらソートに関するオプションは backend=biber
(デフォルト) のときのみ有効.
backend
文献データベースを読み込み, 処理する際のエンジンで, デフォルトは biber
. 表示順にも影響する. 公式ドキュメントにも bibtex
が指定できると書いてあるが, ならと思ってか (u)pBibTeXで試している人がちらほらいる*2. そんなややこしいことが必要な場面があるのか? という気がするが, 現在の R Markdown の制約では (u)pBibTeX を使うことができない (より正確には tinytex の制約も絡んでいる) ので, 制約を回避するためならこういう裏道もありかも? と思って試してみる. pBibTeX すらできない. たぶんUTF-8モードで使っているから. どちらにしろ .bst
ファイルが使えるようになるわけでもないし, 古い環境でない限り指定するメリットはほとんどなさそう.
結論
ソートが鬼門と予想していたが意外となんとかなった. しかし現状, 日本語文献の表示に対応したBibLaTeXフォーマットがないのであまり見た目はよくない. 特にはっきりした違和感の1つは, 複数著者がいると姓名の順番がおかしくなる, というか欧文スタイルのままである, という点である. なぜか日本語の記事では, 避けてごまかしているのか本当にたまたまなのか分からないが, この記述が抜けていることが多い. 例えば巻末の.bib
を出力するとこうなった.
BibLaTeXの書式の多くはLaTeXマクロで制御するので, 書体とかカギカッコでくくるとかのフォーマット修正は比較的簡単そうであるが, こういうのはどうなるのか(まだ確認していない)
なお, pandoc の biblio-style
で指定できるのは style オプションの部分だけだが, これは biblatex の読み込み時オプションに代入してるだけなので authoryear,natbib=true,sortlocale=ja_JP
のようにカンマでつなげて無理やり他のオプションを入れることもできる (natbib=true
はpandocではあまり意味がないが).
補足: 記述例
TeX Live 2020で
xelatex test biber test xelatex test
もちろん latexmk とかでやってもいい
test.tex ファイルは以下
\documentclass{bxjsarticle} \usepackage{fontspec} \setmainfont{DejaVu Serif} \setsansfont{DejaVu Sans} \setmonofont{DejaVu Sans Mono} \usepackage[AutoFallBack=true]{zxjatype} \usepackage[noto]{zxjafont} \usepackage{xeCJKfntef} % ---- % ここが問題の箇所 \usepackage[style=authoryear,backend=biber,natbib=true,sortlocale=ja_JP,sorting=nty]{biblatex} \addbibresource{test.bib} % ---- \begin{document} \autocite{Okumura2017LaTeX,Ban1991,hasegawa2004} \autocite{AsanoNakamura2009} \printbibliography[title=参考文献] % 参考文献リストの表示位置 \end{document}
test.bib ファイルは以下
@book{Okumura2017LaTeX, title = {{LATEX2{$\epsilon$}美文書作成入門}}, author = {奥村, 晴彦 and 黒木, 裕介}, year = {2017}, edition = {7}, language={Japanese}, publisher = {{技術評論社}}, address = {{東京}}, isbn = {978-4-7741-8705-1}, language = {Japanese}, sortname = {おくむらくろき} } @book{Ban1991, title = {マクロ計量モデル分析}, author = {伴, 金美}, year = {1991}, publisher = {{有斐閣}}, language = {Japanese}, yomi = {ばん}, sortname = {ばん} } @book{hasegawa2004, title = {線型代数 {{Linear Algebra}}}, author = {長谷川, 浩司}, year = {2004}, edition = {First}, publisher = {{日本評論社}}, yomi = {はせがわこうじ}, sortname = {はせがわ} } @book{AsanoNakamura2009, title = {計量経済学}, author = {浅野, 皙 and 中村, 二朗}, year = {2009}, edition = {Second}, publisher = {{有斐閣}}, sortname = {あさのせきなかむらじろう} }
*1:そしてローマ字で入力すると当然ながらABC順になるし, 欧文と一緒くたにもされてしまう. このページでは (これも古いのだが) ローマ字で入力している例を提示しているが, あきらかに「よしなに」やってはくれないので誤り: https://konn-san.com/prog/why-not-latexmk.html というか直後にバックエンドにbibtexを使ってるって書いてあるので関係ないのでは? この人の勘違いなのか, 更新で仕様がすっかり変わってしまったのかまでは確認したくないが...