DVI 변환 도구

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도 같은 계열이지만 직접 호출하기 위한 것은 아닙니다.

terminal
dvipdfmx document.dvi            # → document.pdf
dvipdfmx -p a4 -o out.pdf document.dvi
옵션역할
-o FILE출력 파일 이름(-는 표준 출력); 기본값은 입력 이름에서 정함
-p SIZE용지 크기를 이름으로 지정: a4, letter, a3, legal
-V NPDF 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가 필요할 때는 생성된 .psps2pdf(Ghostscript에 포함)에 통과시키는 흐름이 일반적입니다.

terminal
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
-lplatex(pLaTeX)
-uuptex
-l -uuplatex(upLaTeX)
terminal
# 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가 목적(영어/유럽어 텍스트)latexdvipdfmx.
  • PDF가 목적(일본어)ptex2pdf -l -u … 한 번이 편리합니다.
  • 인쇄 제출, EPS, PSTricksdvipsps2pdf.
  • 애초에 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는 편리하지만, 최종적으로는 uplatexdvipdfmx의 두 단계가 성공해야 합니다.
  • 이름과 위치: DVI, PDF, .synctex.gz의 기본 이름을 맞추고, 다른 디렉터리로 출력한다면 빌드 도구 쪽에서 경로를 일관되게 지정합니다.