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 中使用它来获取基线跳过,但跳过是 Lua 用户数据对象(因为它具有拉伸和收缩组件以及自然长度),因此您不能直接在内联算术 Lua 表达式中使用它/

\documentclass{article}

\begin{document}

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

产生终端输出:

baseline is 786432

相关内容