#!/bin/sh
#\
exec tclsh "$0" "$@"
# Fußnoten-Aufgabe LinuxMagazin 2008-10
# Tcl-Lösung von
[email protected], getestet mit Tcl 8.4.16
# Die Fußnoten werden nach der Reihenfolge im Fußnotenbereich nummeriert.
# Konfiguration ###############################################
set dateiname "fussnoten.txt"
set trennzeile "@footnote:"
# Programm ####################################################
# Originaldatei einlesen
set f [open fussnoten.txt]
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