#!/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= 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 ; }'