如果 a\hbox{...}
包含一些胶水,例如由于空格标记,其宽度\hbox{...}
可能会扩展或缩小。
\phantom
和 和\llap
是否以\rlap
相同的方式扩展/收缩?
就代码片段而言:
类似的事情
\hbox{content of horizontal box}
在生成的输出文件(.dvi/.pdf)中总是产生与
\hbox{\phantom{content of horizontal box}\llap{content of horizontal box}}
或
\hbox{\rlap{content of horizontal box}\phantom{content of horizontal box}}
?
(如果是这样,我可以用它在正确的位置添加 pdf-specials...)
答案1
Jewdokija,你说:
如果 \hbox{...} 包含一些粘连,例如由于空格标记,则该 \hbox{...} 的宽度可能会扩大或缩小。
你确定吗? ;-)
关于\hbox
、\phantom
和\llap
和\rlap
拉伸性/收缩性:
请注意\hbox
,\phantom
,\llap
并\rlap
处理他们的论点受限制的水平模式。
引用自 TeXbook 的“第 12 章:胶水”中一个危险的段落:
在最简单的情况下,当你只想要一个盒子有其自然宽度,您不必写
\hbox spread 0pt
;您可以简单地说。\hbox{⟨contents of box⟩}
正如你从上面引用的陈述和下面显示的例子中所看到的,胶水的可拉伸性/收缩性在(非受限)水平模式下并不一定与在受限制的水平模式。;-)
简而言之:
(非限制)水平模式是 TeX 将段落拆分为指定长度的行并据此计算粘连以使内容恰好适合指定长度的行的模式。
限制水平模式是根本不发生换行的模式,因为所有内容都被视为属于同一行文本,无论该行有多长。
\noindent Here ``content of horizontal box'' is processed while in horizontal mode:\hfill\break
\noindent content of horizontal box\break
\noindent Here ``content of horizontal box'' is processed while in restricted horizontal mode:\hfill\break
\noindent\phantom{content of horizontal box}\llap{content of horizontal box}\break
\noindent\rlap{content of horizontal box}\phantom{content of horizontal box}\break
\noindent\hbox{content of horizontal box}\break
\noindent\hbox{\phantom{content of horizontal box}\llap{content of horizontal box}}\break
\noindent\hbox{\rlap{content of horizontal box}\phantom{content of horizontal box}}\break
\bye