对齐模板不需要胶水吗?

对齐模板不需要胶水吗?

\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标记取消了模板中的粘合作用。

相关内容