TeX 截断 \showbox 命令的输出

TeX 截断 \showbox 命令的输出

我正在学习 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.

相关内容