pTeX の e-TeX 拡張版である e-pTeX が登場してもう 5 年以上の時が経った。TeX Live では 2011 年版から (u)pLaTeX のエンジンが e-(u)pTeX になっている。日本の LaTeX ユーザでも e-(u)pTeX エンジンの利用の割合もかなり増えているのではないだろうか。
というわけで、多くの人が愛用している e-(u)pTeX エンジンについてのクイズ。
e-(u)pTeX エンジンにおける、各型のレジスタの個数は幾つか。
さて、すぐに答えられるだろうか。
大正解!!
……でも特に差支えないと思うが、もう少し精確な知識を求める人のための補足。
TeX エンジンのレジスタの数については、例えば某 ZR 氏の発表「日本人の知らない TeX」(2010 年の某「集い」)などで触れられているように、以下のように変化している。
- Knuth 氏のオリジナルの TeX エンジンでは 256 個。
- e-TeX 拡張をもつエンジンでは 32768 個。例えば e-TeX、pdfTeX、XeTeX。
- Omega 拡張をもつエンジンでは 65536 個。例えば Omega や LuaTeX。
さて、e-pTeX は e-TeX 拡張をもつ pTeX であり、Omega 拡張は持っていないはずだ。実際、e-pTeX も e-upTeX も欧文の符号空間は 8 ビットのままである。*1というわけで、当然、
となるはずである。早速確かめてみよう。
*\count55555=42 *\showthe\count55555 > 42. <*> \showthe\count55555 ?
アレ!? 何故か \count55555
に代入できている、ナンデ?
ちなみに、pdfTeX では \count55555
の代入は“正しく”エラーを返す。
*\count55555=42 ! Bad register code (55555). <to be read again> = <*> \count55555= 42 ?
意外な結果になったので、ちょっと調べてみた。
これによると、e-TeX 拡張とは別に「FAM256 パッチ」という拡張が存在することが判った。*2
- 「FAM256 パッチ」とは、Omega 拡張のうち次に挙げる要素をエンジンに加えるものである:
- (欧文の)文字コードは 8 ビットのままである。
- e-pTeX のビルドでは FAM256 パッチは既定で有効になっている。
他の資料を見る限りでも、W32TeX や TeX Live での e-(u)pTeX のバイナリは FAM256 を含めてビルドされているようである。(手許の WIndows 版では実際に有効になっている。)
そういうわけで、現在配布されている e-(u)pTeX のほぼ全てでレジスタの個数は 65536 個である、といって良さそうである。ただし、FAM256 が無効な e-pTeX が全く存在しないとは言い切れない。よって、厳密な結論としては: