Cómo convertir especificaciones de pegamento como '\parfillskip=0pt plus 1fil' al nodo de pegamento LuaTeX

Cómo convertir especificaciones de pegamento como '\parfillskip=0pt plus 1fil' al nodo de pegamento LuaTeX

Estoy intentando crear un nodo adhesivo que pueda asignar al parámetro interno tex.parfillskip.

En Plain TeX, el pegamento para \parfillskipse asigna como \parfillskip=0pt plus 1fil. Volviendo los valores en 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)

conduce a esta salida:

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

Entonces mis preguntas son:

  • ¿Cómo se convierte un valor 1filal stretchcomponente de la especificación del pegamento? ¿Es tan simple como multiplicar por 65536(como parece por el vertedero)?
  • ¿Cómo se determina el valor stretch_order? Parece un poco arbitrario. El valor anterior es 2, pero el stretch_ordervalor de tex.topskipes 0. ¿Cómo se determina qué poner en ese componente para la especificación del pegamento?

Respuesta1

LuaTeX introdujo un grado adicional de pegamento infinito: puedes tener fi, fily . Entonces configuraciones comofillfilll

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

tendrá órdenes de estiramiento 0, 1, 2, 3, 4 respectivamente.

En efecto

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

se detendrá con

> 1.0pt plus 1.0fi minus 1.0fi.

Las unidades están en puntos escalados, por lo que para obtener 1 <unit>necesitas 65536, lo que <unit>elijas entre los anteriores.

información relacionada