eTeX\currentgrouptype
区分两种类型的\hbox
组类型
\hbox{\showthe\currentgrouptype} % 3 "adjusted hbox group"
\noindent
\hbox{\showthe\currentgrouptype} % 2 "hbox group"
看着tex.web
,我看到几个地方hbox_group
发生以下情况:
@d hbox_group=2 {code for `\.{\\hbox}\grp'}
@d adjusted_hbox_group=3 {code for `\.{\\hbox}\grp' in vertical mode}
@<Initiate the construction of an hbox or vbox, then |return|@>=
...
if (box_context<box_flag)and(abs(mode)=vmode) then
scan_spec(adjusted_hbox_group,true)
else scan_spec(hbox_group,true)
@<Cases of |handle...@>=
hbox_group: package(0);
adjusted_hbox_group: begin adjust_tail:=adjust_head; package(0);
end;
我不明白这adjust_tail:=adjust_head
是什么意思。也许与命令有关\vadjust
?
答案1
每当 TeX 开始新的分组级别时,它都会记录当前的分组类型,以便在分组结束时可以执行正确的操作。如果构建了水平框,它会区分水平模式(组代码 2)和垂直模式(组代码 3)的水平框。
两者的区别在于,在垂直情况下ins_node
,mark_node
和adjust_node
节点(来自\insert
、\mark
和\vadjust
)会移出盒子进入外部。
它们在hpack
例程中被收集到以指针 为起点的列表中adjust_head
。然后,当组结束时(组代码 3),此列表的头部被分配给以 为终点的列表的尾部adjust_tail
,这就是您在上面的代码中看到的情况。
另请参阅§647。