TeX ドキュメントの作成過程を GIF アニメに変換する

Git でバージョン管理された $latex \TeX$ ドキュメントの作成過程を GIF アニメーションに変換するシェルスクリプト tex-to-gif を作成しました. この記事では tex-to-gif の使用例を簡単に紹介します.

準備

tex-to-gif を利用するためには以下の準備が必要です.

  • Bash・Git・ImageMagick を利用できること
  • TeX ドキュメントのコンパイルを簡単に (出来れば単一のコマンドで) 実行できること
    • latexmk や Make, OMake などを利用することを想定しています

使用例

この記事では ymyzk/tex-to-gif-example に公開している例を使って説明します. この例では,

  • TeX ドキュメントのファイルは document.tex
  • latexmk document.tex を実行してコンパイルする
  • 出力される PDF ファイルは document.pdf

という条件のプロジェクトで tex-to-gif を利用します. 使用例は以下のようになります.

git clone --recursive https://github.com/ymyzk/tex-to-gif-example.git
./tex-to-gif/tex-to-gif.sh \
  --tex-build 'latexmk document.tex' \
  --tex-pdf 'document.pdf' \
  --image-geometry '300x' \
  --image-tile '2x' \
  --animation-delay 20

実行の様子:

GIF アニメーションは animation.gif として出力されます:

tex-to-gif は以下のような動作を行います.

  1. Git リポジトリから対象となるコミットをリストアップする (デフォルトでは git rev-list --reverse master が使用されます. --tex-commits オプションで上書き可能)
  2. Git リポジトリのコミットを順にチェックアウトし
    1. --tex-build オプションで指定されたコマンドでドキュメントをコンパイルします
    2. --tex-pdf  オプションで指定された出力ファイルから, GIF 画像を生成します. このとき --image-geometry--image-tile で指定されたオプションをもとに, montage コマンドを使って複数ページの画像を結合した画像が生成されます. (この例では1ページの幅は300px, 横に2ページ分並べた画像を生成する.)
  3. 最後にすべての GIF ファイルを結合してアニメーション GIF ファイルを出力します. --animation-delay オプションでアニメーションのスピードを設定できます.

最後に

実用性はないスクリプトですが, 論文やレポート等のリポジトリで実行してみると面白いかもしれません. 念のため Git リポジトリをバックアップしてから実行することをおすすめします.