Rake zum LaTeX kompilieren
Wer ein bisschen mit LaTeX zu tun hat, wird sicher sein Trio aus Tex, Makeindex und co. kennen.Die meisten IDE’s sind zwar schon flexibel und haben Build-Tools, aber ihr wisst ja: ‘Because I Can’.
Flo hat mich daher letztens noch auf ein sehr cooles Tool getippt: rake.
Einfach einen Rakefile in eurem Projekt anlegen und los gehts:
PROJECT_NAME = "thesis" namespace :dir do namespace :pyg do desc "Pygmentizes all files in the directory to latex" task :latex do Dir.glob('*.{rb,php,html}').each do |filename| puts "pygmentizing #{filename}" `pygmentize -f latex #{filename} > #{File.basename(filename, '.php') + '.tex'}` end end end namespace :dot do desc "Render all dot files to png files" task :png do Dir.glob('**/*.{dot,circo}').each do |filename| puts "Rendering #{filename} with ext: #{File.extname(filename)}" `dot #{filename} -Tpng -o #{filename}.png` if File.extname(filename) == '.dot' `circo #{filename} -Tpng -o #{filename}.png` if File.extname(filename) == '.circo' `sam2p -j:quiet #{filename}.png EPS:#{filename}.eps` `rm #{filename}.png` end end end end namespace :latex do task :all => [:index, :bib, :compile] desc "Counts words of main document" task :count do puts "#{`detex #{PROJECT_NAME} | wc -w`.strip} words in thesis" if (file = ENV["file"]) puts "#{`detex #{file} | wc -w`.strip} words in #{file}" end end desc "Generates the Index" task :index do puts "Generating Index for #{PROJECT_NAME}." `makeindex #{PROJECT_NAME}.nlo -s nomencl.ist -o #{PROJECT_NAME}.nls` end desc "Generating BibTeX" task :bib do puts "Generating BibTeX for #{PROJECT_NAME}." `bibtex #{PROJECT_NAME}` end desc "Compile LaTeX" task :compile do puts "Compiling #{PROJECT_NAME}." `latex #{PROJECT_NAME}` end desc "Generate PDF File" task :pdf do puts "Generating PDF for #{PROJECT_NAME}." `dvipdf #{PROJECT_NAME}.dvi` end end desc "Grep out the TODO's" task :todo do puts "\n** Whats left to do for #{PROJECT_NAME} **\n" puts `grep -n %TODO *.tex */*.tex` end desc "All (dot, tex, pdf)" task :default => ["dir:dot:png", "latex:all", "latex:pdf", "todo"]
Mit dem Rakefile in eurem Hauptarchiv habt ihr folgende Kommandos zur Verfügung:
rake - baut alles (Bilder, LaTeX, Pdf, Todo)
rake dir:dot:png - baut aus den .dot Dateien .eps Bilder
rake dir:pyg:latex - Kompiliert die Quellcodebeispiele zu Latex-Dateien
rake dir:bib - baut die Bibliografie neu
rake dir:index - baut den Index neu
rake dir:count - zählt Worte
rake dir:pdf - Lässt ein PDF raus
rake dir:bib - baut die Bibliografie neu
rake todo - gibt alle übrigen TODO’s aus.
Viel Spaß. Dank an Flo. Fragen an mich. (Oder in den Kommentaren an Skade.)








