/usr/bin/faust2mathdoc is in faust 0.9.46-2.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 | #!/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
|