pdfLaTeX, XeLaTeX, LuaLaTeX, upLaTeX — 어느 것을 사용해야 합니까? 이 페이지는 바로 그 질문에 대한 실용적인 결정 가이드입니다. 권장 사항과 함께 시작된 다음 선택을 유도하는 요소를 설명하고 비교표와 엔진 전환에 대한 참고 사항으로 끝납니다.
빠른 추천
세부 사항에 앞서 목적에 따른 첫 번째 선택은 다음과 같습니다. 대부분의 사람들에게는 이것으로 충분합니다. "LaTeX 형식" 페이지에서 각 이름은 형식(LaTeX, 명령 시스템)과 결합된 엔진(처리 프로그램)임을 상기하세요. 아래에서는 실제로 입력한 명령(pdflatex 등)을 통해 이를 제공합니다.
- 서양 텍스트(영어/유럽어), 가장 간단한 경로, 최대 패키지 호환성 → pdfLaTeX(
pdflatex). 이는 가장 많은 문서와 선행 기술을 갖춘 LaTeX의 사실상의 표준입니다. - 시스템의 OpenType 글꼴을 사용하고, Unicode/다국어 텍스트를 처리하고, 작업을 단순하게 유지하고 싶습니다 → XeLaTeX (
xelatex).fontspec를 사용하면 일본어가 아닌 다국어 작업이 쉬워집니다. - 시스템 글꼴 및 Unicode와 프로그래밍 가능하고 세밀한 제어 및 미래 보장 → LuaLaTeX (
lualatex). Lua에서 조판을 형성할 수 있으며 LaTeX 팀은 이를 미래 표준으로 취급합니다. - 일본어 → upLaTeX (
uplatex)가 주류이고 안전한 선택입니다. LuaLaTeX + luatexja는 최신 Unicode 기본 경로입니다(그러나 느림).jlreq클래스는 둘 중 하나와 함께 작동합니다.
문장에서: 서양 텍스트의 경우 pdfLaTeX, 시스템 글꼴이나 Unicode가 필요한 경우 XeLaTeX 또는 LuaLaTeX, 일본어의 경우 upLaTeX 또는 LuaLaTeX. 특별한 요구 사항이 없는 새 프로젝트의 경우 pdfLaTeX(서양) 또는 upLaTeX(일본어)부터 시작하는 것이 안전합니다. 장기적으로 Unicode에서 모든 것을 통합하려면 LuaLaTeX를 선택할 가치가 있습니다.
글을 쓰기 전 다섯 가지 확인 사항
개인적인 취향이 아닌 투고 대상과 소스 자료를 거꾸로 거슬러 작업할 때 엔진 선택이 더 안전합니다. 논문은 랩 템플릿을 상속할 수 있고, 저널 논문에는 클래스 파일이 필요할 수 있으며, 기술 매뉴얼은 CI 또는 독자의 컴퓨터로 컴파일될 수 있습니다. 첫 번째 실제 문단을 쓰기 전에 이 다섯 가지 사항을 확인하면 나중에 수십 페이지를 다시 작성하는 일을 피할 수 있습니다.
- 제출 대상을 먼저 따르십시오. 클래스 파일이나 명령 이름이
uplatex,pdflatex,lualatex또는 다른 엔진인 경우 이를 사용하십시오. - 일본어를 어떻게 처리할지 결정합니다. 상속된 일본어 템플릿은 종종 upLaTeX를 가리킵니다. 새로운 Unicode/OpenType 설정은 LuaLaTeX +
luatexja를 가리킵니다. - 참고문헌 및 색인 도구 확인: BibTeX 대 Biber 및 mendex 대 upmendex는
latexmk설정에 영향을 미칩니다. - 그림과 글꼴을 살펴보세요. 상속된 EPS 또는 PSTricks는 DVI 경로를 선호하는 반면, PDF/PNG 그림 및 OpenType 글꼴은 pdfLaTeX, LuaLaTeX 또는 XeLaTeX를 선호합니다.
- 빌드 중지: 공동작업자와 CI가 동일한 PDF를 재현할 수 있도록
.latexmkrc또는 README에 명령을 작성합니다.
선택을 이끄는 요인
빠른 답변이 맞지 않거나 이유를 알고 싶을 때 축을 하나씩 소개합니다. 대부분은 엔진이 글꼴과 문자 인코딩을 처리하는 방법으로 돌아옵니다.
글꼴. pdfTeX는 TeX의 전통적인 글꼴 모델인 TFM(TeX 글꼴 메트릭)와 Type1/PK 글꼴을 사용합니다. 단순히 OS에 설치된 일반 글꼴을 가리킬 수는 없습니다. XeTeX와 LuaTeX는 여기에서 가장 크게 다릅니다. fontspec 패키지를 통해 이름이 지정된 시스템에 이미 있는 TrueType / OpenType 글꼴을 직접 사용할 수 있습니다. \setmainfont{Times New Roman}. fontspec XeTeX 또는 LuaTeX가 필요합니다; pdfLaTeX에서는 작동하지 않습니다.
Unicode 입력. XeTeX 및 LuaTeX는 내부적으로 Unicode-native이며 UTF-8 소스를 있는 그대로 사용합니다. pdfTeX도 마찬가지입니다. 2018년 LaTeX 릴리스에서는 UTF-8을 기본 입력 인코딩으로 사용하므로(따라서 \usepackage[utf8]{inputenc}는 더 이상 필요하지 않습니다) — 그러나 내부적으로는 여전히 8비트 글꼴 인코딩(T1 등)에 매핑되므로 작동하는 문자는 fontenc 및 글꼴에 따라 다르며 임의의 Unicode 또는 임의의 Unicode를 자유롭게 입력할 수 없습니다. CJK 직접. 번거로움 없이 다국어 텍스트와 기호를 입력하려면 XeTeX/LuaTeX가 가장 좋습니다.
패키지 호환성. 이것은 사람들이 놓치는 실용적인 함정입니다. 일부 패키지는 엔진별로 다릅니다. 예를 들어 fontspec 및 unicode-math는 XeTeX/LuaTeX 전용입니다. 반대로 pstricks는 DVI로 라우팅된 pdfLaTeX 및 XeLaTeX에서 작동하지만 일반적으로 LuaLaTeX에서는 작동하지 않습니다. microtype(아래)의 일부도 pdfTeX/LuaTeX 쪽으로 기울어져 있습니다. 비호환성은 반대 방향으로도 발생합니다. 이전 튜토리얼을 따르도록 작성된 소스는 최신 엔진에서 컴파일되지 않을 수 있습니다. 기본 규칙은 무엇보다 먼저 템플릿이나 저널 클래스가 요구하는 엔진을 확인하는 것입니다.
속도. 차이는 실제적이고 눈에 띕니다. 일반적인 순서는 pdfTeX 가장 빠르며, XeTeX가 중간이고, LuaTeX가 가장 느립니다. LuaTeX는 Lua VM를 시작하고 HarfBuzz를 통해 글꼴을 형성하는 오버헤드를 전달하며, 크고 글꼴이 많은 문서에서는 pdfLaTeX보다 3배 이상 느리게 실행될 수 있습니다(간단한 문서에서는 간격이 작습니다). 실제 글쓰기 세션에는 수백 번의 재컴파일이 포함됩니다.
마이크로 타이포그래피. microtype 패키지의 문자 돌출 및 글꼴 확장은 서양 텍스트의 모양을 눈에 띄게 향상시킵니다. 여기서 엔진 차이는 큽니다. 돌출은 세 가지 모두에서 작동하지만 글꼴 확장은 XeTeX가 아닌 pdfTeX 및 LuaTeX에서만 지원됩니다. 단어 간 간격 및 커닝 조정은 pdfTeX에만 해당되며, 합자를 비활성화하면 pdfTeX/LuaTeX에서 작동하고 문자 간격은 세 가지 모두에서 작동합니다. 최고의 서양식 출력을 위해서는 pdfLaTeX 또는 LuaLaTeX가 안전한 선택입니다.
그래픽/PDF 기능 및 프로그래밍 가능성. 모든 엔진은 graphicx를 통해 PNG, JPEG 및 PDF를 가져오며, \includegraphics는 이들 간에 거의 동일하게 작동합니다(pdfLaTeX는 자동으로 EPS를 변환합니다). LuaTeX의 독특한 강점은 Lua를 통한 제어입니다. 조판 패스에 연결하거나 외부 데이터를 읽어 매크로에서 어색한 테이블을 만들 수 있습니다. 또한 fontspec 및 unicode-math를 포함한 최신 패키지 스택과도 잘 어울리므로 "미래 보장형"이라고 불립니다.
CJK / 일본어의 특수한 경우입니다. 일본어를 올바르게 설정하려면(세로 쓰기, 줄 바꿈 규칙(금칙), 일본어와 서양식 텍스트 사이의 간격) 전용 기계가 필요합니다. 오래된 기본값은 pTeX 제품군 엔진(uplatex)으로, 일본어 JFM(글꼴 메트릭)을 사용하며 안정적이고 빠릅니다. 현대적인 대안인 LuaLaTeX + luatexja는 Unicode의 모든 것을 처리하고 시스템 글꼴을 자유롭게 사용할 수 있게 해줍니다. 그러나 TeX Wiki가 분명히 언급했듯이 조판은 XeLaTeX, upLaTeX 또는 pLaTeX보다 오래 걸립니다(LuaJITTeX는 대략 1.3x를 다시 구입합니다). 또한 직접 CJK 글꼴 선택은 일반 fontspec 대신 luatexja-fontspec를 사용합니다. jlreq 클래스(일본어 조판을 위한 JIS 요구 사항을 기반으로 구축됨)는 platex, uplatex 또는 lualatex에서 실행되며 엔진을 자동 감지합니다. 나머지 내용은 전용 일본어 페이지에서 다룹니다.
작은 시험 파일로 결정
논문이나 제출 초안 내에서 엔진을 변경하면 글꼴, 그림, 참고문헌, 줄 바꿈 등을 한꺼번에 이동하여 문제의 원인을 숨길 수 있습니다. 의심스러운 경우 실제 글쓰기가 시작되기 전에 한 페이지 분량의 시험 파일을 만들고 후보 엔진과 동일한 자료를 컴파일해 보세요. 컴파일 여부뿐만 아니라 로그의 경고, PDF에 글꼴 포함, 그림 처리 및 공동작업자가 단계를 재현할 수 있는지 여부도 확인하세요.
# 欧文の候補 / Western candidates
pdflatex engine-test.tex
lualatex engine-test.tex
xelatex engine-test.tex
# 日本語 upLaTeX の候補 / Japanese upLaTeX candidate
uplatex engine-test.tex
dvipdfmx engine-test.dvi- 대상 템플릿이 있으면 해당 템플릿으로 테스트하세요. 빈 파일이 성공했다고 해서 제출 설정이 제대로 작동했음을 증명하는 것은 아닙니다.
- 그림 1개, 표시된 방정식 1개, 참고문헌 항목 1개를 포함하여 재판이 실제 원고를 미니어처로 표현하도록 합니다.
- 선택한 후에는
.latexmkrc또는 README에 엔진을 고정하고 다른 엔진으로 프로젝트를 우연히 컴파일하지 마십시오. - PDF를 비교하십시오. 줄 바꿈이나 글꼴이 다른 경우 프로젝트 내부에 선택 이유를 남겨주세요.
비교표
결정 축을 따라 배치된 네 가지 주요 선택 사항입니다. 명령 이름은 가장 왼쪽 열입니다. microtype의 경우 돌출과 확장이 별도로 표시됩니다(대시는 지원되지 않음을 의미).
| 명령 | Unicode / 시스템 글꼴 | microtype | 속도 | 주요 용도 |
|---|---|---|---|---|
pdflatex | 아니요(TFM/Type1; UTF-8 입력은 정상이지만 8비트 매핑됨) | 돌출 예 / 확장 예 | 가장 빠른 | 서부 기본값; 가장 넓은 호환성 |
xelatex | 예(fontspec를 통해 직접 OpenType) | 돌출 있음 / 확장 없음 | 중간 | 쉬운 다국어 / OpenType |
lualatex | 예(fontspec 및 Lua 제어) | 돌출 예 / 확장 예 | 가장 느림 | 현대/미래; luatexja를 통한 일본어 |
uplatex | JFM(DVI 경로)를 통한 일본어; UTF-8 입력 | 한정, 서부 한정 | 빠르게 | 일본논문; 안정적인 기본값 |
표를 평결이 아닌 지침으로 다루십시오. \usepackage[T1]{fontenc} 및 적합한 서양 글꼴 패키지와 결합된 pdfLaTeX는 많은 유럽 언어를 아름답게 설정합니다. XeLaTeX에서도 microtype 돌출은 여전히 적용됩니다. "할 수 있다 / 할 수 없다"라는 이분법보다는 정리와 노력의 균형으로 읽어보세요.
엔진 전환 시 참고 사항
엔진을 중간에 전환하면 동일한 소스에서도 결과가 변경될 수 있습니다. 사람들이 실제로 부딪히는 문제는 다음과 같습니다.
글꼴 및 인코딩 설정 변경. pdfLaTeX 스테이플 \usepackage[utf8]{inputenc} 및 \usepackage[T1]{fontenc}는 XeLaTeX/LuaLaTeX에서는 필요하지 않으며 일반적으로 생략됩니다(내부적으로는 Unicode입니다). 대신 fontspec 및 \setmainfont에 도달합니다. pdfLaTeX 프리앰블을 XeLaTeX로 직접 전달하면 경고나 글꼴 관련 오류가 발생할 수 있습니다.
% pdfLaTeX 向け(旧来)/ for pdfLaTeX (traditional)
% \usepackage[utf8]{inputenc}
% \usepackage[T1]{fontenc}
% XeLaTeX / LuaLaTeX 向け / for XeLaTeX / LuaLaTeX
\usepackage{fontspec}
\setmainfont{TeX Gyre Termes} % OS / TeX のフォントを名前で指定microtype는 다르게 동작합니다. 동일한 \usepackage{microtype}는 엔진마다 다른 효과를 생성합니다. 예를 들어 XeLaTeX에서는 글꼴 확장이 단순히 꺼져 있습니다. pdfLaTeX에서 조정된 레이아웃은 XeLaTeX로 이동되면 약간(줄 길이, 중단 위치) 이동할 수 있습니다.
패키지 가용성이 변경됩니다. 일부 패키지는 대상 엔진에서 작동이 중지되거나 먼저 사용 가능해집니다. PSTricks 기반 수치를 LuaLaTeX로 이동하면 실행되지 않습니다(pstricks는 지원되지 않습니다). 반대로 fontspec 및 unicode-math는 pdfLaTeX에서 사용할 수 없습니다. 저널 및 출판사 템플릿은 일반적으로 특정 엔진을 가정하므로 먼저 이를 따르는 것이 안전한 조치입니다.
일본어의 경우 CJK-font 설정 전체가 변경됩니다. upLaTeX(pTeX 제품군) 및 LuaLaTeX + luatexja는 일본어 글꼴 이름을 지정하는 방법과 포함되는 방법이 모두 다릅니다. 서양 문서보다 일본 문서의 경우 엔진 마이그레이션이 더 어려울 것으로 예상됩니다. 구체적인 명령에 해당하는 내용은 "컴파일 명령" 페이지를 참조하세요.