Wie ändere ich die Seitengröße für eine mit Plain-TeX generierte PDF-Datei?

Wie ändere ich die Seitengröße für eine mit Plain-TeX generierte PDF-Datei?

Situation, wahrscheinlich bekannt

Ich weiß, dass die PDF-Seitengröße im LaTeXPaket geändert werden kann geometry. Aber wie geht das in plain-TeX?

Das Ändern seitenbezogener Parameter wie \vsizeoder \hoffsetführt beispielsweise zwar zu Änderungen, scheint aber das in das PDF geschriebene Papierformat, hier 8,27 x 11,69 Zoll, nicht zu berühren.

% 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

Seitengröße

Ergebnis

Frage

Wie kann ich das lösen? Ich konnte hier, in Büchern oder im Internet tagelang keine Antwort finden. Ich verwende das aktuelle TexWorks von MikTeX und kompiliere mit pdftex.

Antwort1

TeX (wie von Knuth vorgesehen) hat keinerlei Vorstellung von Seitengröße. Drucken oder Anzeigen war schon immer die Aufgabe der DVI-Treiber.

Einzige Ausnahme ist, dass nach Knuths Erlass alle FahrermussBerücksichtigen Sie einen Ursprung, der einen Zoll vom linken Rand und einen Zoll vom oberen Rand des Papiers entfernt ist, unabhängig davon, welches Papier (möglicherweise nur virtuelles Papier auf dem Bildschirm) letztendlich verwendet wird.

Da pdftexes sich um einen eigenen Treiber handelt, ist die Übergabe der gewünschten Papiergröße erforderlich. Außerdem stellt es einige Grundelemente für diese Aufgabe bereit:

  • \pdfpagewidthund \pdfpageheightsind die wichtigsten;
  • \pdfhoriginund \pdfvoriginsind die Nächsten.

Angenommen, Sie möchten, dass die Seitenbreite 10 Zoll und die Seitenhöhe 9 Zoll beträgt und dass die obere linke Ecke des Textblocks 3 Zoll vom linken und oberen Rand entfernt ist.

\pdfpagewidth=10truein
\pdfpageheight=9truein
\pdfhorigin=3truein
\pdfvorigin=3truein

\hsize=4truein
\vsize=3truein

\input plipsum

\lipsum{3-7}

\bye

Bildbeschreibung hier eingeben

Entschuldigen Sie die Längenangaben in Zentimetern, aber Sie wissen ja, dass fast jeder sie verwendet.

Antwort2

Ich empfehle, \pdfhoriginund \pdfvoriginauf einzustellen 0pt, um den Referenzpunkt auf die linke obere Ecke des Papiers zu setzen. Dann können Sie \hoffsetund \voffsetals Ränder vom Papierrand aus einstellen, Sie müssen in Ihren Makros keine +-1-Zoll-Berechnung einbeziehen und das Leben ist einfacher. \pdfpagewidthund \pdfpageheightsollten auf die tatsächliche Papierbreite und -höhe eingestellt werden.

Wenn Sie beispielsweise bei der Papiergröße A4 alle Ränder 2 cm groß haben möchten, können Sie Folgendes einstellen:

\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

Beachten Sie, dass OpTeX \pdfhoriginund \pdfvoriginauf 0pt setzt, da die Referenzpunktposition (1in,1in) einfach störend ist.

Antwort3

Lösung

Die Lösung ist bereits (fast) da: Kompilieren mit pdftex. Laut seinerBenutzerhandbuchalles was getan werden muss, ist das Hinzufügen von required 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

Jetzt beträgt die Seitengröße wie angegeben 8 x 5 Zoll.

Größe

Ergebnis

Hintergrund

Dieses Problem ist in der Tat bekannt und nicht neu. Siehe beispielsweise diese Frage zuSeitenränder ab 2013 für verschiedene TeX-Compiler, insbesondere die Kommentare.

Dieses Rätsel besteht wahrscheinlich deshalb, weil wir heutzutage daran gewöhnt sind, „bedruckte Fläche“ mit „Papiergröße“ zu assoziieren. Dies ist eine gültige Annahme bei einem Textverarbeitungsprogramm, das einen Büro- oder Heimdrucker verwendet, der meistens Brief- oder A4-Papier verwendet.

Allerdings TeXwurde es im Hinblick auf den Schriftsatz entworfen, oder besser gesagt, auf die Art und Weise, wie Gutenberg und andere lange vor ihm bedrucktes Papier herstellten.

Das heißt, Sie haben einen Druckblock (wie z. B. gesetztes q oder n, das unter den Block mit der Bezeichnung h in „Abb.1 Druckerpresse“ verschoben wird), das ungefähr den Bereich (und etwas mehr) zwischen Kopf- und Fußzeile enthält, der oben gezeigt ist. Die Koordinaten des gesetzten Schriftsatzes werden dort sozusagen durch die TeX-Parameter wie \vsizeoder \hoffsetund deren Platzierungsalgorithmen angegeben.

Die Papiergröße hingegen ist vor dem eigentlichen Drucken möglicherweise nicht bekannt, und es muss auf jeden Fall größer sein und wird später in kleinere Stücke geschnitten. Denken Sie an die pdf-primitivesPflege pdftexdieses (elektronischen) Papiers.

verwandte Informationen