如何將像 '\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

所以我的問題是:

  • 如何將一個值轉換1filstretch膠水規格的組成部分。它就像乘以一樣簡單嗎65536(就像從轉儲中看到的那樣)?
  • 如何確定價值stretch_order?似乎有點隨意。上面的值為2,但的stretch_order值為。如何確定在膠水規格的組件中添加什麼內容。tex.topskip0

答案1

LuaTeX 引入了額外的無限黏合度:你可以有fifilfillfilll。所以設定就像

\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>您在上面選擇什麼。

相關內容