\hfil
考虑这种简单的对齐(注意模板中缺少)
\halign{#&#\cr
a&b\cr
aaaaaaaa&bbbbbbbbb\cr
}
令我惊讶的是,这并没有给出Underfull \hbox in alignment
错误!根据我对第 22 章的阅读,TeXBook 非常清楚地指出,粘合规范必须在模板中,以便较窄的框可以拉伸到最大列宽。
有人能解释一下我的误解吗?谢谢!
答案1
最初,单元格条目被设置在仅用于对齐的特殊“未设置框”中,此时宽度未知,因此不会给出未满消息,而当对齐宽度已知并且未设置的框被重新设置为所需宽度时,消息将被抑制。TeXBook 确实提到了类似的情况,即给出了对齐的目标宽度,但我认为没有明确记录这一点。
\ddanger 当 ^{alignment} 为“overfull”或“tight”或“loose”或“underfull”时,您不会收到每条对齐行的警告消息;您只会收到一条消息,并且 \TeX\ 会显示一个 {\sl^{prototype row}/}
请注意,这不仅仅是一个#
苹果的模板,您不会从以下位置收到任何消息,其中模板在条目周围添加了文本 []。
%\tracingonline1
% \showboxbreadth\maxdimen\showboxdepth\maxdimen
%\tracingoutput1
\halign{[#]&#\cr
a&b\cr
aaaaaaaa&bbbbbbbbb\cr
}
\bye
答案2
基本上,TeX 不会报告由“简单模板#
”生成的未满的盒子。
您可以看到没有发出任何警告
\halign{\hfil#\hfil&\hfil#\cr
aaaaa&bbbbbbbbb\cr
aaa&bbbbbb\cr
\omit aaa&bbbbb\cr
aaa&\omit bbbbb\cr
}
\bye
TeXbook 在第 240 页的第一个危险弯道中解释了清除当前模板并“改用\omit
平凡模板”的原因。平凡模板本质上等同于。#
#\hfil
实际上,TeX 在任何情况下都不会报告盒子未满的情况:使用以下方法你也不会得到任何报告
\halign{\hfil#\hfil&\hfil#\cr
aaaaa&bbbbbbbbb\cr
aaa&bbbbbb\cr
\omit aaa&bbbbb\cr
aaa&\omit bbbbb\cr
\hfilneg aaa\hfilneg&bbbbb\cr
}
\bye
其中\hfilneg
标记取消了模板中的粘合作用。