假设我输入
\hbox to \hsize{abc}
\hbox{abc}
\bye
现在,由于第一个\hbox
设置为\hsize
,我期望 abc 以最大拉伸粘合。在第二个中\hbox
,我期望 abc 以正常粘合宽度粘合,不会进行任何拉伸和收缩。但是,当我在 TeX 中比较结果时,似乎两者都产生了相同的结果,为什么?
答案1
答案2
“胶水”这个词可能会引起误解。它不是用来把字母粘在一起的东西,这是没有必要的,而是用来空格彼此之间的事物。
胶水可以死板的或者灵活的;灵活性可以是允许拉伸或收缩的量(当然也可以是两者兼而有之)。当命令 TeX 用文本填充一定量的水平空间时,它会占用所有可用的灵活的考虑胶水。在拉伸或收缩之前,它会计算自然宽度的材料,以确定它是比要填充的尺寸更宽还是更窄;然后它会查看柔性胶,并根据柔性量来划分拉伸或收缩。
以下是相关主题的列表:
请注意,收缩永远不会超过可用量,而 TeX 可以拉伸超过所谓的“最佳”量(以牺牲坏性为代价)。无限拉伸或收缩优先,并且永远不会产生坏框(当然,从算法的角度来看,这对 TeX 来说是坏的;尽管如此,结果对人类读者来说可能看起来很糟糕)。
输入中的空格是指示 TeX 插入粘连(可收缩和可拉伸)。因此
\hbox to \hsize{abc def}
会拉伸空格处的内容(并显示“未满\hbox
”消息)。如果要拉伸字母之间的空间,则必须手动插入粘连:
\hbox to\hsize{a\hfil b\hfil c}
将把三个字母隔开(没有信息,因为我们使用了无限胶水)。