Situation, wahrscheinlich bekannt
Ich weiß, dass die PDF-Seitengröße im LaTeX
Paket geändert werden kann geometry
. Aber wie geht das in plain-TeX
?
Das Ändern seitenbezogener Parameter wie \vsize
oder \hoffset
fü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
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 pdftex
es 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:
\pdfpagewidth
und\pdfpageheight
sind die wichtigsten;\pdfhorigin
und\pdfvorigin
sind 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
Entschuldigen Sie die Längenangaben in Zentimetern, aber Sie wissen ja, dass fast jeder sie verwendet.
Antwort2
Ich empfehle, \pdfhorigin
und \pdfvorigin
auf einzustellen 0pt
, um den Referenzpunkt auf die linke obere Ecke des Papiers zu setzen. Dann können Sie \hoffset
und \voffset
als Ränder vom Papierrand aus einstellen, Sie müssen in Ihren Makros keine +-1-Zoll-Berechnung einbeziehen und das Leben ist einfacher. \pdfpagewidth
und \pdfpageheight
sollten 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 \pdfhorigin
und \pdfvorigin
auf 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.
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 TeX
wurde 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 \vsize
oder \hoffset
und 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-primitives
Pflege pdftex
dieses (elektronischen) Papiers.