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

# Beamerとは？

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

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

- [閲覧用 overleaf : lecture_notes_xray_qiita](https://www.overleaf.com/read/wfngsftzjprd)
- [編集用 overleaf : lecture_notes_xray_qiita_foredit](https://www.overleaf.com/7269667766bfnhxxntprqn)

beamer の基本的な使い方は，

- [宇宙の研究を初める人向けの tex + overleaf + beamer の使い方](https://qiita.com/yamadasuzaku/items/65398e8b365adffad1fe)

を参照ください．

最初に結論の図を紹介します。この記事では、講義ノートとスライドを、冒頭の数行だけ変えるだけで、

![スクリーンショット 2022-08-07 14.41.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179652/119e436f-ce8a-3b59-5cf7-c07a4b59b538.png)

- [スライド形式 (pdf)](http://www-x.phys.se.tmu.ac.jp/~syamada/qiita/lecture_notes_xray_qiita/lec_astro_v20190427_forqiita.pdf) 
- [講義ノート形式 (pdf)](http://www-x.phys.se.tmu.ac.jp/~syamada/qiita/lecture_notes_xray_qiita/lec_astro_v20190427_forqiita_note.pdf) 

のように行き来できるような方法を紹介します。


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

Beamerを用いて発表資料やスライドを作成することで、文章とスライドを**数行の変更だけ**で行き来することができて、統一感をある形で管理が可能になります。数式も含めたドキュメントや資料をtexで一括管理することで、メンテの手間も格段に減ります。
意外と難しそうに思えますが、実はそのために必要な知識と準備は少なくて大丈夫だとわかりましたので、ぜひお試しいただければと思います。

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

この記事では tex の基本設定や動作を把握されている前提で説明していきますので、まだ tex に馴染みのない方は web 上に tex の情報は溢れてますので収集してください。

## Beamer を使う上での全般的な注意事項

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

## プリアンブルの設定

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

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

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

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

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

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


## 目次の設定

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


``` tex:
\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が使えるように、

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

を用いる。

## テーマの設定

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

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

``` tex:
\usetheme[hideothersubsections]{Goettingen}
```

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


## 索引の設定

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

``` tex:
\tableofcontents[hideothersubsections] % hide subsection
```

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


### 条件分岐しない場合

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

### 条件分岐する場合

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

``` tex:
\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

## 具体例

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

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

- [スライド形式 (pdf)](http://www-x.phys.se.tmu.ac.jp/~syamada/qiita/lecture_notes_xray_qiita/lec_astro_v20190427_forqiita.pdf) 
- [講義ノート形式 (pdf)](http://www-x.phys.se.tmu.ac.jp/~syamada/qiita/lecture_notes_xray_qiita/lec_astro_v20190427_forqiita_note.pdf) 

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

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

### 一括ダウンロード

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

- http://www-x.phys.se.tmu.ac.jp/~syamada/qiita/lecture_notes_xray_qiita/lecture_notes_xray_qiita.tar.gz

### overleaf から取得

overleaf 上に置いてあります．

- https://www.overleaf.com/read/wfngsftzjprd
    - 講義ノート : lec_astro_v20190427_forqiita_note.tex
    - 講義スライド : lec_astro_v20190427_forqiita.tex


ただし，overleaf 上で，日本語でbeamerを使うにはそのままではダメです．[Beamer + Metropolisで日本語のプレゼンテーションを書きたい](https://eqseqs.hatenablog.com/entry/2018/09/09/214453) を参考にして，

``` tex: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 のプリアンブルに，

``` tex:
\usepackage{zxjatype}
\usepackage[ipa]{zxjafont}
``` 
を加筆してます．

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

それに伴い，

``` tex:lec_astro_v20190427_forqiita_note.tex
\documentclass[a4paper,12pt,dvipdfmx]{bxjsarticle}
``` 
ドキュメントのクラスを，jsarticle から bxjsarticle に変更してます．

- 講義ノート

<img width="1199" alt="スクリーンショット 2020-04-26 23.33.20.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179652/7877a1e5-f11a-61ac-8991-e8fe93aa67ab.png">

- 講義スライド

<img width="1205" alt="スクリーンショット 2020-04-26 23.32.49.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179652/deecdd78-21a6-3efc-7769-eafa0148a48c.png">