diff options
Diffstat (limited to 'support/pictex-converter/PiCUNIX.PASCAL')
-rw-r--r-- | support/pictex-converter/PiCUNIX.PASCAL | 937 |
1 files changed, 937 insertions, 0 deletions
diff --git a/support/pictex-converter/PiCUNIX.PASCAL b/support/pictex-converter/PiCUNIX.PASCAL new file mode 100644 index 0000000000..426a047895 --- /dev/null +++ b/support/pictex-converter/PiCUNIX.PASCAL @@ -0,0 +1,937 @@ +(********************************************************************** +Received: from DGOGWDG1 by DGOGWDG1.BITNET (Mailer R2.07) with BSMTP id 6886; + Fri, 26 Jul 91 19:02:21 MSZ +Received: from mars.gwdg.de by ibm.gwdg.de (IBM VM SMTP R1.2.2MX) with TCP; Fri, + 26 Jul 91 19:02:17 MSZ +Received: by mars.gwdg.de (5.51.2/Apollo-Domain/OS-SR10.1) + id AA05383; Fri, 26 Jul 91 19:02:39 +0100 +Date: Fri, 26 Jul 91 19:02:39 +0100 +From: frerichs@mars.gwdg.de (Martin Frerichs) +Message-Id: <9107261802.AA05383@mars.gwdg.de> +To: I2010506@dbstu1.bitnet +***********************************************************************) +PROGRAM PicTeX; + +Label 9999; + +CONST Debug = False; + +TYPE styp = (right,left); + byte = 0..255; + var_string = varying[256] of char; + +VAR aus : text; + ausn,oben,unten,rechts,links,eingabe,ausgabe, + savename,savekomm,unterschrift,labelstr,ueberschrift : + var_string; + unitx,unity, xmax,xmin,ymax,ymin,dx,dy,dxsub,dysub,breite,hoehe, + unitry,rymin,rymax,rdy,rdysub : real; + fertig,rechteachse,xlog,ylog,rylog,xkreuz,ykreuz,rykreuz : boolean; + replot,finalplot : boolean; + ydez,xdez,rydez : byte; + ch,sprache : char; + seite : styp; + +PROCEDURE read_value_eof(VAR datei : text; VAR wert : real; VAR Ende : boolean); +BEGIN + Ende := eof(datei); + IF not Ende THEN + BEGIN + read(datei,wert); + Ende := eof(datei); + END; + END; + +(****************************************************************************) +(* Zehner-Logarithmus von 'x': *) + +FUNCTION lg(x: real): real; + +CONST rez_ln_10 = 0.4342944819; (* rez_ln_10 = 1 / ln(10) *) + +BEGIN + lg :=0; + IF x > 0.0 THEN + lg := Ln(x) * rez_ln_10 + ELSE + writeln('Argumentfehler: lg(x): x <= 0 !!!') +END; + +(****************************************************************************) +(* Berechnung von 'x hoch y': *) + +FUNCTION x_hoch_y (x, y: real): real; + +VAR ganz_y: InTEGER; + +BEGIN + IF (x <> 0.0) OR (y <> 0.0) THEN + IF x > 0.0 THEN + x_hoch_y := Exp(y * Ln(x)) + ELSE + BEGIN + ganz_y := Trunc(y); + IF ABS(y) <> ABS(ganz_y) THEN + writeln('x_hoch_y(x,y): nur ganzzahlige Exponenten zulaessig bei x<0') + ELSE + IF x <> 0.0 THEN + IF (ganz_y MOD 2) = 0 THEN + x_hoch_y := Exp(Ln(ABS(x)) * y) + ELSE + x_hoch_y := -Exp(Ln(ABS(x)) * y) (* ungerader Exponent *) + ELSE + x_hoch_y := 0 + END + ELSE + writeln('x_hoch_y(x,y): x = 0 und y = 0') +END; + +(****************************************************************************) + + +(****************************************************************************) +PROCEDURE process_file(seite : styp; + VAR fertig : boolean; + rechteachse,xlogar,ylogar : boolean; + VAR aus : text); + +CONST b1='BEGIN'; + e1='END'; + +VAR einn,symbol,test : var_string; + symbolcount,cur : integer; + ein : text; + anzahl : integer32; + ch : char; + sym,linie,quadratic,clipping,Ende : boolean; + x,y,xa,ya : real; + + FUNCTION betest(t,v : var_string): boolean; + VAR t1 : var_string; + i : byte; + BEGIN + t1.length := 0; + FOR i:=1 TO t.length DO + IF t.body[i] <> ' ' THEN + BEGIN + t1.body[i]:= t.body[i]; + t1.length := t1.length + 1 + END; + IF t1 = v THEN + betest := true + ELSE + betest :=false + END; + +BEGIN {of process_file} + writeln('Ende durch leere Eingabe !!'); + REPEAT + write('Daten -Datei (TechPlot-Format!!) : '); + readln(einn); + IF einn='' THEN + fertig := true + ELSE + fertig := false; + IF not fertig THEN + BEGIN + anzahl := 0; + open(ein,einn,'OLD'); + REPEAT + write('mit Plotsymbol (j/n) ? '); + readln(ch); + UNTIL ((ch='j') or (ch='n')); + IF ch='j' THEN + sym := true + ELSE + sym := false; + REPEAT + write('durchgezogene Linie (j/n) ? '); + readln(ch); + UNTIL ((ch='j') or (ch='n')); + IF ch='j' THEN + linie := true + ELSE + linie := false; + IF linie THEN + BEGIN + REPEAT + write('Quadratische Interpolation (1) oder Polygonzug (2) ? '); + readln(ch); + UNTIL ((ch='1') or (ch='2')); + IF ch='1' THEN + quadratic := true + ELSE + quadratic := false; + REPEAT + write('Clipping noetig (Achtung, das dauert lange) (j/n) ? '); + readln(ch); + UNTIL ((ch='j') or (ch='n')); + IF ch='j' THEN + clipping := true + ELSE + clipping := false; + END; + IF sym THEN + BEGIN + write('Plotsymbol (LaTeX-Text) : '); + readln(symbol); + REPEAT + write('Plotsymbol jeden n-ten Punkt : n = '); + readln(symbolcount) + UNTIL symbolcount > 0; + reset(ein); + writeln(aus,'%Datei ',einn,' (Symbole)'); + REPEAT + readln(ein,test); + writeln(aus,'%% ',test); + UNTIL ((betest(test,b1)) or eof(ein)); + Ende := false; + IF eof(ein) THEN + Ende := true; + write(aus,'% Daten fuer '); + IF rechteachse THEN + IF (seite=left) THEN + write(aus,'linke ') + ELSE + write (aus,'rechte '); + writeln(aus,'y-Achse ...'); + IF NOT Ende THEN + BEGIN + writeln('\multiput {',symbol,'} at '); + writeln(aus,'\multiput {',symbol,'} at %'); + END; + cur := 0; + WHILE NOT Ende DO + BEGIN + read_value_eof(ein,x,Ende); + read_value_eof(ein,y,Ende); + IF NOT Ende THEN + BEGIN + readln(ein); + anzahl := anzahl + 1; + cur := cur + 1; + IF xlogar THEN + x:=lg(x); + IF ylogar THEN + y:=lg(y); + IF (cur MOD symbolcount) = 0 THEN + BEGIN + writeln(aus,' ',x:8:6,' ',y:8:6,' %'); + writeln( x:8:5,' ',y:8:4) + END + END + ELSE + BEGIN + writeln(' /'); + writeln(aus,' /'); + END; + END; + END; + IF linie THEN + BEGIN + reset(ein); + anzahl := 0; + writeln(aus,'%Datei ',einn,' (Linie)'); + REPEAT + readln(ein,test); + writeln(aus,'%% ',test); + UNTIL ((betest(test,b1)) or eof(ein)); + Ende := false; + IF eof(ein) THEN + Ende := true; + IF replot THEN + BEGIN + writeln(aus,'\ifreplot'); + writeln(aus,'\else') + END; + IF clipping THEN + writeln(aus,'\inboundscheckon'); + IF quadratic THEN + writeln(aus,'\setquadratic') + ELSE + writeln(aus,'\setlinear'); + writeln(aus,'\plot '); + WHILE NOT Ende DO + BEGIN + read_value_eof(ein,x,Ende); + read_value_eof(ein,y,Ende); + IF not Ende THEN + BEGIN + readln(ein); + anzahl := anzahl + 1; + IF xlogar THEN + x:=lg(x); + IF ylogar THEN + y:=lg(y); + xa :=x; + ya :=y; + writeln(aus,' ',x:8:6,' ',y:8:6,' %'); + writeln( x:8:4,' ',y:8:4); + END; + END; + IF quadratic THEN + IF not odd(anzahl) THEN + writeln(aus,' ',xa*1.00001:8:6,' ',ya*1.00001:8:6,' %'); + writeln(aus,'/'); + IF clipping THEN + writeln(aus,'\inboundscheckoff'); + IF replot THEN + writeln(aus,'\fi') + END; + close(ein); + END + UNTIL fertig +END; {of process_file} + +PROCEDURE Einheiten(VAR unitx,unity,unitry : real; breite,hoehe : real; + rechteachse,xlog,ylog,rylog : boolean); +BEGIN + IF xlog THEN + unitx := breite/(lg(xmax)-lg(xmin)) + ELSE + unitx := breite/(xmax-xmin); + IF ylog THEN + unity := HOEHE/(lg(ymax)-lg(ymin)) + ELSE + unity := hoehe/(ymax-ymin); + IF rechteachse THEN + IF rylog THEN + unitry := hoehe/(lg(rymax)-lg(rymin)) + ELSE + unitry := hoehe/(rymax-rymin) + ELSE unitry :=0; +END; + +PROCEDURE Skala (VAR aus : text; seite : styp; unitx,unity : real; + xlog,ylog,rechteachse,xkreuz,ykreuz : boolean; + xmin,xmax,dx,dxsub,ymin,ymax,dy,dysub : real; + xdez,ydez :byte; unten,oben,rechts,links : var_string); +VAR con: text; + + PROCEDURE Log_schrift(VAR aus: text; min,max : real; + markiere,kreuz : boolean); + VAR ort,o2 : real; + expo,code : integer; + stellen,i : byte; + ex : var_string; + BEGIN + IF Debug THEN + BEGIN + writeln; + writeln('Log_Schrift: Parameter'); + writeln('Minimum : ',min ); + writeln('Maximum : ',max ) + END; + writeln(aus,' ticks logged '); + IF kreuz THEN + write(aus,'andacross '); + IF markiere THEN + writeln(aus,'numbered ') + ELSE + writeln(aus,'unlabeled '); + IF markiere THEN + BEGIN {Zahlen dranschreiben} + write(aus,'withvalues '); + ort := min/10.0; + expo := Round(lg(ort)); + REPEAT + o2 := (x_hoch_y(10,expo)); + IF ((o2>=min) and (o2<=max)) THEN + write(aus,'$10^{',expo:1,'}$ '); + ort := 2.0*o2; + IF ((ort<=max) and (ort>=min)) THEN + write(aus,'2 '); + ort := 3.0*o2; + IF ((ort>=min) and (ort<=max)) THEN + write(aus,'3 '); + ort := 5.0*o2; + IF ((ort>=min) and (ort<=max)) THEN + write(aus,'5 '); + expo := expo + 1 + UNTIL ort>max; + writeln(aus,' /'); + END; + {ticks setzen, normal lang} + write(aus,' at '); + ort := min/10.0; + expo := Round(lg(ort)); + REPEAT + o2 := (x_hoch_y(10,expo)); + IF expo<0 THEN + stellen := abs(expo) + ELSE + stellen := 0; + IF ((o2>=min) and (o2<=max)) THEN + write(aus,x_hoch_y(10,expo):1:stellen,' '); + {o2 := ort;} + ort := 2.0*o2; + IF ((ort<=max) and (ort>=min)) THEN + write(aus,ort:1:stellen,' '); + ort := 3.0*o2; + IF ((ort>=min) and (ort<=max)) THEN + write(aus,ort:1:stellen,' '); + ort := 5.0*o2; + IF ((ort>=min) and (ort<=max)) THEN + write(aus,ort:1:stellen,' '); + expo := expo + 1 + UNTIL ort>max; + writeln(aus,' /'); + {ticks, immer ohne Beschriftung, lang } + writeln(aus,' unlabeled at '); + ort := min/10.0; + expo := Round(lg(ort)); + REPEAT + o2 := (x_hoch_y(10,expo)); + IF expo<0 THEN + stellen := abs(expo) + ELSE + stellen :=0; + ort := 4.0*o2; + IF ((ort>=min) and (ort<=max)) THEN + write(aus,ort:1:stellen,' '); + FOR i:=6 TO 9 DO + BEGIN + ort := i*o2; + IF ((ort>=min) and (ort<=max)) THEN + write(aus,ort:1:stellen,' '); + END; + expo := expo + 1 + UNTIL ort>max; + writeln(aus,' /'); + {ticks, ohne Beschriftung, kurz } + writeln(aus,' unlabeled short at '); + ort := min/10.0; + expo := Round(lg(ort)); + REPEAT + o2 := (x_hoch_y(10,expo)); + IF expo<=0 THEN + stellen := abs(expo)+1 + ELSE + stellen :=0; + FOR i:=1 TO 9 DO + BEGIN + ort := o2*(1.0+i*0.2); {1.2, 1.4, ... 2.8 } + IF ((ort>=min) and (ort<=max)) THEN + write(aus,ort:1:stellen,' '); + END; + ort :=3.5*o2; + IF ((ort>=min) and (ort<=max)) THEN + write(aus,ort:1:stellen,' '); + ort :=4.5*o2; + IF ((ort>=min) and (ort<=max)) THEN + write(aus,ort:1:stellen,' '); + expo := expo + 1 + UNTIL ort>max; + writeln(aus,' /'); {letztes "at"} + writeln(aus,' /'); {Ende von "\axis"} + END; { of Log_Schrift} + +BEGIN { of Skala} + open(con,'-STDOUT','UNKNOWN'); + rewrite(con); + write('\setcoordinatesystem units <',unitx:1:5,'mm,',unity:1:5,'mm> point at + '); + IF xlog THEN + write(lg(xmin):1:5,' ') + ELSE + write(xmin:1:5,' '); + IF ylog THEN + writeln(lg(ymin):1:5) + ELSE + writeln(ymin:1:5); + write('\setplotarea x from '); + IF xlog THEN + write(lg(xmin):8:5) + ELSE + write(xmin:8:5); + write(' to '); + IF xlog THEN + write(lg(xmax):8:5) + ELSE + write(xmax:8:5); + write(', y from '); + IF ylog THEN + write(lg(ymin):8:5) + ELSE + write(ymin:8:5); + write(' to '); + IF ylog THEN + writeln(lg(ymax):8:5) + ELSE + writeln(ymax:8:5); + IF seite=left THEN + BEGIN + write('\axis bottom shiftedto y='); + IF ylog THEN + write(lg(ymin):8:5) + ELSE + write(ymin:8:5); + write(' label {',unten,'} '); + IF xlog THEN + Log_schrift(con,xmin,xmax,true,xkreuz) + ELSE + writeln(' ticks numbered from ', + xmin:8:xdez,' to ',xmax:8:xdez,' by ',dx:8:xdez, + ' unlabeled short from ',xmin:8:xdez,' to ', + xmax:8:xdez,' by ',dxsub:8:xdez,' /'); + IF oben <> '' THEN + BEGIN + write('\axis top shiftedto y='); + IF ylog THEN + write(lg(ymax):8:5) + ELSE + write(ymax:8:5); + write(' label {',oben,'} '); + IF xlog THEN + Log_schrift(con,xmin,xmax,false,false) + ELSE + writeln(' ticks unlabeled from ', + xmin:8:xdez,' to ',xmax:8:xdez,' by ',dx:8:xdez, + ' unlabeled short from ',xmin:8:xdez,' to ', + xmax:8:xdez,' by ',dxsub:8:xdez,' /') + END; + write('\axis left shiftedto x='); + IF xlog THEN + write(lg(xmin):8:5) + ELSE + write(xmin:8:5); + write(' label {',links,'} '); + IF ylog THEN + Log_schrift(con,ymin,ymax,true,ykreuz) + ELSE + writeln(' ticks numbered from ', + ymin:8:ydez,' to ',ymax:8:ydez,' by ',dy:8:ydez, + ' unlabeled short from ',ymin:8:ydez,' to ', + ymax:8:ydez,' by ',dysub:8:ydez,' /'); + IF not rechteachse THEN + IF rechts <> '' THEN + BEGIN + write('\axis right shiftedto x='); + IF xlog THEN + write(lg(xmax):8:5) + ELSE + write(xmax:8:5); + write(' label {',rechts,'} '); + IF ylog THEN + Log_schrift(con,ymin,ymax,false,false) + ELSE + writeln(' ticks unlabeled from ', + ymin:8:ydez,' to ',ymax:8:ydez,' by ',dy:8:ydez, + ' unlabeled short from ',ymin:8:ydez,' to ', + ymax:8:ydez,' by ',dysub:8:ydez,' /') + END + END + ELSE + BEGIN + write('\axis right shiftedto x='); + IF xlog THEN + write(lg(xmax):8:5) + ELSE + write(xmax:8:5); + write(' label {',rechts,'} '); + IF ylog THEN + Log_schrift(con,ymin,ymax,true,ykreuz) + ELSE + writeln(' ticks numbered from ', + ymin:8:ydez,' to ',ymax:8:ydez,' by ',dy:8:ydez, + ' unlabeled short from ',ymin:8:ydez,' to ', + ymax:8:ydez,' by ',dysub:8:ydez,' /'); + END; + close(con); + write(aus,'\setcoordinatesystem units <',unitx:1:5,'mm,',unity:1:5,'mm> point + at '); + IF xlog THEN + write(aus,lg(xmin):1:6,' ') + ELSE + write(aus,xmin:1:6,' '); + IF ylog THEN + writeln(aus,lg(ymin):1:6) + ELSE + writeln(aus,ymin:1:6); + write(aus,'\setplotarea x from '); + IF xlog THEN + write(aus,lg(xmin):1:6) + ELSE + write(aus,xmin:1:6); + write(aus,' to '); + IF xlog THEN + write(aus,lg(xmax):1:6) + ELSE + write(aus,xmax:1:6); + write(aus,', y from '); + IF ylog THEN + write(aus,lg(ymin):1:6) + ELSE + write(aus,ymin:8:5); + write(aus,' to '); + IF ylog THEN + writeln(aus,lg(ymax):1:6) + ELSE + writeln(aus,ymax:1:6); + IF seite=left THEN + BEGIN + write(aus,'\axis bottom shiftedto y='); + IF ylog THEN + write(aus,lg(ymin):1:6) + ELSE + write(aus,ymin:1:6); + write(aus,' label {',unten,'} '); + IF xlog THEN + Log_schrift(aus,xmin,xmax,true,xkreuz) + ELSE + BEGIN + write(aus,' ticks '); + IF xkreuz THEN + write(aus,'andacross '); + writeln(aus,'numbered from ', + xmin:1:xdez,' to ',xmax:1:xdez,' by ',dx:1:xdez, + ' unlabeled short from ',xmin:1:xdez+3,' to ', + xmax:1:xdez+3,' by ',dxsub:1:xdez+3,' /'); + END; + IF oben <> '' THEN + BEGIN + write(aus,'\axis top shiftedto y='); + IF ylog THEN + write(aus,lg(ymax):1:6) + ELSE + write(aus,ymax:1:6); + write(aus,' label {',oben,'} '); + IF xlog THEN + Log_schrift(aus,xmin,xmax,false,false) + ELSE + writeln(aus,' ticks unlabeled from ', + xmin:1:xdez+2,' to ',xmax:1:xdez+2,' by ',dx:1:xdez+2, + ' unlabeled short from ',xmin:1:xdez+3,' to ', + xmax:1:xdez+3,' by ',dxsub:1:xdez+3,' /') + END; + write(aus,'\axis left shiftedto x='); + IF xlog THEN + write(aus,lg(xmin):1:6) + ELSE + write(aus,xmin:1:6); + write(aus,' label {',links,'} '); + IF ylog THEN + Log_schrift(aus,ymin,ymax,true,ykreuz) + ELSE + BEGIN + write(aus,' ticks '); + IF ykreuz THEN + write(aus,'andacross '); + writeln(aus,'numbered from ', + ymin:1:ydez,' to ',ymax:1:ydez,' by ',dy:1:ydez, + ' unlabeled short from ',ymin:1:ydez+3,' to ', + ymax:1:ydez+3,' by ',dysub:1:ydez+3,' /'); + END; + IF not rechteachse THEN + IF rechts <> '' THEN + BEGIN + write(aus,'\axis right shiftedto x='); + IF xlog THEN + write(aus,lg(xmax):1:6) + ELSE + write(aus,xmax:1:6); + write(aus,' label {',rechts,'} '); + IF ylog THEN + Log_schrift(aus,ymin,ymax,false,false) + ELSE + writeln(aus,' ticks unlabeled from ', + ymin:1:ydez+2,' to ',ymax:1:ydez+2,' by ',dy:1:ydez+2, + ' unlabeled short from ',ymin:1:ydez+3,' to ', + ymax:1:ydez+3,' by ',dysub:1:ydez+3,' /') + END + END + ELSE + BEGIN + write(aus,'\axis right shiftedto x='); + IF xlog THEN + write(aus,lg(xmax):1:6) + ELSE + write(aus,xmax:1:6); + write(aus,' label {',rechts,'} '); + IF ylog THEN + Log_schrift(aus,ymin,ymax,true,ykreuz) + ELSE + BEGIN + write(aus,' ticks '); + IF ykreuz THEN + write(aus,'andacross '); + writeln(aus,'numbered from ', + ymin:1:ydez,' to ',ymax:1:ydez,' by ',dy:1:ydez, + ' unlabeled short from ',ymin:1:ydez+3,' to ', + ymax:1:ydez+3,' by ',dysub:1:ydez+3,' /'); + END; + END; +END; {of Skala} + +BEGIN + writeln; + writeln(' Datei-Konverter Daten -->PiCTeX input ... '); + writeln('(c) Christian Boettger, Inst. f. Metallphysik, TU Braunschweig'); + writeln(' & Martin Frerichs, Inst. f. Theor. Physik, U Goettingen for'); + writeln(' Revised Unix Edition'); + writeln(' Version 1.0.1, 26.7.1991 '); + writeln; + write('PiCTeX-Datei : '); + readln(ausn); + open(aus,ausn,'UNKNOWN'); + rewrite(aus); + writeln; + write('X-Achse : Minimum = '); + readln(xmin); + write('X-Achse : Maximum = '); + readln(xmax); + REPEAT + write('x-Achse logarithmisch (j/n) ? '); + readln(ch); + UNTIL ((ch='n') or (ch='j')); + IF ch='j' THEN + xlog := true + ELSE xlog := false; + IF not xlog THEN + BEGIN + write('X-Achse : Schrittweite = '); + readln(dx); + write('X-Achse : Schrittweite Sub-Unterteilungen = '); + readln(dxsub); + write('X-Achse : Dezimalstellen der Beschriftung = '); + readln(xdez); + END; + REPEAT + write('x-Achse Markierungen durchziehen (Gitter) (j/n) ? '); + readln(ch); + UNTIL ((ch='n') or (ch='j')); + IF ch='j' THEN + xkreuz := true + ELSE + xkreuz := false; + writeln; + writeln('Eingabe der Daten fuer die (linke) Y-Achse ...'); + write('y-Achse : Minimum = '); + readln(ymin); + write('y-Achse : Maximum = '); + readln(ymax); + REPEAT + write('(linke) y-Achse logarithmisch (j/n) ? '); + readln(ch); + UNTIL ((ch='n') or (ch='j')); + IF ch='j' THEN + ylog := true + ELSE + ylog := false; + IF not ylog THEN + BEGIN + write('y-Achse : Schrittweite = '); + readln(dy); + write('y-Achse : Schrittweite Sub-Unterteilungen = '); + readln(dysub); + write('y-Achse : Dezimalstellen der Beschriftung = '); + readln(ydez); + END; + REPEAT + write('(linke) y-Achse Markierungen durchziehen (Gitter) (j/n) ? '); + readln(ch); + UNTIL ((ch='N') or (ch = 'n') or (ch = 'J') or (ch='j')); + IF (ch='j') or (ch = 'j') THEN + ykreuz := true + ELSE + ykreuz := false; + writeln; + REPEAT + write('zweite unabhaengige Skala auf rechter y-Achse (j/n) ? '); + readln(ch); + UNTIL ((ch='n') or (ch='j')); + IF ch='j' THEN + rechteachse :=true + ELSE + rechteachse:=false; + IF rechteachse THEN + BEGIN + writeln; + write('rechte y-Achse : Minimum = '); + readln(rymin); + write('rechte y-Achse : Maximum = '); + readln(rymax); + REPEAT + write('rechte y-Achse logarithmisch (j/n) ? '); + readln(ch); + UNTIL ((ch='n') or (ch='j')); + IF ch='j' THEN + rylog := true + ELSE + rylog := false; + IF not rylog THEN + BEGIN + write('rechte y-Achse : Schrittweite = '); + readln(rdy); + write('rechte y-Achse : Schrittweite Sub-Unterteilungen = '); + readln(rdysub); + write('rechte y-Achse : Dezimalstellen der Beschriftung = '); + readln(rydez); + END; + REPEAT + write('rechte y-Achse Markierungen durchziehen (Gitter) (j/n) ? '); + readln(ch); + UNTIL ((ch='n') or (ch='j')); + IF ch='j' THEN + rykreuz := true + ELSE + rykreuz := false; + writeln; + END; + write('Beschriftung Unterkante : '); + readln(unten); + write('Beschriftung Oberkante : '); + readln(oben); + write('Beschriftung rechts : '); + readln(rechts); + write('Beschriftung links : '); + readln(links); + writeln; + write('Breite des Bildes in mm = '); + readln(breite); + write('Hoehe des Bildes in mm = '); + readln(hoehe); + writeln; + write('Unterschrift des Bildes (\caption) : '); + readln(unterschrift); + write('Ueberschrift des Bildes : '); + readln(ueberschrift); + write('LaTeX-Label des Bildes : ');readln(labelstr); + REPEAT + writeln('Sprache des Textes:'); + write(' a=austrian, e=english, f=french, g=german, u=USenglish ? '); + readln(sprache); + UNTIL sprache in ['a','e','f','g','u']; + writeln; + writeln('und nun die Zwischenspeicherung ...'); + savename :=''; + REPEAT + write('Dateiname fuer \savelinesandcurves bzw. \replot = '); + readln(savename); + UNTIL savename<>''; + write('Kommentar im Save-File = '); + readln(savekomm); + writeln; + writeln('und nun die if-switches (Diese muessen im Dokument vor Benutzung'); + writeln(' deklariert werden!)'); + REPEAT + write('Switch replot benutzen (j/n) ? '); + readln(ch); + UNTIL ((ch='n') or (ch='j')); + IF ch='j' THEN + replot := true + ELSE + replot := false; + writeln; + REPEAT + write('Switch finalplot benutzen (j/n) ? '); + readln(ch); + UNTIL ((ch='n') or (ch='j')); + IF ch='j' THEN + finalplot := true + ELSE + finalplot := false; + writeln; + Einheiten(unitx,unity,unitry,breite,hoehe,rechteachse,xlog,ylog,rylog); + writeln('\begin{figure}[htb]'); + writeln('\originalTeX'); + writeln('\[ %horizontal zentrierte Ausgabe an'); + writeln('\beginpicture'); + writeln(aus,'\begin{figure}[htb]'); + writeln(aus,'\originalTeX'); + writeln(aus,'\[ %zentrierte Ausgabe an'); + writeln(aus,'\beginpicture'); + IF replot THEN + BEGIN + writeln(aus,'\ifreplot'); + writeln(aus,'\else'); + END; + writeln(aus,'\savelinesandcurves on "',savename,'"'); + writeln(aus,'\writesavefile {',savekomm,'}'); + IF replot THEN + writeln(aus,'\fi'); + skala (aus,left, + unitx,unity, + xlog,ylog,rechteachse,xkreuz,ykreuz, + xmin,xmax,dx,dxsub,ymin,ymax,dy,dysub,xdez,ydez, + unten,oben,rechts,links); + IF ueberschrift <> '' THEN + writeln(aus,'\plotheading {',ueberschrift,'}'); + IF replot THEN + BEGIN + writeln(aus,'\ifreplot'); + IF finalplot THEN + writeln(aus,'\iffinalplot'); + writeln(aus,'\replot "',savename,'"'); + IF finalplot THEN + writeln(aus,'\fi'); + writeln(aus,'\fi') + END + ELSE + writeln(aus,'%\replot'); + fertig := false; + IF finalplot THEN + writeln(aus,'\iffinalplot'); + REPEAT + writeln; + IF rechteachse THEN + writeln('nur Daten fuer die LINKE (!!) y- Achse jetzt !!!!'); + process_file(left,fertig,rechteachse,xlog,ylog,aus); + UNTIL fertig; + IF finalplot THEN + writeln(aus,'\fi'); + IF rechteachse THEN + BEGIN + skala (aus,right, + unitx,unitry, + xlog,rylog,rechteachse,xkreuz,rykreuz, + xmin,xmax,dx,dxsub,rymin,rymax,rdy,rdysub,xdez,rydez, + unten,oben,rechts,links); + fertig := false; + IF finalplot THEN + writeln(aus,'\iffinalplot'); + REPEAT + writeln; + writeln('nur Daten fuer die RECHTE (!!) y- Achse ab jetzt !!!!'); + process_file(right,fertig,rechteachse,xlog,rylog,aus); + UNTIL fertig; + IF finalplot THEN + writeln(aus,'\fi'); + END; + IF replot THEN + BEGIN + writeln(aus,'\ifreplot'); + writeln(aus,'\else') + END; + writeln(aus,'\dontsavelinesandcurves'); + IF replot THEN + writeln(aus,'\fi'); + writeln(aus,'\endpicture'); + writeln(aus,'\]'); + writeln(aus,'\germanTeX'); + write(aus,'\selectlanguage{\'); + CASE sprache OF + 'a' : writeln(aus,'austrian}'); + 'e' : writeln(aus,'english}'); + 'f' : writeln(aus,'french}'); + 'g' : writeln(aus,'german}'); + 'u' : writeln(aus,'USenglish}'); + END; + writeln(aus,'\caption{',unterschrift,' \label{',labelstr,'}}'); + writeln(aus,'\end{figure}'); + writeln('\endpicture'); + writeln('\]'); + writeln('\germanTeX'); + write('\selectlanguage{\'); + CASE sprache OF + 'a' : writeln('austrian}'); + 'e' : writeln('english}'); + 'f' : writeln('french}'); + 'g' : writeln('german}'); + 'u' : writeln('USenglish}'); + END; + writeln('\caption{',unterschrift,' \label{',labelstr,'}}'); + writeln('\end{figure}'); + close(aus); + 9999: +END. |