latex 명령과 일본어용 platex / uplatex는 PDF가 아니라 DVI 라는 중간 파일을 출력합니다. 이것을 실제로 읽을 수 있는 문서로 바꾸는 것이 DVI 변환 도구 의 역할입니다. PDF에는 dvipdfmx, PostScript에는 dvips, 일본어 문서에서는 조판부터 PDF 변환까지 한 번에 수행하는 ptex2pdf가 표준적으로 쓰입니다. 이 페이지에서는 이 세 가지와 실무에서 쓰는 옵션을 정리합니다.
DVI란 무엇이며 왜 변환하는가
DVI(device-independent) 는 TeX가 출력하는 중간 형식으로, *어떤 glyph나 rule을 어느 위치에 둘지* 기록합니다. 이름처럼 출력 장치에 의존하지 않으며, 실제 폰트도 포함하지 않습니다. 그래서 가볍지만 그대로 보기, 인쇄하기, 배포하기에는 불편합니다. 따라서 목적에 맞게 변환합니다. 화면 표시와 배포에는 PDF, 인쇄 공정이나 일부 package에는 PostScript 를 사용합니다. DVI를 *만드는* 명령은 “컴파일 명령” 페이지에서 다룹니다.
dvipdfmx — DVI에서 PDF로
dvipdfmx 는 TeX Live의 표준 DVI-to-PDF 변환기입니다. 그 조상인 dvipdfm 은 Mark A. Wicks가 만들었고, dvipdfmx는 Jin-Hwan Cho, Shunsaku Hirata 등이 CJK 지원, 폰트 임베딩, object stream 등을 확장한 버전입니다. XeTeX가 내부에서 쓰는 xdvipdfmx도 같은 계열이지만 직접 호출하기 위한 것은 아닙니다.
dvipdfmx document.dvi # → document.pdf
dvipdfmx -p a4 -o out.pdf document.dvi| 옵션 | 역할 |
|---|---|
-o FILE | 출력 파일 이름(-는 표준 출력); 기본값은 입력 이름에서 정함 |
-p SIZE | 용지 크기를 이름으로 지정: a4, letter, a3, legal 등 |
-V N | PDF minor version(기본 5 = PDF 1.5) |
-l | 가로 방향(용지의 너비와 높이를 바꿈) |
-s RANGE | 처리할 페이지를 제한, 예: -s 1-10 |
dvips — DVI에서 PostScript로
dvips(Tomas Rokicki 제작)는 DVI를 PostScript(.ps) 로 변환하는 오래된 도구입니다. 인쇄소 제출, EPS 생성, PSTricks 같은 PostScript 기반 그림 package에서 지금도 쓰입니다. PDF가 필요할 때는 생성된 .ps를 ps2pdf(Ghostscript에 포함)에 통과시키는 흐름이 일반적입니다.
dvips -t a4 -o document.ps document.dvi # DVI → PostScript
ps2pdf document.ps # PostScript → PDF| 옵션 | 역할 |
|---|---|
-o FILE | 출력할 PostScript 파일 이름 |
-t PAPER | 용지 종류: a4, letter, legal 또는 landscape |
-P NAME | 프린터 설정 config.NAME을 읽음(해상도, 폰트 설정) |
ptex2pdf — 일본어 문서를 한 번에 PDF로
일본어 문서에서는 “uplatex로 조판한 뒤 dvipdfmx로 PDF화”하는 두 단계를 거칩니다. ptex2pdf 는 이를 하나의 명령으로 묶어 pTeX 계열 엔진을 실행한 다음 자동으로 dvipdfmx를 호출합니다. texjporg(일본어 TeX 개발 커뮤니티)와 Norbert Preining이 만든 texlua 스크립트 로, 원래 TeXworks에서 일본어 엔진을 쉽게 고를 수 있게 하려고 만들어졌습니다.
엔진은 플래그 조합 으로 고릅니다. 아무것도 붙이지 않으면 ptex, -l은 LaTeX format, -u는 upTeX 계열, -e는 e-pTeX 계열을 선택합니다. 예를 들어 일본어 논문의 표준인 upLaTeX는 -l -u 입니다.
| 플래그 | 사용되는 엔진 |
|---|---|
(なし / none) | ptex |
-l | platex(pLaTeX) |
-u | uptex |
-l -u | uplatex(upLaTeX) |
# upLaTeX で組版し、UTF-8 入力と SyncTeX を指定して PDF まで
ptex2pdf -l -u -ot '-kanji=utf8 -synctex=1' document.tex세부 옵션을 엔진이나 변환기에 넘기려면 TeX engine 쪽 옵션은 -ot '...', dvipdfmx 쪽 옵션은 -od '...' 로 줍니다. -s를 붙이면 DVI에서 멈추고, -i는 중간 파일을 남기며, -output-directory로 출력 위치를 바꿀 수 있습니다.
무엇을 쓸까
- PDF가 목적(영어/유럽어 텍스트) —
latex→dvipdfmx. - PDF가 목적(일본어) —
ptex2pdf -l -u …한 번이 편리합니다. - 인쇄 제출, EPS, PSTricks —
dvips→ps2pdf. - 애초에 DVI를 거치고 싶지 않음 —
pdflatex/lualatex로 PDF를 직접 출력합니다.
실무에서는 이 명령들을 손으로 순서대로 치는 경우가 드뭅니다. latexmk 같은 빌드 도구 가 컴파일 횟수와 DVI 변환까지 처리해 줍니다(latexmk는 (u)platex + dvipdfmx 구성도 지원합니다).
제출 전 DVI 변환 점검
- PDF 제출이라면:
dvipdfmx뒤의 PDF를 실제 제출처와 같은 viewer나 upload target에서 열어 폰트 임베딩, 용지 크기, 책갈피와 링크를 확인합니다. - 인쇄 공정이라면:
dvips에서 만든 PostScript를ps2pdf에 통과시키기 전후로 EPS와 PostScript specials가 빠지지 않았는지 확인합니다. - 일본어 문서라면:
ptex2pdf -l -u는 편리하지만, 최종적으로는uplatex와dvipdfmx의 두 단계가 성공해야 합니다. - 이름과 위치: DVI, PDF,
.synctex.gz의 기본 이름을 맞추고, 다른 디렉터리로 출력한다면 빌드 도구 쪽에서 경로를 일관되게 지정합니다.