A\fill
是0pt plus 1fill
根据定义(在 LaTeX 内核中)的,但为什么1.5\fill
给出0.0pt
(其他乘数也一样)?
例子:
\documentclass{article}
\usepackage{expl3}
\begin{document}
\ExplSyntaxOn
\skip_log:n { \fill }
\skip_log:n { 1 \fill }
\skip_log:n { 1.5 \fill }
\skip_log:n { 1pt + \fill }
\ExplSyntaxOff
\end{document}
输出:
> \fill =0.0pt plus 1.0fill.
> 1\fill =0.0pt.
> 1.5\fill =0.0pt.
> 1pt+\fill =1.0pt plus 1.0fill.
答案1
假设是一个跳过寄存器;那么就可以执行\foo
操作,但由于它仅在寄存器上定义,因此通过删除拉伸和收缩组件,将转换为。<factor>\foo
\dimen
<skip>
<dimen>
查看TeXbook 第 270 和 271 页的<dimen>
和 for 的语法。<glue>
该\skip_log:n
操作允许内部使用\glueexpr
(本质上是一个未命名的跳过寄存器)并最终使用\showthe
(不关心以下标记的性质)对粘合进行操作。
如果你这样做,\skip_log:n { \fill*3/2 }
你会得到
> \fill *3/2=0.0pt plus 1.5fill.
因为 中允许缩放(使用整数)<glue expr>
。