<- maple2proc



#!  /bin/bash

if  test  $2
    then  from_rep=$1  ;  from_fil=$2  ;  dest=$3
    else  from_rep=`pwd`    ;  from_fil=$1.mws  ;  dest=$1.lyx
fi

#  echo  "$1  **  $2  **  $3  **  $from_rep/$from_fil  $dest"

tmp_sed1=$from_rep/tmp_sed1
tmp_sed2=$from_rep/tmp_sed2
tmp_sed3=$from_rep/tmp_sed3
tmp_sed4=$from_rep/tmp_sed4
tmp1=$from_rep/tmp1
tmp2=$from_rep/tmp2
tmp3=$from_rep/tmp3
tmp4=$from_rep/tmp4

####  le  preambule  #########################################
#\newcommand{\captionseparator}{~--}
#\usepackage{float}
#\floatstyle{plain}
#\restylefloat{figure}
#\usepackage{algorithm}

cat  <<  EOF  >  $dest
\lyxformat  218
\textclass  book
\begin_preamble
\usepackage{float}
\renewcommand{\captionseparator}{~--}
\floatname{algorithm}{Alg.}
\usepackage{algorithmic}
\end_preamble
\language  english
\inputencoding  latin1
\fontscheme  default
\graphics  default
\float_placement  htbp
\paperfontsize  12
\spacing  single
\papersize  a4paper
\paperpackage  a4
\use_geometry  1
\use_amsmath  1
\paperorientation  portrait
\leftmargin  1in
\topmargin  1in
\rightmargin  1in
\bottommargin  1in
\secnumdepth  2
\tocdepth  2
\paragraph_separation  indent
\defskip  medskip
\quotes_language  english
\quotes_times  2
\papercolumns  1
\papersides  2
\paperpagestyle  default

\layout  Standard

\begin_inset  FormulaMacro
\newcommand{\pow}{\:  \widehat{\:  }\,  }

\end_inset

EOF

####  tmp_sed1  ################################

cat  <<  EOF  >  $tmp_sed1

s/¶//g
s/\\\\n/  /g
s/\\\\+/  /g

s/%/lastresult/g

