지금 TeX Live 2024에서 \documentclass{slides}라고 써도 컴파일이 제대로 통과합니다. 버전은 v2.4b, 날짜는 2022년 5월 18일로, LaTeX 커널의 일부로서 여전히 손질되고 있는 슬라이드용 클래스입니다. 다만 그 출신은 beamer보다 훨씬 오래되어, 본래는 SliTeX라는 별개의 포맷이었습니다. LaTeX 프로젝트 자신이 배포물에 담아 두는 옛 사용자 안내서에는 slides가 예전의 SliTeX라고 한 줄로 적혀 있습니다. SliTeX가 LaTeX 2e(1994년 6월 1일 릴리스)에 흡수된 뒤로 슬라이드는 별도의 프로그램이 아니라 LaTeX의 한 기능이 되었습니다. 이 페이지는 beamer가 아닌 모든 것을 다룹니다. beamer보다 오래된 클래스, beamer를 대체하려던 powerdot, 지난 세기 날짜를 단 채 TeX Live에 남아 있는 여러 프레젠테이션 클래스, Markdown으로 쓴 슬라이드를 다루는 법, 그리고 솔직히 말해 LaTeX으로 슬라이드를 만들지 말아야 할 때입니다.
\documentclass{slides} — SliTeX의 생존자는 무엇을 하는가
먼저 본문이 커집니다. slides.def를 보면 \normalsize가 \@setfontsize\normalsize\itwentypt{28pt}로 정의되어 있어 기본 크기 20 pt, 행간 28 pt입니다. 다음은 어휘입니다. 슬라이드는 \begin{slide} … \end{slide}로 쓰고, 그 옆에 overlay 환경과 note 환경이 나란히 놓입니다. 셋을 하나씩 담은 문서를 조판하면 3쪽이 나오고, 꼬리말에는 각각 1, 1-a, 1-1이 찍혔습니다. 슬라이드는 번호, 오버레이는 알파벳 가지, 노트는 슬라이드 번호에 하이픈으로 이어진 번호입니다. 이 “1-a”라는 표기 하나만으로도 이것이 실물 OHP 필름을 겹치기 위한 설계였음을 알 수 있습니다. \onlyslides{...}와 \onlynotes{...}는 번호 목록을 받아 한쪽만 출력합니다(slides.def의 92행과 97행).
가장 흥미로운 대목은 색을 다루는 방식입니다. slides.cls는 \DeclareMathVersion{invisible}, 곧 말 그대로 “보이지 않는” 수식 버전을 선언합니다. \colorslides{...} 및 \blackandwhite{...}(slides.def의 103행과 116행)와 함께 쓰면 같은 슬라이드를 색깔마다 나눠 인쇄할 수 있습니다. 빨강으로 찍을 글자만 보이게 하고 나머지는 안 보이게 조판한 다음, 이번에는 파랑만 보이게 하는 식입니다. 나온 OHP 필름을 겹치면 위치가 딱 맞는 다색 슬라이드가 됩니다. 1980년대에 컬러 슬라이드를 만든다는 것은 그런 일이었습니다. 새 문서에서 걸리는 또 하나는 용지입니다. slides.cls의 102행은 \ExecuteOptions{letterpaper,final}이라고 선언하지만, 실제로 pdflatex에 통과시키면 PDF는 A4(595.276 × 841.89 pt)로 나옵니다. TeX Live의 pdftexconfig.tex가 \pdfpagewidth = 210 true mm를 먼저 설정해 두었고 표준 클래스는 그것을 덮어쓰지 않기 때문입니다. 용지를 확실히 정하고 싶다면 geometry를 불러오거나 a4paper/letterpaper를 명시적으로 넘긴 뒤 pdfinfo로 확인하세요.
\documentclass[a4paper]{slides}
\begin{document}
\begin{slide}
Body text is 20pt here, on a 28pt baseline.
\end{slide}
\begin{overlay}
Printed as slide 1-a, meant to sit on top of slide 1.
\end{overlay}
\begin{note}
Printed as 1-1, for the speaker.
\end{note}
\end{document}powerdot은 지금도 쓸 수 있는가 — pdflatex으로는 통과하지 않는다
들어 있습니다. TeX Live 2024의 powerdot.cls는 v1.7, 날짜 2021/05/19, LPPL 유지 상태는 "maintained", 현 관리자는 저자인 Hendri Adriaens입니다. 죽은 패키지가 아닙니다. 다만 지금 새로 쓰기 시작하면 첫 한 시간은 발표 내용이 아니라 빌드 경로에 사라집니다. \documentclass[style=klope]{powerdot} 문서를 pdflatex에 걸면 ! Package hyperref Error: Wrong DVI mode driver option 'dvips',에서 멈추고, 그 뒤로 ! Undefined control sequence.가 길게 이어집니다. 원인은 추측이 아니라 클래스에 적혀 있습니다. powerdot.cls의 180행이 XeTeX이 아닐 때 \RequirePackage[setpagesize=false,dvips,...]{hyperref}를 호출해 hyperref에 dvips 드라이버를 고정으로 넘기기 때문입니다. powerdot은 PSTricks 계열이라 \RequirePackage{pstricks}도 무조건 읽어 들입니다.
통하는 길은 둘입니다. 하나는 클래스가 상정한 PostScript 경로 latex → dvips → ps2pdf, 다른 하나는 클래스가 스스로 분기로 마련해 둔 xelatex입니다. 둘 다 여기서 통과했고, \pause를 담은 슬라이드도 제대로 오버레이로 펼쳐졌습니다(PostScript 쪽 BoundingBox는 792 × 594 pt, 곧 11 × 8.25인치 가로였고, 이것이 powerdot 기본값 paper=screen의 4:3입니다). 다만 완성된 PDF의 페이지 박스는 저절로 맞지 않습니다. 이 기계에서는 594 × 594 pt라는 정사각형으로 나왔으니, 인쇄나 투영에 넘기기 전에 반드시 pdfinfo로 확인하고 필요하면 dvips와 ps2pdf에 용지를 명시하세요. 스타일은 powerdot-*.sty가 17개 동봉되어 있습니다(aggie, ciment, fyma, husky, ikeda, jefka, klope, paintings, pazik, sailor, simple, tycja, upen 등). 역사적으로 powerdot은 prosper/HA-prosper의 후계이며, beamer 매뉴얼의 감사말에도 HA-prosper의 저자로 Hendri Adriaens의 이름이 올라 있습니다. 시대의 흔적 하나. 동봉된 README는 설치 안내처로 아직도 tex.ac.uk/cgi-bin/ 주소를 가리킵니다.
# pdflatex stops here:
# ! Package hyperref Error: Wrong DVI mode driver option `dvips',
# the route the class was designed for
latex talk.tex && latex talk.tex
dvips -o talk.ps talk.dvi
ps2pdf talk.ps talk.pdf
# or the branch the class provides itself
xelatex talk.tex && xelatex talk.tex
# always confirm the page box before you print
pdfinfo talk.pdf | grep "Page size"소스의 손맛은 beamer와 꽤 다릅니다. 슬라이드는 \begin{slide}{제목} … \end{slide}이고, 단계 표시는 beamer와 같은 \pause입니다. 다만 노트는 \note{...}가 아니라 note 환경이며, 슬라이드 바깥에 둡니다. \note{...}를 슬라이드 안에 쓰면 ! LaTeX Error: \begin{minipage} on input line 5 ended by \end{slide}.에서 멈춥니다. 출력 전환은 클래스 옵션 두 갈래로, mode는 present/print/handout, display는 slides/notes/slidesnotes를 받습니다. 실측에서 mode=handout,display=slidesnotes로 하니 \pause가 접혔고 노트 페이지 꼬리말에 note 1 of slide 2가 찍혔습니다(다만 handout 모드에서는 landscape를 쓸 수 없고 클래스가 경고를 냅니다). powerdot에만 있는 재주가 하나 더 있는데, clock=true는 PDF에 Acrobat JavaScript를 심어 슬라이드 위에 움직이는 시계를 띄웁니다(clockformat=HH:MM:ss, clockrefresh=1000). 실제로 움직일지는 뷰어의 JavaScript 지원에 달렸으니 본 무대 전에 현장에서 꼭 시험해 보세요.
\documentclass[style=klope,mode=handout,display=slidesnotes]{powerdot}
\title{A talk}\author{Me}
\begin{document}
\maketitle
\begin{slide}{First}
\begin{itemize}
\item One\pause
\item Two
\end{itemize}
\end{slide}
% the note environment goes OUTSIDE the slide
\begin{note}{Reminder}
Say hello here.
\end{note}
\end{document}TeX Live에 아직 남아 있는 발표용 클래스 — 날짜가 말해 주는 것
kpsewhich를 두드리면 전부 나옵니다. seminar.cls, talk.cls, texpower.sty, pdfscreen.sty, pdfslide.sty, prosper.cls. CTAN은 옛것을 지우지 않으므로 TeX Live도 계속 배포하고, 날짜를 늘어놓으면 발표용 클래스의 역사가 한 줄로 드러납니다. 그 가운데 하나가 특별합니다. seminar는 1993년 Timothy Van Zandt가 LaTeX 2.09용 document style로 쓴 것을 Sebastian Rahtz가 LaTeX 2e 클래스로 옮긴 것이며, 지금도 v1.63a(2021/07/01)로 손질되고 있습니다. 그리고 beamer 매뉴얼의 역사 절에는 beamer가 본래 “seminar 클래스를 쓰기 편하게 만드는 작은 개인용 매크로 모음”이었다고 적혀 있습니다. 즉 이 목록에서 가장 오래된 것이 가장 새로운 것의 모태였습니다.
| 파일 | TeX Live 2024에서의 판과 날짜 | 정체 |
|---|---|---|
beamer.cls | v3.71 (2024/01/06) | 사실상의 표준. Till Tantau가 2003년에 쓰고 2010년부터 Joseph Wright 등이 관리 |
slides.cls | v2.4b (2022/05/18) | LaTeX 커널의 일부. 예전의 SliTeX |
seminar.cls | v1.63a (2021/07/01) | Timothy Van Zandt가 1993년에 제작. beamer의 모태 |
powerdot.cls | v1.7 (2021/05/19) | PSTricks 계열. prosper/HA-prosper의 후계 |
talk.cls | v1.1 (2006/07/11) | 같은 내용을 여러 판으로 나눠 내는 데 초점을 둔 클래스 |
texpower.sty | v0.2 (2005/04/08) | 동적 효과를 더하는 패키지. 클래스가 아님 |
prosper.cls | v1.5 (2001/07/17) | Frédéric Goualard와 Peter Møller Neergaard 작. powerdot이 이어받음 |
pdfscreen.sty | v1.5 (2000/07/07) | 화면으로 읽는 PDF 설계용. C. V. Radhakrishnan |
pdfslide.sty | v0.50 (1999/10/10) | 이 목록에서 가장 오래된 날짜. PDF 슬라이드의 초기 시도 |
일본어 쪽에는 손 닿는 곳에 선택지가 하나 더 있습니다. 이미 jsarticle로 쓰고 있다면 \documentclass[slide,papersize,landscape]{jsarticle}라고 쓰는 것만으로 큰 글자 슬라이드 형식이 됩니다. jsarticle.cls의 80행은 \DeclareOption{slide}{\@slidetrue\def\jsc@magscale{3.583}}라고 선언하며, 이 배율 3.583은 같은 클래스의 36pt 옵션과 동일합니다. 곧 slide는 실질적으로 36 pt입니다. 더 크게 하려면 43pt(배율 4.300)까지 마련되어 있습니다. 여기서 upLaTeX과 dvipdfmx로 돌리니 A4 가로(841.89 × 595.28 pt) PDF가 나왔습니다. 테마도 오버레이도 없지만, 이미 쓰고 있는 일본어 문서의 서식을 그대로 물려받는다는 장점이 있어 내일 사내 스터디에서 쓸 슬라이드를 10분에 만들기에는 충분합니다.
Markdown으로 쓴 슬라이드 — Marp, reveal.js, pandoc과 markdown 패키지
길은 둘로 갈립니다. Markdown을 바깥에서 처리해 LaTeX에 넘기거나, LaTeX 안에서 Markdown을 읽게 하거나입니다. 앞쪽의 대표가 Marp와 reveal.js 계열이며, 이들은 npm으로 설치하는 Node/브라우저 프로그램이라 TeX Live에 들어 있지 않습니다. 이 환경에서도 marp도 pandoc도 찾을 수 없습니다. 다리 역할로 쓰이는 것은 pandoc이고, 그 공식 매뉴얼은 출력 형식 목록에 beamer를 올리고 슬라이드 계열로 beamer, revealjs, s5, slidy, dzslides, pptx를 나열합니다. 같은 매뉴얼은 PDF를 만들려면 LaTeX 엔진이 따로 설치되어 있어야 한다고도 밝힙니다. 곧 pandoc 경로를 골라도 결국 TeX Live는 필요합니다.
다른 한 길은 TeX Live 안에서 끝납니다. markdown 패키지(v3.4.2, 2024-03-09)는 Markdown 파서를 TeX 안에 지니고 있어 markdown 환경의 내용을 그대로 조판합니다. 실제로 \usepackage[hybrid]{markdown}을 불러오고 [fragile]을 붙인 beamer 프레임 안에 목록과 *강조*, inline code를 써서 시험하니 전부 올바르게 조판되었습니다. 다만 조건이 하나 있습니다. pdfLaTeX에서는 -shell-escape가 필수입니다. 빠뜨리면 ! Package markdown Error: Shell escape is restricted에서 멈추고, 이어서 Fatal error occurred, no output PDF file produced!가 됩니다. 실무로는 팀의 원고가 Markdown이고 수식과 도판은 LaTeX 품질이 필요한 상황에 꼭 들어맞습니다. 반대로 슬라이드의 겉모습 자체를 Markdown으로 정하고 싶다면 그것은 Marp의 일이지 LaTeX의 일이 아닙니다.
\documentclass[aspectratio=169]{beamer}
\usepackage[hybrid]{markdown}
\begin{document}
\begin{frame}[fragile]{From Markdown}
\begin{markdown}
- first bullet
- second bullet with *emphasis*
Ordinary paragraph with `inline code`.
\end{markdown}
\end{frame}
\end{document}
% compile with: pdflatex -shell-escape file.tex
% without it: ! Package markdown Error: Shell escape is restrictedLaTeX으로 슬라이드를 만들지 말아야 할 때
솔직히 말해 LaTeX이 맞지 않는 상황이 셋 있습니다. 첫째, 겉모습을 수십 번 다듬는 발표입니다. LaTeX 슬라이드는 고치고 기다리는 매체입니다. 40프레임 121쪽짜리 덱이 여기서 한 번에 3.5초였고, .nav와 .toc 때문에 두 번 돌려야 합니다. 1 mm씩 밀어 가며 맞추는 작업에 이 왕복은 어울리지 않습니다. 둘째, 공동 편집입니다. 공저자가 TeX을 쓰지 않는다면 .tex를 보내는 것은 “제 도구 체계를 먼저 설치한 뒤 답장해 주세요”라고 말하는 것과 같습니다. 셋째, 주최 측이 .pptx를 요구하는 경우입니다. PDF를 PowerPoint로 변환하는 데 거는 것보다 처음부터 다른 도구를 고르는 편이 안전합니다. 반대로 LaTeX이 압승하는 곳은 수식·코드·그림이 논문과 같은 파이프라인에서 나올 때, 같은 원고에서 발표용과 배포용을 기계적으로 나눠 만들고 싶을 때, 그리고 어느 기계에서 열어도 1 mm도 움직이지 않는 PDF가 필요할 때입니다. beamer의 매뉴얼 자체가 발표장 컴퓨터에 무엇이 깔려 있는지 걱정하지 않아도 된다는 점을 장점으로 꼽습니다.
- 새 발표를 만든다 →
beamer. 이 목록에서 유일하게 지금도 활발히 개발되고 있으며, 테마·오버레이·handout·노트가 모두 갖춰져 있습니다. - 옛
.tex를 넘겨받았다 → 먼저\documentclass를 봅니다.slides면 SliTeX 계통,prosper면 powerdot로의 이전을 검토합니다. - PSTricks 그림이 본체다 →
powerdot. 다만 빌드는latex→dvips→ps2pdf나xelatex이며pdflatex으로는 통과하지 않습니다. - 내일 쓸 일본어 슬라이드 →
jsarticle의slide옵션(실질 36 pt, 더 키우려면43pt). - 원고가 Markdown이다 → 바깥에서 pandoc을 통하거나 TeX Live 안의
markdown패키지를 씁니다(pdfLaTeX에서는-shell-escape필수). - 주최 측이
.pptx를 요구한다 → LaTeX을 억지로 밀어붙이지 않습니다. 변환에 거는 것보다 처음부터 다른 도구를 고르는 편이 낫습니다.