+++ /dev/null
-#!/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
-