CWEB ドキュメントのページ サイズを設定するにはどうすればよいですか?

CWEB ドキュメントのページ サイズを設定するにはどうすればよいですか?

CWEB ファイルがあり、ページ サイズを変更したいと考えています。プレーン TeX ドキュメントでこれを行う方法はわかっていますし、これまでは問題なく機能していました。CWEB ファイルで同じ操作 (hsize、オフセットの変更など) を行うと、余白と配置が完全に台無しになります。

A4 用紙に出力したいのですが、最終的なページ サイズは pdftex によって A4 に設定されているので、これは問題ではありません。問題はむしろ、CWEB がレター ペーパー出力用に作成されているため、たとえばコピーが中央に配置されないことです。

Knuth の Stanford Graphbase で解決策を探してみました。これは書籍形式で公開された一連の CWEB プログラムなので、ページ サイズを変更するために何らかの操作を行ったに違いありません。ただし、彼がインターネットで公開しているソースはレター出力用に作成されているため、役に立ちません。何かアイデアはありますか?

これまでに、CWEB ファイルの先頭に次のコードを追加しました (ちなみに、このコードはプレーンな TeX ファイルでも機能します)。

\newdimen\pagewidth   \pagewidth=210mm
\newdimen\pageheight  \pageheight=297mm

\hsize=13cm

\hoffset=\pagewidth
\advance\hoffset by-\hsize
\hoffset=.5\hoffset
\advance\hoffset by-1in

\voffset=\pageheight
\advance\voffset by-\vsize
\voffset=0.5\voffset
\advance\voffset by-1in

答え1

これはCWEBマニュアルに記載されています(texdoc cwebDVIファイルを開くを呼び出すことで開くことができます。オンラインでPDFとして読む)、 で付録 C: CWEB マクロの使用方法(25ページ)、ポイント4。

コツは、\pagewidth(デフォルト 6.5 インチ)、\pageheight(デフォルト 8.7 インチ)、または\fullpageheight(デフォルト 9 インチ) のいずれかを設定した後、次のように言う必要があることです\setpage

これらの数量のいずれかを変更する場合は、変更後すぐにマクロ \setpage を呼び出す必要があります。


: ダウンロードした場合lp.wクヌースよりダウンロード可能なプログラムページを実行し、 を実行するcweave lp.wと が得られ、これを(または)lp.texで処理すると、最初のページとして次のものが生成されます。tex lp.texpdftex lp.tex

lp-デフォルト

上部lp.tex

\input cwebmac
\datethis

\input cwebmac
\pagewidth=3.25in % The default is 6.5in
\pageheight=4.35in % The default is 8.7in
\fullpageheight=4.5in % The default is 9in
\setpage
\datethis

(すべてを半分にすると)、(PDF 用紙サイズを変更しない場合は) 次のようになります。

lp半分


特に A4 用紙の場合、レター用紙と同じ余白を維持したい場合 (あまり意味がないかもしれませんが、1 つのオプションです)、ファイル\input cwebmacの上部にあるを.tex次のように変更できます ( を使用している場合pdftex)。

\input cwebmac
\pdfpagewidth=210mm
\pdfpageheight=297mm
\pagewidth= 159.2mm % The default is 6.5in for 8.5in width, so for A4 this is 210mm - 2in
\pageheight=238.58mm % The default is 8.7in for 11in height, so for A4 this is 297mm - 2.3in
\fullpageheight=246.2mm % The default is 9in for 11in height, so for A4 this is 297mm - 2in
\setpage

レイアウト(テキストの幅、改行など)をレター用紙と同じに保ちながら、代わりにそれを A4 用紙に圧縮して中央に配置する場合(Igor の回答で提案されているように)、もちろん、特定の操作を行う必要はなくcwebmac、同じコード ブロックをどこでも使用できます。調整するだけです\pdfhorigin。デフォルトは1in(=(8.5in - 6.5in)/2) です。ファイルの先頭にこれを追加するだけで、他の変更は行いません。

\pdfpagewidth=210mm
\pdfpageheight=297mm
\pdfhorigin=\dimexpr (210mm-6.5in)/2
\pdfvorigin=\dimexpr (297mm-9in)/2

関連情報