inicio mail me! sindicaci;ón

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.)

Diplom auf dem Bazaar schreiben


Klingt verwirrender als es ist.
Da ich die letzten Tage immer erst spät müde geworden bin, hab ich mir mal paar von den Google Tech Sessions angeschaut, um mich von den Vorteilen von DVCS zu überzeugen.

Hat nicht lange gedauert, da am Tag später bascht.com für 30 Stunden down war und ich nicht mehr an mein SVN Repo rangekommen bin, hab ich jetzt meinen ganzen Diplom Ordner genommen und bin zu Bazaar umgezogen. Was soll ich sagen? Bin 100% begeistert und will nicht mehr zurück.

Meinen Kram kann ich trotzdem zentral synchronisieren, aber ich bin nicht mehr angeschissen wenn mal ein Knoten ausfällt. Und ich schreib derzeit an 3 Rechnern abwechselnd, da kann man schnell aus dem Takt kommen, ohne VCS. Bazaar löst das traumhaft und mittlerweile mache ich fast schon lieber merges, als commits (was mir mit SVN niemals in den Sinn gekommen wäre…).

So sieht das ganze mit Olive aus (Meine Dipl-Arbeit auf 3 Rechnern):