From fc9a12765a7aacff813869a067283415f6e5ddcc Mon Sep 17 00:00:00 2001 From: fred Date: Mon, 10 Aug 1998 21:21:03 +0000 Subject: [PATCH] lilypond-1.0.1 --- scripts/ly2dvi.sh | 997 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 997 insertions(+) create mode 100644 scripts/ly2dvi.sh diff --git a/scripts/ly2dvi.sh b/scripts/ly2dvi.sh new file mode 100644 index 0000000000..81838eb82b --- /dev/null +++ b/scripts/ly2dvi.sh @@ -0,0 +1,997 @@ +#!/bin/sh +# +# Script to make a LaTeX file for Lilypond +# +# Written by Jan Arne Fagertun +# Sat Nov 22 22:26:43 CET 1997 +# +# $Id: ly2dvi.sh,v 1.1 1998/08/10 21:21:03 fred Exp $ +# +# Original LaTeX file made by Mats Bengtsson, 17/8 1997 +# + +VERSION="0.12" +NAME=ly2dvi.sh +IDENTIFICATION="$NAME $VERSION" +NOW=`date` +echo "$IDENTIFICATION" 1>&2 + +# TODO: +# prevent orphaned "Lily is here" strings + +# NEWS + +# 0.12 +# - -S/--sourcedir switch +# + +# +#0.11.jcn3 +# - mudelaDefs fixes, (thanks PC) +#0.11.jcn2 +# - pass -I, --include to Lily +# - bf: split $LILYINCLUDE and try all dirs +# - bf: geometry left/top +# +#0.11.pc +# - fix backslash gobbling, reduce number of separate processes used +# - require readable rc files, allow rc file in /usr/local/share/lilypond/lilyrc +# - use latex path, not tex path +# - Don't override if kpsepath returns non-NULL +# - Don't clobber x.tex if it wasn't created by ly2dvi +# +# +#0.11.jcn1 +# - find .fly files too +# +#0.11.hwn1 +# - height vs heigth +# - robustification: give \nonstopmode as LaTeX arg; no hanging if no TeX file. +# - robustification: notice failed cp. + +#0.11 +# - more papersizes (thanks Han-Wen) - don't expect LaTeX to accept all... +# - -W,--Width= : set paper width (points) +# - -H,--Height= : set paper height (points) +# - -H and -W is used only when an unknown papersize is to be specified, +# and has to be combined with a papersize option known to LaTeX +#NB! - -F,--headers= : name of additional LaTeX headers input file. +#NB! Changed from -H to -F +# - -d,--dependencies : passed to lilypond + + +#0.10.jcn1 +# - HEIGHT -> HEIGHT +# - vertical margins (for a4), same on both sides +# - textheight from lilypond output file (mudelapapertextheight) +# - piece titling +# - mudelapiece, mudelaopus +# +#0.10 +# - -K,--keeplilypond : Keep lilypond output files (default delete) +# - -k,--keeply2dvi : Keep ly2dvi output files (default delete) +# - -L,--landscape : Set landscape orientation +# - -N,--nonumber : Turn off page numbering (\pagestyle{empty}) +# - Could not reinsert "\usepackage[T1]{fontenc}" because +# "los-toros" won't work with it +# - Ekstra LaTeX headers from input file +#0.9.hwn1 +# - option to remove output of lily +# 0.9 +# - Trap Lilypond abort +# - Replaced "\usepackage[T1]{fontenc}" with +# \usepackage[latin1]{inputenc} (takk, Mats) +# - Removed "()" around "\LilyIdString" (Janne didn't want it) +# 0.8 - Trap Lilypond segmentation fault +# - Function for cleanup +# - Trap line +# - More human-readable variables +# - Some logics concerning rc-files +# 0.7 +# - Improved Lilypond error checking +# - Output orientation (landscape...). Overrides mudela file +# variable orientation="landscape"; +# - Paper width and height put into variables (only A4!) +# - Adjusted top margin to default..... +# +#TODO +# - Include more papersizes. +# - Manual page....... +# 0.6.jaf2 +# - LILYINCLUDE update +# +# 0.6.hwn1 +# - handle LILYINCLUDE +# - --output +# +# 0.6 +# - Source rc-files, if present. Files are: +# /usr/local/share/lilyrc /etc/lilyrc $HOME/.lilyrc ./.lilyrc +# - tee output from Lilypond +# - Handles margins for A4 paper (equal on both sides) +# - new option -s (--separate) for one LaTeX run per file, +# else all files are run together +# +# 0.5 +# - More useful ("two-level") debug. +# - The Q&D hack to find file names and not handling \include +# is replaced by grabbing output file names from Lilypond. +# = Detects multiple output files - adds them when running +# LaTeX. +# - Works with multiple input files - no matter if they are +# (a mix of) input to or output from Lilypond. +# +#TODO +# - Still no margins handling. +# - We have to discuss how to handle multiple output files +# from Lilypond - 'ly2dvi standchen' gives a rather odd +# result.... + +# 0.4.1 +# - Always exit after printing help info +# 0.4 +# - Changes to ensure for more strict grep'ing of parameters +# Thanks to from G.B.Stott@bolton.ac.uk +# - More efficient use of sed -e 's///' -e 's///' +# Thanks to Johan Vromans and GBS +# - Ask tex for location of titledefs.tex (Thanks to JV) +# - Accept only exact match of "\def\mudelacomposer{" +# (or whatever mudela* defined in titledefs.tex) +# - Even more efficient use of sed (Thanks to JV) +# - Default file name for single output file implemented. +# - Moved help into function - finally included from 0.1.jcn1 +# +#TODO +# - Still doesn't handle \include +# - The Q&D for finding output file name from the sequence of +# \paper \output \midi \output really needs to be looked at. +# I have improved it a lot, but it's only capable of finding +# one (the last) file name. +# Well, I have to rewrite this entirely to handle \include, +# then I can fix it. +# - Still no margins handling. +# +#WARNING +# - Some lines of output from lilypond do NOT start +# at first character position, therefore I have removed "^" +# in sed'ing and grep'ing. + +# 0.3.hwn1 +# - add "Creator: " line to output +# +# 0.3 +# - multiple input files to make score from several files +# (extra files assumed to be Lilypond output) +# - cp dvi-file instead of mv, to allow for xdvi reload +# - check for illegal long options +# - put in pt in text width, if not given +# - put in \nonstopmode in LaTeX file +# - restored LaTeX exit value check + +# 0.2.1 +# - temporarily omit LaTeX exit value check +# - remove ALL temporary files + +# 0.2 +# - fix for solaris - included from 0.1.jcn1 +# - long option hack - included from 0.1.jcn1 - modified +# - moved help into function - NOT included from 0.1.jcn1 yet +# - various improvements - included from 0.1.jcn1 +# - find mudela definitions from titledefs.tex +# - find papersize from lilypond output file (mudelapapersize), +# overridden by option '-p size' or '--papersize=size' +# - option -l lang or --language=lang overrides +# lilypond output file definition (mudelalanguage) +# - textwidth from lilypond output file (mudelapaperlinewidth) + +# 0.1.jcn1 +# - fix for solaris +# - long option hack +# - moved help into function + +# +# Clean up +# +cleanup() { + if [ "$KEEP_LY2DVI_OUTPUT" != "Y" ] + then + [ -n "$LatF" -a -f "$LatF" ] && rm -f $LatF + [ -n "$LOGFILE" -a -f "$LOGFILE" ] && rm -f $LOGFILE + [ -n "$FN" ] && rm -f $FN.* + for F in *$$* $TMP/*$$* + do + rm -f $F + done + fi + if [ "$KEEP_LILY_OUTPUT" != "Y" ] + then + for F in $LILY_OUTPUT_FILES + do + [ -f $F ] && rm -f $F + done + fi +} + +# +# print usage +# +help() { + cat << EOF +Generate dvi file from mudela or lilypond output +Usage: $0 [OPTION]... [FILE]... + +Options: + -D,--debug increase verbosity + -F,--headers= name of additional LaTeX headers file + -H,--Height= set paper height (points) (see manual page) + -I,--include=DIR add DIR to search path of LilyPond + -K,--keeplilypond keep lilypond output files + -L,--landscape set landscape orientation + -N,--nonumber switch off page numbering + -O,--orientation= set orientation (obsolete - use -L instead) + -W,--Width= set paper width (points) (see manual page) + -d,--dependencies tell lilypond make a dependencies file + -h,--help this help text + -k,--keeply2dvi keep ly2dvi output files + -l,--language= give LaTeX language (babel) + -o,--output= set output directory + -p,--papersize= give LaTeX papersize (eg. a4) + -s,--separate run all files separately through LaTeX + -S,--sourcedir set sourcedir + + files may be (a mix of) input to or output from lilypond(1) +EOF +} + + +# +# SVr4 echo swallows backslashes, and there's no way to turn it off. +# Therefore use Echo whenever backslashes may be important. +# printf is in the posix.2 standard -- which means it's in +# all modern shells. +# +Echo() { + printf "%s\n" "$@" +} + +# +setPaperZize() { +case "$PAPERSIZE" in + a0*) + PWIDTH=2389 + PHEIGHT=3381 + PAPERSIZE=a0paper + ;; + a1|a1p*) + PWIDTH=1690 + PHEIGHT=2389 + PAPERSIZE=a1paper + ;; + a2*) + PWIDTH=1194 + PHEIGHT=1690 + PAPERSIZE=a2paper + ;; + a3*) + PWIDTH=845 + PHEIGHT=1194 + PAPERSIZE=a3paper + ;; + a4*) + PWIDTH=597 + PHEIGHT=845 + PAPERSIZE=a4paper + ;; + a5*) + PWIDTH=423 + PHEIGHT=597 + PAPERSIZE=a5paper + ;; + a6*) + PWIDTH=298 + PHEIGHT=423 + PAPERSIZE=a6paper + ;; + a7*) + PWIDTH=211 + PHEIGHT=298 + PAPERSIZE=a7paper + ;; + a8*) + PWIDTH=305 + PHEIGHT=211 + PAPERSIZE=a8paper + ;; + a9*) + PWIDTH=105 + PHEIGHT=305 + PAPERSIZE=a9paper + ;; + a10*) + PWIDTH=74 + PHEIGHT=105 + PAPERSIZE=a10paper + ;; + b0*) + PWIDTH=2847 + PHEIGHT=4023 + PAPERSIZE=b0paper + ;; + b1*) + PWIDTH=2012 + PHEIGHT=2847 + PAPERSIZE=b1paper + ;; + b2*) + PWIDTH=1423 + PHEIGHT=2012 + PAPERSIZE=b2paper + ;; + b3*) + PWIDTH=1006 + PHEIGHT=1423 + PAPERSIZE=b3paper + ;; + b4*) + PWIDTH=712 + PHEIGHT=1006 + PAPERSIZE=b4paper + ;; + b5*) + PWIDTH=503 + PHEIGHT=712 + PAPERSIZE=b5paper + ;; + archA) + PWIDTH=650 + PHEIGHT=867 + ;; + archB) + PWIDTH=867 + PHEIGHT=1301 + ;; + archC) + PWIDTH=1301 + PHEIGHT=1734 + ;; + archD) + PWIDTH=1734 + PHEIGHT=2602 + ;; + archE) + PWIDTH=2602 + PHEIGHT=3469 + ;; + flsa|flse) + PWIDTH=614 + PHEIGHT=940 + ;; + halfletter) + PWIDTH=397 + PHEIGHT=614 + ;; + ledger) + PWIDTH=1229 + PHEIGHT=795 + ;; + legal) + PWIDTH=614 + PHEIGHT=1012 + ;; + letter) + PWIDTH=614 + PHEIGHT=795 + ;; + note) + PWIDTH=542 + PHEIGHT=723 + ;; + *) + echo "" + echo $0": unknown papersize -- "$PAPERSIZE + echo "" + ;; +esac +} + +doRcFiles() +{ +# +# RC-files ? +# +for D in /usr/local/share/ /usr/local/share/lilypond/ /etc/ $HOME/. ./. +do + RCfile=$D"lilyrc" + [ -r $RCfile ] && . $RCfile +done +fORI=$ORIENTATION +fLNG=$LANGUAGE +fPSZ=$PAPERSIZE +fLHF=$LATEXHF +unset ORIENTATION LANGUAGE PAPERSIZE LATEXHF +} + + + +# +# Trap function (cleanup) +# + + + +trap cleanup 0 9 15 + + + +# +# Various defaults +# +[ -z "$TMP" ] && TMP=/tmp +if [ ! -d $TMP ] +then + $debug_echo $IDENTIFICATION": temporary directory "$TMP" not found, set to /tmp" + TMP=/tmp +fi +LOGFILE=$TMP/lilylog.$$ # Logfile for lilypond +PAPERSIZE=a4 # Default papersize name +PWIDTH=597 # Default paperwidth +PHEIGHT=845 # Default paperheight +PNUM="%" # Page numbering on +LILYOPTS="" # Options to lilypond +SOURCEDIR="" +LILYPOND_EXECUTABLE=lilypond +doRcFiles + + + +# Keywords defined in titledefs.tex +# +TF="`kpsewhich -n latex tex titledefs.tex`" +MU_DEF="" +if [ -r "${TF:=/usr/local/share/texmf/tex/lilypond/titledefs.tex}" ] +then + MU_DEF=`sed -n -e 's/.*newcommand\*{.\(mudela[^}]*\)}.*$/\1/p' "$TF"` +fi + +: "${MU_DEF:=mudelatitle mudelasubtitle mudelacomposer \ + mudelameter mudelaopus mudelaarranger mudelapiece \ + mudelapoet mudelainstrument \ + }" + +# +# debugging +# +debug_echo=: +# +# All files in one LaTeX run +# +SEPFILE=N +# +# Find command line options and switches +# +# "x:" x takes argument +# +switches="DF:H:I:KLNO:W:dhkl:o:p:S:s\?" +options="" +# +# ugh, "\-" is a hack to support long options +# while getopts \-:$options$switches O +# must be in double quotes for bash-2.0 +while getopts "\-:$options$switches" O +do + $debug_echo "O: \`$O'" + $debug_echo "arg: \`$OPTARG'" + case $O in + D ) + [ $debug_echo = echo ] && set -x + debug_echo=echo + ;; + F ) + LATEXHF=$OPTARG + ;; + H ) + PHEIGHT=$OPTARG + ;; + I ) + LILYOPTS="$LILYOPTS -I $OPTARG" + LILYINCLUDE="$LILYINCLUDE:$OPTARG" + ;; + K ) + KEEP_LILY_OUTPUT=Y + ;; + L ) + ORIENTATION=landscape + ;; + O ) + ORIENTATION=$OPTARG + ;; + N ) + PNUM="\pagestyle{empty}" + ;; + W ) + PWIDTH=$OPTARG + ;; + d ) + LILYOPTS=$LILYOPTS" -d" + ;; + h ) + help; + exit 0 + ;; + k ) + KEEP_LY2DVI_OUTPUT=Y + ;; + l ) + LANGUAGE=$OPTARG + ;; + o ) + OUTPUTDIR=$OPTARG + ;; + p ) + PAPERSIZE=$OPTARG + ;; + s ) + SEPFILE=Y + ;; + S ) + SOURCEDIR=$OPTARG + ;; + \? ) + help; + exit -1 + ;; + # a long option! + -) + $debug_echo "long option: \`$OPTARG'" + case "$OPTARG" in + He*|-He*) + PHEIGHT"`expr \"$OPTARG\" ':' '[^=]*=\(.*\)'`"= + ;; + W*|-W*) + PWIDTH="`expr \"$OPTARG\" ':' '[^=]*=\(.*\)'`" + ;; + dep*|-dep*) + LILYOPTS="$LILYOPTS -d" + ;; + d*|-d*) + [ $debug_echo = echo ] && set -x + debug_echo=echo + ;; + hea*|-hea*) + LATEXHF="`expr \"$OPTARG\" ':' '[^=]*=\(.*\)'`" + ;; + h*|-h*) + help; + exit 0 + ;; + i*|-i*) + dir="`expr \"$OPTARG\" ':' '[^=]*=\(.*\)'`" + LILYOPTS="$LILYOPTS --include=$dir" + LILYINCLUDE="$LILYINCLUDE:$dir" + ;; + keepli*|-keepli*) + KEEP_LILY_OUTPUT=Y + ;; + k*|-k*) + KEEP_LY2DVI_OUTPUT=Y + ;; + land*|-land*) + ORIENTATION=landscape + ;; + lang*|-lang*) + LANGUAGE="`expr \"$OPTARG\" ':' '[^=]*=\(.*\)'`" + ;; + n*|-n*) + PNUM="\pagestyle{empty}" + ;; + or*|-or*) + ORIENTATION="`expr \"$OPTARG\" ':' '[^=]*=\(.*\)'`" + ;; + ou*|-ou*) + OUTPUTDIR="`expr \"$OPTARG\" ':' '[^=]*=\(.*\)'`" + ;; + p*|-p*) + PAPERSIZE="`expr \"$OPTARG\" ':' '[^=]*=\(.*\)'`" + ;; + separa*|-sep*) + SEPFILE=Y + ;; + sourcedir*|-sourcedir*) + SOURCEDIR=$OPTARG + ;; + *|-*) + echo "$0: illegal option -- \"$OPTARG\"" + help; + exit -1 + ;; + esac + esac +done +shift `expr $OPTIND - 1` + +if [ "$SOURCEDIR" != "" ]; then +# apparently MakeTeXTFM can't handle relative dirs + SOURCEDIR=`cd $SOURCEDIR; pwd` + export LILYINCLUDE="$SOURCEDIR/init:$SOURCEDIR/mf/out:$LILYINCLUDE" + export TEXINPUTS="$SOURCEDIR/tex:$TEXINPUTS:" + export MFINPUTS="$SOURCEDIR/mf:$MFINPUTS:" + export LILYPOND_EXECUTABLE="$SOURCEDIR/lily/out/lilypond" + + set|grep MF + set|grep TEXIN +fi + +# +# Input file name +# +if [ "$1" = "" ] +then + help + $debug_echo "$IDENTIFICATION: No input file name given" + exit 1 +fi +# regexp_quote -- quote a string as a regular expression for egrep or sed +regexp_quote(){ + Echo "$@" | sed 's/\([]\[\.*?+^$]\)/\\\1/g' +} +# +# +mudelaDefs(){ +# Include \def\mudela-definitions +# +for L in $MU_DEF +do + for F in "$File" "$OF" + do + LL=`sed -n 's/\\\\def\\\\'"$L"'{\([^}]*\)}.*$/\1/p' "$F"` + [ "$LL" ] && { + Echo "$1\\"$L'{'"$LL"'}%' >> $LatF + break + } + done +done +} +# +startFile(){ +# +# LaTeX file name +# +BN=`basename "$File" .tex` +FN="$BN.$$" +if [ "$KEEP_LY2DVI_OUTPUT" != "Y" ] +then + LatF="$TMP/$FN.tex" +else + LatF="$FN.tex" +fi +# +# Find: +# paper size (PAPERSIZE, overridden by command line option -p) +# paper orientation (ORIENTATION, overridden by option -o) +# language (LANGUAGE, overridden by option -l) +# textwidth +# +eval `sed -n \\ + -e 's/\\\\def\\\\mudelalanguage{\([^}]*\).*$/fLNG=\1;/p' \\ + -e 's/\\\\def\\\\mudelalatexheaders{\([^}]*\).*$/fLHF=\1;/p' \\ + -e 's/\\\\def\\\\mudelaorientation{\([^}]*\).*$/fORI=\1;/p' \\ + -e 's/\\\\def\\\\mudelapaperlinewidth{\([^}]*\).*$/TWN=\1;/p' \\ + -e 's/\\\\def\\\\mudelapapertextheight{\([^}]*\).*$/THN=\1;/p' \\ + -e 's/\\\\def\\\\mudelapapersize{\([^}]*\).*$/fPSZ=\1;/p' \\ + "$File"` +# +if [ -z "$LATEXHF" ] +then + LATEXHF="$fLHF" +fi +LLHF="%" +if [ -n "$LATEXHF" ] +then + [ -f "$LATEXHF" ] && LLHF="\input{$LATEXHF}" +fi +# +if [ -z "$PAPERSIZE" ] +then + PAPERSIZE="$fPSZ" +fi +if [ -n "$PAPERSIZE" ] +then + setPaperZize + PAPEROPT="$PAPERSIZE" +fi +# +if [ -z "$ORIENTATION" ] +then + ORIENTATION="$fORI" +fi +if [ -n "$ORIENTATION" ] +then + if [ -z "$PAPEROPT" ] + then + PAPEROPT="$ORIENTATION" + else + PAPEROPT="$PAPEROPT,$ORIENTATION" + fi +fi +# +if [ -n "$PAPEROPT" ] +then + PAPER="[$PAPEROPT]" +fi +# +if [ -z "$LANGUAGE" ] +then + LANGUAGE="$fLNG" +fi +if [ -n "$LANGUAGE" ] +then + LLNG="\usepackage[$LANGUAGE]{babel}" +else + LLNG="%" +fi + +# +# Find textwidth +# +if [ -n "$TWN" ] +then + TW="$TWN" + case "$TW" in + *mm) + ;; + *cm) + ;; + *pt) + ;; + *) + TW="${TW}pt" + ;; + esac + $debug_echo "Text width = $TW" +fi +TWp=`Echo $TW | sed -e 's/\..*$//'` +PWp="$PWIDTH" +# +# Find textheight +# +if [ -n "$THN" ] +then + TH=$THN + case $TH in + *mm) + ;; + *cm) + ;; + *pt) + ;; + *) + TH="${TH}pt" + ;; + esac + $debug_echo "Text height = $TH" +fi +THp="`echo $TH | sed -e 's/\..*$//'`" +PHp="$PHEIGHT" +if [ "$ORIENTATION" = "landscape" ] +then + PWp="$PHEIGHT" + PHp="$PWIDTH" +fi +HMARG="`expr '(' $PWp - $TWp ')' / 2`"pt +$debug_echo "Text left = $HMARG" +VMARG="`expr '(' $PHp - $THp ')' / 2`"pt +$debug_echo "Text top = $VMARG" +# +# Geometry: /var/lib/texmf/latex/geometry/geometry.dvi +# +# +# Write LaTeX file +# +cat << EOF > $LatF +% Creator: $IDENTIFICATION +% Automatically generated from $IF, $NOW + +\documentclass$PAPER{article} + +$LLNG +\usepackage{geometry} +\usepackage[latin1]{inputenc} +%\usepackage[T1]{fontenc} +$PNUM +%\addtolength{\oddsidemargin}{-1cm} +%\addtolength{\topmargin}{-1cm} +%\setlength{\textwidth}{$TW} +%\setlength{\textheight}{$TH} +\geometry{width=$TW, left=$HMARG, height=$TH, top=$VMARG} +\input lilyponddefs +\input titledefs +$LLHF +\begin{document} +EOF +mudelaDefs +cat << EOF >> $LatF +\cmrtwenty% ugh +\makelilytitle +EOF +} +nextFile(){ +cat << EOF >> $LatF +\def\theopus{}% +\def\thepiece{}% +\def\mudelaopus{}% +\def\mudelapiece{}% +EOF +mudelaDefs "\\def" +cat << EOF >> $LatF +\def\theopus{\mudelaopus}% ugh +\def\thepiece{\mudelapiece}% +\makelilypiecetitle +EOF +} +# +# Conclusion +# +endFile(){ +cat << EOF >> $LatF +\vfill\hfill{\LilyIdString} +\end{document} +EOF +# +# Run LaTeX +# +latex '\nonstopmode \input '$LatF || exit 5 +# +# Rename dvi file +# +if [ -f $FN.dvi ] +then + RESULT="$BN.dvi" + [ -n "$OUTPUTDIR" ] && RESULT="$OUTPUTDIR/$RESULT" + + cp "$FN.dvi" "$RESULT" || exit 5 +fi +# +# Output some info +# +cat << EOF + +$IDENTIFICATION: dvi file name is $RESULT + +EOF +} + +# ugh. GF is side-effect. +findInput() { +# should check for LILYINCLUDE + OIFS="$IFS" + IFS=':' + x=`echo $LILYINCLUDE | sed "s!:! !g"` + IFS="$OIFS" + for lypath in . $x + do + if [ -f "$lypath/$1" ] + then + GF="$lypath/$1" + return + fi + + if [ -f "$lypath/$1.ly" ] + then + GF="$lypath/$1.ly" + return + fi + if [ -f "$lypath/$1.fly" ] + then + GF="$lypath/$1.fly" + return + fi + done + $debug_echo "$IDENTIFICATION: Input file \"$GF\" not found" + echo "$NAME: Input file \"$GF\" not found" 1>&2 + exit 2 +} +# +# Loop through all files +# + +LILY_OUTPUT_FILES= + +for GF +do + findInput $GF + + # + # Check whether the file is input to or output from lilypond + # + L1=`head -1 $GF` + OP=`echo $L1 | grep "^% Creator: GNU LilyPond"` + if [ -n "$OP" ] + then + # + # OK - it's the output from lilypond. + # + # Get lilypond source file name + # + OF=$GF + IFL=`grep mudelafilename $OF` + if [ "$IFL" != "" ] + then + IF=`echo $IFL | sed -e 's/.*{//' -e 's/}*.$//'` + # + # Check if source file exists + # + if [ ! -f $IF ] + then + $debug_echo $IDENTIFICATION": Mudela file not found." + TW=15.5cm + TH=25.0cm + fi + else + $debug_echo $IDENTIFICATION": Mudela file name not found." + TW=15.5cm + TH=25.0cm + fi + else + # + # I have to assume this is the lilypond input file + # Find output file name, if defined + # + IF=$GF + # + # Run lilypond + # Grab output file names + # + $debug_echo "lilypond "$LILYOPTS $IF + + $LILYPOND_EXECUTABLE $LILYOPTS $IF 2>&1 | tee $LOGFILE + OF="`sed -n -e 's/TeX output to \([^\.]*\.tex\)\.\.\.$/\1/p' $LOGFILE`" + $debug_echo "==> $OF" + LILY_OUTPUT_FILES="$LILY_OUTPUT_FILES $OF" + STATUS=`egrep -i "error|segmentation|abort" $LOGFILE` + echo $STATUS + if [ ! -z "$STATUS" ] + then + exit 10 + fi + fi + # + # "Spin through" all the files + # + for File in $OF + do + $debug_echo "--- "$File + # + # Check if output file is generated + # + if [ ! -f "$File" ] + then + $debug_echo "$IDENTIFICATION: hmm, I could not find the output file $File" + exit 4 + fi + # + # Is this the first file? + # + if [ -z "$FFile" ] + then + FFile="$File" + startFile + else + nextFile + fi + cat << EOF >> $LatF +\input{$File} +EOF + if [ $SEPFILE = Y ] + then + FFile="" + endFile + fi + done +done +if [ $SEPFILE = N ] +then + endFile +fi +# +# OK - finished +# -- 2.39.5