BibTeXu の日本語対応 (CJK対応)

BibTeXu の日本語対応 (CJK対応)

- t tk の投稿
返信数: 1
BibTeXu (BibTeXのUnicode対応版) を日本語対応(CJK対応)にしました。
詳細はこちらのコメントにまとめてあります。

BibTeXu は入力を UTF-8とし内部処理にICUを導入して BibTeX を Unicodeに拡張したソフトウェアです。BibTeX-x の一部であり BibTeX8 (BibTeXの8bit文字対応版)と兄弟関係にあります。今まで BibTeXu は Unicode対応していたものの日本語特有の処理が実装されておらず、jBibTeX, (u)pBibTeX で施された日本語向けの拡張の機能が入っていませんでした。
今回、(j,(u)p)BibTeXの流れを汲む日本語向け拡張仕様をBibTeXu ver4.00 に取り入れ、日本語対応といえるレベルにした次第です。
TeX Liveの開発版 (r63360まで)にコミットしたのでTeX Live 2023に正式に入る予定です。

BibTeXu (v4.00) は (u)pBibTeX とほぼ互換の日本語対応になっていますが、以下のような違いがあります。
  1. upBibTeX は入力ファイルの文字コードとしてJIS, UTF-8その他が可能だがBibTeXuはUTF-8のみ可能。
  2. jname.bstで文献のタグに現れるイニシャルが日本語の場合に長さが異なる。
  3. *.bblの改行の位置が異なる場合がある。 (*.dviの結果には違いが無い)
  4. 文字列中のU+FEFF (BOM)がupBibTeXでは削除されるが、BibTeXuでは消されないで*.bblに残る。 (*.dviの結果には違いが無い)
その他の点で違いが無く、UTF-8になっていさえすれば従来の日本語を含む *.bibや *.bst がそのまま使えます。将来BibTeXuが(u)pBibTeXの後継として広く使われるようになることを期待しております。

その他、開発の過程で ((u)p)BibTeX の方にも改良や拡張を入れました。
  1. 組み込み関数 int.to.chr$, chr.to.int$ の対象を文字集合全体に拡張。(pBibTeX, upBibTeX共通)
  2. 組み込み関数 change.case$ の対象を拡張し、Latin-1、ギリシャ文字、キリル文字を扱えるように。(upBibTeXのみ)
  3. 変数 max_print_line を kpathsearchライブラリ変数にした。これにより texmf.cnf や環境変数で *.bbl の行の折り返しまでの文字の長さを変更できるようになった。(BibTeX, pBibTeX, upBibTeX共通)
3.は、度々話題になっておりました(例えば、ここここここ)。従来ハードコートされていて変更するには再コンパイルが必要でしたが、今後便利になるのではと期待しています。

何かお気づきの点があればお知らせください。
t tk への返信

Re: BibTeXu の日本語対応 (CJK対応)

- t tk の投稿
先ほど pbibtex-base の新版を CTAN に投稿しました。従来の ISO-2022-JP のものから UTF-8 に変換したものです。
今後、一般の環境に広がっていくものと思います。
Ref. https://github.com/texjporg/pbibtex-base/issues/2

pbibtex 用の標準入力ファイルがそのまま upbibtex で使用できたのに加え bibtexu でもそのまま使用できるようになります。

一方、「platex + pbibtex + レガシーエンコーディング + 文字コードの自動判定が無い」という環境では、新しい pbibtex-base のファイルでは動かなくなるはずです。
Windows では、従来よりデフォルトで文字コードの自動判定が有効になっているので問題は発生しにくいと思われます。
Mac, Linux系統では、TeX Live 2023 で文字コードの自動判定のルーチン(https://okumuralab.org/tex/mod/forum/discuss.php?d=3407)を入れたため、問題は発生しにくいと思われます。
「Mac, Linux系統でEUCなどのレガシーエンコーディングかつTeX Live 2022以前を使いたい」ような場合は、pbibtex-base の更新をしないことにより問題を回避できます。

何かお気づきの点がありましたらお知らせください。