LuaLaTeX: Lua で長さを計算する

LuaLaTeX: Lua で長さを計算する

初心者的な質問で申し訳ありませんが、オンライン検索やリファレンスマニュアルの閲覧で Lua の問題の解決策を見つけるのは非常に困難です。

長さを計算したいと思います。\linewidthを で割り\baselineskip、 を取りfloor、最後に を掛けます\baselineskip。 結果は で返される必要がありますpt

私はすでに\baselineskipLua を使って計算を実行できるようにしようとして失敗しています:

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

質問は、どうすれば\baselineskipLua に入り、上記で説明した長さを計算して出力できるか、ということです。

もし誰かが、このような問題についても説明している「本物の」LuaLaTeX 初心者向けガイドをご存知でしたら、ヒントをいただければ幸いです。ありがとうございます!


解決

以下の回答を参考にして、上記の長さは次のように計算できます。

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

答え1

Luaでベースラインスキップを取得するために使用できますtex.baselineskipが、スキップはLuaのユーザーデータオブジェクト(伸縮コンポーネントと自然長を持つため)であるため、インライン算術Lua式で直接使用することはできません。/

\documentclass{article}

\begin{document}

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

端末出力を生成します:

baseline is 786432

関連情報