如何为不同的页面设置不同的 \topskip?

如何为不同的页面设置不同的 \topskip?

\topskip由于地址字段的原因,我尝试在第一页上写一封具有不同值的信件。这很有效:

\tracingoutput=1%
\pdfpagewidth=210mm%
\pdfpageheight=297mm%
\hsize=\pdfpagewidth \advance\hsize by -50mm%
\vsize=\pdfpageheight \advance\vsize by -50mm%
\advance\hoffset by -1in \advance\hoffset by 25mm%
\advance\voffset by -1in%
\parindent=0pt%
%
\topskip=130mm%
Page 1
\vfill\eject
\topskip=50mm%
Page 2
\bye

现在我尝试将定义移入\makeheadline,但根本不起作用。

\def\makeheadline{
  \ifnum\pageno=1
    \topskip=130mm
  \else
    \topskip=50mm
  \fi
  \nointerlineskip}

如果第一页不起作用,我也能理解。但是,无论第一页还是第二页,它都不起作用。

怎样修改才是正确的\topskip

答案1

Plain TeX 的\makeheadline宏用于将页头添加到最终输出的页面分页已完成:

\def\plainoutput{\shipout\vbox{\makeheadline\pagebody\makefootline}%
  \advancepageno
...

由于设置的时间不对,所以\topskip对间距没有任何影响。\topskip在将第一个(通常是行)框添加到每个页面时进行咨询,它需要产生影响分页,因此,如果您有较大的顶部跳过行,则行将从页面的较低位置开始,并且可以容纳较少的内容。

要在第一页安排更大的空间,只需设置\topskip为标准的后续页面,然后插入

\vglue 80mm

在第一页,可以明确地或通过将其添加到文档的任何标题或打开命令的定义中。\vglue是一个包装vskip原始内容但插入规则的宏,以便空格不会在页面开头被删除。

相关内容