LaTeX で A0 ポスター を作るとき、いちばん多い事故は「刷ろうとしたら A4 だった」です。実際 TeX Live 2024 で a0poster クラスを pdflatex に通すと、pdfinfo が報告する用紙は 595.276 × 841.89 pt、つまり A4 でした。同じ A0 を狙って beamerposter と tikzposter を通すと、どちらもきちんと 2383.94 × 3370.39 pt(A0) で出ます。このページでは、学会ポスターを作る 3 つの道——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 の 2 つだけ
beamer を知っているなら、beamerposter がいちばん短い道です。\documentclass[final]{beamer} の上に \usepackage[size=a0,scale=1.4,orientation=portrait]{beamerposter} を重ねるだけで、block・columns・テーマ・カラーテーマがそのままポスターの寸法で動きます。新しい記法を覚える必要はありません。[final] はオーバーレイを畳んで 1 ページにするための指定で、\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 の 9 種類が入っています。9 つ全部を実際にコンパイルしましたが、いずれもエラーなしで 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}見た目の層は 4 つに分かれていて、\usetheme のほかに \usecolorstyle(8 種、なぜか Australia・Britain・Default・Denmark・Germany・Russia・Spain・Sweden と国名が付いています)、\usecolorpalette(5 種)、\useblockstyle(Basic・Corner・Default・Envelope・Minimal・Slide・TornOut の 7 種)を重ねられます。ただし 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 を得る 2 つの方法
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〜2004 年に 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)道は 2 つです。本来の経路は 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 を試すほうが早いでしょう。
印刷屋に渡す前に確かめること
確認は 3 点で足ります。用紙寸法は pdfinfo の Page size: 行、フォントの埋め込みは pdffonts の emb 列がすべて yes になっていること、画像の解像度は原寸で 150 dpi あれば実用上十分(近づいて読むポスターなら 300 dpi)。フォントは pdffonts で確認すると、pdflatex が作ったポスターでは 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の 2 つでだいたい決まる - 手早く整った見た目が欲しい →
tikzposter。テーマ 9 種+色スタイル 8 種。ただし\innerblockは避ける - 自分で組版を握りたい、または既存の原稿がある →
a0poster。ただし用紙が PDF に届いているか必ずpdfinfoで確認 - baposter を勧められた → TeX Live 2024 には無い。CTAN から手で入れるか、
tikzposterに乗り換える