如何将诸如 '\parfillskip=0pt plus 1fil' 之类的粘合规范转换为 LuaTeX 粘合节点

如何将诸如 '\parfillskip=0pt plus 1fil' 之类的粘合规范转换为 LuaTeX 粘合节点

我正在尝试创建一个可以分配给内部参数的粘合节点tex.parfillskip

在 Plain TeX 中, 的粘合\parfillskip被指定为\parfillskip=0pt plus 1fil。在 Lua(TeX) 中转储值:

print("width: " .. tex.parfillskip.width)
print("stretch: " .. tex.parfillskip.stretch)
print("shrink: " .. tex.parfillskip.shrink)
print("stretch_order: " .. tex.parfillskip.stretch_order)
print("shrink_order: " .. tex.parfillskip.shrink_order)

导致这样的输出:

width: 0
stretch: 65536
shrink: 0
stretch_order: 2
shrink_order: 0

我的问题是:

  • 如何将值转换1filstretchglue 规范的组件。是否只需乘以65536(从转储中可以看出)?
  • 如何确定值stretch_order?这似乎有点随意。上面的值为2,但的stretch_order值为。如何确定胶水规格中该组件中的内容。tex.topskip0

答案1

LuaTeX 引入了额外的无限粘合度:你可以拥有、 和fifil因此设置如下fillfilll

\parfillskip=0pt plus 1pt
\parfillskip=0pt plus 1fi
\parfillskip=0pt plus 1fil
\parfillskip=0pt plus 1fill
\parfillskip=0pt plus 1filll

拉伸顺序分别为 0、1、2、3、4。

的确

{\directlua{tex.setglue("parfillskip",65536,65536,65536,1,1)}\showthe\parfillskip}

将停止

> 1.0pt plus 1.0fi minus 1.0fi.

单位是缩放点,因此要得到 1,<unit>您需要 65536,无论<unit>您从上面的数字中选择什么。

相关内容