replace waf with make
This commit is contained in:
parent
6eeb3e8b3c
commit
cc46c8779f
8
.gitignore
vendored
8
.gitignore
vendored
@ -2,9 +2,7 @@
|
||||
.DS_Store
|
||||
*.swp
|
||||
*.lock*
|
||||
*.waf*
|
||||
out
|
||||
pdf
|
||||
midi
|
||||
music
|
||||
.vscode
|
||||
tmp
|
||||
build
|
||||
src/tmp_ly
|
||||
|
89
Makefile
Normal file
89
Makefile
Normal file
@ -0,0 +1,89 @@
|
||||
WORKING_DIR:=$(shell pwd)
|
||||
BOOKNAME=kommersbuch
|
||||
SRC_DIR=src
|
||||
BUILD_DIR=build
|
||||
TMP_DIR=tmp
|
||||
SONG_DIR=${SRC_DIR}/songs
|
||||
BUILD_BOOK_DIR=${BUILD_DIR}/books
|
||||
TMP_BOOK_DIR=${TMP_DIR}/books
|
||||
BUILD_SONG_DIR=${BUILD_DIR}/songs
|
||||
TMP_SONG_DIR=${TMP_DIR}/songs
|
||||
BUILD_MIDI_DIR=${BUILD_DIR}/midi
|
||||
TMP_MIDI_DIR=${TMP_DIR}/midi
|
||||
BUILD_OPUS_DIR=${BUILD_DIR}/opus
|
||||
|
||||
LY_FILES=$(wildcard ${SONG_DIR}/*.ly)
|
||||
LY_PDFS=$(patsubst %.ly,${BUILD_SONG_DIR}/%.pdf,$(notdir ${LY_FILES}))
|
||||
LY_TMP_PDFS=$(patsubst %.ly,${TMP_SONG_DIR}/%.pdf,$(notdir ${LY_FILES}))
|
||||
LY_MIDIS=$(patsubst %.ly,${BUILD_MIDI_DIR}/%.midi,$(notdir ${LY_FILES}))
|
||||
LY_TMP_MIDIS=$(patsubst %.ly,${TMP_MIDI_DIR}/%.midi,$(notdir ${LY_FILES}))
|
||||
LY_OPUS=$(patsubst %.ly,${BUILD_OPUS_DIR}/%.opus,$(notdir ${LY_FILES}))
|
||||
|
||||
.PHONY: book songs midi opus clean directories all
|
||||
.DEFAULT_GOAL := all
|
||||
|
||||
directories: ${BUILD_DIR} ${BUILD_BOOK_DIR} ${TMP_BOOK_DIR} ${BUILD_SONG_DIR} ${BUILD_MIDI_DIR} ${TMP_DIR} ${TMP_SONG_DIR} ${TMP_MIDI_DIR} ${BUILD_OPUS_DIR}
|
||||
|
||||
${BUILD_DIR}:
|
||||
mkdir -p ${BUILD_DIR}
|
||||
|
||||
${BUILD_BOOK_DIR}:
|
||||
mkdir -p ${BUILD_BOOK_DIR}
|
||||
|
||||
${BUILD_SONG_DIR}:
|
||||
mkdir -p ${BUILD_SONG_DIR}
|
||||
|
||||
${BUILD_MIDI_DIR}:
|
||||
mkdir -p ${BUILD_MIDI_DIR}
|
||||
|
||||
${TMP_DIR}:
|
||||
mkdir -p ${TMP_DIR}
|
||||
|
||||
${TMP_BOOK_DIR}:
|
||||
mkdir -p ${TMP_BOOK_DIR}
|
||||
|
||||
${TMP_SONG_DIR}:
|
||||
mkdir -p ${TMP_SONG_DIR}
|
||||
|
||||
${TMP_MIDI_DIR}:
|
||||
mkdir -p ${TMP_MIDI_DIR}
|
||||
|
||||
${BUILD_OPUS_DIR}:
|
||||
mkdir -p ${BUILD_OPUS_DIR}
|
||||
|
||||
${TMP_SONG_DIR}/%.pdf: ${SONG_DIR}/%.ly ${SONG_DIR}/%.tex
|
||||
cd ${SRC_DIR} && lualatex --jobname='$(notdir $(basename $@))' --output-directory=${WORKING_DIR}/${TMP_SONG_DIR} --shell-escape ${WORKING_DIR}/${SRC_DIR}/song.tex ${WORKING_DIR}/${SONG_DIR}/$(notdir $(basename $@)).ly ${WORKING_DIR}/${SONG_DIR}/$(notdir $(basename $@)).tex
|
||||
|
||||
${BUILD_MIDI_DIR}/%.midi: ${TMP_MIDI_DIR}/%-1.midi
|
||||
cp $< $@
|
||||
|
||||
${TMP_MIDI_DIR}/%-1.midi: ${SONG_DIR}/%.ly
|
||||
lilypond --output=${TMP_MIDI_DIR} $<
|
||||
|
||||
${BUILD_OPUS_DIR}/%.opus: ${BUILD_MIDI_DIR}/%.midi
|
||||
timidity $< -Ow -o - | opusenc - $@
|
||||
|
||||
${TMP_BOOK_DIR}/%.pdf: ${SRC_DIR}/%.tex ${SRC_DIR}/images/title.png
|
||||
latexmk -cd -lualatex -e '$$lualatex=q/lualatex %O -shell-escape %S/' -output-directory=${WORKING_DIR}/${TMP_BOOK_DIR} $<
|
||||
|
||||
#short edge binding
|
||||
${TMP_BOOK_DIR}/%-octavo.pdf: ${TMP_BOOK_DIR}/%.pdf
|
||||
cd ${TMP_BOOK_DIR} && \
|
||||
../../bin/makebook -v -t octavo -i $(notdir $<) -o $(notdir $@)
|
||||
|
||||
${TMP_BOOK_DIR}/%-folio.pdf: ${TMP_BOOK_DIR}/%.pdf
|
||||
cd ${TMP_BOOK_DIR} && \
|
||||
../../bin/makebook -v -t folio -i $(notdir $<) -o $(notdir $@)
|
||||
|
||||
${BUILD_DIR}/%.pdf: ${TMP_DIR}/%.pdf
|
||||
cp $< $@
|
||||
|
||||
book: directories ${BUILD_BOOK_DIR}/${BOOKNAME}.pdf ${BUILD_BOOK_DIR}/${BOOKNAME}-folio.pdf ${BUILD_BOOK_DIR}/${BOOKNAME}-octavo.pdf
|
||||
songs: directories ${LY_PDFS}
|
||||
midi: directories ${LY_MIDIS}
|
||||
opus: directories ${LY_OPUS}
|
||||
all: book songs midi opus
|
||||
|
||||
clean:
|
||||
rm -rf ${BUILD_DIR}
|
||||
rm -rf ${TMP_DIR}
|
632
bin/makebook
Executable file
632
bin/makebook
Executable file
@ -0,0 +1,632 @@
|
||||
#!/bin/sh
|
||||
# +AMDG This document was begun just before Christmas,
|
||||
# 2010, and it is humbly dedicated to St. Wulfric, patron of
|
||||
# bookbinders, and to the Immaculate Heart of Mary for their
|
||||
# prayers, and to the Sacred Heart of Jesus for His mercy.
|
||||
#
|
||||
#**********************************************************#
|
||||
# makebook #
|
||||
# written by Donald P. Goodman III #
|
||||
# Copyright (C) 2011 #
|
||||
# #
|
||||
# Impose pdf pages for binding #
|
||||
#**********************************************************#
|
||||
#
|
||||
# This program is free software: you can redistribute it
|
||||
# and/or modify it under the terms of the GNU General Public
|
||||
# License as published by the Free Software Foundation,
|
||||
# either version 3 of the License, or (at your option) any
|
||||
# later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be
|
||||
# useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
# PURPOSE. See the GNU General Public License for more
|
||||
# details.
|
||||
#
|
||||
# For a full copy of the GNU General Public License, see
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
#**********************************************************#
|
||||
# begin the code #
|
||||
#**********************************************************#
|
||||
umask 033
|
||||
# define our revision number variable for rcs
|
||||
REVISION="2.0"
|
||||
# define error codes
|
||||
E_WRONG_ARGS=64 # too many or few args
|
||||
E_BAD_SIG_TYPE=65 # invalid type of signature
|
||||
E_BAD_UNIT=66 # unrecognized dimension unit used
|
||||
E_BAD_FILENAME=67 # filename contains insecure chars,
|
||||
# or doesn't exist
|
||||
E_BAD_OPT=68 # bad command-line flag requested
|
||||
E_NO_PROG=69 # missing a required program
|
||||
# define usage variables
|
||||
VERBOSE=0 # 0 if not verbose, 1 if -v
|
||||
SIG_TYPE="folio" # type of section desired
|
||||
PAGES_PER_SIG=4 # number of pages per signature
|
||||
SECT_TYPE=1 # number of signatures per section
|
||||
NUP="2x1" # default format of signatures
|
||||
FRONT_FAVOR=0 # favor front for blanks; off by default
|
||||
# define various variables to be zero by default
|
||||
TGT_PAGE_WIDTH=0
|
||||
TGT_PAGE_HEIGHT=0
|
||||
HORIZ_DELTA=0
|
||||
VERT_DELTA=0
|
||||
HORIZ_OFFSET=0
|
||||
VERT_OFFSET=0
|
||||
SCALE=1
|
||||
# make sure user has the right programs installed, and die
|
||||
# horribly if not
|
||||
command -v od >/dev/null 2>&1 ||
|
||||
{ echo >&2 "makebook: error: requires od, but it's not installed";
|
||||
exit $E_NO_PROG;
|
||||
}
|
||||
command -v pdflatex >/dev/null 2>&1 ||
|
||||
{ echo >&2 "makebook: error: requires pdflatex, but it's not installed";
|
||||
exit $E_NO_PROG;
|
||||
}
|
||||
command -v pdfinfo >/dev/null 2>&1 ||
|
||||
{ echo >&2 "makebook: error: requires pdfinfo, but it's not installed";
|
||||
exit $E_NO_PROG;
|
||||
}
|
||||
command -v pdftk >/dev/null 2>&1 ||
|
||||
{ echo >&2 "makebook: error: requires pdftk, but it's not installed";
|
||||
exit $E_NO_PROG;
|
||||
}
|
||||
|
||||
# print the version information and exit successfully
|
||||
versionfunc ()
|
||||
{
|
||||
echo "makebook v${REVISION}. Copyright (C) 2011, Donald P."
|
||||
echo "Goodman III."
|
||||
echo "This program comes with ABSOLUTELY NO WARRANTY."
|
||||
echo "This is free software, and you are welcome to "
|
||||
echo "redistribute it under certain conditions; see "
|
||||
echo "the GNU GPL v3 for details."
|
||||
exit 0
|
||||
}
|
||||
|
||||
# print the online help and exit successfully
|
||||
helpfunc ()
|
||||
{
|
||||
cat <<End-of-help
|
||||
makebook v${REVISION}. Copyright (C) 2011, Donald P. Goodman III.
|
||||
This program comes with ABSOLUTELY NO WARRANTY.
|
||||
This is free software, and you are welcome to
|
||||
redistribute it under certain conditions; see
|
||||
the GNU GPL v3 for details.
|
||||
|
||||
-V: Prints license and version information, then exits
|
||||
successfully.
|
||||
-h: Prints this help information, then exist successfully.
|
||||
-v: Verbose output
|
||||
-f: Favor front, rather than back, for blanks.
|
||||
-t: Signature type
|
||||
-n: Number of signatures per section.
|
||||
-H: Height of the target page.
|
||||
-w: Width of the target page.
|
||||
-d: Horizontal delta.
|
||||
-D: Vertical delta.
|
||||
-m: Horizontal offset.
|
||||
-M: Vertical offset.
|
||||
-s: Scaling of source pages to target page.
|
||||
-i: Input file.
|
||||
-o: Output file.
|
||||
|
||||
Please see the man page for complete documentation.
|
||||
End-of-help
|
||||
exit 0;
|
||||
}
|
||||
|
||||
# define a for dealing with units; convert to bp ()
|
||||
unitarg ()
|
||||
{
|
||||
if [ ! `echo "$1" | grep '^[\+\|-]*[0-9\.][0-9\.]*\(in\|cm\|pt\|bp\|pc\|$\)'` ]
|
||||
then
|
||||
echo "ERROR: dimension \"$1\" not valid." >&2
|
||||
exit $E_BAD_UNIT
|
||||
fi
|
||||
if [ `expr match "$1" '.*\(in\)'` ]
|
||||
then
|
||||
OPTARG=`echo "scale=0; ${1%in} * 72" | bc`
|
||||
OPTARG=${OPTARG%.*}
|
||||
elif [ `expr match "$1" '.*\(cm\)'` ]
|
||||
then
|
||||
OPTARG=`echo "scale=0; ${1%cm} * 28.3464567" | bc`
|
||||
OPTARG=${OPTARG%.*}
|
||||
elif [ `expr match "$1" '.*\(pt\)'` ]
|
||||
then
|
||||
OPTARG=`echo "scale=0; ${1%pt} / 1.00375" | bc`
|
||||
OPTARG=${OPTARG%.*}
|
||||
elif [ `expr match "$1" '.*\(pc\)'` ]
|
||||
then
|
||||
OPTARG=`echo "scale=0; (${1%pc} / 1.00375) * 12" | bc`
|
||||
OPTARG=${OPTARG%.*}
|
||||
elif [ `expr match "$1" '.*\(bp\)'` ]
|
||||
then
|
||||
OPTARG=${1%bp}
|
||||
else
|
||||
OPTARG=${1%.*}
|
||||
fi
|
||||
}
|
||||
# define a for dealing with section types; convert ()
|
||||
# to words; e.g., "4to" to "quarto"
|
||||
typearg ()
|
||||
{
|
||||
if [ "$1" = "4to" ] || [ "$1" = "quarto" ]
|
||||
then
|
||||
PAGES_PER_SIG=8
|
||||
NUP="2x2"
|
||||
OPTARG="quarto"
|
||||
elif [ "$1" = "2o" ] || [ "$1" = "folio" ]
|
||||
then
|
||||
PAGES_PER_SIG=4
|
||||
NUP="2x1"
|
||||
OPTARG="folio"
|
||||
elif [ "$1" = "8vo" ] || [ "$1" = "octavo" ]
|
||||
then
|
||||
PAGES_PER_SIG=16
|
||||
NUP="4x2"
|
||||
OPTARG="octavo"
|
||||
elif [ "$1" = "6to" ] || [ "$1" = "sexto" ]
|
||||
then
|
||||
PAGES_PER_SIG=12
|
||||
NUP="2x3"
|
||||
OPTARG="sexto"
|
||||
elif [ "$1" = "12mo" ] || [ "$1" = "duodecimo" ]
|
||||
then
|
||||
PAGES_PER_SIG=24
|
||||
NUP="4x3"
|
||||
OPTARG="duodecimo"
|
||||
else
|
||||
echo "ERROR: signature type \"$1\" not recognized." >&2
|
||||
exit $E_BAD_SIG_TYPE
|
||||
fi
|
||||
}
|
||||
|
||||
# clean up filename argument
|
||||
filefunc ()
|
||||
{
|
||||
err_message="ERROR: bad characters in file name."
|
||||
if [ `echo "$1" | grep '\?'` ]
|
||||
then
|
||||
echo "$err_message" >&2
|
||||
exit $E_BAD_FILENAME
|
||||
elif [ `echo "$1" | grep '\*'` ]
|
||||
then
|
||||
echo "$err_message" >&2
|
||||
exit $E_BAD_FILENAME
|
||||
elif [ `echo "$1" | grep '"'` ]
|
||||
then
|
||||
echo "$err_message" >&2
|
||||
exit $E_BAD_FILENAME
|
||||
elif [ `echo "$1" | grep ';'` ]
|
||||
then
|
||||
echo "$err_message" >&2
|
||||
exit $E_BAD_FILENAME
|
||||
elif [ `echo "$1" | grep '[\\]'` ]
|
||||
then
|
||||
echo "$err_message" >&2
|
||||
exit $E_BAD_FILENAME
|
||||
elif [ `echo "$1" | grep ' '` ]
|
||||
then
|
||||
echo "$err_message" >&2
|
||||
exit $E_BAD_FILENAME
|
||||
fi
|
||||
OPTARG=`basename $1`
|
||||
}
|
||||
|
||||
# now identify and parse the options
|
||||
while getopts "Vhvfn:t:H:w:d:D:m:M:s:i:o:" Option
|
||||
do
|
||||
case $Option in
|
||||
V ) versionfunc;;
|
||||
h ) helpfunc;;
|
||||
v ) VERBOSE=1;;
|
||||
f ) FRONT_FAVOR=1;;
|
||||
n ) SECT_TYPE=$OPTARG;;
|
||||
t ) typearg "$OPTARG"; SIG_TYPE=$OPTARG;;
|
||||
H ) unitarg "$OPTARG"; TGT_PAGE_HEIGHT=$OPTARG;;
|
||||
w ) unitarg "$OPTARG"; TGT_PAGE_WIDTH=$OPTARG;;
|
||||
d ) unitarg "$OPTARG"; HORIZ_DELTA=$OPTARG;;
|
||||
D ) unitarg "$OPTARG"; VERT_DELTA=$OPTARG;;
|
||||
m ) unitarg "$OPTARG"; HORIZ_OFFSET=$OPTARG;;
|
||||
M ) unitarg "$OPTARG"; VERT_OFFSET=$OPTARG;;
|
||||
s ) SCALE=$OPTARG;;
|
||||
i ) filefunc "$OPTARG"; FILE_NAME=$OPTARG;;
|
||||
o ) filefunc "$OPTARG"; OUTFILE_NAME=$OPTARG;;
|
||||
* ) echo "ERROR: unknown flag \
|
||||
\"$Option\"." >&2; exit $E_BAD_OPT;;
|
||||
esac
|
||||
done
|
||||
|
||||
# make random file name to use for input
|
||||
NEW_FILE_NAME="tmp_`od -An -N4 -t uL /dev/urandom | tr -d '\ '`.pdf"
|
||||
# if input file specified, use file; if not, read stdin
|
||||
if [ "$FILE_NAME" ]
|
||||
then
|
||||
cp "$FILE_NAME" "$NEW_FILE_NAME"
|
||||
else
|
||||
FILE_NAME="book.pdf"
|
||||
cat /dev/stdin > "$NEW_FILE_NAME"
|
||||
fi
|
||||
# declare holder variable for pdftk
|
||||
tmp_name="tmp_`od -An -N4 -t uL /dev/urandom | tr -d '\ '`.pdf"
|
||||
# if output file specified, use that; if not, name it; if
|
||||
# "-", use stdout
|
||||
[ "$OUTFILE_NAME" ] || OUTFILE_NAME="sigs_$FILE_NAME"
|
||||
if [ "$OUTFILE_NAME" = "stdout" ]
|
||||
then
|
||||
VERBOSE=0
|
||||
fi
|
||||
# print our introduction message
|
||||
if [ $VERBOSE -eq 1 ]
|
||||
then
|
||||
echo "makebook. Copyright (C) 2011, Donald P. Goodman III."
|
||||
echo "This program comes with ABSOLUTELY NO WARRANTY."
|
||||
echo "This is free software, and you are welcome to "
|
||||
echo "redistribute it under certain conditions; see "
|
||||
echo "the GNU GPL v3 for details."
|
||||
echo "IMPOSING pdf pages onto \"$OUTFILE_NAME\"..."
|
||||
fi
|
||||
|
||||
# get some information about our source document
|
||||
NUM_PAGES=`pdfinfo "$NEW_FILE_NAME" | awk '/Pages:/ {print $2}'`;
|
||||
SRC_PAGE_WIDTH=`pdfinfo "$NEW_FILE_NAME" | awk '/Page\ size:/ {print $3}'`;
|
||||
SRC_PAGE_HEIGHT=`pdfinfo "$NEW_FILE_NAME" | awk '/Page\ size:/ {print $5}'`;
|
||||
# find the number of pages we'll have per signature
|
||||
PAGES_PER_SIG=$(($PAGES_PER_SIG * $SECT_TYPE))
|
||||
# determine if extra pages will be necessary
|
||||
NUM_BLANKS=`expr $NUM_PAGES % $PAGES_PER_SIG`
|
||||
if [ $NUM_BLANKS -ne 0 ]
|
||||
then
|
||||
NUM_BLANKS=`expr $PAGES_PER_SIG - $NUM_BLANKS`
|
||||
fi
|
||||
tmp=`expr $NUM_PAGES + $NUM_BLANKS`
|
||||
NUM_SIGS=`expr $tmp / $PAGES_PER_SIG`
|
||||
|
||||
# if extra pages are needed, generate blank page
|
||||
if [ $NUM_BLANKS -gt 0 ] && [ ! -e "./blank.pdf" ]
|
||||
then
|
||||
echo "\documentclass{article}" > blank.tex
|
||||
echo '\\thispagestyle{empty}' >> blank.tex
|
||||
echo "\usepackage[paperwidth=${SRC_PAGE_WIDTH}bp,paperheight="${SRC_PAGE_HEIGHT}bp"]{geometry}" >> blank.tex
|
||||
echo '\\begin{document}' >> blank.tex
|
||||
echo "\quad \end{document}" >> blank.tex
|
||||
if [ $VERBOSE -eq 1 ]
|
||||
then
|
||||
echo "CREATING blank page to fill sections...";
|
||||
fi
|
||||
pdflatex blank.tex > /dev/null 2&>1
|
||||
rm blank.aux blank.log blank.tex
|
||||
fi
|
||||
# now insert blank pages as needed, preferring the back for
|
||||
# odd numbers by default, front if stated
|
||||
if [ $NUM_BLANKS -eq 1 ]
|
||||
then
|
||||
if [ $VERBOSE -eq 1 ]
|
||||
then
|
||||
echo "INSERTING one blank page..."
|
||||
fi
|
||||
if [ $FRONT_FAVOR -eq 0 ]
|
||||
then
|
||||
pdftk A="$NEW_FILE_NAME" B=blank.pdf cat A1-end \
|
||||
B1 output "$tmp_name"
|
||||
else
|
||||
pdftk A="$NEW_FILE_NAME" B=blank.pdf cat B1 \
|
||||
A1-end output "$tmp_name"
|
||||
fi
|
||||
mv "$tmp_name" "$NEW_FILE_NAME"
|
||||
else
|
||||
# tmp=`expr $NUM_BLANKS / 2`
|
||||
# START_BLANKS=${tmp/.*}
|
||||
START_BLANKS=`expr $NUM_BLANKS / 2`
|
||||
END_BLANKS=`expr $NUM_BLANKS - $START_BLANKS`
|
||||
if [ `expr $START_BLANKS % 2` -ne 0 ]; then : else
|
||||
START_BLANKS=`expr $START_BLANKS - 1`
|
||||
END_BLANKS=`expr $END_BLANKS + 1 `
|
||||
fi
|
||||
if [ $FRONT_FAVOR -eq 1 ]
|
||||
then
|
||||
tmp=$START_BLANKS
|
||||
START_BLANKS=$END_BLANKS
|
||||
END_BLANKS=$tmp
|
||||
if [ `expr $START_BLANKS % 2` -ne 0 ]; then : else
|
||||
START_BLANKS=`expr $START_BLANKS - 1`
|
||||
END_BLANKS=`expr $END_BLANKS + 1 `
|
||||
fi
|
||||
fi
|
||||
if [ $VERBOSE -eq 1 ]
|
||||
then
|
||||
echo "INSERTING $START_BLANKS blank pages at start..."
|
||||
echo "INSERTING $END_BLANKS blank pages at end...";
|
||||
fi
|
||||
i=0
|
||||
while [ $i -lt $START_BLANKS ]
|
||||
do
|
||||
pdftk A="$NEW_FILE_NAME" B=blank.pdf cat B1 A1-end output "$tmp_name"
|
||||
mv "$tmp_name" "$NEW_FILE_NAME"
|
||||
i=`expr $i + 1`
|
||||
done
|
||||
i=0
|
||||
while [ $i -lt $END_BLANKS ]
|
||||
do
|
||||
pdftk A="$NEW_FILE_NAME" B=blank.pdf cat A1-end B1 output "$tmp_name"
|
||||
mv "$tmp_name" "$NEW_FILE_NAME"
|
||||
i=`expr $i + 1`
|
||||
done
|
||||
fi
|
||||
# begin the imposing, announcing if appropriate
|
||||
tmp=`expr $NUM_PAGES + $NUM_BLANKS`
|
||||
if [ $VERBOSE -eq 1 ]
|
||||
then
|
||||
echo "IMPOSING $NUM_PAGES pages ($tmp with blanks) on
|
||||
$(($NUM_SIGS * $SECT_TYPE)) signature(s) gathered in
|
||||
sections of $SECT_TYPE signature(s) each...";
|
||||
fi
|
||||
# arrange the pages for impression on signatures
|
||||
i=1
|
||||
j=1
|
||||
if [ $VERBOSE -eq 1 ]
|
||||
then
|
||||
echo "REARRANGING pages...";
|
||||
fi
|
||||
while [ $j -le $NUM_SIGS ]
|
||||
do
|
||||
if [ "$SIG_TYPE" = "quarto" ]
|
||||
then
|
||||
# determine size of target page
|
||||
if [ $(echo "$TGT_PAGE_HEIGHT == 0" | bc) -eq 1 ]
|
||||
then
|
||||
TGT_PAGE_HEIGHT=$(echo "$SRC_PAGE_HEIGHT * 2" | bc)
|
||||
fi
|
||||
if [ $(echo "$TGT_PAGE_WIDTH == 0" | bc) -eq 1 ]
|
||||
then
|
||||
TGT_PAGE_WIDTH=$(echo "$SRC_PAGE_WIDTH * 2" | bc)
|
||||
fi
|
||||
# do the rearranging
|
||||
k=$i; n=1; total=$(($SECT_TYPE * 8)); m=$total
|
||||
while [ $n -le $SECT_TYPE ]
|
||||
do
|
||||
pdftk "$NEW_FILE_NAME" cat `expr $k + $m - 1` $k \
|
||||
`expr $k + $m - 4`south `expr $k + 3`south \
|
||||
`expr $k + 1` `expr $k + $m - 2` `expr $k + 2`south \
|
||||
`expr $k + $m - 3`south output ${tmp_name%.pdf}_$n;
|
||||
k=`expr $k + 4`; n=`expr $n + 1`; m=`expr $m - 8`
|
||||
done
|
||||
n=1
|
||||
while [ `expr $n + 0` -le $SECT_TYPE ]
|
||||
do
|
||||
if [ ! -e "$tmp_name" ]
|
||||
then
|
||||
pdftk A=${tmp_name%.pdf}_$n cat A1-end \
|
||||
output "$tmp_name"
|
||||
else
|
||||
pdftk A=$tmp_name B=${tmp_name%.pdf}_`expr $n` \
|
||||
cat A1-end B1-end output ${tmp_name}_tmp
|
||||
mv ${tmp_name}_tmp "$tmp_name"
|
||||
fi
|
||||
n=`expr $n + 1`
|
||||
done
|
||||
if [ $VERBOSE -eq 1 ]
|
||||
then
|
||||
echo "REARRANGING section number $j..."
|
||||
fi
|
||||
j=`expr $j + 1`;
|
||||
i=`expr $i + $total`;
|
||||
elif [ "$SIG_TYPE" = "folio" ]
|
||||
then
|
||||
# determine size of target page
|
||||
if [ $(echo "$TGT_PAGE_HEIGHT == 0" | bc) -eq 1 ]
|
||||
then
|
||||
TGT_PAGE_HEIGHT=$(echo "$SRC_PAGE_HEIGHT * 1" | bc)
|
||||
fi
|
||||
if [ $(echo "$TGT_PAGE_WIDTH == 0" | bc) -eq 1 ]
|
||||
then
|
||||
TGT_PAGE_WIDTH=$(echo "$SRC_PAGE_WIDTH * 2" | bc)
|
||||
fi
|
||||
# do the rearranging
|
||||
k=$i; n=1; total=$(($SECT_TYPE * 4)); m=$total
|
||||
while [ $n -le $SECT_TYPE ]
|
||||
do
|
||||
pdftk "$NEW_FILE_NAME" cat `expr $k + $m - 1` \
|
||||
`expr $k` `expr $k + 1` `expr $k + $m - 2` \
|
||||
output ${tmp_name%.pdf}_$n;
|
||||
k=`expr $k + 2`; n=`expr $n + 1`; m=`expr $m - 4`
|
||||
done
|
||||
n=1
|
||||
while [ `expr $n + 0` -le $SECT_TYPE ]
|
||||
do
|
||||
if [ ! -e "$tmp_name" ]
|
||||
then
|
||||
pdftk A=${tmp_name%.pdf}_$n cat A1-end \
|
||||
output "$tmp_name"
|
||||
else
|
||||
pdftk A="$tmp_name" B=${tmp_name%.pdf}_`expr $n` \
|
||||
cat A1-end B1-end output ${tmp_name}_tmp
|
||||
mv ${tmp_name}_tmp "$tmp_name"
|
||||
fi
|
||||
n=`expr $n + 1`
|
||||
done
|
||||
if [ $VERBOSE -eq 1 ]
|
||||
then
|
||||
echo "REARRANGING section number $j..."
|
||||
fi
|
||||
j=`expr $j + 1`;
|
||||
i=`expr $i + $total`;
|
||||
elif [ "$SIG_TYPE" = "octavo" ]
|
||||
then
|
||||
# determine target page dimensions
|
||||
if [ $(echo "$TGT_PAGE_HEIGHT == 0" | bc) -eq 1 ]
|
||||
then
|
||||
TGT_PAGE_HEIGHT=$(echo "$SRC_PAGE_HEIGHT * 2" | bc)
|
||||
fi
|
||||
if [ $(echo "$TGT_PAGE_WIDTH == 0" | bc) -eq 1 ]
|
||||
then
|
||||
TGT_PAGE_WIDTH=$(echo "$SRC_PAGE_WIDTH * 4" | bc)
|
||||
fi
|
||||
# do the rearranging
|
||||
k=$i; n=1; total=$(($SECT_TYPE * 16)); m=$total
|
||||
while [ $n -le $SECT_TYPE ]
|
||||
do
|
||||
pdftk "$NEW_FILE_NAME" cat `expr $k + 3` \
|
||||
`expr $k + $m - 4` `expr $k + $m - 1` $k \
|
||||
`expr $k + 4`south `expr $k + $m - 5`south \
|
||||
`expr $k + $m - 8`south `expr $k + 7`south \
|
||||
`expr $k + 1` `expr $k + $m - 2` `expr $k + $m - 3` \
|
||||
`expr $k + 2` `expr $k + 6`south `expr $k + $m - 7`south \
|
||||
`expr $k + $m - 6`south `expr $k + 5`south \
|
||||
output ${tmp_name%.pdf}_$n;
|
||||
k=`expr $k + 8`; n=`expr $n + 1`; m=`expr $m - 16`
|
||||
done
|
||||
n=1
|
||||
while [ `expr $n + 0` -le $SECT_TYPE ]
|
||||
do
|
||||
if [ ! -e "$tmp_name" ]
|
||||
then
|
||||
pdftk A=${tmp_name%.pdf}_$n cat A1-end \
|
||||
output "$tmp_name"
|
||||
else
|
||||
pdftk A="$tmp_name" B=${tmp_name%.pdf}_`expr $n` \
|
||||
cat A1-end B1-end output ${tmp_name}_tmp
|
||||
mv ${tmp_name}_tmp "$tmp_name"
|
||||
fi
|
||||
n=`expr $n + 1`
|
||||
done
|
||||
if [ $VERBOSE -eq 1 ]
|
||||
then
|
||||
echo "REARRANGING section number $j..."
|
||||
fi
|
||||
j=`expr $j + 1`;
|
||||
i=`expr $i + $total`;
|
||||
elif [ "$SIG_TYPE" = "sexto" ]
|
||||
then
|
||||
# determine target page dimensions
|
||||
if [ $(echo "$TGT_PAGE_HEIGHT == 0" | bc) -eq 1 ]
|
||||
then
|
||||
TGT_PAGE_HEIGHT=$(echo "$SRC_PAGE_HEIGHT * 3" | bc)
|
||||
fi
|
||||
if [ $(echo "$TGT_PAGE_WIDTH == 0" | bc) -eq 1 ]
|
||||
then
|
||||
TGT_PAGE_WIDTH=$(echo "$SRC_PAGE_WIDTH * 2" | bc)
|
||||
fi
|
||||
# do the rearranging
|
||||
k=$i; n=1; total=$(($SECT_TYPE * 12)); m=$total
|
||||
while [ $n -le $SECT_TYPE ]
|
||||
do
|
||||
pdftk "$NEW_FILE_NAME" cat `expr $k + 5` \
|
||||
`expr $k + 6` `expr $k + $m - 1` $k \
|
||||
`expr $k + $m - 1 - 3`south `expr $k + 3`south \
|
||||
`expr $k + 7` `expr $k + 4` \
|
||||
`expr $k + 1` `expr $k + $m - 1 - 1` \
|
||||
`expr $k + 2`south `expr $k + $m - 1 - 2`south \
|
||||
output ${tmp_name%.pdf}_$n;
|
||||
k=`expr $k + 6`; n=`expr $n + 1`; m=`expr $m - 12`
|
||||
done
|
||||
n=1
|
||||
while [ `expr $n + 0` -le $SECT_TYPE ]
|
||||
do
|
||||
if [ ! -e "$tmp_name" ]
|
||||
then
|
||||
pdftk A=${tmp_name%.pdf}_$n cat A1-end \
|
||||
output "$tmp_name"
|
||||
else
|
||||
pdftk A=$tmp_name B=${tmp_name%.pdf}_`expr $n` \
|
||||
cat A1-end B1-end output ${tmp_name}_tmp
|
||||
mv ${tmp_name}_tmp "$tmp_name"
|
||||
fi
|
||||
n=`expr $n + 1`
|
||||
done
|
||||
if [ $VERBOSE -eq 1 ]
|
||||
then
|
||||
echo "REARRANGING section number $j..."
|
||||
fi
|
||||
j=`expr $j + 1`;
|
||||
i=`expr $i + $total`;
|
||||
elif [ "$SIG_TYPE" = "duodecimo" ]
|
||||
then
|
||||
# determine target page dimensions
|
||||
if [ $(echo "$TGT_PAGE_HEIGHT == 0" | bc) -eq 1 ]
|
||||
then
|
||||
TGT_PAGE_HEIGHT=$(($SRC_PAGE_HEIGHT * 3))
|
||||
fi
|
||||
if [ $(echo "$TGT_PAGE_WIDTH == 0" | bc) -eq 1 ]
|
||||
then
|
||||
TGT_PAGE_WIDTH=$(($SRC_PAGE_WIDTH * 4))
|
||||
fi
|
||||
# do the rearranging
|
||||
k=$i; n=1; total=$(($SECT_TYPE * 24)); m=$total
|
||||
while [ $n -le $SECT_TYPE ]
|
||||
do
|
||||
pdftk "$NEW_FILE_NAME" cat `expr $k + 8` \
|
||||
`expr $k + $m - 1 - 8` `expr $k + 12` \
|
||||
`expr $k + 11` `expr $k + 4` \
|
||||
`expr $k + $m - 1 - 3` `expr $k + $m - 1` \
|
||||
$k `expr $k + 4`south `expr $k + $m - 1 - 4`south \
|
||||
`expr $k + $m - 1 - 7`south `expr $k + 7`south \
|
||||
`expr $k + 10` `expr $k + 13` `expr $k + 14` \
|
||||
`expr $k + 9` `expr $k + 1` `expr $k + $m - 1 - 1` \
|
||||
`expr $k + $m - 1 - 2` `expr $k + 2` \
|
||||
`expr $k + 6`south `expr $k + $m - 1 - 6`south \
|
||||
`expr $k + $m - 1 - 5`south `expr $k + 5`south \
|
||||
output ${tmp_name%.pdf}_$n;
|
||||
k=`expr $k + 12`; n=`expr $n + 1`; m=`expr $m - 24`
|
||||
done
|
||||
n=1
|
||||
while [ `expr $n + 0` -le $SECT_TYPE ]
|
||||
do
|
||||
if [ ! -e "$tmp_name" ]
|
||||
then
|
||||
pdftk A=${tmp_name%.pdf}_$n cat A1-end \
|
||||
output $tmp_name
|
||||
else
|
||||
pdftk A="$tmp_name" B=${tmp_name%.pdf}_`expr $n` \
|
||||
cat A1-end B1-end output ${tmp_name}_tmp
|
||||
mv ${tmp_name}_tmp "$tmp_name"
|
||||
fi
|
||||
n=`expr $n + 1`
|
||||
done
|
||||
if [ $VERBOSE -eq 1 ]
|
||||
then
|
||||
echo "REARRANGING section number $j..."
|
||||
fi
|
||||
j=`expr $j + 1`;
|
||||
i=`expr $i + $total`;
|
||||
fi
|
||||
done
|
||||
mv "$tmp_name" "$NEW_FILE_NAME"
|
||||
rm ${tmp_name%.pdf}*
|
||||
echo "\documentclass{article}
|
||||
\usepackage{pdfpages}
|
||||
\usepackage[paperwidth=${TGT_PAGE_WIDTH}bp,paperheight=${TGT_PAGE_HEIGHT}bp]{geometry}
|
||||
\pagestyle{empty}" > ${OUTFILE_NAME%.pdf}.tex
|
||||
echo '\\begin{document}' >> ${OUTFILE_NAME%.pdf}.tex
|
||||
echo "\includepdf[nup=$NUP,pages=-,turn=false,columnstrict,
|
||||
noautoscale,delta=${HORIZ_DELTA}bp ${VERT_DELTA}bp,
|
||||
offset=${HORIZ_OFFSET}bp ${VERT_OFFSET}bp,scale=${SCALE}]
|
||||
{./"$NEW_FILE_NAME"}\end{document}" >> ${OUTFILE_NAME%.pdf}.tex
|
||||
if [ $VERBOSE -eq 1 ]
|
||||
then
|
||||
echo "IMPOSING sections..."
|
||||
fi
|
||||
pdflatex ${OUTFILE_NAME%.pdf}.tex #> /dev/null 2>&1
|
||||
if [ $VERBOSE -eq 1 ]
|
||||
then
|
||||
echo "CLEANING up..."
|
||||
fi
|
||||
rm ${OUTFILE_NAME%.pdf}.tex ${OUTFILE_NAME%.pdf}.aux \
|
||||
${OUTFILE_NAME%.pdf}.log "$NEW_FILE_NAME"
|
||||
if [ $VERBOSE -eq 1 ]
|
||||
then
|
||||
echo "`expr $NUM_PAGES + $NUM_BLANKS` pages imposed in
|
||||
$(($NUM_SIGS * $SECT_TYPE)) $SIG_TYPE signatures gathered
|
||||
in sections of $SECT_TYPE signature(s) each and output to
|
||||
${OUTFILE_NAME%.pdf}.pdf."
|
||||
fi
|
||||
if [ "$OUTFILE_NAME" = "stdout" ]
|
||||
then
|
||||
cat ${OUTFILE_NAME}.pdf
|
||||
rm ${OUTFILE_NAME}.pdf
|
||||
fi
|
||||
exit 0
|
BIN
src/images/title.png
Normal file
BIN
src/images/title.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.8 KiB |
69
src/kommersbuch.tex
Normal file
69
src/kommersbuch.tex
Normal file
@ -0,0 +1,69 @@
|
||||
% !Mode:: "TeX:UTF-8"
|
||||
|
||||
\documentclass[9pt, a4paper, openany]{scrbook}
|
||||
|
||||
\usepackage{fontspec}
|
||||
\usepackage{fancyhdr}
|
||||
\usepackage{geometry}
|
||||
\usepackage{tgschola}
|
||||
\usepackage{tocloft}
|
||||
\usepackage[unicode]{hyperref}
|
||||
\usepackage{songs}
|
||||
\usepackage{lyluatex}
|
||||
|
||||
\makeatletter
|
||||
\newcommand{\unchapter}[1]{%
|
||||
\begingroup
|
||||
\let\@makechapterhead\@gobble % make \@makechapterhead do nothing
|
||||
\chapter{#1}
|
||||
\endgroup
|
||||
}
|
||||
|
||||
\makeatother
|
||||
|
||||
\setlength{\headheight}{15pt}
|
||||
|
||||
\pagestyle{fancy}
|
||||
\renewcommand{\chaptermark}[1]{ \markboth{#1}{} }
|
||||
\renewcommand{\sectionmark}[1]{ \markright{#1}{} }
|
||||
|
||||
\fancyhf{}
|
||||
\fancyhead[LE,RO]{\thepage}
|
||||
\fancyhead[RE]{\textit{ \nouppercase{\leftmark}} }
|
||||
\fancyhead[LO]{\textit{ \nouppercase{\rightmark}} }
|
||||
|
||||
\fancypagestyle{plain}{
|
||||
\fancyhf{}
|
||||
\fancyhead[LE,RO]{\thepage}
|
||||
\fancyhead[RE]{\textit{ \nouppercase{Alcolica}} }
|
||||
\fancyhead[LO]{\textit{ \nouppercase{Alcolica}} }
|
||||
}
|
||||
|
||||
\geometry{a5paper,left=20mm,right=20mm, top=3cm, bottom=3cm}
|
||||
|
||||
\renewcommand\addchaptertocentry[2]{\addtocentrydefault{chapter}{}{#2}}
|
||||
\renewcommand{\contentsname}{Inhalt}
|
||||
\renewcommand{\cfttoctitlefont}{\huge\textbf\rmfamily}
|
||||
\renewcommand{\cftchapfont}{\large\rmfamily}
|
||||
|
||||
\begin{document}
|
||||
\begin{titlepage}
|
||||
\begin{center}
|
||||
\includegraphics[width=0.50 \textwidth]{images/title.png}\\
|
||||
\rule{\linewidth}{0.5mm} \\[0.4cm]
|
||||
{ \huge \bfseries Alcolica}
|
||||
|
||||
\rule{\linewidth}{0.5mm} \\[1.5cm]
|
||||
\end{center}
|
||||
|
||||
\end{titlepage}
|
||||
|
||||
\pagenumbering{Roman}
|
||||
|
||||
\tableofcontents
|
||||
|
||||
\newpage
|
||||
|
||||
\songs
|
||||
|
||||
\end{document}
|
@ -2,17 +2,18 @@ local err, warn, info, log = luatexbase.provides_module({
|
||||
name = "lyluatex",
|
||||
version = '0',
|
||||
greinternalversion = internalversion,
|
||||
date = "2016/09/08",
|
||||
date = "2017/09/30",
|
||||
description = "Module lyluatex.",
|
||||
author = "The Gregorio Project (see CONTRIBUTORS.md)",
|
||||
copyright = "2008-2016 - The Gregorio Project",
|
||||
copyright = "2008-2017 - The Gregorio Project",
|
||||
license = "MIT",
|
||||
})
|
||||
|
||||
local md5 = require 'md5'
|
||||
|
||||
|
||||
LILYPOND = 'lilypond'
|
||||
TMP = (os.getenv('TMP_LY') and os.getenv('TMP_LY') or 'tmp_ly')
|
||||
TMP = 'tmp_ly'
|
||||
N = 0
|
||||
|
||||
|
||||
@ -42,7 +43,8 @@ end
|
||||
function direct_ly(ly, largeur, facteur)
|
||||
N = N + 1
|
||||
facteur = calcul_facteur(facteur)
|
||||
ly = ly:gsub('\\par ', '\n')
|
||||
ly = ly:gsub('\\par ', '\n'):gsub('\\([^%s]*) %-([^%s])', '\\%1-%2')
|
||||
print(ly)
|
||||
local sortie = TMP..'/'..string.gsub(md5.sumhexa(contenuIntegral(ly))..'-'..facteur..'-'..largeur, '%.', '-')
|
||||
if not lfs.isfile(sortie..'-systems.tex') then
|
||||
compiler_ly(entete_lilypond(facteur, largeur - 10)..'\n'..ly, sortie)
|
||||
@ -75,7 +77,7 @@ function compiler_ly(ly, sortie, include)
|
||||
"-dbackend=eps "..
|
||||
"-djob-count=2 "..
|
||||
"-ddelete-intermediate-files "
|
||||
if include then commande = commande.."-I "..lfs.currentdir()..'/'..include.." " end
|
||||
if include then commande = commande.."-I '"..lfs.currentdir().."/"..include.."' " end
|
||||
commande = commande.."-o "..sortie.." -"
|
||||
local p = io.popen(commande, 'w')
|
||||
p:write(ly)
|
||||
@ -181,4 +183,5 @@ function fontinfo(id)
|
||||
return font.fonts[id]
|
||||
end
|
||||
|
||||
|
||||
mkdirs(TMP)
|
@ -61,7 +61,7 @@
|
||||
\newkeyenvironment{ly}[staffsize=\staffsize][autres]{%
|
||||
\def\localstaffsize{\commandkey{staffsize}}%
|
||||
\compilerly%
|
||||
}{
|
||||
}{%
|
||||
\endcompilerly%
|
||||
}
|
||||
|
22
src/song.tex
Normal file
22
src/song.tex
Normal file
@ -0,0 +1,22 @@
|
||||
% !Mode:: "TeX:UTF-8"
|
||||
|
||||
\documentclass[fontsize=9pt, a4paper, openany]{article}
|
||||
\usepackage{fontspec}
|
||||
\usepackage{lmodern}
|
||||
\usepackage{tgschola}
|
||||
\usepackage[unicode]{hyperref}
|
||||
\usepackage{lyluatex}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\pagenumbering{gobble}
|
||||
|
||||
\directlua{
|
||||
tex.sprint("\string\\includely[staffsize=14]{" .. arg[5] .. "}")
|
||||
}
|
||||
~\\
|
||||
\directlua{
|
||||
tex.sprint("\string\\input{" .. arg[6] .. "}")
|
||||
}
|
||||
|
||||
\end{document}
|
30
src/songs.lua
Normal file
30
src/songs.lua
Normal file
@ -0,0 +1,30 @@
|
||||
require "lfs"
|
||||
|
||||
local open = io.open
|
||||
|
||||
local function read_file(path)
|
||||
local file = open(path, "rb") -- r read mode and b binary mode
|
||||
if not file then return nil end
|
||||
local content = file:read "*a" -- *a or *all reads the whole file
|
||||
file:close()
|
||||
return content
|
||||
end
|
||||
|
||||
function string.ends(String,End)
|
||||
return End=='' or string.sub(String,-string.len(End))==End
|
||||
end
|
||||
|
||||
function find_songs(dir)
|
||||
for file in lfs.dir(dir) do
|
||||
if string.ends(file, ".ly") then
|
||||
local ly_content = read_file(dir .. '/' .. file)
|
||||
local ly_title = string.match(ly_content, 'title = "(.-)"')
|
||||
|
||||
tex.sprint('\\unchapter{' .. ly_title .. '}')
|
||||
tex.sprint('\\includely[staffsize=14]{' .. dir .. '/' .. file .. '}')
|
||||
tex.sprint('~\\\\')
|
||||
tex.sprint('~\\\\')
|
||||
tex.sprint('\\input{' .. dir .. '/' .. file:gsub("%.ly", ".tex") .. '}')
|
||||
end
|
||||
end
|
||||
end
|
19
src/songs.sty
Normal file
19
src/songs.sty
Normal file
@ -0,0 +1,19 @@
|
||||
\ProvidesPackage{songs}
|
||||
|
||||
\RequirePackage{luatexbase}
|
||||
\RequirePackage{luaotfload}
|
||||
\RequirePackage{kvoptions}
|
||||
\RequirePackage{keycommand}
|
||||
\RequirePackage{currfile}
|
||||
\directlua{dofile(kpse.find_file("songs.lua"))}
|
||||
|
||||
\def\songpath{"./songs"}
|
||||
|
||||
% Commandes principales
|
||||
% Inclusion d'un fichier ly
|
||||
\newkeycommand*\songs[songpath=\songpath]{%
|
||||
\directlua{%
|
||||
find_songs(\songpath)%
|
||||
}%
|
||||
}
|
||||
|
@ -67,17 +67,6 @@ verseOne = \lyricmode {
|
||||
}
|
||||
|
||||
\book {
|
||||
\bookOutputName "bierlein_rinn_score"
|
||||
\score {
|
||||
<<
|
||||
\new Voice = "one" {
|
||||
\musicOne
|
||||
}
|
||||
>>
|
||||
\layout {
|
||||
}
|
||||
}
|
||||
|
||||
\score {
|
||||
\unfoldRepeats \articulate
|
||||
<<
|
@ -33,7 +33,7 @@ musicOne = \relative f' {
|
||||
|
||||
verseOne = \lyricmode {
|
||||
Hier sind wir ver -- sam -- melt zu |
|
||||
löb -- li -- chem Run, drum, |
|
||||
löb -- li -- chem Tun, drum, |
|
||||
Brü -- der -- chen, er -- go bi -- |
|
||||
ba -- mus! (Das) |
|
||||
heisst noch ein altes, ein |
|
||||
@ -75,17 +75,6 @@ verseOneRepeat = \lyricmode {
|
||||
}
|
||||
|
||||
\book {
|
||||
\bookOutputName "ergo_bibamus_score"
|
||||
\score {
|
||||
<<
|
||||
\new Voice = "one" {
|
||||
\musicOne
|
||||
}
|
||||
>>
|
||||
\layout {
|
||||
}
|
||||
}
|
||||
|
||||
\score {
|
||||
\unfoldRepeats \articulate
|
||||
<<
|
@ -57,17 +57,6 @@ verseOne = \lyricmode {
|
||||
}
|
||||
|
||||
\book {
|
||||
\bookOutputName "gaudeamus_igitur_score"
|
||||
\score {
|
||||
<<
|
||||
\new Voice = "one" {
|
||||
\musicOne
|
||||
}
|
||||
>>
|
||||
\layout {
|
||||
}
|
||||
}
|
||||
|
||||
\score {
|
||||
\unfoldRepeats \articulate
|
||||
<<
|
@ -57,17 +57,6 @@ verseOne = \lyricmode {
|
||||
}
|
||||
|
||||
\book {
|
||||
\bookOutputName "in_jedem_vollen_glase_wein_score"
|
||||
\score {
|
||||
<<
|
||||
\new Voice = "one" {
|
||||
\musicOne
|
||||
}
|
||||
>>
|
||||
\layout {
|
||||
}
|
||||
}
|
||||
|
||||
\score {
|
||||
\unfoldRepeats \articulate
|
||||
<<
|
@ -63,17 +63,6 @@ verseOne = \lyricmode {
|
||||
}
|
||||
|
||||
\book {
|
||||
\bookOutputName "lindenwirtin_score"
|
||||
\score {
|
||||
<<
|
||||
\new Voice = "one" {
|
||||
\musicOne
|
||||
}
|
||||
>>
|
||||
\layout {
|
||||
}
|
||||
}
|
||||
|
||||
\score {
|
||||
\unfoldRepeats \articulate
|
||||
<<
|
@ -66,17 +66,6 @@ verseOne = \lyricmode {
|
||||
}
|
||||
|
||||
\book {
|
||||
\bookOutputName "viel_volle_becher_score"
|
||||
\score {
|
||||
<<
|
||||
\new Voice = "one" {
|
||||
\musicOne
|
||||
}
|
||||
>>
|
||||
\layout {
|
||||
}
|
||||
}
|
||||
|
||||
\score {
|
||||
\unfoldRepeats \articulate
|
||||
<<
|
1
src/templates/kommersbuch.aux
Normal file
1
src/templates/kommersbuch.aux
Normal file
@ -0,0 +1 @@
|
||||
\relax
|
20
src/templates/kommersbuch.fdb_latexmk
Normal file
20
src/templates/kommersbuch.fdb_latexmk
Normal file
@ -0,0 +1,20 @@
|
||||
# Fdb version 3
|
||||
["pdflatex"] 1509718845 "/Users/sebastianhugentobler/Documents/workspace/kommersbuch/src/templates/kommersbuch.j2" "kommersbuch.pdf" "kommersbuch" 1509718845
|
||||
"/Users/sebastianhugentobler/Documents/workspace/kommersbuch/src/templates/kommersbuch.j2" 1509716660 1691 f5909bb2d078cf0c32c064bc3562d216 ""
|
||||
"/opt/local/etc/texmf/texmf.cnf" 1498210216 30504 ca4c9cc71f3515cad4981dfa185b811b ""
|
||||
"/opt/local/share/texmf-texlive/tex/generic/unicode-data/CaseFolding.txt" 1493155083 78161 e3fbf2f626f10070000fe66f3a2ff5ef ""
|
||||
"/opt/local/share/texmf-texlive/tex/generic/unicode-data/SpecialCasing.txt" 1493155083 16830 fea30f45a2f81ffa474fd984d297e2ea ""
|
||||
"/opt/local/share/texmf-texlive/tex/generic/unicode-data/UnicodeData.txt" 1493155083 1686443 dde25b1cf9bbb4ba1140ac12e4128b0b ""
|
||||
"/opt/local/share/texmf-texlive/tex/latex/base/article.cls" 1467165121 19821 310da678527a7dfe2a02c88af38079b7 ""
|
||||
"/opt/local/share/texmf-texlive/tex/latex/base/size10.clo" 1467165122 8292 e897c12e1e886ce77fe26afc5d470886 ""
|
||||
"/opt/local/share/texmf-texlive/tex/latex/fontspec/fontspec.sty" 1493155085 1704 f155bd31324526584df93d8880629e82 ""
|
||||
"/opt/local/share/texmf-texlive/tex/latex/l3kernel/expl3-code.tex" 1496799555 689208 a4a1f960caacd72906628f3f1a2e3b4c ""
|
||||
"/opt/local/share/texmf-texlive/tex/latex/l3kernel/expl3.sty" 1496799555 9344 31607e39934aa760394a75d15a0594e0 ""
|
||||
"/opt/local/share/texmf-texlive/tex/latex/l3kernel/l3pdfmode.def" 1496799555 10255 ae20359c06d3acc750024781d0520fe6 ""
|
||||
"/opt/local/share/texmf-texlive/tex/latex/l3packages/xparse/xparse.sty" 1496799555 76757 9db3143638eba1ea8405900fbbcff235 ""
|
||||
"/opt/local/var/db/texmf/web2c/pdftex/pdflatex.fmt" 1498210795 3768257 ca4ae9b50676c7797795cbaf354884e6 ""
|
||||
"kommersbuch.aux" 1509718845 8 a94a2480d3289e625eea47cd1b285758 ""
|
||||
"kommersbuch.j2" 1509716660 1691 f5909bb2d078cf0c32c064bc3562d216 ""
|
||||
(generated)
|
||||
"kommersbuch.log"
|
||||
"kommersbuch.pdf"
|
22
src/templates/kommersbuch.fls
Normal file
22
src/templates/kommersbuch.fls
Normal file
@ -0,0 +1,22 @@
|
||||
PWD /Users/sebastianhugentobler/Documents/workspace/kommersbuch/src/templates
|
||||
INPUT /opt/local/etc/texmf/texmf.cnf
|
||||
INPUT /opt/local/var/db/texmf/web2c/pdftex/pdflatex.fmt
|
||||
INPUT /Users/sebastianhugentobler/Documents/workspace/kommersbuch/src/templates/kommersbuch.j2
|
||||
OUTPUT kommersbuch.log
|
||||
INPUT /opt/local/share/texmf-texlive/tex/latex/base/article.cls
|
||||
INPUT /opt/local/share/texmf-texlive/tex/latex/base/article.cls
|
||||
INPUT /opt/local/share/texmf-texlive/tex/latex/base/size10.clo
|
||||
INPUT /opt/local/share/texmf-texlive/tex/latex/base/size10.clo
|
||||
INPUT /opt/local/share/texmf-texlive/tex/latex/fontspec/fontspec.sty
|
||||
INPUT /opt/local/share/texmf-texlive/tex/latex/fontspec/fontspec.sty
|
||||
INPUT /opt/local/share/texmf-texlive/tex/latex/l3kernel/expl3.sty
|
||||
INPUT /opt/local/share/texmf-texlive/tex/latex/l3kernel/expl3.sty
|
||||
INPUT /opt/local/share/texmf-texlive/tex/latex/l3kernel/expl3-code.tex
|
||||
INPUT /opt/local/share/texmf-texlive/tex/latex/l3kernel/expl3-code.tex
|
||||
INPUT /opt/local/share/texmf-texlive/tex/generic/unicode-data/UnicodeData.txt
|
||||
INPUT /opt/local/share/texmf-texlive/tex/generic/unicode-data/CaseFolding.txt
|
||||
INPUT /opt/local/share/texmf-texlive/tex/generic/unicode-data/SpecialCasing.txt
|
||||
INPUT /opt/local/share/texmf-texlive/tex/latex/l3kernel/l3pdfmode.def
|
||||
INPUT /opt/local/share/texmf-texlive/tex/latex/l3kernel/l3pdfmode.def
|
||||
INPUT /opt/local/share/texmf-texlive/tex/latex/l3packages/xparse/xparse.sty
|
||||
INPUT /opt/local/share/texmf-texlive/tex/latex/l3packages/xparse/xparse.sty
|
@ -1,6 +1,6 @@
|
||||
% !Mode:: "TeX:UTF-8"
|
||||
|
||||
\documentclass[9pt, a5paper, openany]{scrbook}
|
||||
\documentclass[9pt, a4paper, openany]{article}
|
||||
|
||||
\usepackage{fontspec}
|
||||
\usepackage{lmodern}
|
182
src/templates/kommersbuch.log
Normal file
182
src/templates/kommersbuch.log
Normal file
@ -0,0 +1,182 @@
|
||||
This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/MacPorts 2017_2) (preloaded format=pdflatex 2017.6.23) 3 NOV 2017 15:20
|
||||
entering extended mode
|
||||
restricted \write18 enabled.
|
||||
file:line:error style messages enabled.
|
||||
%&-line parsing enabled.
|
||||
**/Users/sebastianhugentobler/Documents/workspace/kommersbuch/src/templates/kom
|
||||
mersbuch.j2
|
||||
|
||||
(/Users/sebastianhugentobler/Documents/workspace/kommersbuch/src/templates/komm
|
||||
ersbuch.j2
|
||||
LaTeX2e <2017-04-15>
|
||||
Babel <3.10> and hyphenation patterns for 55 language(s) loaded.
|
||||
(/opt/local/share/texmf-texlive/tex/latex/base/article.cls
|
||||
Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
|
||||
(/opt/local/share/texmf-texlive/tex/latex/base/size10.clo
|
||||
File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option)
|
||||
)
|
||||
\c@part=\count79
|
||||
\c@section=\count80
|
||||
\c@subsection=\count81
|
||||
\c@subsubsection=\count82
|
||||
\c@paragraph=\count83
|
||||
\c@subparagraph=\count84
|
||||
\c@figure=\count85
|
||||
\c@table=\count86
|
||||
\abovecaptionskip=\skip41
|
||||
\belowcaptionskip=\skip42
|
||||
\bibindent=\dimen102
|
||||
)
|
||||
(/opt/local/share/texmf-texlive/tex/latex/fontspec/fontspec.sty
|
||||
(/opt/local/share/texmf-texlive/tex/latex/l3kernel/expl3.sty
|
||||
Package: expl3 2017/05/13 L3 programming layer (loader)
|
||||
|
||||
(/opt/local/share/texmf-texlive/tex/latex/l3kernel/expl3-code.tex
|
||||
Package: expl3 2017/05/13 L3 programming layer (code)
|
||||
\c_max_int=\count87
|
||||
\l_tmpa_int=\count88
|
||||
\l_tmpb_int=\count89
|
||||
\g_tmpa_int=\count90
|
||||
\g_tmpb_int=\count91
|
||||
\g__prg_map_int=\count92
|
||||
\c_log_iow=\count93
|
||||
\l_iow_line_count_int=\count94
|
||||
\l__iow_line_target_int=\count95
|
||||
\l__iow_one_indent_int=\count96
|
||||
\l__iow_indent_int=\count97
|
||||
\c_zero_dim=\dimen103
|
||||
\c_max_dim=\dimen104
|
||||
\l_tmpa_dim=\dimen105
|
||||
\l_tmpb_dim=\dimen106
|
||||
\g_tmpa_dim=\dimen107
|
||||
\g_tmpb_dim=\dimen108
|
||||
\c_zero_skip=\skip43
|
||||
\c_max_skip=\skip44
|
||||
\l_tmpa_skip=\skip45
|
||||
\l_tmpb_skip=\skip46
|
||||
\g_tmpa_skip=\skip47
|
||||
\g_tmpb_skip=\skip48
|
||||
\c_zero_muskip=\muskip10
|
||||
\c_max_muskip=\muskip11
|
||||
\l_tmpa_muskip=\muskip12
|
||||
\l_tmpb_muskip=\muskip13
|
||||
\g_tmpa_muskip=\muskip14
|
||||
\g_tmpb_muskip=\muskip15
|
||||
\l_keys_choice_int=\count98
|
||||
\c__fp_leading_shift_int=\count99
|
||||
\c__fp_middle_shift_int=\count100
|
||||
\c__fp_trailing_shift_int=\count101
|
||||
\c__fp_big_leading_shift_int=\count102
|
||||
\c__fp_big_middle_shift_int=\count103
|
||||
\c__fp_big_trailing_shift_int=\count104
|
||||
\c__fp_Bigg_leading_shift_int=\count105
|
||||
\c__fp_Bigg_middle_shift_int=\count106
|
||||
\c__fp_Bigg_trailing_shift_int=\count107
|
||||
\c__fp_rand_size_int=\count108
|
||||
\c__fp_rand_four_int=\count109
|
||||
\c__fp_rand_eight_int=\count110
|
||||
\l__sort_length_int=\count111
|
||||
\l__sort_min_int=\count112
|
||||
\l__sort_top_int=\count113
|
||||
\l__sort_max_int=\count114
|
||||
\l__sort_true_max_int=\count115
|
||||
\l__sort_block_int=\count116
|
||||
\l__sort_begin_int=\count117
|
||||
\l__sort_end_int=\count118
|
||||
\l__sort_A_int=\count119
|
||||
\l__sort_B_int=\count120
|
||||
\l__sort_C_int=\count121
|
||||
\c_empty_box=\box26
|
||||
\l_tmpa_box=\box27
|
||||
\l_tmpb_box=\box28
|
||||
\g_tmpa_box=\box29
|
||||
\g_tmpb_box=\box30
|
||||
\l__box_top_dim=\dimen109
|
||||
\l__box_bottom_dim=\dimen110
|
||||
\l__box_left_dim=\dimen111
|
||||
\l__box_right_dim=\dimen112
|
||||
\l__box_top_new_dim=\dimen113
|
||||
\l__box_bottom_new_dim=\dimen114
|
||||
\l__box_left_new_dim=\dimen115
|
||||
\l__box_right_new_dim=\dimen116
|
||||
\l__box_internal_box=\box31
|
||||
\l__coffin_internal_box=\box32
|
||||
\l__coffin_internal_dim=\dimen117
|
||||
\l__coffin_offset_x_dim=\dimen118
|
||||
\l__coffin_offset_y_dim=\dimen119
|
||||
\l__coffin_x_dim=\dimen120
|
||||
\l__coffin_y_dim=\dimen121
|
||||
\l__coffin_x_prime_dim=\dimen122
|
||||
\l__coffin_y_prime_dim=\dimen123
|
||||
\c_empty_coffin=\box33
|
||||
\l__coffin_aligned_coffin=\box34
|
||||
\l__coffin_aligned_internal_coffin=\box35
|
||||
\l_tmpa_coffin=\box36
|
||||
\l_tmpb_coffin=\box37
|
||||
\l__coffin_display_coffin=\box38
|
||||
\l__coffin_display_coord_coffin=\box39
|
||||
\l__coffin_display_pole_coffin=\box40
|
||||
\l__coffin_display_offset_dim=\dimen124
|
||||
\l__coffin_display_x_dim=\dimen125
|
||||
\l__coffin_display_y_dim=\dimen126
|
||||
\l__coffin_bounding_shift_dim=\dimen127
|
||||
\l__coffin_left_corner_dim=\dimen128
|
||||
\l__coffin_right_corner_dim=\dimen129
|
||||
\l__coffin_bottom_corner_dim=\dimen130
|
||||
\l__coffin_top_corner_dim=\dimen131
|
||||
\l__coffin_scaled_total_height_dim=\dimen132
|
||||
\l__coffin_scaled_width_dim=\dimen133
|
||||
)
|
||||
(/opt/local/share/texmf-texlive/tex/latex/l3kernel/l3pdfmode.def
|
||||
File: l3pdfmode.def 2017/03/18 v L3 Experimental driver: PDF mode
|
||||
\l__driver_color_stack_int=\count122
|
||||
\l__driver_tmp_box=\box41
|
||||
))
|
||||
(/opt/local/share/texmf-texlive/tex/latex/l3packages/xparse/xparse.sty
|
||||
Package: xparse 2017/05/13 L3 Experimental document command parser
|
||||
\l__xparse_current_arg_int=\count123
|
||||
\g__xparse_grabber_int=\count124
|
||||
\l__xparse_m_args_int=\count125
|
||||
\l__xparse_mandatory_args_int=\count126
|
||||
\l__xparse_v_nesting_int=\count127
|
||||
)
|
||||
Package: fontspec 2017/03/31 v2.6a Font selection for XeLaTeX and LuaLaTeX
|
||||
|
||||
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
!
|
||||
/opt/local/share/texmf-texlive/tex/latex/fontspec/fontspec.sty:28: Fatal fontsp
|
||||
ec error: "cannot-use-pdftex"
|
||||
!
|
||||
! The fontspec package requires either XeTeX or LuaTeX.
|
||||
!
|
||||
! You must change your typesetting engine to, e.g., "xelatex" or
|
||||
! "lualatex"instead of plain "latex" or "pdflatex".
|
||||
!
|
||||
! See the fontspec documentation for further information.
|
||||
!
|
||||
! For immediate help type H <return>.
|
||||
!...............................................
|
||||
|
||||
l.28 \msg_fatal:nn {fontspec} {cannot-use-pdftex}
|
||||
|
||||
|'''''''''''''''''''''''''''''''''''''''''''''''
|
||||
| This is a fatal error: LaTeX will abort.
|
||||
|...............................................
|
||||
|
||||
) )
|
||||
Here is how much of TeX's memory you used:
|
||||
7521 strings out of 493588
|
||||
152856 string characters out of 6147356
|
||||
171207 words of memory out of 5000000
|
||||
10980 multiletter control sequences out of 15000+600000
|
||||
3640 words of font info for 14 fonts, out of 8000000 for 9000
|
||||
846 hyphenation exceptions out of 8191
|
||||
33i,1n,32p,10444b,275s stack positions out of 5000i,500n,10000p,200000b,80000s
|
||||
|
||||
No pages of output.
|
||||
PDF statistics:
|
||||
0 PDF objects out of 1000 (max. 8388607)
|
||||
0 named destinations out of 1000 (max. 500000)
|
||||
1 words of extra memory for PDF output out of 10000 (max. 10000000)
|
||||
|
178
wscript
178
wscript
@ -1,178 +0,0 @@
|
||||
#! /usr/bin/env python
|
||||
# encoding: utf-8
|
||||
|
||||
import os
|
||||
import re
|
||||
|
||||
from functools import reduce
|
||||
from waflib import TaskGen
|
||||
|
||||
APPNAME = 'kommersbuch'
|
||||
VERSION = '1.0'
|
||||
|
||||
top = '.'
|
||||
out = 'build'
|
||||
src = 'src'
|
||||
lib = 'lib'
|
||||
src_scores = os.path.join(src, 'scores')
|
||||
src_lyrics = os.path.join(src, 'lyrics')
|
||||
built_lyrics_path = os.path.abspath(os.path.join(out, src, 'lyrics'))
|
||||
built_scores_path = os.path.abspath(os.path.join(out, src, 'scores'))
|
||||
templater_path = os.path.abspath(os.path.join(src, 'tools/templater.py'))
|
||||
score_lyrics_template_path = os.path.abspath(
|
||||
os.path.join(src, 'templates', 'score_lyrics.j2'))
|
||||
book_template_path = os.path.abspath(
|
||||
os.path.join(src, 'templates', 'book.j2'))
|
||||
|
||||
|
||||
def dist(ctx):
|
||||
ctx.excl = '**/.waf* **/*~ **/*.pyc **/*.swp **/.lock* out pdf midi music .git .DS_Store'
|
||||
|
||||
|
||||
def configure(ctx):
|
||||
ctx.find_program('lualatex', var='LUALATEX')
|
||||
ctx.find_program('lilypond', var='LILYPOND')
|
||||
ctx.find_program('timidity', var='TIMIDITY')
|
||||
ctx.find_program('opusenc', var='OPUSENC')
|
||||
|
||||
|
||||
def pre(ctx):
|
||||
os.system('mkdir -p {1} && cp -r {0}/* {1}'.format(lib, built_lyrics_path))
|
||||
|
||||
TaskGen.declare_chain(
|
||||
name='opus',
|
||||
rule='${TIMIDITY} ${SRC} -Ow -o - | ${OPUSENC} - ${TGT}',
|
||||
ext_in='.midi',
|
||||
ext_out='.opus',
|
||||
shell=True)
|
||||
|
||||
|
||||
def build(ctx):
|
||||
ctx.add_pre_fun(pre)
|
||||
|
||||
ctx.add_group('lilypond')
|
||||
ctx.add_group('opus')
|
||||
ctx.add_group('book')
|
||||
|
||||
lilypond_rule = '${LILYPOND} -o ${TGT[0].abspath().replace(".pdf", "")} ${SRC}'
|
||||
lyrics_template_rule = templater_path + ' ' + \
|
||||
score_lyrics_template_path + ' "{0}" > ${{TGT}}'
|
||||
book_template_rule = templater_path + ' ' + \
|
||||
book_template_path + ' "{0}" > ${{TGT}}'
|
||||
lyrics_combined_rule = 'cd ' + built_lyrics_path + \
|
||||
' && ${LUALATEX} --shell-escape '
|
||||
|
||||
scoredata = []
|
||||
scores = ctx.path.ant_glob(src_scores + '/*.ly')
|
||||
for score in scores:
|
||||
filename = os.path.basename(score.abspath())
|
||||
|
||||
lyricsfile = os.path.join(src_lyrics, filename.replace('.ly', '.tex'))
|
||||
lilyfile = filename.replace('.ly', '.pdf')
|
||||
lily_score_file = '{0}_score.pdf'.format(
|
||||
lilyfile.replace('.pdf', ''))
|
||||
lily_midi_file = lilyfile.replace('.pdf', '_score.midi')
|
||||
target_files = '{0} {1} {2}'.format(
|
||||
os.path.join(src_scores, lilyfile),
|
||||
os.path.join(src_scores, lily_score_file),
|
||||
os.path.join(src_scores, lily_midi_file))
|
||||
|
||||
score_content = ''
|
||||
with open(score.abspath(), 'r') as f:
|
||||
score_content = f.read()
|
||||
|
||||
matches = re.findall('title = "(.*)"', score_content)
|
||||
score_title = matches[0]
|
||||
|
||||
scoredata.append(
|
||||
{'title': score_title,
|
||||
'score': score.abspath(),
|
||||
'lyrics': os.path.abspath(lyricsfile)})
|
||||
|
||||
ctx.set_group('lilypond')
|
||||
|
||||
# score without lyrics & midi
|
||||
|
||||
ctx(
|
||||
rule=lilypond_rule,
|
||||
source=score,
|
||||
target=target_files,
|
||||
shell=True
|
||||
)
|
||||
|
||||
# score with lyrics
|
||||
|
||||
template_data = {
|
||||
'score_file': score.abspath(),
|
||||
'lyrics_file': os.path.abspath(lyricsfile)
|
||||
}
|
||||
|
||||
lyrics_rule = lyrics_template_rule.format(str(template_data))
|
||||
built_lyricsfile = os.path.join(
|
||||
src_lyrics,
|
||||
filename.replace('.ly', '_built.tex'))
|
||||
|
||||
ctx(
|
||||
rule=lyrics_rule,
|
||||
source=lyricsfile,
|
||||
target=built_lyricsfile,
|
||||
shell=True
|
||||
)
|
||||
|
||||
final_lyrics_path = os.path.join(
|
||||
built_scores_path, filename.replace('.ly', '_lyrics.pdf'))
|
||||
|
||||
lyrics_combined_rule_final = lyrics_combined_rule + \
|
||||
filename.replace('.ly', '_built.tex') + \
|
||||
' && cp ' + filename.replace('.ly', '_built.pdf') + \
|
||||
' ' + final_lyrics_path
|
||||
|
||||
ctx(
|
||||
rule=lyrics_combined_rule_final,
|
||||
source=score.relpath() + ' ' + built_lyricsfile,
|
||||
target=os.path.join(
|
||||
src_scores, filename.replace('.ly', '_lyrics.pdf')),
|
||||
shell=True
|
||||
)
|
||||
|
||||
# opus
|
||||
|
||||
ctx.set_group('opus')
|
||||
ctx(source=os.path.join(src_scores, lily_midi_file))
|
||||
|
||||
# booklet
|
||||
|
||||
template_data = {
|
||||
'scores': scoredata,
|
||||
}
|
||||
|
||||
book_rule = book_template_rule.format(str(template_data))
|
||||
built_bookfile = os.path.join(src_lyrics, 'book.tex')
|
||||
|
||||
ctx.set_group('book')
|
||||
ctx(
|
||||
rule=book_rule,
|
||||
source=os.path.relpath(book_template_path),
|
||||
target=built_bookfile,
|
||||
shell=True
|
||||
)
|
||||
|
||||
final_book_path = os.path.join(built_scores_path, 'book.pdf')
|
||||
book_combined_rule_final = lyrics_combined_rule + \
|
||||
'book.tex' + \
|
||||
' && cp book.pdf' + \
|
||||
' ' + final_book_path
|
||||
|
||||
book_sources = os.path.relpath(book_template_path)
|
||||
for score in scoredata:
|
||||
book_sources = '{0} {1} {2}'.format(
|
||||
book_sources,
|
||||
os.path.relpath(score['score']),
|
||||
os.path.relpath(score['lyrics']))
|
||||
|
||||
ctx(
|
||||
rule='{0} && {0}'.format(book_combined_rule_final),
|
||||
source=book_sources,
|
||||
target=os.path.join(src_scores, 'book.pdf'),
|
||||
shell=True
|
||||
)
|
Loading…
Reference in New Issue
Block a user