![TeX 截断 \showbox 命令的输出](https://linux22.com/image/401674/TeX%20%E6%88%AA%E6%96%AD%20%5Cshowbox%20%E5%91%BD%E4%BB%A4%E7%9A%84%E8%BE%93%E5%87%BA.png)
我正在学习 Knuth 的《The TeXbook》。在第 12 章中,他通过查看内部诊断格式的水平盒内容演示了 TeX 在单词之间添加的粘合剂。我正在尝试使用\showbox
命令自己生成输出,如下所示。
\setbox0=\hbox{''Oh, oh!'' cried Baby Sally. Dick and Jane laughed.}
\showbox0
TeX 生成输出,但在第一个单词后被截断(使用等)。
> \box0=
\hbox(6.94444+1.94444)x228.2227
.\tenrm " (ligature '')
.\tenrm O
.\tenrm h
.\tenrm ,
.\glue 3.33333 plus 2.08331 minus 0.88889
.etc.
! OK.
我怎样才能让 TeX 打印整个句子的完整输出?
答案1
您在这里想要的是增加\showboxbreadth
(也可能\showboxdepth
增加)。要显示所有内容,您可以使用\maxdimen
:
\showboxdepth=\maxdimen
\showboxbreadth=\maxdimen
否则你就把它们设置为你想要的值。
以下是 TeXBook 对这些参数的描述:
\showboxbreadth
(显示盒子时每级的最大物品数量)
\showboxdepth
(显示盒子时的最高级别)
Plain TeX 中的默认值是:
\showboxbreadth=5
\showboxdepth=3
这解释了为什么 TeX 只显示前 5 个项目:"Oh,\glue
。如果你有一个(相当奇怪)的\setbox0=\hbox{\hbox{''\hbox{\hbox{Oh,} ooh!}''}}
,日志将显示:
> \box0=
\hbox(6.94444+1.94444)x48.0557
.\hbox(6.94444+1.94444)x48.0557
..\tenrm " (ligature '')
..\hbox(6.94444+1.94444)x38.05566
...\hbox(6.94444+1.94444)x16.11116 []
...\glue 3.33333 plus 1.66666 minus 1.11111
...\tenrm o
...\kern0.27779
...\tenrm o
...etc.
..\tenrm " (ligature '')
这里您可以看到只显示了前三个框的内容,而第四个框的内容仅显示为\hbox(6.94444+1.94444)x16.11116 []
(尾随[]
表示被截断了),因为\showboxdepth
是 3,和以前一样,较长的框(这里是第三个)被截断为etc.
。