// A script for creating and compiling a LaTeXDiff document // Written by PJ Healy, after stealing a lot of stuff from other places. // This requires that latexdiff can already be called from the command line PushTagsandRegisters; // First let's try to get the previous file version ListFolderFiles(0,'%P','.tex',0,1); FindInString('%!0','%N.tex',1,2,0010); // find current file FindInString('%!0','>',2,3,1111, %!1-3); // find EOL before previous file IfNum(%!3,%!2,'>',> 'ExtractByIndex(1,"%!0",%!3+1,%!1-3);',> 'LetReg(1,"%P\%N.tex");'> ); GetLength(2,'%!1'); ExtractByIndex(2,'%!1',%!2-10,%!2-5); IfGetNum('%!2',000101,999999,'','ExtractByIndex(2,"%!1",0,%!2-5);'); // Now set up the MUI MUIReset('Compare two tex files'); MUISet('','left','150'); MUISet('','top','300'); MUISet('','width','1000'); MUISet('','height','210'); MUIAdd(0,0,360,120,'Top_Panel','TPanel'); MUISet('Top_Panel','aligned','alTop'); MUISet('Top_Panel','inner bevel','1'); MUISet('Top_Panel','outer bevel','0'); MUIAdd(3,3,50,0,'OldButton','TButton','Top_Panel','Old File:'); MUISet('OldButton','on click',!"Call('BrowseOldFile');"); MUISet('OldButton','default', '0'); MUIAdd(56,5,590,0,'OldPath','TEdit','Top_Panel'); MUISet('OldPath','caption','%P\%!1'); MUISet('OldPath','auto select','1'); MUISet('OldPath','on change',!"Call('UpdateCmd');Call('UpdateDiff');"); MUIAdd(3,33,50,0,'NewButton','TButton','Top_Panel','New File:'); MUISet('NewButton','on click',!"Call('BrowseNewFile');"); MUISet('NewButton','default', '0'); MUIAdd(56,35,590,0,'NewPath','TEdit','Top_Panel'); MUISet('NewPath','caption','%P\%N.tex'); MUISet('NewPath','auto select','1'); MUISet('NewPath','on change',!"Call('UpdateCmd');Call('UpdateDiff');"); MUIAdd(3,63,50,0,'DiffButton','TButton','Top_Panel','Diff File:'); MUISet('DiffButton','on click',!"Call('BrowseDiffFile');"); MUISet('DiffButton','default', '0'); MUIAdd(56,65,590,0,'DiffPath','TEdit','Top_Panel'); Call('UpdateDiff'); MUISet('DiffPath','auto select','1'); MUISet('DiffPath','on change',!"Call('UpdateCmd');"); MUIAdd(3,97,60,0,'CmdLabel','TLabel','Top_Panel','Command:'); MUISet('CmdLabel','font bold','1'); MUIAdd(66,95,900,0,'CmdBox','TEdit','Top_Panel'); MUIGet('OldPath','text',3); MUIGet('NewPath','text',4); MUIGet('DiffPath','text',5); MUISet('CmdBox','caption','latexdiff %!3 %!4 > %!5'); MUISet('CmdBox','auto select','1'); MUIAdd(0,0,0,0, 'Bottom_Panel','TPanel'); MUISet('Bottom_Panel','aligned', 'alBottom'); MUISet('Bottom_Panel','inner bevel', '0'); MUISet('Bottom_Panel','outer bevel', '0'); MUIAdd(3,0,150,40,'OverwriteGroup','TGroupBox','Bottom_Panel','Overwrite Existing Diff File?'); MUIAdd(15,15,40,20,'OverwriteYes','TRadioButton','OverwriteGroup','&Yes'); MUISet('OverwriteYes','checked','1'); MUIAdd(75,15,40,20,'OverwriteNo','TRadioButton','OverwriteGroup','&No'); MUIAdd(180,10,100,0,'CreateButton','TButton','Bottom_Panel','C&reate Comparison'); MUISet('CreateButton','on click',!"Call('CreateIt')"); MUIAdd(300,10,100,0,'CompileButton','TButton','Bottom_Panel','Create and &Compile'); MUISet('CompileButton','default', '1'); MUISet('CompileButton','on click',!"Call('CompileIt')"); MUIAdd(420,10,100,0,'PDFButton','TButton','Bottom_Panel','Create to &PDF'); MUISet('PDFButton','on click',!"Call('PDFIt')"); MUIAdd(540,10,100,0,'CancelButton','TButton','Bottom_Panel','E&xit'); MUISet('CancelButton','on click',!'MUIHide(1)'); MUIShow; JMP('end_events'); :UpdateCmd:: =========================================================== MUIGet('OldPath','text',3); MUIGet('NewPath','text',4); MUIGet('DiffPath','text',5); MUISet('CmdBox','caption','latexdiff %!3 %!4 > %!5'); Return; :UpdateDiff:: ========================================================== MUIGet('OldPath','text',3); MUIGet('NewPath','text',4); GetLength(5,'%!4'); ExtractByIndex(1,'%!4',0,%!5-5); FindInString('%!3','\',5,6,0100); GetLength(6,'%!3'); ExtractByIndex(8,'%!3',%!5+1,%!6-5); ExtractByIndex(9,'%!3',%!6-10,%!6-5); FindInString('%!9','[0-9][0-9][0-1][0-9][0-3][0-9]',5,6,0001); IfNum(%!5,0,'=','MUISet("DiffPath","caption","%!1_vs_%!9.tex");','MUISet("DiffPath","caption","%!1_vs_%!8.tex");'); Return; :BrowseNewFile:: ======================================================= Browse(7,"TeX Files|*.tex|All Files|*.*","%P"); MUISet('NewPath','caption','%!7'); // MUIGet('OldPath','text',3); // MUIGet('NewPath','text',4); // MUIGet('DiffPath','text',5); // MUISet('CmdBox','caption','latexdiff %!3 %!4 > %!5'); Return; :BrowseOldFile:: ===================================================== Browse(7,"TeX Files|*.tex|All Files|*.*","%P"); MUISet('OldPath','caption','%!7'); // MUIGet('OldPath','text',3); // MUIGet('NewPath','text',4); // MUIGet('DiffPath','text',5); // MUISet('CmdBox','caption','latexdiff %!3 %!4 > %!5'); Return; :BrowseDiffFile:: ===================================================== Browse(7,"TeX Files|*.tex|All Files|*.*","%P"); MUISet('DiffPath','caption','%!7'); // MUIGet('OldPath','text',3); // MUIGet('NewPath','text',4); // MUIGet('DiffPath','text',5); // MUISet('CmdBox','caption','latexdiff %!3 %!4 > %!5'); Return; :CreateIt:: ============================================================= MUIGet('OldPath','text',3); MUIGet('NewPath','text',4); MUIGet('DiffPath','text',5); MUIGet('OverwriteYes','checked',6); IfFileExists("%!3",'Relax;','Call("FileMissing")'); IfGetNum('%!6',0,0,'Call("CheckOverwrite")','Relax;'); IfStr('%!9','exists','=',> |Relax;|,> |StartWorking(`Running latexdiff...`);> WinExe(``,`cmd.exe /C "latexdiff %!3 %!4 > %!5"`,> `%P`,`LaTeXDiff ...`,000100,1,``,``,``> );> IfFileExists(`%!5`,> `Relax;`,> `Prompt("FAILURE: File was not created.");`> );> Open(`%!5`,0,1);> UpdateFile(`%!5`);> StopWorking;|> ); LetReg(9,""); MUIHide(1); Return; :CompileIt:: ========================================================= MUIGet('OldPath','text',3); MUIGet('NewPath','text',4); MUIGet('DiffPath','text',5); MUIGet('OverwriteYes','checked',6); IfFileExists("%!3",'Relax;','Call("FileMissing")'); IfGetNum('%!6',0,0,'Call("CheckOverwrite")','Relax;'); IfStr('%!9','exists','=',> |Relax;|,> |StartWorking(`Running latexdiff...`);> WinExe(``,`cmd.exe /C "latexdiff %!3 %!4 > %!5"`,> `%P`,`LaTeXDiff ...`,000100,1,``,``,``> );> IfFileExists(`%!5`,> `Relax;`,> `Prompt("FAILURE: File was not created.");`> );> Open(`%!5`,0,1);> UpdateFile(`%!5`);> Exe(`%b\Exec\TeX\TeXify.edt`);> CloseFile(`%!5`);> StopWorking;|> ); LetReg(9,""); MUIHide(1); Return; :PDFIt:: ========================================================= MUIGet('OldPath','text',3); MUIGet('NewPath','text',4); MUIGet('DiffPath','text',5); MUIGet('OverwriteYes','checked',6); IfFileExists("%!3",'Relax;','Call("FileMissing")'); IfGetNum('%!6',0,0,'Call("CheckOverwrite")','Relax;'); IfStr('%!9','exists','=',> |Relax;|,> |StartWorking(`Running latexdiff...`);> WinExe(``,`cmd.exe /C "latexdiff %!3 %!4 > %!5"`,> `%P`,`LaTeXDiff ...`,000100,1,``,``,``> );> IfFileExists(`%!5`,> `Relax;`,> `Prompt("FAILURE: File was not created.");`> );> Open(`%!5`,0,1);> UpdateFile(`%!5`);> Exe(`%b\Exec\TeX\PDFTeXify.edt`);> CloseFile(`%!5`);> StopWorking;|> ); LetReg(9,""); MUIHide(1); Return; :FileMissing:: ====================================================== Prompt('%!3 cannot be found. Action failed.'); Return; :CheckOverwrite:: ================================================== IfFileExists('%!5','Call("CantOverwrite")','Relax;'); Return; :CantOverwrite:: ====================================================== Prompt('%!5 exists and will not be overwritten. Creation failed.'); LetReg(9,"exists"); Return; :end_events:: ========================================================= MUIHide(1); PopTagsandRegisters; End;