Beamerの使い方 : スライドと文章を簡単に行き来する方法


Beamerとは?

Beamerとはtexでスライドを作成するためのパッケージである。2015年以降のtex関係のパッケージからはデフォルトで入っているため、何もインストールしなくても動かすことができる。

(追記)2020.4.26 : overleaf 上にサンプルを置きました.tex熟練者さんであれば,いきなりoverleafをご覧頂ければと思います.

beamer の基本的な使い方は,

を参照ください.

Beamer を講義資料作成に使うメリット

Beamerを用いて発表資料やスライドを作成することで、文章とスライドを数行の変更だけで行き来することができる。

texで統一できることで管理やメンテの手間が格段に減る。そのために必要な知識は準備は実はものすごく少ないので、ぜひ試して頂きたい。

Beamerで文章とスライドを行き来するコツ

全般的な注意事項

  • paragraph コマンドは定義されてないので使えない。(cf. https://tex.stackexchange.com/questions/116940/undefined-control-sequence-endframe)
  • スライドとハンズアウトを行き来するときは、セクション関係の一次ファイルの整合性の問題でコンパイルがエラーになることがある。中間ファイルを削除して再コンパイルor2回以上コンパイルすればエラーが解消される。
  • chapterはつかえないので、section, subsection, subsubsection(paragraphが使えないので)を用いる。
  • スライドモードの場合だけ、数式モードの中で全角の日本語は使えない。

プリアンブルの設定

講義ノート(handout)の場合、プリアンブルに下記の設定をする

%%% ---- ハンズアウトの場合 (start) remove comment out
\documentclass[a4paper,12pt,dvipdfmx]{jsarticle}
\usepackage{beamerarticle}
\newcommand*{\kougi}{handout}   % kougi is not slide
%%% ---- ハンズアウトの場合 (stop) 

スライドの場合、プリアンブルに下記の設定をする。

%%% ---- スライドの場合 (start) remove comment out
\documentclass[dvipdfmx,8pt]{beamer}
\newcommand*{\kougi}{slide}   % kougi is slide
%%%  ---- スライドの場合 (stop)

texは意外と知られてないが、if文などの制御文を使うこともできる。ただし、documentclassの前だと(私の知る限りは)無理なので、上記は、コメントアウトの有無を手動で切り替えて、講義ノートと講義スライドを切り替えることにする。

これ以降は、"kougi"というフラグを使って、講義ノートと講義スライドのコマンドの分岐を制御することができる。次にその例を示す。

目次の設定

目次は講義スライドと講義ノートで記法が異なるので、プリアンブルで設定した"kougi"という文字でif文で条件分岐させる。

\ifthenelse{\equal{\kougi}{slide}}{%
% ---- タイトルと目次、スライドの場合 (start) 
\begin{frame}
 \titlepage 
\end{frame}

\begin{frame}<beamer>
  \frametitle{目次}
  \tableofcontents[] 
%  \tableofcontents[hideothersubsections] % hide subsection
\end{frame}
% ---- タイトルと目次、スライドの場合 (stop)   
}
{%else
% ---- タイトルと目次、ハンズアウトの場合 (start) 
\maketitle
\setcounter{tocdepth}{3}
\tableofcontents[] 
% ---- タイトルと目次、ハンズの場合 (stop) 
}

章立てのカウンターとの付き合い方

Beamerはスライド用なので、普通のdocumentよりは書き方の自由度が下がるのは仕方なく、いつくか受け入れる必要がある。

  • chapterが使えない。sectionをchapterと思って、階層構造を一段下げて作成する。
  • 図の配置は一手間必要。これは努力次第だが、ppt や keynote に比べるとtexだからしょうがない。

たぶん、これくらい。大きな不自由はないかと。

図の入れ方

スライドの場合は横長、講義ノートの場合は縦長なので、図の最大値の定義が両者で異なる。そのため、includedraphicsのmaxが使えるように、

\usepackage[export]{adjustbox} % loads also graphicx

を用いる。

テーマの設定

短いスライドの場合は、デフォルトで全サブセクションが横に表示される方が都合がよいことが多いだろう。

もし、長い資料の場合は、hideothersubsections というオプションをテーマの前に入れる方が良い。使い方は単純に usethemeのオプションを追加するだけ。下記は、Goettingenのテーマの例。

\usetheme[hideothersubsections]{Goettingen}

こうすることで、subsection項目はそのsectionにいるときだけ展開されるので、煩雑さが減る。

索引の設定

スライドの場合に索引を展開すると1Pで収まらないし、必要性もないので、

\tableofcontents[hideothersubsections] % hide subsection

hideothersubsectionsオプションをtableofcontentsに入れて、セクションだけの表示とする。

条件分岐しない場合

\begin{figure}[hbt] \begin{center}
\includegraphics[max height=0.8\textheight,max width=0.8\textwidth]{ファイル名}
\caption{キャプション}\label{}
\end{center} \end{figure}

条件分岐する場合

プリアンブルで設定した"kougi"フラグを用いて条件分岐する。内容は適宜変更ください。

\begin{figure}[hbt] \begin{center}
\ifthenelse{\equal{\kougi}{slide}}{%
\includegraphics[max height=0.8\textheight,max width=0.8\textwidth]{ファイル名}}{
\includegraphics[max height=0.8\textheight,max width=0.8\textwidth]{ファイル名}}
\caption{キャプション}\label{}
\end{center} \end{figure}

「Too Many unprocessed float」の回避

図が多くなると、Too Many unprocessed float のエラーがでてしまうので、\clearpage を入れて解決する。
- 参考 : http://mikilab.doshisha.ac.jp/dia/seminar/latex/doc/floaterror.html

具体例

ちょっと試してみたい人向けに短いサンプルをご用意しました。
スライド用とノート用に2つのtexファイルを用意せずに、
一つのファイルの冒頭箇所をコメントアウトしてpdfを生成し、コメントアウトを切り替えてpdfを生成し、2つのpdfを生成してます。

短いサンプルなので、hideothersubsections はオフにして、あえて同じ内容のtexファイルをinputで2回読んで、どう表示されるかを示しました。

両者は、冒頭の数行だけのコメントアウトを変更するだけで生成されているにもかかわらず、十分なクオリティだとは思います。

サンプル一式のダウンロード方法

一括ダウンロード

下記からファイル一式をダウンロードできます.

overleaf から取得

overleaf 上に置いてあります.

ただし,overleaf 上で,日本語でbeamerを使うにはそのままではダメです.Beamer + Metropolisで日本語のプレゼンテーションを書きたい を参考にして,

latexmkrc
$latex = 'xelatex';
$dvipdf = 'xdvipdfmx %O -o %D %S';
$bibtex = "pbibtex %O %B";
$makeindex = "mendex %O -p $D %S";
$pdf_mode = 5;

という設定ファイルを追加し,lec_astro_v20190427_forqiita.tex のプリアンブルに,

\usepackage{zxjatype}
\usepackage[ipa]{zxjafont}

を加筆してます.

overleaf 上だと,コンパイラを, XeLatex, に設定しないとコンパイルでこけます.

それに伴い,

lec_astro_v20190427_forqiita_note.tex
\documentclass[a4paper,12pt,dvipdfmx]{bxjsarticle}

ドキュメントのクラスを,jsarticle から bxjsarticle に変更してます.

  • 講義ノート

  • 講義スライド