LuaLaTeX: Länge in Lua berechnen

LuaLaTeX: Länge in Lua berechnen

Ich entschuldige mich, wenn dies eine Anfängerfrage ist, aber ich finde es äußerst schwierig, mithilfe von Online-Suchen und dem Durchsuchen von Referenzhandbüchern eine Lösung für mein Lua-Problem zu finden.

Ich möchte eine Länge berechnen: \linewidthDurch dividieren \baselineskip, die nehmen floorund abschließend mit multiplizieren \baselineskip. Das Ergebnis soll in zurückgegeben werden pt.

Ich scheitere bereits daran, \baselineskipin Lua so einzusteigen, dass ich damit eine Berechnung durchführen kann:

\documentclass{article}
\begin{document}
\begin{enumerate}
\item Linewidth works this way: \directlua{tex.sprint(tex.dimen['linewidth'] / 65536)tex.sprint('pt')}
\item and this way: \directlua{tex.sprint(tex.dimen.linewidth / 65536)tex.sprint('pt')}
\item \directlua{tex.sprint(tex.dimen['baselineskip'])}
\item \directlua{tex.print(tex.skip['baselineskip'].width)}
\item \directlua{tex.print(tex.skip['baselineskip'].stretch)}
\item \directlua{tex.sprint(tex.baselineskip)}
\end{enumerate}
\end{document}

Die Fragen lauten also: Wie komme ich \baselineskipin Lua und wie kann ich die oben beschriebene Länge berechnen und ausgeben?

Falls jemand zufällig einen "richtigen" Anfängerleitfaden zu LuaLaTeX kennt, in dem auch solche Probleme behandelt werden, wäre ich für einen Hinweis dankbar. Danke!


Lösung

Mithilfe der folgenden Antworten kann die obige Länge wie folgt berechnet werden:

\directlua{tex.sprint(math.floor(tex.dimen.linewidth / tex.baselineskip.width)
    * tex.baselineskip.width  / tex.sp('1pt') ..'pt')}

Antwort1

Sie können tex.baselineskipin Lua verwenden, um den Baselineskip zu erhalten, aber ein Skip ist ein Lua-Benutzerdatenobjekt (da es Stretch- und Shrink-Komponenten sowie eine natürliche Länge hat), sodass Sie es nicht direkt in Inline-Arithmetik-Lua-Ausdrücken mit verwenden können/

\documentclass{article}

\begin{document}

\directlua{
print('baseline is '  ..tex.baselineskip.width)
}
\end{document}

erzeugt Terminalausgabe:

baseline is 786432

verwandte Informationen