Como converter especificações de cola como '\parfillskip=0pt plus 1fil' para nó de cola LuaTeX

Como converter especificações de cola como '\parfillskip=0pt plus 1fil' para nó de cola LuaTeX

Estou tentando criar um nó de cola que possa atribuir ao parâmetro interno tex.parfillskip.

No Plain TeX, a cola para \parfillskipé atribuída como \parfillskip=0pt plus 1fil. Despejando os valores em 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)

leva a esta saída:

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

Então minhas perguntas são:

  • Como converter um valor 1filpara o stretchcomponente da especificação da cola. É tão simples quanto multiplicar por 65536(como parece no despejo)?
  • Como determinar o valor stretch_order? Parece um pouco arbitrário. O valor acima é 2, mas o stretch_ordervalor de tex.topskipé 0. Como determinar o que colocar naquele componente para as especificações da cola.

Responder1

LuaTeX introduziu um grau adicional de cola infinita: você pode ter fi, fil, fille filll. Então configurações como

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

terão ordens de expansão 0, 1, 2, 3, 4 respectivamente.

De fato

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

vai parar com

> 1.0pt plus 1.0fi minus 1.0fi.

As unidades estão em pontos escalonados, então para obter 1 <unit>você precisa de 65536, o que <unit>você escolher entre os acima.

informação relacionada