s/{EXCHG/\\
{EXCHG/g

s/{USTYLE/\\
{USTYLE/g

s/{SECT/\\
{SECT/g

s/{MPLTEXT[^"]*""\  }}*//g

s/{MPLTEXT/\\
{MPLTEXT/g

s/{PARA/\\
{PARA/g

s/{MARK/\\
{MARK/g

s/end\  if/;  endif  /g
s/\  fi;/;  endif  /g
s/\  fi:/;  endif  /g

s/end\  do/;  enddo  /g
s/\  od;/;  enddo  /g
s/\  od:/;  enddo  /g

s/end\  proc/;  endproc  /g

s/^{MPLTEXT[^"]*""\  }}*$//

EOF

####  tmp_sed2  ################################

cat  <<  EOF  >  $tmp_sed2

s/^{MPLTEXT[^"]*"/¶¶¶debalg/
s/"\  }}*$/\\
¶¶¶endalg/

s/local  /\\
¶¶¶local  /

s/global  /\\
¶¶¶global  /

s/option  \`/\\
¶¶¶option  /

s/  if  /  \\
¶¶¶if  /g

s/;if  /  \\
¶¶¶if  /g

s/  then  /  ¶¶¶then\\
¶¶¶state  /g

s/  else  /  \\
¶¶¶else\\
¶¶¶state  /g

s/  elif  /  \\
¶¶¶elif  /g

s/  endif  /  \\
¶¶¶endif\\
¶¶¶state  /g

s/  for  /  \\
¶¶¶for  /g

s/;for  /  \\
¶¶¶for  /g

s/  do  /  ¶¶¶do\\
¶¶¶state  /g

s/  enddo  /  \\
¶¶¶enddo\\
¶¶¶state  /g

s/endproc//

s/RETURN([^)]*)/return  ¶¶¶kill&/g
s/¶¶¶killRETURN//g

s/;/\\
¶¶¶state  /g

s/¶¶¶state[  ]*error  /¶¶¶error  /g
s/¶¶¶state[  ]*break  /¶¶¶break  /g
s/¶¶¶state[  ]*return  /¶¶¶return  /g

EOF

####  tmp_sed3  ################################

cat  <<  EOF  >  $tmp_sed3

/¶¶¶debalg/  {

s/^/\\
\\
\\\\begin_float  alg  ¶¶¶laystan  ¶¶¶latexopen  \\\\backslash  begin{algorithmic}[1]  ¶¶¶laystan  \\
/

s/¶¶¶debalg[^:]*:=/  ¶¶¶latexopen  \\\\backslash  DEF  {  ¶¶¶latexclot  &¶¶¶findef  ¶¶¶latexopen  }  {  ¶¶¶latexclot  \\
/

s/¶¶¶debalg//  ;  s/:=¶¶¶findef//

s/proc[^)]*)/  ¶¶¶deb&  ¶¶¶fineq  ¶¶¶latexopen  }  ¶¶¶latexclot/

s/¶¶¶debproc/¶¶¶debeq  /

}

/¶¶¶endalg/  {

s/¶¶¶endalg/  \\
¶¶¶laystan  ¶¶¶latexopen  \\\\backslash  end{algorithmic}  \\
\\
\\\\layout  Caption\\
\\
leg  \\
\\\\end_float  \\
\\
/

}

/¶¶¶local/  {

s/¶¶¶local/  ¶¶¶laystan  ¶¶¶latexopen  \\\\backslash  LOCAL  ¶¶¶latexclot  ¶¶¶debeq/
s/$/¶¶¶fineq/

}

/¶¶¶global/  {

s/¶¶¶global/  ¶¶¶laystan  ¶¶¶latexopen  \\\\backslash  GLOBAL  ¶¶¶latexclot  ¶¶¶debeq/
s/$/¶¶¶fineq/

}

/¶¶¶option/  d

s/¶¶¶if/¶¶¶laystan  ¶¶¶latexopen  \\\\backslash  IF  {  ¶¶¶latexclot  þþþifdebeq  /  g
s/¶¶¶elif/¶¶¶laystan  ¶¶¶latexopen  \\\\backslash  ELSIF  {  ¶¶¶latexclot  þþþifdebeq  /  g
s/¶¶¶then/  þþþiffineq  ¶¶¶latexopen  }  /  g
s/¶¶¶else/¶¶¶laystan  ¶¶¶latexopen  \\\\backslash  ELSE/  g
s/¶¶¶endif/¶¶¶laystan  ¶¶¶latexopen  \\\\backslash  ENDIF/  g

s/þþþif/¶¶¶/g

/¶¶¶do/  {
s/¶¶¶for/¶¶¶laystan  ¶¶¶latexopen  \\\\backslash  FOR  {  ¶¶¶latexclot    þþþfordebeq  /  g
s/¶¶¶do/  þþþforfineq  ¶¶¶latexopen  }  /  g
s/  to  /  þþþforfineq  ¶¶¶latexopen  \\\\backslash  TO  ¶¶¶latexclot    þþþfordebeq  /
s/  from  /  þþþforfineq    ¶¶¶latexopen  \\\\backslash  FROM  ¶¶¶latexclot    þþþfordebeq  /
s/  while  /  þþþforfineq  WHILE  þþþfordebeq  /

s/þþþfor/¶¶¶/g

}

s/¶¶¶enddo/  ¶¶¶laystan  ¶¶¶latexopen  \\\\backslash  ENDFOR  /  g

/^¶¶¶state[  ]*$/  d

/¶¶¶state/  {

s/¶¶¶state/¶¶¶laystan  ¶¶¶latexopen  \\\\backslash  STATE  ¶¶¶latexclot  ¶¶¶debeq/
s/$/¶¶¶fineq  ;  /

}

/¶¶¶error/  {

s/¶¶¶error/¶¶¶laystan  ¶¶¶latexopen  \\\\backslash  STATE  \\\\backslash  ERROR    ¶¶¶latexclot  /
s/\\\\"/"/g

}

/¶¶¶return/  {

s/¶¶¶return/¶¶¶laystan  ¶¶¶latexopen  \\\\backslash  STATE  \\\\backslash  RETURN    ¶¶¶latexclot  ¶¶¶debeq  /
s/$/¶¶¶fineq/

}

s/¶¶¶break/¶¶¶laystan  ¶¶¶latexopen  \\\\backslash  STATE  \\\\backslash  BREAK  ¶¶¶latexclot  /

s/¶¶¶debeq/\\
¶¶¶debeq/g

s/¶¶¶fineq/¶¶¶fineq\\
/g

s/¶¶¶latexopen/\\
\\\\latex  latex  \\
\\
/g

s/¶¶¶latexclot/\\
\\\\latex  default  \\
\\
/g

EOF

####  tmp_sed4  ################################

cat  <<  EOF  >  $tmp_sed4

s/¶¶¶laystan/\\
\\\\layout  Standard\\
\\
/g

/¶¶¶debeq/  {

s/(/\\\\left(/g
s/)/\\\\right)/g

s/,/,\\\\,/g
s/\^/  \\\\pow  /g
s/not/not  \\\\,  /g
s/<>/  \\\\neq  /g
s/or/  \\\\,  or  \\\\,  /g

s/¶¶¶debeq/\\
\\\\begin_inset  Formula  \\\\(  /
s/¶¶¶fineq/  \\\\)\\
\\\\end_inset\\
\\
\\
/

}

EOF

####  tmp_sedx  ################################

cat  $from_rep/$from_fil  |  tr  \\f\\r\\n  ¶¶¶  |  sed  -f  $tmp_sed1  >  tmp0

cat  $from_rep/$from_fil  |  tr  \\f\\r\\n  ¶¶¶  |  sed  -f  $tmp_sed1  |  grep  MPLTEXT  >  $tmp1
#  et  alors  $tmp1  contient  exactement  une  ligne  par  cellule  maple  non  vide
#  au  passage,  on  a  recollé  les  end_if,  end_do,  end_proc

sed  -f  $tmp_sed2  $tmp1  >  $tmp2
#  et  alors  $tmp2  est  composé  de  "lignes  logiques",  chacune  commençant  par  un  code.
#  les  lignes  non  vides  correspondent  aux  lignes  du  résultat  final

sed  -f  $tmp_sed3  $tmp2  >  $tmp3
#  gestion  des  mots-clefs  ;  puis  une  ligne  pour  chaque  instruction  élémentaire

sed  -f  $tmp_sed4  $tmp3  >  $tmp4
#  gestion  des  équations

cat  $tmp4  >>  $dest

dater=`date  +"%Y/%m/%d  %Hh%M"`

cat  <<  EOF                            >>  $dest

\the_end

EOF

lyx  $dest
#  kwrite  $tmp2

<-  

mise en page
douillet@ensait.fr
2007/03/05 16h46