previous up next contents
Previous: mk_pnp Up: Batches génériques Next: mku_user_add   Contents

mk_proc6


#! /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/{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/end\ do/; enddo /g
s/end\ proc/; endproc /g
s/\\\\n/ /g
s/\\\\+/ /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 | 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

rm $tmp1 $tmp2 $tmp3 $tmp4  $tmp_sed1 $tmp_sed2 $tmp_sed3 $tmp_sed4

lyx $dest


previous up next contents
Previous: mk_pnp Up: Batches génériques Next: mku_user_add   Contents


douillet@ensait.fr
2003-06-24