回心誌

世の中わがんね

CygwinでvimでTeXのコンパイル

vimで論文を執筆しているのだが、TeXコンパイルを簡単にできないかと思った。
というのも、

platex exam.tex
bibtex exam.aux
platex exam.tex
platex exam.tex
dvipdf exam.dvi

という一連の処理を行ってようやくちゃんとしたPDFが作れるからだ。これは面倒くさい。一つのコマンドで全てできないか。
まず、 .bashrc をいじりたかったが、これをホームディレクトリに作っても機能しなかった。なぜ……? だが .bash_profile は機能した。どんな不都合があるのかよく分からないが、これで代用する。
aliasを利用して簡単にコンパイルできるようにしたかったが引数がうまく使えず、functionでできた。

funciton texcom(){
    platex $1.tex
    bibtex $1.aux
    platex $1.tex
    platex $1.tex
    dvipdf $1.dvi
}

これを.bash_profileに書き込むだけ。ついでに

export $THESIS="/cygdrive/c/Dropbox/Study/thesis"

とか適当に登録してみたり。

で、やってみたけど、これだけだとvimからは使えなかった……。なので .vimrc を編集。

command Texcom call s:Texcom()
function s:Texcom(){
    silent !platex %
    silent !bibtex %<.aux
    silent !platex %
    silent !platex %
    !dvipdf %<.dvi
}
  • %は編集中のファイルのパス、%<は拡張子を除去したものをそれぞれ意味していて、コンパイルなどのときに便利
  • silentは各処理の度に「続けるにはEnterを押すかコマンドを入力してください」と出るのを防ぐ
  • 自分で定義するコマンドは単語の頭を大文字にしないと怒られる

参考サイト

追記(2013-08-16)
色々あって*1、.vimrcは結局こうなった。

command Tex call s:Tex()
function s:Tex()
    write
    silent !platex %
    silent !bibtex %<.aux
    silent !platex %
    silent !platex %
    silent !dvipdf %<.dvi
    silent !startxwin
    silent !xpdf %<.pdf
    redraw!
endfunction