文字コード自動判定 TeX Live 2023

文字コード自動判定 TeX Live 2023

- t tk の投稿
返信数: 0
先日 TeX Live の開発版の ptexenc に入力ファイルの文字コードの自動判定機能を入れましたので紹介します。
詳細は↓で議論しています。
[ptexenc] 入力ファイルの文字コードの自動判定

入力ファイルの文字コードの自動判定機能は、土村さんが開発なさったものがあり W32TeXで採用され Windowsで利用されていました。
その実装は、nkf の文字コード自動判定を呼び出すものでした。
しかし TeX Live には導入されておらず Mac や Linux などでは利用できませんでした。
今回、自動判定ルーチン ptexenc_guess_enc() を新しく書いて TeX Live 開発版に入れました。
今後 TeX Live 2023 の配布に含まれ Mac や Linux などでも利用可能になる予定です。

使い方は、基本的に土村さん版を踏襲しています。(mendexと(u)pbibtexのコマンドラインオプションは新規)

  • kpathsearchの変数 guess_input_kanji_encoding を 1 または y または t にすると有効になる
  • (e)(u)ptex, (u)platex と mendex ではコマンドラインオプション --(no-)guess-input-enc で有効/無効が切り替わる。(kpathsearchの変数よりもこちらを優先)
  • (u)pbibtexではコマンドラインオプション -(no-)guess-input-enc で有効/無効が切り替わる。(kpathsearchの変数よりもこちらを優先)

texmf.cnf のデフォルトの設定は ptex, eptex, platex, platex-dev, pbibtex, mendex で有効としてあります。
uptex, uplatexなどUnicodeのものは入力ファイルが UTF-8 で統一されていることを想定してデフォルト無効にしてあります。

文字コードの判定は、入力ファイルごとに行われます。
文字コードの判定ルーチンは、よく知られているように 100% 完全な判定は不可能で、今回のアルゴリズムでも誤判定が出る可能性は残っています。
今回は、複数の文字コードの可能性が残る場合は file_enc を選ぶようにしました。
誤判定で不都合が生じる場合は、自動判定を無効にして、全ての入力ファイルの文字コードを統一してそれを入力ファイルの文字コードとして指定して下さい。

私見ですが、
文字コードの混在は不具合の原因になりますので、このような不安定な機能に頼ることなく、入力ファイルの文字コードを統一することを推奨します。

充分テストしたつもりですが、予期せぬ動作など、お気づきの点があればお知らせください。