e-pTeX の \pdfpagewidth プリミティブ

e-pTeX の \pdfpagewidth プリミティブ

- Z. R. の投稿
返信数: 2

現在の e-(u)pTeX エンジンには、pdfTeX と同様に、\pdfpagewidth\pdfpageheight というプリミティブが存在します。

% plain e-pTeX 文書
\pdfpagewidth=100pt \pdfpageheight=100pt
こんにちは{\TeX}。
\bye

もちろん、e-pTeX は DVI 出力しかしないので pdfTeX と同じ仕様でないのは確かです。で、実際にこれらのパラメタにゼロでない値を入れてみても、出力される DVI ファイルには影響がないように見えます。

これらのプリミティブは何をするものなのでしょうか。

Z. R. への返信

Re: e-pTeX の \pdfpagewidth プリミティブ

- 北川 弘典 の投稿
覺えていないので,現行の e-pTeX のソース (pdfutils.ch) の記述を
読んで返信を書いています.

e-(u)pTeX では \pdfsavepos, \pdflast{x,y}pos で
dvi上の絶対位置を取得することができますが,用紙の左下が原点で,
x は右方向,y は上方向に行くほど大きくなります.

一方,dvi では http://ascii.asciimw.jp/pb/ptex/dvi/ にあるとおり
横組時は h は右方向,v は下方向に行くほど大きくなります.
(縦組時は h は下方向,v は左方向に行くほど大きい)
\pdfpagewidth/\pdfpageheight は,両者の差を埋めるため*だけ*に
実装したプリミティブだったと記憶しています.
北川 弘典 への返信

Re: e-pTeX の \pdfpagewidth プリミティブ

- Z. R. の投稿

なるほど。納得しました! こんな感じの経緯なのですね。

  • pdfTeX の \pdfsavepos は元々 PDF モード専用で、そのため PDF の座標系に合わせて用紙左下を原点としていた。
  • その後、DVI モードでも \pdfsavepos をサポートするようになり、そのため「DVI モードでも \pdfpageheight が参照される」という仕様が生じた。
  • e-pTeX で \pdfsavepos をサポートするため、\pdfpageheight も必要になった。

回答ありがとうございました。