view makeBookeTunePages.sh @ 312:8bc92e044e0a

Move tune and first line inclusion code into macros. Also use tune title, not name, as hyperlink targets. This removes the need to pass the name into the macros.
author Jim Hague <jim.hague@acm.org>
date Fri, 12 Jul 2013 11:36:14 +0100
parents c3b300378738
children cbe9c10b5a3e
line wrap: on
line source

#!/bin/bash
#
# Generate the LaTeX for the Booke tune pages (tunes.tex) and the index
# of first lines (firstlines.tex). These are generated into the build
# directory.
#
# All EPS and PDF tune graphics must be present already. Run
# makeGraphics.sh to make these.
#

# Restore titles like 'Exploding Potato, The' to the
# expected 'The Exploding Potato'.
fixtitle()
{
    retval=`echo "$1" | sed -e "s/\(.*\), *\(.*\)/\2 \1/"`
}

if [ $# != 1 ]; then
    echo "Usage: makeBookeTunePages.sh <book dir name>"
    exit 1
fi

dir=`pwd`

booke=$dir/$1
builddir=$dir/build
graphicsdir=$dir/graphics/$1
tunesoutput=$builddir/tunes.tex
indexoutput=$builddir/firstlines.tex

mkdir -p $builddir

rm -f $tunesoutput $indexoutput

# Now, for each tune, make the tune graphic and add it, inside a
# centre section, so the document. Then add a TOC entry.
find $booke -name "*.abc" | sort |
    while read filename
    do
        name=`basename $filename .abc`
        title=`$dir/abcfield.py --field T --latex $filename`
        fixtitle "$title"
        title=$retval

        changefile=`$dir/abcfield.py --field N $filename | grep "Change:" | sed -e "s/Change: *//"`
        changetitle=""
        if [ -n "$changefile" ]; then
            changetitle=`$dir/abcfield.py --field T --latex $booke/$changefile`
            fixtitle "$changetitle"
            changetitle=$retval
        fi
        echo -E "\showtune[$changetitle]{$title}{$graphicsdir/$name}" >> $tunesoutput

        echo -E "\showfirstline{$title}{$graphicsdir/firstline-$name}" >> $indexoutput
    done