plain-TeX で生成された PDF ファイルのページ サイズを変更するにはどうすればよいですか?

plain-TeX で生成された PDF ファイルのページ サイズを変更するにはどうすればよいですか?

状況はおそらく知られている

LaTeXpdf-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

関連情報