TeXを監視して自動コンパイルする
2015-01-05
QiitaRubyTeXruby のguard/guardを使ってファイルの変更を監視して、 裏で自動コンパイルする
準備
まずguard
をインストールする
以下の様な Gemfile を用意する
source 'http://rubygems.org'
gem 'guard'
gem 'guard-shell'
gem 'rb-readline'
gem 'rb-inotify'
そして
# gem install bundle
bundle install
でguard
などをインストールする
ファイルの監視およびコンパイルの設定
まずguard
の初期設定をする
bundle exec guard init
すると Guardfile が作成される これを以下の様に書き換える
guardfile
guard :shell do
watch(/(.*).tex/) {|m|
`platex -interaction=nonstopmode #{m[1]}`
`dvipdfmx #{m[1]}`
`open -g -a Preview #{m[1]}.pdf`
}
end
これで、tex ファイルに変更があればplatex
とdvipdfmx
で pdf ファイルに変換し、バックグラウンドの Preview.app で開くようになる
なお、Preview.app にフォーカスをあてないと変更が可視化されないので注意
やや無理矢理な解決策としては
guardfile
guard :shell do
watch(/(.*).tex/) {|m|
`platex -interaction=nonstopmode #{m[1]}`
`dvipdfmx #{m[1]}`
`open -a Preview #{m[1]}.pdf`
`open -a TexShop`
}
end
とすることで一度 Preview.app にフォーカスをあててから再度 TexShop.app にフォーカスをあてることが出来るため、 Preview.app も更新されつつフォーカスは(一瞬奪われるが)TexShop に保つことが出来る
追記(2015/01/05 17:25)
Skimという PDF ビューワーには ファイルの変更を検知して表示を更新してくれる機能があるので、これを使えば
guardfile
guard :shell do
watch(/(.*).tex/) {|m|
`platex -interaction=nonstopmode #{m[1]}`
`dvipdfmx #{m[1]}`
`open -g -a Skim #{m[1]}.pdf`
}
end
とすればフォーカスを奪われることなく表示の更新ができて便利でした
from: https://qiita.com/petitviolet/items/f4ee19aeb612617e5108