summaryrefslogtreecommitdiff
path: root/support/pictex-converter/PiCUNIX.PASCAL
diff options
context:
space:
mode:
Diffstat (limited to 'support/pictex-converter/PiCUNIX.PASCAL')
-rw-r--r--support/pictex-converter/PiCUNIX.PASCAL937
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.