¿Por qué debería interesarme por Lua?

¿Por qué debería interesarme por Lua?

He estado usando LuaLaTex desde que conocí TeX, porque puede funcionar fácilmente con las fuentes del sistema, que realmente necesito. Los paquetes de fuentes en TeX no son amigos del idioma ruso, aunque sí lo son Lua.

He encontrado algunos ejemplos aquí:¿Cuál es un ejemplo simple de algo que puedes hacer con LuaTeX?, pero todavía no entiendo del todo qué puedo Luahacer.

Entonces mis preguntas son las siguientes:

  • ¿Fue Luadiseñado especialmente para TeX o es solo un lenguaje de programación que se puede implementar en TeX?Respuesta: Es sólo un lenguaje de programación, no específico de TeX.
  • ¿Cómo se puede utilizar en composición tipográfica? ¿Puede de alguna manera sustituir algún paquete?
  • ¿Depende del sistema operativo, es decir, hay algo específico al usarlo en Windows?
  • ¿Puede funcionar con caracteres no latinos?Respuesta: SÍ.

Respuesta1

Usted preguntó, entre otras cosas:

¿Para qué se puede utilizar [Lua] en la composición tipográfica? ¿Puede de alguna manera sustituir algún paquete?

  • Algunas tareas de composición tipográfica sólo se pueden realizar en LuaTeX, pero no en pdfTeX o XeTeX. Estamos empezando a ver más y más paquetes querequerirLuaLaTeX para lograr sus objetivos; estos paquetes simplemente no podrían haberse escrito en absoluto en pdfLaTeX o XeLaTeX. Algunos ejemplos son los paquetes showhyphensy selnolig. (Divulgación completa: soy el autor principal del selnoligpaquete).

  • Algunas tareas de composición tipográfica se pueden realizar más fácilmente (o, al menos, sin más trabajo) en LuaLaTeX que en pdfLaTeX o XeLaTeX. Compare, por ejemplo, los siguientes dos fragmentos de código (de la publicaciónTemporales aritméticos en tex). En ambos casos, la macro \StrMidsirve para extraer una subcadena de una cadena:

    \usepackage{luacode} % for "\luastring" macro
    \newcommand\StrMid[3]{\directlua{tex.sprint(string.sub(\luastring{#1},#2,#3))}}
    

    versus

    \usepackage{xparse}
    \ExplSyntaxOn
    \NewExpandableDocumentCommand{\StrMid}{mmm}
     {
      \tl_map_function:fN { \tl_range:onn { #1 } { #2 } { #3 } } \use:n
     }
    \cs_generate_variant:Nn \tl_map_function:nN { f }
    \cs_generate_variant:Nn \tl_range:nnn { o }
    \ExplSyntaxOff
    

    Al contrastar estos dos fragmentos de código, ciertamente no pretendo menospreciar al autor del código LaTeX3. ¡De nada! Todo lo que quiero hacer es mostrar que algunas tareas pueden ser bastante fáciles de realizar si uno conoce aunque sea un poco de Lua. Esto es especialmente cierto cuando se trata de manipular cadenas, ya que Lua proporciona bastantes funciones poderosas para el manejo de cadenas.

  • Si está acostumbrado a trabajar con un lenguaje de programación moderno pero nunca ha dominado completamente todos los detalles de un lenguaje de expansión de macros (yo mismo debo declararme culpable de este cargo...) probablemente lo encontrará. Es mucho más fácil programar algunas tareas de composición tipográfica no triviales utilizando el código Lua y la interfaz clara entre Lua y TeX integrada en LuaTeX.

Respuesta2

Lua es un lenguaje de programación diseñado para ejecutarse en una pequeña máquina virtual fácilmente integrada (mucho más pequeña que Java JVM, por ejemplo) y, por lo tanto, ideal para integrarse en otros sistemas (se utiliza como lenguaje de configuración para varios juegos, por ejemplo).

Por lo tanto, no es desarrollado por la gente de luatex (de hecho, Lua actualmente tiene al menos la versión 5.3, por delante de la versión Lua 5.2 enviada con luatex), sino que se elige como un lenguaje de extensión adecuado.

Se puede utilizar para volver a implementar varios de los algoritmos TeX integrados.

Es más o menos independiente del sistema operativo.

Sí, como puede ver en Luatex, puede manejar fuentes Unicode y cadenas Unicode (las cadenas Unicode están expuestas como codificación UTF-8, por lo que una sola unidad es un byte en lugar de un carácter)

Respuesta3

Como ejemplo de lo que se puede hacer con LuaLaTeX, creé un script que convierte automáticamente datos CSV al formato tabular o matricial de LaTeX. Es bastante útil para informes de laboratorio ya que el usuario ya no tiene que preocuparse por actualizar manualmente los datos o los resultados de la simulación en el archivo TeX.

https://gist.github.com/calebreister/8dd7ab503c91dea4dd2c499b9d004231

información relacionada