Closed h20y6m closed 2 years ago
pTeX の UTF-8 入力では,JIS X 0208 の範囲外の Unicode 文字は ^^xx
記法に(ptexenc で)変換されてから,pTeX 本体が処理することになります.
つまり,今回の例でいうと,
\test{^☃}
と入力しても,pTeX は
\test{^^^e2^^98^^83}
が入力されたと解釈する(両者は区別できない),ということです.
勘違いだったようですみません。
% UTF-8で保存。
\catcode32=9
\def\test#1{\expandafter\testi\detokenize{#1}\relax}
\def\testi#1{\ifx#1\relax\else\immediate\write16{[#1]}\expandafter\testi\fi}
\test{^ ☃}
とすると
[^]
[^^e2]
[^^98]
[^^83]
と正しく処理されました。
^
+ 欧文バイトを \detokenize すると文字列が壊れます。を実行すると
おそらく
\detokenize
の内部で^^^e2^^98^^83
を生成しそれを再解釈することによって発生するのではないかと思います。