pdflatex, lualatex, platex... 명령 이름은 비슷해 혼동을 낳지만 실제로는 각각 "형식"과 "엔진"의 조합입니다. 형식은 미리 컴파일된 매크로 묶음입니다. 엔진은 실제로 엔진을 실행하는 프로그램입니다. LaTeX는 그러한 형식 중 하나이며 여러 다른 엔진 위에서 실행됩니다. 이 페이지는 정확히 해당 축을 따라 LaTeX2e, pLaTeX/upLaTeX, LuaLaTeX 및 XeLaTeX를 정렬합니다.
형식과 엔진
엔진은 .tex 파일을 읽고 이를 조판하는 실행 파일입니다(TeX, pdfTeX, XeTeX, LuaTeX, e-pTeX 등). 대조적으로 형식은 \documentclass, \section 등의 매크로의 거대한 컬렉션으로, 미리 읽어서 단일 덤프(.fmt 파일)로 미리 컴파일됩니다. 시작 시 엔진은 즉시 .fmt를 로드하여 실행될 때마다 모든 매크로를 재정의하지 않아도 됩니다.
따라서 “LaTeX”는 엔진의 이름이 아니라 형식의 이름입니다. 동일한 LaTeX 형식은 다른 엔진에서 실행될 수 있으며 입력하는 명령은 원하는 엔진 + 형식을 인코딩합니다. pdflatex는 "pdfTeX 엔진 + LaTeX 형식"을 의미합니다. lualatex는 "LuaTeX 엔진 + LaTeX 형식"을 의미합니다.
LaTeX가 유일한 형식은 아닙니다. Knuth의 기본 plain TeX 및 ConTeXt는 완전히 다른 형식입니다. 이 페이지는 가장 널리 사용되는 엔진인 LaTeX로 범위를 좁히고 이를 실행할 수 있는 주요 엔진을 안내합니다.
LaTeX (2e)
오늘날 “LaTeX”는 거의 예외 없이 LaTeX2e를 의미합니다. 이는 현재 LaTeX 프로젝트에 의해 관리되는 Leslie Lamport의 LaTeX 매크로의 최신 버전이며 1994에 도착했습니다. 2e는 오랫동안 계획된 LaTeX3로 가는 중간 단계인 이전 LaTeX 2.09의 "작은 개정"을 알리기 위한 것이었습니다.
그러나 LaTeX3는 독립형 새 커널로 구체화되지 않았습니다. 대신 해당 작업은 LaTeX2e 위에 expl3(LaTeX3 프로그래밍 계층)로 계층화되었습니다. 2020년부터 expl3는 기본적으로 형식의 일부로 로드되며, 새로운 기능을 구현하기 위해 커널 내부에서 점점 더 많이 사용됩니다. 결과적으로 우리는 여전히 일반 LaTeX2e를 매일 실행하고 있지만 내부는 LaTeX3 기술로 계속 현대화되고 있습니다.
LaTeX2e 커널은 이제 정기적으로 연 2회(대략 6월과 11월) 업데이트됩니다. 가장 최근의 안정 릴리스는 2025-11-01(2025년 11월 출시)이며, 다음 릴리스인 2026-06-01의 개발 사전 릴리스가 이미 테스트를 위해 배포되고 있습니다. 저작 모델은 일관됩니다. 상단에 \documentclass가 있는 문서 클래스를 선택하고 프리앰블에서 \begin{document}까지 패키지 로딩 및 구성을 수행한 다음 본문을 작성합니다(익숙한 "클래스 + 프리앰블" 모델).
pdfTeX 엔진에서 이 형식을 실행하는 것은 가장 고전적인 표준 페어링입니다. 동일한 pdfTeX는 출력 대상에 따라 두 개의 명령으로 분할됩니다. latex는 DVI 모드에서 pdfTeX를 실행하고 중간 DVI 형식(나중에 별도의 도구를 사용하여 PDF로 변환됨)을 내보내는 반면, pdflatex는 pdfTeX가 PDF를 직접 방출합니다. 오늘날 대부분 서양 텍스트 문서의 경우 pdflatex가 사실상 기본값입니다.
pLaTeX / upLaTeX
pLaTeX 및 upLaTeX는 일본어 조판용으로 제작된 엔진에 LaTeX 형식을 적용합니다. 일본 특유의 작업(세로 쓰기, 루비(후리가나), 일본어 줄 구성)은 원래 ASCII Corporation에서 확장된 pTeX 엔진 제품군에 의해 처리됩니다. 현재 TeX Live에서 platex와 uplatex는 모두 e-upTeX 기반에서 실행되지만 platex는 pLaTeX 호환 문자 처리를 유지하는 반면 uplatex는 Unicode 지향 upLaTeX 형식으로 실행됩니다.
이 계열은 항상 DVI를 출력한 다음 dvipdfmx — 2단계 파이프라인(uplatex file.tex 다음에 dvipdfmx file.dvi)을 사용하여 일본어 베어링 DVI를 PDF로 변환합니다. 일본어 인덱스의 경우 upmendex와 쌍을 이룹니다. 문서 클래스의 경우 Haruhiko Okumura의 jsarticle/jsbook(pLaTeX용) 및 ujarticle와 같은 Unicode 대응이 일반적이며, 최신 JIS X 4051 규격 jlreq도 마찬가지입니다.
platex와 uplatex의 차이점은 실행 가능한 기반이 적고 형식 수준 문자 처리가 더 많다는 것입니다. platex는 pLaTeX 자산과의 이전 버전 호환성을 위해 전통적인 pTeX 스타일 동작을 유지합니다. uplatex는 Unicode를 가정하고 한글이나 키릴 문자가 혼합된 일본어를 잘 처리합니다. 새로운 일본 논문의 경우 uplatex가 표준 선택입니다.
사용 시기: 일본 사회나 출판사가 pLaTeX에 대한 클래스나 스타일을 제공할 때 또는 pTeX의 성숙한 일본어 구성(세로 쓰기 등)을 원할 때 pLaTeX/upLaTeX가 확실한 선택입니다. 반대로 시스템 글꼴을 그대로 사용하고 싶거나 Unicode를 직접 입력하고 싶다면 LuaLaTeX-ja(아래)가 더 적합합니다.
LuaLaTeX
LuaLaTeX는 LuaTeX 엔진에 LaTeX 형식을 적용합니다. 명령은 lualatex입니다. LuaTeX는 Unicode 입력을 직접 처리하고 fontspec 패키지를 통해 OS에 설치된 OpenType / TrueType 시스템 글꼴을 로드할 수 있는 pdfTeX의 파생 엔진입니다. 중간 형식 없이 PDF를 직접 생성합니다.
이름에서 알 수 있듯이 Lua 스크립트 언어가 엔진에 내장되어 있다는 것이 특징입니다. \directlua{...}를 사용하면 TeX의 내부에 도달하는 Lua를 작성하여 한때 어려웠던 확장을 훨씬 쉽게 만들 수 있습니다. 일본어 조판은 luatexja 패키지로 처리되며, 시스템 글꼴과 Unicode를 유지하면서 pLaTeX와 동등한 구성을 제공합니다.
이러한 현대성은 LaTeX 팀이 점점 더 LuaLaTeX를 최신 엔진으로 지정하고 새 프로젝트의 기본값으로 권장하는 이유입니다. 단점은 속도입니다. 컴파일이 pdflatex 또는 xelatex보다 무겁습니다(때때로 XeLaTeX보다 두 배 정도 느림). 일본어, 다국어 텍스트, 정교한 글꼴 처리 및 프로그래밍 방식의 조판을 수행하는 하나의 엔진을 원한다면 LuaLaTeX가 첫 번째 후보입니다.
XeLaTeX
XeLaTeX는 XeTeX 엔진에 LaTeX 형식을 적용합니다. 명령은 xelatex입니다. LuaLaTeX와 마찬가지로 Unicode 입력 및 fontspec를 통한 시스템 글꼴 직접 사용을 지원합니다. 출력의 경우 내장된 xdvipdfmx(dvipdfmx에서 파생된 드라이버)를 통해 PDF를 생성합니다.
XeLaTeX의 강점은 단순성입니다. "시스템 글꼴을 사용하고 싶습니다"의 경우 LuaLaTeX보다 구성이 더 가볍고 컴파일이 더 빠른 경향이 있습니다. 글꼴 선택은 운영 체제 자체 글꼴 이름 조회와 유사하게 느껴지므로 글꼴 이름을 하나씩 시도해 보는 것은 간단합니다. 반면에 Lua의 심층적인 프로그래밍 기능이 부족하여 새로운 개발의 중심이 LuaTeX로 이동하고 있습니다.
명령 치트 시트
동일한 LaTeX 형식을 사용하더라도 명령 이름은 그 뒤에 있는 엔진, 출력 형식 및 글꼴 작동 방식을 결정합니다. 아래 표에서 명령어부터 왼쪽에서 오른쪽으로 읽어보세요.
| 명령 | 엔진 | 출력 | Unicode / 시스템 글꼴 |
|---|---|---|---|
latex | pdfTeX (DVI 모드) | DVI → 변환 필요 | 아니요(입력 등 필요) |
pdflatex | pdfTeX | PDF (직접) | 아니요(입력 등 필요) |
platex | e-upTeX(pLaTeX 호환성 런타임) | DVI → dvipdfmx | 일본어; 레거시 글꼴 |
uplatex | e-upTeX | DVI → dvipdfmx | 내부 Unicode; 레거시 글꼴 |
lualatex | LuaTeX | PDF (직접) | 예 — fontspec / luatexja |
xelatex | XeTeX | PDF (xdvipdfmx를 통해) | 예 - fontspec |
실제 명령의 경우 PDF를 직접 내보내는 엔진은 한 단계로 끝나는 반면, DVI 기반 엔진은 변환 단계를 추가합니다.
# pdfTeX: PDF を直接出力 / emits PDF directly
$ pdflatex main.tex # → main.pdf
# LuaTeX: PDF を直接出力 / emits PDF directly
$ lualatex main.tex # → main.pdf
# upLaTeX: DVI を出力し、dvipdfmx で PDF へ変換
# upLaTeX emits DVI, then dvipdfmx converts to PDF
$ uplatex main.tex # → main.dvi
$ dvipdfmx main.dvi # → main.pdf어느 것을 선택할 것인가
대략적인 가이드는 다음과 같습니다. 속도, 패키지 호환성, 일본 상황 등의 세부 기준은 "엔진 선택" 페이지에서 살펴봅니다.
- 대부분 서양 텍스트로 빠르게 →
pdflatex. 가장 폭넓은 패키지 지원을 통해 가장 성숙해졌습니다. - 일본어 논문 / 필수 기존 수업 →
uplatex(또는 필요한 경우platex). DVI →dvipdfmx. - 모든 작업을 수행할 수 있는 현대적인 엔진(일본어 포함) →
lualatex. Unicode + 시스템 글꼴 +luatexja. - 소란을 최소화하면서 시스템 글꼴을 사용하세요 →
xelatex. 구성이 가볍고 컴파일이 더 빠릅니다.
선택한 후에는 프로젝트에서 고정하세요.
엔진 선택은 기분에 따라 바뀔 수 있는 것이 아닙니다. 논문의 경우 제목 페이지, 목차, 그림, 표, 참고문헌이 올바르게 빌드되면 README 또는 .latexmkrc에서 빌드 절차를 동결합니다. 문서를 lualatex에서 uplatex로 중간에 이동하면 글꼴 선택, 일본어 처리, PDF 경로 및 참고문헌 처리가 모두 한꺼번에 변경됩니다. 전환하는 경우 전체 원고로 돌아가기 전에 작은 샘플의 모든 기능을 테스트하세요.
동결할 때에는 명령뿐만 아니라 로그의 첫 줄도 기록해 둡니다. This is LuaHBTeX ..., This is XeTeX ... 또는 This is e-upTeX ...와 같은 줄은 실제 엔진과 TeX Live 연도를 나타냅니다. 공동 작업에서 "동일한 명령"이 다른 출력을 제공하는 경우 한 줄을 비교하면 편집기 설정 문제와 TeX Live 또는 형식 차이를 신속하게 구분할 수 있습니다.