uplatex + biblatex + biberでエラーが出る

uplatex + biblatex + biberでエラーが出る

- 大宮 貴史 の投稿
返信数: 5
Arch Linuxに手動でインストールしたTeX Live 2017 最新版を使っています。
scheme-basicを用い、必要なもののみ手動でインストールしています。
biblatex + biberを使おうとしたところ、何度やってもエラーが出てしまうため質問させて頂きます。

例えばここにあるsimple exampleを使ってみます。
https://en.wikibooks.org/wiki/LaTeX/Bibliographies_with_biblatex_and_biber#A_simple_example

$ pdflatex doc.tex
$ biber doc
$ pdflatex doc.tex
$ pdflatex doc.tex
は正常に動くのですが、
$ uplatex doc.tex
$ biber --bblencoding=utf8 -u -U --output_safechars doc
$ uplatex doc.tex
とすると、次のようなエラーが出てしまいます。

! Bad character code (8217).

=
l.12 \end
{document}
?

これは私の環境でのみ起こる問題なのでしょうか。
対処法など教えて頂けると幸いです。
大宮 貴史 への返信

Re: uplatex + biblatex + biberでエラーが出る

- aminophen の投稿
結論から言うと,\usepackage[backend=biber]{biblatex} の後に

\DeclarePrefChars{'-}

という行を足せば upLaTeX でもエラーが出ません。以下詳細です。

10 進数で 8217 の文字は,16 進数では U+2019 つまり ’ という文字です。
そこで biblatex 関連ファイルの中でこれを探索すると biblatex.sty の中に
\DeclarePrefChars{'’-}
というコードが入っていました。biblatex のマニュアルによると,これは
「文字の後にスペースを入れない,という特別扱いをする文字のリスト」
です。この「特別扱いリスト」の中に「和文扱いされる文字」が含まれる場合,
(u)pTeX ではエラーになります。
そこで上記のように U+2019 ’ を取り除いてやれば ok になります。

> ! Bad character code (8217).

エラーが出る原因については,現在の (u)pTeX が
\sfcode`(文字)=(数値)
という書式で指定可能な (文字) が「欧文扱いされる文字」(既定では 0〜255)に
限られるからです。U+2019 は和文扱いされる文字なので,\sfcode`’=(数値) を実行
しようとしてエラーが出ています。
aminophen への返信

Re: uplatex + biblatex + biberでエラーが出る

- 大宮 貴史 の投稿
理由については理解できていませんが、コードを追記することでエラーが出なくなることを確認できました。

ネット記事も見つかりますし、前はこの組み合わせで問題なく動いていたと思うのですが、いつからか動かなくなってしまったのですかね。
とても助かりました。ありがとうございました。
大宮 貴史 への返信

Re: uplatex + biblatex + biberでエラーが出る

- aminophen の投稿
> 前はこの組み合わせで問題なく動いていたと思うのですが、
> いつからか動かなくなってしまったのですかね。

2017年に入ってから起きた問題のようです。
具体的には,リクエストを受けて U+2019 が特別扱いに追加されていて,
これがリリースされたのは先月か今月の v3.8 になってからです。
https://github.com/plk/biblatex/issues/506
海外では (u)pTeX 自体がほとんど知られていないので,
ときどきこういうことが起きるのでしょう。
https://github.com/plk/biblatex/issues/659
に issue を飛ばしてみました。
aminophen への返信

Re: uplatex + biblatex + biberでエラーが出る

- 大宮 貴史 の投稿
経緯がよくわかりました。
issue作成までして頂きありがとうございます。
これで解決されるとよいのですが。
大宮 貴史 への返信

Re: uplatex + biblatex + biberでエラーが出る

- aminophen の投稿
https://github.com/plk/biblatex/issues/659
を経て,biblatex 3.10 の開発版(まだ正式版ではないですが)の時点で
uplatex + biblatex + biber が動作するようになりました。