TeXをrake

 TeXでレポート書くのが意外と面倒なので困ってますが、そんなに遠くない将来にお世話になるので練習って感じで使ってます。面倒な事のひとつがコマンド叩いてpdfに仕上げる作業。少しでも楽ししたかったのでRakefile作りました。あくまで「簡単なレポート」用だったりします。

require 'rake/clean'

TEX_NAME = "book"
TEX = "platex-utf8 -interaction=batchmode"
DVIPDF = "dvipdfmx"
EBB = "ebb"

CLEAN.include(%w[log aux dvi pdf bb].map{|x|"**/*.#{x}"})
PICTURE = FileList[%w[png jpg jpeg gif].map{|x|"**/*.#{x}"}]
BB_FILE = PICTURE.ext('bb')

task :default => ['bb', 'pdf']
task 'pdf' => "#{TEX_NAME}.pdf"
task 'bb' => BB_FILE

task 'open' => "#{TEX_NAME}.pdf" do
  sh "open #{TEX_NAME}.pdf"
end



rule "#{TEX_NAME}.dvi" => "#{TEX_NAME}.tex" do |t|
  sh "#{TEX} #{t.prerequisites}"
  sh "#{TEX} #{t.prerequisites}"
end

rule "#{TEX_NAME}.pdf" => "#{TEX_NAME}.dvi" do |t|
  sh "#{DVIPDF} #{t.prerequisites}"
end

rule '.bb' => '.png' do |t|
  sh "#{EBB} #{t.source}"
end

 book.texってファイルをbook.pdfに仕上げてくれます。pngはとりあえず何もしなくても貼り付けられるようになってます。*1
 とは言ってもこのままだと結局いちいちrakeしないといけないので、.vimrcに

autocmd MyAutoCmd BufWritePost *.tex silent! execute "silent !rake >/dev/null 2>&1"

とか入れて置くとtexファイルを保存したときに自動でrakeしてくれるので一応楽になりました。このRakefileを温めて行きたいですね。そういえば前に書いた図はどうするかって話は最近提出したレポートではスキャンして貼りました。個人的に納得してないのでもうちょっと吟味が必要です。

*1:自分がまだpngしか扱わなかったのでいじってないだけですが