(********************************************************************** 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.