1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
#!/bin/ksh
#!/bin/ksh
# Erzeugung Tortendiagramm als LaTeXdraw-Datei
# Information, die nachfolgend in einer Zeile, muss auch in der
# Eingabe-Datei in einer Zeile sein
# Trennzeichen zwischen Eingabeeinheiten in einer Zeile ist der Zwischenraum
# Falls nur eine Einheit in einer Zeile verlangt wird, koennen auch
# Zwischenraeume in der Einheit sein
# Eingabe ueber stdin, Ausgabe ueber stdout
# Leerzeilen werden ueberlesen
# Kommentarzeilen (mit # oder % beginnend) werden ueberlesen
# stdin: unterschrift
# text1 wert1
# text2 wert2
# usw
# falls Schluesselwort farbig allein in Zeile auftritt
# wird farbiges Diagramm erzeugt
# falls Schluesselwort Folie allein in Zeile auftritt,
# wird die Schrift als 18pt-Schrift erzeugt
# (Makro \FXVIIIpt)
# falls Schluesselwort Anmerkung allein in einer Zeile
# auftritt, werden alle folgenden Zeilen als Anmerkungen
# betrachtet und nach der Bildunterschrift zeilenweise
# ausgegeben
# stdout:LaTeXdraw-Datei, die in latexdraw eingelesen werden kann
# Stand 6.3.96 Siegert
# Dimension ggf durch xpixel und ypixel aendern
# Farben durch andere Zuweisung von Werten an farbe[] aenderbar
# Farbnummern aus LaTeXdraw
# Farben spaeter auch durch chatt in LaTeXdraw aenderbar
# Farben werden im Diagramm ggf. zyklisch wiederholt
awk 'BEGIN{rpixel=125; rmm=40; xmpixel = 500; ympixel = 300;
schwarz=0;grau90=2;grau80=3;grau70=4;grau60=5;
grau50=6;grau40=7;grau30=8;grau20=9; grau10=10;
rot=11; gruen=29; blau=33; magenta=36;orange=27;
gelb=15; cyan=32; hellgruen=44; hellblau=52;
farbe[1]=schwarz;farbe[2]=grau80;farbe[3]=grau60;
farbe[4]=grau40;farbe[5]=grau20;farbe[6]=grau90;
farbe[7]=grau70;farbe[8]=grau50;farbe[9]=grau30;
farbe[10]=grau10;
anzfarben=10;
farbe[11]=gruen;farbe[12]=blau;farbe[13]=rot;
farbe[14]=magenta;farbe[15]=orange;farbe[16]=cyan;
farbe[17]=hellgruen;farbe[18]=hellblau;
farbe[19]=gelb;
anzffarben=9;
summe=0; unterschrift=""; schrift=1; i=0;
anzanm=0; istanmerkung = 0; }
{if (NF==0) next;
if (substr($0,1,1)=="#") next;
if (substr($0,1,1)=="%") next;
if (istanmerkung == 1) {anzanm++; anmerkung[anzanm]=$0; next;}
if ((NF==1)&&($1=="farbig")) {
for (k=1;k<=anzffarben;k++) farbe[k]=farbe[k+anzfarben];
anzfarben=anzffarben; next;}
if ((NF==1)&&($1=="folie")) {schrift=6; next;}
if ((NF==1)&&($1=="Folie")) {schrift=6; next;}
if ((NF==1)&&(substr($1,1,9)=="Anmerkung")) {
istanmerkung = 1; next;}
if ((NF==1)&&(substr($1,1,9)=="anmerkung")) {
istanmerkung = 1; next;}
if (i==0) {unterschrift = $0; i++; next; }
gruppe[i] = $1; wert[i] = $2; i++; summe = summe + $2; }
END{ wend=900;
xupixel = xmpixel-1.4*rpixel; yupixel = ympixel-1.6*rpixel;
print "LaTeXdraw (Siegert, TUM, C14.14)Digi";
printf(" %.3f (TEXFAKTOR) \n", rmm/rpixel );
print " 2.00000E+00 (TEXDASHLAENGE)";
print " 1.80000E+00 (TEXDOTGAP)";
print " 8.00000E-01 (TEXINTERDOTGAP)";
print " 16.667 16.667 562.800 295.000 1.000 0.000 0.000 1.000 (GITTERWERTE)";
print " 446 295 547 411 101 116 160 240 1 1 (AUSGABEOPTIONEN)";
m = 1;
for (k=1;k<i;k++) {
wanf=wend-wert[k]*3600/summe;
if (wanf<0) wanf += 3600;
printf("15 %s %s 0 0 0 0 0 0 %.3f %.3f %d01 0 1 %s %s 0.000 \n", \
xmpixel,ympixel,wanf,wend,farbe[m],rpixel,rpixel);
dw = (wend-wanf);
if (dw < 0) dw +=3600;
wmittel = wanf+dw/2.0;
if (wmittel >= 3600) wmittel -= 3600;
vzc = 1; vzs = 1; tausch = -1;
if (wmittel >=1800) {wmittel -= 1800; vzc = -1; vzs = -1;}
if (wmittel >=900) {wmittel -= 900; tausch = -tausch;
x = vzc; vzc = vzs; vzs = -x;}
if (wmittel >450) {wmittel = 900-wmittel; tausch = -tausch;
x = vzc; vzc = vzs; vzs = x;}
wmittel = wmittel/1800*3.14159;
wq=wmittel*wmittel;
sini = vzs*(wmittel*(1-wq/6*(1-wq/20*(1-wq/42*(1-wq/72)))));
cosi = vzc*(1-wq/2*(1-wq/12*(1-wq/30*(1-wq/56))));
if (tausch >0) {x=cosi; cosi = sini; sini = x;}
xtpixel = xmpixel+1.2*rpixel*cosi;
ytpixel = ympixel+1.2*rpixel*sini;
richtung=" 4 0 ";
if (xtpixel < xmpixel) richtung = " 9 2 ";
printf("2 %s %s 0 0 0 0 0 0 0 3600 1 2 %d %s 0 \n", \
xtpixel,ytpixel, schrift, richtung);
printf("%2.1f\%% %s\n", wert[k]/summe*100, gruppe[k]);
wend=wanf;
m++;
if (m>anzfarben) m -= anzfarben;
}
printf("2 %s %s 0 0 0 0 0 0 0 3600 1 2 %d 4 0 0 \n", \
xupixel,yupixel,schrift);
print unterschrift;
dy =20;
yakt=yupixel-dy/2;
for (j=1;j<=anzanm;j++) {
yakt -= dy;
printf("2 %.3f %.3f 0 0 0 0 0 0 0 3600 1 2 %d 4 0 0 \n", \
xupixel,yakt,schrift);
print anmerkung[j]; }
print "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ";
print "0 ";
print "0 0 ";
print ;
}'
|