我将标题和页脚大小设置为 2cm,并将 \vsize 减小了 4cm。但页脚不适合页面。
\pdfpagewidth=10cm
\pdfpageheight=10cm
\hsize=\pdfpagewidth
\vsize=\pdfpageheight \advance\vsize by -4cm
\advance\hoffset by -1in
\advance\voffset by -1in
\def\makeheadline{\vbox to 2cm{\hbox{headline 1}\hbox{headline 2}\hbox{headline 3}\vss}\nointerlineskip}
\def\makefootline{\vbox to 2cm{\vss\hbox{footline 1}\hbox{footline 2}\hbox{footline 3}}\nointerlineskip}
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam
nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,
sed diam voluptua. At vero eos et accusam et justo duo dolores et ea
rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem
ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur
sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et
dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam
et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea
takimata sanctus est Lorem ipsum dolor sit amet.
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam
nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,
sed diam voluptua. At vero eos et accusam et justo duo dolores et ea
rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem
ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur
sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et
dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam
et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea
takimata sanctus est Lorem ipsum dolor sit amet.
\bye
是否存在需要我减少的隐藏空间?
答案1
您可以通过添加来调试正在发生的事情\tracingoutput=1
您可以通过添加和查看日志文件来\tracingonline=1
(或者另外添加以直接在输出中查看它)。使用问题,得到(以\showboxdepth=1
抑制进一步的输出水平):
Completed box being shipped out [1]
\vbox(287.47198+0.0)x284.52756
.\vbox(56.9055+0.0)x44.44453, glue set 25.96106fil []
.\vbox(170.71654+1.94444)x284.52756, glue set 4.71654 []
.\glue(\lineskip) 1.0
.\vbox(56.9055+0.0)x41.11122, glue set 25.96106fil []
和
Completed box being shipped out [2]
\vbox(285.52754+0.0)x284.52756
.\vbox(56.9055+0.0)x44.44453, glue set 25.96106fil []
.\vbox(170.71654+0.0)x284.52756, glue set 98.7721fill []
.\glue(\lineskip) 1.0
.\vbox(56.9055+0.0)x41.11122, glue set 25.96106fil []
分别针对两个页面。因此在每种情况下,您都会看到:
标题栏,高度为
56.9055pt
(2cm),深度为0.0
。页体,在第一页占据的高度为
170.71654pt
(6cm),深度为1.94444pt
(来自最后一行的j
和),在第二页占据的高度为(6cm),深度为。g
0.0
一种
\lineskip
胶水1pt
。页脚,高度为
56.9055
(2cm),深度为0.0
。
由此我们可以看出两点:
通过尝试让页脚框紧跟在页面主体之后,您最终会
\lineskip
插入粘连。如果您不想这样,您可以\lineskiplimit
充分减小(此处,减小到低于约 1.65cm ≈ 46.85pt 的值),或设置\lineskip
为0pt
。您还需要考虑深度页面主体,即(在简单情况下)最后一行文本。
一个似乎对两者都有效的解决方案是在页脚中考虑\prevdepth
(和\lineskip
)。通过在文档中\vskip-\prevdepth \vskip-\lineskip \vskip 10pt
相应地添加和,可以得到:\advance\vsize by -10pt
这是一致的,而且似乎就是您想要的。
顺便说一下\nointerlineskip
一下结尾页脚不执行任何操作,可以删除;它相当于\prevdepth=-1000pt
并且仅用于抑制下一个行间胶水。(将其放在开头会抑制\lineskip
胶水,但不会对深度差异产生任何影响。)
编辑:另一个解决方案是让自然\baselineskip
发挥作用。将您的\makefootline
从 a更改\vbox
为 a \vtop
,以便\baselineskip
自动使用正确的胶水(10.05556pt
用于第一页和12pt
第二页),并使用 来解决这个问题\advance\vsize by -\baselineskip
。结果与上图所示相同。
编辑2:上面的截图中的“footline 3”是否被剪切了,还是只是停留在基线上?看一张特写:
事实上,字体中定义的某些字符(如上面的“o”、“t”、“e”和“3”)的像素超出了其规定的深度。因此,尽管TeX 所知道的深度为 0.0(与深度为 的\hbox{Footline 3}
字符不同),但实际上字体设计师(在本例中为 Knuth,代表 Computer Modern)选择将更多像素变黑。这也是人们通常不会尝试以这种方式使用页面上所有可用区域的另一个原因。\hbox{Footline 3 gg}
1.94444pt