いつもお世話になってるpTeXですが、
mixiのとあるコミュニティでの論争をきっかけにちょっと考えることがでてきました。
それは、
pTeXが解釈している文字コードは何か?
という問題です。
pTeX(sjis)とかpTeX(euc)とかかかれるように日本語エンコーディングで使い分けられるように(jisはどちらでも読めます)なっているわけですが、じゃあ
pTeXはそのTeXソースファイルをShiftJISとして認識しているのか?
そもそも、ShiftJISってなによ?
って話になるわけです。
ShiftJISってのはエンコーディングの名前です。
文字コードセットとしては、JIS-X0208+JIS-X0201
ここで問題となるのは、JIS-X0201の部分。昔で言うところのANK文字からカナを抜いた部分です。
これはASCIIコード(US-ASCII)と同じと思われていますが、現実には少し違います。
0x5cと0x7eが違います。
ここでTeXで問題となるのは、0x5cです。JIS-X0201では「円記号」 US-ASCIIでは「バックスラッシュ」です。
これは、TeXのコマンドシーケンス開始文字ですので、コード変換するわけには行きません。
では、pTeXではTeXと違い、「円記号」をコマンドシーケンス開始文字とすると仮定しましょう。
しかし、今度は、\verbコマンドで問題が生じます。
\verbはセパレータの間に書かれた文字列をそのまま表示するというコマンドです。
\verb/\/
とすると、0x5cのコードをそのまま表示してくれます...
これ、タイプセットすると*必ず*バックスラッシュになります。円記号になる処理系はないはずです。
ということは、pTeXでも0x5cはバックスラッシュなのです.... ????
この問題は、unicodeが絡むとよりややこしくなります。この話は後述。
EUCは基本的には、US-ASCII+JIS-X0208なのでこの問題は発生しません。
(Windowsでは誤ったEUCが使われます。これは正確にはCP51932)
