dviファイルの構成2

ポスタンブル

ヘッダ

ポスタンブルの先頭です.

post p[4] num[4] den[4] mag[4] l[4] u[4] s[2] t[2]

post(248)から始まる,4+4+4+4+4+4+2+2=29バイトです.

  • p (4バイト):最後のページのbopの位置(開始位置)
  • num:プリアンブルと同じ
  • den:プリアンブルと同じ
  • mag:プリアンブルと同じ
  • l(4バイト):ページにおける高さと深さの最大値の和
  • u(4バイト):ページの幅の最大値
  • s(2バイト):スタックの最大レベル
  • t(2バイト):全ページ数

という構成です.

けど,ちょっとlとuの値の意味が分からない・・・既存のdviwareはここをどのように処理
してるのであろうか。何度計算しても,値が微妙に合わない気がします.dvi原点のことを忘れてた。。。TeX Q&AでのZRさんのご指摘に感謝.

追記(2008/4/29)

ページの「幅の最大値」・「高さと深さの和の最大値」というのは「dvi原点」(用紙左隅から横に1インチ,下に1インチの点)を基準にしたもので,LaTeXにおいては以下の値になります.

  • ページの幅の最大値:\oddsidemargin (\evensidemargin) + \textwidth
  • ページの高さと深さの和の最大値:\topmargin + \headheight + \headsep + \textheight + \footskip

ページ幅の最大値は奇数・偶数ページでマージンの取り方が違う場合も多いので,値の大きい方(厳密には小さくない方)ということです.
また,「ページの高さと深さの和の最大値」はフッタに深さがあるものをいれた場合はそれに応じて大きくなります.

このとき,dviに記録される値の単位は通常は「sp」(1/65536 pt)です.厳密には $\frac{\mbox{num}}{\mbox{den}} \times 10^{-7} \times \frac{\mbox{mag}}{1000}  \mbox{m}$
が単位ですが,普通は num=2.54 * 10^7,den=7227*2^{-16},mag=1000です.したがって,
2.54/7227 * (1/65536) m = 2.54/7227 * (1/65536) *100 cm = 2.54cm / 72.27 * (1/65536) = 1inch / 72.27 * (1/65536) = 1/65536 pt = 1sp(1inch=2.54cm,1inch=72.27ptに注意)です.

はっきりいうとlとuは役に立ちません.