当 TeX 排版 \over 时,它如何计算线的 x 宽度?

当 TeX 排版 \over 时,它如何计算线的 x 宽度?

编辑

我需要水平宽度

垂直很容易——只是 xi8

背景

我试图理解 TeX 如何计算 { top \over b } 中分数线的宽度

我到目前为止已经尝试过

我查看了附录 G 说明https://www.tug.org/TUGboat/tb27-1/tb86jackowski.pdf

我还查看了 TeX 书第 444/445 页上的规则 15-15e:http://www.ctex.org/documents/shredder/src/texbook.pdf

我遇到的问题

规则基本内容如下:

以正确的尺寸渲染顶部 以正确的尺寸渲染底部

创建高度为 theta 的线(但不指定宽度)

留出一些空间以避免碰撞

但是,我找不到的是:给定字体大小以及顶部/底部框的边界框,如何计算分数线的宽度?

谢谢!

答案1

宽度只是分子和分母的最大宽度:

$$
\vrule height 7pt
\mkern 6mu
\vrule height 7pt
\over
\vrule height 7pt
\mkern 12mu
\vrule height 7pt
$$
\bye

我曾经使用过\vrule,所以没有侧边距。

在此处输入图片描述

不深入细节,分数的宽度比分数线的宽度略大。这保证了在以下结构中

{a\over b}\over{a\over b}

主分馏线的宽度大于次分馏线的宽度。

\def\testnum{
  \vrule height 7pt
  \mkern 6mu
  \vrule height 7pt
}
\def\testden{
  \vrule height 7pt
  \mkern 12mu
  \vrule height 7pt
}

\setbox0=\hbox{$\displaystyle{\testnum\over\testden}$}

\showthe\wd0

\setbox0=\hbox{$\textstyle\testden$}

\showthe\wd0

\bye

由此可见

> 9.86649pt.
l.14 \showthe\wd0

? 
> 7.46649pt.
l.18 \showthe\wd0

? 

答案2

TeXbook 附录 B,规则 15d:...最后构建一个 vbox...由盒子 x、紧邻的 kern、高度为 theta 的 hrule 和盒子 z 组成。

因为 hrule in vbox 获取的是其中所有框的最大宽度,所以最终的宽度为框 x 和 z 的宽度之和。而且,此时框 x 和 z 的宽度相同,等于分子和分母的宽度之和,参见规则 15a。

相关内容