LaTeX으로 A0 포스터를 만들 때 가장 흔한 사고는 인쇄소에 가서야 파일이 A4임을 알게 되는 일입니다. TeX Live 2024에서는 실제로 그런 일이 벌어집니다. a0poster 클래스를 pdflatex에 통과시키면 pdfinfo가 보고하는 용지는 595.276 × 841.89 pt, 곧 A4였습니다. 같은 A0를 노려 beamerposter와 tikzposter를 통과시키면 둘 다 제대로 2383.94 × 3370.39 pt(A0)로 나옵니다. 이 페이지에서는 학회 포스터를 만드는 세 갈래 길——beamer를 그대로 쓰는 beamerposter, TikZ 기반 전용 클래스 tikzposter, 1997년부터 이어진 a0poster——을 직접 컴파일해 pdfinfo로 치수를 재며 비교합니다. 마지막에는 인쇄소에 넘기기 직전 확인할 것을 정리합니다.
포스터의 용지 크기 — pdfinfo로 확인하기
무엇보다 먼저 실제로 만들어진 PDF의 치수를 직접 확인하십시오. pdfinfo poster.pdf를 실행하면 Page size: 줄에 크기가 나옵니다. A0라면 2383.94 × 3370.39 pt, 환산하면 84.1 × 118.9 cm입니다. 그 줄이 여전히 A4(595.276 × 841.89 pt)라면 문제는 클래스 옵션이 아니라 용지 크기가 PDF까지 도달하지 못한 것입니다. 이것은 눈으로는 알아챌 수 없습니다. 포스터는 화면에서 늘 축소되어 보이므로, A4로 눌린 것도 그저 “작게 보인다”고만 여겨집니다.
| 클래스 또는 패키지 | pdflatex에서의 용지(실측) | 치수를 정하는 방식 |
|---|---|---|
beamerposter | 2383.94 × 3370.39 pt(A0 세로) | size=a0와 orientation에서 곧바로 PDF에 기록 |
tikzposter | 2383.94 × 3370.39 pt(A0 세로) | a0paper를 geometry에 넘기므로 PDF까지 제대로 전달 |
a0poster | 595.276 × 841.89 pt(A4) | PostScript의 \special을 거치므로 pdflatex에서는 무시됨 |
baposter | 불러올 수 없음 | TeX Live 2024에 수록되어 있지 않음(아래 참조) |
beamerposter 사용법 — 사실상 size와 scale 둘뿐
beamer를 이미 안다면 beamerposter가 가장 짧은 길입니다. \documentclass[final]{beamer} 위에 \usepackage[size=a0,scale=1.4,orientation=portrait]{beamerposter}를 얹기만 하면 block, columns, 테마, 색 테마가 그대로 포스터 치수로 동작합니다. 새로 익힐 표기법은 없습니다. [final] 옵션은 오버레이를 접어 한 쪽으로 만드는 지정으로, \pause나 \only<2>가 남아 있는 원고를 재활용할 때 효과가 있습니다.
\documentclass[final]{beamer}
% size: a0b a0 a1 a2 a3 a4 custom / orientation: portrait landscape
\usepackage[size=a0,scale=1.4,orientation=portrait]{beamerposter}
\title{A Poster Title}
\author{A. Author}
\institute{Somewhere}
\begin{document}
\begin{frame}[t]{}
\maketitle
\begin{columns}[t]
\begin{column}{0.45\textwidth}
\begin{block}{Introduction}
Body text at poster scale.
\end{block}
\end{column}
\begin{column}{0.45\textwidth}
\begin{block}{Results}
More body text.
\end{block}
\end{column}
\end{columns}
\end{frame}
\end{document}scale은 글자 확대율입니다. 여기가 beamerposter의 영리한 지점으로, 용지 크기마다 기준 배율이 미리 정규화되어 있습니다. beamerposter.sty를 읽으면 a0와 a0b는 1.0, a1은 0.70710678, a2는 0.5, a3은 0.35355339, a4는 0.25입니다. 이 수열은 1/√2의 거듭제곱 그 자체로, A 판이 한 단계마다 면적을 절반으로 줄인다는 것——곧 변의 길이가 1/√2가 된다는 것——에 맞춰져 있습니다. 덕분에 scale=1.0은 어느 용지에서도 같은 크기로 보이고, A1 포스터를 A0로 다시 만들어도 글자의 체감 크기는 그대로입니다. 실측에서 a0에 scale=1.0일 때 \normalsize는 24.88 pt(행간 30 pt), scale=1.4로 하면 34.83 pt(행간 42 pt)였습니다.
용지는 size=a0b a0 a1 a2 a3 a4 custom에서 고르고 orientation=portrait 또는 landscape를 덧붙입니다. 실측에서 orientation=landscape는 치수를 3370.39 × 2383.94 pt로 바꾸었고 size=a1은 1683.78 × 2383.94 pt(A1)를 주어, 기대한 그대로였습니다. size=custom을 고를 때는 width와 height를 센티미터 단위의 숫자로 넘깁니다. width=200,height=300은 5669.29 × 8503.94 pt가 되어 2 m × 3 m 현수막이 그대로 나왔습니다. TeX Live 2024 동봉 beamerposter는 v1.13(2018년 4월 23일)입니다.
tikzposter — 테마가 모습을 결정하는 전용 클래스
tikzposter는 처음부터 포스터를 위해 쓰인 클래스입니다. \documentclass[25pt,a0paper,portrait,margin=10mm]{tikzposter}로 선언하고, 본문은 \block{제목}{내용}으로 쓰며, \begin{columns}와 \column{0.5}로 단에 나눕니다. beamer의 어휘는 쓰지 않습니다. 모습은 \usetheme{...} 하나로 크게 달라지며, TeX Live 2024 판에는 Autumn, Basic, Board, Default, Desert, Envelope, Rays, Simple, Wave의 아홉 가지가 들어 있습니다. 아홉 가지를 모두 실제로 컴파일했고, 하나도 빠짐없이 오류 없이 A0 PDF를 냈습니다.
\documentclass[25pt,a0paper,portrait,margin=10mm]{tikzposter}
\usetheme{Board} % Autumn Basic Board Default Desert Envelope Rays Simple Wave
\usecolorstyle{Britain} % Australia Britain Default Denmark Germany Russia Spain Sweden
\title{A Poster Title}
\author{A. Author}
\institute{Somewhere}
\begin{document}
\maketitle
\begin{columns}
\column{0.5}
\block{Introduction}{Body text at poster scale.}
\column{0.5}
\block{Results}{%
\begin{tikzfigure}[A caption]
% tikzfigure does NOT open a tikzpicture -- you must open one yourself
\begin{tikzpicture}
\draw (0,0) rectangle (2,2);
\end{tikzpicture}
\end{tikzfigure}}
\end{columns}
\end{document}모습의 층은 넷으로 나뉘어, \usetheme 외에 \usecolorstyle(여덟 가지로, 어쩐지 Australia, Britain, Default, Denmark, Germany, Russia, Spain, Sweden처럼 나라 이름이 붙어 있습니다), \usecolorpalette(다섯 가지), \useblockstyle(Basic, Corner, Default, Envelope, Minimal, Slide, TornOut의 일곱 가지)을 겹칠 수 있습니다. 다만 TeX Live 2024 동봉 tikzposter v2.0(2014년 1월 15일)에는 동작하지 않는 명령이 하나 있습니다. 문서에 실려 있는 \innerblock은 테마를 바꾸어도, \useinnerblockstyle을 먼저 불러도 ! TeX capacity exceeded, sorry [grouping levels=255].로 죽고 PDF가 아예 생성되지 않습니다. 중첩된 상자가 필요하면 \coloredbox{...}를 쓰십시오. 같은 환경에서 문제없이 통과했습니다.
또 하나는 tikzfigure의 함정입니다. 이 환경은 center와 캡션용 카운터를 마련할 뿐 tikzpicture를 열어 주지는 않습니다. \draw를 맨몸으로 쓰고 게다가 선택 인수로 캡션까지 붙이면 ! LaTeX Error: There's no line here to end.가 납니다. 원인은 tikzposter.cls의 818행으로, 캡션 바로 앞에 \\[10pt]를 두기 때문입니다. 내용이 수직 모드로 끝나 있으면 그 \\에는 끝낼 줄이 없습니다. 캡션을 빼면 오류는 사라지지만, 정답은 위 예제처럼 안에 tikzpicture를 제대로 여는 것입니다. 글자 크기는 12pt 14pt 17pt 20pt 25pt 클래스 옵션으로 고르며, 25pt를 고르면 \normalsize는 24.88 pt, 20pt면 20.74 pt였습니다.
a0poster가 A4로 나오는 이유와 진짜 A0 PDF를 얻는 두 가지 방법
a0poster가 A4를 내놓는 것은 용지 크기를 PostScript의 \special로 전하는 설계이기 때문입니다. TeX Live 2024에서 컴파일하면 로그에 Non-PDF special ignored!가 늘어서고 그 아래 <special> header=./a0header.ps와 <special> papersize=83.96cm,118.82cm가 기록됩니다. pdfTeX은 이 둘을 통째로 무시하므로 용지는 article 기본값인 A4로 남습니다. 실제로 이 클래스는 컴파일할 때 현재 디렉터리에 a0header.ps라는 PostScript 조각을 써 내고, 그 안에 PageSize [2380 3368]과 setpagedevice를 담습니다. 읽을 프로그램은 dvips입니다. 1997년부터 Gerlinde Kettl과 Matthias Weiser가 손대어 온 v1.22b(2004년 1월 31일)——DVI 전성기의 설계가 그대로 남아 있는 셈입니다.
# Route 1 -- the route the class was designed for (DVI to PostScript to PDF)
latex poster.tex && dvips poster.dvi -o poster.ps && ps2pdf poster.ps
pdfinfo poster.pdf | grep "Page size" # 2384 x 3370 pts (A0)
# Route 2 -- stay with pdflatex and copy the paper size into the PDF yourself.
# Put these two lines in the preamble of poster.tex:
# \pdfpagewidth=\paperwidth
# \pdfpageheight=\paperheight
pdflatex poster.tex
pdfinfo poster.pdf | grep "Page size" # 2379.97 x 3368.13 pts (A0)길은 둘입니다. 본래의 경로는 latex → dvips → ps2pdf입니다. 실측하니 .ps 머리에 %%DocumentPaperSizes: a0가 들어갔고 나온 PDF는 2384 × 3370 pt였습니다. 또 하나는 pdflatex을 그대로 쓰되, 프리앰블에 \pdfpagewidth=\paperwidth와 \pdfpageheight=\paperheight를 적어 클래스가 계산한 치수를 직접 PDF에 옮기는 방법입니다. 이렇게 하면 2379.97 × 3368.13 pt가 나옵니다. 아울러 옵션을 하나도 붙이지 않은 \documentclass{a0poster}의 기본값은 landscape,a0b,final이고, a0b는 ISO의 A0가 아니라 119 × 87 cm의 “큼직한 A0”입니다. 용지를 신경 쓴다면 [a0,portrait]처럼 명시하십시오. 글자는 \normalsize가 24.88 pt로 재정의되는 것 외에, 이 클래스 고유의 \veryHuge(74.3 pt), \VeryHuge(89.16 pt), \VERYHuge(107 pt)를 쓸 수 있습니다. 단 나누기나 블록 장치는 없으므로, 본문은 multicol의 multicols 환경이나 minipage를 직접 늘어놓아 배치합니다.
baposter는 TeX Live 2024에 들어 있지 않습니다
내용을 상자 격자로 늘어놓는 baposter는 포스터 관련 글에서 이름이 자주 오르지만 TeX Live 2024에는 수록되어 있지 않습니다. kpsewhich baposter.cls는 아무것도 반환하지 않고, tlmgr info baposter는 cannot find package baposter라고 답합니다. 이름이 비슷해 잡히는 것은 xebaposter(XeLaTeX용 페르시아어・라틴 문자 포스터 클래스)뿐이며, 이는 별개의 것입니다. 따라서 baposter를 쓰려면 CTAN에서 손수 설치해야 하고, 그 수고를 치르기 전에 tikzposter를 시험해 보는 편이 빠릅니다.
인쇄소에 넘기기 전에 확인할 것
확인은 세 가지면 충분합니다. 용지 치수는 pdfinfo의 Page size: 줄, 폰트 임베딩은 pdffonts의 emb 열이 모두 yes인지, 이미지 해상도는 실제 크기에서 150 dpi면 실용상 충분합니다(가까이서 읽는 포스터라면 300 dpi). pdflatex으로 만든 포스터에 pdffonts를 돌리면 PWNZYL+CMB10 같은 서브셋 이름이 붙은 Type 1이 늘어서고 emb와 sub가 모두 yes로 나옵니다. 여기에 no인 서체가 하나라도 있으면 인쇄소의 RIP에서 다른 서체로 바뀔 위험이 있습니다.
또 하나, 좀처럼 부딪히지 않지만 부딪히면 막막해지는 상한이 있습니다. TeX의 치수 최대값은 16383.99998 pt, 약 5.75 m입니다. 실제로 \setlength로 시험하니 16383.99998 pt는 그대로 통과했고 577 cm는 ! Dimension too large.로 떨어졌습니다. A0의 3370 pt는 물론이고 beamerposter로 2 m × 3 m를 지정한 8503.94 pt에도 여유가 있습니다. 그러나 전시 부스 뒷면을 덮는 6 m 현수막을 한 장으로 조판하려 들면 이 벽에 부딪힙니다. 그럴 때는 절반 치수로 조판하고 인쇄할 때 200% 확대하는 것이 정석입니다.
- 기존 beamer 원고를 그대로 쓰고 싶다 →
beamerposter.size와scale둘로 거의 결정됩니다 - 빠르게 단정한 모습을 얻고 싶다 →
tikzposter. 테마 9종에 색 스타일 8종, 다만\innerblock은 피할 것 - 조판을 직접 쥐고 싶거나 기존 원고가 있다 →
a0poster. 다만 용지가 PDF까지 갔는지 반드시pdfinfo로 확인 - baposter를 권유받았다 → TeX Live 2024에는 없습니다. CTAN에서 손수 설치하거나
tikzposter로 갈아탑니다