![对 \framebox 的理解有问题](https://linux22.com/image/396174/%E5%AF%B9%20%5Cframebox%20%E7%9A%84%E7%90%86%E8%A7%A3%E6%9C%89%E9%97%AE%E9%A2%98.png)
我正在阅读LaTeX 中的更多数学知识,并在第 3.9.2 节第 91-92 页介绍了 的命令\framebox
。以下两个代码示例显示了不同的输出:
\framebox{\makebox[\totalheight]{1}}
\framebox[\totalheight]{1}
书中解释如下:
确实,
\totalheight
是 1 的高度,它成为框的宽度。但是,框的总高度是字符 1 的高度,您必须在此基础上加上两倍的\fboxsep
,即框内容与框架之间的间隔,定义为 3 点,以及两倍的\fboxrule
,即线或规则的宽度,定义为 0.4 点。这些长度通常也会添加到框的宽度中,但在这种情况下不会,因为我们强制宽度等于字符的高度。
那么我该如何理解最后几句话和完全不同的输出?希望有人能帮我一下。
答案1
\documentclass{article}
\newsavebox\CBox
\begin{document}
\sbox\CBox{g}
\the\wd\CBox | \the\ht\CBox+\the\dp\CBox
\framebox{\makebox[\totalheight]{g}}
\framebox[\totalheight]{g}
\framebox[\width]{g}
\framebox[\the\dimexpr\ht\CBox+\dp\CBox]{g}
\sbox\CBox{\framebox[\totalheight]{g}}
\the\wd\CBox | \the\ht\CBox+\the\dp\CBox
\end{document}
g 的宽度为 5pt,高度为 4.53pt,深度为 2.05pt,总高度为 6.5899pt。\framebox[\totalheight]{g}
我们得到的框的宽度为 6.5899pt-0.8pt=5.711pt(从框中减去框架的线宽!5.711pt 与框的自然宽度几乎相同,
\totalheight
减去两倍的线宽没有实际区别。
将所有值保存在一个框中,我们得到的宽度为 6.5899(线宽现在是框的一部分),高度为 7.93pt,这是 g 的旧高度加上
\fboxsep
(3pt)和\fboxrule
(0.4pt)。深度是旧值,加上\fboxsep
和\fboxrule
。