マクロツイーター

はてダから移行した記事の表示が崩れてますが、そのうちに直せればいいのに(えっ)

Beamer は dvipdfmx をサポートするか否か? (2)

前回の続き)
アレをなんとかする話

前回、「ナビゲーションシンボルが dvipdfmx で機能しない問題について、XeTeX では対策が施されている」という話をした。その対策用のコードは非常に簡単なもので実質的には次の数行のコードで済んでいる。

[beamerbasenavigation.sty;215行目〜]
%(ZR註: エンジンが XeTeX である場合以下のコードを実行)
    \def\beamer@linkspace#1{%
      \begin{pgfpicture}{0pt}{-1.5pt}{#1}{5.5pt}
        \pgfsetfillopacity{0}
        \pgftext[x=0pt,y=-1.5pt]{.}
        \pgftext[x=#1,y=5.5pt]{.}
      \end{pgfpicture}}

理由は省略するが、要点としては「見えない文字」を出力する必要があり、そのために PGF の機能を利用しているようだ。なので一見すると、同じ対策をドライバが dvipdfmx の場合にも行えば、dvipdfmx でもナビゲーションシンボルが機能するようになる気がした。で、実際にやってみたが、残念なことに、謎の警告が大量に出て結局シンボルは機能しないままであった。

この対策コードでダメな原因は結局解らないが、要するに「見えない文字」を出せばいいことが解ったので、PGF を使わない別の方法で対策を実装してみたら……。

おおお、今度は動いた!(もちろんカーソルが変わるだけでなくてリンクも機能する。*1)というわけで、取りあえずこれをパッケージにしておく。

使い方は単純で、単に \usepackage{bxdpx-beamer} でパッケージを読み込めば、対策が効いてナビゲーションシンボルが機能するようになる。これで問題が無ければ本家に取り込んでもらうことを考えよう。

pLaTeX + dvipdfmx で Beamer する方法

dvipdfmx を使う目的として大きな比重を占めるのが pTeX 系で日本語を使いたいことであろう。ここで pLaTeX + dvipdfmx で和文を問題なく使うための最低限の設定を挙げておく。Beamer では既定で欧文フォントをサンセリフ\sffamily)にするので、それに合わせて和文をゴシック(\gtfamily)にする必要がある。*2

\documentclass[dvipdfmx]{beamer} % dvipdfmx ドライバを指定
\usepackage{bxdpx-beamer}  % ナビゲーションシンボルを機能させる
\usepackage{pxjahyper}     % しおりの文字化け対策
\usepackage{minijs}        % 和文メトリックの調整(代わりに otf を読み込んでも良い)
\renewcommand{\kanjifamilydefault}{\gtdefault} % 和文既定をゴシックに変更
% 後は欧文の Beamer と同様
\usetheme{Frankfurt}
% ……(以下省略)

Beamer は(間接的にではあるが)ドライバに依存するため、クラスのオプションでドライバ指定(dvipdfmx)を行っている。*3

補足:遷移アニメーションは大丈夫

dvipdfmx + Beamer に関する話をもう一つ。美文書(第 5 版)によると、その当時*4は dvipdfmx でページ遷移アニメーション(\transdissolve 等)が機能しなかったらしい。現在はこれは問題なく機能する。5 ヶ月前(2012 年 9 月)に gist に公開したコードを挙げておく。

*1:節単位の移動の挙動がよく解らないけど、とりあえず pdfTeX 生成のものと同じ結果になっている。)

*2:セリフ+明朝でもよいが、サンセリフ系よりも視認性が劣るのでウェイトが太いフォントを選ぶ必要がある。少なくとも CM Roman 系や IPA 明朝やMS明朝は細すぎるので不適切である。

*3:ただし間接的であるので、Beamer の実装コード自体は dvipdfmx や dvips 等のドライバ指定オプションについて何も行わない。Beamer は内部で hyperref や PGF(pgfcore パッケージ)を読み込んでいて、実はドライバのオプションはこれらに対する「グローバルオプション」として効いている。

*4:第 5 版は 2010 年 8 月の発行。