読者です 読者をやめる 読者になる 読者になる

Acetaminophen’s diary

化学に関すること,TeXに関すること,ゆきだるまに関すること。

PowerPointやPDFにいろいろなマルチメディアを埋め込む(2)

前回からの企画で、今回は動画や音声。

 

動画や音声の挿入:PowerPoint の場合

これも問題ないだろう。Windows なら挿入リボンで「ビデオ」を選択する。Mac ではホームリボンで「挿入」からムービーを選択するか、単にドラッグアンドドロップでも問題ない。

 

動画や音声の挿入:PDF の場合(TeX 不使用)

Foxit J-Reader という高機能な PDF ビューアを利用する。ただし Windows 専用である。

  1. メニューから「編集」→「挿入」→「ビデオとサウンド」を選択

    f:id:acetaminophen:20140913123102p:plain

  2. ポインタが十字に変わるので動画を挿入したい領域をドラッグして選択し、ファイル選択ダイアログから好きなファイルを選択する。「ポスター画像を使用」すると、再生していない時に表示される画像を設定できる。

    f:id:acetaminophen:20140913123125p:plain

  3. あとは名前を付けて保存する。

これで、動画が埋め込まれた PDF ファイルが生成する。Adobe Reader で開くと、クリックで動画が再生される。サンプルはこちら (GitHub)

 

動画や音声の挿入:PDF の場合(TeX 使用)

media9 パッケージを用いるとよい…はずだが、実際の使用例がなかなか見つからず、しかも dvipdfmx で通りそうになかったので僕はまだ使ったことがない。時間があればマニュアルを読んでみようと思うが、今回は他のサイトで紹介されているように media9 の前身である movie15 パッケージを用いる。

とはいっても、普通にパッケージを使う方法が失敗してしまったので、movie15 にパッチを当てたもの(?)である「movie15_dvipdfmx.sty」を用いる*1

補足:2014-11-28 新たな情報を掲載した以下も参照。

 

まず、こちらのページを参考に、asymptote パッケージの古いバージョン2.16の source を取ってくる:

展開すると、patches ディレクトリに movie15_dvipdfmx.sty が入っている(これより新しい version からは消されているので要注意)ので、これから書く LaTeX ソースと同じフォルダに movie15_dvipdfmx.sty を置く。

LaTeX ソースには、以下のように記述する:

プリアンブル部*2

\usepackage[dvipdfmx]{hyperref} % \movieref を使う場合に必要
\usepackage[dvipdfmx]{movie15_dvipdfmx}

本文:

\includemovie[label=hikone]{80mm}{60mm}{movie1501.mp4}

書式は \includemovie[<options>]{<width>}{<height>}{<filename>} である。オプションに上のように label= と指定すると、別の場所で \movieref コマンドによって以下のように再生や停止をコントロールできる(ただしこの場合 hyperref パッケージも必要)。

\movieref{hikone}{再生} %オプションなしでは「再生」となる
\movieref[pause]{hikone}{一時停止/再生} %オプションを pause とするとクリックのたびに「一時停止」と「再生」が切り替わる
\movieref[stop]{hikone}{停止} %オプションを stop とすると「停止」

また、 \includemovie のオプションで poster=hoge.png と指定すれば、動画や音声を再生していない時に表示する画像を hoge.png に指定できる。

これを platex + dvipdfmx で処理すると、Adobe Reader で開いて動画部分をクリックすると再生する。サンプルはやっぱりこちら (GitHub)

もし movie15 パッケージで対応していない動画フォーマットであった場合は、ffmpeg を使って変換すれば問題ない。これに関しては後日記事にする。

備考:jsarticle クラスで失敗する場合に、以下のメッセージが出ることがある。

(c:/w32tex/share/texmf-dist/tex/latex/oberdiek/ifdraft.sty
! LaTeX Error: Command \ifdraft already defined.
               Or name \end... illegal, see p.192 of the manual.
See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.

この場合 \ifdraft というコマンドの重複定義が問題なので、一つの方法として「ifdraft.sty を書き換える」が挙げられる。本記事のコメント欄に従うと、僕の環境では kpsewhich 検索により

$ kpsewhich ifdraft.sty
c:/w32tex/share/texmf-dist/tex/latex/oberdiek/ifdraft.sty

に ifdraft.sty が見つかるので、この中の \newcommand*{\ifdraft}{% という行を \def\ifdraft{% に書き換えることになる。しかし、より安全な方法はこちらを参照。

 

次回からはあまりこれまで他の記事で扱われていない 3D モデルを扱う。

おまけ:ちなみに、UTaisaku-Web というサイトに公開されている

は、実は僕が animate パッケージと movie15_dvipdfmx を用いて W32TeXplatex + dvipdfmx で作ったものだ。初版は Word で PDF を出力したのち Foxit J-Reader で動画を貼り付けていたが、改版に伴い TeX に変更し、さらに movie15_dvipdfmx を使い、最新第4版は animate パッケージも用いることにした。

*1:熊澤さんのパッケージ紹介を参考にしようと思ったが、実際にタイプセットしてみるとエラーで失敗する。具体的には platex で処理する段階で

Use of \pdfmdfivesum doesn't match its definition.

というエラーが出る。これは

と同じ症状のようだ。

*2:なんらかの事情で hyperref を movie15 より後にしなければならない場合でも、少なくとも pdftexcmds パッケージだけは movie15 より前に読み込む必要がある。