pTeX 제품군은 일본어 조판용으로 제작된 TeX 엔진의 계보입니다. ASCII Corporation의 pTeX로 시작하여 Unicode 인식 upTeX, e-TeX 병합 e-pTeX / e-upTeX 및 현대화 pTeX-ng를 통해 계속됩니다. 이 라인은 유럽 지향 pdfTeX가 할 수 없는 작업(세로 쓰기, 금칙 줄 바꿈 및 일본어 글꼴 메트릭)을 수행했습니다.
한 줄로 요약하면 표준 현대 일본 파이프라인은 uplatex(내부 e-upTeX 엔진) → dvipdfmx → PDF입니다. 일반적인 pTeX / upTeX / e-upTeX 경로는 PDF가 아닌 DVI를 방출합니다. 이는 PDF를 직접 방출하는 pdfTeX 및 LuaTeX와의 결정적인 차이점입니다. 4개의 엔진이 아래에서 차례로 이어집니다.
pTeX (ASCII pTeX)
pTeX(TeX 게시, "ASCII pTeX"라고도 함)는 ASCII Corporation이 일본어 TeX를 상업 출판에 적합하게 만들기 위해 구축한 엔진입니다. Plain TeX는 유럽 문자 모양을 한 번에 한 바이트씩 설정하도록 설계되었으며 일본어 조판 규칙이 전혀 없습니다. pTeX는 일본어를 TeX의 내부에 직접 설정하는 데 필요한 낮은 수준의 기계를 엮었습니다.
그 중심에는 쓰기 방향이라는 개념이 있습니다. pTeX는 엔진 레벨에서 세로 쓰기(\tate) 및 가로 쓰기(\yoko)를 처리하므로 동일한 본문 텍스트를 어느 방향으로든 설정할 수 있습니다. 이는 소설, 신문, 교과서 등 수직적 배치가 일반적인 일본 출판에 있어서 없어서는 안 될 요소였습니다.
일본어 간격과 줄 구성을 뒷받침하는 것은 JFM(일본어 글꼴 측정법)입니다. 유럽식 TFM와는 별도로, 일본어 글리프의 너비, 높이, 깊이와 문자 사이에 속하는 공백(접착제/커른)을 기록합니다. 이를 통해 pTeX는 자동으로 전각과 반자 형식을 구별하고, 구두점 주위에 올바른 간격을 삽입하고, 두 스크립트가 만나는 곳에 일본어와 서양 텍스트 사이의 공백(4분자 간격)을 제공합니다.
pTeX는 또한 엔진 내부에서 일본어 금칙(줄 바꿈 금지)을 수행합니다. 행의 시작(、。) …) 또는 끝(「( …)이 아닌 문자는 간격을 미세 조정하여 앞으로 밀거나 뒤로 당깁니다. Ruby(글로스 읽기) 자체는 매크로와 패키지의 작업이지만, 그 기반이 되는 정확한 문자 배치는 pTeX에서 제공됩니다. 유럽 pdfTeX에는 이러한 규칙이 존재하지 않습니다. 이것이 바로 전용 엔진이 필요한 이유입니다.
pTeX의 약점은 문자 인코딩이었습니다. 내부 코드는 EUC-JP 또는 Shift_JIS(-kanji-internal를 통해 선택)였으며 입력은 레거시 인코딩(JIS, Shift_JIS, EUC)으로 가정되었습니다. 처리할 수 있는 한자는 본질적으로 JIS 범위에 바인딩되어 있으므로 JIS 및 다국어 CJK 이외의 문자는 어색했습니다. pTeX 엔진 위에 LaTeX를 얹는 형식은 platex(pLaTeX)로, 일본 신문의 표준을 길게 따릅니다.
upTeX (Unicode pTeX)
upTeX(Unicode pTeX)는 Takuji Tanaka가 2007년부터 개발한 엔진으로 내부적으로 Unicode를 중심으로 pTeX를 재구성했습니다. 입력, 출력 및 내부 처리는 UTF-8 / Unicode를 기반으로 구축되어 pTeX의 가장 큰 골칫거리였던 인코딩 제한에서 벗어날 수 있습니다.
결과적으로 JIS 상자보다 훨씬 더 넓은 범위의 한자를 처리하고 일본어뿐만 아니라 중국어(간체 및 번체) 및 한국어(한글) 여러 CJK 스크립트를 한 번에 설정할 수 있습니다. upTeX는 \kcatcode를 통해 문자를 종류(한자, 가나, 한글, CJK 기호 등)별로 분류하여 일본어 텍스트로 처리되는 범위를 세밀하게 제어합니다.
실제로는 이러한 인코딩 번거로움으로부터의 해방이 결정적이었습니다. LaTeX를 upTeX에 넣는 형식은 uplatex (upLaTeX)이며 많은 현대 일본 작업이 pLaTeX에서 해당 형식으로 이동했습니다. pTeX와의 호환성이 높으므로 대부분의 pLaTeX 시대 자산은 거의 변경되지 않습니다.
e-pTeX / e-upTeX
e-pTeX는 e-TeX 확장과 병합된 pTeX입니다. e-upTeX는 upTeX와 병합되었습니다(e-upTeX는 2008년에 도착했습니다). e-TeX는 \numexpr, \protected와 같은 산술, 양방향 조판을 위한 기초 및 더 큰 레지스터 풀을 추가하는 확장된 TeX 구현입니다. 많은 최신 LaTeX 패키지는 이러한 e-TeX 기능을 가정하므로 일본어 설정에서도 확장 기능이 필수적입니다.
이것이 가장 중요한 실무적 포인트이다. 역사적으로 platex는 e-pTeX에서, uplatex는 e-upTeX에서 실행되었지만 TeX Live 2023 이후 pLaTeX는 호환성을 유지하면서 e-upTeX 기반 설정으로 이동했습니다. 따라서 오늘날 pLaTeX 또는 upLaTeX라고 말할 때 실용적인 기반은 순수한 pTeX/upTeX가 아니라 e-TeX 확장, Unicode 가능 엔진입니다.
오늘의 유지 관리는 pTeX 계열 엔진, 형식 및 JFM을 지속적으로 수리하는 일본 TeX 개발 커뮤니티(texjporg)에서 수행됩니다.
최소 upLaTeX 예
다음은 upLaTeX에 대한 최소 일본어 문서입니다. \documentclass{ujarticle}는 upLaTeX의 가로 쓰기 클래스입니다(세로 쓰기에는 utarticle를 사용합니다. jlreq 클래스는 강력한 현대 선택입니다). 소스를 UTF-8로 저장합니다.
\documentclass{ujarticle}
\begin{document}
こんにちは、\LaTeX。日本語が美しく組めます。
数式も書けます: \[ E = mc^2 \]
\end{document}컴파일은 두 단계로 이루어집니다. 먼저 uplatex는 .tex를 DVI로 처리합니다. 그런 다음 dvipdfmx는 DVI를 PDF로 변환합니다. pTeX 제품군은 PDF를 직접 생성하지 않으므로 이 dvipdfmx 단계는 항상 필요합니다(그리고 uplatex는 일반적으로 상호 참조 및 목차가 해결되도록 두 번 실행됩니다).
$ uplatex document.tex
$ dvipdfmx document.dvi
# => document.pdfpTeX-ng (신세대 / 아시아 pTeX)
pTeX-ng("ng" = 신세대)는 명령 이름 ApTeX(Asiatic pTeX)로도 알려진 Clerk Ma의 비교적 최근 재구현 노력입니다. pTeX 계보를 현대화하여 모든 e-TeX, pTeX 및 upTeX 프리미티브를 지원하여 e-upTeX와의 높은 호환성을 유지하는 동시에 내부를 Unicode(최대 0x10FFFF)로 확장하는 것을 목표로 합니다.
기술적으로 눈에 띄는 것은 직접 PDF 출력입니다. pTeX-ng는 출력 백엔드로 libdpx(dvipdfmx의 라이브러리 형식)를 내장하여 libdpx의 C 함수에 대한 직접 호출을 통해 페이지 나누기 및 문자 출력을 수행하므로 dvipdfmx를 별도로 실행하지 않고도 PDF를 생성할 수 있습니다. 즉, pTeX-ng는 e-upTeX보다 실험적이고 덜 광범위하게 배포됩니다. 일상적인 일본어 조판의 경우 기본값은 e-upTeX(uplatex)로 유지됩니다.
비교한 엔진
e-TeX 확장 포함 여부와 각 엔진에서 실행되는 형식을 내부 인코딩으로 정렬하여 4개의 엔진을 정렬합니다.
| 엔진 | 내부 인코딩 | e-TeX | 기본 형식 |
|---|---|---|---|
pTeX | EUC / Shift_JIS | 아니요 | pLaTeX(레거시) |
upTeX | Unicode (UTF-8) | 아니요 | upLaTeX(레거시) |
e-pTeX | EUC / Shift_JIS | 예 | pLaTeX (이전 런타임 기반) |
e-upTeX | Unicode (UTF-8) | 예 | upLaTeX(현재) 및 pLaTeX 호환성 런타임 |
pTeX-ng / ApTeX | Unicode(0x10FFFF까지) | 예 | e-upTeX 호환 |
현재 TeX Live 로그에서는 platex도 This is e-upTeX ...와 같은 배너로 시작할 수 있습니다. 그렇다고 pLaTeX가 사라졌다는 의미는 아닙니다. 이는 단일 e-upTeX 런타임이 pLaTeX 호환 동작 또는 upLaTeX 형식을 실행하는 데 사용되고 있음을 의미합니다. 문제를 보고할 때 명령 이름(platex / uplatex), 로그의 첫 번째 배너 줄, 소스 파일 인코딩을 함께 포함하세요.
일본 노선 중 위치
오늘날 일본어에는 세 가지 광범위한 경로가 있습니다: pTeX 계열(uplatex → dvipdfmx, 이 페이지); LuaTeX 경로(LuaTeX-ja가 포함된 LuaTeX — 직접 PDF, 시스템 글꼴, Lua 확장성) 및 XeTeX 경로(xeCJK를 사용한 XeTeX - 직접 PDF, 시스템 글꼴).
- 출력. pTeX 계열은 DVI를 방출합니다(PDF가 되려면
dvipdfmx가 필요함). pdfTeX, LuaTeX 및 XeTeX는 PDF를 직접 방출합니다. - 글꼴. pTeX 제품군은 전통적으로 JFM 기반입니다. LuaTeX-ja 및 XeTeX를 사용하면 시스템의 OpenType 글꼴 이름을 직접 지정할 수 있습니다.
- 속도 및 실적. pTeX 제품군(e-upTeX)은 빠르고 성숙하며 일본어 조판 품질에 대한 오랜 기록을 보유하고 있습니다.
- 새로운 시작. Unicode, 시스템 글꼴 및 미래 보장을 중요하게 생각한다면 LuaLaTeX(LuaTeX-ja)가 강력한 대안입니다.
요약하자면: 입증되고 안정적인 일본 논문의 경우 e-upTeX (uplatex) → dvipdfmx; 시스템 글꼴 및 최신 기계의 경우 LuaLaTeX — 이것이 현재 정착점입니다. 어떤 엔진을 선택할지는 "엔진 선택" 페이지에서 자세히 다룹니다.
안전한 논문 기본값
새로운 일본어 논문 또는 보고서의 경우 필수 템플릿이 없으면 UTF-8 소스, uplatex, dvipdfmx 및 jlreq 또는 대학에서 제공하는 수업에서 시작하세요. 기존 템플릿이 platex를 가정하는 경우 패션만을 위해 다시 작성하지 마세요. 템플릿의 빌드 절차를 따르세요. 핵심은 클래스를 맨 위에 유지하고 빌드 명령과 참고문헌/색인 명령을 동일한 경로에 유지하는 것입니다.
- PDF가 나타나지 않으면 먼저
.dvi가 존재하는지 확인하세요. 그렇다면 오류는dvipdfmx측에 있습니다. - Mojibake는 UTF-8 소스, 클래스가 pLaTeX/upLaTeX를 대상으로 하는지 여부, 편집기의 저장 인코딩을 확인하여 디버깅해야 합니다.
- 무료 글꼴 선택이 필요한 경우 pTeX 경로를 강제로 사용하지 마세요. LuaTeX-ja와 함께 LuaLaTeX를 고려해보세요.