第一页有不同的大小

第一页有不同的大小

是否可以改变第一页的 vsize?

我尝试过这个:

\vsize=20cm
\def\pagebody{%
   \ifnum\pageno=1%
     \advance\vsize by -8cm%
     \vskip13cm\vbox to \vsize{\boxmaxdepth=\maxdepth \pagecontents}%
   \else
     \vskip5cm\vbox to \vsize{\boxmaxdepth=\maxdepth \pagecontents}%
   \fi}%

但它似乎不起作用。

答案1

TeXbook 第 114 页内容如下:

由于\vsize\maxdepth\topskip是参数,因此您可以随时更改它们;如果您这样做会发生什么?好吧,TeX在打印“行”时(即,当当前页面上出现第一个框或插入时)会将\vsize和的值盐化;对这两个参数的后续更改直到下一个当前页面开始之前都不会产生任何效果。\maxdepth%%

因此,如果您希望\vsize更改影响当前页面,则必须在添加第一个框或插入之前进行更改。 在您的例子中,您试图在例程中更改它\output(因为这是\pagebody使用 的地方),这太晚了:调用例程时页面主体已经完全装箱\output- 它位于 中\box255,因此希望更改它的 显然为时已晚\vsize

您可以做的是在文档的开头初始化\vsize12cm在添加第一个框或插入之前)并更改其值对于后续页面在例程内。由于例程是在组内执行的,\output因此必须使用。\global\output

\vsize=12cm

\def\pagebody{%
   \ifnum\pageno=1
     \vskip 13cm\vbox to \vsize{\boxmaxdepth=\maxdepth \pagecontents}%
     \global\advance\vsize by 8cm
   \else
     \vskip 5cm\vbox to \vsize{\boxmaxdepth=\maxdepth \pagecontents}%
   \fi}%

\newcount\mycount

\def\repeattext#1#2{%
  \mycount=#1
  \loop
  \ifnum \mycount >0
  \advance\mycount by -1
  #2%
  \repeat
}

Foo bar \repeattext{2200}{foo bar }
\bye

截图

相关内容