2年ほど前から、beamerでスライドをつくるようになった。
自分なりのテンプレートや小技の蓄積ができてきたので、忘れないうちにまとめておく。
以下、サンプルのスライドを使って紹介していく。
- 主な内容
- metropolisを少し修正したテンプレート
- beamerで見やすいスライドを(楽に)つくるための小技
- コードやPDFファイルはGitHubに置いてある
- 注意
- 今までに自分なりに蓄積してきたものなので、ベストプラクティスではない・行儀が悪い、などの可能性あり
- 記事の主な内容はエンジン等に依存しないはずだが、GitHub上のコードをそのまま使う場合は、修正が必要になり得る
- 筆者の環境:OSはWindows、vscodeでコードを書いて(latexmkrcを使って)LuaLaTeXでコンパイルしている
- 違うエンジン(upLaTeXなど)を使う場合、数行に修正が必要
-
tikzも大事だと思うが、ここでは触れない
metropolisベースのテンプレート
テーマは好きなものを選べばよいのだが、自分は普段、metropolisを使っている。
これはmetropolisをベースにすると、PowerPointでつくったスライドに擬態させやすいと思うから1。
ただしそのままだとタイトル部分の文字サイズが大きすぎる(タイトルが長すぎる)、余白が大きい(情報を詰め込みすぎ)など不便なところもあったので、多少修正して使っている。
いちいち修正部分を書くのは面倒なので、カスタマイズする部分をmybeamer.styにまとめて\usepackage{mybeamer}で読み込んでいる2。
*サンプルスライドのPDFファイルやmybeamer.styはここ(GitHub)に置いてある。
Tips集
スライドを水平方向に分割したい
スライドを水平方向に分割して要素を並べたいときには、columns環境を使うのが便利だと思う。
\begin{columns}
\begin{column}{.2\linewidth}
...
\end{column}
...
\begin{column}{.4\linewidth}
...
\end{column}
\end{columns}
このように書いて、次のようなスライドを作ることができる。

minipage環境を単体で(またはtabular環境と組み合わせて)使うことで実現することもできるが、調整することの少なさやコードの簡潔さの観点で、columnsの方が楽だと思う。

ページ内の要素の幅を調節したい
ページの真ん中に小さいblock環境をおきたい、というような場面が多々ある。
またitemize、equationなどの環境も、内容と関係なく最大の幅(\linewidth)をとるので、いい感じに中央揃えにすることができない。

こういう場面でminipage環境は非常に有用である。
\begin{center}
\begin{minipage}{.8\linewidth}
...
\end{minipage}
...
\begin{itemize}
\item ...
\end{itemize}
\end{center}
このように書けば、小さいblockや中央揃え感のあるitemize環境などを配置できる。

前のページを再掲したい
発表の最初と最後に概要スライドを入れたいなど、同じスライドを再掲したいことがある。
frameにラベルをつけておけば、\againframe{label}と書くことでそのページを挿入できる。
なお、ページ番号は新しく与えられる。
\begin{frame}[label=hoge piyo]
\frametitle{タイトル}
...
\end{frame}
...
\againframe{hoge piyo}
GitHub上のサンプルスライドでは、block環境を例示したスライド(p.2)を7ページに再掲している。
図をきれいに並べたい
複数の図を配置したい場合、上のスライドを水平方向に分割したいに書いたcolumns環境やminipage環境を使ってもよいが、最も直感的で挙動が安定するのはtabular環境だと思う。
\begin{tabular}{ccc}
1列目 & 2列目 & 3列目 \\ \midrule
\includegraphics[height=.3\textheight]{figs/fig.jpg}
&
\includegraphics[height=.3\textheight]{figs/fig_mod.jpg}
&
\makecell{makecellを使うと \\ セル内で改行もできる}
\end{tabular}
これをコンパイルすると、下のように垂直方向の配置がずれてしまう。

おそらく解決策は複数あるが、個人的には\raisebox{lift}{内容}を使う方法がわかりやすくて好き。
\begin{tabular}{ccc}
1列目 & 2列目 & 3列目 \\ \midrule
\raisebox{-.5\height}{\includegraphics[height=.3\textheight]{figs/fig.jpg}}
&
\raisebox{-.5\height}{\includegraphics[height=.3\textheight]{figs/fig_mod.jpg}}
&
\makecell{makecellを使うと \\ セル内で改行もできる}
\end{tabular}
*このページの回答を参考にした。
付録のページ番号を除外したい
発表で使う予定のスライドに加えて、質問対応用の補足資料をつくることが多い。
聴衆の中には、右下のページ番号を見て「残りNページだ」と思いながら聞いている人もいる。
そこで補足資料部分にはページ番号を振らないようにしている。
これはappendixnumberbeamerパッケージを読み込むことで実現できる3。
\usepackage{appendixnumberbeamer}
...
\appendix
\begin{frame}
\frametitle{付録:...}
...
\end{frame}
このようにすると、\appendix以降のスライドにはページ番号が振られなくなる。

その他の小技集
*description環境については別の記事に書いたことがある。
おわりに
以上、「正しい」のかはわかりませんが、自分が使っていて困らない方法をまとめました。
この記事には大雑把なことしか書かなかったので、具体的なコードが気になる場合はGitHubにあるmain.pdf、main.texとmybeamer.styを見てみてください。
個人的には見た目の細かいことを考えずに済む点がbeamerの良さで、この記事に書いたことと最低限の調整(空白やフォントサイズなど)ができれば十分だろう、と思います。
なにか調整したいことがあったとき、少し調べてもわからないときは「beamer的には不要な(無駄な)調整なんだ」と割り切ってあきらめるのも悪くない気がします。
-
beamerの存在が忘れられていて「Powerpointで作成したスライドを事前に提出せよ」と指示されることがある。
こういうときに、いかにもbeamerな見た目のスライドを提出するのは気が引けるのである。 ↩ -
この方法では結局
mybeamer.styを.texファイルと同じディレクトリにコピペしないといけない。
たしかに手間だが1回きりだし、スライドごとに.styファイルの中身を編集したい場合もあるので、ちょうどいい妥協点だと思っている。
なお、.styファイルをこうやって使うのが推奨されるのかはわからない。 ↩ -
appendixnumberbeamerでは付録部分に一切ページ番号が振られないが、ページ番号が欲しい人もいると思う。
他にもやり方(パッケージ)はあるのだが、いまのところ自分の用途にはappendixnumberbeamerで十分、というところである。 ↩
