LoginSignup
18
15

More than 1 year has passed since last update.

beamerでスライドづくり:Tipsとカスタムテンプレート

Posted at

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環境をおきたい、というような場面が多々ある。
またitemizeequationなどの環境も、内容と関係なく最大の幅(\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.pdfmain.texmybeamer.styを見てみてください。

個人的には見た目の細かいことを考えずに済む点がbeamerの良さで、この記事に書いたことと最低限の調整(空白やフォントサイズなど)ができれば十分だろう、と思います。
なにか調整したいことがあったとき、少し調べてもわからないときは「beamer的には不要な(無駄な)調整なんだ」と割り切ってあきらめるのも悪くない気がします。

  1. beamerの存在が忘れられていて「Powerpointで作成したスライドを事前に提出せよ」と指示されることがある。
    こういうときに、いかにもbeamerな見た目のスライドを提出するのは気が引けるのである。

  2. この方法では結局mybeamer.sty.texファイルと同じディレクトリにコピペしないといけない。
    たしかに手間だが1回きりだし、スライドごとに.styファイルの中身を編集したい場合もあるので、ちょうどいい妥協点だと思っている。
    なお、.styファイルをこうやって使うのが推奨されるのかはわからない。

  3. appendixnumberbeamerでは付録部分に一切ページ番号が振られないが、ページ番号が欲しい人もいると思う。
    他にもやり方(パッケージ)はあるのだが、いまのところ自分の用途にはappendixnumberbeamerで十分、というところである。

18
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
15