为什么 1.5\fill 是 0pt

为什么 1.5\fill 是 0pt

A\fill0pt 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>

相关内容