'\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

私の質問は次のとおりです:

  • 値をグルー仕様のコンポーネント1filに変換するにはどうすればよいでしょうか。ダンプからわかるようstretchに、単に掛け算するだけでしょうか。65536
  • 値 はどのようにして決定するのでしょうかstretch_order。少し恣意的であるように思えます。上記の値は です2が、stretch_orderの値はtex.topskipです0。グルー仕様のそのコンポーネントに何を入れるかをどのように決定するのでしょうか。

答え1

LuaTeXは無限接着の次の段階を導入しました。つまり、、、および を持つことができますfi。つまり、次のような設定ですfilfillfilll

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

関連情報