前回の続き。今回はpdfTeXについて。
pdfTeX関連の注意事項
※一般の注意事項については初回の記事を参照。
- 整数・寸法・グルー値の情報を返すプリミティブは、他のエンジンでは「読取専用のパラメタ」として提供される(例えば
\lastkern
)ことが多いが、pdfTeXでは「その値を表す\the-文字列に展開する展開可能プリミティブ」であることが多い。 - pdfTeXのマニュアルでは
\pdfincludechars
が展開可能プリミティブとして挙げられているが、実際には展開不能であるようだ。恐らくこれは単純な記述ミス……?
pdfTeXのやつ
pdfTeXの追加のif-トークン ☆:
\ifincsname
\ifpdfabsdim‹整数比較›
\ifpdfabsnum‹寸法比較›
\ifpdfprimitive‹トークン›
\expanded{‹トークン列›}
★:そのトークン列の完全展開の結果。- つまり“展開の加速”(一回展開で完全展開を引き起こす)ができる。
- 「pdfTeX拡張プリミティブ」という扱いなのであるが、事情があって、一番先にLuaTeXで実装された。pdfTeXで実装されたのはずっと後になってからである(参考)。
\leftmarginkern‹整数:ボックス番号›
: ボックスの左側マージンカーンの幅(寸法)。\pdfcolorstackinit
[page
] [direct
]{‹文字列:PDF命令列›}
◇: 色スタックを新規作成した上で、その色スタック番号(整数)に展開される。\pdfcreationdate
:処理開始日時をPDF日時形式で現した文字列。- 「PDF日時形式」は
D:20060102150405+07'00'
のような形式。
- 「PDF日時形式」は
\pdfescapehex{‹文字列›}
:その文字列の16進ダンプの文字列。- 「16進ダンプ」は各文字の符号値の16進表記(0埋め、大文字)を並べたもの。
\pdfescapename{‹文字列›}
:その文字列に対して「PDF名前」用のエスケープを適用した結果の文字列。\pdfescapestring{‹文字列›}
:その文字列に対して「PDF文字列」用のエスケープを適用した結果の文字列。- PDF文字列を現す外側の丸括弧
()
は付かない。
- PDF文字列を現す外側の丸括弧
\pdffiledump
[offset‹整数:開始位置›
] [length‹整数:長さ›
]{‹文字列:ファイル名›}
:そのファイルの指定の位置の内容(バイト列)の16進ダンプの文字列。\pdffilemoddate{‹文字列:ファイル名›}
:そのファイルの更新日時をPDF日時形式で現した文字列。\pdffilesize{‹文字列:ファイル名›}
:そのファイルのサイズ(整数)。\pdffontname‹フォント›
:そのフォントを一意に指定する番号(整数)。- PDF中で
F‹番号›
という名前がそのフォントに対応する。
- PDF中で
\pdffontobjnum‹フォント›
:そのフォントに対応するPDFのFontオブジェクトの番号(整数)。\pdffontsize‹フォント›
:そのフォントのサイズ(寸法)。\pdfinsertht‹整数:insert番号›
:そのinsertの現状での高さ(寸法)。\pdflastmatch‹整数›
:最後に実行した正規表現検索(\pdfmatch
)の指定番号のマッチの情報で、「‹位置›->‹文字列›
」という形式の文字列。- 位置は0起点。指定番号のマッチが無効の時は「
-1->
」となる。 - 一般の正規表現検索の慣習に従い、番号0は全体のマッチを表す。もし最後の検索が失敗だった場合は0も含めて全てのマッチが無効になる。
- 位置は0起点。指定番号のマッチが無効の時は「
\pdfmatch
[icase
] [subcount‹整数:グループ数上限›
]{‹文字列:パターン›}{‹文字列:検索対象›}
◇:正規表現検索を行った上で、結果を表す整数に展開される。\pdfmdfivesum
[file
]{‹文字列›}
:その文字列のMD5ハッシュ値の16進ダンプの文字列。file
オプション付きの場合は、‹文字列›
の名前のファイルのハッシュ値になる。
\pdfpageref‹整数:ページ番号›
:そのページ番号に対するPDFのPageオブジェクトの番号(整数)。\pdfstrcmp{‹文字列1›}{‹文字列2›}
:2つの文字列を比較した結果を表す整数。\pdftexbanner
:エンジンのバナー文字列。- 「バナー文字列」とは起動時に端末に出力される「
This is pdfTeX, …
」のような文字列。
- 「バナー文字列」とは起動時に端末に出力される「
\pdftexrevision
:エンジンのリビジョン番号。- なお
\pdftexversion
は読取専用整数パラメタである。 - 例えばバージョン番号が「1.40.21」の場合、
\pdftexrevision
は21
に展開される(ドットは付かない)。\pdftexversion
は140になる。
- なお
\pdfunescapehex{‹文字列:16進ダンプ›}
:その16進ダンプが表す文字列。- 16進数字の英字は大文字でも小文字でもよい。16進数字以外の文字は無視される。
\pdfuniformdeviate‹整数:上限›
:0以上‹上限›
未満の一葉乱数(整数)。\pdfxformname‹整数›
:その番号のFormオブジェクトを一意に指定するTeX内で使用される番号(整数)。- PDF中で
Fm‹番号›
という名前が当該のFormオブジェクトに対応する。
- PDF中で
\pdfximagebbox‹整数:Image番号›‹整数:位置番号›
:その番号のImageオブジェクトのバウンディングボックスの、位置番号に対応する座標値(寸法)。- 位置番号:1=左下隅x、2=左下隅y、3=右上隅x、4=右上隅y。
rightmarginkern‹整数:ボックス番号›
: ボックスの右側マージンカーンの幅(寸法)。
そして最後に特殊なもの。
\pdfprimitive
は「直後の制御綴を、それが現在保持している値とは無関係に、同名のpdfTeXのプリミティブを保持するものと見なす」という、やや特殊な働きを持つ。\pdfprimitive\制御綴…
が展開可能であるかは、「\制御綴
と同名のプリミティブ」が展開可能であるかに依存する。