plain-TeX로 생성된 PDF 파일의 페이지 크기를 어떻게 변경합니까?

plain-TeX로 생성된 PDF 파일의 페이지 크기를 어떻게 변경합니까?

아마도 알려진 상황

LaTeXpackage 를 사용 하면 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의 법령에 따라 모든 운전자가~ 해야 하다최종적으로 사용되는 종이(어쩌면 화면의 가상 종이만)에 관계없이 종이의 왼쪽 가장자리에서 1인치, 위쪽 가장자리에서 1인치 떨어진 원점을 고려하세요.

자체 드라이버 이므로 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

(1in,1in) 기준점 위치가 귀찮기 때문에 OpTeX는 \pdfhorigin및 0pt로 설정됩니다.\pdfvorigin

답변3

해결책

해결책은 이미 (거의) 존재합니다: pdftex. 그것에 따르면사용자 매뉴얼수행해야 할 작업은 필수를 추가하는 것뿐입니다 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인치입니다.

크기

결과

배경

이 문제는 실제로 잘 알려져 있고 새로운 것이 아닙니다. 예를 들어 다음 질문을 참조하세요.여러 TeX 컴파일러에 대한 2013년의 페이지 여백, 특히 댓글이요.

이 퍼즐이 존재할 수 있는 이유는 오늘날 우리가 "인쇄 영역"을 "용지 크기"와 연관시키는 데 익숙하기 때문일 것입니다. 이는 대부분의 경우 Letter 또는 A4 용지를 사용하는 사무실 또는 가정용 프린터를 사용하는 텍스트 프로세서에 대한 유효한 가정입니다.

그러나 TeX조판을 염두에 두고 디자인되었거나 그보다 오래 전에 중국의 구텐베르크와 같은 방식이 더 좋습니다. al., 인쇄된 종이를 만들었습니다.

즉, 인쇄 블록(조판 q 또는 n과 같이 "그림 1 인쇄기"에서 h라고 표시된 블록 아래로 이동합니다.) 여기에는 위에 표시된 머리글과 바닥글 사이의 대략적인 영역(및 그 이상)이 포함됩니다. 말하자면 세트 조판의 좌표는 \vsize또는 같은 TeX 매개변수 \hoffset와 그 배치 알고리즘으로 표시됩니다.

반대로 용지 크기는 실제로 인쇄하기 전에 알 수도 있고 알 수 없을 수도 있으며, 확실히 더 커야 하고 나중에 더 작은 조각으로 절단될 것입니다. 이 (전자) 종이를 관리하는 pdf-primitives것을 생각해 보세요 .pdftex

관련 정보