LuaLaTeX:計算Lua中的長度

LuaLaTeX:計算Lua中的長度

如果這是一個菜鳥問題,我深表歉意,但我發現使用線上搜尋和瀏覽參考手冊很難找到解決我的 Lua 問題的方法。

我想計算長度:除以\linewidth\baselineskipfloor,最後乘以\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

您可以tex.baselineskip在Lua中使用來獲取baselineskip,但是skip是一個Lua用戶資料物件(因為它具有拉伸和收縮組件以及自然長度),因此您無法直接在內聯算術Lua表達式中使用它/

\documentclass{article}

\begin{document}

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

產生終端輸出:

baseline is 786432

相關內容