So konvertieren Sie eine Klebespezifikation wie „\parfillskip=0pt plus 1fil“ in einen LuaTeX-Klebeknoten

So konvertieren Sie eine Klebespezifikation wie „\parfillskip=0pt plus 1fil“ in einen LuaTeX-Klebeknoten

Ich versuche, einen Verbindungsknoten zu erstellen, den ich dem internen Parameter zuweisen kann tex.parfillskip.

In Plain TeX \parfillskipwird der Kleber für als zugewiesen \parfillskip=0pt plus 1fil. Ausgabe der Werte in 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)

führt zu dieser Ausgabe:

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

Meine Fragen sind also:

  • Wie konvertiert man einen Wert 1filin die stretchKomponente der Klebespezifikation? Ist das genauso einfach wie Multiplizieren mit 65536(wie es aus dem Dump hervorgeht)?
  • Wie bestimmt man den Wert stretch_order? Das scheint etwas willkürlich. Der obige Wert ist 2, aber der stretch_orderWert für tex.topskipist 0. Wie bestimmt man, was in diese Komponente für die Klebespezifikation eingefügt werden soll?

Antwort1

LuaTeX hat eine zusätzliche Stufe der unendlichen Verbindung eingeführt: Sie können fi, fil, fillund haben filll. Einstellungen wie

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

hat jeweils die Streckungsreihenfolgen 0, 1, 2, 3, 4.

In der Tat

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

wird aufhören mit

> 1.0pt plus 1.0fi minus 1.0fi.

Die Einheiten sind in skalierten Punkten angegeben. Um 1 zu erhalten, <unit>benötigen Sie also 65536, egal, <unit>was Sie oben auswählen.

verwandte Informationen