#!/usr/bin/env ruby fnmap = Hash.new # Uebersetzung alter Index --> neuer Index fndir = Hash.new # Neuer Index --> Fussnotentext footnote_number = 1 # aktuelle Fussnote, 0 wenn im Fussnotenbereich File.open(ARGV[0]) do |file| while line = file.gets if line == "@footnote:\n" footnote_number = 0 else if footnote_number == 0 # Wir sind im Fussnoten-Bereich line.scan(/^(\[\d+\]) (.*)/) do |idx,text| fndir[fnmap[idx]] = text fnmap.delete(idx) # wichtig fuer Memory-Verbrauch! end else # Wir sind im Text-Bereich line.gsub!(/\[\d+\]/) do |idx| if not fnmap.has_key?(idx) fnmap[idx] = "[#{footnote_number}]" footnote_number += 1 end fnmap[idx] end print line end end end # Jetzt geben wir die Fussnoten aus print "\nFussnoten:\n" for i in 1..fndir.size k="[#{i}]" if fndir.has_key?(k) print "#{k} #{fndir[k]}\n" else print "#{k} \n" end end end