¿Cómo cambio el tamaño de página de un archivo pdf generado por Plain-TeX?

¿Cómo cambio el tamaño de página de un archivo pdf generado por Plain-TeX?

Situación, probablemente conocida.

Sé que el tamaño de la página pdf se puede cambiar LaTeXusando el paquete geometry. ¿Pero cómo hacerlo en plain-TeX?

Por ejemplo, cambiar los parámetros relacionados con la página, como \vsizeo \hoffset, introduce cambios, pero no parece tocar el formato de papel escrito en el pdf, aquí 8,27 x 11,69 pulgadas.

% 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

tamaño de página

resultado

Pregunta

¿Cómo solucionar esto? No pude encontrar una respuesta aquí, en libros o en la web durante días. Estoy usando TexWorks actual de MikTeX, compilando con pdftex.

Respuesta1

TeX (según lo previsto por Knuth) no tiene noción alguna sobre el tamaño de la página. Imprimir o visualizar siempre ha sido el trabajo de los controladores DVI.

La única excepción es que, por decreto de Knuth, todos los conductoresdebeTenga en cuenta un origen que está a una pulgada del borde izquierdo y a una pulgada del borde superior del papel, cualquiera que sea el papel (tal vez solo papel virtual en la pantalla) que se utilice finalmente.

Como pdftexes su propio controlador, es necesario pasarle el tamaño de papel deseado y proporciona algunas primitivas para el trabajo:

  • \pdfpagewidthy \pdfpageheightson los principales;
  • \pdfhoriginy \pdfvoriginson los siguientes.

Suponga que desea que el ancho de la página sea de 10 pulgadas y la altura de la página de 9 pulgadas, con el bloque de texto teniendo su esquina superior izquierda a 3 pulgadas de los bordes izquierdo y superior.

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

\hsize=4truein
\vsize=3truein

\input plipsum

\lipsum{3-7}

\bye

ingrese la descripción de la imagen aquí

Perdón por las longitudes en centímetros, pero ya sabes, casi todo el mundo los usa.

Respuesta2

Lo recomiendo \pdfhoriginy \pdfvoriginestán configurados 0ptpara establecer el punto de referencia en la esquina superior izquierda del papel. Luego puede configurar \hoffsety \voffsetcomo márgenes medidos desde el borde del papel, no necesita incluir el cálculo de +-1 pulgada en sus macros y la vida es más simple. El \pdfpagewidthy \pdfpageheightdebe establecerse en el ancho y alto real del papel.

Por ejemplo, si desea que todos los márgenes sean de 2 cm con papel de tamaño A4, puede configurar:

\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

Tenga en cuenta que OpTeX establece \pdfhoriginy \pdfvoriginen 0pt porque la posición del punto de referencia (1 pulg., 1 pulg.) es simplemente molesta.

Respuesta3

Solución

La solución ya está (casi) ahí: compilar con pdftex. Según suManual de usuariotodo lo que hay que hacer es agregar requerido 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

Ahora el tamaño de la página es de 8 x 5 pulgadas, como se indica.

tamaño

resultado

Antecedentes

De hecho, este problema es bien conocido y no es nuevo. Véase, por ejemplo, esta pregunta sobremárgenes de página de 2013 para varios compiladores TeX, especialmente los comentarios.

Este enigma puede existir probablemente porque hoy en día estamos acostumbrados a asociar "área impresa" con "tamaño del papel". Esta es una suposición válida con un procesador de textos que utiliza una impresora doméstica o de oficina, que la mayoría de las veces utiliza papel carta o A4.

Sin embargo, TeXfue diseñado teniendo en cuenta la composición tipográfica, o mejor dicho, a la manera de Gutenberg, China mucho antes que él, et. al., creó papel impreso.

Lo que significa que tienes un bloque de impresión (como tipografía q o n, que se moverá debajo del bloque etiquetado h en la "Fig.1 Imprenta"), que contiene aproximadamente el área (y un poco más) entre el encabezado y el pie de página que se muestran arriba. Las coordenadas en el conjunto tipográfico, por así decirlo, se indican allí mediante parámetros TeX como \vsizeo \hoffsety sus algoritmos de ubicación.

El tamaño del papel, por el contrario, puede conocerse o no antes de imprimirlo, y ciertamente tendrá que ser más grande y luego se cortará en trozos más pequeños. Piense en el pdf-primitivescuidado pdftexde este papel (electrónico).

información relacionada