从原始层面理解盒子

从原始层面理解盒子

我在学清楚的TeX 是个书呆子爱好。我目前的项目是尝试将页面分成不等的列。我只想使用方框和胶水,无外部依赖项,例如eplain。在深入研究页面之前,我想学习如何构建一个框,以便通过可视化帮助我学习。我尝试可视化书写区域,即vsizehsize产生了一个溢出hbox。我的最小工作示例是:

\hrule
\hbox to \hsize{
  \vrule
  \vbox to \vsize{
    \vfill
    \hfill
  }
  \vrule
}
\hrule
\bye

输出为:

Overfull \hbox (5.24442pt too wide) detected at line 9
Overfull \vbox (10.4pt too high)

有人能解释一下是什么原因导致盒子溢出吗?因为我只使用了胶水。我的直觉是,我将盒子放在了现有的“默认”盒子内,导致盒子溢出。

我正在使用ubuntu 22.04pdftex --version输出以下内容:

pdfTeX 3.141592653-2.6-1.40.22 (TeX Live 2022/dev/Debian)
kpathsea version 6.3.4/dev
Copyright 2021 Han The Thanh (pdfTeX) et al.
There is NO warranty.  Redistribution of this software is
covered by the terms of both the pdfTeX copyright and
the Lesser GNU General Public License.
For more information about these matters, see the file
named COPYING and the pdfTeX source.
Primary author of pdfTeX: Han The Thanh (pdfTeX) et al.
Compiled with libpng 1.6.37; using libpng 1.6.37
Compiled with zlib 1.2.11; using zlib 1.2.11
Compiled with xpdf version 4.03

谢谢。

答案1

其中\hbox to\hsize包括第 2 行末尾的空格\vrule(宽度 0.4pt)、 (其内部的\vbox宽度)和第 7 行末尾的空格(宽度 0.4pt)。这些内容的总宽度比第 2 行大 5.24442pt。\hsize\hfill\vrule\hsize

这个框的高度等于\vbox它里面的高度。第一个\hrule插入到第一个基线(它的距离是\topskip=10pt,用于将的上边界\box255传播到输出例程。然后是高度的框\vsize,然后是第二个框\hrule(0.4pt)。所以它\box255的高度是:10pt+ \vsize+0.4pt。因此,输出例程报告\vbox10.4pt太高了。

相关内容