// Copyright (C) 2014 Masataka Kaneko, Setsuo Takato, KETCindyJapan 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("ketcindymv(20190415) loaded"); //help:start(); ////%Setpara start//// Setpara(path,fstr,sL):=Setpara(path,fstr,sL,[],[]); Setpara(pathorg,fstr,sL,options):= Setpara(pathorg,fstr,sL,options,[]); Setpara(pathorg,fstr,sL,options,optionsanim):=( //help:Setpara("folder name","funstr","range",options,optionsanim); //help:Setpara(folder,funstr,range,options); //help:Setpara(options=["Div=25"]); //help:Setpara(options2anim1=["Frate=10","Scale=1"]); //help:Setpara(options2anim2=["OpA=[loop,controls,buttonsize=3mm]"]); //help:Setpara(options2anim3=["OpA=+step"]); //help :Setpara(options2anim4=["Mag=1600","Title=folder"]); //help:Setpara(options2anim4=["Title=folder"]); regional(path,tmp,tmp1,tmp2,tmp3,eqL,ndiv,gtmp,ctmp,nn,flg); if(length(pathorg)==0, path=Slidename,path=pathorg);//17.04.10 ParaPath=path; ParaFstr=fstr; ParaSL=sL; if(isstring(sL), ndiv=25; tmp=Divoptions(options); eqL=tmp_5; forall(eqL, tmp=Strsplit(#,"="); tmp1=Toupper(tmp_1); if(substring(tmp1,0,1)=="D", ndiv=parse(tmp_2); ); ); tmp=Strsplit(sL,"="); tmp1=parse(tmp_2); ParaSL=apply(0..ndiv,tmp1_1+#*(tmp1_2-tmp1_1)/ndiv); ); ParaOp=options; if((!contains(Paraop,"r"))&(!contains(ParaOp,"m")), ParaOp=append(ParaOp,"m");//180604 ); ParaOpAnim=optionsanim; if(ADDAXES=="1", //181224rom Drwxy(); // ADDAXES="0"; ); //181224to GLISTback=GLIST; GCLISTback=GCLIST; GOUTLISTback=GOUTLIST; POUTLISTback=POUTLIST; VLISTback=VLIST; FUNLISTback=FUNLIST; LETTERlistback=LETTERlist; COM0thlistback=COM0thlist; COM1stlistback=COM1stlist; COM2ndlistback=COM2ndlist; Dirworkbkup=Dirwork; //0611from Dirworksubbkup=Dirwork+pathsep()+ParaPath; Fheadbkup=Fhead; //0611to gtmp=GLISTback; tmp1=select(1..(length(gtmp)),indexof(gtmp_#,"ReadOutData")>0); //180614from tmp2=[];tmp3=[]; if(length(tmp1)>0, //180615 nn=tmp1_(length(tmp1)); tmp2=append(tmp2,nn); flg=0; tmp=min([nn+40,length(gtmp)]); forall((nn+1)..tmp, if(flg==0, if(indexof(gtmp_#,"Projpara")>0, tmp2=append(tmp2,#); tmp=indexof(gtmp_#,"="); tmp=substring(gtmp_#,0,tmp-1); tmp3=append(tmp3,tmp); , flg=1; ); ); ); ); tmp1=remove(1..(length(gtmp)),tmp2); GLISTback=apply(tmp1,GLIST_#); //180614to ctmp=COM2ndlistback; //180614 forall(tmp3,tmp2, tmp=select(ctmp,indexof(#,tmp2)>0); ctmp=remove(ctmp,tmp); ); COM2ndlistback=ctmp; ); ////%Setpara end//// ////%Parafolder start//// Parafolder():=Parafolder(ParaFstr,ParaSL,ParaOp); Parafolder(fstr,sL):=Parafolder(fstr,sL,[]); Parafolder(fstr,sL,optionorg):=( //help:Parafolder(foldername,1..4); //help:Parafolder(foldername,"s=[0,1]"); //help:Parafolder("mf(s)",foldername,"s=[0,1]"); //help:Parafolder(options=["m/r","Div=25","Wait=20"]); //help:Parafolder(optionsadd=[""Outfile=n",Pause=10(ms)"]); //help:Paraslide(para=folder:layery:pos:input,scale); //help:Paraslide(para=folder:layery:pos:include:[width=100]); regional(store,nn,tmp,tmp1,tmp2,strL,eqL,waiting,outflg,pause, mkr,mktex,options,sfL,dirbkup,pfile,ctr,flg,varL,waitingR,timeC,timeR); store=Fillblack(); //181125 tmp=indexof(fstr,"("); tmp1=substring(fstr,tmp,length(fstr)); tmp=indexof(tmp1,")"); tmp1=substring(tmp1,0,tmp-1); parse("Movieframe("+tmp1+"):="+fstr+";"); //190415 options=optionorg; tmp=Divoptions(options); eqL=tmp_5; strL=tmp_7; if(length(strL)==0,options=append(options,"m")); mkr="A"; mktex="A"; waiting=30; outflg=0; pause=10; forall(eqL, tmp=Strsplit(#,"="); tmp1=Toupper(substring(tmp_1,0,1)); if(tmp1=="W", waiting=parse(tmp_2); options=remove(options,[#]); ); if((tmp1=="O")%(tmp1=="R"), //180606from tmp=Toupper(substring(tmp_2,0,1)); if(tmp=="Y", outflg=1); options=remove(options,[#]); ); if(tmp1=="P", //180610from pause=parse(tmp_2); options=remove(options,[#]); ); // //180610to ); forall(strL, tmp1=Toupper(substring(#,0,1)); if(tmp1=="M", mkr="Y"; mktex="Y"; ); ); waitingR=min([length(sL)*waiting,120]);//180617 Changework(Dirworksubbkup); SCEOUTPUT = openfile("all.r"); println(SCEOUTPUT,""); closefile(SCEOUTPUT);//180608to resetclock();//180617 if(outflg==1, //180606from CommonMake=1;//180609 ctr=1; forall(sL, tmp="000000"+text(ctr); pfile="p"+substring(tmp,length(tmp)-3,length(tmp)); Setfiles(pfile); Movieframe(#); ctr=ctr+1; ); CommonMake=-1;//180609 Setfiles(Fheadbkup);//180617 timeC=seconds();//180617 ); //180606to wait(pause); //180610 sfL=[]; ctr=1; forall(1..(length(sL)),nn, GLIST=GLISTback; GCLIST=GCLISTback; GOUTLIST=GOUTLISTback; POUTLIST=POUTLISTback; VLIST=VLISTback; FUNLIST=FUNLISTback; LETTERlist=LETTERlistback; COM0thlist=COM0thlistback; COM1stlist=COM1stlistback; COM2ndlist=COM2ndlistback; tmp="000000"+text(nn); pfile="p"+substring(tmp,length(tmp)-3,length(tmp)); Changework(Dirworksubbkup); Setfiles(pfile); sfL=append(sfL,FnameR); if(outflg==1, wait(pause); Movieframe(sL_nn); Changework(Dirworksubbkup);//180606 ctr=ctr+1; , Movieframe(sL_nn); timeC=seconds();//180617 ); CommonMake=0;//180609 Setfiles(pfile); //180608 if(!isexists(Dirworksubbkup,FnameR) % mkr=="Y", if(ErrFlag!=-1, WritetoRS(2); ); ); ); wait(pause); //180610 Setfiles(Fheadbkup); GLIST=select(GLIST,indexof(#,"Projpara")==0); tmp1=replace(Dirworksubbkup,"\\","/"); //180611 tmp1=replace(tmp1,"\","/"); cmdL=[ "setwd("+Dqq(tmp1)+")",[], "size="+text(length(sL)),[], "cat('',file='all.r',sep='',append=FALSE)",[], //180614 "for(n in Looprange(1,size)){",[], " tmp=as.character(n)",[], " tmp=paste('0000',tmp,sep='')",[], " tmp=substring(tmp,nchar(tmp)-2,nchar(tmp))",[], " fname=paste('p',tmp,'.r',sep='')",[], " lines=readLines(fname)",[], " if(n>1){",[], //180614from " for(j in 1:length(lines)){",[], " tmp=grep('source',lines[j],fixed=TRUE)",[], " if(length(tmp)>0){",[], " lines[j]=paste('#',lines[j],sep='')",[], " lines[j+2]=paste('#',lines[j+2],sep='')",[], " break",[], " }",[], " }",[], " }",[], " lines=lines[1:(length(lines)-1)]",[], //180614to " tmp=paste('print(',as.character(n),')',sep='')",[], " lines=c(tmp,lines)",[], " for(j in Looprange(1,length(lines))){",[], " cat(lines[j],file='all.r',sep='\n',append=TRUE)",[], " }",[], "}",[], "source('all.r')",[] ]; if(ErrFlag!=-1, waiting=min([waiting,8])*length(ParaSL); //180610 if(!isexists(Dirworksubbkup,Fnametex) % mktex=="Y", CalcbyR("",cmdL,["Cat=n","m","Wait="+text(waitingR)]); , println("Parafolder finished"); ); if(length(after)>0, parse(after+";"); //190415 ); ); if(ErrFlag!=-1,//180617from timeR=seconds()-timeC; println("C and R finished"); println(" C : "+Sprintf(timeC,2)+" sec"); println(" R : "+Sprintf(timeR,2)+" sec"); ); //180617to Changework(Dirworkbkup); Setfiles(Fheadbkup); Fillrestore(store); //181125 ); ////%Parafolder end//// ////%Animatefile start//// Animatefile():=Animatefile(Dirwork,ParaPath); Animatefile(path,folder):=( //help:Animatefile(); //help:Animatefile(Dirwork,ParaPath); regional(FRate, Scale, OpA, pa,fname,eqL,tmp,tmp1,tmp2,texfiles); tmp=divoptions(ParaOpAnim); //17.11.24 eqL=tmp_5; FRate="20"; //190317 Scale="1"; OpA="loop,controls,buttonsize=3mm"; remflg=0; forall(eqL, tmp1=Toupper(substring(#,0,1)); //181111 tmp=indexof(#,"="); tmp2=substring(#,tmp,length(#)); if(tmp1=="F", FRate=tmp2; ); if(tmp1=="S", Scale=tmp2; ); if(tmp1=="O", // 17.12.07from if(length(tmp2)>0, tmp2=replace(tmp2,"[",""); tmp2=replace(tmp2,"]",""); if(substring(tmp2,0,1)=="+", OpA=OpA+","+substring(tmp2,1,length(tmp2)); , OpA=tmp2; ); ); ); ); if(length(OpA)>0,OpA="["+OpA+"]"); pa=replace(path,"\","/"); fname="anim"+folder+".tex"; tmp=Dirwork+"/"+folder; path=replace(tmp,"\","/"); if(iswindows(),tmp=replace(tmp,"/","\")); tmp1=fileslist(tmp); tmp1=tokenize(tmp1,","); tmp1=select(tmp1,indexof(#,".tex")>0); tmp1=sort(tmp1); //180617 texfiles=[];//180609from forall(tmp1, tmp=indexof(#,"."); tmp=parse(substring(#,1,tmp-1)); if(tmp<=length(ParaSL), texfiles=append(texfiles,#); ); );//180609to SCEOUTPUT= openfile(fname); println(SCEOUTPUT,"\def\parapath{"+pa+"}%"); //17.06.22 println(SCEOUTPUT,"\def\figsize{"+Scale+"}%"); //17.12.07 println(SCEOUTPUT,"\begin{animateinline}"+OpA+"{"+FRate+"}%"); forall(1..(length(texfiles)), //180609 if(Scale==1, // 17.08.30from tmp="\input{\parapath/"; tmp=tmp+folder+"/"+tmp1_#+"}%"; , tmp="\scalebox{\figsize}{\input{\parapath/";//17.12.07 tmp=tmp+folder+"/"+tmp1_#+"}}%"; ); // 17.08.30until println(SCEOUTPUT,tmp); // println(SCEOUTPUT,""); //17.06.25 if(#0, tex=substring(tmp1,tmp_(length(tmp)),length(tmp1)); , tex=tmp1; );//17.10.14until if((tex=="platex")%(tex=="uplatex"), if(tex=="platex",article="jarticle",article="ujarticle"); , article="article"; ); SCEOUTPUT=openfile(Fhead+".tex"); println(SCEOUTPUT,"\documentclass[landscape]{"+article+"}"); if((tex=="platex")%(tex=="uplatex")%(tex=="latex"), tmp="\special{papersize=\the\paperwidth,\the\paperheight}"; println(SCEOUTPUT,tmp); println(SCEOUTPUT,"\mag="+mag);//17.11.25 ); if((tex=="pdflatex")%(tex=="lualatex")%(tex=="xelatex"), if((tex=="pdflatex")%(tex=="xelatex"), println(SCEOUTPUT,"\usepackage[pdftex]{pict2e}"); , println(SCEOUTPUT,"\usepackage{pict2e}"); println(SCEOUTPUT,"\usepackage{luatexja}"); ); 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,"\","/"); //17.10.30from 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}"); ); ); println(SCEOUTPUT,"\usepackage{amsmath,amssymb}"); println(SCEOUTPUT,"\usepackage{bm,enumerate}"); if((tex=="platex")%(tex=="uplatex")%(tex=="latex"), println(SCEOUTPUT,"\usepackage[dvipdfmx]{graphicx}"); println(SCEOUTPUT,"\usepackage[dvipdfmx]{animate}"); , println(SCEOUTPUT,"\usepackage{graphicx}"); println(SCEOUTPUT,"\usepackage{animate}"); ); println(SCEOUTPUT,"\usepackage{xcolor}"); forall(ADDPACK, tmp1, tmp=indexof(tmp1,"{animate}")+indexof(tmp1,"{hyperref}"); if(tmp==0, println(SCEOUTPUT,"\usepackage"+tmp1); ); ); println(SCEOUTPUT,"\pagestyle{empty}"); println(SCEOUTPUT,"\setmargin{0}{0}{0}{0}"); println(SCEOUTPUT,""); println(SCEOUTPUT,"\begin{document}"); println(SCEOUTPUT,"\large"); println(SCEOUTPUT,""); println(SCEOUTPUT,"\vspace*{25mm}"); println(SCEOUTPUT,""); tmp=floor(parse("290*1000/"+mag)); print(SCEOUTPUT,"\Ctab{"+text(tmp)+"mm}{"); print(SCEOUTPUT,"\fbox{\Large\bf "+title+"}"); println(SCEOUTPUT,"}"); tmp=parse("6*1000/"+mag); println(SCEOUTPUT,"\vspace{"+text(tmp)+"mm}"); println(SCEOUTPUT,""); tmp=indexof(ULEN,"cm"); if(tmp>0, tmp1=substring(ULEN,0,tmp-1); tmp1=parse(replace(tmp1," ",""))*10; ); tmp=indexof(ULEN,"mm"); if(tmp>0, tmp1=substring(ULEN,0,tmp-1); tmp1=parse(replace(tmp1," ","")); ); tmp=parse("300*1000/"+mag); tmp1=(tmp-(XMAX-XMIN)*tmp1)/2; tmp1=tmp1+parse("("+mag+"-1000)/100*1.3"); print(SCEOUTPUT,"\hspace*{"+text(tmp1)+"mm}"); tmp=replace(path,"\","/"); //17.12.09(2lines) println(SCEOUTPUT,"\input{"+tmp+"/anim"+folder+".tex}"); println(SCEOUTPUT,"\end{document}"); closefile(SCEOUTPUT); if(iswindows(), parent=Dirwork+Batparent; Makebat(Fhead,"ttv"); kc():=( println("kc : "+kc(parent,Dirlib,Fnametex)) ); kc(); , parent=Dirwork+Shellparent; Makeshell(Fhead,"ttv"); kc():=( println("kc : "+kc(parent,Mackc+Dirlib,Fnametex)); ); kc(); ); Fhead=Fheadbkup; Pathpdf= Pathpdfbkup; Fillrestore(store); //181125 ); ////%Mkanimation end//// ////%Mkflipanime start//// Mkflipanime():=( regional(remflg,tmp,eqL,tmp1,tmp2); if(!isexists(Dirwork,ParaPath), //17.10.14from Parafolder(); ); Mkflipanime(Dirwork,ParaPath); ); Mkflipanime(folder):=Mkflipanime(Dirwork,folder); Mkflipanime(path,folder):=( //help:Mkfilpanime(); //help:Mkflipanime(path,folder); regional(store,Fheadbkup,tex,article,parent,eqL,mag,title, tmp,tmp1,tmp2,tmp3,texfiles,flg); store=Fillblack(); //181125 tmp=Divoptions(ParaOpAnim); //17.11.25from eqL=tmp_5; mag="1600"; title=folder; forall(eqL, tmp=Indexof(#,"="); tmp1=Toupper(substring(#,0,1)); tmp2=substring(#,tmp,length(#)); if(tmp1=="M", mag=tmp2; ); if(tmp1=="T", title=tmp2; ); ); //17.11.25until Fheadbkup=Fhead; Fhead=folder+"flipanime"; //190404 tmp1=replace(PathT,pathsep(),"/"); tmp=indexall(tmp1,"/");//17.10.14from if(length(tmp)>0, tex=substring(tmp1,tmp_(length(tmp)),length(tmp1)); , tex=tmp1; );//17.10.14until if((tex=="platex")%(tex=="uplatex"), if(tex=="platex",article="jarticle",article="ujarticle"); , article="article"; ); SCEOUTPUT=openfile(Fhead+".tex"); println(SCEOUTPUT,"\documentclass[landscape]{"+article+"}"); if((tex=="platex")%(tex=="uplatex")%(tex=="latex"), tmp="\special{papersize=\the\paperwidth,\the\paperheight}"; println(SCEOUTPUT,tmp); println(SCEOUTPUT,"\mag="+mag);//17.11.25 ); if((tex=="pdflatex")%(tex=="lualatex")%(tex=="xelatex"), if((tex=="pdflatex")%(tex=="xelatex"), println(SCEOUTPUT,"\usepackage[pdftex]{pict2e}"); , println(SCEOUTPUT,"\usepackage{pict2e}"); println(SCEOUTPUT,"\usepackage{luatexja}"); ); 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,"\","/"); //17.10.30from 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}"); ); ); println(SCEOUTPUT,"\usepackage{amsmath,amssymb}"); println(SCEOUTPUT,"\usepackage{bm,enumerate}"); if((tex=="platex")%(tex=="uplatex")%(tex=="latex"), println(SCEOUTPUT,"\usepackage[dvipdfmx]{graphicx}"); , println(SCEOUTPUT,"\usepackage{graphicx}"); ); println(SCEOUTPUT,"\usepackage{xcolor}"); forall(ADDPACK, tmp1, if(tmp==0, println(SCEOUTPUT,"\usepackage"+tmp1); ); ); println(SCEOUTPUT,"\pagestyle{empty}"); println(SCEOUTPUT,"\setmargin{0}{0}{0}{0}"); println(SCEOUTPUT,""); println(SCEOUTPUT,"\begin{document}"); println(SCEOUTPUT,"\large"); println(SCEOUTPUT,""); tmp=fileslist(Dirwork+pathsep()+folder); tmp=tokenize(tmp,","); tmp1=select(tmp,indexof(#,".tex")>0); //180609from tmp1=sort(tmp1);//180617 texfiles=[]; forall(tmp1, tmp=indexof(#,"."); tmp=parse(substring(#,1,tmp-1)); if(tmp<=length(ParaSL), texfiles=append(texfiles,#); ); );//180609to forall(texfiles, println(SCEOUTPUT,"\vspace*{25mm}"); println(SCEOUTPUT,""); tmp=floor(parse("290*1000/"+mag)); print(SCEOUTPUT,"\Ctab{"+text(tmp)+"mm}{"); print(SCEOUTPUT,"\fbox{\Large\bf "+title+"}"); println(SCEOUTPUT,"}"); tmp=parse("6*1000/"+mag); println(SCEOUTPUT,"\vspace{"+text(tmp)+"mm}"); println(SCEOUTPUT,""); tmp=indexof(ULEN,"cm"); if(tmp>0, tmp1=substring(ULEN,0,tmp-1); tmp1=parse(replace(tmp1," ",""))*10; ); tmp=indexof(ULEN,"mm"); if(tmp>0, tmp1=substring(ULEN,0,tmp-1); tmp1=parse(replace(tmp1," ","")); ); tmp=parse("300*1000/"+mag); tmp1=(tmp-(XMAX-XMIN)*tmp1)/2; tmp1=tmp1+parse("("+mag+"-1000)/100*1.3"); print(SCEOUTPUT,"\hspace*{"+text(tmp1)+"mm}"); println(SCEOUTPUT,"\input{"+folder+"/"+#+"}"); println(SCEOUTPUT,""); println(SCEOUTPUT,"\newpage"); ); println(SCEOUTPUT,"\end{document}"); closefile(SCEOUTPUT); if(iswindows(), parent=Dirwork+Batparent; Makebat(Fhead,"tv"); kc():=( println("kc : "+kc(parent,Dirlib,Fnametex)) ); kc(); , parent=Dirwork+Shellparent; Makeshell(Fhead,"tv"); kc():=( println("kc : "+kc(parent,Mackc+Dirlib,Fnametex)); ); kc(); ); Fhead=Fheadbkup; Fillrestore(store); //181125 ); ////%Mkflipanime end//// //help:end();