Por que eu deveria estar interessado em Lua?

Por que eu deveria estar interessado em Lua?

Uso LuaLaTex desde que conheci o TeX, pois ele funciona facilmente com fontes do sistema, o que eu realmente preciso. Os pacotes de fontes no TeX não são amigos do idioma russo, embora sejam amigos do Luaidioma.

Encontrei alguns exemplos aqui:Qual é um exemplo simples de algo que você pode fazer com LuaTeX?, mas ainda não entendo completamente o que posso Luafazer.

Então, minhas perguntas são as seguintes:

  • Foi Luaespecialmente projetado para TeX ou é apenas uma linguagem de programação que pode ser implementada em TeX?Resposta: É apenas uma linguagem de programação, não específica do TeX.
  • Como ele pode ser usado na composição tipográfica? De alguma forma, pode substituir algum pacote?
  • Depende do sistema operacional, ou seja, há algo específico ao usá-lo no Windows?
  • Funciona com caracteres não latinos?Resposta: SIM.

Responder1

Você perguntou, entre outras coisas:

Para que [Lua] pode ser usado na composição tipográfica? De alguma forma, pode substituir algum pacote?

  • Algumas tarefas de composição tipográfica podem ser realizadas apenas em LuaTeX, mas não em pdfTeX ou XeTeX. Estamos começando a ver cada vez mais pacotes queexigirLuaLaTeX para cumprir seus objetivos; esses pacotes simplesmente não poderiam ter sido escritos em pdfLaTeX ou XeLaTeX. Exemplos são os pacotes showhyphense selnolig. (Divulgação completa: sou o autor principal do selnoligpacote.)

  • Algumas tarefas de composição tipográfica podem ser realizadas mais facilmente (ou, pelo menos, sem mais trabalho) no LuaLaTeX do que no pdfLaTeX ou no XeLaTeX. Compare, por exemplo, os dois blocos de código a seguir (da postagemTemporários aritméticos em tex). Em ambos os casos, a macro \StrMidserve para extrair uma substring de uma string:

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

    contra

    \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
    

    Ao contrastar esses dois pedaços de código, certamente não pretendo menosprezar o autor do código LaTeX3. De jeito nenhum! Tudo o que pretendo fazer é mostrar que algumas tarefas podem ser bastante fáceis de realizar se conhecermos apenas um pouco de Lua. Isto é especialmente verdadeiro quando se trata de manipulação de strings, já que Lua fornece algumas funções poderosas de manipulação de strings.

  • Se você está acostumado a trabalhar com uma linguagem de programação moderna, mas nunca dominou completamente todos os detalhes de uma linguagem de expansão macro - eu mesmo devo me declarar culpado apenas dessa acusação... - você provavelmente encontrará isso É muito mais fácil programar algumas tarefas de composição tipográfica não triviais usando o código Lua e a interface clara entre Lua e TeX que está embutida no LuaTeX.

Responder2

Lua é uma linguagem de programação projetada para rodar em uma pequena máquina virtual de fácil incorporação (muito menor que a Java JVM, por exemplo) e portanto ideal para incorporação em outros sistemas (é usada como linguagem de configuração para vários jogos, por exemplo).

Portanto, ela não foi desenvolvida pelo pessoal do luatex (na verdade, a própria Lua está atualmente pelo menos na versão 5.3, à frente da versão Lua 5.2 fornecida com o luatex), mas escolhida como uma linguagem de extensão adequada.

Ele pode ser usado para reimplementar vários dos algoritmos TeX integrados

É mais ou menos independente do sistema operacional

Sim, como você vê no Luatex, ele pode lidar com fontes Unicode e strings Unicode (strings Unicode são expostas como codificação UTF-8, portanto, uma única unidade é um byte em vez de um caractere)

Responder3

Como exemplo do que pode ser feito com LuaLaTeX, criei um script que converte automaticamente dados CSV para o formato tabular ou matricial LaTeX. É bastante útil para relatórios de laboratório, pois o usuário não precisa mais se preocupar em atualizar manualmente os dados ou resultados de simulação no arquivo TeX.

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

informação relacionada