ぼちぼち散歩

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)

ページの先頭へ

トップページへ