X-Git-Url: https://scm.cri.ensmp.fr/git/Faustine.git/blobdiff_plain/c7f552fd8888da2f0d8cfb228fe0f28d3df3a12c..b4b6f2ea75b9f0f3ca918f5b84016610bf7a4d4f:/interpretor/preprocessor/faust-0.9.47mr3/tools/faust2appls/faust2mathdoc diff --git a/interpretor/preprocessor/faust-0.9.47mr3/tools/faust2appls/faust2mathdoc b/interpretor/preprocessor/faust-0.9.47mr3/tools/faust2appls/faust2mathdoc new file mode 100755 index 0000000..a67c306 --- /dev/null +++ b/interpretor/preprocessor/faust-0.9.47mr3/tools/faust2appls/faust2mathdoc @@ -0,0 +1,141 @@ +#!/bin/bash + +# faust2mathdoc.sh +# +# Generate a full Faust documentation, in a '*-mdoc' top directory. +# +# Karim Barkati +# November 2009 +# +# Warning : this script requires several things to be installed : +# - svg2pdf, from the Cairo 2D graphics library; +# - pdflatex, to compile the tex file; +# - breqn, a latex package to break equations; +# - faust ;-) + + +# Usage. +print_usage() +{ + echo "usage: faust2mathdoc [-l LANG] [-utf8] faust_file.dsp ..." + echo " LANG is usually a 2-lowercase-letters language name, like en, fr, or it." + echo " -utf8 force faust_file.dsp to be recoded in UTF-8 before being processed" +} + + +# Visit each directory transmited as argument, +# in order to convert process.svg files into pdf. +# This function uses the svg2pdf command, +# from the Cairo 2D graphics library. +convert_svgprocesses2pdf() +{ + for DIR in $@ ; do + if [ -d $DIR ] ; then + echo "cd " $DIR + cd $DIR + FILE="process.svg" + for SRC in $FILE ; do + echo ' --> '$SRC + PDF=${SRC%.svg}'.pdf' + svg2pdf "$SRC" "$PDF" + echo ' <-- '$PDF + done + cd - + else + echo error : \'$DIR\' is not a directory. + fi + done +} + + +# Visit each directory transmited as argument, +# in order to convert .svg files into pdf. +# This function uses the svg2pdf command, +# from the Cairo 2D graphics library. +convert_svgdirs2pdf() +{ + for DIR in $@ ; do + if [ -d $DIR ] ; then + #echo "cd " $DIR + cd $DIR + FILES=`ls | grep -E "\.svg"` + for SRC in $FILES ; do + #echo ' --> '$SRC + PDF=${SRC%.svg}'.pdf' + svg2pdf "$SRC" "$PDF" + echo "svg2pdf $SRC $PDF" + #echo ' <-- '$PDF + done + cd .. + else + echo error : \'$DIR\' is not a directory. + fi + done +} + + +# In-place recoding of a text file from its current encoding to UTF-8. +# This is useful for .dsp files with accents in comments that are coded +# with a different character set. +recode2utf8() +{ + charset=`file -0 --mime-encoding $1 | cut -d' ' -f2` + recode $charset..utf-8 $1 +} + + +MDLANGOPT="" +if [ $1 = "-mdlang" ] || [ $1 = "--mathdoc-lang" ] || [ $1 = "-l" ] +then + MDLANGOPT="-mdlang $2" + shift 2 +fi + +CONVERT="" +if [ $1 = "-utf8" ] || [ $1 = "--utf8" ] +then + CONVERT="utf8" + shift 1 +fi + +if [ $# -eq 0 ] +then + print_usage + exit 1 +fi + +# Main loop of this script : +# 1. Compile `faust --mathdoc` to generate the TeX file and SVG block-diagrams. +# 2. Move to the "${FILEPATH%.dsp}-mdoc" directory created by faust. +# 3. Convert SVG files into PDF files recursively (with svg2pdf). +# 4. Compile pdflatex twice (including the top-level block-diagram). +# 5. Copy some important files where needed. +for FILEPATH in $@ ; do + if [ -f $FILEPATH ] ; then + FILENAME=`basename $FILEPATH` && + case $FILENAME in + *.dsp ) + if [ $CONVERT = "utf8" ] + then + recode2utf8 $FILENAME + fi + faust $MDLANGOPT -o ${FILEPATH%.dsp}.cpp --mathdoc $FILEPATH && + cd ${FILEPATH%.dsp}-mdoc/ && + cd svg && convert_svgdirs2pdf svg-* && cd .. && + cd tex && pdflatex ${FILENAME%.dsp}.tex && pdflatex ${FILENAME%.dsp}.tex && cd .. && + mkdir -p pdf && cp tex/${FILENAME%.dsp}.pdf pdf && + mkdir -p cpp && mv ../${FILENAME%.dsp}.cpp cpp && + cd .. + ;; + * ) + echo error : \'$FILENAME\' does not have a \'.dsp\' extension. + exit 2 + ;; + esac + else + print_usage + exit 1 + fi +done +exit 0 +