#!/bin/sh
#\
exec tclsh "$0" "$@"

# Fußnoten-Aufgabe LinuxMagazin 2008-10
# Tcl-Lösung von Holger@Jakobs.com, getestet mit Tcl 8.4.16
# Die Fußnoten werden nach der Reihenfolge im Fußnotenbereich nummeriert.


# Konfiguration ###############################################

#set dateiname   "fussnoten.txt"
set dateiname   [lindex $argv 0]
set trennzeile  "@footnote:"


# Programm ####################################################

# Originaldatei einlesen
set f [open $dateiname]
set fContent [read $f]
close $f


# zerlegen in Text- und Fußnotenteil mittels regexp
if {![regexp "^(.*)\n$trennzeile\n(.*)$" $fContent - oText oFussnoten]} {
    puts stderr "Text enhält keine Fußnotentrenner-Zeile '$trennzeile'"
    exit 1
} ;# if
unset fContent ;# Speicherplatz freigeben


# Fußnoten-Nummern finden und in Liste ablegen
set fnNumbers [regexp -all -inline {\[[0-9]+\]} $oFussnoten]

# Mapping zusammenbauen
set nr 1
set mapping ""
foreach fn $fnNumbers {
    lappend mapping $fn
    lappend mapping "\[$nr\]"
    incr nr
} ;# foreach

# Anwenden des Mappings auf den Text
set nText [string map $mapping $oText]

# Anwenden des Mappings auf die Fußnoten
set nFussnoten [string map $mapping $oFussnoten]

puts "$nText\n$trennzeile\n$nFussnoten"

# ENDE
