Как установить размеры страницы для документа CWEB?

Как установить размеры страницы для документа CWEB?

У меня есть файл 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-по умолчанию

Если вы измените верхнюю часть 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) получится следующее:

lp-уменьшён вдвое


В частности, для бумаги формата А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

Связанный контент