
Tenho um arquivo CWEB e quero alterar as dimensões da página. Eu sei como fazer isso em um documento TeX simples e sempre funcionou bem para mim. Se eu fizer o mesmo (alterando o tamanho, os deslocamentos, etc.) no arquivo CWEB, ficarei completamente confuso com as margens e o posicionamento.
Quero ter saída em papel A4. As dimensões finais da página são definidas pelo meu pdftex como A4, então esse não é o problema. O problema é que o CWEB é feito para saída em papel carta, então a cópia não fica centralizada, por exemplo.
Tentei procurar uma solução no Stanford Graphbase de Knuth, já que é um monte de programas CWEB publicados em formato de livro, então ele deve ter feito algo para alterar as dimensões da página. As fontes que ele disponibiliza na internet, porém, são feitas para produção de cartas, portanto não ajudam em nada. Alguma ideia?
Até agora, adicionei o seguinte código ao início do arquivo CWEB (a propósito, esse código funciona em um arquivo TeX simples):
\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
Responder1
Isso está documentado no manual CWEB (que você pode abrir invocando texdoc cweb
o que abre um arquivo DVI, ouler como PDF on-line), emApêndice C: Como usar macros CWEB(página 25), ponto 4.
O truque é que depois de definir qualquer um \pagewidth
(padrão 6,5 pol.), \pageheight
(padrão 8,7 pol.) ou \fullpageheight
(padrão 9 pol.), você precisa dizer \setpage
:
Se você alterar qualquer uma dessas quantidades, deverá chamar a macro \setpage imediatamente após fazer a alteração.
Exemplo: Se você baixarlp.wde Knuthpágina de programas para download, e run cweave lp.w
, você obtém um lp.tex
, que processado com tex lp.tex
(or pdftex lp.tex
) fornece o seguinte como primeira página:
Se você mudar o topo lp.tex
de
\input cwebmac
\datethis
para
\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
(dividindo tudo pela metade), então (se você não alterar o tamanho do papel pdf) você obterá o seguinte:
Especificamente para papel A4, se você quiser manter a mesma margem do papel carta (o que pode não fazer muito sentido, mas é uma opção), você pode alterar o \input cwebmac
na parte superior do .tex
arquivo para (se estiver 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
Se você quiser manter o layout (a largura do texto, as quebras de linha, etc.) igual ao do papel carta, mas em vez disso aperte e centralize-o no papel A4 (como sugerido na resposta de Igor), então é claro o que você precisa fazer não é nada específico cwebmac
e você pode usar o mesmo bloco de código em qualquer lugar: você pode simplesmente ajustar \pdfhorigin
: o padrão é 1in
(=(8,5 pol. - 6,5 pol.)/2). Basta adicionar isto no topo do seu arquivo e não alterar mais nada:
\pdfpagewidth=210mm
\pdfpageheight=297mm
\pdfhorigin=\dimexpr (210mm-6.5in)/2
\pdfvorigin=\dimexpr (297mm-9in)/2