왜 Lua에 관심을 가져야 합니까?

왜 Lua에 관심을 가져야 합니까?

나는 TeX을 알게 된 이후부터 LuaLaTex를 사용해 왔습니다. 왜냐하면 LuaLaTex는 나에게 꼭 필요한 시스템 글꼴과 쉽게 작동할 수 있기 때문입니다. TeX의 글꼴 패키지는 러시아어의 친구이지만 러시아어의 친구는 아닙니다 Lua.

여기에서 몇 가지 예를 찾았습니다.LuaTeX로 할 수 있는 일의 간단한 예는 무엇입니까?, 하지만 아직 무엇을 할 수 있는지 완전히 이해하지 못합니다 Lua.

그래서 내 질문은 다음과 같습니다.

  • TeX용으로 특별히 설계된 것입니까 Lua, 아니면 단지 TeX에서 구현할 수 있는 프로그래밍 언어입니까?답변: 이는 TeX에만 국한된 것이 아닌 프로그래밍 언어일 뿐입니다.
  • 조판에 어떻게 사용할 수 있나요? 어떤 패키지든 대체할 수 있나요?
  • OS에 따라 달라지나요? 즉, Windows에서 사용하는 동안 특정한 것이 있나요?
  • 라틴 문자가 아닌 문자에도 사용할 수 있나요?대답: 그렇습니다.

답변1

당신은 특히 다음과 같이 질문했습니다.

조판에 [Lua]를 어떤 용도로 사용할 수 있나요? 어떤 패키지든 대체할 수 있나요?

  • 일부 조판 작업은 LuaTeX에서만 수행할 수 있고 pdfTeX나 XeTeX에서는 수행할 수 없습니다. 우리는 점점 더 많은 패키지를 보기 시작했습니다.필요하다LuaLaTeX는 목표를 달성합니다. 이러한 패키지는 pdfLaTeX 또는 XeLaTeX로 전혀 작성될 수 없었습니다. 예는 showhyphensselnolig패키지입니다. (전체 공개: 저는 패키지의 주요 작성자입니다 selnolig.)

  • 일부 조판 작업은 pdfLaTeX나 XeLaTeX보다 LuaLaTeX에서 더 쉽게(또는 최소한 더 많은 작업 없이) 수행할 수 있습니다. 예를 들어 다음 두 코드 청크를 비교해 보십시오(게시물에서 발췌)tex의 산술 임시). 두 경우 모두 매크로는 \StrMid문자열에서 하위 문자열을 추출하는 역할을 합니다.

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

    ~ 대

    \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
    

    이 두 코드 덩어리를 대조한다고 해서 LaTeX3 코드 작성자를 무시하려는 것은 아닙니다. 별말씀을요! 내가 하려는 것은 Lua를 조금이라도 알면 일부 작업을 수행하기가 다소 쉬울 수 있다는 것을 보여주는 것입니다. Lua는 꽤 많은 강력한 문자열 처리 기능을 제공하므로 문자열을 조작할 때 특히 그렇습니다.

  • 현대 프로그래밍 언어로 작업하는 데 익숙하지만 매크로 확장 언어의 모든 세부 사항을 완전히 마스터한 적이 없다면 -- 나 자신도 이 혐의에 대해 유죄를 인정해야 합니다... -- 아마 찾을 수 있을 것입니다. Lua 코드와 LuaTeX에 내장된 Lua와 TeX 간의 명확한 인터페이스를 사용하면 몇 가지 중요하지 않은 조판 작업을 프로그래밍하는 것이 훨씬 쉽습니다.

답변2

Lua는 쉽게 내장된 작은 가상 머신(예를 들어 Java JVM보다 훨씬 작음)에서 실행되도록 설계된 프로그래밍 언어이므로 다른 시스템에 내장하는 데 이상적입니다(예를 들어 여러 게임의 구성 언어로 사용됨).

따라서 Luatex 사람들이 개발한 것은 아니지만(사실 Lua 자체는 현재 Luatex와 함께 제공되는 Lua 5.2 버전보다 앞선 버전 5.3 이상입니다) 적합한 확장 언어로 선택되었습니다.

내장된 TeX 알고리즘 중 일부를 다시 구현하는 데 사용할 수 있습니다.

OS에 거의 독립적입니다.

예, Luatex에서 볼 수 있듯이 유니코드 글꼴과 유니코드 문자열을 처리할 수 있습니다. (유니코드 문자열은 UTF-8 인코딩으로 노출되므로 단일 단위는 문자가 아닌 바이트입니다.)

답변3

LuaLaTeX로 수행할 수 있는 작업의 예로 CSV 데이터를 LaTeX 표 형식 또는 행렬 형식으로 자동 변환하는 스크립트를 만들었습니다. 사용자가 더 이상 TeX 파일의 데이터 또는 시뮬레이션 결과를 수동으로 업데이트하는 것에 대해 걱정할 필요가 없으므로 실험실 보고서에 매우 유용합니다.

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

관련 정보