LuaTeX는 TeX 계열의 배포판에서 사용되는 엔진 중 하나로, 전통적인 TeX 시스템에 스크립트 언어 Lua 를 통합한 확장 버전이다. Lua 스크립트를 이용해 문서 처리 과정(노드 리스트, 폰트 매핑, 레이아웃 등)을 프로그래밍적으로 제어할 수 있어 다양한 텍스트 및 그래픽 작업을 고도화할 수 있다. 주요 특징은 Unicode 지원, OpenType 폰트 처리, PDF 출력 기능을 제공한다는 점이다.
개요
- 엔진 종류: pdfTeX 기반에 Lua 인터프리터를 내장한 TeX 엔진.
- 지원 포맷: PDF 출력(기본), DVI 및 XeTeX 과 유사한 다양한 출력 포맷을 확장 모듈을 통해 지원 가능.
- 주요 목적: 문서 레이아웃 및 글꼴 처리 과정을 사용자 정의 Lua 스크립트로 세밀하게 제어함으로써 기존 TeX 엔진이 제공하지 못하는 동적인 기능을 구현한다.
역사
- 개발 시작: 2006년, Taco Hoekwater 등 LuaTeX 프로젝트 팀에 의해 개발이 시작되었다.
- 첫 베타 발표: 2007년 첫 베타 버전이 공개되었다.
- 안정화: 2009년 버전 0.6이 안정화되어 TeX Live 2009 배포판에 포함되었다.
- 주요 배포: 이후 TeX Live 및 MiKTeX 등 주요 TeX 배포판에 정기적으로 업데이트되어 포함되고 있다.
주요 기능
| 구분 | 설명 |
|---|---|
| Lua 통합 | 엔진 내부에 Lua 5.2 이후 버전을 임베드하여, 노드 리스트 조작, 폰트 매핑, 문서 메타데이터 처리 등을 스크립트로 구현 가능. |
| Unicode 지원 | UTF‑8 입력을 기본으로 하며, 다국어 문서·폰트 처리를 원활하게 수행. |
| OpenType 폰트 | luaotfload 라이브러리를 통해 OpenType/TrueType 폰트를 직접 로드하고, 그리프스, 핸드리깅, 언어별 대체 등 고급 기능을 제공. |
| PDF 출력 | pdfTeX과 동일한 PDF 생성 엔진을 사용하면서, Lua 스크립트에 의해 PDF 메타데이터·페이지 레이아웃을 동적으로 조정 가능. |
| 확장성 | C 레벨 모듈(luatexbase 등) 및 외부 패키지(luacode, luacode*)와 연동해 기능을 추가·확장할 수 있다. |
주요 사용 분야
- 학술·기술 문서: 복잡한 레이아웃, 자동 색인·주석 삽입, 맞춤형 목차 생성 등에 활용.
- 출판·디자인: 고급 폰트 피처를 활용한 서체 디자인, 다국어 서적 제작.
- 자동화·스크립팅: 문서 전처리·후처리, 데이터‑드리븐 차트·표 생성 등 프로그래밍적 접근이 필요한 작업.
- ConTeXt MkIV: LuaTeX를 기반으로 한 ConTeXt 시스템의 기본 엔진으로 사용된다.
- LuaLaTeX: LaTeX 포맷을 LuaTeX 엔진과 결합한 LaTeX 배포판으로, 학술·교육 분야에서 널리 이용된다.
관련 프로젝트
- LuaLaTeX: LaTeX 커널을 LuaTeX 위에서 실행하도록 구성한 포맷.
- ConTeXt MkIV: ConTeXt 시스템이 LuaTeX 위에서 동작하도록 구현된 버전.
- luaotfload: LuaTeX 내에서 OpenType 폰트를 로드·처리하기 위한 라이브러리.
- luacode·luacode*: LaTeX 문서 안에서 Lua 코드를 삽입·실행할 수 있게 해 주는 패키지.
배포 및 라이선스
- 배포: TeX Live, MiKTeX 등 주요 TeX 배포판에 포함되며, 소스 코드는 CTAN(Comprehensive TeX Archive Network)에서 제공한다.
- 라이선스: 엔진 자체는 Knuth 가 정의한 “TeX 공용 라이선스”(일종의 GPL 계열) 아래 배포되며, 내장된 Lua 인터프리터는 MIT 라이선스와 호환되는 형태로 포함된다.
참고 문헌
- LuaTeX – The Lua-Enabled TeX Engine, TeX Live Documentation, CTAN.
- Hoekwater, Taco. “The LuaTeX project”, TUGboat (2008).
- “LuaLaTeX – LaTeX format for LuaTeX”, CTAN package documentation.
(※ 본 내용은 현재까지 확인된 공신력 있는 자료를 기반으로 작성되었으며, 추가적인 세부 정보는 공식 문서 및 최신 배포판 Release Note를 참고한다.)