beamer 自身のマニュアルは、発表の作り方について身も蓋もない目安を一つだけ示しています——フレームは多くても1分に1枚。そのマニュアルによれば、Till Tantau が beamer の最初の版を書いたのは 2003 年 2 月、自分の博士論文審査の発表のためで、それ以前は「seminar クラスを使いやすくするための私的なマクロ集」でした。1 か月後、同僚に勧められて CTAN に置いた——それだけの話です。このページはフレームの書き方ではなく(それは beamer クラスのページが扱います)、書き終えた LaTeX ファイルと、プロジェクタのある部屋とのあいだにあるものを扱います。aspectratio=169 で 16:9 にすること、右下のナビゲーション記号を消すこと、バックアップスライドを足しても嘘にならないスライド番号、節の扉、手元だけに出すノート、そして 121 ページのデッキが 1 回 3.5 秒かかるようになったときの逃げ道です。
beamer を 16:9 にする — aspectratio=169 と、既定が 4:3 だという事実
\documentclass[aspectratio=169]{beamer} の一語で 16:9 になります。そして既定は いまも 4:3 です——2026 年の会場のプロジェクタがほぼ 16:9 であることとは無関係に、beamer は何も指定しなければ 4:3 のままです。TeX Live 2024 同梱の beamer 3.71 で実際に組んで pdfinfo にかけると、既定は 362.835 × 272.126 pt(= 128 × 96 mm)、aspectratio=169 は 453.543 × 255.118 pt(= 160 × 90 mm)でした。ここで見落としやすいのは、16:9 にすると幅が広がるだけでなく 高さが 96 mm から 90 mm に縮む ことです。4:3 で下ぎりぎりまで詰めたフレームは、aspectratio=169 を足した瞬間に下がはみ出します。だから比率は最初に決めます。
| クラスオプション | 寸法 | pdfinfo の実測値 | 備考 |
|---|---|---|---|
aspectratio=43 | 128 × 96 mm | 362.835 × 272.126 pt | 既定。何も書かないとこれ |
aspectratio=169 | 160 × 90 mm | 453.543 × 255.118 pt | 現行のプロジェクタの標準。高さは 6 mm 減る |
aspectratio=1610 | 160 × 100 mm | 453.543 × 283.465 pt | ノート PC の画面で作り込むとき |
aspectratio=149 | 140 × 90 mm | 396.85 × 255.118 pt | 幅を抑えた横長 |
aspectratio=32 | 135 × 90 mm | 382.677 × 255.118 pt | 3:2 |
aspectratio=141 | 148.5 × 105 mm | 420.945 × 297.638 pt | ちょうど A6 横。pdfinfo も「A6」と表示します |
aspectratio=54 | 125 × 100 mm | 354.331 × 283.465 pt | 5:4。古い液晶プロジェクタ向け |
aspectratio=2013 | 140 × 91 mm | 396.85 × 257.953 pt | 20:13。数字がそのまま比になる例 |
ついでに、この寸法がどうやって PDF に届いているかを見ておくと得をします。beamer.cls は自分で計算した幅と高さを geometry に papersize={...} として渡していて、geometry が \pdfpagewidth と \pdfpageheight を書き換えます。これは地味に重要です。素の LaTeX では \documentclass[letterpaper]{article} と書いても、TeX Live の pdftexconfig.tex が \pdfpagewidth = 210 true mm を先に設定しているせいで PDF は A4 で出てきます(実測 595.276 × 841.89 pt)。beamer はその上書きを自前でやり直すので、この罠にはかかりません。逆に言えば、\pdfpagewidth を手で書き換えるようなコードをプリアンブルに足すと、beamer の寸法計算だけが取り残されて図の中央合わせが狂います。触らないのが正解です。
% decide this before you place a single figure
\documentclass[aspectratio=169]{beamer}
% inside a frame, always express sizes relative to the slide,
% never in absolute cm, so a later ratio change survives
\includegraphics[width=0.8\textwidth]{plot.pdf}
\includegraphics[height=0.6\textheight]{photo.jpg}右下のナビゲーションシンボルを消す — \setbeamertemplate{navigation symbols}{}
プリアンブルに \setbeamertemplate{navigation symbols}{} を 1 行足せば消えます。あの薄い記号の列は飾りではなく、6 個の部品からなる本物のリンク集です。beamerouterthemedefault.sty の定義を見ると \insertslidenavigationsymbol・\insertframenavigationsymbol・\insertsubsectionnavigationsymbol・\insertsectionnavigationsymbol・\insertdocnavigationsymbol・\insertbackfindforwardnavigationsymbol が横に並べてあるだけで、それぞれが 2〜4 本のハイパーリンクを持っています。default テーマの 1 枚だけのデッキを組んで数えたところ、PDF の /Link 注釈は 1 枚あたり 20 個。テンプレートを空にすると 0 個になり、フレーム送りだけ残したい場合は {\insertframenavigationsymbol} にすると 4 個になります。
| 部品 | リンク先 | 本数 |
|---|---|---|
\insertslidenavigationsymbol | 前後のスライドと、ビューアの「ページへ移動」 | 3 |
\insertframenavigationsymbol | 前のフレームの末尾・現フレームの先頭と末尾・次フレームの先頭 | 4 |
\insertsubsectionnavigationsymbol | 小節の境界 4 か所(フレームと同じ形) | 4 |
\insertsectionnavigationsymbol | 節の境界 4 か所 | 4 |
\insertdocnavigationsymbol | 発表の最初のページと最後のページ | 2 |
\insertbackfindforwardnavigationsymbol | ビューアのメニュー命令 GoBack・Find・GoForward | 3 |
消すか残すかは発表の長さで決めます。beamer のガイドラインには「長い講演ほど道案内が要る」と書かれていて、90 分の講義なら現在地を示すサイドバーが役に立つが、10 分の紹介に目次を出すのは滑稽だ、という趣旨のことが述べられています。実務ではこうなります——学会の 15 分発表なら消す(誰もクリックしませんし、印刷すると紙にも出ます)。半期の講義資料なら残す(受講者は PDF を手元で読み返し、節の頭に飛びたがります)。中間案として、フレーム送りだけ残すのが {\insertframenavigationsymbol} です。なお \usetheme{metropolis} のようにテーマ側で最初から消しているものもあるので、消えないと思ったらまずテーマを疑ってください。
% remove all six symbols
\setbeamertemplate{navigation symbols}{}
% or keep only the frame-stepping pair
\setbeamertemplate{navigation symbols}{\insertframenavigationsymbol}スライド番号を出す — \insertframenumber と \inserttotalframenumber
手で組むなら footline テンプレートに \insertframenumber/\inserttotalframenumber を書きますが、テーマの脚に番号がある場合は beamer が用意した名前付きテンプレート を選ぶほうが確実です——\setbeamertemplate{page number in head/foot}[totalframenumber] と書けば「3 / 12」の形になります(beamerbaseauxtemplates.sty に framenumber・totalframenumber・appendixframenumber の 3 つが定義されています)。ここで多くの人が引っかかるのが、番号が数えているのは PDF ページではなくフレーム だということです。\pause を 1 つ含むフレームは PDF では 2 ページになりますが、右下の番号は両方のページで同じ「3 / 3」のまま。矢印キーを押しても番号が動かないのはバグではありません。
もう一つの落とし穴は 総数が 1 回目のコンパイルでは嘘になる ことです。\inserttotalframenumber はデッキ全体を組み終わってから確定するので、beamer は結果を補助ファイル .nav に書き出します——実際に覗くと \headcommand {\gdef \inserttotalframenumber {3}} という 1 行が入っています。だから .aux と .nav を消して 1 回だけ走らせると、脚には 2/1・3/1 という壊れた分数が並びます。2 回目でようやく 2/3・3/3 になりました。発表用の PDF は必ず 2 回通す、これが beamer の鉄則です。そして表紙とバックアップに [noframenumbering] を付ければ、総数は本編だけを数えます——実測で「2/3」だった表紙付きデッキが、表紙を数えないだけで「1/2」になりました。付録を丸ごと別勘定にしたいなら \appendix を置いて [appendixframenumber] を選ぶと、本編が「2/2」、バックアップが「1/1」と別々に数えられます。
\documentclass[aspectratio=169]{beamer}
\usetheme{Madrid}
\setbeamertemplate{navigation symbols}{}
\setbeamertemplate{page number in head/foot}[appendixframenumber]
\begin{document}
% the title page should not eat frame number 1
\begin{frame}[plain,noframenumbering]\titlepage\end{frame}
\begin{frame}{Results}\end{frame}
% everything after \appendix is counted separately
\appendix
\begin{frame}{Backup: full derivation}\end{frame}
\end{document}節ごとに扉スライドを自動で挟む — \AtBeginSection
プリアンブルに \AtBeginSection[]{...} を置き、その中に \tableofcontents[currentsection] を含むフレームを書きます。これだけで \section{...} のたびに「いまここ」を示す扉が自動で入ります。角括弧の [] は「番号なし節(\section*)のときは何もしない」という意味の空の引数で、忘れると付録の見出しにまで扉が生えます。扉のフレームには [noframenumbering,plain] を付けるのが定石で、前節で見たとおり総数を汚さず、テーマの枠飾りも外れます。小節ごとに出したいなら \AtBeginSubsection[]{...}、90 分の講義を大きく二部に割るなら \part{...}(部ごとに独立した目次を持ちます)。
この仕掛けには、知らないと 5 分溶かす副作用があります。\tableofcontents は目次ファイル .toc を読んで組まれるので、1 回目のコンパイルでは扉スライドが 1 枚も出ません。実際に、2 節 4 フレームのデッキを補助ファイルなしで 1 回走らせると 5 ページ、2 回目で 7 ページになりました。「\AtBeginSection が効かない」と検索する前に、まずもう一度走らせてください。
% the [] argument is what runs for \section*, i.e. nothing
\AtBeginSection[]{%
\begin{frame}[noframenumbering,plain]
\tableofcontents[currentsection]
\end{frame}%
}
% same idea one level down
\AtBeginSubsection[]{%
\begin{frame}[noframenumbering,plain]
\tableofcontents[currentsection,currentsubsection]
\end{frame}%
}客席にスライド、手元にノート — 発表者ディスプレイの二つの道
道は二つです。一つは beamer だけで完結する \setbeameroption{show notes on second screen=right}。これは PDF そのものを 横に 2 倍にします——1 フレームのデッキで測ると、ページが 725.669 × 272.126 pt(= 256 × 96 mm)になり、ページ数は 1 のまま。つまり「左半分が客席、右半分が手元」という 1 枚の紙が出てきます。=bottom にすると縦に 2 倍(362.835 × 544.252 pt)になります。専用ソフトは要らず、投影する側で左半分だけを切り出せる環境なら成立します。もう一つは TeX Live 2024 同梱の pdfpc パッケージ(v0.7.1、2023/10/21)で、ノートと発表時間を PDF のメタデータに埋め込みます。\usepackage[overridenote]{pdfpc} と書くと \note{...} の中身が pdfpc 用のノートになり、\pdfpcsetup{duration=20, lastminutes=3} と書けば 20 分のカウントダウンと残り 3 分の警告がファイル自体に付いて回ります。
ここで正直に言っておくと、PDF Presenter Console そのものは TeX Live に入っていません。pdfpc パッケージが同梱しているのはメタデータを書き込む LaTeX 側だけで、二画面表示をするアプリ(GPLv3+)は別途インストールします。逆にいえば、その場でアプリを入れられない会場でも、show notes on second screen の横長 PDF なら Adobe Reader でも表示できます——保険としてこちらも書き出しておくと安心です。ノートの本文そのもの(\note{...} の書き方、show notes でノート専用ページを挟む方法)は配布資料のページで扱います。
% route 1: one PDF, twice as wide, no extra software
\setbeameroption{show notes on second screen=right}
% route 2: notes and a countdown clock stored inside the PDF
\usepackage[overridenote]{pdfpc}
\pdfpcsetup{duration=20, lastminutes=3}長いデッキのコンパイルが遅い — \includeonlyframes と draft
いま直しているフレームに [label=cur] を付け、プリアンブルに \includeonlyframes{cur} と書きます。そのフレームだけが出力され、残りは組版だけされて捨てられます。実測してみましょう——40 フレーム、各フレームに 3 段階のオーバーレイと TikZ の図を 1 枚ずつ載せたデッキは 121 ページになり、この Mac(TeX Live 2024)で 1 回 3.51 秒。\includeonlyframes{cur} を足すと 3 ページ・1.39 秒 になりました。2 回通す必要があることを思い出すと、待ち時間は 7 秒から 3 秒弱に縮みます。クラスオプションの draft は別の効き方で、ヘッドライン・フットライン・サイドバーをただの灰色の帯に差し替えます(beamerbasemisc.sty にその置換が書かれています)。ページ数は 121 のまま、2.76 秒。図の位置を詰めたいときは draft、1 枚のレイアウトを何十回も見たいときは \includeonlyframes です。
% preamble: build only the frame you are working on
\includeonlyframes{cur}
% body: the label must match
\begin{frame}[label=cur]{The slide I am fighting with}
\includegraphics[width=\textwidth]{big-figure.pdf}
\end{frame}映す PDF と配る PDF は別物 — 書き出しと印刷
発表用の PDF をそのまま印刷してはいけません。理由は寸法です——16:9 のスライドは 160 × 90 mm、A4 は 210 × 297 mm。1 ページに 1 枚ずつ刷ると紙の 3 分の 2 が白のまま残り、しかも \pause を 3 回使ったフレームは 4 枚に増えているので、30 分の発表が 120 枚の紙束になります。正攻法は \documentclass[handout]{beamer} と pgfpages でもう一つの PDF を作ることで、これは配布資料のページで詳しく扱います。ソースを一切触りたくないなら、TeX Live に同梱の pdfjam で後処理できます——pdfjam --nup 2x2 --frame true --paper a4paper --landscape を通すと、実測で 2 枚のスライドが A4 横(841.89 × 595.276 pt)1 ページに収まりました。
# four slides to an A4 sheet, without touching the source
pdfjam --nup 2x2 --frame true --paper a4paper --landscape \
--outfile talk-4up.pdf talk.pdf
# check what you actually produced before you print 40 copies
pdfinfo talk-4up.pdf | grep -E "Pages|Page size"- 画面比を最初に固定する —
aspectratio=169は幅を増やすと同時に高さを 96 mm から 90 mm に減らします。後から変えると詰めたフレームがあふれます。 - 必ず 2 回コンパイルする — 総フレーム数も節の扉も
.navと.toc経由なので、1 回目は2/1のような壊れた番号が出ます。 - 表紙とバックアップに
[noframenumbering]— 総数が本編だけを数えるようになります。付録を独立させたいなら\appendixと[appendixframenumber]。 - 15 分の発表ならナビゲーションを消す —
\setbeamertemplate{navigation symbols}{}の 1 行。長い講義では逆に残します。 - 会場に着く前に 3 つの PDF を用意する — 発表用、
show notes on second screenの保険用、そして配布用。3 つ目の作り方は配布資料のページへ。 - フォントを埋め込んだか確認する —
pdfinfoとpdffontsを通してから USB メモリに入れます。