マクロツイーター

はてダから移行した記事の表示が崩れてますが、そのうちに直せればいいのに(えっ)

例の BXbase の何かの話(2)

前回の続き)

さて、ここまでに行った判定手順では入力漢字コードが「自動判定」である場合を扱えていない。実際に「自動判定」である場合に pxbsjc.def を読み込むと、euc であると判定される。そこで、\bxInputEncoding ではもう一つ判定用のファイルを用意している。

[pxbsjc1.def]
%
% pxbsjc.def
% Warning: Do not change encoding of this file!
\def\bxtb@tmpa{??????}% E9 BD B7 E9 BD B7
% ??? % 82 4F 21
\endinput
% EOF

pxbxjc.def と比べるとコメント行が 1 行追加されている。その中の「???」は実際には「82 4F 21」のバイト列であり、これは sjis としては「0!」(先頭は全角のゼロ)となるが、euc や utf8 としては解釈できない。従って、自動判別を行った場合、このファイルは確実に sjis と判定される。(そして、コメント行以外の内容は pxbsjc.def と全く同一のため、この pxbsjc1.def がどの漢字コードに判定されたかは pxbsjc.def と同じ方法で調べられる。)これを利用すると、以下の手順で「自動判別」を判別できる。

  • pxbsjc.def は euc、pxbsjc1.def は sjis として読まれた → 入力漢字コードは自動判別
  • pxbsjc.def は euc、pxbsjc1.def も euc として読まれた → 入力漢字コードは euc
  • (pxbsjc.def の判定が euc 以外の場合は pxbsjc1.def での判定は不要。)