LuaLaTeX: Рассчитать длину в Lua

LuaLaTeX: Рассчитать длину в Lua

Прошу прощения, если это вопрос новичка, но мне крайне сложно найти решение моей проблемы с 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 для получения baselineskip, но skip — это объект пользовательских данных Lua (так как он имеет компоненты растяжения и сжатия, а также естественную длину), поэтому вы не можете напрямую использовать его во встроенных арифметических выражениях Lua с/

\documentclass{article}

\begin{document}

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

выводит на терминал:

baseline is 786432

Связанный контент