
У меня есть файл CWEB, и я хочу изменить размеры страницы. Я знаю, как это сделать в простом документе TeX, и у меня это всегда работало нормально. Если я сделаю то же самое (изменю hsize, смещения и т. д.) в файле CWEB, то я полностью испорчу поля и размещение.
Я хочу, чтобы вывод был на бумаге формата A4. Конечные размеры страницы установлены моим pdftex на A4, так что это не проблема. Проблема скорее в том, что CWEB сделан для вывода на бумаге формата Letter, поэтому копия не центрирована, например.
Я попытался поискать решение в Stanford Graphbase Кнута, поскольку это набор программ CWEB, опубликованных в формате книги, так что он, должно быть, сделал что-то, чтобы изменить размеры страницы. Однако источники, которые он выкладывает в интернете, предназначены для вывода букв, поэтому они бесполезны. Есть идеи?
Пока что я добавил следующий код в начало файла CWEB (кстати, этот код работает и в обычном файле TeX):
\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
решение1
Это описано в руководстве CWEB (которое можно открыть, вызвав , texdoc cweb
который открывает файл DVI, иличитать онлайн в формате PDF), вПриложение C: Как использовать макросы CWEB(стр. 25), пункт 4.
Хитрость в том, что после установки любого из значений \pagewidth
(по умолчанию 6,5 дюймов), \pageheight
(по умолчанию 8,7 дюймов) или \fullpageheight
(по умолчанию 9 дюймов) вам нужно сказать \setpage
:
Если вы измените любую из этих величин, вам следует вызвать макрос \setpage сразу после внесения изменения.
Пример: Если вы скачаетелп.вот Кнутастраница загружаемых программи запустите cweave lp.w
, вы получите lp.tex
, который при обработке с помощью tex lp.tex
(или pdftex lp.tex
) выдаст следующее в качестве первой страницы:
Если вы измените верхнюю часть lp.tex
с
\input cwebmac
\datethis
к
\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
(уменьшая все пополам), то (если не менять размер бумаги PDF) получится следующее:
В частности, для бумаги формата А4, если вы хотите сохранить те же поля, что и для бумаги формата Letter (что может быть не совсем разумно, но это один из вариантов), то вы можете изменить \input cwebmac
в верхней части файла .tex
на (если вы используете 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
Если вы хотите сохранить макет (ширину текста, разрывы строк и т. д.) таким же, как для бумаги формата Letter, но вместо этого сжать и отцентрировать его на бумаге формата A4 (как предложено в ответе Игоря), то, конечно, вам не нужно делать ничего специфичного, cwebmac
и вы можете использовать один и тот же блок кода везде: вы можете просто настроить \pdfhorigin
: по умолчанию это 1in
(=(8.5in - 6.5in)/2). Просто добавьте это в начало вашего файла и не меняйте ничего больше:
\pdfpagewidth=210mm
\pdfpageheight=297mm
\pdfhorigin=\dimexpr (210mm-6.5in)/2
\pdfvorigin=\dimexpr (297mm-9in)/2