#!/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 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