今さら人に聞けない「日本語でBeamer」のキホン

「Beamerで日本語を無事に扱う」ためにプレアンブルに書くべき設定内容を、各種エンジン（とDVIウェアの組合せ）の各々について示す。

## 前提

  * “日本語でない”（欧文の）Beamer文書の作り方については、余裕で解っているものとする。
  * “Beamerでない”（article系などの）日本語LaTeX文書の作り方については、余裕で解っているものとする。
  * 動作確認はTeX Live 2015（最終版）および2016（2016-07-20時点）で行った。

## pLaTeXの場合

### dvipdfmxを使う場合

```latex:pLaTeX+dvipdfmx用のテンプレート
% pLaTeX文書; 文字コードはいつも通り
\documentclass[dvipdfmx,12pt]{beamer}% dvipdfmxしたい
\usepackage{bxdpx-beamer}% dvipdfmxなので必要
\usepackage{pxjahyper}% 日本語で'しおり'したい
\usepackage{minijs}% min10ヤダ
\renewcommand{\kanjifamilydefault}{\gtdefault}% 既定をゴシック体に

% あとは欧文の場合と同じ
\usetheme{Copenhagen}
```

```bash:コンパイル手順
platex slide.tex
platex slide.tex
dvipdfmx slide.dvi
```

  * ドライバオプション `dvipdfmx` をグローバルに指定する。
  * [bxdpx-beamer](https://www.ctan.org/pkg/bxdpx-beamer) が必要な理由は、以下を参照。
      * [Beamer は dvipdfmx をサポートするか否か？ (2)](http://d.hatena.ne.jp/zrbabbler/20130221/1361455788)
  * [pxjahyper](https://www.ctan.org/pkg/pxjahyper) が必要な理由は、以下を参照。簡単にいうと、PDFの文書情報（しおり）に含まれる日本語文字を正常に扱うためである。
      * [pxjahyper パッケージ](http://d.hatena.ne.jp/zrbabbler/20120528/1338221936)
  * minijs が必要な理由は、以下を参照。
      * [LaTeX の「アレなデフォルト」 傾向と対策](http://qiita.com/zr_tex8r/items/297154ca924749e62471)
  * Beamerでは通例サンセリフ体の欧文フォントが用いられるので、それに調和させるため、和文フォントをゴシック体にしたい。そのため `\kanjifamilydefault` を再設定する。
      * もし欧文をセリフ体にする（`\usefonttheme{serif}`）のであれば、この再設定は不要である。

### dvipsを使う場合

```latex:pLaTeX+dvips用のテンプレート
% pLaTeX文書; 文字コードはいつも通り
\documentclass[dvips,12pt]{beamer}% dvipsしたい
\usepackage{minijs}% min10ヤダ
\renewcommand{\kanjifamilydefault}{\gtdefault}% 既定をゴシック体に

% あとは欧文の場合と同じ
\usetheme{Copenhagen}
```

```bash:コンパイル手順
platex slide.tex
platex slide.tex
dvips slide.dvi
convbkmk -g -O slide.ps
ps2pdf slide.ps
```

  * ドライバオプション `dvips` をグローバルに指定する。
  * minijs が必要な理由は、以下を参照。
      * [LaTeX の「アレなデフォルト」 傾向と対策](http://qiita.com/zr_tex8r/items/297154ca924749e62471)
  * 和文フォントをゴシック体にするため `\kanjifamilydefault` を再設定する。
  * 文書情報に含まれる日本語文字を正常に扱うために、convbkmk コマンドを実行する。（pxjahyperはdvipdfmx専用。）
      * convbkmk コマンドを実行するには、Rubyがインストールされている必要がある。
      * convbkmk の詳細については、以下の記事を参照されたい。  
        [convbkmkコマンドの使い方　覚え書き](http://konoyonohana.blog.fc2.com/blog-entry-35.html)
      * もし `-g` で失敗する場合は、`-s` や `-e` を試すとよい。
  * もちろん、ps2pdf ではなく Distiller を利用してPDFに変換することもできる。

### 和文フォントの種類

使用される（PDFに埋め込まれる）和文フォントの種類については、通常のpLaTeX文書と同じ扱いになる。

  * つまり、DVIウェアで設定された和文フォントが使われる。
  * 通常のTeX Liveの運用では、[kanji-config-updmapコマンド](https://texwiki.texjp.org/?TeX%E3%81%A8%E3%83%95%E3%82%A9%E3%83%B3%E3%83%88#ge692ee0)の設定に従う。
  * 通常のpLaTeX文書と同様に[OTFパッケージ](https://www.ctan.org/pkg/japanese-otf)や[pxchfonパッケージ](https://www.ctan.org/pkg/pxchfon)が利用できる。

## upLaTeXの場合

基本的にpLaTeXの場合と同じ。ただしminijsの読込は不要なので書かない[^minijs-1]。

### dvipdfmxを使う場合

```latex:upLaTeX+dvipdfmx用のテンプレート
% upLaTeX文書; 文字コードはUTF-8
\documentclass[dvipdfmx,12pt]{beamer}% dvipdfmxしたい
\usepackage{bxdpx-beamer}% dvipdfmxなので必要
\usepackage{pxjahyper}% 日本語で'しおり'したい
\renewcommand{\kanjifamilydefault}{\gtdefault}% 既定をゴシック体に

% あとは欧文の場合と同じ
\usetheme{Copenhagen}
```

```bash:コンパイル手順
uplatex slide.tex
uplatex slide.tex
dvipdfmx slide.dvi
```

### dvipsを使う場合

```latex:upLaTeX+dvips用のテンプレート
% upLaTeX文書; 文字コードはUTF-8
\documentclass[dvips,12pt]{beamer}% dvipsしたい
\renewcommand{\kanjifamilydefault}{\gtdefault}% 既定をゴシック体に

% あとは欧文の場合と同じ
\usetheme{Copenhagen}
```

```bash:コンパイル手順
uplatex slide.tex
uplatex slide.tex
dvips slide.dvi
convbkmk -u -O slide.ps
ps2pdf slide.ps
```

  * convbkmkのオプションは `-u` とする。

## LuaLaTeX + LuaTeX-jaの場合

```latex:LuaLaTeX用のテンプレート
% LuaLaTeX文書; 文字コードはUTF-8
\documentclass[unicode,12pt]{beamer}% 'unicode'が必要
\usepackage{luatexja}% 日本語したい
\usepackage[ipaex]{luatexja-preset}% IPAexフォントしたい
\renewcommand{\kanjifamilydefault}{\gtdefault}% 既定をゴシック体に

% あとは欧文の場合と同じ
\usetheme{Copenhagen}
```

```bash:コンパイル手順
lualatex slide.tex
lualatex slide.tex
```

  * 文書情報に含まれる日本語文字を正常に扱うために、`unicode` オプションを与える。
      * 実はこれはhyperrefパッケージに対する指定である。
  * 和文フォントをゴシック体にするため `\kanjifamilydefault` を再設定する。
  * luatexja-presetパッケージのオプションで使用する和文フォントを選択できる。
      * 詳しくはLuaTeX-jaのマニュアル（`texdoc luatexja`で開く）を参照されたい。

## XeLaTeX + zxjatypeの場合

```latex:XeLaTeX用のテンプレート
\documentclass[unicode,12pt]{beamer}
\usepackage{zxjatype}
\usepackage[ipaex]{zxjafont}

\usetheme{Copenhagen}
```

```bash:コンパイル手順
xelatex slide.tex
xelatex slide.tex
```

  * 文書情報に含まれる日本語文字を正常に扱うために、`unicode` オプションを与える。
  * [zxjafontパッケージ](https://www.ctan.org/pkg/zxjafont)のオプションで使用する和文フォントを選択できる。
      * 詳しくはzxjafontのマニュアル（`texdoc zxjafont`で開く）を参照されたい。
  * zxjatypeにおいては、欧文がサンセリフに切り替わると和文は常に自動的にゴシックに切り替わる。

## pdfLaTeX + bxcjkjatypeの場合

```latex:pdfLaTeX用のテンプレート
% pdfLaTeX文書; 文字コードはUTF-8
\documentclass[unicode,12pt]{beamer}% 'unicode'が必要
\usepackage[whole,autotilde]{bxcjkjatype}% pdfLaTeXで日本語したい

% あとは欧文の場合と同じ
\usetheme{Copenhagen}
```

```bash:コンパイル手順
pdflatex slide.tex
pdflatex slide.tex
```

  * [bxcjkjatypeパッケージ](https://www.ctan.org/pkg/bxcjkjatype)は、[CJKutf8パッケージ](https://www.ctan.org/pkg/cjk)を利用して日本語組版を行うためのものである。詳しくは以下の記事を参照されたい。
      * [pdfLaTeX + CJK パッケージで日本語する方法](http://qiita.com/zr_tex8r/items/cdaac1500718eb9fa330)
      * 文書情報に含まれる日本語文字の処理はCJKutf8が行っている。
  * bxcjkjatypeにおいては、欧文がサンセリフに切り替わると和文は常に自動的にゴシックに切り替わる。
  * 和欧文間空白（“四分空き”）を `~` で挿入するため `autotilde` オプションを用いている。
      * 詳細は[先述の記事](http://qiita.com/zr_tex8r/items/cdaac1500718eb9fa330)にある通り。
  * 四分空きを入れない設定については以下の記事を参照。
      * [bxcjkjatype の autotilde はソレじゃない件(2)](http://d.hatena.ne.jp/zrbabbler/20150830/1440896280)

## 欧文LaTeX + bxcjkjatypeの場合

bxcjkjatypeに関する設定はpdfLaTeXと同様、DVIウェアに関する設定は(u)pLaTeXと同様になる。「文書情報中の日本語の取扱」はbxcjkjatype（CJKutf8）が行っている。

### dvipdfmxを使う場合

```latex:LaTeX+dvipdfmx用のテンプレート
% 欧文LaTeX文書; 文字コードはUTF-8
\documentclass[dvipdfmx,unicode,12pt]{beamer}
\usepackage[whole,autotilde]{bxcjkjatype}
\usepackage{bxdpx-beamer}% dvipdfmxなので必要

% あとは欧文の場合と同じ
\usetheme{Copenhagen}
```

```bash:コンパイル手順
latex slide.tex
latex slide.tex
```

### dvipsを使う場合

```latex:LaTeX+dvips用のテンプレート
% 欧文LaTeX文書; 文字コードはUTF-8
\documentclass[dvips,unicode,12pt]{beamer}
\usepackage[whole,autotilde]{bxcjkjatype}

\usetheme{Copenhagen}
```

```bash:コンパイル手順
latex slide.tex
latex slide.tex
dvips slide.dvi
ps2pdf slide.ps
```

[^minijs-1]: というか、現在のminijsパッケージはupLaTeXには非対応である。ただし、近い将来に対応が予定されている。ただし、upLaTeXでのBeamer文書でminijsを読み込む必要性は、私はあまりないと思う。