pTeX 系のエンジンにどんなプリミティブがあるのか、だんだん判らなくなってきたので調べてみた。
一覧してみる
pTeX 系のエンジンがどのプリミティブを持っているかを表にまとめた。ただし以下に該当するものは除いている。
- 元祖 TeX のプリミティブ。これはどのエンジンも持っている。
- アスキーのサイトで紹介されているもの。pTeX 系のエンジンは何れもこれらのプリミティブを持っている。
- e-TeX 拡張のプリミティブ。*1a-pTeX と e-upTeX はこれらのプリミティブを持っている。
pTeX | e-pTeX | upTeX | e-upTeX | |
---|---|---|---|---|
\disablecjktoken |
○ | ○ | ||
\dtou |
○ | ○ | ○ | ○ |
\enablecjktoken |
○ | ○ | ||
\epTeXinputencoding |
○ | ○ | ||
\forcecjktoken |
○ | ○ | ||
\hfi |
○ | ○ | ||
\ifdbox |
○ | ○ | ○ | ○ |
\ifddir |
○ | ○ | ○ | ○ |
\ifmdir |
○ | ○ | ○ | ○ |
\ifpdfprimitive |
○ | ○ | ||
\iftbox |
○ | ○ | ○ | ○ |
\iftdir |
○ | ○ | ○ | ○ |
\ifybox |
○ | ○ | ○ | ○ |
\ifydir |
○ | ○ | ○ | ○ |
\kcatcode |
○ | ○ | ○ | ○ |
\kchar |
○ | ○ | ||
\kchardef |
○ | ○ | ||
\lastnodechar |
○ | ○ | ||
\odelcode |
○ | ○ | ||
\omathchardef |
○ | ○ | ||
\omathcode |
○ | ○ | ||
\pagefistretch |
○ | ○ | ||
\pdfcreationdate |
○ | ○ | ||
\pdffiledump |
○ | ○ | ||
\pdffilemoddate |
○ | ○ | ||
\pdffilesize |
○ | ○ | ||
\pdflastxpos |
○ | ○ | ||
\pdflastypos |
○ | ○ | ||
\pdfmdfivesum |
○ | ○ | ||
\pdfpageheight |
○ | ○ | ||
\pdfpagewidth |
○ | ○ | ||
\pdfprimitive |
○ | ○ | ||
\pdfsavepos |
○ | ○ | ||
\pdfshellescape |
○ | ○ | ||
\pdfstrcmp |
○ | ○ | ||
\scriptbaselineshiftfactor |
○ | ○ | ○ | ○ |
\scriptscriptbaselineshiftfactor |
○ | ○ | ○ | ○ |
\synctex |
○ | ○ | ||
\textbaselineshiftfactor |
○ | ○ | ○ | ○ |
\ucs |
○ | ○ | ||
\vfi |
○ | ○ |
やっぱり解らないので分類してみる
pTeX 拡張プリミティブ
アスキーのサイトにあるもの以外。
\dtou
\ifdbox
\ifddir
\ifmdir
\iftbox
\iftdir
\ifybox
\ifydir
\kcatcode
\scriptbaselineshiftfactor
\scriptscriptbaselineshiftfactor
\textbaselineshiftfactor
upTeX 拡張プリミティブ
\disablecjktoken
\enablecjktoken
\forcecjktoken
\kchar
\kchardef
\ucs
- upTeX と e-upTeX は「upTeX 拡張プリミティブ」を持っている。それ以外のエンジンは持っていない。
SyncTeX拡張プリミティブ
\synctex
- この
\synctex
は--synctex
オプションの有無を示す整数パラメタ。書込も可能で、文書の途中で\synctex=1
を実行するとそこ(現在のページ?)から SyncTeX 出力が有効になる。 - SyncTeX データ出力機能(「SyncTeX 拡張」)をもつエンジン全てが
\synctex
をもつわけではないらしい。TeX Live においては、pTeX 系全てと pdfTeX、XeTeX、LuaTeX が「SyncTeX 拡張」をもつが,\synctex
を持っているのは「e-TeX 拡張をもつもの」(つまり e- でない pTeX と upTeX 以外)に限られる。
pdfTeX 互換拡張プリミティブ
\ifpdfprimitive
\pdfcreationdate
\pdffiledump
\pdffilemoddate
\pdffilesize
\pdflastxpos
\pdflastypos
\pdfmdfivesum
\pdfpageheight
\pdfpagewidth
\pdfprimitive
\pdfsavepos
\pdfshellescape
\pdfstrcmp
- pdfTeX との互換のため、e-pTeX/e-upTeX がこれらのプリミティブをサポートしている。
- ここに挙げるプリミティブに関しては、新しい LuaTeX (v0.85以降)はそのままの形ではサポートしていない。“違う名前”になっているか、または(Lua で実装可能という理由で)削除されている。
- XeTeX に関しては、一部のプリミティブはそのままサポートされていて、一部は“別の名前”になっている。
- なお、
\pdfpagewidth
/\pdfpageheight
の役割については以下を参照。- e-pTeX の \pdfpagewidth プリミティブ (アレForum)
Omega 互換拡張プリミティブ
\odelcode
\hfi
\omathchardef
\omathcode
\pagefistretch
\vfi
- e-pTeX/e-upTeX*2 ではこれらの Omega 互換のプリミティブをサポートしている。
- pdfTeX や XeTeX ではこれらのプリミティブはサポートされていない。LuaTeX では一部がサポートされている。
e-pTeX 独自の拡張
\epTeXinputencoding
\lastnodechar
やっぱり解らないので嘆息してみる
複雑すぎる……。