
Ich habe eine CWEB-Datei und möchte die Seitenabmessungen ändern. Ich weiß, wie das in einem einfachen TeX-Dokument geht, und bei mir hat es immer gut funktioniert. Wenn ich dasselbe (Ändern der Seitengröße, der Offsets usw.) in der CWEB-Datei mache, sind die Ränder und die Platzierung völlig durcheinander.
Ich möchte eine Ausgabe im A4-Format. Die endgültigen Seitenmaße sind von meinem pdftex auf A4 eingestellt, das ist also nicht das Problem. Das Problem ist eher, dass CWEB für die Ausgabe im Briefformat ausgelegt ist, sodass die Kopie beispielsweise nicht zentriert ist.
Ich habe versucht, in Knuths Stanford Graphbase nach einer Lösung zu suchen, da es sich um eine Reihe von CWEB-Programmen handelt, die im Buchformat veröffentlicht wurden. Er muss also etwas getan haben, um die Seitenabmessungen zu ändern. Die Quellen, die er im Internet zur Verfügung stellt, sind jedoch für die Ausgabe in Briefform gedacht und daher keine Hilfe. Irgendwelche Ideen?
Bisher habe ich den folgenden Code am Anfang der CWEB-Datei hinzugefügt (dieser Code funktioniert übrigens in einer einfachen TeX-Datei):
\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
Antwort1
Dies ist im CWEB-Handbuch dokumentiert (das Sie öffnen können, indem Sie aufrufen, texdoc cweb
was eine DVI-Datei öffnet, oderals PDF online lesen), InAnhang C: So verwenden Sie CWEB-Makros(Seite 25), Punkt 4.
Der Trick besteht darin, dass Sie nach dem Einstellen von \pagewidth
(Standard 6,5 Zoll), \pageheight
(Standard 8,7 Zoll) oder \fullpageheight
(Standard 9 Zoll) Folgendes sagen müssen \setpage
:
Wenn Sie eine dieser Größen ändern, sollten Sie das Makro \setpage unmittelbar nach der Änderung aufrufen.
Beispiel: Wenn Sie herunterladenlp.wvon Knuth'sSeite mit herunterladbaren Programmen, und führen Sie aus cweave lp.w
, erhalten Sie eine lp.tex
, die bei Verarbeitung mit tex lp.tex
(oder pdftex lp.tex
) Folgendes als erste Seite ergibt:
Wenn Sie die Oberseite lp.tex
von ändern
\input cwebmac
\datethis
Zu
\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
(alles halbieren), dann (wenn Sie die PDF-Papiergröße nicht ändern) erhalten Sie Folgendes:
Wenn Sie insbesondere bei A4-Papier den gleichen Rand wie bei Briefpapier beibehalten möchten (was vielleicht nicht viel Sinn ergibt, aber eine Möglichkeit ist), können Sie \input cwebmac
oben in der .tex
Datei Folgendes ändern (sofern Sie verwenden 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
Wenn Sie das Layout (Textbreite, Zeilenumbrüche usw.) wie bei Briefpapier beibehalten, es aber stattdessen auf A4-Papier komprimieren und zentrieren möchten (wie in Igors Antwort vorgeschlagen), müssen Sie natürlich nichts Besonderes tun cwebmac
und können überall denselben Codeblock verwenden: Sie können einfach anpassen \pdfhorigin
: Der Standardwert ist 1in
(=(8,5 Zoll - 6,5 Zoll)/2). Fügen Sie einfach dies oben in Ihre Datei ein und ändern Sie sonst nichts:
\pdfpagewidth=210mm
\pdfpageheight=297mm
\pdfhorigin=\dimexpr (210mm-6.5in)/2
\pdfvorigin=\dimexpr (297mm-9in)/2