(前回の続き)
前回*1に引き続いて、“次世代の pTeX”のお話。
今回は組版エンジン(あるいは言語処理系)としての機能について述べる。
※この記事は飽くまで現時点での状態を述べたものである。
pTeX-ng の起動コマンド
W32TeX においては、以下のコマンドが用意されている。
ptex-ng
: plain TeX フォーマット。platex-ng
: LaTeX フォーマット。((前回の記事を読めば解るように、これは「ptex-ng &platex-ng
」と等価なはずである。実は 2014 年 10 月頃の W32TeX では等価ではなく少しややこしいことになっていたが、現在は等価になっている(はず)。))
もちろん、この plain TeX や LaTeX は(up(La)TeX と同じ)日本語対応が施されたものである。
pTeX-ng は「pdfTeX 版の (u)pTeX」か?
結論から言うと、否である。pTeX-ng は DVI ファイルを出力せずに PDF ファイルを直接出力する。しかしそれ以外の点では、pdfTeX との共通点は非常に少ない。
pTeX-ng がサポートする機能は以下のものである。
注意すべきこととして、pTeX-ng は upTeX の上位互換となっているが、e-upTeX と比較すると完全な上位互換ではない。e-(u)pTeX でも pdfTeX 拡張の一部をサポートしているが、それらの多く(\pdffilemoddate
、\pdfsavepos
等)は pTeX-ng ではサポートされていない。
pdfTeX 拡張のプリミティブ
\pdfstrcmp
:〔展開可能〕 文字列の比較をする。- 詳しくは、「\pdfstrcmp プリミティブのお話」を参照。これがあるため、pTeX-ng で expl3 パッケージを用いることは可能である。(ただし、例のアレの話と同じく、エンジンの判定の問題がある。)
\pdfpagewidth
: 〔寸法パラメタ;読書可能〕 出力ページの横幅。\pdfpageheight
: 〔寸法パラメタ;読書可能〕 出力ページの縦幅。\pdfhorigin
: 〔寸法パラメタ;読書可能〕 TeX の座標系の横方向オフセット。\pdfvorigin
: 〔寸法パラメタ;読書可能〕 TeX の座標系の縦方向オフセット。- 周知の通り、TeX の座標系の原点は、用紙の左端および上端からそれぞれ 1 インチ内側に入った点になっている。pdfTeX ではこの値が可変になっていて、それを設定するのがこの 2 つの寸法パラメタである。当然、初期値はどちらも 1in となっている。LaTeX の普通の使用では意識する必要がなさそうに見えるが、実は
\mag
パラメタを変更する場合は、これらのパラメタについても考慮する必要がある。特に、pTeX-ng の場合、jsarticle のような\mag
を内部で利用している文書クラスの使用が将来に一般的になる可能性があるので注意を要する。この辺りの話については後日に詳しく述べたいが、要点は以下の通り:\mag
を変えた場合には\pdfhorigin
と\pdfVorigin
の値を 1truein に変更する必要がある。
- 周知の通り、TeX の座標系の原点は、用紙の左端および上端からそれぞれ 1 インチ内側に入った点になっている。pdfTeX ではこの値が可変になっていて、それを設定するのがこの 2 つの寸法パラメタである。当然、初期値はどちらも 1in となっている。LaTeX の普通の使用では意識する必要がなさそうに見えるが、実は
\pdfminorversion
:〔整数パラメタ;読書可能〕 出力する PDF のマイナーバージョン。可能な値の範囲は 3〜7 で、*3既定値は 5。*4\pdfcompresslevel
: 〔整数パラメタ;読書可能〕 ストリームの圧縮の使用を設定する。可能な値の範囲は 0〜9 で、既定値は 9。- この 2 つについては、詳細は「出力 PDF のバージョン(とか)を指定する(補足)」を参照。それぞれ、dvipdfmx のオプションの
-V
と-z
に対応する。なお、dvipdfmx の ‘pdf:minorversion
’ special は pTeX-ng では無効である。
- この 2 つについては、詳細は「出力 PDF のバージョン(とか)を指定する(補足)」を参照。それぞれ、dvipdfmx のオプションの
\quitvmode
: 〔命令〕 垂直モードから水平モードに移行する。(つまり段落を開始する。)- 要するに plain TeX で定義されたマクロ
\leavevmode
と同じ機能をもつ。マクロとしての実装だと\everypar
の影響で不都合が生じるケースがあるらしい(詳細不明)ので、pdfTeX でプリミティブが新設されている。
- 要するに plain TeX で定義されたマクロ
pTeX-ng 独自のプリミティブ
\ngostype
:〔展開可能〕 OSの種別を表す\the-
文字列に展開される。Win64
、Win32
、Linux
、Darwin
、Android
、Unknown
の何れか。
\ngbanner
:〔展開可能〕 起動時に最初に表示される“バナー”の\the-
文字列に展開される。- 「
This is pTeX-ng,
」から始まる文字列。pdfTeX の\pdftexbanner
に相当するもの。現状では、「エンジンが pTeX-ng であること」を自動で判定したい場合は、\ngbanner
の定義を見ればよいであろう。
- 「
(つづけ)