Name Not Found

情報工学を学ぶ理系大学生の雑記

watchmanを使ってTexのコンパイルを自動化してみる

Texで文章を書く際に,いちいちコンパイルを行うのが面倒だったので自動化してみました.

今回は,facebookが提供しているwatchmanを使います.

github.com

watchmanとは

ファイルの変更を検知するツールで,ファイルの変更をトリガーとして何らかのアクションを起こすことが出来ます.

watchmanのインストール

Homebrewで手軽にインストールできます

brew install watchman

watchmanの使い方

今回の使い方で必要なのは次の1つだけです (watchmanのドキュメント->watchman | A file watching service)

watchman -- trigger [監視対象ディレクトリへのパス] [トリガ名] [監視するファイルのパターン] -- [実行するコマンド]

このコマンドで

  • [監視対象のディレクトリ]で変更が生じた場合,
  • 該当ファイルが[監視パターン]にマッチすれば
  • [コマンド]が実行

されます

(ここでの監視パターンはwatchman のSimple pattern syntaxのみが使用可能です https://facebook.github.io/watchman/docs/simple-query.html)

Texファイルを自動コンパイルする

まず,コンパイルを行うシェルスクリプトを書きます.(update.shとします)

platex foobar && dvipdfmx foobar

そして,watchmanでTexファイルを監視させるために以下のコマンドをtexファイルのあるディレクトリ内で実行します.

 watchman -- trigger ./ texbuild '*.tex' -- ./update.sh

これで,Texファイルの変更時にコンパイルが自動で行われるようになりました!

監視をやめる

triggerを解除してあげましょう

watchman trigger-del ./ texbuild

その他

コンパイルが終わったら自動的にビューワで開きたい

Macユーザであれば,シェルスクリプト

platex foobar && dvipdfmx foobar && open foobar.pdf

としてあげれば,自動的に開いてくれるはずです!

上の方法だといちいちフォーカス移ってだるい

仰るとおりです. Mac標準のプレビュー.appでは,フォーカスを当てないと再描画されないため,他の方法を考える必要があります...

Macには変更を検知して,再描画を行ってくれるPDFビューワがあるようなので,それを使うのもありかもしれません!

skim.softonic.jp

参考