Como altero o tamanho da página de um arquivo PDF gerado pelo plain-TeX?

Como altero o tamanho da página de um arquivo PDF gerado pelo plain-TeX?

Situação, provavelmente conhecida

Eu sei que o tamanho da página pdf pode ser alterado LaTeXusando package geometry. Mas como fazer isso em plain-TeX?

Por exemplo, alterar os parâmetros relacionados à página, como \vsizeou \hoffset, introduz alterações, mas não parece afetar o formato do papel escrito no pdf, aqui 8,27 x 11,69 pol.

% 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

tamanho da página

resultado

Pergunta

Como resolver isso? Não foi possível encontrar uma resposta aqui, em livros ou na web por dias. Estou usando o TexWorks atual do MikTeX, compilando com pdftex.

Responder1

O TeX (conforme pretendido por Knuth) não tem noção alguma do tamanho da página. Imprimir ou visualizar sempre foi trabalho dos drivers DVI.

A única exceção é que, por decreto de Knuth, todos os motoristasdeveleve em conta uma origem que está a uma polegada da borda esquerda e a uma polegada da borda superior do papel, qualquer que seja o papel (talvez apenas papel virtual na tela) usado.

Por pdftexser um driver próprio, é necessário passar para ele o tamanho de papel desejado e ele fornece algumas primitivas para o trabalho:

  • \pdfpagewidthe \pdfpageheightsão os principais;
  • \pdfhorigine \pdfvoriginsão os próximos.

Suponha que você queira que a largura da página seja 10 polegadas e a altura da página 9 polegadas, com o bloco de texto tendo seu canto superior esquerdo a 3 polegadas das bordas esquerda e superior.

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

\hsize=4truein
\vsize=3truein

\input plipsum

\lipsum{3-7}

\bye

insira a descrição da imagem aqui

Desculpe pelos comprimentos em centímetros, mas, você sabe, quase todo mundo os usa.

Responder2

Eu recomendo isso \pdfhorigine \pdfvoriginestão definidos 0ptpara definir o ponto de referência no canto superior esquerdo do papel. Então você pode definir \hoffsete \voffsetcomo margens medidas a partir da borda do papel, você não precisa incluir o cálculo de +-1in em suas macros e a vida fica mais simples. O \pdfpagewidthe \pdfpageheightdeve ser definido para a largura e altura reais do papel.

Por exemplo, se quiser que todas as margens sejam de 2 cm com papel de tamanho A4, você pode definir:

\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

Observe que o OpTeX define \pdfhorigine \pdfvorigincomo 0pt porque a posição do ponto de referência (1in,1in) é simplesmente irritante.

Responder3

Solução

A solução já está (quase) aí: compilar com pdftex. De acordo com seuManual do usuáriotudo o que precisa ser feito é adicionar require 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

Agora o tamanho da página é 8 x 5 pol., conforme indicado.

tamanho

resultado

Contexto

Este problema é realmente bem conhecido e não é novo. Veja, por exemplo, esta pergunta sobremargens de página de 2013 para vários compiladores TeX, especialmente os comentários.

Este enigma pode existir provavelmente porque hoje em dia estamos acostumados a associar “área impressa” com “tamanho do papel”. Esta é uma suposição válida com um processador de texto usando uma impressora de escritório ou doméstica, que na maioria das vezes usa papel carta ou A4.

No entanto, TeXfoi projetado com a composição tipográfica em mente, ou melhor, da maneira como Gutenberg, China, muito antes dele, et. al., criou papel impresso.

O que significa que você tem um bloco de impressão (como a composição q ou n, que se moverá sob o bloco rotulado h na "Fig.1 Impressora"), que contém aproximadamente a área (e um pouco mais) entre o cabeçalho e o rodapé mostrado acima. As coordenadas na composição tipográfica definida, por assim dizer, são indicadas pelos parâmetros TeX como \vsizeou \hoffsete seus algoritmos de posicionamento.

O tamanho do papel, ao contrário, pode ou não ser conhecido antes da impressão, e certamente terá que ser maior, sendo posteriormente cortado em pedaços menores. Pense em pdf-primitivescuidar pdftexdeste papel (eletrônico).

informação relacionada