周知の通り、オリジナルの TeX は出力(DVI)に紙面の大きさを記録しない(そもそも「紙面の大きさ」という概念がない)。従って、PDF に変換する時に紙面の大きさを DVI ドライバの起動オプションで指定する必要がある。ただし、pdfTeX や XeTeX のような「直接 PDF を出力する」エンジンでは(論理的に)自身が DVI ドライバを兼ねることになるので、紙面の大きさのパラメタをもつことになる。また DVI ドライバによっては、紙面の大きさを指定する special 拡張命令を提供するものもある。
ここでは PDF に変換することのみを考え、また「ドライバ」として、dvips、dvipdfmx、pdfTeX(pdfTeX/LuaTeX の PDF モード)、XeTeX を取り上げる。紙面の大きさを指定する方法は次のようなものがある。
- papersize special。(例:
\special{papersize=10cm,12cm}
)[pdfTeX 以外] - pdf:pagesize special。(例:
\special{pdf:pagesize width 10cm height 12cm}
)[dvipdfmx、XeTeX] - landscape special。(
\special{landscape}
)[pdfTeX 以外] - 各 DVI ドライバのオプション[pdfTeX 以外]
\pdfpagewidth
、\pdfpageheight
変数。[XeTeX、pdfTeX]
XeTeX は見掛け上は PDF を直接出すが、内部では、まずエンジンが「XDVI 形式」(DVI の拡張)のファイルを書き出し、それを xdvipdfmx(dvipdfmx の拡張)が PDF に変換するという手順をとっている。実際に処理を分けて実行することも可能で、4 は xdvipdfmx のオプションを指す。
複数の指定をした時に、どれが優先されるかを調べてみた。
[dvips]
- 「-t landscape」オプション、または landscape special。
- 「-t 〈名前〉」オプション。(例:「
-t b4
」) - 「-T」オプション。(例:「
-T 10cm,12cm
」) - papersize special。
- まず、C か D がある場合は A を無効化する。
- その上で、「B+A」→「C」→「D」→「既定値+A」の順で、指定がある最初のものを採用する。ただし「+A」は「A が有効ならば縦と横の長さを交換する」を意味する。用紙サイズの既定値は TeX システムにより異なる(多くは A4 かレター)。
例えば、「papersize=10cm,12cm
」「landscape
」の special を含む DVI を「dvips -Ppdf -t landscape -t b5 -T 11cm,13cm
」→「ps2pdf
」で PDF に変換した場合、紙面サイズは「B5 縦」となる。
[dvipdfmx/XeTeX]
- 「-l」オプション、または landscape special。
- papersize special または pdf:pagesize special。
- 「-p」オプション。(例:「
-p 10cm,12cm
」)
- 「B」→「C+A」→「既定値+A」の順で、指定がある最初のものを採用する。
- XeTeX の場合、XDV の各ページの最初(bop 直後)に自動的に「
pdf:pagesize width 〈\pdfpagewidth の値〉 height 〈\pdfpageheight の値〉
」の special を挿入する。ただし \pdfpagewidth/height のいずれかがゼロ(0.0pt 以下)の場合は代わりに「pdf:pagesize default
」を出力する(これは全く何の働きもしないようだ)。 - B が複数ある場合は、各ページについて、その末尾においてそれ以前に指定された中で最後のものが採用される。
[pdfTeX]
各ページについて、shipout 時の \pdfpagewidth/height
が使われる。
[special や起動オプションの中の長さ単位の true 指定]