MacでTeXShop + VimのTeX環境を作ってみた
MacにおけるTeXおよびTeXShopについてはBeginning OS Xの該当部分にお任せさせて頂くことにする.TeXShopは「環境設定」の「書類」>「外部エディタでソースを編集」にチェックを入れることによって,TeXShopのエディタは開かずにコンパイル部分だけ使うことができるので,エディタにはVimを使ってVimからTeXShopのコマンドを呼ぶ方法を考えてみた.
Macと言えばAppleScriptによる自動化で,Vimと言えばRubyインタフェースということで,RubyOSAを使えばなんとかなるのではないかということでやってみた.RubyOSAはAppleScriptをRubyから呼び出すためのライブラリで,sudo gem install rubyosa とかすればインストールすることができる.
RubyOSAをインストールするとrdoc-osaというコマンドがついてきて,rdoc-osa --name TeXShopとかすると,カレンドディレクトリにOSA::TeXShopモジュールのドキュメントを生成してくれるので,それを頼りになんとかする.他にもAppleScriptインタフェースを備えたアプリケーションなら自動的にクラスを生成してくれるようなので,Vim > RubyOSA > AppleScriptと繋げることである程度色んなアプリケーションを操作できそう.
そして,試行錯誤の末に作ってみたのが以下のスクリプト.
function! TexShop_TypeSet()
if has('ruby') && has('mac')
ruby <<EOF
require 'rubygems'
require 'rbosa'
texshop = OSA.app("TeXShop")
texshop.documents.each {|d|
texshop.typesetinteractive(d)
}
EOF
endif
endfunction
function! TexShop_Activate()
if has('ruby') && has('mac')
ruby <<EOF
require 'rubygems'
require 'rbosa'
OSA.app("TeXShop").activate
OSA.app("iTerm").activate
EOF
endif
endfunction
command! TeXShopTypeset silent call TexShop_TypeSet()
command! TeXShopActivate silent call TexShop_Activate()
autocmd FileType tex noremap ,t :TeXShopTypeset<CR>
autocmd FileType tex noremap ,a :TeXShopActivate<CR>
以上を.vimrcとかに書いておくと,VimがTeXモードのときに,tでタイプセットを行う.TeXShopのPDF表示がTeXShopがアクティブじゃないと更新されなかったので,,aで一瞬TeXShopをアクティブにしてからiTermに戻ってくるようにしてみた.無理矢理感満載な感じやけど,とりあえず動いたのでこれで良いことにしておく.iTermじゃない人は,iTermのところをTerminalやMacVimに変えてもたぶん動くと思う.
ちなみに以前にRubyOSAでSafariをリロードする方法が紹介されていて,全面的にこの方法にヒントをもらって実装しました.ありがとうございました!
2008/06/07 03:17 | Mac | トラックバック(0) | コメント(3)