Situação, provavelmente conhecida
Eu sei que o tamanho da página pdf pode ser alterado LaTeX
usando package geometry
. Mas como fazer isso em plain-TeX
?
Por exemplo, alterar os parâmetros relacionados à página, como \vsize
ou \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
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 pdftex
ser um driver próprio, é necessário passar para ele o tamanho de papel desejado e ele fornece algumas primitivas para o trabalho:
\pdfpagewidth
e\pdfpageheight
são os principais;\pdfhorigin
e\pdfvorigin
sã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
Desculpe pelos comprimentos em centímetros, mas, você sabe, quase todo mundo os usa.
Responder2
Eu recomendo isso \pdfhorigin
e \pdfvorigin
estão definidos 0pt
para definir o ponto de referência no canto superior esquerdo do papel. Então você pode definir \hoffset
e \voffset
como 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 \pdfpagewidth
e \pdfpageheight
deve 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 \pdfhorigin
e \pdfvorigin
como 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.
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, TeX
foi 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 \vsize
ou \hoffset
e 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-primitives
cuidar pdftex
deste papel (eletrônico).