Party ParrotをTeX(PDF)で動かす #TeXで遊ぼう

どうもお久しゅうございます。Zweiglinieです。

今回は巷で噂のParty ParrotをPDFファイルで動かしてみました。もちろん使うのは\TeXです!!!なぜか私が作ることになってしまいました。なんででしょうかね~不思議ですね~

(おことわり:私は研究室時代にチョット\TeXをいじっただけのなんちゃって電気屋です。この記事は情報工学の専門的なことはともかく、ZweiglinieのメモみたいになっているんDA)

 

Party Parrotって何?

qiita.com

dic.nicovideo.jp

これ読んでおけば流行に至った経緯が分かります。(流行りものの記事は頻繁に編集されるニコニコ大百科のリンクを貼るのは避けたかったのですが、ちょうどいいサイトが見つかりませんでした…ちょうどいいのが見つかったら差し替えます)

参考にしたサイト

最初に参考文献を載せるのはどうかと思うものの、私が参考になったサイトを見る方が正しく早く理解できるでしょう。不運にもこの記事に辿り着いてしまった方は参考文献の閲覧をおすすめします。

 

acetaminophen.hatenablog.comやっていることはこちらの記事のほぼパクリです。是非とも読んでください。

 

higuma.github.ioImagemagickをインストールするために参考にした記事。

 

imagemagick.bizImagemagickを使用するにあたってコマンドを軽く理解するために日本語マニュアルが参考になりました。

 

www.imagemagick.orgImagemagickを起動する方法がようやくわかった記事。

 

http://ftp.yz.yamagata-u.ac.jp/pub/CTAN/macros/latex/contrib/animate/animate.pdf

animate.styのマニュアル(英語)。さらに色々といじってみたい人向け。

やり方

さて本題。\TeXを使ってPDFにGIF動画を埋め込む方法は大きく2段階あります。

  1. ImagemagickでGIF動画を複数の画像ファイルに分割する
  2. \TeXのanimate.styで分割した画像ファイルを統合する

なんとこれだけでGIF動画を埋め込めます!!!!やったね!!!

ImagemagickでGIF動画を画像ファイルに分割

インストール

まずImagemagickを使ったことがなかったので、インストールから始めていきます。

http://www.imagemagick.org/script/download.php#windows

上のリンクからダウンロードします。今回私は参考文献を鵜呑みしてImageMagick-7.0.10-7-Q16-x64-static.exe(Windowsのstatic版)をインストールしてみました。

GIF動画の分割

ImagemagickCUIベースなので、コマンドプロンプトを立ち上げます。[WIndows]+[R]で[cmd]+[Enter]で起動!!!

cdコマンドでpdfを作りたいディレクトリ(フォルダ)に移動します。

あ、使いたいGIF動画はpdfを作りたいディレクトリ(フォルダ)に予め移動しておきましょう。今回使うGIFはParrot.gifです。

f:id:Zweiglinie:20200423234640g:plain

図1 Parrot.gif

 

cdコマンドで移動したら下のコードをコマンドプロンプトに打ちます。

 

magick convert parrot.gif -coalesce parrot_%03d.png

magickはImagemagickを起動するコマンドです。parrot.gifの部分は分割するファイル名、parrot_%03d.pngは分割後のファイル名です。%03dとすることで分割後のファイルに3桁の通し番号が付与されます。\TeXでの処理を簡単にするべく、通し番号は必ずつけましょう。

蛇足

今回はGIF動画の分割後のファイル形式をPNGにしましたがJPGでも可能です。しかし、1コマ目以外が下図のように背景が黒くなってしまったので、今回は諦めました。

f:id:Zweiglinie:20200424001940j:plain

図2 背景が黒くなったParrot.jpg

TeXで分割した画像を統合

画像処理が終わったので\TeXを書いていきます。参考文献ではエンジンをp\LaTeXもしくはup\LaTeXを使用していますが、今回はLua\LaTeXを使用します。

texファイルの作成

私はTeXworksのような統合環境ではなく、コマンドプロンプトテキストエディタでPDFを作る面倒くさい野郎なので、コマンドプロンプトからtexファイルを作成します。

 

type nul > hoge.tex

これでhoge.texが作成されました。

texファイルの記述

texファイルでは以下のような記述をしました。

 

\documentclass[a4j]{ltjsarticle}
\usepackage[varg,cmintegrals,cmbraces]{newtxmath} %数式の書体
\usepackage{newtxtext}
\usepackage{graphicx} % 画像の出力
\usepackage{animate} %PNGとGIFの動画対応

\title{Party Parrot}
\author{Zweiglinie}

\begin{document}

\maketitle

\begin{abstract}
PARTY OR DIE
\end{abstract}

\section{Normal Parrot}

\animategraphics[autoplay,loop]{20}{parrot_}{000}{009}

\end{document}

Parrot.gifを貼り付けるだけならこれで十分になります。

