バックグラウンドのプレビュー.appを更新する方法

プレビューもPDFファイルが更新された時にバックグラウンドで再読み込みすると思っていたけど、それは勘違いだった
そして、こちらにこの方法が紹介されているのを見つけた。

追記:以下の方法ではPDFの最初のページが開かれてしまう。最初に動作を確認した時は、表示しているページを保ったまま更新すると思っていたけど勘違いだった。ここにも毎回先頭にジャンプすることに対する不満が書かれていた。Preview の環境設定に"Start on the last viewed page"という項目があり、これにチェックをいれると一度終了して再度開くときに前に見ていたページを開く。しかし、既に開いているPDFファイルをもう一度 open(またはクリック)すると最初のページが開かれてしまう。このチェックが入っていたら、開いているページをキープしてくれても良いように思う(バグだろうか?)。


OSX の open コマンドは「open ファイル名」でファイルをクリックするのと同じことをコマンドラインから行える。オプション -a で開くアプリケーションを指定することもできる。これにはさらに -g というオプションがあり、ウインドウを前面にせずにファイルをアプリケーションで開くことができる。

$ open -g -a Preview foo.pdf

以下のようなスクリプトを、~/bin/pdflatex-preview などとして用意すれば、YaTeXコンパイル&バックグラウンドでのプレビューが同時にできる。

#!/bin/sh
command="pdflatex"
#command="/usr/local/texlive/2010/bin/x86_64-darwin/pdflatex"
bn=`basename $1 .tex`
$command $1 && open -g -a Preview $bn.pdf

(実行権限を与えることを忘れない。 $chmod +x pdflatex-preview

yatextex-command をスクリプトにする。コマンド+Bなどのショートカットを定義しておくと便利。

(setq tex-command "~/bin/pdflatex-preview")
(add-hook 
 'yatex-mode-hook
 '(lambda() 
    (require 'yatexprc)
    (local-set-key [(s b)] 'YaTeX-typeset-buffer)
    (local-set-key [(s r)] 'YaTeX-preview)))