From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- support/latexdraw/bin/latex2epc | 436 +++++++++++++++++++++++++++++++++ support/latexdraw/bin/ldstapeldiagramm | 190 ++++++++++++++ support/latexdraw/bin/ldtortendiagramm | 129 ++++++++++ 3 files changed, 755 insertions(+) create mode 100755 support/latexdraw/bin/latex2epc create mode 100755 support/latexdraw/bin/ldstapeldiagramm create mode 100755 support/latexdraw/bin/ldtortendiagramm (limited to 'support/latexdraw/bin') diff --git a/support/latexdraw/bin/latex2epc b/support/latexdraw/bin/latex2epc new file mode 100755 index 0000000000..3837202e68 --- /dev/null +++ b/support/latexdraw/bin/latex2epc @@ -0,0 +1,436 @@ +#!/usr/local/dist/bin/perl +# +# **************************************************************** +# LaTeX-Datei, die von latexdraw erzeugt, +# zurueckwandeln in interne LaTeXdraw-Datei +# **************************************************************** +# Stand 23.5.1997 Siegert +# 1. Parameter: Name der vorhandenen latex-Datei +# 2. Parameter: Name der erzeugten latexdraw-Datei + +$zahl = "([0-9.+-]*)"; +$xy = "\\($zahl,$zahl\\)"; +$klzahl = "\\{$zahl\\}"; +$optzahl = "\\[$zahl\\]"; +$star = "\\*"; +$fontbez = "\\\\(F[XVIbi]*pt) "; +$unitlength = "\\\\setlength{\\\\unitlength}{$zahl"; +$bdoc = "\\\\begin{document}"; +$bpic = "\\\\begin{picture}$xy"; + +$ldlinew = "\\\\ldlinewidth$klzahl$klzahl"; +$put = "\\\\put$xy"; +$putc = "\\\\putc$xy$klzahl"; +$rput = "\\\\rput$optzahl$xy"; +$rputc = "\\\\rputc$optzahl$xy$klzahl"; + +$line = "\\\\ldline$xy$xy"; +$line2 = "\\\\ldline$optzahl$xy$xy"; +$line3 = "\\\\ldcpline$xy$xy"; +$line4 = "\\\\ldcpline$optzahl$xy$xy"; +$line5 = "\\\\LdpLine$klzahl\\{$xy\\}$optzahl"; +$gefdreieck = "\\\\gefdreieck$xy$xy"; +$gefviereck = "\\\\gefviereck$xy$xy$xy"; +$circle = "\\\\circle$klzahl"; +$circle2 = "\\\\circle$optzahl$klzahl"; +$ell = "\\\\ellipse$klzahl$klzahl"; +$ell2 = "\\\\ellipse$optzahl$klzahl$klzahl"; +$gefcircle = "\\\\circle$star$klzahl"; +$gefell = "\\\\ellipse$star$klzahl$klzahl"; +$arc = "\\\\arc$klzahl$klzahl$klzahl"; +$arc2 = "\\\\arc$optzahl$klzahl$klzahl$klzahl"; +$arc3 = "\\\\LdpArc$klzahl$klzahl$klzahl$optzahl$klzahl"; +$ellarc = "\\\\ellarc$klzahl$klzahl$klzahl$klzahl"; +$ellarc2 = "\\\\ellarc$optzahl$klzahl$klzahl$klzahl$klzahl"; +$ellarc3 = "\\\\LdpEllarc$klzahl$klzahl$klzahl$optzahl$klzahl$klzahl"; +$pie = "\\\\pieslice$klzahl$klzahl$klzahl$klzahl"; +$bezier = "\\\\bezier$xy$xy$xy"; +$bezier2 = "\\\\bezier$optzahl$xy$xy$xy"; +$bezier3 = "\\\\LdpBezier$klzahl$xy$xy$xy$optzahl"; +$gefbezier = "\\\\beziergef$xy$xy$xy"; + +$text = "\\\\makebox\\(0,0\\)\\[([a-z]+)\\]{"; +$textf = "\\\\makebox\\(0,0\\){"; + +$standardfont = 1; +$textlage{'bl'} = 0; +$textlage{'f'} = 1; +$textlage{'br'} = 2; +$textlage{'b'} = 3; +$textlage{'tl'} = 4; +$textlage{'tr'} = 5; +$textlage{'t'} = 6; +$textlage{'l'} = 7; +$textlage{'r'} = 8; + + +$font{'FVIpt'} = 0; +$font{'FVIIIpt'} = 2; +$font{'FXpt'} = 3; +$font{'FXIIpt'} = 4; +$font{'FXIVpt'} = 5; +$font{'FXVIIIpt'} = 6; + +$font{'FVIbpt'} = 7; +$font{'FVIIIbpt'} = 8; +$font{'FXbpt'} = 9; +$font{'FXIIbpt'} = 10; +$font{'FXIVbpt'} = 11; +$font{'FXVIIIbpt'} = 12; + +$font{'FVIipt'} = 13; +$font{'FVIIIipt'} = 14; +$font{'FXipt'} = 15; +$font{'FXIIipt'} = 16; +$font{'FXIVipt'} = 17; +$font{'FXVIIIipt'} = 18; + + +$ttext = 2; +$tgerade = 3; +$tkreis = 5; +$tkreisgef = 6; +$tkreisbogen = 7; +$tell = 8; +$tellgef = 9; +$tellbogen = 10; +$trechteckgef = 11; +$tbezier = 12; +$tdreieckgef = 13; +$tviereckgef = 14; +$tkreissektorgef= 15; +$tellsektorgef = 16; +$tbeziergef = 17; + + + +if ($#ARGV != 1) {die "number of arguments not 2 (file in, file out)";} + +sub grad { # texwinkel nach latexdraw-Winkel (math) + $wi = @_[0]; + $wi = (1-$wi/(2*3.1415926))*3600; + if (($wi > 3599.9)&&($wi < 3600.1)) {$wi=3600;} + if (($wi > -0.1) && ($wi < 0.1)) {$wi=0;} + while ($wi > 3600) {$wi = $wi - 3600;} + while ($wi < 0) {$wi = $wi + 3600;} + $wi; +} + +sub winkel { # Berechnung Anfangs - und Endwinkel + $endwi = grad(@_[0]); + $anfwi = grad(@_[1]); +} + +sub vorspannpar { # vorspannparameter merken + $xxmin =0; + $yymin=0; + $xxmax=$1; + $yymax=$2; + $dxpixel = $1; + $dypixel = $2; + $breite = $xxmax*$unitl; + $hoehe = $yymax*$unitl; + $querformat = 1; + if ($anzpic == 2) {$querformat = 0;} +} + +sub ausvorspann {# vorspann ausgeben + print AUS "LaTeXdraw (Siegert, TUM, C15.13)\n"; + print AUS $unitl, " (TEXFAKTOR)", "\n"; + print AUS " 2.00000E+00 (TEXDASHLAENGE)", "\n"; + print AUS " 1.80000E+00 (TEXDOTGAP)", "\n"; + print AUS " 8.00000E-01 (TEXINTERDOTGAP)", "\n"; + print AUS "16.667 16.667 525.2 294 1 0 0 1 (GITTERWERTE)\n"; + print AUS "$xxmin $yymin $xxmax $yymax $dxpixel $dypixel ", + "$breite $hoehe $mitdoc $querformat (AUSGABEOPTIONEN)\n"; + $ausgegeben = 1; +} + +sub zeileninit { + $element = 0; # falls Zeichnungselement gefunden = 1 + $rotwinkel = 0; + $lende = 0; + $ltype = 1; + $anfwi = 0; + $endwi = 0; + $laenge1 = 0; + $laenge2 = 0; + $x2 = 0; + $y2 = 0; + $xb1 = 0; + $yb1 = 0; + $xb2 = 0; + $yb2 = 0; +} + +open (EIN, "<$ARGV[0]")|| die "can't open input file $ARGV[0]"; +open (AUS, ">$ARGV[1]")|| die "can't open output file $ARGV[1]"; + +$lwidth = 1; +$unitl = 1; +$anzpic = 0; +$ausgegeben = 0; +$mitdoc = 0; +while () { #zeilenweise Eingabe in $_ + + zeileninit(); + if (/$bdoc/) {$mitdoc = 1;} + if (/$unitlength/) {$unitl = $1;} + if ((/$bpic/x)&&($ausgegeben ==0)) {$anzpic = $anzpic + 1; vorspannpar(); } + if (/$ldlinew/) {$lwidth = $1;} + if (/$put/) {$x1 = $1; $y1 = $2; $color = 0;} + if (/$putc/) {$x1 = $1; $y1 = $2; $color = $3;} + if (/$rput/) {$rotwinkel = grad($1); $x1 = $2; $y1 = $3; $color = 0;} + if (/$rputc/){$rotwinkel = grad($1); $x1 = $2; $y1 = $3; $color = $4;} + + if (/$text/) { # Text mit Lageangabe + $typ = $ttext; + $laenge2 = $textlage{$1}; + $ltype = $standardfont; + $_ = $'; + if (/$fontbez/) {$ltype = $font{$1};} + $TEXT = substr($',0,length($')-3); + $element = 1; + } + + if (/$textf/) { # Text ohne Lageangabe + $typ = $ttext; + $laenge2 = $textlage{'f'}; + $ltype = $standardfont; + $_ = $'; + if (/$fontbez/) {$ltype = $font{$1};} + $TEXT = substr($',0,length($')-3); + $element = 1; + } + + if (/$line/) { + $typ = $tgerade; + $x2 = $x1+$3; + $y2 = $y1+$4; + $element = 1; + } + + if (/$line2/) { + $typ = $tgerade; + $ltype = $1; + $x2 = $x1+$4; + $y2 = $y1+$5; + $element = 1; + } + + if (/$line3/) { # cap projecting + $typ = $tgerade; + $lende = 4; + $x2 = $x1+$3; + $y2 = $y1+$4; + $element = 1; + } + + if (/$line4/) { # cap projecting + $typ = $tgerade; + $lende = 4; + $ltype = $1; + $x2 = $x1+$4; + $y2 = $y1+$5; + $element = 1; + } + + if (/$line5/) { # LdpLine + $typ = $tgerade; + $lende = $1; + $x2 = $x1+$2; + $y2 = $y1+$3; + $ltype = $4; + $element = 1; + } + + + if (/$circle/) { + $typ = $tkreis; + $laenge1 = $1/2; + $laenge2 = $laenge1; + $element = 1; + } + + if (/$circle2/) { + $typ = $tkreis; + $ltype = $1; + $laenge1 = $2/2; + $laenge2 = $laenge1; + $element = 1; + } + + if (/$gefcircle/) { + $typ = $tkreisgef; + $laenge1 = $1/2; + $laenge2 = $laenge1; + $element = 1; + } + + if (/$arc/) { + $typ = $tkreisbogen; + $laenge1 = $1/2; + $laenge2 = $laenge1; + winkel($2,$3); + $element = 1; + } + + if (/$arc2/) { + $typ = $tkreisbogen; + $ltype = $1; + $laenge1 = $2/2; + $laenge2 = $laenge1; + winkel($3,$4); + $element = 1; + } + + if (/$arc3/) { + $typ = $tkreisbogen; + $lende = $1; + winkel($2,$3); + $ltype = $4; + $laenge1 = $5/2; + $laenge2 = $laenge1; + $element = 1; + } + + if (/$ell/) { + $typ = $tell; + $laenge1 = $1/2; + $laenge2 = $2/2; + $element = 1; + } + + if (/$ell2/) { + $typ = $tell; + $ltype = $1; + $laenge1 = $2/2; + $laenge2 = $3/2; + $element = 1; + } + + if (/$gefell/) { + $typ = $tellgef; + $laenge1 = $1/2; + $laenge2 = $2/2; + $element = 1; + } + + if (/$ellarc/) { + $typ = $tellbogen; + $laenge1 = $1/2; + $laenge2 = $2/2; + winkel($3,$4); + $element = 1; + } + + if (/$ellarc2/) { + $typ = $tellbogen; + $ltype = $1; + $laenge1 = $2/2; + $laenge2 = $3/2; + winkel($4,$5); + $element = 1; + } + + if (/$ellarc3/) { + $typ = $tellbogen; + $lende = $1; + winkel($2,$3); + $ltype = $4; + $laenge1 = $5/2; + $laenge2 = $6/2; + $element = 1; + } + + if (/$gefdreieck/) { + $typ = $tdreieckgef; + $x2 = $x1+$1; + $y2 = $y1+$2; + $xb1 = $x1+$3; + $yb1 = $y1+$4; + $element = 1; + } + + if (/$gefviereck/) { + $typ = $tviereckgef; + $xb1 = $x1+$1; + $yb1 = $y1+$2; + $x2 = $x1+$3; + $y2 = $y1+$4; + $xb2 = $x1+$5; + $yb2 = $y1+$6; + $element = 1; + } + + if (/$pie/) { + $typ = $tellsektorgef; + $laenge1 = $1/2; + $laenge2 = $2/2; + if ($laenge1 == $laenge2) {$typ = $tkreissektorgef;} + $anfwi = $3*10; + $endwi = $4*10; + $element = 1; + } + + if (/$bezier/) { + $typ = $tbezier; + $xb1 = $x1+$1; + $yb1 = $y1+$2; + $xb2 = $x1+$3; + $yb2 = $y1+$4; + $x2 = $x1+$5; + $y2 = $y1+$6; + $element = 1; + } + + if (/$bezier2/) { + $typ = $tbezier; + $ltype = $1; + $xb1 = $x1+$2; + $yb1 = $y1+$3; + $xb2 = $x1+$4; + $yb2 = $y1+$5; + $x2 = $x1+$6; + $y2 = $y1+$7; + $element = 1; + } + + if (/$bezier3/) { + $typ = $tbezier; + $lende = $1; + $xb1 = $x1+$2; + $yb1 = $y1+$3; + $xb2 = $x1+$4; + $yb2 = $y1+$5; + $x2 = $x1+$6; + $y2 = $y1+$7; + $ltype = $8; + $element = 1; + } + + if (/$gefbezier/) { + $typ = $tbeziergef; + $xb1 = $x1+$1; + $yb1 = $y1+$2; + $xb2 = $x1+$3; + $yb2 = $y1+$4; + $x2 = $x1+$5; + $y2 = $y1+$6; + $element = 1; + } + + if ($element) { + if ($ausgegeben==0) {ausvorspann();} + $tmp = 100 * $color + $lwidth; + print AUS "$typ $x1 $y1 $x2 $y2 $xb1 $yb1 $xb2 $yb2 $anfwi $endwi ", + "$tmp $lende $ltype $laenge1 $laenge2 $rotwinkel", "\n"; + if ($typ == 2) {print AUS "$TEXT\n";} + } +} + + +print AUS "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n"; +print AUS " 0 \n"; +print AUS "0 0\n"; + diff --git a/support/latexdraw/bin/ldstapeldiagramm b/support/latexdraw/bin/ldstapeldiagramm new file mode 100755 index 0000000000..9980e61c74 --- /dev/null +++ b/support/latexdraw/bin/ldstapeldiagramm @@ -0,0 +1,190 @@ +#!/bin/ksh +# Erzeugung Stapeldiagramm (Einzelwerte werden gestapelt) 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 +# Die eingegebenen Zahlenwerte werden automatisch normalisiert +# Die Zahlenwerte in einer Zeile werden gestapelt +# Eingabe ueber stdin, Ausgabe ueber stdout +# Leerzeilen werden ueberlesen +# Kommentarzeilen (mit # oder % beginnend) werden ueberlesen +# stdin: unterschrift +# Bezeichnung y-Achse +# Bezeichnung Spalte 1 (x-Achse) Bezeichnung Spalte 2 usw. +# text1 werta wertb wertc ... +# text2 werta wertb wertc ... +# 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{xpixel=600; xmm=190; ypixel = 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=14; cyan=32; hellgruen=44; hellblau=52; + hellrot=48; + 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; + + x0pixel = 250; y0pixel = 130; + xupixel= x0pixel-30; yupixel = y0pixel-70; + schrift=1; anzstapel = 0; anzteilstapel=0; + maxwert=0; unterschrift=""; + yachse = ""; xachse=""; + 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 (unterschrift=="") {unterschrift = $0; next; } + if (yachse=="") {yachse = $0; next; } + if (xachse=="") {xachse = $1; + for (s=2;s<=NF;s++) stapelname[s]=$s; + anzteilstapel = NF; next; } + anzstapel++; + text[anzstapel] = $1; anz[anzstapel]=NF; summe = 0; + for (j=2;j<=NF;j++) {wert[100*anzstapel+j]=$j; summe += $j;} + if (summe > max) max = summe; + } + END{ print "LaTeXdraw (Siegert, TUM, C14.14)Digi"; + printf(" %.3f (TEXFAKTOR) \n", xmm/xpixel ); + 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 240 160 1 0 (AUSGABEOPTIONEN)"; + + dx = xpixel/2/(anzstapel+1); + yfaktor = ypixel/max; + xakt=x0pixel+dx; + for (k=1;k<=anzstapel;k++) { + yakt=y0pixel; + m = anzfarben; + for (j=2;j<=anz[k];j++) { + m++; if (m>anzfarben) m -= anzfarben; + dy=wert[100*k+j]*yfaktor; + printf("14 %.3f %.3f %.3f %.3f %.3f %.3f %.3f %.3f 0 3600 %d01 0 1 0 0 0 \n", \ + xakt,yakt,xakt+dx,yakt+dy,xakt+dx,yakt,xakt,yakt+dy,farbe[m]); + yakt = yakt+dy; + } + yakt=y0pixel; + printf("3 %.3f %.3f %.3f %.3f 0 0 0 0 0 3600 1 0 1 0 0 0 \n", \ + xakt,yakt,xakt+dx,yakt); + for (j=2;j<=anz[k];j++) { + dy=wert[100*k+j]*yfaktor; + printf("3 %.3f %.3f %.3f %.3f 0 0 0 0 0 3600 1 0 1 0 0 0 \n", \ + xakt,yakt,xakt,yakt+dy); + printf("3 %.3f %.3f %.3f %.3f 0 0 0 0 0 3600 1 0 1 0 0 0 \n", \ + xakt+dx,yakt,xakt+dx,yakt+dy); + printf("3 %.3f %.3f %.3f %.3f 0 0 0 0 0 3600 1 0 1 0 0 0 \n", \ + xakt,yakt+dy,xakt+dx,yakt+dy); + yakt = yakt+dy; + } + printf("2 %.3f %.3f 0 0 0 0 0 0 0 3600 1 2 %d 2 6 0 \n", \ + xakt+dx/2,y0pixel-10,schrift); + print text[k]; + xakt += 2*dx; + } + printf("3 %.3f %.3f %.3f %.3f 0 0 0 0 0 3600 1 2 1 0 0 0 \n", \ + x0pixel,y0pixel,x0pixel+xpixel,y0pixel); + printf("3 %.3f %.3f %.3f %.3f 0 0 0 0 0 3600 1 2 1 0 0 0 \n", \ + x0pixel,y0pixel,x0pixel,y0pixel+ypixel+20); + f=1; + if (max >1) {while (max >f) f = f*10; f=f*0.1; a=max/f;} + if (max <1) {while (max 1) printf("%s (Einheit %d) \n", yachse,f,schrift); + if (f == 1) print yachse; + if (f < 1) printf("%s (Einheit 1/%d) \n", yachse,1/f); + printf("2 %.3f %.3f 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]; } + + dy = 20; + dx = 15; + xakt=x0pixel+xpixel+5; + xakttext=xakt+2*dx; + yakt=y0pixel+2*dy; + m = anzfarben; + for (j=2;j<=anzteilstapel;j++) { + m++; if (m>anzfarben) m -= anzfarben; + yakt += dy; + printf("14 %.3f %.3f %.3f %.3f %.3f %.3f %.3f %.3f 0 3600 %d01 0 1 0 0 0 \n", \ + xakt,yakt,xakt+dx,yakt+dx,xakt+dx,yakt,xakt,yakt+dx,farbe[m]); + printf("2 %.3f %.3f 0 0 0 0 0 0 0 3600 1 2 %d 4 7 0 \n", \ + xakttext,yakt+dy/2,schrift); + print stapelname[j];} + + printf("2 %.3f %.3f 0 0 0 0 0 0 0 3600 1 2 %d 4 0 0 \n", \ + x0pixel+xpixel+5,y0pixel,schrift); + print xachse + + + print "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "; + print "0 "; + print "0 0 "; + print ; + }' + + + + + diff --git a/support/latexdraw/bin/ldtortendiagramm b/support/latexdraw/bin/ldtortendiagramm new file mode 100755 index 0000000000..634c9c6a87 --- /dev/null +++ b/support/latexdraw/bin/ldtortendiagramm @@ -0,0 +1,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= 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 ; + }' + + + + + -- cgit v1.2.3