
Pido disculpas si esta es una pregunta para novatos, pero me resulta extremadamente difícil encontrar una solución a mi problema de Lua mediante búsquedas en línea y manuales de referencia.
Me gustaría calcular una longitud: dividir \linewidth
por \baselineskip
, tomar floor
y finalmente multiplicar por \baselineskip
. El resultado debe devolverse en formato pt
.
Ya no logro ingresar \baselineskip
a Lua de modo que pueda hacer un cálculo con él:
\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}
Entonces las preguntas son: ¿Cómo entro \baselineskip
a Lua y cómo puedo calcular y generar la longitud que describí anteriormente?
Si alguien conoce una guía "real" para principiantes de LuaLaTeX que también trata estos problemas, agradecería una pista. ¡Gracias!
Solución
Con la ayuda de las respuestas a continuación, la longitud anterior se puede calcular como:
\directlua{tex.sprint(math.floor(tex.dimen.linewidth / tex.baselineskip.width)
* tex.baselineskip.width / tex.sp('1pt') ..'pt')}
Respuesta1
Puede usarlo tex.baselineskip
en Lua para obtener el salto de línea base, pero un salto es un objeto de datos de usuario de Lua (ya que tiene componentes de estiramiento y reducción, así como una longitud natural), por lo que no puede usarlo directamente en expresiones aritméticas de Lua en línea con/
\documentclass{article}
\begin{document}
\directlua{
print('baseline is ' ..tex.baselineskip.width)
}
\end{document}
produce salida terminal:
baseline is 786432