annotate DESpecs/skripte/create_overview_text.pl @ 15:616f0379a3a0

Skripte
author Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
date Thu, 02 May 2013 11:50:41 +0200
parents
children 6fa5e8c4e0dd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
15
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
1 #!/usr/bin/perl -w
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
2 use strict;
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
3 use warnings;
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
4
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
5 #
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
6 # create_overview_text.pl
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
7 #
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
8 # Wolfgang Schmidle, 2008-10-04
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
9 #
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
10
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
11
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
12 my @datei;
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
13
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
14 while (<>)
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
15 {
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
16 push @datei, $_;
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
17 }
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
18
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
19
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
20 # Bestimme die neuen Dateinamen:
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
21 # Aus "dateiname.tex" wird "dateiname_overview.tex".
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
22 # Wenn der alte Dateiname nicht auf ".tex" endet, wird einfach "_neu.tex" angehängt.
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
23
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
24 $_ = $ARGV;
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
25 /^(.+?)(\.TEX|\.tex)?$/;
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
26 my $neuerDateiname = "$1_overview.tex";
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
27
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
28
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
29 my @neueDatei;
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
30
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
31 my $sollweg = 0;
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
32 my $leerzeile = 0;
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
33
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
34 my $unwichtig = ' mainruleLessImportant clarification note ';
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
35 $unwichtig .= ' example exampleTest sampleImage smallSampleImage ';
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
36 $unwichtig .= ' crossref exception ';
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
37 $unwichtig .= ' tabelle liste ';
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
38
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
39 foreach (@datei)
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
40 {
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
41 next if (/^%/ && !(/%!TEX/)); # remove comment lines, keep the header lines,
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
42 s/\.tex/_overview.tex/; # but add _overview to the reference
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
43
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
44 next if /^\\vspace/;
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
45 next if /^\\tocspace/;
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
46
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
47 # remove all unwanted enviromnents, e.g. clarification
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
48 if (/\\begin\{(.+?)\}/)
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
49 {
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
50 if ($unwichtig =~ / $1 /) { $sollweg = 1; }
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
51 }
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
52 unless ($sollweg)
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
53 {
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
54 if (/^ *$/) { $leerzeile++; } else { $leerzeile = 0; }
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
55 push @neueDatei, $_ unless $leerzeile > 1;
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
56 }
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
57 if (/\\end\{(.+?)\}/)
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
58 {
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
59 if ($unwichtig =~ / $1 /) { $sollweg = 0; }
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
60 }
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
61 }
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
62
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
63 for my $i (0..$#neueDatei-2)
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
64 {
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
65 my $offset = 2;
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
66 $_ = $neueDatei[$i+1];
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
67 if (/\\label/) { $offset++; }
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
68
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
69 $_ = $neueDatei[$i];
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
70 if (/\\section/)
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
71 {
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
72 $_ = $neueDatei[$i+$offset];
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
73 if (/^ *$/ || /\\section/)
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
74 {
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
75 $neueDatei[$i] =~ s/\{(.+?)\}/\{($1)\}/;
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
76 }
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
77 }
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
78 else
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
79 {
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
80 if (/\\subsection/)
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
81 {
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
82 $_ = $neueDatei[$i+$offset];
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
83 if (/^ *$/ || /\\section/ || /\\subsection/)
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
84 {
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
85 $neueDatei[$i] =~ s/\{(.+?)\}/\{($1)\}/;
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
86 }
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
87 }
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
88 else
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
89 {
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
90 if (/\\subsubsection/)
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
91 {
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
92 $_ = $neueDatei[$i+$offset];
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
93 if (/^ *$/ || /\\section/ || /\\subsection/ || /\\subsubsection/)
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
94 {
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
95 $neueDatei[$i] =~ s/\{(.+?)\}/\{($1)\}/;
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
96 }
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
97 }
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
98 }
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
99 }
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
100 }
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
101
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
102 # Schreibe das Ergebnis in die Datei $neuerDateiname im gleichen Verzeichnis wie die alte Datei.
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
103 # Eine bereits vorhandene Datei mit gleichem Namen wird ohne Warnung überschrieben.
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
104
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
105 open (NEUEDATEI, ">$neuerDateiname");
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
106 print NEUEDATEI @neueDatei;
616f0379a3a0 Skripte
Klaus Thoden <kthoden@mpiwg-berlin.mpg.de>
parents:
diff changeset
107 close (NEUEDATEI);