Situación, probablemente conocida.
Sé que el tamaño de la página pdf se puede cambiar LaTeX
usando el paquete geometry
. ¿Pero cómo hacerlo en plain-TeX
?
Por ejemplo, cambiar los parámetros relacionados con la página, como \vsize
o \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
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 pdftex
es su propio controlador, es necesario pasarle el tamaño de papel deseado y proporciona algunas primitivas para el trabajo:
\pdfpagewidth
y\pdfpageheight
son los principales;\pdfhorigin
y\pdfvorigin
son 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
Perdón por las longitudes en centímetros, pero ya sabes, casi todo el mundo los usa.
Respuesta2
Lo recomiendo \pdfhorigin
y \pdfvorigin
están configurados 0pt
para establecer el punto de referencia en la esquina superior izquierda del papel. Luego puede configurar \hoffset
y \voffset
como 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 \pdfpagewidth
y \pdfpageheight
debe 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 \pdfhorigin
y \pdfvorigin
en 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.
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, TeX
fue 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 \vsize
o \hoffset
y 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-primitives
cuidado pdftex
de este papel (electrónico).