
Tengo un archivo CWEB y quiero cambiar las dimensiones de la página. Sé cómo hacer esto en un documento TeX simple y siempre funcionó bien para mí. Si hago lo mismo (cambiando el tamaño, los desplazamientos, etc.) en el archivo CWEB, los márgenes y la ubicación se estropean completamente.
Quiero tener salida en papel A4. Mi pdftex establece las dimensiones finales de la página en A4, por lo que ese no es el problema. El problema es más bien que CWEB está hecho para imprimir en papel de carta, por lo que la copia no está centrada, por ejemplo.
Intenté buscar una solución en Stanford Graphbase de Knuth, ya que se trata de un montón de programas CWEB publicados en formato de libro, por lo que debe haber hecho algo para cambiar las dimensiones de la página. Las fuentes que pone a disposición en Internet, sin embargo, están hechas para la impresión de cartas, por lo que no sirven de nada. ¿Algunas ideas?
Hasta ahora, agregué el siguiente código al comienzo del archivo CWEB (por cierto, este código funciona en un archivo TeX simple):
\newdimen\pagewidth \pagewidth=210mm
\newdimen\pageheight \pageheight=297mm
\hsize=13cm
\hoffset=\pagewidth
\advance\hoffset by-\hsize
\hoffset=.5\hoffset
\advance\hoffset by-1in
\voffset=\pageheight
\advance\voffset by-\vsize
\voffset=0.5\voffset
\advance\voffset by-1in
Respuesta1
Esto está documentado en el manual de CWEB (que puede abrir invocandotexdoc cweb
que abre un archivo DVI, oleer como PDF en línea), enApéndice C: Cómo utilizar macros CWEB(página 25), punto 4.
El truco es que después de configurar cualquiera de \pagewidth
(predeterminado 6,5 pulgadas), \pageheight
(predeterminado 8,7 pulgadas) o \fullpageheight
(predeterminado 9 pulgadas), debe decir \setpage
:
Si cambia cualquiera de estas cantidades, debe llamar a la macro \setpage inmediatamente después de realizar el cambio.
Ejemplo: Si descargaslp.wde Knuthpagina de programas descargablesy ejecuta cweave lp.w
, obtiene un lp.tex
, que procesado con tex lp.tex
(o pdftex lp.tex
) proporciona lo siguiente como primera página:
Si cambias la parte superior de lp.tex
desde
\input cwebmac
\datethis
a
\input cwebmac
\pagewidth=3.25in % The default is 6.5in
\pageheight=4.35in % The default is 8.7in
\fullpageheight=4.5in % The default is 9in
\setpage
\datethis
(reduciendo todo a la mitad), luego (si no cambia el tamaño del papel pdf) obtendrá lo siguiente:
Específicamente para el papel A4, si desea mantener el mismo margen que con el papel carta (lo cual puede no tener mucho sentido, pero es una opción), puede cambiar el \input cwebmac
en la parte superior del .tex
archivo a (si está usando pdftex
) :
\input cwebmac
\pdfpagewidth=210mm
\pdfpageheight=297mm
\pagewidth= 159.2mm % The default is 6.5in for 8.5in width, so for A4 this is 210mm - 2in
\pageheight=238.58mm % The default is 8.7in for 11in height, so for A4 this is 297mm - 2.3in
\fullpageheight=246.2mm % The default is 9in for 11in height, so for A4 this is 297mm - 2in
\setpage
Si desea mantener el diseño (el ancho del texto, los saltos de línea, etc.) igual que para el papel de carta, pero en lugar de eso, apriételo y céntrelo en el papel A4 (como se sugiere en la respuesta de Igor), entonces, por supuesto, lo que debe hacer. no es nada específico cwebmac
y puedes usar el mismo bloque de código en todas partes: simplemente puedes ajustar \pdfhorigin
: el valor predeterminado es 1in
(=(8.5in - 6.5in)/2). Simplemente agregue esto en la parte superior de su archivo y no cambie nada más:
\pdfpagewidth=210mm
\pdfpageheight=297mm
\pdfhorigin=\dimexpr (210mm-6.5in)/2
\pdfvorigin=\dimexpr (297mm-9in)/2