X-Git-Url: https://scm.cri.ensmp.fr/git/Faustine.git/blobdiff_plain/1059e1cc0c2ecfa237406949aa26155b6a5b9154..66f23d4fabf89ad09adbd4dfc15ac6b5b2b7da83:/interpreter/preprocessor/faust-0.9.47mr3/tools/faust2appls/faust2mathviewer diff --git a/interpreter/preprocessor/faust-0.9.47mr3/tools/faust2appls/faust2mathviewer b/interpreter/preprocessor/faust-0.9.47mr3/tools/faust2appls/faust2mathviewer new file mode 100755 index 0000000..6b5ac7a --- /dev/null +++ b/interpreter/preprocessor/faust-0.9.47mr3/tools/faust2appls/faust2mathviewer @@ -0,0 +1,89 @@ +#!/bin/bash + +# faust2mathviewer.sh +# +# Generate a full Faust documentation, in a '*-mdoc' top directory +# and open the resulting pdf file +# +# 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 : args of faust2mathviewer should be a \'.dsp\' file, or a list of \'.dsp\' files. +} + + +# 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 ' <-- '$PDF + done + cd - + else + echo error : \'$DIR\' is not a directory. + fi + done +} + + +# Main loop of this script : +# 1. Compile `faust -mdoc` 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. + +if [[ $(uname) == Darwin ]]; then + OPEN=open + export PATH="/usr/texbin:$PATH" +else + OPEN=xdg-open +fi + +for FILEPATH in $@ ; do + if [ -f $FILEPATH ] ; then + FILENAME=`basename $FILEPATH` && + case $FILENAME in + *.dsp ) + faust -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 && + ${OPEN} tex/${FILENAME%.dsp}.pdf && + cd .. + ;; + * ) + echo error : \'$FILENAME\' does not have a \'.dsp\' extension. + exit 2 + ;; + esac + else + print_usage + exit 1 + fi +done +exit 0 +