この文書ではムニャムニャムニャ。
多くの人にとって日本のレガシーエンコーディングよりもUnicodeの方が馴染みがあると思うので、まず最初にe-upTeXに絞って説明し、次にe-pTeXにおける差異について述べる。
- 和文文字に関する概念
- e-upTeXにおける和文文字トークンの扱い
- e-upTeXにおける字句解析
- e-pTeXにおける和文文字
- 補足事項
この文書ではムニャムニャムニャ。
多くの人にとって日本のレガシーエンコーディングよりもUnicodeの方が馴染みがあると思うので、まず最初にe-upTeXに絞って説明し、次にe-pTeXにおける差異について述べる。
e-upTeXの“入力漢字コード”がUTF-8、“内部漢字コード”がUnicodeであることを仮定する。
※upLaTeXでは普通はこの設定が使われる。 ※“内部漢字コード”等についてはあとで解説する。
TeXにおける「文字」に関する諸々の概念について、e-upTeXではその“和文版”が存在する。例えば以下の通りである:
※和文でない従来の「文字」のことを特に「欧文文字」と呼ぶ。
例えば、upLaTeXソース中のHello,␣世界!
という文字列が字句解析された場合、和文文字である“世”と“界”は和文文字トークンとなる。その他の“H”や“!”や“␣”は元祖TeXと全く同様に欧文文字トークンとなる。
有効な和文文字コードの範囲は "80~"10FFFF である。すなわち、和文は(XeTeX/LuaTeXと同様に)ネイティブにUnicodeを取り扱うが、ASCII文字は常に欧文として扱うため、0~"7Fの範囲は除外される。
※※上限が"10FFFFは実際は嘘だけど……。 ※※kchardefの話はあとで補足。
これに対して、欧文文字コードの範囲は元祖TeXと同じく0~"FFである。欧文については非ASCII文字はUTF-8のバイト列として取り扱われる。
※和文と欧文で非ASCIIの扱いが異なっている理由は、旧来のpTeXをUnicodeに対応させる際にこの形が自然であったからである。
例えば、upLaTeXソース中のTschüß, 世界!
という文字列が字句解析された場合、以下のようになる:
世
(U+4E16)は "4E16 という和文文字コードをもつ1つの和文文字トークンとなる。ü
(U+00FC)は、それぞれ "C3 と "BC の欧文文字コードをもつ2つの欧文文字トークンとなる。和文カテゴリコードは個々の和文文字役割を規定する。有効な値の範囲は15~19であり、次のような文字種が想定されている:
和文カテゴリコードによる実際の振る舞いの違いについては、以降で必要に応じて述べてゆく。
※例えば、制御語の名前を構成するのに使える和文文字は、和文カテゴリコードが16、17、19のものに限られる。
なお、和文文字は決して“アクティブ”にはならないことに注意。