状況はおそらく知られている
LaTeX
pdf-page-size はパッケージを使用して変更できることは知っていますgeometry
。しかし、 でそれをどのように行うのでしょうかplain-TeX
?
たとえば、\vsize
またはなどのページ関連のパラメータを変更すると\hoffset
、変更が導入されますが、PDF に書き込まれた用紙のフォーマット (ここでは 8.27 x 11.69 インチ) には影響しないようです。
% setting (some) page parameters
\vsize 3in
\pagegoal \vsize
\hsize 4in
\hoffset 2in
\topskip 1.5in
\headline{My head \hrulefill}\footline{\hrulefill Your foot - \the\pageno}
Lorem ipsum dolor sit amet consectetuer nibh enim congue porta vel. Commodo hendrerit pellentesque Curabitur quis consectetuer Integer laoreet ante adipiscing aliquet. Congue condimentum tempus lorem nec leo et semper Aliquam senectus augue. Dolor massa vitae Nullam Sed est dignissim penatibus tellus orci Aliquam. Nulla sed iaculis aliquet massa ipsum Nullam id ipsum vitae sapien. Consequat Vestibulum Ut id morbi Aliquam lobortis Fusce Lorem at platea. Nibh.
Justo elit montes nulla justo at quis nascetur diam Morbi Phasellus. Vestibulum enim Vestibulum semper Curabitur consequat ante penatibus quis ut auctor. Vestibulum nunc Aliquam interdum non wisi congue nec interdum Sed orci. Sed Nam consequat enim non sem dignissim vitae eleifend mauris mauris. Curabitur enim ligula massa orci aliquam ac Phasellus semper id tortor. Magna.
Vitae laoreet lorem Nulla Nunc Nunc nunc convallis nibh venenatis Vivamus. Curabitur laoreet felis congue interdum condimentum augue at condimentum id Aliquam. Suspendisse adipiscing velit ipsum ipsum Ut Aenean pellentesque consequat enim et.
\bye
質問
これをどうやって解決するのでしょうか? ここ、本、Web で何日も答えを見つけることができませんでした。私は、MikTeX の最新の TexWorks を使用しており、pdftex でコンパイルしています。
答え1
TeX (Knuth の意図どおり) にはページ サイズの概念がまったくありません。印刷や表示は常に DVI ドライバーの仕事です。
唯一の例外は、クヌースの命令により、すべてのドライバーがしなければならない最終的に使用される用紙(画面上の仮想用紙のみの場合もあります)に関係なく、用紙の左端から 1 インチ、上端から 1 インチの位置に原点があることを考慮してください。
は独自のドライバーであるためpdftex
、必要な用紙サイズを渡す必要があり、ジョブに必要ないくつかのプリミティブが提供されます。
\pdfpagewidth
そして\pdfpageheight
主なものは次のとおりです。\pdfhorigin
そして\pdfvorigin
次です。
ページの幅を 10 インチ、ページの高さを 9 インチにし、テキスト ブロックの左上隅を左端と上端の両方から 3 インチ離すとします。
\pdfpagewidth=10truein
\pdfpageheight=9truein
\pdfhorigin=3truein
\pdfvorigin=3truein
\hsize=4truein
\vsize=3truein
\input plipsum
\lipsum{3-7}
\bye
長さがセンチメートルで申し訳ありませんが、ほとんどの人がそれを使用しています。
答え2
参照点を用紙の左上隅に設定するために、\pdfhorigin
と\pdfvorigin
を に設定することをお勧めします。次に、と を用紙の境界から測定した余白として設定すると、マクロに +-1 インチの計算を含める必要がなくなり、作業が簡単になります。 と は、実際の用紙の幅と高さに設定する必要があります。0pt
\hoffset
\voffset
\pdfpagewidth
\pdfpageheight
たとえば、A4 用紙サイズですべての余白を 2cm にしたい場合は、次のように設定します。
\pdfhorigin=0pt \pdfvorigin=0pt % We don't support a sub-optimal Knuth's decision about (1in, 1in)
\pdfpagewidth=210mm \pdfpageheight=297mm % A4 paper dimensions
\hoffset=2cm
\voffset=2cm
\hsize=\dimexpr \pdfpagewidth - 2\hoffset \relax
\vsize= \dimexpr \pdfpageheight - 2\voffset \relax
OpTeX は、(1in,1in) 参照ポイントの位置が煩わしいため、\pdfhorigin
およびを 0pt に設定することに注意してください。\pdfvorigin
答え3
解決
解決策はすでに(ほぼ)あります。 でコンパイルすることですpdftex
。ユーザーマニュアル必要なのは、必要な項目を追加することだけですpdf-primitives
:
% setting pdf-page parameters <<<<<< new
\pdfoutput 1
\pdfpageheight 5in
\pdfpagewidth 8in
% setting (some) page parameters
\vsize 3in
\pagegoal \vsize
\hsize 4in
\hoffset 2in
\topskip 1.5in
\headline{My head \hrulefill}\footline{\hrulefill Your foot - \the\pageno}
Lorem ipsum dolor sit amet consectetuer nibh enim congue porta vel. Commodo hendrerit pellentesque Curabitur quis consectetuer Integer laoreet ante adipiscing aliquet. Congue condimentum tempus lorem nec leo et semper Aliquam senectus augue. Dolor massa vitae Nullam Sed est dignissim penatibus tellus orci Aliquam. Nulla sed iaculis aliquet massa ipsum Nullam id ipsum vitae sapien. Consequat Vestibulum Ut id morbi Aliquam lobortis Fusce Lorem at platea. Nibh.
Justo elit montes nulla justo at quis nascetur diam Morbi Phasellus. Vestibulum enim Vestibulum semper Curabitur consequat ante penatibus quis ut auctor. Vestibulum nunc Aliquam interdum non wisi congue nec interdum Sed orci. Sed Nam consequat enim non sem dignissim vitae eleifend mauris mauris. Curabitur enim ligula massa orci aliquam ac Phasellus semper id tortor. Magna.
Vitae laoreet lorem Nulla Nunc Nunc nunc convallis nibh venenatis Vivamus. Curabitur laoreet felis congue interdum condimentum augue at condimentum id Aliquam. Suspendisse adipiscing velit ipsum ipsum Ut Aenean pellentesque consequat enim et.
\bye
これで、ページ サイズは示されているとおり 8 x 5 インチになりました。
背景
この問題は確かによく知られており、新しいものではありません。例えば、この質問を参照してください。2013年からのいくつかのTeXコンパイラのページ余白特にコメント。
このパズルは、おそらく、今日では「印刷領域」を「用紙サイズ」と関連付けることに慣れているために生じているのでしょう。これは、ほとんどの場合レターサイズまたは A4 用紙を使用するオフィスまたは家庭用のプリンタを使用するテキスト プロセッサでは有効な仮定です。
しかし、TeX
活字は組版を念頭に置いて設計されており、より正確には、グーテンベルクや彼よりずっと前の中国人が印刷紙を作成した方法に基づいています。
つまり、印刷ブロック(タイプセットqまたはnのように、「図1印刷機」のhとラベル付けされたブロックの下に移動されます。) には、上に示したヘッダーとフッターの間の領域 (およびもう少し広い領域) がほぼ含まれています。いわゆるタイプセット セット上の座標は、\vsize
やなどの TeX パラメータ\hoffset
とその配置アルゴリズムによってそこに示されます。
一方、用紙のサイズは、実際に印刷する前にわかる場合とわからない場合があり、必ず大きめに印刷する必要があり、後で小さくカットされることになります。この(電子)用紙の取り扱いについてpdf-primitives
考えてみましょう。pdftex