输出程序中如何生成页面?

输出程序中如何生成页面?

比较一下

\nonstopmode
\tracingonline=1

\showboxdepth=\maxdimen
\showboxbreadth=\maxdimen

\output={\shipout\vbox{
  \unvbox255
  \showlists
}}

\nopagenumbers
\noindent A
\bye

和这个

\nonstopmode
\tracingonline=1

\showboxdepth=\maxdimen
\showboxbreadth=\maxdimen

\newbox\pagebox
\let\oldshipout\shipout
\def\shipout{\global\let\shipout\oldshipout\afterassignment\myboat\setbox\pagebox=}
\def\myboat{\aftergroup\myship}
\def\myship{\setbox\pagebox=\vbox{
  \unvbox\pagebox
  \showlists
}\shipout\box\pagebox}

\nopagenumbers
\noindent A
\bye

与第一个例子相比,第二条跟踪中我们有一些额外的输出,即:

  • 在两个示例的相同输出之前,第二个示例的附加输出:
\vbox(0.0+0.0)x469.75499, glue set 14.0fil
.\glue -22.5
.\hbox(8.5+0.0)x469.75499, glue set 469.75499fil
..\vbox(8.5+0.0)x0.0
..\glue 0.0 plus 1.0fil
.\glue 0.0 plus 1.0fil minus 1.0fil
\vbox(643.20255+0.0)x469.75499, glue set 633.20255fill
  • 两个示例的输出相同之后,第二个示例的附加输出:
\glue(\baselineskip) 24.0
\hbox(0.0+0.0)x469.75499, glue set 469.75499fil
.\glue 0.0 plus 1.0fil

其中643.20255等于 8.9 英寸(即11 - 1 - 1 - 0.1) 和469.75499等于 6.5 英寸(即8.5 - 1 - 1

问题是关于这个额外的输出 —— 它是什么意思以及为什么它出现在第二个例子中?

答案1

在第一种情况下,您只看到 box255,在第二种情况下,您正在使用纯 tex 输出例程并挂接到,\shipout因此您看到

\shipout\vbox{\makeheadline\pagebody\makefootline}%

您看到的额外框是标题和脚注,因为它们是白色的,\nopagenumbers但是框和粘合结构仍然存在。

相关内容