77 lines
2.1 KiB
Text
77 lines
2.1 KiB
Text
|
#!/usr/bin/env zsh
|
||
|
|
||
|
function err(){ print -- $@ >&2; exit 1 }
|
||
|
|
||
|
# scriptdir is the directory of the current executable
|
||
|
if [[ ${0[0]} = '/' ]]; then
|
||
|
scriptdir="${0:h}"
|
||
|
else
|
||
|
scriptdir="$PWD/${0:h}"
|
||
|
fi
|
||
|
|
||
|
# the tmp directory where compilation occurs with a lot of temporary files
|
||
|
tmpdir=/tmp/mp
|
||
|
[[ ! -d $tmpdir ]] && mkdir $tmpdir
|
||
|
|
||
|
# the list of mp files without argument all file in the current tree
|
||
|
typeset -a fics
|
||
|
if (($#<1)); then
|
||
|
fics=( $scriptdir/*.mp(N) )
|
||
|
else
|
||
|
for f in $@; fics=( $fics $scriptdir/$f )
|
||
|
fi
|
||
|
|
||
|
(( ${#fics} == 0 )) && err "No .mp files into $scriptdir"
|
||
|
|
||
|
(( ${#fics} == 1 )) && [[ ${fics[1]} = "$scriptdir/graph.mp" ]] && \
|
||
|
err "Only graph.mp files indo $scriptdir"
|
||
|
|
||
|
\cp -f $fics $tmpdir
|
||
|
cd $tmpdir
|
||
|
for fpfic in $fics; do
|
||
|
fic=${fpfic:t}
|
||
|
tmp=${fic:r}-tmp.mp
|
||
|
eps=${fic:r}-tmp.1
|
||
|
png=${fic:r}.png
|
||
|
old=${fic:r}.old
|
||
|
[[ $fic = "graph.mp" ]] && continue
|
||
|
{
|
||
|
echo -n >&2 "MPOST [$fic]"
|
||
|
cat $scriptdir/graph.mp
|
||
|
echo 'beginfig(1)'
|
||
|
echo ' drawoptions (withcolor base01);'
|
||
|
cat $fic
|
||
|
echo 'endfig;'
|
||
|
echo 'bye;'
|
||
|
} | sed 's/base00/baseZeroZero/g' \
|
||
|
| sed 's/base01/baseZeroOne/g' \
|
||
|
| sed 's/base02/baseZeroTwo/g' \
|
||
|
| sed 's/base03/baseZeroThree/g' \
|
||
|
| sed 's/base0/baseZero/g' \
|
||
|
| sed 's/base1/baseOne/g' \
|
||
|
| sed 's/base2/baseTwo/g' \
|
||
|
| sed 's/base3/baseThree/g' \
|
||
|
| sed 's/red/s_red/g' \
|
||
|
| sed 's/blue/s_blue/g' \
|
||
|
| sed 's/green/s_green/g' > $tmp
|
||
|
[[ -e $old ]] && diff $tmp $old >/dev/null && { echo " identical"; continue }
|
||
|
|
||
|
dpi=$(grep '% DPI' $tmp | awk '{print $3}')
|
||
|
[[ $dpi = "" ]] && dpi=600
|
||
|
|
||
|
print
|
||
|
print "[DPI]: $dpi"
|
||
|
|
||
|
# addshadow="'(' +clone -background black -shadow 90x4+0+1 ')' +swap -background none -layers merge +repage"
|
||
|
addshadow=""
|
||
|
reducesize=" -colors 254 -quality 75"
|
||
|
cmd="convert -colorspace rgb -density $((4*dpi)) $eps -resize 25% $addshadow $reducesize $png"
|
||
|
|
||
|
print -- "[$PWD]: mpost $tmp && convert -density $dpi $tmp.1 $png"
|
||
|
mpost --tex=latex $tmp && \
|
||
|
eval $cmd && \
|
||
|
\cp -f $png $scriptdir && \
|
||
|
\cp -f $tmp $old && \
|
||
|
echo "updated"
|
||
|
done
|