 
 #
 # TeXtools  ver 1.3.2
 # This version 14 August 2001
 # (c) 2001 Andrew Martin
 # 
 # If you make modifications to this code
 # to fix bugs or add new features 
 # please let me know.
 # andrew@ilovemaths.co.uk
 #
 # Version history
 # 1.3.1 Addition of some readlibs in initilisation file
 # 1.3.2 Addition of pagenumber=true, anspage=true options in MakeHolderFile
 #       And quite a bit of a re-write to this procedure
 #       Corresponding alterations to manual also made.

 # restart; libname;
 
`TeXtools/init`:=proc()
  global TeXtoolsVersion:
  interface(screenwidth=500);
  WARNING(cat(`maximum line length in file `,interface(screenwidth),` characters.`));
  TeXtoolsVersion:=`1.3.2`;
  readlib('AddTo',``.`textools`.`/`.`code`.`/`.`AddTo.m`);
  readlib('AddLatexOf',``.`textools`.`/`.`code`.`/`.`AddLatexOf.m`);
  readlib('AddQueMultcols',``.`textools`.`/`.`code`.`/`.`AddQueMultcols.m`);
  readlib('AddPlotToQs',``.`textools`.`/`.`code`.`/`.`AddPlotToQs.m`);
end: 

save `TeXtools/init`,``.`textools`.`/`.`code`.`/`.`init.m`;

 inlinelatex:=proc(e::anything, filename::{symbol, string})
 local ``, i, texlist, texstr;
     if type(e,table) or type(e,procedure) or type(e,array) then
       texlist := [`latex/print`(eval(e))]
     else
       texlist := [`latex/print`(e)]
     fi;
     if 1 < nargs then
       writeto(filename)
     fi;
     texstr := ``;
     for i to nops(texlist) do
       if max(9,interface(screenwidth)-9) < length(texstr)+length(texlist[i]) then
         `latex/lprint`(texstr);
         texstr := ``.(texlist[i])
       else
         texstr := ``.texstr.(texlist[i])
       fi
     od;
     texstr:= `$`.texstr.`$`:
     `latex/lprint`(texstr);
     if 1 < nargs then
       writeto(terminal)
     fi
 end:
 save inlinelatex,``.`textools`.`/`.`code`.`/`.`inlinelatex.m`;
 
 inlinedisplaylatex:=proc(e::anything, filename::{symbol, string})
 local ``, i, texlist, texstr;
     if type(e,table) or type(e,procedure) or type(e,array) then
       texlist := [`latex/print`(eval(e))]
     else
       texlist := [`latex/print`(e)]
     fi;
     if 1 < nargs then
       writeto(filename)
     fi;
     texstr := ``;
     for i to nops(texlist) do
       if max(9,interface(screenwidth)-9) < length(texstr)+length(texlist[i]) then
         `latex/lprint`(texstr);
         texstr := ``.(texlist[i])
       else
         texstr := ``.texstr.(texlist[i])
       fi
     od;
     texstr:= `$\\displaystyle `.texstr.`$`:
     `latex/lprint`(texstr);
     if 1 < nargs then
       writeto(terminal)
     fi
 end:
 save inlinedisplaylatex,``.`textools`.`/`.`code`.`/`.`inlinedisplaylatex.m`;
 
 displaylatex:=proc(e::anything, filename::{symbol, string})
 local ``, i, texlist, texstr;
     if type(e,table) or type(e,procedure) or type(e,array) then
       texlist := [`latex/print`(eval(e))]
     else
       texlist := [`latex/print`(e)]
     fi;
     if 1 < nargs then
       writeto(filename)
     fi;
     texstr := ``;
     for i to nops(texlist) do
       if max(9,interface(screenwidth)-9) < length(texstr)+length(texlist[i]) then
         `latex/lprint`(texstr);
         texstr := ``.(texlist[i])
       else
         texstr := ``.texstr.(texlist[i])
       fi
     od;
     texstr:= `$$`.texstr.`$$`:
     `latex/lprint`(texstr);
     if 1 < nargs then
       writeto(terminal)
     fi
 end:
 save displaylatex,``.`textools`.`/`.`code`.`/`.`displaylatex.m`;
 
 
 
 StartFile:=proc() # optional parameters for filenames
 global PlotCounter, Queflename, Ansflename:
 local opts:
 interface(quiet=true):
 PlotCounter:=0:
 opts:=[args]:
 if not hasoption(opts, Qfilename, 'Queflename', 'opts') then 
   Queflename:=`questions`:
 fi:
 if not hasoption(opts, Afilename, 'Ansflename', 'opts') then 
   Ansflename:=`answers`:
 fi:
 
 Queflename:=cat(Queflename,`.tex`):
 Ansflename:=cat(Ansflename,`.tex`):
 
 if (Queflename=Ansflename) then ERROR(`filenames must not be the same`) fi:
 
 if opts<>[] then ERROR(`Unrecognised option(s)`,op(opts)) fi;

 writeto(Queflename):
 lprint(`% LaTeX produced by MAPLE with TeXtools`);
 lprint(`% TeXTools Version`,TeXtoolsVersion);
 lprint(`% QUESTIONS`);
 #lprint(startmsg);
 writeto(Ansflename):
 lprint(`% LaTeX produced by MAPLE with TeXtools`);
 lprint(`% TeXTools Version`,TeXtoolsVersion);
 lprint(`% ANSWERS`);
 writeto(terminal);
 interface(quiet=false);
 end:
 save StartFile,``.`textools`.`/`.`code`.`/`.`StartFile.m`;
 
 StartNumber:=proc() # maybe have optional parameters to start numbering at another number! 
 #(maybe a maple variable?) also to have different numebering styles.. i,ii,iii, a, b ,c, etc..
 global `latex/special_names`;
 readlib(latex);
 `latex/special_names`[`beginenumerate`]:=`\\begin{enumerate}`:
 interface(quiet=true):
 appendto(Queflename):
 latex(beginenumerate);
 appendto(Ansflename):
 latex(beginenumerate);
 writeto(terminal);
 interface(quiet=false);
 end:
 save StartNumber,``.`textools`.`/`.`code`.`/`.`StartNumber.m`;
 
 EndNumber:=proc()
 global `latex/special_names`;
 readlib(latex);
 `latex/special_names`[`endenumerate`]:=`\\end{enumerate}`:
 interface(quiet=true):
 appendto(Queflename):
 latex(endenumerate);
 appendto(Ansflename):
 latex(endenumerate);
 writeto(terminal);
 interface(quiet=false);
 end:
 save EndNumber,``.`textools`.`/`.`code`.`/`.`EndNumber.m`;
 
 EndFile:=proc()  # maybe optional params for version number etc..
 end:
 save EndFile,``.`textools`.`/`.`code`.`/`.`EndFile.m`;
 
 AddTo:=proc(x)
 WARNING(`this function has been supersceeded, please use AddToQs or AddToAns`);
 interface(quiet=true):
 appendto(Queflename):
 lprint(x);
 writeto(terminal);
 interface(quiet=false);
 end:
 save AddTo,``.`textools`.`/`.`code`.`/`.`AddTo.m`;
 
 AddToQs:=proc(x)
 interface(quiet=true):
 appendto(Queflename):
 lprint(x);
 writeto(terminal);
 interface(quiet=false);
 end:
 save AddToQs,``.`textools`.`/`.`code`.`/`.`AddToQs.m`;
 
 AddToAns:=proc(x)
 interface(quiet=true):
 appendto(Ansflename):
 lprint(x);
 writeto(terminal);
 interface(quiet=false);
 end:
 save AddToAns,``.`textools`.`/`.`code`.`/`.`AddToAns.m`;
 
 AddLatexOf:=proc(x) 
 readlib('displaylatex',``.`textools`.`/`.`code`.`/`.`displaylatex.m`);
 WARNING(`this function has been supersceeded, please use AddToQsLatexOf or AddToAnsLatexOf`);
 interface(quiet=true):
 appendto(Queflename):
 displaylatex(x);
 writeto(terminal);
 interface(quiet=false);
 end:
 save AddLatexOf,``.`textools`.`/`.`code`.`/`.`AddLatexOf.m`;
 
 AddToQsLatexOf:=proc(x) # optional args for display, inlinedisplay, inline, 
 local opts, thestyle;
 interface(quiet=true):
 readlib('inlinelatex',``.`textools`.`/`.`code`.`/`.`inlinelatex.m`);
 readlib('displaylatex',``.`textools`.`/`.`code`.`/`.`displaylatex.m`);
 readlib('inlinedisplaylatex',``.`textools`.`/`.`code`.`/`.`inlinedisplaylatex.m`);
 opts:=[args[2..-1]]:
 if hasoption(opts, style, 'thestyle', 'opts') then 
   if not member(thestyle, {inline,inlinedisplay,display}) then 
     ERROR(thestyle, `is not an allowed for style`)
   fi
 else
   thestyle:=display
 fi:
 if opts<>[] then ERROR(`Unrecognised option(s)`,op(opts)) fi;
 appendto(Queflename):
 ``.thestyle.latex(x);
 writeto(terminal);
 interface(quiet=false);
 end:
 save AddToQsLatexOf,``.`textools`.`/`.`code`.`/`.`AddToQsLatexOf.m`;
 
 AddToAnsLatexOf:=proc(x) # optional args for display, inlinedisplay, inline,
 local opts, thestyle;
 interface(quiet=true):
 readlib('inlinelatex',``.`textools`.`/`.`code`.`/`.`inlinelatex.m`);
 readlib('displaylatex',``.`textools`.`/`.`code`.`/`.`displaylatex.m`);
 readlib('inlinedisplaylatex',``.`textools`.`/`.`code`.`/`.`inlinedisplaylatex.m`);
 opts:=[args[2..-1]]:
 if hasoption(opts, style, 'thestyle', 'opts') then 
   if not member(thestyle, {inline,inlinedisplay,display}) then 
     ERROR(thestyle, `is not an allowed for style`)
   fi
 else
   thestyle:=inlinedisplay
 fi:
 if opts<>[] then ERROR(`Unrecognised option(s)`,op(opts)) fi;
 appendto(Ansflename):
 ``.thestyle.latex(x);
 writeto(terminal);
 interface(quiet=false);
 end:
 save AddToAnsLatexOf,``.`textools`.`/`.`code`.`/`.`AddToAnsLatexOf.m`;
 
 AddQue:=proc(question,x,y) # adds a FULL question
 global `latex/special_names`;
 local opts, thestyle;
 readlib('inlinelatex',``.`textools`.`/`.`code`.`/`.`inlinelatex.m`);
 readlib('displaylatex',``.`textools`.`/`.`code`.`/`.`displaylatex.m`);
 readlib('inlinedisplaylatex',``.`textools`.`/`.`code`.`/`.`inlinedisplaylatex.m`);
 readlib(latex);
 `latex/special_names`[`item`]:=`\\item`:
 interface(quiet=true):
 opts:=[args[4..-1]]:
 if hasoption(opts, style, 'thestyle', 'opts') then 
   if not member(thestyle, {inline,inlinedisplay,display}) then 
     ERROR(thestyle, `is not an allowed for style`)
   fi
 else
   thestyle:=display
 fi:
 if opts<>[] then ERROR(`Unrecognised option(s)`,op(opts)) fi;
 appendto(Queflename):
 latex(item); lprint(question) ; ``.thestyle.latex(x);
 appendto(Ansflename):
 latex(item); inlinedisplaylatex(y);
 writeto(terminal);
 interface(quiet=false);
 end:
 save AddQue,``.`textools`.`/`.`code`.`/`.`AddQue.m`;
 
 AddQ:=proc(question)
 global `latex/special_names`;
 readlib(latex);
 `latex/special_names`[`item`]:=`\\item`:
 interface(quiet=true):
 appendto(Queflename):
 latex(item); lprint(question) ;
 appendto(Ansflename):
 latex(item);
 writeto(terminal); 
 interface(quiet=false);
 end:
 save AddQ,``.`textools`.`/`.`code`.`/`.`AddQ.m`;
 
 AddQueP:=proc(x,y)
 global `latex/special_names`;
 local opts, thestyle;
 readlib('inlinelatex',``.`textools`.`/`.`code`.`/`.`inlinelatex.m`);
 readlib('displaylatex',``.`textools`.`/`.`code`.`/`.`displaylatex.m`);
 readlib('inlinedisplaylatex',``.`textools`.`/`.`code`.`/`.`inlinedisplaylatex.m`);
 readlib(latex);
 `latex/special_names`[`item`]:=`\\item`:
 interface(quiet=true):
 opts:=[args[3..-1]]:
 if hasoption(opts, style, 'thestyle', 'opts') then 
   if not member(thestyle, {inline,inlinedisplay,display}) then 
     ERROR(thestyle, `is not an allowed for style`)
   fi
 else
   thestyle:=inlinedisplay:
 fi:
 if opts<>[] then ERROR(`Unrecognised option(s)`,op(opts)) fi:
 appendto(Queflename):
 latex(item); ``.thestyle.latex(x);
 appendto(Ansflename):
 latex(item); inlinedisplaylatex(y);
 writeto(terminal);
 interface(quiet=false);
 end:
 save AddQueP,``.`textools`.`/`.`code`.`/`.`AddQueP.m`;
 
 StartTabular:=proc(x,y)
 local i;
 global Qwidth, Awidth, count: 
 count:=0;
 Qwidth:=x:Awidth:=y:
 
 interface(quiet=true):
 appendto(Queflename):
 lprint(`\\begin{center} \\x=0`);
 lprint(`\\begin{tabular}{r @{\\hspace{0.6cm}} l `);
 for i from 1 to (Qwidth-1) do
   lprint(`@{\\hspace{1.5cm}} r @{\\hspace{0.7cm}} l`);
 od:
 lprint(`}`);
 
 appendto(Ansflename):
 lprint(`\\x=0`);
 lprint(`\\begin{tabular}{r @{\\hspace{0.6cm}} l `);
 for i from 1 to (Awidth-1) do
   lprint(`@{\\hspace{1.5cm}} r @{\\hspace{0.7cm}} l`);
 od:
 lprint(`}`);
 
 writeto(terminal); 
 interface(quiet=false);
 end:
 save StartTabular,``.`textools`.`/`.`code`.`/`.`StartTabular.m`;
 
 EndTabular:=proc()
 interface(quiet=true):
 appendto(Queflename):
 lprint(`\\end{tabular} \\end{center}`);
 appendto(Ansflename):
 lprint(`\\end{tabular}`);
 writeto(terminal); 
 interface(quiet=false);
 end:
 save EndTabular,``.`textools`.`/`.`code`.`/`.`EndTabular.m`;
 
 AddQueTabular:=proc(x,y)
 global count,Qwidth,Awidth;
 local fred, fred2;
 
 interface(quiet=true):
 count:=count+1:
 
 appendto(Queflename):
 if (Qwidth=1) then
   if count=1 then fred:=`\\numa &` else fred:=`\\\\[0.55cm] \\numa &` fi:
 else
 if (count mod Qwidth) = 1 then 
   if count=1 then fred:=`\\numa &` else fred:=`\\\\[0.55cm] \\numa &` fi:
 else 
   fred:=`& \\numa &`
 fi:
 fi:
 lprint(fred);
 inlinedisplaylatex(x);
 
 appendto(Ansflename):
 if (Awidth=1) then
   if count=1 then fred2:=`\\numa &` else fred2:=`\\\\ \\numa &` fi:
 else
 if (count mod Awidth) = 1 then 
   if count=1 then fred2:=`\\numa &` else fred2:=`\\\\ \\numa &` fi:
 else 
   fred2:=`& \\numa &`
 fi:
 fi:
 lprint(fred2);
 inlinedisplaylatex(y);
 
 writeto(terminal);
 interface(quiet=false);
 end:
 save AddQueTabular,``.`textools`.`/`.`code`.`/`.`AddQueTabular.m`;
 
 StartMulticols:=proc(num1,num2)
 global number1,number2, `latex/special_names`; # dont think these need to be global vars!  no they do! since the end multcols uses them !!
 number1:=num1; number2:=num2;
 if (number1=1) and (number2=1) then WARNING(`Why would you wnat to do this?`) fi:
 readlib(latex);
 `latex/special_names`[`beginenumerate`]:=`\\begin{enumerate}`:
 interface(quiet=true):
 appendto(Queflename):
 if number1>1 then lprint(`\\begin{multicols}{`,number1,`}`) fi;
 latex(beginenumerate);
 appendto(Ansflename):
 if number2>1 then lprint(`\\begin{multicols}{`,number2,`}`) fi;
 latex(beginenumerate);
 writeto(terminal);
 interface(quiet=false);
 end:
 save StartMulticols,``.`textools`.`/`.`code`.`/`.`StartMulticols.m`;
 
 EndMulticols:=proc()
 global `latex/special_names`;
 readlib(latex);
 `latex/special_names`[`endenumerate`]:=`\\end{enumerate}`:
 interface(quiet=true):
 appendto(Queflename):
 latex(endenumerate);
 if number1>1 then lprint(`\\end{multicols}`) fi;
 appendto(Ansflename):
 latex(endenumerate);
 if number2>1 then lprint(`\\end{multicols}`) fi;
 writeto(terminal);
 interface(quiet=false);
 end:
 save EndMulticols,``.`textools`.`/`.`code`.`/`.`EndMulticols.m`;
 
 AddQueMultcols:=proc(x,y)
 WARNING(`this function is now defunct, please use AddQueP`);
 #global `latex/special_names`;
 #readlib(latex);
 #`latex/special_names`[`item`]:=`\\item`:
 #interface(quiet=true):
 #appendto(Queflename):
 #latex(item) ; inlinedisplaylatex(x);
 #appendto(Ansflename):
 #latex(item); inlinelatex(y);
 #writeto(terminal);
 #interface(quiet=false);

 AddQueP(x,y);
 end:
 save AddQueMultcols,``.`textools`.`/`.`code`.`/`.`AddQueMultcols.m`;
 
 
 # the multicolsM procedures don't start off numbering, just in case thats wnated?!
 
 StartMulticolsM:=proc(num1,num2)
 global number1,number2, `latex/special_names`;
 number1:=num1; number2:=num2;
 WARNING(`not sure what this function does`);
 readlib(latex);
 `latex/special_names`[`beginenumerate`]:=`\\begin{enumerate}`:
 interface(quiet=true):
 appendto(Queflename):
 if number1>1 then lprint(`\\begin{multicols}{`,number1,`}`) fi;
 #latex(beginenumerate);
 appendto(Ansflename):
 if number2>1 then lprint(`\\begin{multicols}{`,number2,`}`) fi;
 #latex(beginenumerate);
 writeto(terminal);
 interface(quiet=false);
 end:
 
 
 # NOTE make this an option later!!
 
 EndMulticolsM:=proc()
 global `latex/special_names`;
 WARNING(`not sure what this function does`);
 readlib(latex);
 `latex/special_names`[`endenumerate`]:=`\\end{enumerate}`:
 interface(quiet=true):
 appendto(Queflename):
 #latex(endenumerate);
 if number1>1 then lprint(`\\end{multicols}`) fi;
 appendto(Ansflename):
 #latex(endenumerate);
 if number2>1 then lprint(`\\end{multicols}`) fi;
 writeto(terminal);
 interface(quiet=false);
 end:
 
 processIt:=proc(x) 
 if not assigned(LatexPath) then ERROR(`LatexPath variable not set in maple initalisation file`) fi:
 ssystem(``.LatexPath.` `.x); #ssystem(`c:\\texmf\\miktex\\bin\\latex `.x);
 if not assigned(DVIPath) then ERROR(`DVIPath variable not set in maple initalisation file`) fi:
 ssystem(``.DVIPath.` `.x); #ssystem(`c:\\texmf\\miktex\\bin\\yap -1 `.x);
 end:
 save processIt,``.`textools`.`/`.`code`.`/`.`processIt.m`;
 
 MakeHolderFile:=proc(x)
 local opts, name, numpage, anpage, authorname, todaysdate, numpagestring, anspagestring, authornamestring, todaysdatestring:
 interface(quiet=true):
 opts:=[args[2..-1]]:

 if hasoption(opts, title, 'name', 'opts') then 
 else
   name:=``: #no title remove this later... so that only the large stuff is set up if required.. like below`:
 fi:

 if hasoption(opts, numberpage, 'numpage', 'opts') then 
   if not type(numpage,boolean) then ERROR(`numberpage option must be a boolean but received`,numpage) fi;
   if (numpage=true) then numpagestring:=``;# if true (do nothing LaTeX page numbers anyway)
   else numpagestring:=`\\pagestyle{empty}` fi: # if false
 else numpagestring:=`\\pagestyle{empty}` # default
 fi:

 if hasoption(opts, anspage, 'anpage', 'opts') then
   if not type(anpage,boolean) then ERROR(`anspage option must be a boolean but received`,anpage) fi;
   if (anpage=true) then 
     anspagestring:=`\\newpage` # if option set to true
   else
     anspagestring:=`\\vspace{\\stretch{1}} \n\\hrule` # if option set to false
   fi:
 else
     anspagestring:=`\\vspace{\\stretch{1}} \n\\hrule ` # default
 fi:

 if hasoption(opts, author, 'authorname', 'opts') then 
   authornamestring:=`{\\footnotesize \\begin{flushright}`.authorname.`\\end{flushright} }`;
 else 
   authornamestring:=``;
 fi:
 
 if hasoption(opts, date, 'todaysdate', 'opts') then 
   if not type(todaysdate,boolean) then ERROR(`date option must be a boolean but received`,todaysdate) fi:
   if (todaysdate=true) then 
     todaysdatestring:=`{\\footnotesize \\begin{flushright} \\today \\end{flushright} }` 
     else todaysdatestring:=`` 
   fi:
 else todaysdatestring:=``
 fi:

 writeto(x.`.tex`):
 lprint(`% LaTeX produced by MAPLE with TeXtools`);
 lprint(`% Processed using TeXTools Version`,TeXtoolsVersion);
 lprint(`% Holder file created by MakeHolderFile`);
 lprint(`% Requires the style file textools.sty for best output`);
 lprint(``);
 lprint(`\\documentclass[a4paper,12pt]{article}`);
 lprint(`\\usepackage{textools}`):

 lprint(numpagestring);

 lprint(`\\begin{document}`):
 lprint(`\\begin{center}\\textbf{\\large Practice Exercises}\\\\[0.5cm]`):
 lprint(`\\textbf{\\huge `.`name`.`}\\end{center}`):
 lprint(cat(`\\input{`,Queflename,`}`)):

 lprint(anspagestring);
 lprint(``);

 lprint(`\\textbf{Answers}`):
 lprint(cat(`\\input{`,Ansflename,`}`)):
 
 lprint(authornamestring);  lprint(todaysdatestring);
 
 lprint(`\\end{document}`):
 
 if opts<>[] then ERROR(`Unrecognised option(s)`,op(opts)) fi;
 
 writeto(terminal);
 interface(quiet=false);
 end:
 save MakeHolderFile,``.`textools`.`/`.`code`.`/`.`MakeHolderFile.m`;
 
 
 AddPlotToQs:=proc(A)
 local flename:
 global PlotCounter:
 interface(quiet=true):
 PlotCounter:=PlotCounter+1:
 flename:=cat(`plot`,PlotCounter,`.eps`);
 plotsetup(ps,plotoutput=flename,plotoptions=`noborder,portrait,height=100,width=100`):
 plots[display](A);
 plotsetup(default):
 appendto(Queflename):
 lprint(`\\includegraphics[width=3cm,height=3cm]{plot`.PlotCounter.`.eps}`);
 writeto(terminal);
 interface(quiet=false);
 end:
 save AddPlotToQs,``.`textools`.`/`.`code`.`/`.`AddPlotToQs.m`;
 
 # defines TeXtools as a readlibbed package in Maple
 TeXtools:=`TeXtools`:
 
 TeXtools[StartFile]:='readlib('`StartFile`',``.`textools`.`/`.`code`.`/`.`StartFile.m`)':
 TeXtools[StartNumber]:='readlib('`StartNumber`',``.`textools`.`/`.`code`.`/`.`StartNumber.m`)': 
 TeXtools[EndNumber]:='readlib('`EndNumber`',``.`textools`.`/`.`code`.`/`.`EndNumber.m`)': 
 TeXtools[EndFile]:='readlib('`EndFile`',``.`textools`.`/`.`code`.`/`.`EndFile.m`)': 
 #R TeXtools[AddTo]:='readlib('`AddTo`',``.`textools`.`/`.`code`.`/`.`AddTo.m`)': 
 TeXtools[AddToQs]:='readlib('`AddToQs`',``.`textools`.`/`.`code`.`/`.`AddToQs.m`)':
 TeXtools[AddToAns]:='readlib('`AddToAns`',``.`textools`.`/`.`code`.`/`.`AddToAns.m`)':  
 #R TeXtools[AddLatexOf]:='readlib('`AddLatexOf`',``.`textools`.`/`.`code`.`/`.`AddLatexOf.m`)': 
 TeXtools[AddToQsLatexOf]:='readlib('`AddToQsLatexOf`',``.`textools`.`/`.`code`.`/`.`AddToQsLatexOf.m`)': 
 TeXtools[AddToAnsLatexOf]:='readlib('`AddToAnsLatexOf`',``.`textools`.`/`.`code`.`/`.`AddToAnsLatexOf.m`)': 
 TeXtools[AddQue]:='readlib('`AddQue`',``.`textools`.`/`.`code`.`/`.`AddQue.m`)': 
 TeXtools[AddQ]:='readlib('`AddQ`',``.`textools`.`/`.`code`.`/`.`AddQ.m`)': 
 TeXtools[AddQueP]:='readlib('`AddQueP`',``.`textools`.`/`.`code`.`/`.`AddQueP.m`)': 
 TeXtools[StartTabular]:='readlib('`StartTabular`',``.`textools`.`/`.`code`.`/`.`StartTabular.m`)': 
 TeXtools[EndTabular]:='readlib('`EndTabular`',``.`textools`.`/`.`code`.`/`.`EndTabular.m`)': 
 TeXtools[AddQueTabular]:='readlib('`AddQueTabular`',``.`textools`.`/`.`code`.`/`.`AddQueTabular.m`)': 
 TeXtools[StartMulticols]:='readlib('`StartMulticols`',``.`textools`.`/`.`code`.`/`.`StartMulticols.m`)': 
 TeXtools[EndMulticols]:='readlib('`EndMulticols`',``.`textools`.`/`.`code`.`/`.`EndMulticols.m`)': 
 #R TeXtools[AddQueMulticols]:='readlib('`AddQueMulticols`',``.`textools`.`/`.`code`.`/`.`AddQueMulticols.m`)': 
 TeXtools[processIt]:='readlib('`processIt`',``.`textools`.`/`.`code`.`/`.`processIt.m`)': 
 TeXtools[MakeHolderFile]:='readlib('`MakeHolderFile`',``.`textools`.`/`.`code`.`/`.`MakeHolderFile.m`)': 
 #A TeXtools[AddPlotToQs]:='readlib('`AddPlotToQs`',``.`textools`.`/`.`code`.`/`.`AddPlotToQs.m`)': 
 TeXtools[init]:='readlib('`TeXtools/init`',``.`textools`.`/`.`code`.`/`.`init.m`)': 

# R- remove in next version, A- add in next version!

 save TeXtools,``.`textools`.`/`.`TeXtools.m`;

