如果这是一个新手问题,我深感抱歉,但我发现通过在线搜索和浏览参考手册很难找到解决我的 Lua 问题的方法。
我想计算一个长度:除以\linewidth
,\baselineskip
取floor
,最后乘以\baselineskip
。结果应以 形式返回pt
。
我已经无法进入\baselineskip
Lua 了,因此我无法用它进行计算:
\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}
所以问题是:我如何进入\baselineskip
Lua,以及如何计算并输出我上面描述的长度。
如果有人碰巧知道一本“真正的” 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