// Copyright (C) 2014 Setsuo Takato, KETCindy Japan project team // //This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see // println("ketcindybasic2(20180405) loaded"); //help:start(); Dispchoice():=( if(islist(Ch), if(!isreal(ChNum),ChNum=1); drawtext(mouse().xy,"Ch="+text(Ch)+" N="+text(ChNum),size->24,color->[0,0,1]); ); ); Datetime():=( //help:Datetime(); regional(names,dt,tmp); tmp=getdatetime(); dt=tokenize(tmp," "); dt=apply(dt,if(!isstring(#),text(#),#)); names=["Jan","Feb","Mar","Apr","May","Jun", "Jul","Aug","Sep","Oct","Nov","Dec"]; tmp=select(1..12,names_#==dt_2); tmp=text(tmp_1); tmp=[dt_6+"/"+tmp+"/"+dt_3,dt_4]; ); Rotatepoint(point,Theta,ctr):=( //help:Rotatepoint(A,2*pi/3,B); regional(X1,X2,Y1,Y2,Cx,Cy,tmp); tmp=Lcrd(point); X1=tmp_1; Y1=tmp_2; tmp=Lcrd(ctr); Cx=tmp_1; Cy=tmp_2; X2=Cx+(X1-Cx)*cos(Theta)-(Y1-Cy)*sin(Theta); Y2=Cy+(X1-Cx)*sin(Theta)+(Y1-Cy)*cos(Theta); [X2,Y2]; ); Translatepoint(point,mov):=( //help:Translatepoint(A,[2,3]); regional(X1,X2,Y1,Y2,Cx,Cy,tmp); tmp=Lcrd(point); X1=tmp_1; Y1=tmp_2; tmp=Lcrd(mov); Cx=tmp_1; Cy=tmp_2; X2=X1+Cx; Y2=Y1+Cy; [X2,Y2]; ); Scalepoint(point,ratio,center):=( //help:Scalepoint(A,[3,2],[0,0]); regional(X1,X2,Y1,Y2,Cx,Cy,tmp); tmp=Lcrd(point); X1=tmp_1; Y1=tmp_2; tmp=Lcrd(center); Cx=tmp_1; Cy=tmp_2; X2=Cx+ratio_1*(X1-Cx); Y2=Cy+ratio_2*(Y1-Cy); [X2,Y2]; ); Reflectpoint(point,symL):=( //help:Reflectpoint(A,B); //help:Reflectpoint(A,[[2,3]]); //help:Reflectpoint(A,[C,E]); regional(X1,X2,Y1,Y2,Us,Vs,Pt1,Pt2,Cx,Cy,tmp); tmp=Lcrd(point); X1=tmp_1; Y1=tmp_2; Pt1=Lcrd(symL_1); if(length(symL)==1, Pt2=Pt1; , Pt2=Lcrd(symL_2); ); Us=Pt2_1-Pt1_1; Vs=Pt2_2-Pt1_2; if(Pt1==Pt2, X2=2*Pt1_1-X1; Y2=2*Pt1_2-Y1; , X2=(Us^2-Vs^2)/(Us^2+Vs^2)*X1+2*Us*Vs/(Us^2+Vs^2)*Y1 -2*Vs*(Us*Pt1_2-Vs*Pt1_1)/(Us^2+Vs^2); Y2=2*Us*Vs/(Us^2+Vs^2)*X1-(Us^2-Vs^2)/(Us^2+Vs^2)*Y1 +2*Us*(Us*Pt1_2-Vs*Pt1_1)/(Us^2+Vs^2); ); [X2,Y2]; ); Rotatedata(nm,plist,Theta):=Rotatedata(nm,plist,Theta,[]); Rotatedata(nm,plist,angle,options):=( //help:Rotatedata("1","crAB",pi/3,[[1,5],"dr,2"]); regional(tmp,tmp1,tmp2,pdata,Theta,Pt,Cx,Cy,PdLL,PdL, opcindy,Nj,Njj,Kj,Mj,X1,Y1,X2,Y2,Ltype,Noflg,name); name="rt"+nm; Pt=[0,0]; tmp=Divoptions(options); Ltype=tmp_1; Noflg=tmp_2; opcindy=tmp_(length(tmp)); tmp1=tmp_6; if(length(tmp1)>0,Pt=Lcrd(tmp1_1)); pdata=plist; if(isstring(pdata),pdata=[pdata]); if(!isstring(pdata_1) & MeasureDepth(pdata)==1, pdata=[pdata]; ); if(isstring(angle),Theta=parse(angle),Theta=angle); Cx=Pt_1; Cy=Pt_2; PdL=[]; forall(pdata,Njj, if(isstring(Njj),Kj=parse(Njj),Kj=Njj); if(MeasureDepth(Kj)==0,Kj=[Kj]); //17.11.24 if(MeasureDepth(Kj)==1,Kj=[Kj]); tmp2=[]; forall(Kj,Nj, tmp1=[]; forall(Nj, tmp=LLcrd(#); X1=tmp_1; Y1=tmp_2; X2=Cx+(X1-Cx)*cos(Theta)-(Y1-Cy)*sin(Theta); Y2=Cy+(X1-Cx)*sin(Theta)+(Y1-Cy)*cos(Theta); tmp1=concat(tmp1,[[X2,Y2]]); ); tmp2=concat(tmp2,[tmp1]); ); PdL=concat(PdL,tmp2); ); if(Noflg<3, println("generate Rotatedata "+name); tmp1=[]; forall(PdL,tmp2, tmp=apply(tmp2,Pcrd(#)); tmp1=append(tmp1,tmp); ); if(length(tmp1)==1,tmp1=tmp1_1); tmp=name+"="+textformat(tmp1,5); parse(tmp); tmp1=text(plist); tmp1=RSform(tmp1);// 17.12.23(2lines) tmp=name+"=Rotatedata("+tmp1+"," +textformat(angle,5)+","+RSform(textformat(Pt,5))+")"; //17.12.23 GLIST=append(GLIST,tmp); ); if(Noflg<2, if(isstring(Ltype), Ltype=GetLinestyle(text(Noflg)+Ltype,name); , if(Noflg==1,Ltype=0); ); GCLIST=append(GCLIST,[name,Ltype,opcindy]); ); PdL; ); Translatedata(nm,plist,mov):=Translatedata(nm,plist,mov,[]); Translatedata(nm,plist,mov,options):=( //help:Translatedata("1",["gr1"],[1,2]); regional(tmp,tmp1,tmp2,pdata,Cx,Cy,PdL,Nj,Njj,Kj, opcindy,X2,Y2,Ltype,Noflg,name); name="tr"+nm; tmp=Divoptions(options); Ltype=tmp_1; Noflg=tmp_2; opcindy=tmp_(length(tmp)); pdata=plist; if(isstring(pdata),pdata=[pdata]); if(!isstring(pdata_1) & MeasureDepth(pdata)==1, pdata=[pdata]; ); tmp=Lcrd(mov); Cx=tmp_1; Cy=tmp_2; PdL=[]; forall(pdata,Njj, if(isstring(Njj),Kj=parse(Njj),Kj=Njj); if(MeasureDepth(Kj)==1,Kj=[Kj]); tmp2=[]; forall(Kj,Nj, tmp1=[]; forall(Nj, tmp=LLcrd(#); X2=tmp_1+Cx; Y2=tmp_2+Cy; tmp1=concat(tmp1,[[X2,Y2]]); ); tmp2=concat(tmp2,[tmp1]); ); PdL=concat(PdL,tmp2); ); if(Noflg<3, println("generate Translatedata "+name); tmp1=[]; forall(PdL,tmp2, tmp=apply(tmp2,Pcrd(#)); tmp1=append(tmp1,tmp); ); if(length(tmp1)==1,tmp1=tmp1_1); tmp=name+"="+textformat(tmp1,5); parse(tmp); tmp1=text(plist); tmp1=RSform(tmp1);// 17.12.23 tmp=name+"=Translatedata("+tmp1+","+RSform(textformat(mov,5))+")"; GLIST=append(GLIST,tmp); ); if(Noflg<2, if(isstring(Ltype), Ltype=GetLinestyle(text(Noflg)+Ltype,name); , if(Noflg==1,Ltype=0); ); GCLIST=append(GCLIST,[name,Ltype,opcindy]); ); PdL; ); Scaledata(nm,plist,ratioV):=( regional(tmp); tmp=Lcrd(ratioV); Scaledata(nm,plist,tmp_1,tmp_2,[]); ); Scaledata(nm,plist,Arg1,Arg2):=( //help:Scaledata("1","crAB",3,2,[[0,0]]); regional(tmp,options); if(islist(Arg2), tmp=Lcrd(Arg1); options=Arg2; Scaledata(nm,plist,tmp_1,tmp_2,options); , Scaledata(nm,plist,Arg1,Arg2,[]); ); ); Scaledata(nm,plist,rx,ry,options):=( regional(tmp,tmp1,tmp2,pdata,Theta,Pt,Cx,Cy,PdL, opcindy,Nj,Njj,Kj,X2,Y2,Ltype,Noflg,name); name="sc"+nm; Pt=[0,0]; tmp=Divoptions(options); Ltype=tmp_1; Noflg=tmp_2; opcindy=tmp_(length(tmp)); tmp1=tmp_6; if(length(tmp1)>0, Pt=Lcrd(tmp1_1); ); pdata=plist; if(isstring(pdata),pdata=[pdata]); if(!isstring(pdata_1) & MeasureDepth(pdata)==1, pdata=[pdata]; ); Cx=Pt_1; Cy=Pt_2; PdL=[]; forall(pdata,Njj, if(isstring(Njj),Kj=parse(Njj),Kj=Njj); if(MeasureDepth(Kj)==1,Kj=[Kj]); tmp2=[]; forall(Kj,Nj, tmp1=[]; forall(Nj, tmp=LLcrd(#); X2=Cx+rx*(tmp_1-Cx); Y2=Cy+ry*(tmp_2-Cy); tmp1=concat(tmp1,[[X2,Y2]]); ); tmp2=concat(tmp2,[tmp1]); ); PdL=concat(PdL,tmp2); ); if(Noflg<3, println("generate Scaledata "+name); tmp1=[]; forall(PdL,tmp2, tmp=apply(tmp2,Pcrd(#)); tmp1=append(tmp1,tmp); ); if(length(tmp1)==1,tmp1=tmp1_1); tmp=name+"="+textformat(tmp1,5); parse(tmp); tmp1=text(plist); tmp1=RSform(tmp1); // 17.12.23 tmp=name+"=Scaledata("+tmp1+"," +textformat(rx,5)+","+textformat(ry,5)+","+RSform(textformat(Pt,5))+")"; GLIST=append(GLIST,tmp); ); if(Noflg<2, if(isstring(Ltype), Ltype=GetLinestyle(text(Noflg)+Ltype,name); , if(Noflg==1,Ltype=0); ); GCLIST=append(GCLIST,[name,Ltype,opcindy]); ); PdL; ); Reflectdata(nm,plist,symL):=Reflectdata(nm,plist,symL,[]); Reflectdata(nm,plist,symL,options):=( //help:Reflectdata("1","crAB",[C]); regional(tmp,tmp1,tmp2,pdata,Us,Vs,Pt1,Pt2,Cx,Cy,PdL, opcindy,Nj,Njj,Kj,X1,Y1,X2,Y2,Ltype,Noflg,name); name="re"+nm; Pt=[0,0]; tmp=Divoptions(options); Ltype=tmp_1; Noflg=tmp_2; opcindy=tmp_(length(tmp)); pdata=plist; if(isstring(pdata),pdata=[pdata]); if(!isstring(pdata_1) & MeasureDepth(pdata)==1, pdata=[pdata]; ); Pt1=Lcrd(symL_1); if(length(symL)==1, Pt2=Pt1; , Pt2=Lcrd(symL_2); ); Us=Pt2_1-Pt1_1; Vs=Pt2_2-Pt1_2; PdL=[]; forall(pdata,Njj, if(isstring(Njj),Kj=parse(Njj),Kj=Njj); if(MeasureDepth(Kj)==1,Kj=[Kj]); tmp2=[]; forall(Kj,Nj, tmp1=[]; forall(Nj, tmp=LLcrd(#); X1=tmp_1; Y1=tmp_2; if(Pt1==Pt2, X2=2*Pt1_1-X1; Y2=2*Pt1_2-Y1; , X2=(Us^2-Vs^2)/(Us^2+Vs^2)*X1+2*Us*Vs/(Us^2+Vs^2)*Y1 -2*Vs*(Us*Pt1_2-Vs*Pt1_1)/(Us^2+Vs^2); Y2=2*Us*Vs/(Us^2+Vs^2)*X1-(Us^2-Vs^2)/(Us^2+Vs^2)*Y1 +2*Us*(Us*Pt1_2-Vs*Pt1_1)/(Us^2+Vs^2); ); tmp1=concat(tmp1,[[X2,Y2]]); ); tmp2=concat(tmp2,[tmp1]); ); PdL=concat(PdL,tmp2); ); if(Noflg<3, println("generate Reflectdata "+name); tmp1=[]; forall(PdL,tmp2, tmp=apply(tmp2,Pcrd(#)); tmp1=append(tmp1,tmp); ); if(length(tmp1)==1,tmp1=tmp1_1); tmp=name+"="+textformat(tmp1,5); parse(tmp); tmp1=text(plist); tmp1=RSform(tmp1);// 17.12.23 tmp=name+"=Reflectdata("+tmp1+","+RSform(textformat(symL,5))+")";//17.12.23 GLIST=append(GLIST,tmp); ); if(Noflg<2, if(isstring(Ltype), Ltype=GetLinestyle(text(Noflg)+Ltype,name); , if(Noflg==1,Ltype=0); ); GCLIST=append(GCLIST,[name,Ltype,opcindy]); ); PdL; ); Mksegments():=Mksegments([]); Mksegments(options):=( //help:Mksegments(); regional(segstr,p,q,r,tmp1,tmp2,tmp3); forall(allsegments(),seg, str=text(inspect(seg,"definition")); tmp1=indexof(str,"("); tmp2=indexof(str,";"); tmp3=indexof(str,")"); p=substring(str,tmp1,tmp2-1); q=substring(str,tmp2,tmp3-1); Listplot([parse(p),parse(q)]); ); ); Mkcircles():=Mkcircles([]); Mkcircles(options):=( //help:Mkcircles(): regional(seg,cir,str,p,q,r,tmp1,tmp2,tmp3,tmp4); forall(allcircles(),cir, str=text(inspect(cir,"definition")); tmp1=indexof(str,"("); tmp2=indexof(str,";"); tmp3=indexof(str,")"); tmp4=indexof(str,";",tmp2+1); if(tmp4==0, p=substring(str,tmp1,tmp2-1); q=substring(str,tmp2,tmp3-1); Circledata([parse(p),parse(q)]); , p=substring(str,tmp1,tmp2-1); q=substring(str,tmp2,tmp4-1); r=substring(str,tmp4,tmp3-1); Circledata([parse(p),parse(q),parse(r)]); ); ); ); MakeRarg(arglist):=( regional(str,tmpstr); str=""; forall(arglist, if(isstring(#), tmpstr=Dq+RSslash(#)+Dq; , tmpstr=textformat(#,6); ); str=str+tmpstr+","; ); str=substring(str,0,length(str)-1); str; ); Setax(arglist):=( //help:Setax(["l","x","e","y","n","O","sw"]); //help:Setax([7,"nw"]); regional(tmp); tmp=MakeRarg(arglist); Com1st("Setax("+tmp+")"); ); Htickmark(arglist):=( //help:Htickmark([1,"1",2,"sw","2"]); regional(tmp); tmp=""; tmp=MakeRarg(arglist); Com2nd("Htickmark("+tmp+")"); ); Vtickmark(arglist):=( //help:Vtickmark([1,"1",2,"sw","2"]); regional(tmp); tmp=MakeRarg(arglist); Com2nd("Vtickmark("+tmp+")"); ); Vtick(py):=Vtick(py,MARKLEN,[]); Vtick(py,len):=Vtick(py,len,[]); Vtick(py,len,options):=( //help:Vtick(1,0.1,options); regional(tmp,tmp1,tmp2); tmp="v"+text(round(py*100)); tmp=replace(tmp,"-","m"); tmp1=[0-len/2,py]; tmp2=[0+len/2,py]; Listplot(tmp,[tmp1,tmp2],options); ); Htick(px):=Htick(px,MARKLEN,[]); Htick(px,len):=Htick(px,len,[]); Htick(px,lenorg,options):=( //help:Htick(-1,0.1,options); regional(len,tmp,tmp1,tmp2); tmp=LLcrd([0,lenorg]); len=tmp_2; tmp="h"+text(round(px*100)); tmp=replace(tmp,"-","m"); tmp1=[px,0-len/2]; tmp2=[px,0+len/2]; Listplot(tmp,[tmp1,tmp2],options); ); Drwxy():=( //help:Drwxy(); Com2nd("Drwxy()"); Addax(0); // 16.01.21 ); Drwpt(pstr):=Drawpoint(pstr); Drwpt(ptlist,nn):=( // 16.03.05 from //help:Drwpt(A); //help:Drwpt("[1,1],0"); //help:Drwpt(A,0); //help:Drwpt([1,2],0); Drawpoint(ptlist,nn); ); Drawpoint(pstr):=( if(isstring(pstr), println("Drwpt : "+pstr); Com2nd("Drwpt("+pstr+")"); , Drawpoint(pstr,1); ); ); Drawpoint(ptlistorg,nn):=( regional(ptlist,thick,tmp,tmp1); println("Drwpt : "+text(ptlistorg)); if(islist(ptlistorg), if(MeasureDepth(ptlistorg)==1, ptlist=ptlistorg , ptlist=[ptlistorg] ); , ptlist=[ptlistorg] ); thick=PenThick/PenThickInit;// 16.04.09 from tmp1=max(TenSize/TenSizeInit,1)/8; Setpen(tmp1); // 16.04.09 until forall(ptlist, tmp=textformat(#,5)+","+text(nn); Com2nd("Drwpt("+tmp+")"); // 16.04.09 ); Setpen(thick); // 16.04.09 );// 16.03.05 until Addax(param):=( //help:Addax(0); ADDAXES=textformat(param,5); ); Expr(Pt,Dr,St):=Expr([Pt,Dr,St]); Expr(list):=Expr(list,[]); Expr(listorg,options):=( //16.10.09 //help:Expr([A,"e","f(x)=x^2"]); regional(list,str,tmp,tmp1,tmp2); list=listorg; forall(1..round(length(list)/3), str=list_(3*#); if(!isstring(str),str=format(str,5)); str="$"+str+"$"; list_(3*#)=str; ); Letter(list,options); ); Letter(Pt,Dr,St):=Letter([Pt,Dr,St]); Letter(list):=Letter(list,[]); Letter(list,options):=( //help:Letter([C,"c","Graph of f(x)"]); regional(Nj,Pos,Dir,Str,Off,Dmv,Xmv,Ymv,Noflg,opcindy, opL,aln,sz,clr,bld,ita,tmp,tmp1,tmp2); tmp=Divoptions(options); Noflg=tmp_2; opL=select(options,indexof(#,"->")>0); //16.10.09from tmp=select(opL,indexof(#,"color")); size=12; clr=[0,0,0]; bld=false; ita=false; aln="left"; forall(opL, tmp=indexof(#,"->"); tmp1=removespace(substring(#,0,tmp-1)); tmp2=substring(#,tmp+1,length(#)); if(tmp1=="size",sz=parse(tmp2)); if(tmp1=="color",clr=parse(tmp2)); if(tmp1=="bold",bld=parse(tmp2)); if(tmp1=="ita",ita=parse(tmp2)); );//16.10.09until Off=-4; Dmv=8; Nj=1; while(Nj+2<=length(list), // Pos=textformat(list_Nj,5); Pos=list_Nj; Dir=list_(Nj+1); tmp=indexof(Dir,"s")+indexof(Dir,"n");//16.10.19from if(tmp>0, tmp=indexof(Dir,"w")+indexof(Dir,"e"); if(tmp==0, Dir="c"+Dir;//16.10.08 ); );//16.10.19until Str=list_(Nj+2); if(!isstring(Str),Str=format(Str,5)); // 16.09.30,10.09 tmp=replace(Str,".xy",""); tmp=replace(tmp,".x","(1)"); Str=replace(tmp,".y","(2)"); Str=RSslash(Str); // 17.09.24 Str=replace(Str,"`","'");//180303 tmp=Dq+","+Dq+Str+Dq+")"; if(Noflg==0, Com2nd("Letter("+Lcrd(Pos)+","+Dq+Dir+tmp);//16.10.10 ); if(Noflg<2, Xmv=0;//16.10.13 Ymv=-4; if(indexof(Dir,"n")>0, Ymv=Dmv/2; ); if(indexof(Dir,"s")>0, Ymv=-Dmv*3/2;//16.10.13 ); if(indexof(Dir,"e")>0, Xmv=Dmv/2; Off=0; aln="left"; ); if(indexof(Dir,"w")>0, Xmv=-Dmv/2; Off=0; // 16.09.30from aln="right"; ); if(indexof(Dir,"c")>0, Xmv=0;//16.10.13 Off=0; if(Ymv==0,Ymv=-4);//16.10.08 aln="mid"; // 16.09.30until ); Str=list_(Nj+2); //17.10.17 drawtext(Pcrd(Pos),Str,offset->[Off+Xmv,Off+Ymv], size->sz,color->clr,align->aln,bold->bld,italics->ita);//16.10.09 ); Nj=Nj+3; ); ); Letterrot(pt,dir,str):=Letterrot(pt,dir,0,0,str); Letterrot(pt,dir,movstr,str):=( //help:Letterrot(C,B-A,"AB"): //help:Letterrot(C,B-A,0,5,"AB"): //help:Letterrot(C,B-A,"t0n5","AB"): regional(tmov,nmov,tmp,tmp1,tmp2); tmp1=indexof(movstr,"t"); tmp2=indexof(movstr,"n"); if(tmp1>0, if(tmp2>0,tmp=tmp2-1,tmp=length(movstr)); tmov=parse(substring(movstr,tmp1,tmp)); , tmov=0; ); if(tmp2>0, nmov=parse(substring(movstr,tmp2,length(movstr))); , nmov=0; ); Letterrot(pt,dir,tmov,nmov,str); ); Letterrot(pt,dir,tmov,nmov,str):=( regional(tmp); Letter([pt,"c",str],["notex"]); tmp=replace(str,"\","\\"); //17.10.18 Com2nd("Letterrot("+pt+","+dir+","+tmov+","+nmov+",'"+tmp+"')"); ); Exprrot(pt,dir,str):=Exprrot(pt,dir,0,0,str); Exprrot(pt,dir,movstr,str):=( //help:Exprrot(C,B-A,"d"): //help:Exprrot(C,B-A,0,5,"d"): //help:Exprrot(C,B-A,"t0n5","d"): regional(tmov,nmov,tmp,tmp1,tmp2); tmp1=indexof(movstr,"t"); tmp2=indexof(movstr,"n"); if(tmp1>0, if(tmp2>0,tmp=tmp2-1,tmp=length(movstr)); tmov=parse(substring(movstr,tmp1,tmp)); , tmov=0; ); if(tmp2>0, nmov=parse(substring(movstr,tmp2,length(movstr))); , nmov=0; ); Exprrot(pt,dir,tmov,nmov,str); ); Exprrot(pt,dir,tmov,nmov,str):=( regional(tmp); Expr([pt,"c",str],["notex"]); tmp=replace(str,"\","\\"); //17.10.18 Com2nd("Exprrot("+pt+","+dir+","+tmov+","+nmov+",'"+tmp+"')"); ); Putslider(ptstr,p1,p2):=Slider(ptstr,p1,p2); Slider(ptstr,p1,p2):=( //17.04.11 //help:Slider("A-C-B",[-3,0],[3,0]); regional(pA,pB,pC,seg,sname,Alpha,tmp,tmp1); tmp=indexall(ptstr,"-"); pA=substring(ptstr,0,tmp_1-1); pC=substring(ptstr,tmp_1,tmp_2-1); pB=substring(ptstr,tmp_2,length(ptstr)); seg=pA+pB; Alpha="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; sname=""; forall(1..(length(seg)), tmp=substring(seg,#-1,#); tmp1=indexof(Alpha,tmp); if(tmp1>0, sname=sname+unicode(text(tmp1+96),base->10); , sname=sname+tmp; ); ); Putpoint(pA,p1); Putpoint(pB,p2); Listplot([parse(pA),parse(pB)],["notex","color->[0,0.4,0.4]","size->2"]); // create([sname],"Segment",[parse(pA),parse(pB)]); // tmp2=Listplot("",[p1,p2],["nodata"]); Putonseg(pC,parse("sg"+pA+pB)); // create([pC],"PointOn",[parse(sname),0.5]); ); Putpoint(name,Pt):=Putpoint(name,Pt,Pt); Putpoint(name,Ptinit,Pt):=( //help:Putpoint("A",[1,2],[1,A.y]); regional(ptstr); ptstr=apply(allpoints(),#.name);//16.10.06 if(!contains(ptstr,name), createpoint(name,Pcrd([Ptinit_1,Ptinit_2])); , ptstr=name+".xy="+textformat(Pcrd(Pt),5); parse(ptstr); ); ); Bezierpt(t,ptlist,ctrlist):=( regional(flg3,p0,p1,p2,p3,p4,p5,p6,p7,p8,p9); p0=ptlist_1; p3=ptlist_2; p1=ctrlist_1; if(length(ctrlist)==1, p2=p3; flg3=0; , p2=ctrlist_2; flg3=1; ); if(length(p0)<3, // 15.02.08 p0=Lcrd(p0); p3=Lcrd(p3); p1=Lcrd(p1); p2=Lcrd(p2); ); p4=(1-t)*p0+t*p1; p5=(1-t)*p1+t*p2; p6=(1-t)*p2+t*p3; p7=(1-t)*p4+t*p5; p8=(1-t)*p5+t*p6; p9=(1-t)*p7+t*p8; if(flg3==0,p7,p9); ); Bezier(ptctrlist):=BezierCurve(ptctrlist_3,ptctrlist_1,ptctrlist_2,[]); Bezier(ptctrlist,options):=BezierCurve(ptctrlist_3,ptctrlist_1,ptctrlist_2,options); Bezier(nm,ptlist,ctrlist):=BezierCurve(nm,ptlist,ctrlist,[]); Bezier(nm,ptlist,ctrlist,options):=BezierCurve(nm,ptlist,ctrlist,options); BezierCurve(nm,ptlist,ctrlist):=BezierCurve(nm,ptlist,ctrlist,[]); BezierCurve(nm,ptlistorg,ctrlistorg,options):=( //help:Bezier("1",[A,D],[B,C]); //help:Bezier(options=["Num=10"]); regional(name,Ltype,Noflg,opstr,opcindy,Num, ptlist,ctrlist,tmp,tmp1,tmp2,ii,st,out,list); name="bz"+nm; tmp=Divoptions(options); Ltype=tmp_1; Noflg=tmp_2; opstr=tmp_(length(tmp)-1); opcindy=tmp_(length(tmp)); Num=10; tmp1=tmp_5; forall(tmp1, // 14.12.31 if(substring(#,0,1)=="N", tmp2=indexof(#,"="); Num=parse(substring(#,tmp2,length(#))); opstr=opstr+","+Dq+#+Dq; ); ); ptlist=apply(ptlistorg,Lcrd(#)); // 16.08.16 ctrlist=[]; // 14.12.31 if(length(ctrlistorg)==length(ptlist)-1, forall(ctrlistorg,tmp1, if(MeasureDepth(tmp1)==0,tmp=[tmp1],tmp=tmp1); tmp=apply(tmp,Lcrd(#)); // 16.08.16 ctrlist=append(ctrlist,tmp); ); , forall(1..(length(ptlist)-1),ii, tmp=ctrlistorg_((2*ii-1)..(2*ii)); tmp=apply(tmp,Lcrd(#)); // 16.08.16 ctrlist=append(ctrlist,tmp); ); ); if(!islist(Num), Num=apply(ctrlist,Num); ); list=[]; forall(1..(length(ptlist)-1),ii, tmp1=ptlist_(ii..(ii+1)); tmp2=ctrlist_ii; if(ii==1,st=0,st=1); forall(st..Num_ii, tmp=Bezierpt(#/Num_ii,tmp1,tmp2); list=append(list,tmp); ); ); if(Noflg<3, println("generate Bezier "+name); out=apply(list,Pcrd(#)); tmp=name+"="+textformat(out,5); parse(tmp); tmp1=textformat(ptlist,5); tmp1=RSform(tmp1,2); //17.12.23 tmp2=textformat(ctrlist,5); tmp2=RSform(tmp2,3); //17.12.23 GLIST=append(GLIST,name+"=Bezier("+tmp1+","+tmp2+opstr+")"); ); if(Noflg<2, if(isstring(Ltype), Ltype=GetLinestyle(text(Noflg)+Ltype,name); , if(Noflg==1,Ltype=0); ); GCLIST=append(GCLIST,[name,Ltype,opcindy]); ); list; ); Readcsvsla(fname):=Readplotdigdata(fname,[]); Readcsvsla(fname,options):=Readplotdigdata(fname,options); Readplotdigdata(fname):=Readplotdigdata(fname,[]); Readplotdigdata(fname,options):=( regional(fsc,mv,cmdall,dataL,nd,npt,ptdata,ii,tmp,tmp1,tmp2,tmp3); tmp=Divoptions(options); tmp1=tmp_6; sc=1;//10; mv=[0,0];//[5,5]; forall(tmp1, if(!islist(#),sc=#,mv=#); ); if(indexof(fname,".")>0, tmp=load(fname); , tmp=load(fname+".txt"); ); cmdall=tokenize(tmp,"//"); dataL=[]; forall(2..length(cmdall),ii, tmp1=parse("["+cmdall_ii+"]"); dataL=append(dataL,tmp1); ); if(length(dataL_(length(dataL)))<2, dataL=dataL_(1..(length(dataL)-1)); ); nd=length(dataL_1)/2; npt=length(dataL); ptdata=[]; forall(1..nd,ii, tmp3=[]; forall(1..npt, tmp1=dataL_#_(2*ii-1); tmp2=dataL_#_(2*ii); if(isreal(tmp1), tmp3=append(tmp3,[tmp1,tmp2]); ); ); ptdata=append(ptdata,tmp3); ); tmp1=[]; forall(ptdata, tmp=#/sc; tmp=Translatedata("1",[tmp],-mv,["nodata"]); tmp1=append(tmp1,tmp); ); ptdata=tmp1; ptdata; ); Putbezierdata(name,ptL):=Putbezierdata(name,ptL,[]); Putbezierdata(name,ptL,options):=( regional(psize,Deg,tmp,tmp1,tmp2,p1,p2,pts,ctrs); tmp=Divoptions(options); psize=3; Deg=3; tmp1=tmp_5; forall(tmp1, if(substring(#,0,1)=="D", tmp=indexof(#,"="); Deg=parse(substring(#,tmp,length(#))); ); if(substring(#,0,1)=="S", tmp=indexof(#,"="); psize=parse(substring(#,tmp,length(#))); ); ); pts=[]; ctrs=[]; forall(1..length(ptL), p2=ptL_#; // 16.08.16 if(ispoint(p2), tmp1=text(p2); , tmp1=name+text(#); Putpoint(tmp1,p2,Lcrd(parse(tmp1))); // 16.08.16 ); inspect(parse(tmp1),"ptsize",psize); pts=append(pts,parse(tmp1)); inspect(parse(tmp1),"color",4); if(#>1, p1=Lcrd(ptL_(#-1)); // 16.08.16 p2=Lcrd(ptL_#); // 16.08.16 if(Deg==3, tmp=(2*p1+p2)/3; tmp1=name+"p"+text(#-1); Putpoint(tmp1,tmp,Lcrd(parse(tmp1))); // 16.08.16 inspect(parse(tmp1),"labeled",false); //15.01.22 Letter([parse(tmp1),"ne",tmp1],["notex"]); //15.01.22 inspect(parse(tmp1),"ptsize",psize); inspect(parse(tmp1),"color",3); tmp=(p1+2*p2)/3; tmp2=name+"q"+text(#-1); Putpoint(tmp2,tmp,Lcrd(parse(tmp2))); // 16.08.16 inspect(parse(tmp2),"labeled",false); //15.01.22 Letter([parse(tmp2),"ne",tmp2],["notex"]); //15.01.22 inspect(parse(tmp2),"ptsize",psize); inspect(parse(tmp2),"color",3); ctrs=append(ctrs,[parse(tmp1),parse(tmp2)]); , tmp=(p1+p2)/2; tmp1=name+"p"+text(#-1); Putpoint(tmp1,tmp,Lcrd(parse(tmp1))); // 16.08.16 inspect(parse(tmp1),"labeled",false); //15.01.22 Letter([parse(tmp1),"ne",tmp1],["notex"]); //15.01.22 inspect(parse(tmp1),"ptsize",psize); inspect(parse(tmp1),"color",3); ctrs=append(ctrs,[parse(tmp1)]); ); ); ); [pts,ctrs,name]; ); Bezierstart(n):=( // 2016.02.26 BezierNumber=n; ); Mkbezierptcrv(ptdata):=Mkbezierptcrv(ptdata,[]); Mkbezierptcrv(ptdata,options):=( //help:Mkbezierptcrv([A,B,C,D]); //help:Mkbezierptcrv([[A,B],[C,D]]); //help:Mkbezierptcrv(options=["Num=10"]); // global BezierNumber regional(ptlist,Out,tmp,tmp1,tmp2); if(isstring(ptdata), ptlist=Readcsvsla(ptdata,options); , ptlist=ptdata; ); if(MeasureDepth(ptlist)==1,ptlist=[ptlist]); Out=[]; forall(1..length(ptlist), tmp=floor((BezierNumber-1)/26);// 15.02.23 if(tmp==0,tmp="",tmp=text(tmp)); tmp2=mod(BezierNumber,26); if(tmp2==0,tmp2=26); tmp1=unicode(text(96+tmp2),base->10)+tmp;// 15.03.11 tmp2=Putbezierdata(tmp1,ptlist_#,options); Bezier(tmp2,options); BezierNumber=BezierNumber+1; Out=append(Out,tmp2_(1..2)); ); Out; ); Mkbeziercrv(nm,ptctrL):=Mkbeziercrv(nm,ptctrL,[]); Mkbeziercrv(nm,ptctrL,options):=( //help:Mkbeziercrv("1",[[A,B,C,D],[[P,Q],[R,S],T]]); regional(ptctrLL,name,ptlist,ctrlist,tmp,tmp1,tmp2); if(MeasureDepth(ptctrL)==2,ptctrLL=[ptctrL],ptctrLL=ptctrL); forall(1..length(ptctrLL), name=nm+text(#); ptlist=ptctrLL_#_1; ctrlist=ptctrLL_#_2; Bezier(nm,ptlist,ctrlist,options); // 17.01.06 ); ); Writebezier():=Writebezier(Fhead,"all"); Writebezier(head):=Writebezier(head,"all"); Writebezier(head,seL):=( //help:Writebezier(file); //help:Writebezier(file,"acd"); regional(bz,dt,name,tmp,tmp1,tmp2); bz=select(GLIST,indexof(#,"=Bezier")>0); tmp1=[]; // 16.04.22from if(seL!="all", forall(1..length(seL), tmp=substring(seL,#-1,#); tmp=select(bz,indexof(#,"bz"+tmp)>0); tmp1=concat(tmp1,tmp); ); bz=tmp1;// 16.04.22until ); dt=[head+"n",[[length(bz),0]]]; forall(1..length(bz), tmp=indexof(bz_#,"="); name=substring(bz_#,0,tmp-1); tmp=indexof(bz_#,","+Dq); if(tmp>0, tmp1=substring(bz_#,0,tmp-1)+")"; , tmp1=bz_#; ); tmp1=replace(tmp1,"Bezier(","["); tmp1=replace(tmp1,"list(","["); tmp1=replace(tmp1,")","]"); tmp1=replace(tmp1,",",".xy,"); tmp1=replace(tmp1,"]",".xy]"); tmp1=replace(tmp1,".xy,[",",["); tmp1=replace(tmp1,"].xy","]"); tmp1=replace(tmp1,name,head+text(#)); parse(tmp1); tmp=parse(head+text(#)+"_1"); dt=concat(dt,[head+text(#)+"k",tmp]); tmp=parse(head+text(#)+"_2"); dt=concat(dt,[head+text(#)+"c",tmp]); ); WriteOutData(head+".txt",dt); dt; ); Readbezier(file):=Readbezier(file,[]); Readbezier(file,optionorg):=( //help:Readbezier("xsr"); //help:Readbezier(options=["Num=10","nogeo"]); regional(nn,options,stL,geo,nc,alpha,out,tmp,tmp1,tmp2,tmp3); options=optionorg; tmp=Divoptions(options); stL=tmp_7; geo=0; forall(stL, tmp=Toupper(substring(#,0,1)); if(tmp=="G",geo=1); options=remove(options,[#]); ); ReadOutData(file); tmp=file+"n_1_1"; nn=parse(tmp); out=[]; forall(1..nn,nc, tmp=file+text(nc); tmp1=parse(tmp+"k"); tmp2=parse(tmp+"c"); if(MeasureDepth(tmp2)==1,tmp2=[tmp2]); // 16.04.22from if(geo==1, alpha="abcdefghijklmnopqrstuvwxyz"; forall(1..length(tmp1), tmp="k"+BezierNumber+"n"+text(nc)+substring(alpha,#-1,#); Putpoint(tmp,tmp1_#,parse(tmp+".xy")); inspect(parse(tmp),"labeled",false); inspect(parse(tmp),"ptsize",3); tmp1_#=parse(tmp+".xy"); ); forall(1..length(tmp2), tmp="c"+BezierNumber+"n"+text(nc)+substring(alpha,#-1,#)+"1"; Putpoint(tmp,tmp2_#_1,parse(tmp+".xy")); inspect(parse(tmp),"labeled",false); inspect(parse(tmp),"color",4); inspect(parse(tmp),"ptsize",3); tmp2_#_1=parse(tmp+".xy"); tmp="c"+BezierNumber+"no"+text(nc)+substring(alpha,#-1,#)+"2"; Putpoint(tmp,tmp2_#_2,parse(tmp+".xy")); inspect(parse(tmp),"labeled",false); inspect(parse(tmp),"color",4); inspect(parse(tmp),"ptsize",3); tmp2_#_2=parse(tmp+".xy"); ); BezierNumber=BezierNumber+1; ); Bezier(file+text(nc),tmp1,tmp2,options);// 16.04.22until out=append(out,"bz"+tmp); ); out; ); Ospline(nm,ptlist):=Ospline(nm,ptlist,[]); Ospline(nm,ptlist,options):=( //help:Ospline("1",ptlist,[options]); regional(tmp,tmp1,tmp2,list,ptL,ctrL,name,closed,flg, p0,p1,p2,p3,pQ,pR,cc,p01,p02,p11,p12,p21,p22,p31,p32); name="o"+nm; if(isstring(ptlist),list=parse(ptlist),list=ptlist); if(|list_1-list_(length(list))|<10^(-6),closed=1,closed=0); // list=apply(list,LLcrd(#)); ctrL=[]; forall(1..(length(list)-1), flg=0; p1=Lcrd(list_#); // 16.08.16 p2=Lcrd(list_(#+1)); // 16.08.16 if(#==1 % #==length(list)-1, flg=1; if(closed==0, pQ=(p1+2*p2)/3; // 15.09.21 // 16.08.16 pR=(2*p1+p2)/3; // 16.08.16 ctrL=append(ctrL,[pQ,pR]); flg=2; , if(#==1, p0=Lcrd(list_(length(list)-1)); // 16.08.16 p3=Lcrd(list_(#+2)); // 16.08.16 , p0=Lcrd(list_(#-1)); // 16.08.16 p3=Lcrd(list_2); // 16.08.16 ); ); ); if(flg<=1, if(flg==0, p0=Lcrd(list_(#-1)); // 16.08.16 p3=Lcrd(list_(#+2)); // 16.08.16 ); tmp=1+sqrt((1+Dotprod(p2-p0,p3-p1)/|p2-p0|/|p3-p1|)/2); cc=4*|p2-p1|/3/(|p2-p0|+|p3-p1|)/tmp; pQ=p1+cc*(p2-p0); // 15.09.21 // 16.08.16 pR=p2+cc*(p1-p3); // 16.08.16 ctrL=append(ctrL,[pQ,pR]); ); ); // list=apply(list,LLcrd(#)); // 16.08.16 // ctrL=apply(ctrL,LLcrd(#)); if(closed==0, // 15.09.21 p1=ctrL_2_1; p2=Lcrd(list_2); // 16.08.16 pQ=p2+(p2-p1); ctrL_1=[pQ]; tmp=length(ctrL); tmp1=ctrL_(tmp-1); p1=ctrL_(tmp-1)_2; p2=Lcrd(list_(tmp)); // 16.08.16 pQ=p2+(p2-p1); ctrL_tmp=[pQ]; ); Bezier("o"+nm,list,ctrL,options); ); CRspline(nm,ptL):=CRspline(nm,ptL,[]); CRspline(nm,ptL,options):=( // Catmull-Rom spline //help:CRspline("1",[A,B,C,A]); regional(name,ptlist,ctrpts,eqL,opcindy,c,v,tmp,tmp1,tmp2,ctrlist,cflg); name="crsp"+nm; if(MeasureDepth(ptL)==1,tmp=[ptL],tmp=ptL); ptlist=tmp_1; if(length(tmp)==1, cflg=1; , cflg=0; ctrpts=tmp_2; ); c=1/6; tmp=Divoptions(options); eqL=tmp_5; opcindy=tmp_(length(tmp)); // 15.03.05 forall(eqL, if(substring(#,0,1)=="R", tmp2=indexof(#,"="); c=parse(substring(#,tmp2,length(#))); ); ); ptlist=apply(ptlist,Lcrd(#)); // 16.08.16 ctrlist=[]; forall(1..(length(ptlist)-1), if(#==1, if(cflg==0, tmp1=ctrpts_1; , v=ptlist_2-ptlist_(length(ptlist)-1); tmp1=ptlist_#+c*v; ); , v=ptlist_(#+1)-ptlist_(#-1); tmp1=ptlist_#+c*v; ); if(#==length(ptlist)-1, if(cflg==0, tmp2=ctrpts_2; , v=ptlist_2-ptlist_#; tmp2=ptlist_(#+1)-c*v; ); , v=ptlist_(#+2)-ptlist_#; tmp2=ptlist_(#+1)-c*v; ); tmp=select(options,indexof(text(#),"->")>0); tmp=append(tmp,"notex"); //15.03.05 Pointdata(name+text(#),[tmp1,tmp2],tmp); ctrlist=append(ctrlist,[tmp1,tmp2]); ); Bezier(nm,ptlist,ctrlist,options); ); Beziersmooth(nm,ptL):=Bzspline(nm,ptL,[]); //help:Beziersmooth("1",[A,B,C,A]); Beziersmooth(nm,ptL,options):=Bzspline(nm,ptL,options); Bzspline(nm,ptL):=Bzspline(nm,ptL,[]); Bzspline(nm,ptLorg,options):=( // smooth bezier regional(name,Eps,ptL,pt,pt1,pt2,pt3,npt,lstr, tmp,tmp1,tmp2,cflg,ctrlist); name="bzsp"+nm; Eps=10^(-3); ptL=apply(ptLorg,Lcrd(#)); // 16.08.16 if(|ptL_1-ptL_(length(ptL))|1 % cflg==1, tmp1="c"+text(#); inspect(parse(tmp1),"alpha",0.3); ); tmp1="C"+text(#)+"p"; tmp2="C"+text(#)+"q"; inspect(parse(tmp1),"ptsize",3); inspect(parse(tmp1),"color",3); inspect(parse(tmp2),"ptsize",3); inspect(parse(tmp2),"color",3); tmp=[parse(tmp1),parse(tmp2)]; ctrlist=append(ctrlist,tmp); ); Bezier(nm,ptL,ctrlist,options); [ptL,ctrlist]; ); Beziersym(nm,ptL):=Bzsspline(nm,ptL,[]); Beziersym(nm,ptL,options):=Bzsspline(nm,ptL,options); Bzsspline(nm,ptL):=Bzsspline(nm,ptL,[]); Bzsspline(nm,ptLorg,options):=( // smooth bezier with symmetric control points regional(name,Eps,ptL,pt,pt1,pt2,pt3,npt,lstr, tmp,tmp1,tmp2,cflg,ctrlist); name="bzssp"+nm; Eps=10^(-3); ptL=apply(ptLorg,Lcrd(#)); // 16.08.16 if(|ptL_1-ptL_(length(ptL))|Eps, pcl=list; pcl_1=2*list_1-list_2; pcl_k=2*list_k-list_(k-1); , pcl=concat(list,[list_2]); ); ctrl=apply(2..(length(pcl)-1),[pcl_#]); ptl=apply(1..(length(pcl)-1),(pcl_#+pcl_(#+1))/2); [ptl,ctrl]; ); Bspline(nm,ctrL):=Bspline(nm,ctrL,[]); Bspline(nm,ctrL,options):=( //help:Bspline("",[A,B,C]); regional(list,tmp); list=Listbspline2bz(ctrL); tmp=BezierCurve("b"+nm,list_1,list_2,options); tmp; ); MeetCurve(Crv,Xorg,Yorg):=( regional(Cv,tmp,tmp1,tmp2,X0,Y0,x1,x2,y1,y2,Ylist,Ban,Tate); if(isstring(Crv),Cv=parse(Crv),Cv=Crv); if(MeasureDepth(Cv)==2,Cv=Cv_1); Cv=apply(Cv,LLcrd(#)); // 14.12.18 while(length(Cv)==1, Cv=Cv_1; ); Cv=apply(Cv,Lcrd(#)); tmp1=min(apply(Cv,#_1)); tmp2=max(apply(Cv,#_1)); if(isstring(Xorg),X0=parse(Xorg),X0=Xorg); if(isstring(Yorg),Y0=parse(Yorg),Y0=Yorg); if(X0tmp2, X0=tmp2; ); ); tmp1=select( 1..(length(Cv)-1),Cv_#_1<=X0 & X0<=Cv_(#+1)_1); tmp2=select( 1..(length(Cv)-1),Cv_#_1>=X0 & X0>=Cv_(#+1)_1); tmp2=remove(tmp2,common(tmp2,tmp1)); Ban=concat(tmp1,tmp2); Tate=select(Ban, abs(Cv_#_1-Cv_(#+1)_1)<= 10^(-2)*abs(Cv_#_2-Cv_(#+1)_2) ); Ban=remove(Ban,Tate); Ylist=[]; forall(Ban, tmp=Cv_#; x1=tmp_1; y1=tmp_2; tmp=Cv_(#+1); x2=tmp_1; y2=tmp_2; tmp=((x2-X0)*y1+(X0-x1)*y2)/(x2-x1); Ylist=append(Ylist,tmp); ); forall(Tate, tmp=Cv_#; x1=tmp_1; y1=tmp_2; tmp=Cv_(#+1); x2=tmp_1; y2=tmp_2; tmp1=min([y1,y2]); tmp2=max([y1,y2]); if(Y0tmp2, tmp=tmp2; , tmp=Y0; ); ); Ylist=append(Ylist,tmp); ); tmp=sort(Ylist,abs(#_1-Y0)); [X0,tmp_1]; ); PutonLine(name,p1,p2):=PutonLine(name,p1,p2,[]); PutonLine(name,p1org,p2org,options):=( //help:PutonLine("C","sgAB"); //help:PutonLine("C",pA,pB); regional(par,p1,p2,dx,dy,tmp,tmp1,tmp2); par=0.5; tmp=Divoptions(options); if(length(tmp_6)>0, par=tmp_6_1; ); p1=Lcrd(p1org);//16.10.11from p2=Lcrd(p2org); dx=p2_1-p1_1; dy=p2_2-p1_2; tmp1=(1-par)*p1+par*p2; if(abs(dx)>abs(dy), tmp=name+".x"; tmp2="["+tmp+",dy/dx*("+tmp+"-p1_1)+p1_2]";//16.10.11until Putpoint(name,tmp1,parse(tmp2)); , if(abs(dy)>0, tmp=name+".y"; tmp2="[dx/dy*("+tmp+"-p1.y)+p1_1,"+tmp+"]"; Putpoint(name,tmp1,parse(tmp2)); , tmp2=p1;//16.10.11 Putpoint(name,tmp1,tmp2); ); ); ); PutonSeg(name,sgstr):=( regional(seg,p1,p2); if(isstring(sgstr),seg=parse(sgstr),seg=sgstr); PutonSeg(name,LLcrd(seg_1),LLcrd(seg_2)); ); PutonSeg(name,p1,p2):=PutonSeg(name,p1,p2,[]); PutonSeg(name,p1org,p2org,options):=( //help:PutonSeg("C","sgAB"); //help:PutonSeg("C",pA,pB); regional(par,dx,dy,p,tmp,tmp1,tmp2); par=0.5; tmp=Divoptions(options); if(length(tmp_6)>0, par=tmp_6_1; ); p1=Lcrd(p1org);//16.10.11from p2=Lcrd(p2org); PutonLine(name,p1,p2,[par]); dx=p2_1-p1_1; dy=p2_2-p1_2; p=parse(name+".xy"); p=LLcrd(p); if(abs(dx)>abs(dy) & (p_1-p1_1)*(p_1-p2_1)>0, if(|p-p1|<|p-p2|, parse(name+".xy=Pcrd(p1)"); , parse(name+".xy=Pcrd(p2)"); ); ); if(abs(dx)0, if(|p-p1|<|p-p2|, parse(name+".xy=Pcrd(p1)"); , parse(name+".xy=Pcrd(p2)");//16.10.11until ); ); ); PutonCurve(pn,crv):=PutonCurve(pn,crv,[]); PutonCurve(pn,crv,options):=( //help:PutonCurve("A","gr1"); regional(Pmt,pstr,optionL,leftlim,rightlim,tmp,tmp1,Flg,Msg); if(!islist(options),optionL=[options],optionL=options); leftlim=XMIN; rightlim=XMAX; Flg=0; Msg="y"; forall(optionL, if(isstring(#), // 16.02.10 from tmp=indexof(#,"="); tmp1=Toupper(substring(#,tmp,tmp+1)); if(tmp1=="N", Msg="n"); // 16.02.10 until , if(Flg==0, leftlim=#; Flg=Flg+1; , rightlim=#; ); ); ); Pmt=MeetCurve(crv,leftlim,0); pstr=apply(allpoints(),textformat(#,5)); // 15.04.07 if(!contains(pstr,pn), createpoint(pn,Pcrd(Pmt)); , tmp1=parse(pn+".x"); if(tmp1< leftlim % tmp1>rightlim, if(tmp1< leftlim,tmp= leftlim, tmp=rightlim); Pmt=MeetCurve(crv,textformat(tmp,5),pn+".y"); , Pmt=MeetCurve(crv,pn+".x",pn+".y"); ); ptstr=pn+".xy="+textformat(Pcrd(Pmt),5)+";"; parse(ptstr); ); if(Msg=="y", println("Put "+pn+" on Curve "+text(crv)); ); ); CrossPoint(name,Crv1,Crv2,range):=( regional(Mx1,Mx2,Mx3,tmp,Crs1,Crs2,Crs3,Crs4,df1,df2); Mx1=range_1; Mx2=range_2; repeat(15, Mx3=(Mx1+Mx2)/2; Crs1=MeetCurve(Crv1,Mx1,0); Crs2=MeetCurve(Crv2,Mx1,0); Crs3=MeetCurve(Crv1,Mx3,0); Crs4=MeetCurve(Crv2,Mx3,0); df1=Crs1_2-Crs2_2; df2=Crs3_2-Crs4_2; if((df1>0 & df2>0) % (df1<0 & df2<0), Mx1=Mx3; , Mx2=Mx3; ); ); Putpoint(name,Crs1); ); Setscaling(sc):=( //help:Setscaling(3); SCALEX=1; SCALEY=sc; Com0th("Setscaling("+sc+")"); Setwindow("Msg=no"); ); Periodfun(defL,rep):=Periodfun(defL,rep,[]); Periodfun(defL,rep,optionorg):=( // 16.11.24 //help:Periodfun(["0",[-1,0],"1",1,[0,1],1],2(num of repetition),options); //help:Periodfun(options=["Con=y"]); //help:Periodfun(defL=[function string, range, devision number,...]); regional(nn,fun,range,num,options,nr,maxfun, tmp,tmp1,tmp2,eqL,connect,minx,maxx,pdata,Eps,prept); options=optionorg; tmp=Divoptions(options); eqL=tmp_5; connect="Y"; forall(eqL, tmp=indexof(#,"="); tmp2=substring(#,tmp,tmp+1); tmp=substring(#,0,3); if(Toupper(tmp)=="CON", connect=Toupper(tmp2); options=remove(options,[#]); ); ); minx=10000; maxx=-10000; mxfun=""; pdata=[]; forall(1..(length(defL)/3),nn, fun=defL_(3*nn-2); range=defL_(3*nn-1); tmp1=if(isstring(range_1),parse(range_1),range_1); //17.06.11(2lines) tmp2=if(isstring(range_2),parse(range_2),range_2); minx=min(minx,tmp1); maxx=max(maxx,tmp2); num=defL_(3*nn); options=append(options,"Num="+text(num)); Plotdata("pe"+text(nn),fun, "x="+textformat([tmp1,tmp2],5),options); pdata=append(pdata,"grpe"+text(nn)); tmp1=range_1; //17.06.11(4lines) if(isstring(tmp1),tmp1=replace(tmp1,"pi","%pi"),tmp1=format(tmp1,5)); tmp2=range_2; if(isstring(tmp2),tmp2=replace(tmp2,"pi","%pi"),tmp2=format(tmp2,5)); mxfun=mxfun+"elseif ("+tmp1+ "<=x and x<"+tmp2+") then "+fun+" "; ); per=maxx-minx; forall(1..rep,nr, tmp1=[]; forall(pdata, Translatedata("p"+#+text(nr),#,[per*nr,0],options); Translatedata("m"+#+text(nr),#,[-per*nr,0],options); tmp1=concat(tmp1,["trp"+#+text(nr),"trm"+#+text(nr)]); ); ); pdata=concat(pdata,tmp1); if(connect=="Y", Eps=10^(-5); pdata=sort(pdata,[parse(#)_1_1]); prept=parse(pdata_1)_1; forall(1..(length(pdata)), tmp=parse(pdata_#); tmp1=tmp_1; tmp2=tmp_(length(tmp)); if(|prept-tmp1|>Eps, Listplot("con"+text(#),[prept,tmp1],append(options,"da")); ); prept=tmp_(length(tmp)); ); ); mxfun=substring(mxfun,4,length(mxfun)-1); [mxfun,per]; ); Fourierseries(nm,coeff,per,nterm):= Fourierseries(nm,coeff,per,nterm,[]); // 16.11.24 Fourierseries(nm,coeff,per,nterm,options):=( //help:Fourierseries("1",[c0,cn,sn],period,numterm,options); regional(c0,cn,sn,fs,tmp,tmp1,tmp2); c0=coeff_1; if(!isstring(c0),c0=format(c0,5)); c0=replace(c0,"%pi","pi"); cn=coeff_2; if(!isstring(cn),cn=format(cn,5)); cn=replace(cn,"%pi","pi"); sn=coeff_3; if(!isstring(sn),sn=format(sn,5)); sn=replace(sn,"%pi","pi"); fs=c0; forall(1..nterm, tmp=parse(Assign(cn,["n",#])); tmp1=Assign("("+format(tmp,5)+")*cos(n*2*pi/per*x)", ["n",#,"per",per]); tmp=parse(Assign(sn,["n",#])); tmp2=Assign("("+format(tmp,5)+")*sin(n*2*pi/per*x)", ["n",#,"per",per]); fs=fs+"+"+tmp1+"+"+tmp2; ); Plotdata("four"+nm,fs,"x",options); ); Tabledatalight(nm,xLst,yLst,rmvL):=Tabledatalight(nm,xLst,yLst,rmvL,[]); Tabledatalight(nm,xLst,yLst,rmvL,optionorg):=( //help:Tabledatalight("",xLst,yLst,rmvL,[2,"Rng=y"]); regional(options,rng,name,upleft,ul,flg,tick,eqL,reL,n,m,xsize,ysize, rlist,clist,Tb,tmp,tmp1,tmp2,tmp3,Eps); // name="tb"+nm; name="tb"; options=optionorg; tmp=Divoptions(options); eqL=tmp_5; //16.12.16from reL=tmp_6; rng="Y"; forall(eqL, tmp=indexof(#,"="); tmp1=Toupper(substring(#,0,2)); tmp2=Toupper(substring(#,tmp,tmp+1)); if(tmp1=="RN", rng=tmp2; options=remove(options,[#]); ); );//16.12.16until tick=1; flg=0; forall(reL, if(flg==0, tick=#; flg=flg+1; , upleft=tmp_6_1; ); ); tmp=sum(yLst); upleft=[0,tmp]; TableOptions=options; // 16.11.28 println("Tabledatalight "+name+" generated"); ul=upleft/10; m=length(xLst); n=length(yLst); xsize=sum(xLst); ysize=sum(yLst); clist=[ul]; rlist=[ul]; forall(1..m, tmp1=clist_(#)_1+xLst_#/10; clist=append(clist,[tmp1,clist_1_2]); ); forall(1..n, tmp1=rlist_(#)_2-yLst_#/10; rlist=append(rlist,[0,tmp1]); ); Tb=[clist,rlist]; tmp=name+"="+Tb; parse(tmp); forall(0..m, tmp1="c"+text(#)+"r0"; tmp2="c"+text(#)+"r"+text(n); Tlistplot("c"+text(#)+"r0r"+text(n),[tmp1,tmp2],options); if(mod(#,tick)==0 % #==m, tmp=clist_(#+1); drawtext(clist_(#+1)-[0.04,-0.1],"c"+text(#)); ); ); forall(0..n, tmp1="c0r"+text(#); tmp2="c"+text(m)+"r"+text(#); Tlistplot("r"+text(#)+"c0c"+text(m),[tmp1,tmp2],options); if(mod(#,tick)==0 % #==n, tmp=rlist_(#+1); drawtext(rlist_(#+1)-[0.4,0.1],"r"+text(#)); ); ); Tsegrmv(rmvL,options); Addax(0); Eps=10^(-3); tmp1=clist_(length(clist)); tmp2=rlist_1; tmp3=rlist_(length(rlist)); if(rng=="Y", // 16.12.16 Setwindow([0-Eps,tmp1_1+Eps],[tmp3_2-Eps,tmp2_2+Eps]); ); Tb; ); Tabledata(nm,n,m,xsize,ysize,rmvL):= Tabledata(nm,n,m,xsize,ysize,rmvL,[]); Tabledata(nm,n,m,xsize,ysize,rmvL,options):=( //help:Tabledata("",xLst,yLst,rmvL,[2,"Rng=y"]); regional(Tb,name,tmp,xLst,yLst); name="tb"+nm; xLst=apply(1..n,xsize/n); yLst=apply(1..m,ysize/m); Tabledata(nm,xLst,yLst,rmvL,options) ); Tabledata(nm,xLst,yLst,rmvL):=Tabledata(nm,xLst,yLst,rmvL,[]); Tabledata(nm,xLst,yLst,rmvL,optionorg):=( //help:Tabledata("",xLst,yLst,rmvL,[2,"Rng=y"]); regional(name,options,eqL,reL,rng,upleft,ul,flg,tick,n,m,xsize,ysize, rlist,clist,Tb,tmp,tmp1,tmp2,tmp3,Eps); // name="tb"+nm; name="tb"; tmp=sum(yLst); upleft=[0,tmp]; options=optionorg; tmp=Divoptions(options); eqL=tmp_5; //16.12.16from reL=tmp_6; rng="Y"; forall(eqL, tmp=indexof(#,"="); tmp1=Toupper(substring(#,0,2)); tmp2=Toupper(substring(#,tmp,tmp+1)); if(tmp1=="RN", rng=tmp2; options=remove(options,[#]); ); );//16.12.16until tick=1; flg=0; forall(reL, if(flg==0, tick=#; flg=flg+1; , upleft=tmp_6_1; ); ); TableOptions=options; // 16.11.28 println("Tabledata "+name+" generated"); ul=upleft/10; m=length(xLst); n=length(yLst); xsize=sum(xLst); ysize=sum(yLst); clist=[ul]; rlist=[ul]; forall(1..m, tmp1=clist_(#)_1+xLst_#/10; clist=append(clist,[tmp1,clist_1_2]); ); forall(1..n, tmp1=rlist_(#)_2-yLst_#/10; rlist=append(rlist,[0,tmp1]); ); Tb=[clist,rlist]; tmp=name+"="+Tb; parse(tmp); forall(0..m, tmp="C"+text(#); tmp1="c"+text(#)+"r0"; if(#==0, Putpoint(tmp,Tgrid(tmp1)); , Putpoint(tmp,Tgrid(tmp1),[parse(tmp+".x"),C0.y]); clist_(#+1)=parse(tmp+".xy"); ); inspect(parse(tmp),"ptsize",3); inspect(parse(tmp),"labeled",false); if(mod(#,tick)==0 % #==m, tmp=clist_(#+1); drawtext(clist_(#+1)-[0.04,-0.1],"c"+text(#)); ); ); forall(0..n, tmp="R"+text(#); tmp1="c0r"+text(#); if(#==0, Putpoint(tmp,Tgrid(tmp1)); , Putpoint(tmp,Tgrid(tmp1),[R0.x,parse(tmp+".y")]); rlist_(#+1)=parse(tmp+".xy"); ); Putpoint(tmp,Tgrid(tmp1),[R0.x,parse(tmp+".y")]); inspect(parse(tmp),"ptsize",3); inspect(parse(tmp),"labeled",false); if(mod(#,tick)==0 % #==n, tmp=rlist_(#+1); drawtext(rlist_(#+1)-[0.4,0.1],"r"+text(#)); ); ); Tb=[clist,rlist]; tmp=name+"="+Tb; parse(tmp); forall(0..m, tmp1="c"+text(#)+"r0"; tmp2="c"+text(#)+"r"+text(n); Tlistplot("c"+text(#)+"r0r"+text(n),[tmp1,tmp2],options); if(#=n1 & m2<=n2, gc=#; flg=1; ); ); ); if(flg==1, Changestyle([gc_1],["nodisp"]); tail=""; if(indexof(hd,"r")>0, tail=hd; hd=""; ); if(n1=tmp_1) & (tsg_2<=tmp_2), sg=tmp; Changestyle(#,["nodisp"]); ); ); if(length(sg)==0, println("No segment includes "+grid); , if(sb=="c",str=sb+"no"+head,str=head+sb+"no"); if(sg_10, posdir_2=posdir_2-dy; posstr=replace(posstr,"b","n"); ); if(indexof(dir,"t")>0, posdir_2=posdir_2+dy; posstr=replace(posstr,"t","s"); ); if(indexof(dir,"l")>0, posdir_1=posdir_1-dx; posstr=replace(posstr,"l","e"); ); if(indexof(dir,"r")>0, posdir_1=posdir_1+dx; posstr=replace(posstr,"r","w"); ); Letter(posdir,posstr,text(lttr)); ); Putcellexpr(pos1,pos2,dir,ex):=Putcellexpr("",pos1,pos2,dir,ex); Putcellexpr(Tbdata,pos1,pos2,dir,ex):=( //help:Putcellexpr("c0r0","c2r1","lt","abc"); //help:Putcellexpr(2,3,"c","\sin x"); Putcell(Tbdata,pos1,pos2,dir,"$"+text(ex)+"$"); ); Putrow(nrow,dir,lttrL):=Putrow("",nrow,dir,lttrL); Putrow(Tbdata,nrow,dir,lttrL):=( //help:Putrow(1,"c",["x","y","z"]); regional(tmp,tmp1,mcol); mcol=length(lttrL); forall(1..mcol, Putcell(Tbdata,#,nrow,dir,lttrL_#); ); ); Putrowexpr(nrow,dir,exL):=Putrowexpr("",nrow,dir,exL); Putrowexpr(Tbdata,nrow,dir,exL):=( //help:Putrowexpr(2,"r",["x","y","z"]); regional(lttrL); lttrL=apply(exL,"$"+#+"$"); Putrow(Tbdata,nrow,dir,lttrL); ); PutcoL(mcol,dir,lttrL):=PutcoL("",mcol,dir,lttrL); PutcoL(Tbdata,mcol,dir,lttrL):=( //help:PutcoL(1,"c",["x","y","z"]); regional(tmp,tmp1,nrow); nrow=length(lttrL); forall(1..nrow, Putcell(Tbdata,mcol,#,dir,lttrL_#); ); ); PutcoLexpr(mcol,dir,exL):=PutcoLexpr("",mcol,dir,exL); PutcoLexpr(Tbdata,mcol,dir,exL):=( //help:PutcoLexpr(2,"r",["x","y","z"]); regional(lttrL); lttrL=apply(exL,"$"+#+"$"); PutcoL(Tbdata,mcol,dir,lttrL); ); Setrange():=( //help:Setrange(); SW.xy=Pcrd([XMIN,YMIN]); NE.xy=Pcrd([XMAX,YMAX]); drawpoly([Pcrd([XMIN,YMIN]), Pcrd([XMAX,YMIN]), Pcrd([XMAX,YMAX]),Pcrd([XMIN,YMAX])],color->[1,1,1]); ); Sciform(list):=( regional(plotlist,comp,pos,out,out2,nn,strL,flg, tmp,tmp1,tmp2,tmp3,Nj); plotlist=Flatten([list]); out=replace(plotlist_1,".xy",""); out=replace(out,".x","(1)"); out=replace(out,".y","(2)"); if(length(plotlist)==1, comp=[]; forall(1..length(out), comp=append(comp,substring(out,#-1,#)); ); out=""; pos=0; forall(comp, if(#!="'", out=out+#; , if(pos==0, tmp=indexof(out,"Assign("); if(substring(out,length(out)-7,length(out))=="Assign(", out=out+"'"; pos=1; , out=out+"Assign('"; pos=2; ); , if(pos==2, out=out+"')"; , out=out+"'"; ); pos=0; ); ); ); , forall(2..length(plotlist), comp=plotlist_#; if(isstring(comp), pos=indexof(comp,"Assign("); if(pos>0, comp=substring(comp,6,length(comp)); ); out=out+"Assign("; comp=replace(comp,".xy",""); comp=replace(comp,".x","(1)"); comp=replace(comp,".y","(2)"); out=out+"'"+comp+"'"; out=out+"),"; ); if(islist(comp), forall(comp, out=out+"'"+#+"',"; ); ); ); if(length(plotlist)>1, out=substring(out,0,length(out)-1); out=out+");"; ); ); pos=[]; forall(1..length(out), tmp=indexof(substring(out,#-1,length(out)),"Assign"); if(tmp>0, tmp1=#-1+tmp; if(length(pos)==0, pos=[tmp1]; , if(pos_(length(pos))0, strL=[]; Nj=0; forall(pos, tmp=substring(out,Nj,#-1); strL=append(strL,tmp); Nj=#-1; ); strL=append(strL,substring(out,Nj,length(out))); out=""; forall(strL, if(indexof(#,"Assign")==0, out=out+#; , tmp=indexof(#,"('"); tmp1=indexof(#,"')"); tmp2=substring(#,tmp+1,tmp1-2); tmp3=substring(#,tmp1-2,length(#)); if(indexof(tmp2,"=")==0, out=out+#; , tmp=substring(tmp2,0,indexof(tmp2,"=")); out=out+"'"+tmp+"'+"+"Assign('"; tmp=substring(tmp2,indexof(tmp2,"="),length(tmp2)); out=out+tmp+tmp3; ); ); ); ); out2=""; // patched 16.01.21 from nn=length(out); flg=0; forall(1..nn, if(flg==0, tmp=indexof(out,"='+Assign('"); if(tmp==0, out2=out2+out; flg=1; , out2=out2+substring(out,0,tmp); out=substring(out,tmp+10,length(out)); tmp=indexof(out,"'"); // 16.04.19 from tmp1=substring(out,0,tmp-1); tmp2="1234567890"; tmp=apply(1..length(tmp1), indexof(tmp2,substring(tmp1,#-1,#))); tmp=min(tmp); if(tmp==0, // 16.04.19 until out2=out2+"'+Assign('"; , tmp=indexof(out,"'"); out=substring(out,0,tmp)+substring(out,tmp+1,length(out)); // 16.04.18 until ); ); ); ); out2=replace(out2,"Dist=","D="); out2=replace(out2,"Dis=","D="); out2; ); RSform(str):=RSform(str,3); RSform(str,listfrom):=( //help:RSform(string,listfrom); regional(posL,mxlv,rep1,rep2,rep3,prev,out, tmp,tmp1,tmp2); rep1="c("; rep2="c("; rep3="list("; if(listfrom<3,rep2="list("); if(listfrom==1,rep1="list("); posL=Bracket(str,"[]"); tmp=apply(posL,#_2); mxlv=max(tmp); out=""; prev=0; forall(posL, out=out+substring(str,prev,#_1-1); prev=#_1; if(#_2>0, tmp1=select(posL,tmp,(tmp_2<0)&(tmp_1>#_1)); tmp1=tmp1_1_1; tmp=substring(str,#_1,tmp1); if(#_2==mxlv,out=out+rep1); if(#_2==mxlv-1,out=out+rep2); if(#_2<=mxlv-2,out=out+rep3); , out=out+")"; ); ); out=out+substring(str,prev,length(str)); out=replace(out,".xy",""); out=replace(out,".x","[1]"); out=replace(out,".y","[2]"); out=replace(out,"c(1)","[1]");//17.10.06(2lines) out=replace(out,"c(2)","[2]"); out; ); RSslash(str):=( //17.09.24 regional(tmp); tmp=replace(str,"\","\\"); // tmp=replace(tmp,"\\\\","\\"); tmp; ); Rform(list):=( regional(plotlist,comp,pos,out,strL,tmp,tmp1,tmp2,tmp3,Nj); out=list; out=replace(out,"[[[","list([["); out=replace(out,"[","c("); out=replace(out,"]",")"); out=replace(out,".xy",""); out=replace(out,".x","[1]"); out=replace(out,".y","[2]"); out; ); Defvar(varstr):=( regional(name,value,tmp,tmp1); if(isstring(varstr), parse(varstr); tmp=indexof(varstr,"="); name=substring(varstr,0,tmp-1); value=substring(varstr,tmp,length(varstr)); value=parse(value); tmp1=select(1..length(VLIST),VLIST_#_1==name); if(length(tmp1)>0, tmp=tmp1_1; VLIST_tmp=[name,value]; , VLIST=prepend([name,value],VLIST); ); , forall(1..(length(varstr)/2), // 16.11.16from name=varstr_(2*#-1); value=varstr_(2*#); Defvar(name,value); ); // 16.11.16until ); ); Defvar(name,value):=( //help:Defvar("a",0.3); //help:Defvar(["a",0.3,"b",2]); regional(tmp,tmp1); if(islist(value), tmp1="["; forall(value, if(isstring(#), // 16.11.14 tmp1=tmp1+Dq+#+Dq+","; // 16.11.14 , tmp1=tmp1+format(#,5)+","; ); ); tmp1=substring(tmp1,0,length(tmp1)-1)+"]"; , tmp1=format(value,5); ); tmp=name+"="+tmp1; // 15.02.06 parse(tmp); VLIST=select(VLIST,#_1!=name); // 15.02.08 VLIST=prepend([name,value],VLIST); ); IftoR(strorg):=( regional(str,pre,post,sub,ppL,ifstr,out,tmp,tmp1,tmp2); str=strorg; ifstr=indexof(str,"if("); if(ifstr==0, out=replace(str,",","}else{"); , pre=substring(str,0,ifstr-1)+"if("; ppL=Bracket(str,"()"); tmp1=ifstr+2; tmp=select(ppL,#_1==tmp1); tmp=select(ppL,#_2==-tmp_1_2); tmp2=tmp_1_1; sub=substring(str,tmp1,tmp2-1); post="}"+substring(str,tmp2,length(str)); tmp=indexof(sub,","); tmp1=substring(sub,0,tmp-1); tmp2=substring(sub,tmp,length(sub)); sub=tmp1+"){"+tmp2; tmp=IftoR(sub); out=pre+tmp+"}"; ); out; ); FortoR(strorg):=( regional(str,pre,post,sub,ppL,forstr,out,tmp,tmp1,tmp2); str=strorg; forstr=indexof(str,"forall("); if(forstr==0, out=str; , pre=substring(str,0,forstr-1)+"for("; ppL=Bracket(str,"()"); tmp1=forstr+6; tmp=select(ppL,#_1==tmp1); tmp=select(ppL,#_2==-tmp_1_2); tmp2=tmp_1_1; sub=substring(str,tmp1,tmp2-1); post="}"+substring(str,tmp2,length(str)); tmp=indexof(sub,","); tmp1=substring(sub,0,tmp-1); tmp2=substring(sub,tmp,length(sub)); sub=tmp1+"){"+tmp2; tmp1=indexof(sub,"{"); tmp2=indexof(sub,","); tmp=substring(sub,tmp1,tmp2-1); pre=pre+tmp+" in "+substring(sub,0,tmp1-1)+"{"; sub=substring(sub,tmp2,length(sub)); tmp=FortoR(sub); out=pre+tmp+"}"; ); out=replace(out,"..",":"); out; ); Deffun(name,bodylist):=( //help:Deffun("f(x)",["regional(y)","y=x^2*(x-3)","y"]); regional(funstr,str,Pos,nbody,bdy,ppL,bpL,excma,tmp,tmp1,tmp2); funstr=name+":=("; forall(bodylist, funstr=funstr+#+";"; ); funstr=funstr+");"; parse(funstr); tmp=indexof(name,"("); str=substring(name,0,tmp-1)+"<-function("; str=str+substring(name,tmp,length(name))+"{"; forall(1..(length(bodylist)-1),nbody, bdy=bodylist_nbody; Pos=indexof(bdy,"regional")+indexof(bdy,"local"); if(Pos==0, bdy=replace(bdy,LFmark,""); bdy=replace(bdy," ",""); ppL=Bracket(bdy,"()"); bpL=Bracket(bdy,"[]"); tmp1=select(bpL,#_2==1); tmp2=select(bpL,#_2==-1); excma=[]; forall(1..(length(tmp1)), excma=append(excma,[tmp1_#_1,tmp2_#_1]); ); tmp1=Indexall(bdy,","); forall(tmp1,cma, tmp=select(excma,(#_10, bdy=substring(bdy,0,cma-1)+"'"+substring(bdy,cma,length(bdy)); ); ); tmp=indexof(bdy,"forall"); if(tmp>0, bdy=FortoR(bdy); ); tmp=indexof(bdy,"if("); if(tmp>0, bdy=IftoR(bdy); ); bdy=RSform(replace(bdy,"'",",")); str=str+bdy+";"; ); ); str=str+"return("+bodylist_(length(bodylist))+")}"; FUNLIST=append(FUNLIST,str); ); Windispg():=( regional(Nj,Nk,Dt,Vj,tmp,tmp1,tmp2,opcindy); gsave(); layer(KETPIClayer); forall(GCLIST,Nj, if(isstring(Nj_1),Dt=parse(Nj_1),Dt=Nj_1); // 11.17 if(islist(Dt) & length(Dt)>0, // 12.19,12.22 tmp=MeasureDepth(Dt); if(tmp==1,Dt=[Dt]); opcindy=Nj_3; if(Nj_2<0,tmp1=0,tmp1=Nj_2); if(tmp1<10, forall(Dt,Nk, // tmp2=apply(Nk,if(ispoint(#),Lcrd(#),#)); // tmp2=apply(tmp2,Pcrd(#)); tmp2=Nk; // 14.12.04 if(length(Nk)>1, tmp="connect("+textformat(tmp2,5)+ ",dashtype->"+text(tmp1)+",linecolor->"+KCOLOR+opcindy+")"; parse(tmp); , if(length(Nk)==1, tmp="draw("+text(tmp2_1)+opcindy+")"; // 14.12.31 parse(tmp); ); ); ); ); ); ); // if(ADDAXES=="1", // 16.10.08from // draw([XMIN,0],[XMAX,0],color->[0,0.2,0]); // draw([0,YMIIN],[0,YMAX],color->[0,0.2,0]); // Letter([[XMAX,0],"e","x",[0,YMAX],"n","y"]); // Letter([[0,0],"sw","O"]); // ); // 16.10.08until grestore(); layer(0); ); Windispg(pltdata):=( regional(pdata,Nj,Nk,Dt,tmp,tmp1,tmp2,opcindy); gsave(); layer(KETPIClayer); if(!islist(pltdata),tmp=[pltdata],tmp=pltdata); pdata=select(GCLIST,contains(tmp,#_1)); forall(pdata,Nj, if(isstring(Nj_1),Dt=parse(Nj_1),Dt=Nj_1); // 11.17 if(islist(Dt) & length(Dt)>0, // 12.19,12.22 tmp=MeasureDepth(Dt); if(tmp==1,Dt=[Dt]); opcindy=Nj_3; if(Nj_2<0,tmp1=0,tmp1=Nj_2); if(tmp1<10, forall(Dt,Nk, tmp2=Nk; // 14.12.04 if(length(Nk)>1, tmp="connect("+textformat(tmp2,5)+ // 15.05.11 ",dashtype->"+text(tmp1)+ ",linecolor->"+KCOLOR+opcindy+")"; parse(tmp); , if(length(Nk)==1, tmp="draw("+text(tmp2_1)+opcindy+")"; // 14.12.31 parse(tmp); ); ); ); ); ); ); grestore(); layer(0); ); WritetoSci():=WritetoRS(); //17.12.19 WritetoRS():=WritetoRS(FnameR);// 17.09.17from WritetoRS(Arg):=( regional(string,filename,shch,tmp1,tmp2); if(isstring(Arg), string=Arg; if(indexof(string,".r")>0, filename=string; shch=""; , filename=FnameR; shch=string; ); WritetoRS(filename,shch); , if(Arg<=1,WritetoRS(FnameR,"all")); if(Arg==2,WritetoRS(FnameR,"sh")); ); ); WritetoRS(filename,shchoice):=( regional(Plist,Pos,GrL,str,tmp,tmp1,tmp2,cmd); println("Write to R "+filename); Plist=[]; Pnamelist=[]; forall(remove(allpoints(),[SW,NE]), tmp=Lcrd(#); tmp1=format(re(tmp_1),6);// 15.02.05 tmp2=format(re(tmp_2),6); tmp=#.name+"="+"c("+tmp1+","+tmp2+");"; tmp=tmp+"Assignadd('"+#.name+"',"+#.name+")"; Plist=append(Plist,tmp); ); SCEOUTPUT = openfile(filename); tmp=Datetime(); println(SCEOUTPUT,"# date time="+tmp_1+" "+tmp_2); if(isstring(CindyPathName), // 16.12.25from if(length(CindyPathName)>0, println(SCEOUTPUT, "# path file="+CindyPathName+" "+CindyFileName+".cdy"); , println(SCEOUTPUT,""); ); , println(SCEOUTPUT,""); ); // tmp1=replace(Dirwork,"\","/");//180403(2lines removed) // println(SCEOUTPUT,"setwd('"+tmp1+"')"); tmp=replace(Libname,"\","/"); //17.09.24from println(SCEOUTPUT,"source('"+tmp+".r')");//temporary if((indexof(PathT,"pdflatex")>0)%(indexof(PathT,"lualatex")>0), // 17.10.07added tmp=replace(tmp+"_rep2e","\","/"); println(SCEOUTPUT,"source('"+tmp+".r')"); ); println(SCEOUTPUT,"Ketinit()"); println(SCEOUTPUT,"cat(ThisVersion,'\n')"); println(SCEOUTPUT,"Fnametex='"+Fnametex+"'"); println(SCEOUTPUT,"FnameR='"+FnameR+"'"); println(SCEOUTPUT,"Fnameout='"+Fnameout+"'"); println(SCEOUTPUT,"arccos=acos; arcsin=asin; arctan=atan"); println(SCEOUTPUT,""); forall(COM0thlist, if(indexof(#,"Texcom")==0, //17.09.22 println(SCEOUTPUT,RSform(#)); , println(SCEOUTPUT,#); ); ); println(SCEOUTPUT, "Setwindow(c("+XMIN+","+XMAX+"), c("+YMIN+","+YMAX+"))"); forall(Plist, println(SCEOUTPUT,#); ); forall(VLIST, tmp=#_1; tmp1=#_2; if(!isstring(tmp1), if(islist(tmp1), tmp2="["; forall(tmp1, tmp2=tmp2+textformat(#,6)+","; ); tmp1=substring(tmp2,0,length(tmp2)-1)+"]"; , tmp1=format(tmp1,6); ); ); tmp1=RSform(tmp1); print(SCEOUTPUT,tmp+"="+tmp1+";"); //17.09.22 // tmp=substring(tmp,0,length(tmp)-1); println(SCEOUTPUT,"Assignadd('"+tmp+"',"+tmp+")"); ); forall(FUNLIST, println(SCEOUTPUT,#); ); forall(GLIST, println(SCEOUTPUT,RSform(#)); ); tmp=text(Pnamelist); tmp=replace(tmp,"[","list("); Pnamelist=replace(tmp,"]",")"); println(SCEOUTPUT,"PtL="+Pnamelist+";"); tmp=select(GCLIST,#_2==-1); GrL=apply(tmp,#_1); tmp=text(GrL); tmp=replace(tmp,"[","list("); tmp=replace(tmp,"]",")"); println(SCEOUTPUT,"GrL="+tmp); tmp1=""; if(length(tmp1)>0, tmp1="WriteOutData(Fnameout"+tmp1+");"; println(SCEOUTPUT,tmp1); ); forall(COM1stlist, if(indexof(#,"Texcom")==0, //17.09.22 println(SCEOUTPUT,RSform(#)); , println(SCEOUTPUT,#); ); ); println(SCEOUTPUT,""); println(SCEOUTPUT,"# Windisp(GrL)"); println(SCEOUTPUT,""); println(SCEOUTPUT,"if(1==1){"); println(SCEOUTPUT,""); // tmp=replace(Dirwork,"\","/"); //180403from // tmp="Openfile('"+tmp+pathsep()+Fnametex+"','"+ULEN+"'"; tmp="Openfile('"+Fnametex+"','"+ULEN+"'"; //180403to tmp=tmp+",'Cdy="+text(curkernel()); //180404 tmp=replace(tmp,"\","\\"); println(SCEOUTPUT,tmp+"')"); forall(COM2ndlist, if(indexof(#,"Texcom")==0, //17.09.22 println(SCEOUTPUT,RSform(#)); , println(SCEOUTPUT,#); ); ); if(length(GrL)>0, println(SCEOUTPUT," Drwline(GrL)"); ); println(SCEOUTPUT,"Closefile('"+ADDAXES+"')"); println(SCEOUTPUT,""); println(SCEOUTPUT,"}"); if(shchoice=="sh", println(SCEOUTPUT,""); println(SCEOUTPUT,"quit()"); , println(SCEOUTPUT,""); println(SCEOUTPUT,"#quit()"); ); closefile(SCEOUTPUT); ); //17.09.17to Extractdata(name):=Extractdata(1,name,[]); Extractdata(Arg1,Arg2):=( if(isstring(Arg1), Extractdata(1,Arg1,Arg2); , Extractdata(Arg1,Arg2,[]); ); ); Extractdata(number,name,options):=( //help:ExtractData("ha1"); //help:ExtractData(1,"ha1"); regional(dlist,tmp,tmp1,tmp2,tmp3,File,Ltype,Noflg,opstr,opcindy); tmp=Divoptions(options); Ltype=tmp_1; Noflg=tmp_2; opstr=tmp_(length(tmp)-1); opcindy=tmp_(length(tmp)); tmp1=[]; forall(1..length(GOUTLIST), if(contains(GOUTLIST_#_2,name), tmp1=append(tmp1,#); ); ); if(length(tmp1)==0, println(name+" not found"); , tmp1=tmp1_number; tmp2=GOUTLIST_tmp1; tmp=remove(tmp2_2,[name]); GOUTLIST_tmp1=[tmp2_1,tmp]; File=tmp2_1; ); if(Noflg<3, println("extract outdata "+name); tmp1=parse(name); tmp3=[ //17.09.18 "Tmpout=ReadOutData("+Dq+File+Dq+")" ]; GLIST=concat(GLIST,tmp3); ); if(Noflg<2, if(isstring(Ltype), Ltype=GetLinestyle(text(Noflg)+Ltype,name); , if(Noflg==1,Ltype=0); ); GCLIST=append(GCLIST,[name,Ltype,opcindy]); ); tmp2; ); RemoveOut(pltlist):=( regional(name,tmp,tmp1,tmp2); forall(pltlist,name, tmp1=[]; forall(GOUTLIST, tmp=remove(#_2,[name]); tmp1=append(tmp1,[#_1,tmp]); ); GOUTLIST=tmp1; ); ); ReadOutData():=ReadOutData(Fnameout); ReadOutData(filename):=ReadOutData("",filename); //16.03.07 ReadOutData(pathorg,filenameorg):=( //help:ReadOutData(); //help:Readoutdata(); //help:ReadOutData("file.txt"); //help:Readoutdata("file.txt"); //help:ReadOutData("/datafolder","file.txt"); //help:Readoutdata("/datafolder","file.txt"); regional(path,filename,varname,varL,ptL,pts,tmp,tmp1,tmp2,tmp3,tmp4, nmbr,cmdall,cmd,cmdorg,outdt,goutdt); path=pathorg; //16.03.07 from if(length(path)>0, setdirectory(path); if(indexof(path,"\")>0,tmp1="\",tmp1="/"); tmp=substring(path,length(path)-1,length(path)); if(tmp!=tmp1,path=path+tmp1); ); //16.03.07 until filename=filenameorg; // 16.04.17 if(indexof(filename,".")==0,filename=filename+".txt"); tmp=load(filename); cmdall=tokenize(tmp,"//"); varname=cmdall_1; cmdall=cmdall_(2..length(cmdall)); outdt=[]; varL=[varname]; ptL=[]; forall(cmdall,cmdorg, cmd=replace(cmdorg,LFmark,""); if(length(cmd)>0, if(cmd=="start" % cmd=="end" % substring(cmd,0,1)=="[", if(cmd=="start", pts=[]; ); if(cmd=="end", ptL=append(ptL,pts); ); if(substring(cmd,0,1)=="[", tmp1=parse(cmd); if(length(tmp1_1)==2, tmp1=apply(tmp1,Pcrd(#)); ); pts=concat(pts,tmp1); ); , if(length(ptL)>0, if(length(ptL)==1, ptL=ptL_1; tmp=apply(ptL,textformat(#,6)); , tmp="["; forall(ptL,tmp1, tmp=tmp+apply(tmp1,textformat(#,6))+","; ); tmp=substring(tmp,0,length(tmp)-1)+"]"; ); , tmp="[]"; ); parse(varname+"="+tmp); outdt=append(outdt,ptL); ptL=[]; varname=cmd; varL=append(varL,varname); ); ); ); if(length(ptL)>0, if(length(ptL)==1, ptL=ptL_1; tmp=apply(ptL,textformat(#,6)); , tmp="["; forall(ptL,tmp1, tmp=tmp+apply(tmp1,textformat(#,6))+","; ); tmp=substring(tmp,0,length(tmp)-1)+"]"; ); , tmp="[]"; ); parse(varname+"="+tmp); outdt=append(outdt,ptL); if(path=="",tmp=filename,tmp=path+filename); //16.03.07 GOUTLIST=append(GOUTLIST,[tmp,varL]); if(length(path)>0, // 16.03.09 setdirectory(Dirwork); // 16.03.07 ); print("readoutdata from "+tmp+" : "); println(varL); varL; ); WriteOutData(filename,ptlist):=( //help:WriteOutData("file.txt",["g1",gr1,"sg",sgAB]); //help:Writeoutdata("file.txt",["g1",gr1,"sg",sgAB]); regional(nn,Gname,Gdata,Str,Gstr,Gj,Pt,Flg,tmp,tmp1,loopend); Flg=0; if(isstring(ptlist_(length(ptlist))), Flg=1; ); SCEOUTPUT = openfile(filename); if(Flg==0, loopend=length(ptlist)/2; , loopend=length(ptlist); ); Gstr="["; forall(1..loopend,nn, if(Flg==0, Gname=ptlist_(2*nn-1); , Gname=ptlist_nn; ); Gstr=Gstr+Gname+","; println(SCEOUTPUT,Gname+"//"); if(Flg==0, Gdata=ptlist_(2*nn); , Gdata=parse(Gname); ); Gdata=Flattenlist(Gdata); if(MeasureDepth(Gdata)==1,Gdata=[Gdata]); forall(Gdata,Gj, println(SCEOUTPUT,"start//"); Str=""; forall(Gj,Pt, if(length(Str)>0, Str=Str+"," ); Str=Str+"["+format(Pt_1,5)+","; Str=Str+format(Pt_2,5); if(length(Pt)<3, Str=Str+"]"; , Str=Str+","+format(Pt_3,5)+"]"; ); if(length(Str)>80, println(SCEOUTPUT,"["+Str+"]//"); Str=""; ); ); if(length(Str)>0, println(SCEOUTPUT,"["+Str+"]//"); ); if((nn==loopend) & (Gj==Gdata_(length(Gdata))), println(SCEOUTPUT,"end////"); , println(SCEOUTPUT,"end//"); ); ); ); closefile(SCEOUTPUT); Gstr=substring(Gstr,0,length(Gstr)-1)+"]"; println("writeoutdata "+filename+":"+Gstr); ); Makeshell():=( if(length(Texmain)>0, Texparent=Texmain; ); if(length(Texparent)>0, Makeshell(Texparent); if(length(FigPdfList)>0, SCEOUTPUT=openfile(Texparent+".tex"); forall(FigPdfList,println(SCEOUTPUT,#)); closefile(SCEOUTPUT); ); , Makeshell(Fhead+"main"); ); ); Makeshell(texmainfile):=Makeshell(texmainfile,"rtv"); Makeshell(texmainfile,flow):=( regional(parent,tmp,tmp1,tmp2,tmp3,flg,tex,path,shnm); parent=Dirwork+Shellparent; // 16.05.29 kc():=( println("kc : "+kc(Dirwork+Shellparent,Mackc+Dirlib,Fnametex)); // 16.06.04,06.07 ); tmp1=""; // tmp2=parent; flg=0; forall(reverse(1..length(parent)), if(flg==0, tmp=substring(parent,#-1,#); if(tmp=="/" % tmp=="\", // 14.01.15 tmp1=substring(parent,0,#-1); tmp2=substring(parent,#,length(parent)); flg=1; ); ); ); if(length(tmp1)>0, setdirectory(tmp1); ); SCEOUTPUT = openfile(tmp2); println(SCEOUTPUT,"#!/bin/sh"); println(SCEOUTPUT,"cd "+Dq+Dirwork+Dq); // 15.07.16 tmp1=" "+Dq+Fhead+Dq+" "+Dq+texmainfile+Dq; // 15.12.11 flg=0; forall(reverse(1..length(PathT)), if(flg==0, if(substring(PathT,#-1,#)=="/", tex=substring(PathT,#,length(PathT)); path=substring(PathT,0,#-1); flg=1; ); ); ); if(flg==0, // 17.10.13(Norbert) tex=PathT; path=""; ); if(indexof(flow,"r")>0, tmp=Dq+PathR+Dq+" --vanilla --slave < "+Fhead+".r"; // 17.09.14 println(SCEOUTPUT,tmp); ); if(tex=="latex" % tex=="platex" % tex=="uplatex", //17.08.13 tmp=Dq+PathT+Dq+" "+texmainfile+".tex"; println(SCEOUTPUT,tmp); if(indexof(flow,"tt")>0,println(SCEOUTPUT,tmp)); //17.10.14 tmp=replace(Dq+PathT+Dq,tex,"dvipdfmx")+" "+texmainfile+".dvi"; println(SCEOUTPUT,tmp); tmp="rm "+texmainfile+".dvi"; println(SCEOUTPUT,tmp); ); if(tex=="xelatex", tmp="export PATH="+path+":${PATH}"; println(SCEOUTPUT,tmp); tmp="xelatex"+" "+texmainfile+".tex"; println(SCEOUTPUT,tmp); if(indexof(flow,"tt")>0,println(SCEOUTPUT,tmp)); //17.10.14 tmp="rm "+texmainfile+".dvi"; println(SCEOUTPUT,tmp); ); if(tex=="pdflatex" % tex=="pdftex",//16.11.22from tmp=Dq+PathT+Dq+" "+texmainfile+".tex"; println(SCEOUTPUT,tmp); if(indexof(flow,"tt")>0,println(SCEOUTPUT,tmp)); //17.10.14 );//16.11.22until if(tex=="lualatex",//16.12.16 tmp=Dq+PathT+Dq+" "+texmainfile+".tex"; println(SCEOUTPUT,tmp); if(indexof(flow,"tt")>0,println(SCEOUTPUT,tmp)); //17.10.14 );//16.12.16 if(!isstring(Pathpdf), tmp="preview"; , tmp=Pathpdf; ); if(tmp=="preview" % tmp=="skim", // 16.09.09from,16.10.20 tmp="open -a "+Dq+tmp+Dq+" "+texmainfile+".pdf"; , tmp=Dq+tmp+Dq+" "+texmainfile+".pdf"; );// 16.09.09until println(SCEOUTPUT,tmp); // 16.07.21until println(SCEOUTPUT,"exit 0"); closefile(SCEOUTPUT); setdirectory(Dirwork); ); Convsjiswin(dir,fname,ext):=( //180401 regional(ctr,flg,mx,tmp); mx=200; ctr=0;flg=0; nkfwin(dir,fname,ext); while((!isexists(dir,fname+".out"))&(ctr0, Texparent=Texmain; ); if(length(Texparent)>0, Makebat(Texparent); if(length(FigPdfList)>0, SCEOUTPUT=openfile(Texparent+".tex"); forall(FigPdfList,println(SCEOUTPUT,#)); closefile(SCEOUTPUT); ); , Makebat(Fhead+"main"); ); ); Makebat(texmainfile):=Makebat(texmainfile,"rtv"); Makebat(texmainfile,flow):=( regional(drive,fname,tmp,tmp1,tmp2,tmp3,flg,tex,path,batnm); drive="C:"; fname=Dirwork+Batparent; kc():=( println("kc : "+kc(Dirwork+Batparent,Dirlib,Fnametex)); // 16.06.04 ); tmp=indexof(fname,":"); if(tmp>0, drive=substring(fname,0,tmp); fname=substring(fname,tmp,length(fname)); ); tmp1=""; tmp2=fname; flg=0; forall(reverse(1..length(fname)), if(flg==0, tmp=substring(fname,#-1,#); if(tmp=="/" % tmp=="\" % tmp=="\", // 14.01.15 tmp1=substring(fname,0,#-1); tmp2=substring(fname,#,length(fname)); flg=1; ); ); ); if(length(tmp1)>0, setdirectory(drive+tmp1); ); SCEOUTPUT = openfile(tmp2); fname=replace(Dirwork,"/","\"); tmp=indexof(fname,":"); if(tmp>0, drive=substring(Dirwork,0,tmp); fname=substring(Dirwork,tmp,length(Dirwork)); println(SCEOUTPUT,drive); ); tmp1=indexof(fname,"Users");//180405 tmp2=indexof(fname,Homehead);//180403from if((tmp1>0)%(tmp2>0), if(tmp1>0, fname=substring(fname,tmp1+length("Users")-1,length(fname)); , fname=substring(fname,tmp2+length(Homehead)-1,length(fname)); ); tmp=Indexall(fname,"\");//180403from fname=substring(fname,tmp_2,length(fname)); fname="%HOMEPATH%\"+fname; );//180403to println(SCEOUTPUT,"cd "+Dq+fname+Dq);// 150716 flg=0; tmp=replace(PathT,"\","/"); forall(reverse(1..length(PathT)), if(flg==0, if(substring(tmp,#-1,#)=="/", tex=substring(PathT,#,length(PathT)); path=substring(PathT,0,#-1); flg=1; ); ); ); if(flg==0, // 17.10.13(Norbert) tex=PathT; path=""; ); if(indexof(flow,"r")>0, tmp=Dq+PathR+"\R"+Dq+" --vanilla --slave < "+Fhead+".r"; // 17.09.14 println(SCEOUTPUT,tmp); ); if(tex=="latex" % tex=="platex" % tex=="uplatex", //17.08.13 tmp=Dq+PathT+Dq+" "+texmainfile+".tex"; println(SCEOUTPUT,tmp); if(indexof(flow,"tt")>0,println(SCEOUTPUT,tmp)); //17.10.14 tmp=replace(Dq+PathT+Dq,tex,"dvipdfmx")+" "+texmainfile+".dvi"; println(SCEOUTPUT,tmp); tmp="del "+texmainfile+".dvi"; println(SCEOUTPUT,tmp); ); if(tex=="xelatex", tmp="set Path = %Path%;"+Dq+path+Dq; println(SCEOUTPUT,tmp); if(indexof(flow,"tt")>0,println(SCEOUTPUT,tmp)); //17.10.14 tmp="xelatex"+" "+texmainfile+".tex"; println(SCEOUTPUT,tmp); tmp="del "+texmainfile+".dvi"; println(SCEOUTPUT,tmp); ); if(tex=="pdflatex" % tex=="pdftex",//16.11.22from tmp=Dq+PathT+Dq+" "+texmainfile+".tex"; println(SCEOUTPUT,tmp); if(indexof(flow,"tt")>0,println(SCEOUTPUT,tmp)); //17.10.14 );//16.11.22until if(tex=="lualatex",//16.12.16 tmp=Dq+PathT+Dq+" "+texmainfile+".tex"; println(SCEOUTPUT,tmp); if(indexof(flow,"tt")>0,println(SCEOUTPUT,tmp)); //17.10.14 );//16.12.16 if(!isstring(Pathpdf), tmp=indexof(PathS,"\scilab");// 15.12.12 tmp=substring(PathS,0,tmp-1)+"\SumatraPDF\SumatraPDF.exe"; , tmp=Pathpdf; ); tmp=Dq+tmp+Dq+" "+texmainfile+".pdf"; println(SCEOUTPUT,tmp); println(SCEOUTPUT,"exit 0"); closefile(SCEOUTPUT); if(indexof(Dirwork,":")==0, // 14.01.15 drive="C:"; , drive=""; ); setdirectory(drive+Dirwork); ); Addpackage(packorg):=( //help:Addpackage("bm"); //help:Addpackage(["bm","enumerate"]); //help:Addpackage(["bm","[c]{somepackage}"]); regional(packL,tmp); packL=packorg; //17.06.25from if(!islist(packL),packL=[packL]); packL=apply(packL,replace(#,"\","/")); forall(1..(length(packL)), tmp=packL_#; if(substring(tmp,0,11)=="ketpicstyle", tmp=replace(Dirhead+"/"+tmp,"\","/"); ); if(indexof(tmp,"[")==0, packL_#="{"+tmp+"}"; ); ); ADDPACK=concat(ADDPACK,packL); //17.06.25until ); Viewtex():=( regional(texfile,tmp,tmp1,sep); texfile=Fhead+"main"; // if(iswindows(),sep="\",sep="/"); // 17.04.07 // sep="/"; SCEOUTPUT=openfile(texfile+".tex"); tmp="\documentclass{article}"; // 16.06.09from if(indexof(PathT,"platex")>0, tmp=replace(tmp,"article","jarticle"); if(indexof(PathT,"uplatex")>0, //17.08.13from tmp=replace(tmp,"jarticle","ujarticle"); );//17.08.13until ); // 16.06.09until println(SCEOUTPUT,tmp); if((indexof(PathT,"pdflatex")>0)%(indexof(PathT,"lualatex")>0) , //16.11.23,12.16 if(indexof(PathT,"pdflatex")>0, println(SCEOUTPUT,"\usepackage[pdftex]{pict2e}");//16.11.24 , println(SCEOUTPUT,"\usepackage{pict2e}");//16.12.16 println(SCEOUTPUT,"\usepackage{luatexja}");//16.12.18 ); tmp=replace(Dirhead,"\","/"); //17.10.30from tmp=replace(tmp,"scripts","tex/latex"); if(isexists(tmp,""), println(SCEOUTPUT,"\usepackage{ketpic2e,ketlayer2e}"); , tmp=replace(Dirhead+"/ketpicstyle","\","/"); println(SCEOUTPUT,"\usepackage{"+tmp+"/ketpic2e}"); println(SCEOUTPUT,"\usepackage{"+tmp+"/ketlayer2e}"); ); , tmp=replace(Dirhead,"\","/"); tmp=replace(tmp,"scripts","tex/latex"); if(isexists(tmp,""), println(SCEOUTPUT,"\usepackage{ketpic,ketlayer}"); , tmp=replace(Dirhead+"/ketpicstyle","\","/"); println(SCEOUTPUT,"\usepackage{"+tmp+"/ketpic}"); println(SCEOUTPUT,"\usepackage{"+tmp+"/ketlayer}"); ); );//17.10.30until println(SCEOUTPUT,"\usepackage{amsmath,amssymb}"); println(SCEOUTPUT,"\usepackage{graphicx}"); println(SCEOUTPUT,"\usepackage{color}"); forall(ADDPACK, // 16.05.16from println(SCEOUTPUT,"\usepackage"+#); //17.05.25 );// 16.05.16until println(SCEOUTPUT,""); // println(SCEOUTPUT,"\def\ketcindy{{K\kern-.20em%"); // deleted 16.11.27,recovered11.29 redeleted17.04.07 // println(SCEOUTPUT,"\lower.5ex\hbox{E}\kern-.125em{TCindy}}}"); // println(SCEOUTPUT,""); println(SCEOUTPUT,"\setmargin{20}{20}{20}{20}"); println(SCEOUTPUT,""); println(SCEOUTPUT,"\begin{document}"); println(SCEOUTPUT,""); println(SCEOUTPUT,"\verb|"+Fhead+"| by \ketcindy");// 16.01.12, 18, 16.04.08 // println(SCEOUTPUT,"\verb|"+Fhead+"| by KeTCindy");// 16.11.29 temporarily println(SCEOUTPUT,"\vspace{5mm}"); println(SCEOUTPUT,""); println(SCEOUTPUT,"\input{"+Fhead+".tex}"); println(SCEOUTPUT,""); println(SCEOUTPUT,"\end{document}"); closefile(SCEOUTPUT); if(iswindows(), kc():=( println("kc : "+kc(Dirwork+Batparent,Dirlib,Fnametex)); // 16.06.04 ); Makebat(texfile); , kc():=( println("kc : "+kc(Dirwork+Shellparent,Mackc+Dirlib,Fnametex)); // 16.06.04 ); Makeshell(texfile); ); WritetoRS(2); //17.09.19 ); Viewparent():=( //17.04.13 if(!isexists(Dirwork,Texparent+".tex"), if(isstring(Texparent), drawtext(mouse().xy,Texparent+".tex not exist", size->24,color->[1,0,0]); , drawtext(mouse().xy,"Texparent not defined", size->24,color->[1,0,0]); ); , if(iswindows(), Makebat(); , Makeshell(); ); WritetoRS(2); //17.09.29 kc(); ); ); Makecmdlist(libname):=( //help:Makecmdlist("ketcindylib"); regional(cmdall,cmd,flg,tmp,tmp1,tmp2,out); setdirectory(Dirlib); tmp=load(libname+".cs"); cmdall=tokenize(tmp,":="); out=[]; forall(cmdall,cmd, tmp=max([0,length(cmd)-50]); tmp1=";"+substring(cmd,tmp,length(cmd)); flg=0; forall(reverse(1..length(tmp1)), if(flg==0, if(substring(tmp1,#-1,#)==";", tmp=substring(tmp1,#,length(tmp1)); tmp2=substring(tmp,0,1); if(length(tmp)>0, if(!contains([" ","/"],tmp2), out=append(out,tmp); flg=1; ); ); ); ); ); ); setdirectory(Dirwork); tmp=length(out)-1; out=out_(2..tmp); out=sort(out); ); Savecmdlist(cmdlist,cmdfile):=( SCEOUTPUT=openfile(cmdfile+".cs"); forall(cmdlist, println(SCEOUTPUT,#); ); closefile(SCEOUTPUT); ); Quicksort(seq):=( regional(pivot,left,right,out); if(length(seq)<2, out=seq; , pivot = max(seq_1,seq_2); left = []; right = []; forall(seq, if(#< pivot, left=append(left,#); , right=append(right,#); ); ); left = Quicksort(left); right = Quicksort(right); out=concat(left,right); ); out; ); Lessstr(st1,st2):=( regional(tmp,tmp1,tmp2,out); tmp=min(length(st1),length(st2)); flg=0; forall(1..tmp, if(flg==0, tmp1=substring(st1,#-1,#); tmp2=substring(st2,#-1,#); if(tmp1tmp2, out=(1>2); flg=1; ); ); ); ); if(flg==0, if(length(st1)2); ); ); out; ); Figpdf():=Figpdf(Texparent,[]); Figpdf(Arg1):=( if(isstring(Arg1), Figpdf(Arg1,[]); , Figpdf(Texparent,Arg1); ); ); Figpdf(fnameorg,optionorg):=( //help:Figpdf(); //help:Figpdf([10,,10,,[0,2] ]);(margin(4),move) //help:Figpdf([[0,0]]);(move) //help:Figpdf(options=[5,5,5,5,[0,0]]]); regional(options,fname,mar,pos,dp,sc,tmp,tmp1,tmp2,sep); fname=fnameorg; if(indexof(fnameorg,".")==0, fname=fnameorg+".tex"; ); tmp=apply(optionorg,if(isstring(#),parse("["+#+"]"),#)); // 16.04.07 tmp=select(tmp,#!=[]); options=optionorg;//16.11.08from // mar=[5,5,5,5]; dp=[0,-3]; tmp=select(options,islist(#)); if(length(tmp)>0, dp=tmp_1; options=remove(options,tmp); ); tmp=4-length(options); tmp1=apply(1..tmp,5); mar=concat(options,tmp1); mar=apply(mar,if(length(#)==0,5,#));//16.11.08until pos=[mar_1+dp_1,mar_3+dp_2]; sc=10; tmp=indexof(ULEN,"cm"); if(tmp>0, tmp1=Removespace(substring(ULEN,0,tmp-1)); sc=parse(tmp1)*10; ); tmp=indexof(ULEN,"mm"); if(tmp>0, tmp1=Removespace(substring(ULEN,0,tmp-1)); sc=parse(tmp1); ); tmp="\documentclass{article}"; // 16.06.09from if(indexof(PathT,"platex")>0, tmp=replace(tmp,"article","jarticle"); if(indexof(PathT,"uplatex")>0, //17.08.13from tmp=replace(tmp,"jarticle","ujarticle"); );//17.08.13until ); FigPdfList=append(FigPdfList,tmp); // 16.06.09until tmp1="\special{papersize=W mm,H mm}"; tmp=(XMAX-XMIN)*sc+(mar_1+mar_2); tmp1=replace(tmp1,"W",text(tmp)); tmp=(YMAX-YMIN)*sc+(mar_3+mar_4); tmp1=replace(tmp1,"H",text(tmp)); // if(iswindows(),sep="\",sep="/");//17.04.08 // sep="/"; FigPdfList=append(FigPdfList,tmp1); if(indexof(PathT,"pdflatex")+indexof(PathT,"lualatex")>0, //17.11.05from FigPdfList=append(FigPdfList, "\usepackage{pict2e}"); tmp=replace(Dirhead,"\","/"); tmp=replace(tmp,"scripts","tex/latex"); if(isexists(tmp,""), FigPdfList=append(FigPdfList, "\usepackage{ketpic2e,ketlayer2e}"); , tmp=replace(Dirhead+"/ketpicstyle","\","/"); FigPdfList=concat(FigPdfList, ["\usepackage{"+tmp+"/ketpic2e}", "\usepackage{"+tmp+"/ketlayer2e}"]); ); , tmp=replace(Dirhead,"\","/"); tmp=replace(tmp,"scripts","tex/latex"); if(isexists(tmp,""), FigPdfList=append(FigPdfList, "\usepackage{ketpic,ketlayer}"); , tmp=replace(Dirhead+"/ketpicstyle","\","/"); FigPdfList=concat(FigPdfList, ["\usepackage{"+tmp+"/ketpic}", "\usepackage{"+tmp+"/ketlayer}"]); ); );//17.11.05until FigPdfList=append(FigPdfList, "\usepackage{amsmath,amssymb}"); FigPdfList=append(FigPdfList, "\usepackage{graphicx,color}"); forall(ADDPACK, // 16.05.16from tmp1="\usepackage"+#; //17.07.10 FigPdfList=append(FigPdfList,tmp1); // 16.09.05until ); FigPdfList=append(FigPdfList,""); FigPdfList=append(FigPdfList, "\setmargin{0}{0}{0}{0}"); FigPdfList=append(FigPdfList,""); FigPdfList=append(FigPdfList,"\begin{document}"); FigPdfList=append(FigPdfList,""); FigPdfList=append(FigPdfList, "\begin{layer}{50}{0}"); tmp1="\putnotese{X}{Y}{\input{"; tmp1=replace(tmp1,"X",text(pos_1)); tmp1=replace(tmp1,"Y",text(pos_2)); FigPdfList=append(FigPdfList,tmp1+Fhead+".tex}}"); FigPdfList=append(FigPdfList,""); FigPdfList=append(FigPdfList,"\end{layer}"); FigPdfList=append(FigPdfList,""); FigPdfList=append(FigPdfList,"\end{document}"); if(fnameorg!=Texparent, SCEOUTPUT=openfile(fname); forall(FigPdfList,println(SCEOUTPUT,#)); closefile(SCEOUTPUT); ); FigPdfList; ); Makehelplist(libname):=( regional(cmdall,cmd,flg,lev,tmp,tmp1,out); tmp=load(libname); cmdall=tokenize(tmp,"//help:"); cmdall=select(cmdall,substring(#,1,3)!=");"); flg=0; forall(1..3, if(flg==0, if(substring(cmdall_#,0,7)=="start()", cmdall=cmdall_((#+1)..length(cmdall)); flg=1; ); ); ); flg=0; tmp=length(cmdall); forall(0..2, if(flg==0, if(substring(cmdall_(tmp-#),0,5)=="end()", cmdall=cmdall_(1..(tmp-#-1)); flg=1; ); ); ); out=[]; forall(cmdall,cmd, tmp1=indexof(cmd,"("); lev=1; flg=0; forall((tmp1+1)..length(cmd), if(flg==0, tmp=substring(cmd,#-1,#); if(tmp=="(",lev=lev+1); if(tmp==")", lev=lev-1; if(lev==0, flg=1; out=append(out,substring(cmd,0,#)+";"); ); ); ); ); ); sort(out); ); Helplist():=Helplist(Dirlib,["+","+3d"],"helpJ"); // 15.05.22 Helplist(Arg):=( if(islist(Arg), Helplist(Dirlib,Arg,"helpJ"); // 15.06.20 , if(indexof(Arg,"help")>0, Helplist(Dirlib,["+","+3d"],Arg); , Helplist(Arg,["+","+3d"],"helpJ"); ); ); ); Helplist(Arg1,Arg2):=( if(islist(Arg1), Helplist(Dirlib,Arg1,Arg2); , if(indexof(Arg2,"help")>0, Helplist(Dirlib,Arg1,Arg2); , Helplist(Arg,["+","+3d"],Arg2); ); ); ); Helplist(dir,files,help):=( //help:Helplist(); //help:Helplist("helpE"); regional(ketfiles,tmp,tmp1,tmp2); setdirectory(dir); if(contains(files,"+"), tmp=remove(files,["+"]); ketfiles=concat(["+basic1","+basic2","+out"],tmp); , ketfiles=files; ); ketfiles=apply(ketfiles,replace(#,"+","ketcindylib")); ketfiles=apply(ketfiles,#+"r.cs"); // 15.11.05 from tmp=apply(files,replace(#,"+","ketcindylib")); // tmp=apply(files,replace(#,"r.cs","")); // tmp=remove(tmp,["ketcindylibout"]); // tmp=apply(tmp,replace(#,"basic","")); tmp=apply(tmp,#+help+".txt"); ketfiles=concat(ketfiles,tmp);// 15.11.05 until tmp1=[]; forall(ketfiles, tmp=Makehelplist(#); tmp1=concat(tmp1,tmp); ); if(!islist(HLIST), // 16.12.31from HLIST=sort(tmp1); , HLIST=sort(concat(HLIST,tmp1)); ); // 16.12.31until setdirectory(Dirwork); ); Help():=( forall(HLIST, println(#); ); ); Help(strorg):=( //help:Help("Plot"); //help:Help("*"); regional(str,sel,tmp,tmp1,tmp2,flg,Endflg); if(length(HLIST)>0,flg=0,flg=-1); str=replace(strorg,"'",Dq); // 15.11.25 if(length(str)==0, forall(HLIST, if(indexof(#,"*")>0, println(#); ); flg=1; ); , if(str=="*", sel=HLIST; , sel=select(HLIST,substring(#,0,length(str))==str); ); if(length(sel)>0,flg=1); forall(sel, tmp=indexof(#,"("); if(substring(#,tmp-2,tmp-1)!="*", println(#); , // println(substring(#,0,tmp-1)); tmp1=substring(#,tmp,length(#)-2); tmp2=indexof(tmp1,"//"); Endflg=0; forall(1..4, if(Endflg==0, tmp2=indexof(tmp1,"//"); if(tmp2==0, println(" "+tmp1); Endflg=1; , println(" "+substring(tmp1,0,tmp2-1)); tmp1=substring(tmp1,tmp2+1,length(tmp1)); ); ); ); ); ); ); if(flg==-1,println(" Help not read in")); if(flg==0,println(" no example")); ); Helpkey(str):=( regional(tmp,tmp1,tmp2); tmp1=select(HLIST,indexof(#,str)>0); forall(tmp1, tmp=substring(#,0,indexof(#,"*")-1); Help(tmp); ); ); Helpkey(str1,str2):=( //help:Helpkey(keyword); //help:Helpkey(keyword1,keyword2); regional(tmp,tmp1,tmp2); tmp1=select(HLIST,indexof(#,str1)>0); tmp1=select(tmp1,indexof(#,str2)>0); forall(tmp1, tmp=substring(#,0,indexof(#,"*")-1); Help(tmp); ); ); Slidework():=Slidework(Dirwork); // 16.06.10 Slidework(dirorg):=( //help:Slidework(directory); regional(dir,tmp); // 16.06.25 dir=replace(dirorg,unicode("000a"),""); // 16.06.25 dir=replace(dir,"/",pathsep());//17.11.20from dir=replace(dir,"\",pathsep()); tmp=length(dir); if(substring(dir,tmp-1,tmp)==pathsep(), dir=substring(dir,0,tmp-1); );//17.11.20until if(isexists(dir,""), // 16.12.20 Changework(dir); println(makedir(dir,"fig"));//17.11.23 tmp=dir+pathsep()+"fig"; //17.04.16from Changework(tmp);// 17.02.19until , println(dir+ " not exists"); ); ); Setslidepage():=( // 17.03.05 regional(tmp1,tmp2,tmp3); tmp1=["letterc","boxc","framec","shadowc","xpos","size"]; tmp2=apply([1,2,4,5,7,8],SlideColorList_#); tmp3=apply(1..(length(tmp1)),tmp1_#+"="+tmp2_#); println(tmp3); ); Setslidepage(list):=( // 16.12.22 //help:Setslidepage([letterc,boxc,framec,shadowc,xpos,size]); regional(numlist,tmp,tmp1,letterc,boxc,shadowc,mboxc); letterc=[0.98,0.13,0,0.43]; boxc=[0,0.32,0.52,0]; shadowc=[0,0,0,0.5]; mboxc="yellow"; if(!islist(SlideColorList), SlideColorList=[letterc,boxc,boxc,boxc,shadowc,shadowc,6,1.3, letterc,mboxc,mboxc,mboxc,62,2,letterc]; ); numlist=[1,2,4,5,7,8]; forall(1..(length(list)), if(length(list_#)>0, tmp=numlist_#; SlideColorList_tmp=list_#; ); ); SlideColorList_3=SlideColorList_2; SlideColorList_6=SlideColorList_5; ); Setslidemain():=( // 17.03.05 regional(tmp1,tmp2,tmp3); tmp1=["letterc","boxc","framec","xpos","size"]; tmp2=apply([9,10,12,13,14],SlideColorList_#); tmp3=apply(1..(length(tmp1)),tmp1_#+"="+tmp2_#); println(tmp3); ); Setslidemain(list):=( // 16.12.22 //help:Setslidemain([letterc,boxc,framec,xpos,size]); regional(numlist,tmp,tmp1,letterc,boxc,shadowc,mboxc); letterc=[0.98,0.13,0,0.43]; boxc=[0,0.32,0.52,0]; shadowc=[0,0,0,0.5]; mboxc="yellow"; if(!islist(SlideColorList), SlideColorList=[letterc,boxc,boxc,boxc,shadowc,shadowc,6,1.3, letterc,mboxc,mboxc,mboxc,62,2,letterc]; ); numlist=[9,10,12,13,14]; forall(1..(length(list)), if(length(list_#)>0, //17.01.04 tmp=numlist_#; SlideColorList_tmp=list_#; ); ); SlideColorList_11=SlideColorList_10; ); Setslidebody():=( // 17.03.05 regional(tmp1,tmp2,tmp3); tmp1=["letterc","style","thindense"]; tmp2=[SlideColorList_(15),BodyStyle,ThinDense]; tmp3=apply(1..(length(tmp1)),tmp1_#+"="+tmp2_#); println(tmp3); ); Setslidebody(str):=( regional(clr,style,thin); if(isstring(str), Setslidebody(str,"\Large\bf\boldmath",0.1); , if(length(str)==1,Setslidebody(str_1)); if(length(str)==2,Setslidebody(str_1,str_2)); if(length(str)==3,Setslidebody(str_1,str_2,str_3)); ); ); Setslidebody(str,Arg):=( //17.01.08 if(isstring(Arg), Setslidebody(str,Arg,0.1); , Setslidebody(str,"\Large\bf\boldmath",Arg); ); ); Setslidebody(str,style,density):=( // 16.12.22,17.01.06,01.08 //help:Setslidebody(["black",,0]); //help:Setslidebody(["blue","\Large\bf\boldmath",0.1]); regional(numlist,tmp,tmp1,letterc,boxc,shadowc,mboxc); letterc=[0.98,0.13,0,0.43]; boxc=[0,0.32,0.52,0]; shadowc=[0,0,0,0.5]; mboxc="yellow"; if(!islist(SlideColorList), SlideColorList=[letterc,boxc,boxc,boxc,shadowc,shadowc,6,1.3, letterc,mboxc,mboxc,mboxc,62,2,letterc]; ); if(length(str)>0,SlideColorList_(15)=str); if(length(style)>0,BodyStyle=style); ThinDense=density;//17.01.08 ); Setslidehyper():=( 17.12.16from Setslidehyper(["cl=true,lc=blue,fc=blue",125,70,1]); ); Setslidehyper(Arg):=( if(isstring(Arg), Setslidehyper(Arg,["cl=true,lc=blue,fc=blue",125,70,1]); , Setslidehyper("",Arg); ); ); Setslidehyper(driverorg,options):=( //help:Setslidehyper(); //help:Setslidehyper("dvipdfmx",["cl=true,lc=blue,fc=blue","Pos=[125,70]","Size=1"]); regional(driver,eqL,reL,stL,,str,tmp,tmp1,tmp2); driver=driverorg; if(length(driver)==0, if(indexof(PathT,"pdflatex")+indexof(PathT,"lualatex")==0, driver="dvipdfmx"; ); ); tmp=Divoptions(options); eqL=tmp_5; reL=tmp_6; stL=tmp_7; if(length(stL)>0, str=stL_1; , str=""; ); if(length(str)==0, str="cl=true,lc=blue,fc=blue"; ); if(length(driver)==0, tmp1="["+str+"]"; , tmp1="["+driver+","+str+"]"; ); tmp1=replace(tmp1,"cl=","colorlinks="); tmp1=replace(tmp1,"lc=","linkcolor="); tmp1=replace(tmp1,"fc=","filecolor="); tmp1=replace(tmp1,"uc=","urlcolor="); ADDPACK=select(ADDPACK,indexof(#,"hyperref")==0); Addpackage(tmp1+"{hyperref}"); LinkPosH=125; LinkPosV=70; LinkSize=1; if(length(reL)>0, LinkPosH=reL_1; if(length(reL)>1,LinkPosV=reL_2); if(length(reL)>2,LinkSize=max(reL_3,0.1)); ); forall(eqL, tmp=indexof(#,"="); tmp1=Toupper(substring(#,0,1)); tmp2=substring(#,tmp,length(#)); tmp2=parse(tmp2); if(tmp1=="P", LinkPosH=tmp2_1; LinkPosV=tmp2_2; ); if(tmp1=="S", LinkSize=max(tmp2,0.1); ); ); ); //17.12.16until Settitle(cmdL):=Settitle(cmdL,[]); // 180330changed Settitle(cmdL,options):=( //help:Settitle(cmdL); //help:Settitle(name,cmdL); //help:Settitle(options=["Title=slide0","Layery=0","Color=blue"]); regional(tmp,tmp1,tmp2,eqL,layery,color,size,font); TitleName="slide0"; //180330 layery="0"; color="blue"; size="\Large"; font="\bf"; tmp=Divoptions(options); eqL=tmp_5; forall(eqL, tmp1=Toupper(substring(#,0,1)); tmp=indexof(#,"="); tmp2=substring(#,tmp,length(#)); if(tmp1=="L", layery=tmp2; ); if(tmp1=="C", color=tmp2; ); if(tmp1=="S", size=tmp2; if(substring(size,0,1)!="\",size="\"+size); ); if(tmp1=="F", font=tmp2; if(substring(font,0,1)!="\",font="\"+font); ); if(tmp1=="T", //180330 TitleName=tmp2; ); ); TitleCmdL=["{"+size+font]; if(indexof(color,"[")>0, tmp=replace(color,"[","{"); tmp=replace(tmp,"]","}"); tmp1=Indexall(tmp,","); if(length(tmp1)>=3, tmp="\color[cmyk]"+tmp; , tmp="\color[rgb]"+tmp; ); , tmp="\color{"+color+"}"; ); TitleCmdL=append(TitleCmdL,tmp); TitleCmdL=concat(TitleCmdL,["","\begin{layer}{120}{"+layery+"}"]); forall(1..(length(cmdL)), tmp=cmdL_#; if(length(tmp)>0, if(#==1, tmp="{\Huge \putnote"+tmp+"}" , tmp="\putnote"+tmp; ); TitleCmdL=append(TitleCmdL,tmp); ); ); TitleCmdL=concat(TitleCmdL,["\end{layer}","","}"]); ); Maketitle():=( if(!isstring(TitleName), //17.04.13from drawtext(mouse().xy,"Settitle not defined", size->24,color->[1,0,0]); , //17.04.13until Maketitle(TitleName); ); ); Maketitle(name):=( //help:Maketitle(); regional(texfile,texmain,tmp,tmp1,sep); texfile=name; texmain=name+"main"; SCEOUTPUT=openfile(texfile+".tex"); forall(TitleCmdL, println(SCEOUTPUT,#); ); closefile(SCEOUTPUT); SCEOUTPUT=openfile(texmain+".tex"); tmp="\documentclass[landscape,10pt]{article}"; if(indexof(PathT,"platex")>0, tmp=replace(tmp,"article","jarticle"); if(indexof(PathT,"uplatex")>0, //17.08.13from tmp=replace(tmp,"jarticle","ujarticle"); );//17.08.13until ); println(SCEOUTPUT,tmp); tmp="\special{papersize=\the\paperwidth,\the\paperheight}"; println(SCEOUTPUT,tmp); tmp=replace(Dirhead,"\","/");//17.11.01from tmp=replace(tmp,"scripts","tex/latex"); if(isexists(tmp,""), println(SCEOUTPUT,"\usepackage{ketpic,ketlayer,ketslide}"); , tmp=replace(Dirhead+"/ketpicstyle","\","/"); println(SCEOUTPUT,"\usepackage{"+tmp+"/ketpic}"); println(SCEOUTPUT,"\usepackage{"+tmp+"/ketlayer}"); println(SCEOUTPUT,"\usepackage{"+tmp+"/ketslide}"); );//17.11.01until println(SCEOUTPUT,"\usepackage{amsmath,amssymb}"); println(SCEOUTPUT,"\usepackage{bm,enumerate}"); if((indexof(PathT,"pdflatex")>0)%(indexof(PathT,"lualatex")>0), println(SCEOUTPUT,"\usepackage{graphicx}"); , println(SCEOUTPUT,"\usepackage[dvipdfmx]{graphicx}"); ); println(SCEOUTPUT,"\usepackage[usenames]{xcolor}"); forall(ADDPACK, // if(indexof(#,"[")==0, // println(SCEOUTPUT,"\usepackage{"+#+"}"); // , println(SCEOUTPUT,"\usepackage"+#); // 17.07.10 // ); ); if(indexof(PathT,"platex")>0,tmp="\ketmarginJ",tmp="\ketmarginE"); println(SCEOUTPUT,tmp); println(SCEOUTPUT,"\ketslideinit"); println(SCEOUTPUT,""); println(SCEOUTPUT,"\begin{document}"); println(SCEOUTPUT,""); println(SCEOUTPUT,"\input{"+texfile+".tex}"); println(SCEOUTPUT,""); println(SCEOUTPUT,"\end{document}"); closefile(SCEOUTPUT); if(iswindows(), Makebat(texmain,"tv"); , Makeshell(texmain,"tv"); ); kc(); ); Repeatsameslide(repeatflg,sestr,addedL):=( regional(seL,flg1,ss,nn,nrep,tmp,tmp1,tmp2,tmp3,str,j,k); // global RepeatList, SCEOUTPUT nrep=length(RepeatList); flg1=0; forall(addedL,ss, if(repeatflg==0, if(substring(ss,0,1)!="%", //16.01.04 println(SCEOUTPUT,ss); );//16.01.04 , forall(1..nrep,nn, if(sestr=="", RepeatList_nn=append(RepeatList_nn,ss); ); ); if(sestr=="", seL=[1]; , tmp1=substring(sestr,1,length(sestr)-1); tmp1=replace(tmp1,",-",".."+text(nrep)); tmp1=replace(tmp1,"-,","1.."); tmp1="["+tmp1+"]"; //17.01.03 seL=flatten(parse(tmp1)); //17.01.03 ); if(contains(seL,1), if(substring(ss,0,1)!="%", //16.01.04 println(SCEOUTPUT,ss); ); seL=remove(seL,[1]); flg1=1; ); forall(1..(length(seL)),nn, tmp=seL_nn; if(tmp<=length(RepeatList), //17.01.12from RepeatList_tmp=append( RepeatList_tmp,ss); , println(" "+sestr+" : "+text(tmp)+" > "+text(length(RepeatList))); ); ); if(ThinFlg==1,//16.01.05from if(flg1==1,seL=append(seL,1)); seL=remove(1..nrep,seL); str=ss; // 17.05.28from repeat(10, tmp1=Indexall(str,"{\color"); if(length(tmp1)>0, tmp2=Indexall(str,"}"); tmp=select(tmp2,tmp1_1<#); tmp=substring(str,tmp1_1,tmp_1); str=replace(str,tmp+" ",""); str=replace(str,tmp,""); ); );//17.05.28until if(contains(seL,1), if(substring(str,0,1)!="%", if(NonThinFlg==0, if(!contains(["\begi","\end{"],substring(str,0,5)),//17.01.15 println(SCEOUTPUT,"{\color[cmyk]{\thin,\thin,\thin,\thin}");//17.08.23 println(SCEOUTPUT,str); println(SCEOUTPUT,"}%"); , println(SCEOUTPUT,str); ); ); if(NonThinFlg==1, if(!contains(["\begi","\end{"],substring(str,0,5)),//17.01.15 println(SCEOUTPUT,"{\color[cmyk]{\thin,\thin,\thin,\thin}");//17.08.23 ); println(SCEOUTPUT,str); ); if(NonThinFlg==2, println(SCEOUTPUT,str); if(!contains(["\begi","\end{"],substring(str,0,5)),//17.01.15 println(SCEOUTPUT,"}%"); ); ); seL=remove(seL,[1]); ); ); if(substring(ss,0,1)!="%", //16.01.04 forall(1..(length(seL)),nn, tmp=seL_nn; if(NonThinFlg==0, tmp1="{\color[cmyk]{\thin,\thin,\thin,\thin}";//17.08.23 tmp1=[tmp1,str,"}%"]; ); if(NonThinFlg==1, tmp1="{\color[cmyk]{\thin,\thin,\thin,\thin}";//17.08.23 tmp1=[tmp1,str];//17.01.08until ); if(NonThinFlg==2, tmp1=[str,"}%"]; ); RepeatList_tmp=concat( RepeatList_tmp,tmp1); ); ); );//16.01.05until ); );//16.12.05until ); Presentation(texfile):=Presentation(texfile,texfile); Presentation(texfile,txtfile):=( //help:Presentation(texfile,txtfile); regional(file,flgL,flg,verbflg,slideL,ns,slideorgL,wall,sld,slidecmd,tmp,tmp0,tmp1, tmp2,tmp3,tmp4,tmp5,newoption,top,repeatflg,nrep,nrepprev,,repstr, sestr,npara,paradt,parafiles,hyperflg,paractr, letterc,boxc,shadowc,mboxc,sep); slidecmd=["\ketcletter","\ketcbox","\ketdbox","\ketcframe", "\ketcshadow","\ketdshadow","\slidetitlex","\slidetitlesize", "\mketcletter","\mketcbox","\mketdbox","\mketcframe", "\mslidetitlex","\mslidetitlesize"]; if(!isstring(BodyStyle),//17.01.06 BodyStyle="\Large\bf\boldmath"; ); repeatflg=0; RepeatList=[]; paractr=0; //16.12.31 if(indexof(texfile,".")==0,file=texfile+".tex",file=texfile); if(indexof(txtfile,".")==0,tmp1=txtfile+".txt",tmp1=txtfile); tmp=load(tmp1); tmp=replace(tmp,"////","||||");// 16.05.11, 06.24(reactivated) slideL=tokenize(tmp,"//"); slideorgL=slideL; // 16.07.11 slideL=apply(slideL,Removespace(#)); tmp=select(1..length(slideL),length(slideL_#)>0); // 16.07.11from slideL=apply(tmp,slideL_#); slideorgL=apply(tmp,slideorgL_#); // slideL=select(slideL,length(#)>0); // 16.07.11until flg=0; // 16.06.09from forall(1..10, if(flg==0, if(substring(slideL_1,0,1)!="%", flg=1; , slideL=slideL_(2..length(slideL)); slideorgL=slideorgL_(2..length(slideorgL)); ); ); ); // 16.06.09until flgL=[]; SCEOUTPUT = openfile(file); tmp=tokenize(slideL_1,"::"); tmp1=tmp_1; if(length(tmp)>1, tmp2=tmp_2; tmp3=tmp_(3..length(tmp));//16.06.25 , tmp2=""; tmp3=tmp_(2..length(tmp));//16.06.25 ); wall=""; // 16.06.10 if(length(tmp3)>0,//16.06.25from tmp=substring(tmp3_1,0,1);//180330 if((tmp!="\")&(tmp!="%")&(indexof(tmp3_1,"=")==0), //180330 wall=tmp3_1; tmp3=tmp3_(2..length(tmp3)); ); );//16.06.25until tmp="%%% "+tmp1+" "+txtfile;// 16.06.09from println(SCEOUTPUT,tmp); tmp="\documentclass[landscape,10pt]{article}"; if(indexof(PathT,"platex")>0, tmp=replace(tmp,"article","jarticle"); if(indexof(PathT,"uplatex")>0, //17.08.13from tmp=replace(tmp,"jarticle","ujarticle"); );//17.08.13until ); println(SCEOUTPUT,tmp);// 16.06.09from tmp=select(1..(length(tmp3)),indexof(tmp3_#,"\usepackage")>0);//17.06.18from forall(tmp, println(SCEOUTPUT,tmp3_#); ); tmp=remove(1..(length(tmp3)),tmp); tmp3=tmp3_tmp;//17.06.18until // if(iswindows(),sep="\",sep="/"); // 17.04.08 // sep="/"; if((indexof(PathT,"pdflatex")>0)%(indexof(PathT,"lualatex")>0), if(indexof(PathT,"lualatex")>0, println(SCEOUTPUT,"\usepackage{luatexja}"); ); println(SCEOUTPUT,"\usepackage{pict2e}"); println(SCEOUTPUT,"\usepackage{ketpic2e,ketlayer2e}");// 17.04.08from , println(SCEOUTPUT,"\special{papersize=\the\paperwidth,\the\paperheight}"); );// 17.04.08until tmp=replace(Dirhead,"\","/");//17.11.01from tmp=replace(tmp,"scripts","tex/latex"); if(isexists(tmp,""), println(SCEOUTPUT,"\usepackage{ketpic,ketlayer}"); , tmp=replace(Dirhead+"/ketpicstyle","\","/"); println(SCEOUTPUT,"\usepackage{"+tmp+"/ketpic}"); println(SCEOUTPUT,"\usepackage{"+tmp+"/ketlayer}"); ); if(length(wall)==0, tmp=replace(Dirhead,"\","/");//17.11.01from tmp=replace(tmp,"scripts","tex/latex"); if(isexists(tmp,""), println(SCEOUTPUT,"\usepackage{ketslide}"); , tmp=replace(Dirhead+"/ketpicstyle","\","/"); println(SCEOUTPUT,"\usepackage{"+tmp+"/ketslide}"); ); , tmp=replace(Dirhead,"\","/"); tmp=replace(tmp,"scripts","tex/latex"); if(isexists(tmp,""), println(SCEOUTPUT,"\usepackage{ketslide2}"); , tmp=replace(Dirhead+"/ketpicstyle","\","/"); println(SCEOUTPUT,"\usepackage{"+tmp+"/ketslide2}"); ); );//17.04.08until println(SCEOUTPUT,"\usepackage{amsmath,amssymb}"); println(SCEOUTPUT,"\usepackage{bm,enumerate}"); if((indexof(PathT,"pdflatex")>0)%(indexof(PathT,"lualatex")>0), println(SCEOUTPUT,"\usepackage{graphicx}"); , println(SCEOUTPUT,"\usepackage[dvipdfmx]{graphicx}"); ); // println(SCEOUTPUT,"\usepackage[usenames]{color}"); // println(SCEOUTPUT,"\usepackage{color}");//17.06.14 println(SCEOUTPUT,"\usepackage{xcolor}");//17.07.31 letterc=[0.98,0.13,0,0.43]; boxc=[0,0.32,0.52,0]; shadowc=[0,0,0,0.5]; mboxc="yellow"; // if(!islist(SlideColorList), //17.03.02from // SlideColorList=[letterc,boxc,boxc,boxc,shadowc,shadowc,6,1.3, // letterc,mboxc,mboxc,mboxc,62,2,letterc]; // , //17.03.02until tmp4="abcdefghijklmno"; forall(1..15, tmp=SlideColorList_#; if(islist(tmp), tmp=text(tmp); tmp=substring(tmp,1,length(tmp)-1); if(length(SlideColorList_#)==4,//17.01.07from println(SCEOUTPUT,"\definecolor{slidecolor"+tmp4_#+"}{cmyk}{"+tmp+"}"); ); if(length(SlideColorList_#)==3, println(SCEOUTPUT,"\definecolor{slidecolor"+tmp4_#+"}{rgb}{"+tmp+"}"); );//17.01.07until SlideColorList_#="slidecolor"+tmp4_#; ); ); // ); //17.03.02 println(SCEOUTPUT,"\def\setthin#1{\def\thin{#1}}");//17.08.23 println(SCEOUTPUT,"\setthin{"+text(ThinDense)+"}");//17.08.23 forall(ADDPACK,// 16.06.09from // if(indexof(#,"[")==0, // 16.09.05from // println(SCEOUTPUT,"\usepackage{"+#+"}"); // , println(SCEOUTPUT,"\usepackage"+#); //17.07.10 // ); );// 16.06.09until tmp=select(ADDPACK,indexof(#,"{hyperref}")>0);//16.12.31from if(length(tmp)>0, hyperflg=1; , hyperflg=0; //16.12.31until ); forall(tmp3, println(SCEOUTPUT,#); ); if(indexof(PathT,"platex")>0,tmp="\ketmarginJ",tmp="\ketmarginE"); // 16.06.09 println(SCEOUTPUT,tmp); println(SCEOUTPUT,"\ketslideinit"); println(SCEOUTPUT,""); forall(tmp, // 15.07.21 if(substring(#,0,1)=="\", println(SCEOUTPUT,#)); ); if(!isstring(PageStyle),PageStyle="headings");//17.04.09 println(SCEOUTPUT,"\pagestyle{"+PageStyle+"}");//17.04.09 println(SCEOUTPUT,""); println(SCEOUTPUT,"\begin{document}"); println(SCEOUTPUT,""); if(length(wall)>0, println(SCEOUTPUT,"\input{fig/"+wall+".tex}"); println(SCEOUTPUT,""); ); if(length(tmp2)>0, if(indexof(tmp2," no")==0, // 16.11.11from println(SCEOUTPUT,"\begin{layer}{120}{0}"); if(substring(tmp2,0,1)!="\", tmp2="\putnotese{0}{0}{\input{fig/"+tmp2+".tex}}";//16.12.27 ); println(SCEOUTPUT,tmp2); println(SCEOUTPUT,"\end{layer}"); println(SCEOUTPUT,""); , tmp=indexof(tmp2,"="); if(tmp==0, top="10mm"; , top=substring(tmp2,tmp,length(tmp2)); ); println(SCEOUTPUT,""); println(SCEOUTPUT,"\vspace*{"+top+"}"); println(SCEOUTPUT,""); ); // 16.11.11until ); println(SCEOUTPUT,"\def\mainslidetitley{22}"); forall(1..14, //16.12.22from tmp=SlideColorList_#; if(!isstring(tmp),tmp=text(tmp)); if(length(tmp)>0, tmp="\def"+slidecmd_#+"{"+tmp+"}"; println(SCEOUTPUT,tmp); ); );//16.12.22until println(SCEOUTPUT,""); println(SCEOUTPUT,"\color{"+SlideColorList_(15)+"}"); println(SCEOUTPUT,BodyStyle);//17.01.07 println(SCEOUTPUT,"\thispagestyle{empty}");//17.01.29 println(SCEOUTPUT,"\addtocounter{page}{-1}");//17.01.29 println(SCEOUTPUT,""); verbflg=0; //16.06.28 repeatflg=0;//16.12.02 nrep=0;//16.12.27 nrepprev=0;//17.01.03 npara=0;//16.12.27 forall(2..length(slideL),ns, ThinFlg=0; NonThinFlg=0; flg=0; tmp1=""; tmp2=""; tmp3=""; sld=removespace(slideL_ns); // 16.06.28 sestr=""; if((substring(sld,0,1)=="%") & (substring(sld,0,2)!="%%"), // 17.06.23 Repeatsameslide(repeatflg,"",[slideL_ns]); if(repeatflg>0, tmp=indexof(sld,"]::"); if(tmp>0, if(substring(sld,1,2)!="%",//17.05.31 if(substring(sld,1,5)=="thin", ThinFlg=1); // 17.05.28 sestr=substring(sld,1,tmp); sld=substring(sld,tmp+2,length(sld)); tmp=indexof(sestr,"["); sestr=substring(sestr,tmp-1,length(sestr));//17.01.05 ); ); ); if(substring(sld,1,7)=="repeat", // 16.12.09from tmp=indexof(sld,"="); tmp5=substring(sld,tmp,length(sld)); tmp=indexof(tmp5,","); if(tmp>0,//17.01.03from tmp5=substring(tmp5,0,tmp-1); );//17.01.03until repeatflg=1; if(length(tmp5)>0, nrep=parse(tmp5); tmp=[]; if(length(wall)>0, tmp=["","\input{fig/"+wall+".tex}"]; ); tmp=concat(tmp,["","\sameslide"+NewSlideOption,"","\vspace*{18mm}",""]); RepeatList=apply(1..nrep,if(#==1,[],tmp)); ); if(sestr=="",flg=1); tmp=indexof(sld,",");//17.01.03from if(tmp>0, sld="%"+substring(sld,tmp,length(sld)); if(indexof(sld,"=")==0,sld=sld+"="); );//17.01.03until ); if(substring(sld,1,5)=="para", paractr=paractr+1; repeatflg=1; tmp=indexof(sld,"="); tmp=substring(sld,tmp,length(sld)); if(length(tmp)==0, //17.01.03 npara=0; , paradt=tokenize(tmp,":"); tmp=fileslist(Dirwork+"/fig/"+paradt_1); if(length(tmp)>0, parafiles=tokenize(tmp,","); if(indexof(paradt_4,"input")>0, tmp0=indexof(paradt_4,",");//17.01.29from if(tmp0>0, paradt=append(paradt,substring(paradt_4,tmp0,length(paradt_4))); paradt_4=substring(paradt_4,0,tmp0-1); );//17.01.29until parafiles=select(parafiles,indexof(#,".tex")>0); if(indexof(paradt_4,"\input")==0,paradt_4="\"+paradt_4);//16.12.17 ); if(indexof(paradt_4,"include")>0, parafiles=select(parafiles,indexof(#,".pdf")>0); ); npara=length(parafiles); , println(Dirwork+"/fig/"+paradt_1+" not found"); parafiles=[]; npara=0; ); if(nrep==0, nrep=npara; if(length(wall)>0, tmp=["","\input{fig/"+wall+".tex}"]; ); tmp=concat(tmp,["","\sameslide"+NewSlideOption,"","\vspace*{18mm}",""]); RepeatList=apply(1..nrep,if(#==1,[],tmp)); ); ); forall(1..nrep, //16.12.28 tmp4=[]; //16.12.31from if(hyperflg>0, tmp4=["\hypertarget{para"+text(paractr)+"pg"+text(#)+"}{}"]; );//16.12.31until if(npara>0, //17.01.03 tmp4=concat(tmp4,["","\begin{layer}{120}"+paradt_2]); if(#<=npara, //16.12.28from tmp=parafiles_#; , tmp=parafiles_npara; ); tmp="{"+paradt_4+"{fig/"+paradt_1+"/"+tmp+"}}"; if(length(paradt)>=5, tmp="{\scalebox{"+text(paradt_5)+"}"+tmp+"}"; ); if(substring(paradt_3,0,1)=="\", tmp=paradt_3+tmp; , tmp="\putnote"+paradt_3+tmp; ); tmp4=concat(tmp4,[tmp]);//16.12.31 , tmp4=concat(tmp4,["","\begin{layer}{120}{0}"]); ); if((hyperflg>0) & (LinkSize>0.15), tmp="{"+text(LinkPosV)+"}{\hyperlink{para"; // 17.01.12from tmp1=tmp+text(paractr)+"pg"; tmp2=tmp+text(paractr-1)+"pg"+text(nrepprev); if(#>1,tmp=tmp1+text(1),tmp=tmp2); tmp3=[text(LinkPosH-29*LinkSize)+"}"+tmp+"}{\fbox{\Ctab{" +text(2.5*LinkSize)+"mm}{\scalebox{"+text(LinkSize) +"}{\scriptsize $\mathstrut|\!\lhd$}}}}}"]; if(#>1,tmp=tmp1+text(max(#-3,1)),tmp=tmp2); tmp3=append(tmp3, text(LinkPosH-24*LinkSize)+"}"+tmp+"}{\fbox{\Ctab{" +text(2.5*LinkSize)+"mm}{\scalebox{"+text(LinkSize) +"}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}"); if(#>1,tmp=tmp1+text(#-1),tmp=tmp2); tmp3=append(tmp3, text(LinkPosH-17*LinkSize)+"}"+tmp+"}{\fbox{\Ctab{" +text(4.5*LinkSize)+"mm}{\scalebox{"+text(LinkSize) +"}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}"); tmp="{"+text(LinkPosV)+"}{\hyperlink{para"; tmp2=tmp+text(paractr+1)+"pg"+text(1); if(#1,tmp2=tmp_2,tmp2=""); if(length(tmp)>2,tmp3=tmp_3,tmp3=""); if(length(tmp)>3,tmp4=tmp_4,tmp4=""); if(length(tmp)>4,tmp5=tmp_5,tmp5=""); if(contains(["main","new","same"],tmp1), if(tmp1=="new", // 16.11.09from newoption=""; if(substring(tmp2,0,1)=="[",newoption=tmp2); ); if(tmp1=="same", if(length(tmp2)==0,tmp2=newoption); );// 16.11.09until println(SCEOUTPUT,""); println(SCEOUTPUT,"%%%%%%%%%%%%%%%%%%%%"); println(SCEOUTPUT,""); ); ); if(flg==0&tmp1=="main", if(repeatflg==1, forall(2..(length(RepeatList)),nrep, tmp=RepeatList_nrep; forall(tmp, if(substring(#,0,1)!="%", //16.01.04 println(SCEOUTPUT,#); ); ); ); println(SCEOUTPUT,""); repeatflg=0;RepeatList=[]; nrepprev=nrep;//17.01.03 nrep=0;//16.12.27 npara=0;//16.12.27 ); if(length(wall)>0, println(SCEOUTPUT,"\input{fig/"+wall+".tex}"); ); println(SCEOUTPUT,"\mainslide{"+tmp2+"}"); println(SCEOUTPUT,""); tmp2=""; flg=1; ); if(flg==0&tmp1=="new", if(repeatflg==1, forall(2..(length(RepeatList)),nrep, tmp=RepeatList_nrep; forall(tmp, if(substring(#,0,1)!="%", //16.01.04 println(SCEOUTPUT,#); ); ); ); println(SCEOUTPUT,""); repeatflg=0;RepeatList=[]; nrepprev=nrep;//17.01.03 nrep=0; npara=0; ); if(length(wall)>0, Repeatsameslide(repeatflg,sestr,["\input{fig/"+wall+".tex}"]); ); tmp="\newslide"; NewSlideOption=""; //17.01.04 if(substring(tmp2,0,1)=="[", NewSlideOption=tmp2; //17.01.04 tmp=tmp+tmp2; tmp2=tmp3; tmp3=tmp4; tmp4=tmp5; ); tmp=tmp+"{"+tmp2+"}"; Repeatsameslide(repeatflg,sestr,[tmp,"","\vspace*{18mm}",""]); tmp2=""; flg=1; ); if(flg==0&tmp1=="same", if(repeatflg==1, forall(2..(length(RepeatList)),nrep, tmp=RepeatList_nrep; forall(tmp, if(substring(#,0,1)!="%", //16.01.04 println(SCEOUTPUT,#); ); ); ); println(SCEOUTPUT,""); repeatflg=0;RepeatList=[]; nrepprev=nrep;//17.01.03 nrep=0; npara=0; ); if(length(wall)>0, println(SCEOUTPUT,"\input{fig/"+wall+".tex}"); ); tmp="\sameslide"+NewSlideOption; //17.01.04; // if(substring(tmp2,0,1)=="[", // tmp=tmp+tmp2; // tmp2=tmp3; // tmp3=tmp4; // ); println(SCEOUTPUT,tmp); println(SCEOUTPUT,""); println(SCEOUTPUT,"\vspace*{18mm}"); println(SCEOUTPUT,""); tmp4=tmp3; tmp3=tmp2; tmp2=""; flg=1; ); if(flg==0&tmp1=="itemize", Repeatsameslide(repeatflg,sestr,["\begin{itemize}"]); flgL=append(flgL,"i"); tmp2=""; tmp3=""; flg=1; ); if(flg==0&tmp1=="enumerate", Repeatsameslide(repeatflg,sestr,["\begin{enumerate}"+tmp2]); flgL=append(flgL,"e"); tmp2=""; tmp3=""; flg=1; ); if(flg==0&tmp1=="verbatim", //16.06.28from Repeatsameslide(repeatflg,sestr,["\begin{verbatim}"]); flgL=append(flgL,"v"); tmp1=""; tmp2=""; tmp3=""; verbflg=1; flg=1; ); //16.06.28until if(flg==0&tmp1=="layer", Repeatsameslide(repeatflg,sestr,[""]); tmp="\begin{layer}"; if(length(tmp2)>0, tmp=tmp+tmp2; , tmp=tmp+"{120}{0}"; ); Repeatsameslide(repeatflg,sestr,[tmp]); flgL=append(flgL,"l"); tmp2=""; tmp3=""; flg=1; ); if(flg==0&tmp1=="putnote", tmp="\putnote"+tmp2+"{"; if(indexof(tmp3,"include")==0, tmp1=indexof(tmp3,","); if(tmp1==0, tmp=tmp+"\input{fig/"+tmp3+".tex}}"; , tmp2=substring(tmp3,tmp1,length(tmp3)); tmp3=substring(tmp3,0,tmp1-1); tmp=tmp+"\scalebox{"+tmp2+"}{\input{fig/"+tmp3+".tex}}}"; ); , tmp2=indexof(tmp3,"["); tmp3=substring(tmp3,tmp2-1,length(tmp3)); tmp=tmp+"\includegraphics"+tmp3+"{fig/"+tmp4+"}}"; ); Repeatsameslide(repeatflg,sestr,[tmp]); tmp2=""; tmp3=""; flg=1; ); if(flg==0&tmp1=="item", NonThinFlg=1; Repeatsameslide(repeatflg,sestr,["\item"]); tmp3=""; flg=1; ); if(flg==0&tmp1=="end", tmp=flgL_(length(flgL)); if(tmp=="i", Repeatsameslide(repeatflg,sestr,["\end{itemize}"]); ); if(tmp=="e", Repeatsameslide(repeatflg,sestr,["\end{enumerate}"]); ); if(tmp=="l", Repeatsameslide(repeatflg,sestr,["\end{layer}",""]); ); if(tmp=="v", // 16.06.28from Repeatsameslide(repeatflg,sestr,["\end{verbatim}",""]); verbflg=0; ); // 16.06.28until flgL=flgL_(1..(length(flgL)-1)); tmp2=""; tmp3=""; flg=1; ); if(flg==0, // 16.06.28from if(verbflg==0, tmp2=tmp1; , tmp2=slideorgL_ns; // 16.07.11 tmp2=replace(tmp2,"||","//"); // 16.07.10 tmp3=""; ); ); // 16.06.28until if(length(tmp2)>0, if(tmp2=="...", tmp2=""); if(NonThinFlg==1,NonThinFlg=2); Repeatsameslide(repeatflg,sestr,[tmp2]); ); if(length(tmp3)>0, Repeatsameslide(repeatflg,sestr,["\begin{layer}{120}{0}"]); if(substring(tmp3,0,1)=="{", tmp=tmp3; tmp3=tmp4; , tmp="{60}{0}"; ); tmp1=indexof(tmp3,","); if(tmp1==0, tmp3="\putnotes"+tmp+"{\input{fig/"+tmp3+".tex}}"; , tmp2=substring(tmp3,tmp1,length(tmp3)); tmp3=substring(tmp3,0,tmp1-1); tmp3="\putnotes"+tmp+"{\scalebox{"+tmp2+"} {\input{fig/"+tmp3+".tex}}}"; ); Repeatsameslide(repeatflg,sestr,[tmp3,"\end{layer}",""]); ); ); ); if(repeatflg==1, forall(2..(length(RepeatList)),nrep, tmp=RepeatList_nrep; forall(tmp, if(substring(#,0,1)!="%", //16.01.04 println(SCEOUTPUT,#); ); ); ); println(SCEOUTPUT,""); ); println(SCEOUTPUT,""); println(SCEOUTPUT,"\end{document}"); closefile(SCEOUTPUT); ); Mkslides():=( regional(sep,parent,texparentorg,tmp,tmp1,tmp2,tmp3,tmp4,flg); tmp4=Fhead; Fhead=""; if(!iswindows(), //17.10.13 Dirwork=replace(Dirwork,"\",pathsep()); parent=replace(Dirwork+Shellparent,"\",pathsep()); , Dirwork=replace(Dirwork,"/",pathsep()); parent=replace(Dirwork+Batparent,"/",pathsep());// 16.05.29 ); Dirwork=replace(Dirwork,pathsep()+"fig",""); Setdirectory(Dirwork); if(length(Texmain)>0, // 15.08.14 from Texparent=Texmain; ); texparentorg=Texparent; //17.04.10from if(isstring(Slidename), // 15.08.14 from Texparent=Slidename; );//17.04.10until if(!isexists(Dirwork,Texparent+".txt"), // 17.04.12from drawtext(mouse().xy,Texparent+".txt not exist in "+Dirwork, size->24,color->[1,0,0]); , // 17.04.12until Presentation(Texparent); // 15.08.14 until if(iswindows(), tmp2=Batparent; parent=replace(Dirwork+Batparent,sep+"fig","");// 16.05.29 if(indexof(Pathpdf,"Adobe")>0, //17.12.09from Makebat(Texparent,"ttv"); , Makebat(Texparent,"tv"); ); //17.12.09until kc():=( println("kc : "+kc(parent,Dirlib,Fnametex)); // 16.06.10, 17.02.19 ); kc(); Batparent=tmp2; , tmp2=Shellparent; parent=replace(Dirwork+Shellparent,sep+"fig","");// 16.05.29 Shellparent=replace(Shellparent,sep+"fig",""); if(indexof(Pathpdf,"Adobe")>0, //17.12.09from Makeshell(Texparent,"ttv"); , Makeshell(Texparent,"tv"); ); //17.12.09until kc():=( println("kc : "+kc(parent,Mackc+Dirlib,Fnametex)); // 16.06.10 ); kc(); Shellparent=tmp2; ); ); Dirwork=Dirwork+pathsep()+"fig"; //17.10.16 setdirectory(Dirwork); Fhead=tmp4; Texparent=texparentorg;//17.04.10 ); Mkslidesummary():=( // 17.10.26 for R regional(texparentorg); texparentorg=Texparent; if(isstring(Slidename), Texparent=Slidename; ); Mkslidesummary(Texparent,Texparent+"digest",["m","Wait=3"]); Texparent=texparentorg; ); Mkslidesummary(fin,fout):= Mkslidesummary(fin,fout,["m","Wait=3"]); Mkslidesummary(inputfile,outputfile,options):=( //help:Mkslidesummary(fin,fout,options); regional(fin,fout,out,figflg,dirworkorg,dirtop,tmp); dirworkorg=Dirwork;//17.04.10from dirtop=replace(Dirwork,pathsep()+"fig",""); Changework(dirtop);//17.04.10uptp fin=inputfile; if(indexof(fin,".")==0,fin=fin+".tex"); fout=outputfile; if(indexof(fout,".")==0,fout=fout+".tex"); cmdL=[ "Dt=readLines('"+fin+"')",[], "num=grep('\\hypertarget',Dt,fixed=TRUE)",[], "Dt=Dt[setdiff(1:length(Dt),num)]",[], "Smain=c();Snew=c();Ssame=c()",[], "for(J in 1:length(Dt)){",[], " Tmp=length(grep('\\mainslide{',Dt[J],fixed=TRUE))",[], " if(Tmp>0){Smain=c(Smain,1)}else{Smain=c(Smain,0)}",[], " Tmp=length(grep('\\newslide{',Dt[J],fixed=TRUE))",[], " if(Tmp>0){Snew=c(Snew,1)}else{Snew=c(Snew,0)}",[], " Tmp=length(grep('\\sameslide',Dt[J],fixed=TRUE))",[], " if(Tmp>0){Ssame=c(Ssame,1)}else{Ssame=c(Ssame,0)}",[], "}",[], "Nnew=c();Nsame=c()",[], "for(J in 1:length(Dt)){",[], " if((Snew[J]==1)|(Smain[J]==1)){Nnew=c(Nnew,J)}",[], " if(Ssame[J]==1){Nsame=c(Nsame,J)}",[], "}",[], "Out=Dt[1:Nnew[1]]",[], "for(J in Looprange(2,length(Nnew))){",[], " Tmp=max(c(1,Nsame[Nsame0, tmp1=select(tmp1,indexof(#,sub)>0); ); forall(tmp1, if((indexof(#,"##")>0) % (indexof(#,"~#")>0), tmp=indexof(#,","); println(substring(#,tmp,length(#))); , println(#); ); ); ); BBdata():=Bbdata(BBTarget,0); BBdata(fname):=Bbdata(fname,0); // 16.04.09 BBdata(fname,optionorg):=( //help:BBdata(filename); //help:BBdata(options=0(automatic),1(make),"w=","h="); regional(fout,flg,path,file,kcfile,options,eqL,reL,stL, waiting,addop,tmp,tmp1,tmp2); path=""; file=fname; flg=0; waiting=2; forall(reverse(1..length(fname)), if(flg==0, tmp=substring(fname,#-1,#); if(tmp=="/" % tmp=="\", // 14.01.15 path=substring(fname,0,#-1); file=substring(fname,#,length(fname)); flg=1; ); ); ); if(path=="",path=Dirwork);//16.10.05 if(indexof(file,".")==0,file=file+".pdf"); if(islist(optionorg),options=optionorg,options=[optionorg]); tmp=divoptions(options); eqL=tmp_5; reL=tmp_6; stL=tmp_7; flg=0; addop=""; if(length(reL)>0, tmp=reL_1; if(tmp==1,flg=1); ); forall(stL, tmp=Toupper(substring(#,0,1)); if(tmp=="M",flg=1); ); forall(eqL, tmp=indexof(#,"="); tmp1=Toupper(substring(#,0,2)); tmp2=substring(#,tmp,length(#)); if(tmp1=="W=", addop=addop+",width="+tmp2; options=remove(options,[#]); ); if(tmp1=="H=", addop=addop+",height="+tmp2; options=remove(options,[#]); ); ); tmp=indexof(file,"."); tmp1=substring(file,0,tmp-1); fout=tmp1+".txt"; if(iswindows(), kcfile="kc.bat"; , kcfile="kc.sh"; ); if(flg==0, tmp=load(fout); // if(length(tmp)==0, flg=1; , tmp=tokenize(tmp,"%%"); tmp=tmp_2; tmp1=indexof(tmp,":"); tmp=substring(tmp,tmp1,length(tmp)); tmp=Removespace(tmp); if(tmp!=file,flg=1); ); ); if(length(path)==0, path=Dirwork; ); if(flg==1, setdirectory(path); tmp=load(file); setdirectory(Dirwork); if(length(tmp)==0, println(" => "+file+" not exists"); flg=-1; ); ); if(flg==1, SCEOUTPUT = openfile(kcfile); if(!iswindows(), println(SCEOUTPUT,"#!/bin/sh"); ); println(SCEOUTPUT,"cd "+Dq+path+Dq); tmp=replace(PathT,"pdflatex","extractbb"); //16.11.22 tmp=replace(tmp,"pdftex","extractbb"); //16.11.22 tmp=replace(tmp,"xelatex","extractbb"); tmp=replace(tmp,"uplatex","extractbb"); //17.09.20 tmp=replace(tmp,"platex","extractbb"); tmp=replace(tmp,"latex","extractbb"); tmp=tmp+" -O "+file; if(iswindows(), tmp=tmp+" > "+Dirwork+"\"+fout; , tmp=tmp+" > "+Dirwork+"/"+fout; ); println(SCEOUTPUT,tmp); println(SCEOUTPUT,"exit 0"); closefile(SCEOUTPUT); kc(Dirwork+"/"+kcfile,Mackc+Dirlib,Fnametex); // 16.06.07 ); if(flg>=0, tmp1=0; repeat(floor(waiting*1000/WaitUnit), if(tmp1==0, wait(10); tmp=load(fout); if(indexof(tmp,"CreationDate")>0, tmp1=1; ); ); ); if(length(tmp)==0, println(fout+" not generated. Maybe "+kcfile+" not run."); , tmp=tokenize(tmp,"%%"); tmp=select(tmp,indexof(#,"Bounding")>0); tmp=tmp_2; // tmp1=indexof(tmp,":"); tmp=substring(tmp,tmp1,length(tmp)); tmp=removespace(tmp); tmp=tokenize(tmp," "); tmp1=""; forall(tmp, tmp1=tmp1+Sprintf(#,2)+" "; ); tmp1=removespace(tmp1)+addop; tmp2="\includegraphics[bb="+tmp1+"]{"+file+"}"; println(tmp2); ); ); // setdirectory(Dirwork); tmp2; // 16.04.25 ); //help:end();