upTeX での \catcode` の挙動

upTeX での \catcode` の挙動

- Dora TeX の投稿
返信数: 3

ふと気になったのですが,upTeX で \catcode`<和文文字> を取得したときの挙動は,どのような仕様になっていましたでしょうか。

検証ソース

% plain upTeX document
\newlinechar=`\^^J
\def\compareCatcode#1{\message{#1 kcatcode=\the\kcatcode`#1 \space catcode=\the\catcode`#1^^J}}

\compareCatcode{^}
\compareCatcode{_}
\compareCatcode{$}
\compareCatcode{A}
\compareCatcode{0}
\compareCatcode{@}

\compareCatcode{あ}
\compareCatcode{ア}
\compareCatcode{亜}
\compareCatcode{☃}
\compareCatcode{。}
\compareCatcode{A}
\compareCatcode{0}
\compareCatcode{①}
\compareCatcode{⑵}
\compareCatcode{Ⅲ}
\compareCatcode{㈣}
\compareCatcode{⒌}
\compareCatcode{❻}
\compareCatcode{㊆}
\compareCatcode{ⅷ}
\compareCatcode{⓽}

\bye

出力

^ kcatcode=15 catcode=7
_ kcatcode=15 catcode=8
$ kcatcode=15 catcode=3
A kcatcode=15 catcode=11
0 kcatcode=15 catcode=12
@ kcatcode=15 catcode=12
あ kcatcode=17 catcode=12
ア kcatcode=17 catcode=12
亜 kcatcode=16 catcode=11
☃ kcatcode=18 catcode=4
。 kcatcode=18 catcode=12
A kcatcode=17 catcode=12
0 kcatcode=17 catcode=12
① kcatcode=18 catcode=3
⑵ kcatcode=18 catcode=3
Ⅲ kcatcode=18 catcode=12
㈣ kcatcode=18 catcode=12
⒌ kcatcode=18 catcode=3
❻ kcatcode=18 catcode=12
㊆ kcatcode=18 catcode=12
ⅷ kcatcode=18 catcode=12
⓽ kcatcode=18 catcode=3

このように,\catcode`<和文文字> の結果は不定な感じになっているようです。直観的には \catcode`<和文文字> の値は 12 になってほしい気がします。

なお,pTeX での \catcode`<和文文字> については,次のような情報が見つかりました。

Dora TeX への返信

Re: upTeX での \catcode` の挙動

- Dora TeX の投稿
規則性が分かりました。
upTeXでの \catcode`<和文文字> は,UTF-16LE で表したときの上位バイトの中身と解釈されるのですね。

Twitterでご指南頂いたアセトアミノフェンさん,ありがとうございました。
Dora TeX への返信

Re: upTeX での \catcode` の挙動

- Z. R. の投稿

つい先日開催された「TeXユーザの集い2016」の北川さんの発表資料が参考になるので載せておきます。

これを見て判るように、\catcode<和文文字コード> は元々無意味なため、最新の(u)pTeXではエラーとなります。(TeX Liveでは2017から。)

Z. R. への返信

Re: upTeX での \catcode` の挙動

- Dora TeX の投稿
ありがとうございます。
現場でそのスライドを見ながら講演を聴いていたのに,なぜか自分の中で話が結びついていませんでした。お恥ずかしい限りです(^_^;