Re:VIEW의 선전 문구는 “LaTeX을 쓰지 않아도 된다”입니다. 그런데 설정 파일 config.yml을 열면 dvicommand라는 항목이 있고 기본값은 dvipdfmx입니다. PDF용 클래스 파일은 \DeclareOptionX{bleed_margin}[3mm](재단 여백 3mm)과 재단선을 위한 tombopaper 옵션을 선언하고 있습니다. 즉 LaTeX은 사라진 것이 아니라 인쇄소와 이야기하는 담당으로 강등되었을 뿐입니다. 이 페이지에서는 .re라는 한 가지 경량 마크업에서 PDF와 EPUB를 동시에 뽑아내는 이 출판 시스템을, 그 LaTeX 백엔드 쪽에서 살펴봅니다.
Re:VIEW는 무엇이고 무엇을 출력할 수 있는가
Re:VIEW는 Ruby로 작성된 책을 위한 변환 시스템으로, 원고는 확장자가 .re인 경량 마크업으로 씁니다. 같은 원고에서 EPUB, LaTeX, InDesign(IDGXML), Markdown, 일반 텍스트, 웹(HTML) 으로 변환할 수 있습니다. 원작자는 아오키 미네로(Minero Aoki), 현재 유지보수는 무토 켄시(kmuto) 가 맡고 있으며, 저작권 표시에는 다카하시 마사요시와 가도 마사노리의 이름도 함께 오릅니다(2006–2024). 라이선스는 LGPL입니다. 일본 기술 동인지 세계에서 사실상의 표준이 된 까닭은 하나입니다. 원고 하나에서 인쇄용 PDF와 전자책을 동시에 뽑는 일이 바로 그 세계가 필요로 하는 것이기 때문입니다.
= Getting started
Ordinary body text. Inline emphasis is written @<b>{like this},
and a cross-reference to a listing is @<list>{hello}.
//list[hello][A first program]{
puts "hello"
//}
//image[diagram][The system, in outline]{
//}프로젝트는 장별 .re 파일에 더해 두 개의 YAML로 이루어집니다. config.yml은 서명・저자・판형・LaTeX 설정 같은 메타 정보를 담고, catalog.yml은 앞붙임・본문・뒷붙임에 걸친 장의 순서를 담습니다. 원고 파일 자체에는 순서 정보가 없으므로, 장을 바꾸려면 catalog.yml의 줄을 옮기기만 하면 됩니다. LaTeX에서 \include 목록을 재배열하는 것과 같은 발상이되, 이쪽은 조판 명령이 아니라 목록이므로 EPUB의 목차에도 그대로 반영됩니다.
설치와 빌드: TeX Live에는 들어 있지 않습니다
Re:VIEW는 Ruby의 gem이지 TeX Live의 패키지가 아닙니다. TeX Live 2024를 전체 설치한 환경에서도 review-pdfmaker는 흔적조차 없으며, gem install review를 따로 돌려야 합니다. 요구는 반대 방향으로도 걸립니다. 문서에는 “To generate PDF, you should install TeXLive 2012 or later.” 라고 적혀 있어, PDF를 뽑으려면 TeX Live가 따로 필요합니다. 즉 서로 독립적인 두 처리계를 모두 갖추어야 비로소 돌아가는 구조이며, 이를 놓친 채 rake pdf를 두드리면 어느 쪽이 빠졌는지 알 수 없는 오류 앞에서 고민하게 됩니다.
gem install review # the Ruby side
# TeX Live is a separate prerequisite for the PDF route
review-init hello # create a project skeleton
cd hello
rake pdf # PDF, through LaTeX
rake epub # EPUB
rake web # HTML
rake text # plain text
rake idgxml # InDesign
# the same jobs without rake:
review-pdfmaker config.yml
review-epubmaker config.ymlreview-jsbook.cls는 TeX Live에 없습니다: File not found의 정체
Re:VIEW가 뱉어낸 .tex을 프로젝트 밖으로 가지고 나가 컴파일하면 TeX Live 2024에서는 다음에서 멈춥니다. ! LaTeX Error: File ‘review-jsbook.cls’ not found. 에 이어 ! Emergency stop. 입니다. 이유는 단순합니다. 이 클래스는 gem에 함께 들어 있고 TeX Live에는 없기 때문입니다. kpsewhich jsbook.cls와 kpsewhich jlreq.cls는 실제 경로를 돌려주지만, review-jsbook.cls와 review-jlreq.cls는 아무것도 돌려주지 않습니다. 부모는 TeX Live에 있고 자식은 없는 관계입니다. 이 두 클래스는 Re:VIEW 3.0에서 도입되었고, 그 이전에는 jsbook.cls를 그대로 썼습니다.
$ uplatex rv.tex
! LaTeX Error: File `review-jsbook.cls' not found.
! Emergency stop.
$ kpsewhich jsbook.cls
/usr/local/texlive/2024/texmf-dist/tex/platex/jsclasses/jsbook.cls
$ kpsewhich jlreq.cls
/usr/local/texlive/2024/texmf-dist/tex/latex/jlreq/jlreq.cls
$ kpsewhich review-jsbook.cls
$ # nothing: it lives in the gem클래스의 내용을 보면 이 계열이 어디를 향하는지 분명해집니다. \ProvidesClass의 식별 줄은 “Re:VIEW pLaTeX class modified for jsbook.cls” — 곧 pLaTeX용 클래스이며, config.yml의 dvicommand가 dvipdfmx인 것과 합치면 인쇄 경로는 (u)pLaTeX → DVI → dvipdfmx입니다. 그리고 선언된 옵션들이 그대로 인쇄소의 어휘입니다. \DeclareOptionX{tombopaper}(재단선을 담는 용지), \DeclareOptionX{bleed_margin}[3mm](재단 여백, 기본 3mm), \DeclareOptionX{hiddenfolio}(완성된 책이 감추는 쪽번호), \DeclareOptionX{media}[print] — 기본값이 print라는 사실이 이 계열의 자리를 그 어떤 문서보다 웅변합니다. 전자 배포판을 만들 때는 media=ebook으로 바꿉니다.
LaTeX이 아닌 두 번째 PDF 경로: 5.1의 Vivliostyle
버전 5.1.0에서 Re:VIEW는 CSS 조판이라는 길을 하나 더 냈습니다. rake vivliostyle:build는 Vivliostyle CLI를 불러 HTML과 CSS에서 곧장 PDF를 만들고, rake vivliostyle:preview로 브라우저에서 확인할 수도 있습니다. 같은 원고가 이제 두 개의 문으로 나갈 수 있는 셈입니다. 이것이 실제로 보여 주는 것은 Re:VIEW의 설계상 위치입니다. LaTeX은 여러 출력 형식 가운데 하나일 뿐입니다. 원고는 .re에, 체재는 클래스나 스타일시트에 나누어 두었기에 뒤쪽 절반을 통째로 갈아 끼울 수 있습니다. 어느 문을 고를지는 조판 요구에 달렸으며, 촘촘한 일본어 조판과 재단선이 붙은 입고까지 한다면 아직은 LaTeX 경로 쪽 도구가 더 갖춰져 있습니다.
Re:VIEW와 순수 LaTeX 중 어느 쪽으로 쓸까
EPUB도 낸다면 Re:VIEW, 내지 않는다면 순수 LaTeX — 판단은 대체로 이것으로 충분합니다. EPUB를 포기할 수 없는데 LaTeX으로 시작하면 나중에 HTML 변환 공정을 손수 만들게 되고, 결국 그 부분이 가장 무거워집니다. 반대로 EPUB가 필요 없는데 Re:VIEW를 쓰면 추상화 층만 한 겹 더 산 셈입니다. 조판을 세밀히 손보려 할 때마다 .re를 고칠지, LaTeX을 고칠지, 그 사이를 고칠지부터 따져야 합니다. 또 하나의 판단 재료는 공저자입니다. Markdown을 아는 사람이면 .re 표기는 몇 분이면 읽지만, LaTeX 프리앰블은 그렇지 않습니다.
| 하려는 일 | 알맞은 도구 |
|---|---|
PDF + EPUB | Re:VIEW. rake pdf와 rake epub가 같은 원고를 읽습니다 |
PDF only | 순수 LaTeX. 층이 하나 적어 고칠 자리가 분명합니다 |
tombopaper, bleed_margin | 인쇄소 입고. Re:VIEW의 LaTeX 경로(media=print) |
rake vivliostyle | CSS 조판으로 PDF. LaTeX을 거치지 않는 경로(5.1 이후) |
.docx, .md | Re:VIEW도 Markdown을 내보내지만, 범용 상호 변환은 별도 항목입니다 |
끝으로 한 가지만 새겨 두십시오. Re:VIEW를 쓴다고 해서 LaTeX 지식이 필요 없어지지는 않습니다. 그림이 밀렸다, 일본어 행간이 좁아졌다, \usepackage를 하나 더 넣고 싶다 — 이런 요구는 결국 클래스 파일과 .sty 쪽에서 해결되며, 그때 들추는 것은 Re:VIEW 문서가 아니라 LaTeX 지식입니다. config.yml의 texdocumentclass, texcommand, dvicommand라는 세 열쇠는 바로 그 층으로 내려가기 위한 입구로 마련된 것입니다.