我很难将元素排列在不同的框中,并且我已将问题(我认为)简化为一个最小的例子。
下面的代码将两个 fbox 并排放置。它们具有相同的内部元素,但垂直顺序不同。
其中一个
\hbox to \pwidth{\hfill\fbox{\vbox to \baselineskip{\phantom{0000}}}}
\hbox to \pwidth{\hfill XXXX}
另一个有
\hbox to \pwidth{\hfill XXXX}
\hbox to \pwidth{\hfill\fbox{\vbox to \baselineskip{\phantom{0000}}}}
我的问题是“为什么这些盒子的总高度不一样?”
每个框的高度应为 2*\baselineskip 加上为绘制框架而分配的额外空间。
完整代码和输出如下:
\documentclass[10pt]{letter}
\usepackage[top=0.5in, bottom=0.5in, left=0.5in, right=0.5in]{geometry}
\begin{document}
\newlength{\pwidth}
\setlength{\pwidth}{52pt}
\lineskip=0pt
\Large
\hbox{
\hbox to \pwidth{
\fbox{
\parbox{\pwidth}{
\hbox to \pwidth{\hfill\fbox{\vbox to \baselineskip{\phantom{0000}}}}
\hbox to \pwidth{\hfill XXXX}
}}}
\hskip 10pt
\hbox to \pwidth{
\fbox{
\parbox{\pwidth}{
\hbox to \pwidth{\hfill XXXX}
\hbox to \pwidth{\hfill\fbox{\vbox to \baselineskip{\phantom{0000}}}}
}}}
}
\end{document}
输出如下:
如果我在每个框中放置一个额外的“XXXX”行,则输出如下。现在右边的框更高了。但在这两种情况下,您都应该有一个 XXXX 行获得额外的顶部粘合(来自 \baselineskip),而另一个没有获得额外的顶部粘合(顶部的行)。这表明除了 Gustavo 在他的评论中指出的问题之外,还发生了一些事情:
如果我在两者下方放置一个额外的 XXXX 行,则两者的高度相同:
答案1
如果我说您似乎没有完全理解行间粘合的工作原理,请原谅我:我会尝试给出一个避免技术性的简单解释。
线间胶是 TeX 用来尝试保持文本基线之间固定距离的一种装置。使用您的设置(包括\Large
),此距离等于 18 pt。现在,有三种可能性:
带框的框后跟“XXXX”框。在本例中,框的深度为 3.4 pt(即达到 3.4 pt以下基线)后面跟着一个高度为(多于基线)等于 9.84 pt;然后,
\baselineskip
在中间插入 4.76 pt 的粘连。实际上,3.4 + 4.76 + 9.84 = 18.0。“XXXX”框后跟框架框。由于框架框的高度为 21.4 pt(18.0 + 3.4
\fboxsep
),因此本身就超出了所需距离,因此\lineskip
在两个框之间插入了粘连(当前为 1.0 pt)。两个“XXXX”框并排,高度均为 9.84 pt,深度均为 0 pt。在这种情况下,
\baselineskip
需要更厚的 8.16 pt 胶水:实际上,0 + 8.16 + 9.84 = 18.0。
因此,在您的三行版本中我们有:
在左边的框中,XXXX++
\lineskip
framed+thinner\baselineskip
+XXXX;在右边的框中,XXXX+更厚
\baselineskip
+XXXX\lineskip
++框架。
因此我们看到右边的盒子更高。
四线案例的分析就留给你吧。