Added legacy script
[amuse-wiki:amuse-wiki.git] / utils / tal-fix-footnotes.pl
1 #!/usr/bin/perl -w
2 # Public domain. Please report errors, patches, suggestions to 
3 # marco at angrynerds.com
4 # Some tests and initial variables
5 #
6
7 $filename = $ARGV[0] || die "Please pass a file.xml as argument\n\n";
8 -e $filename || die "$filename does not exists\n\n";
9 -T $filename || die "$filename doesn't look as a text file, exiting\n\n";
10 $outputfile = $filename . "fixed" ; 
11 print "Processing $filename, I'll output on $outputfile\n Please double check the result\n";
12
13 # print "output in $TEXDIRECTORY and $PDFDIRECTORY\n";
14 ## read the file and put it in 3 array: @header, @body, @fnotes
15 open(IN, "< $filename")  || die "I cannot open $filename, why?\n\n";
16
17 # read the file.
18 $footnotemark = "ThisIsAFuckingFootNote";
19 $fn_counter = 1; 
20 $body_fn_counter = 1;
21 while ($r = <IN>) {
22         if ($r =~ m/^\s*\[\d+\]\s*/) {
23                 $r =~ s/^\s*\[\d+\]/[$fn_counter]/;
24                 # debug
25                 # print $r; 
26                 push @fnotes, $r;
27                 $fn_counter++;
28                 # the footnotes at the end go in a separate array, with the <a ready>
29         }
30         # the rest go in the body
31         else {
32                 while ( $r =~ m/\[\d{1,4}]/ ) {
33                 $r =~ s/\[\d{1,4}\]/$footnotemark$body_fn_counter$footnotemark/ ;
34                 $body_fn_counter++  ;
35                 # debug 
36                 # print $body_fn_counter ;
37                 }
38                 $r =~ s/$footnotemark(\d{1,4})$footnotemark/[$1]/g ; 
39                 push @orig_body, $r; 
40         }
41 }
42 close(IN);      
43
44 # write the body file
45 open(DEST, "> $outputfile") || die "I cannot open $outputfile, why?\n\n";
46
47 while (@orig_body) {
48         $r = shift @orig_body;
49         print DEST "$r"; 
50 }
51 while (@fnotes) {
52         $r = shift @fnotes ;
53         print DEST "$r\n";
54 }
55 close(DEST);