LaTeXを手動でコンパイルするのめんどくさいですよね.

LaTeXのコンパイルを自動化するためには, OMakeを使う といった方法があります.OMakeは依存ファイルの更新を感知して自動でコンパイルを行ってくれます.

OMakeはBibTeXとかの依存関係を自動で判断してくれるので便利なんですが,簡単なレポートを書いてるときとかは,OMakefileとかOMakerootとか用意するのすらめんどくさいですよね.余分に管理するファイル増えちゃいますし.

そこで,以前作ったplatexpdf にファイルを監視して自動コンパイルするオプションを追加してみました.

使い方は,

$ platexpdf -w -- paper.tex

とすると,paper.texを監視します.他にも監視してほしいファイルがある場合には,

$ platexpdf -w paper1.tex -w paper2.tex paper1.tex

とすると,paper1.texとpaper2.texのどちらかに変更があれば,paper1.texをコンパイルします.

-w オプションには,ファイルもしくはディレクトリを指定できます.ディレクトリを指定した場合は,指定ディレクトリ以下を再帰的に監視します.監視ファイルを省略した場合は,コンパイル対象のファイルが指定されたとみなします.

インストール

Perlが動く環境が必要です. とりあえず,platexpdfをダウンロードしてきてパスの通ってるとこに置きます.

$ curl -O https://raw.github.com/fjyuu/platexpdf/master/platexpdf
$ chmod +x platexpdf
$ mv platexpdf ~/bin

普通に使うにはこれでいいのですが,-w オプションを使うためには, Filesys::Notify::Simple モジュールが必要です.

# cpanmがない場合はインストール(パッケージにcpanmがあればそれをインストール)
$ sudo curl -L http://cpanmin.us | perl - --sudo App::cpanminus

# Filesys::Notify::Simpleをインストール
$ sudo cpanm --sudo Filesys::Notify::Simple

デフォルトでは,Filesys::Notify::Simpleは数秒ごとにfindして更新を監視します.プラットフォームごとに以下のモジュールをインストールしておくことで,さらに効率的に監視することができます.

# Linux
$ sudo cpanm --sudo Linux::Inotify2

# OS X
$ sudo cpanm --sudo Mac::FSEvents
$ sudo cpanm --sudo Filesys::Notify::KQueue

# FreeBSD
$ sudo cpanm --sudo Filesys::Notify::KQueue