タイプセット(コンパイル

コマンドプロンプトで下のコード打って終わり!簡単!

 

lualatex hoge

…遅い!Lua\LaTeXはタイプセットがp\LaTeXと比べて遅いので気長に待ちましょう。

成果物

タイプセットが成功するとhoge.pdfが生成されます。早速PDFを開きたいところですが、GIF動画はAdobe Acrobat Reader DCなどの一部のソフトでしか動きません。私は普段PDFをFireFoxで見ている偏屈野郎なのですが、FireFoxでも動きません。ChromeもEdgeもAdobe Reader Touchも動きません。リーダーがGIF動画に対応しているか確認してから成果物の確認をしましょう。

さて、GIFが動いている様を動画に収めてみたかったのですが、エラーが出たのでスクショで代用です。許し亭許して。

f:id:Zweiglinie:20200424202918p:plain

オウムがぐるぐるしているのが分かるだろう?

軽い解説

animate.styについて

GIF動画を\TeXでPDFに埋め込むためにはanimate.styとgraphicx.styが必須です。プリアンブル部で必ず記述しましょう。

参考文献では

\usepackage[dvipdfmx]{graphicx}
\usepackage[dvipdfmx]{animate}

と記述していますが、Lua\LaTeXではdvipdfmxを使用しないためオプションを省略しています。

\animategraphicsの使い方

\animategraphicsという命令(コマンド)は\animategraphics[<options>]{<frame rate>}{<file basename>}{<first>}{<last>}と構成されています。

options(オプション)はその名の通り様々な機能や命令を付け加えられます。autoplayはPDFを開いた時にGIFが動くようにするオプション、loopは最後の画像まで再生したら最初の画像に戻るオプションです。参考文献ではさらにGIF動画の高さやGIF動画のプレイヤーを付加しています(私は必要性を感じなかったため記述しませんでした)。他のオプションはマニュアルに書いてありますから、英語に自信のある方は読んで試してしてください。

frame rate(フレームレート)はfpsを設定します。10なら10 fpsで、1秒ごとに10フレームの設定になります。埋め込む分割した画像の枚数は一定なので、fpsを増やすとGIF動画が速くなります。つまり、馬鹿みたいな速さでpartyするparrotを簡単かつ詳細に作れます。たーのしー!!!!!!!!ちなみに20 fpsにすると本家と同等の速さになります。

file basenameは分割したファイルの基本的な名前です。ここで記述されたファイル名でないと当然ながら認識されません。だから、{parrot_}とアンダーバーまで記述する必要があったんですね。

firstは埋め込む最初の画像、lastは埋め込む最後の画像です。そのまんまですね。

他にも\animategraphicsの使い方があるようですが、省略します。マニュアル読んでね!!!!!!!!!!!!!!

書体について

\usepackage[varg,cmintegrals,cmbraces]{newtxmath} と\usepackage{newtxtext}はTimes系の英文書体(フォント)です。研究室時代の癖で使ってますが、GIF動画の埋め込みとは無関係です。人目気にするな自由に書体設定しよう

応用例

レポートっぽくしてみる

\TeXといえばレポートです。レポートに挿入した画像のような体裁にすることも可能です。\usepackage{float}を追加した上で 

\animategraphics[autoplay,loop]{20}{parrot_}{000}{009}

この部分のコードを

\begin{figure}[H]
	\animategraphics[autoplay,loop]{20}{parrot}{000}{009}
	\centering
	\caption{Parrot.gif}
	\label{Parrot}
\end{figure}

とすると

f:id:Zweiglinie:20200424233120p:plain

レポートっぽくなりました。

反省点・課題

LuaLaTeXが遅い

どうしようもない点です。clsファイルの知識を持っている訳でもないので、高速化するアイデアも全くありません。対策としては、

  • Lua\LaTeXを使うときは十分な時間を用意する
  • up\LaTeXを使う
  • タイプセットの回数を減らす
  • 性能の良いパソコンを用意する
  • Ryzen 3950Xを用意する
  • ファンレスのノートパソコンではなくミドルタワーのLEDが光るデスクトップパソコンを自作する

などの点が挙がります。余裕を持って\TeXで遊んでみましょう。なおup\LaTeXでタイプセットする際にはdvipdfmxを使用することに注意しましょう。

jpgで分割すると背景が黒くなる

Parrot.gifを埋め込むのを機に初めてImagemagickをいじったこともあってよく分からなかったです。多分もうImagemagickを使う機会はないでしょうから、特に気にすることはないかと思いますが…

英語が読めない

今まで勉強してこなかったツケだ一生かけて反省しろ

まとめ

いかがでしたでしょうか?なんとParrotを動かすことに成功しました!課題点もありますが、なんだかよく分かりませんでした。それではチャンネル登録をお願いします!!!!!!!!!!!!!!!!!!

以上がZweiglinieのメモ帳でした。ウッカリこの記事を開いてしまった不運な方は暇な時に是非とも\TeXで遊んでいってください。\TeXはPCなら無料!なんと無料!でダウウンロードできます!!!!やったね!

じゃあ俺、詳しいことは他の人に任せて、ギャラ貰って帰るから…

参考文献

Party Parrot とは 〜イカれたオウムの歴史を紐解く〜 - Qiita

Party Parrotとは (パーティーパロットとは) [単語記事] - ニコニコ大百科

PowerPointやPDFにいろいろなマルチメディアを埋め込む(1) - Acetaminophen’s diary

ImageMagick (1) インストール編 | I code therefore...

Imagemagickのコマンド | | Imagemagickの使い方日本語マニュアル

ImageMagick - Command-line Tools: Convert

http://ftp.yz.yamagata-u.ac.jp/pub/CTAN/macros/latex/contrib/animate/animate.pdf

Cult of the Party Parrot