일본어는 서양어 문서에는 없는 처리가 필요합니다. 세로쓰기, 금칙 처리(행 머리나 행 끝에 올 수 없는 문자), 일본어와 라틴 문자 사이의 간격 등이 그렇습니다. TeX에는 두 가지 성숙한 경로가 있습니다. 오래전부터 쓰인 pLaTeX / upLaTeX(DVI와 dvipdfmx 경유)와 현대적인 LuaLaTeX-ja(PDF 직접 출력, OpenType 글꼴)입니다. 이 페이지는 전체 구도를 보여 주고, 각각을 시작하는 방법과 선택 기준을 정리합니다.
일본어 TeX의 전체상
일본어 조판의 기반은 ASCII Corporation이 개발한 pTeX 엔진입니다. 이 엔진은 세로쓰기, 금칙, 일본어와 라틴 문자 사이의 간격 조정을 TeX에 가져왔습니다. 그 위의 LaTeX가 pLaTeX입니다. 이후 내부를 Unicode화한 upTeX / upLaTeX가 등장했고, 더 나아가 현대적인 LuaTeX 엔진으로 일본어 조판을 이식한 LuaTeX-ja가 더해졌습니다. 실무 선택지는 pLaTeX, upLaTeX, LuaLaTeX-ja 세 가지입니다(엔진 자체는 “pTeX 계열” 참조).
pLaTeX / upLaTeX로 조판하기
먼저 일본어용 문서 클래스를 고릅니다. 널리 쓰이는 jsclasses(jsarticle, jsbook, 오쿠무라 하루히코 제작) 또는 JLReq를 따르는 현대적인 jlreq가 있습니다. upLaTeX에서 사용할 때는 클래스 옵션으로 uplatex를 넘깁니다. 빌드는 uplatex → DVI → dvipdfmx(또는 ptex2pdf -l -u 한 번)입니다. upLaTeX는 Unicode 전체를 다룰 수 있고, 일반 pLaTeX는 JIS X 0208 범위로 제한됩니다.
% upLaTeX。uplatex main.tex && dvipdfmx main
\documentclass[uplatex]{jsarticle}
\begin{document}
日本語と English の混植。
\end{document}LuaLaTeX-ja로 조판하기
현대적인 경로는 LuaTeX-ja입니다. LuaLaTeX 위에서 일본어 조판을 수행하며, Unicode 네이티브, OpenType/OS 글꼴, PDF 직접 출력(DVI 단계 없음)이 특징입니다. LuaTeX-ja용 클래스(ltjsarticle 등, 또는 lualatex에서 jlreq)를 쓰고, 일본어 글꼴은 luatexja-fontspec의 \setmainjfont / \setsansjfont로 지정합니다. 컴파일은 lualatex로 합니다.
% LuaLaTeX-ja。lualatex main.tex
\documentclass{ltjsarticle}
\usepackage{luatexja-fontspec}
\setmainjfont{Noto Serif CJK JP}
\begin{document}
日本語と English の混植。
\end{document}일본어 조판에서는 문자 사이에 미세한 간격(glue)이 들어갑니다. 일본어 문자 사이의 kanjiskip와, 일본어와 서양어 경계의 xkanjiskip(“日本語 and abc” 앞뒤의 작은 간격)입니다. LuaTeX-ja에서는 \ltjsetparameter{...}로 조정할 수 있고, pLaTeX/upLaTeX에서는 클래스가 적절한 기본값을 설정합니다.
\ltjsetparameter{xkanjiskip=0.25\zw plus 1pt minus 1pt}무엇을 쓸까
- 기존 자산, 속도, 논문에서의 표준 →
upLaTeX(jsclasses또는jlreq) +dvipdfmx. - 현대적 방식, OpenType 글꼴, 직접 PDF →
LuaLaTeX-ja(ltjsclasses또는jlreq); 새 작업에서 점점 많이 선택됩니다. - 일반 pLaTeX는 JIS X 0208로 제한되므로, 새 문서라면 up 계열이나 Lua 계열 경로를 권장합니다.
jlreq는 pLaTeX, upLaTeX, LuaLaTeX 모두에서 동작하며, JLReq 준수의 본격적인 조판에 적합합니다.