如何更改 plain-TeX 產生的 pdf 檔案的頁面大小?

如何更改 plain-TeX 產生的 pdf 檔案的頁面大小?

情況大概已知

LaTeX我知道可以使用 package更改 pdf-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

頁面大小

結果

問題

怎麼解決這個問題呢?幾天來在這裡、書籍或網路上都找不到答案。我正在使用 MikTeX 的當前 TexWorks,使用 pdftex 進行編譯。

答案1

TeX(按照 Knuth 的意圖)沒有任何頁面大小的概念。列印或檢視一直是 DVI 驅動程式的工作。

唯一的例外是,根據 Knuth 的法令,所有司機必須考慮到距紙張左邊緣一英寸和距紙張上邊緣一英寸的原點,無論最終使用什麼紙張(可能只是螢幕上的虛擬紙張)。

由於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設置為,0pt以便將參考點設置為紙張的左上角。然後您可以設定\hoffset\voffset作為從紙張邊框測量的邊距,您不需要在巨集中包含 +-1 計算,並且生活更簡單。和\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 將\pdfhorigin和設定\pdfvorigin為 0pt,因為 (1in,1in) 參考點位置很煩人。

答案3

解決方案

解決方案已經(幾乎)存在:使用pdftex.根據其使用者手冊所需要做的就是加入 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

現在頁面大小為 8 x 5 英寸,如圖所示。

尺寸

結果

背景

這個問題確實是眾所周知的,並不是什麼新鮮事。參見例如這個問題2013 年以來多個 TeX 編譯器的頁邊距,尤其是評論。

這個謎題可能存在,可能是因為現在我們習慣將「列印面積」與「紙張尺寸」連結起來。對於使用辦公室或家用印表機(大多數時候使用 letter 或 A4 紙)的文字處理器來說,這是一個有效的假設。

然而,TeX它的設計考慮了排版,或者更好的是古騰堡,早在他之前的中國等。等人,創造了印刷紙。

這意味著,你有一個印刷塊(就像排版 q 或 n 一樣,它將移動到「圖 1 印刷機」中標記為 h 的區塊下方),它大致包含上面所示的頁首和頁尾之間的區域(以及更多)。可以說,設定排版上的座標由 TeX 參數(如\vsize\hoffset)及其放置演算法指示。

相反,紙張尺寸在實際列印之前可能知道也可能不知道,而且它肯定必須更大,並且稍後會被切成更小的塊。想想處理這張(電子)紙的pdf-primitives過程。pdftex

相關內容