LaTeXコンパイル用のRakefileを書いた
最初の$TARGETだけ対象とするhoge-resume.texの.tex抜いた名前に変更して使う。
rakeと叩くだけでうまいことやってくれる、と嬉しいなあ。
texファイルを読んで適当に依存関係を設定してるつもり。
あとbibtexファイルを置いてるディレクトリを環境変数BIBTEXDIRを設定しておくと、texファイル内で使ってる.bibファイルから現在のディレクトリにリンクを貼る。リンクサポートしてない環境ならコピーされるはず。
rake cleanで中間ファイルの削除、rake clobberで生成したもの全部削除。rake -Tで可能なことが表示されます。
codereposに上げておいた
http://coderepos.org/share/browser/lang/ruby/misc/rake_template/Rakefile-latex
$TARGET = "hoge-resume" def tex_dep(texname) inputs = [texname] resources = [] bibs = [] while !inputs.empty? resources << (input = inputs.shift) File.open(input){|file| file.each_line{|line| if /\\input\{(.+)\}/ =~ line inputs << $1 elsif /\\(?:verbatiminput|includegraphics\[.+\])\{(.+)\}/ =~ line resources << $1 elsif /\\bibliography\{(.+)\}/ =~ line bibs += $1.split(",").map{|x| "#{x}.bib"} end } } end [resources, bibs] end $TEXNAME = "#$TARGET.tex" $DVINAME = "#$TARGET.dvi" $PDFNAME = "#$TARGET.pdf" $PSNAME = "#$TARGET.ps" $TEX = "platex" $BIB = "jbibtex" $DVIPS = "dvips" $DVIPDF = "dvipdfmx" $BIBTEXDIR = ENV["BIBTEXDIR"] $RESOURCES,$BIBS = tex_dep($TEXNAME) desc "Compile LaTeX -> DVI" task :default => $DVINAME desc "Compile DVI -> PDF" task :pdf => $PDFNAME desc "Compile DVI -> PS" task :ps => $PSNAME desc "Print Depends Information" task :dep do puts "#$DVINAME: #{($RESOURCES+$BIBS).join(" ")}" puts "#$PDFNAME: #$DVINAME" puts "#$PSNAME: #$DVINAME" end require "rake/clean" CLEAN.include(%w[aux toc lot lof log bbl blg bib].map{|x|"*.#{x}"}) CLOBBER.include([$DVINAME, $PDFNAME, $PSNAME]) def texcompile sh "#$TEX #$TARGET" if !$BIBS.empty? sh "#$BIB #$TARGET" end sh "#$TEX #$TARGET" sh "#$TEX #$TARGET" end desc "Force Compile LaTeX -> DVI" task :force do texcompile end file $DVINAME => ($RESOURCES+$BIBS) do texcompile end file $PDFNAME => $DVINAME do sh "#$DVIPDF #$DVINAME" end file $PSNAME => $DVINAME do sh "#$DVIS #$DVINAME" end rule ".bib" do |bib| ln "#$BIBTEXDIR/#{bib}", "." end # vim: set ft=ruby sw=4 ts=4 et: