summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/photobook/scripts/make-spreads.sh
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/photobook/scripts/make-spreads.sh')
-rw-r--r--macros/latex/contrib/photobook/scripts/make-spreads.sh77
1 files changed, 57 insertions, 20 deletions
diff --git a/macros/latex/contrib/photobook/scripts/make-spreads.sh b/macros/latex/contrib/photobook/scripts/make-spreads.sh
index 41dae4ec27..4f8b30db2a 100644
--- a/macros/latex/contrib/photobook/scripts/make-spreads.sh
+++ b/macros/latex/contrib/photobook/scripts/make-spreads.sh
@@ -132,6 +132,9 @@ printhelp(){
echo " - text spread default template (default: ${IMAGE_SPREAD[0]})."
echo " --captions PATH"
echo " - path to search for captions (default: $CAPTION_DIR)."
+ echo " --graphicx-path"
+ echo " - reference images by their basenames and let graphicx manage"
+ echo " searching."
echo
echo "Parameters:"
echo " PATH - path to root pages directory (default: $SPREADS_DIR)"
@@ -214,6 +217,11 @@ while true ; do
shift 2
continue
;;
+ --graphicx-path)
+ GRAPHICX_PATH=1
+ shift
+ continue
+ ;;
# handle unknown options...
-*|--*)
@@ -350,6 +358,12 @@ templateSlots(){
# usage:
# populateTemplate SPREAD TEMPLATE ITEMS...
#
+# closure: $populateTemplate_img, $populateTemplate_txt
+#
+# NOTE: this is the least hacky/ugly but could not figure out a better
+# way to update a list from within a function...
+populateTemplate_img=
+populateTemplate_txt=
populateTemplate(){
local spread="$1"
local tpl="$2"
@@ -374,6 +388,16 @@ populateTemplate(){
txt+=("$elem")
fi
done
+ local global_img=
+ if ! [ -z $populateTemplate_img ] ; then
+ global_img=1
+ img=(${populateTemplate_img[@]})
+ fi
+ local global_txt=
+ if ! [ -z $populateTemplate_txt ] ; then
+ global_txt=1
+ txt=(${populateTemplate_txt[@]})
+ fi
local var
local val
@@ -412,6 +436,9 @@ populateTemplate(){
text=$(echo "${text}" | \
sed "s/\${${var}}/${val%.*}/g")
done
+ if ! [ -z $global_img ] ; then
+ populateTemplate_img=("${populateTemplate_img[@]:$i}")
+ fi
# pass 2: captions...
for var in ${slots[@]} ; do
@@ -456,6 +483,9 @@ populateTemplate(){
text=$(echo "${text}" | \
sed "s/\${${var}}/${val}/g")
done
+ if ! [ -z $global_txt ] ; then
+ populateTemplate_txt=("${txt[@]}")
+ fi
# print out the filled template...
echo % template: $tpl
@@ -468,7 +498,7 @@ populateTemplate(){
# usage:
# handleSpread SPREAD
#
-# closure: $IMAGE_HIRES_DIR, $IMAGE_SPREAD
+# closure: $GRAPHICX_PATH, $IMAGE_HIRES_DIR, $IMAGE_SPREAD
handleSpread(){
local spread="$1"
# skip non-spreads...
@@ -502,21 +532,32 @@ handleSpread(){
fi
done
+ # graphicx paths...
+ if ! [ -z $GRAPHICX_PATH ] ; then
+ local C=0
+ for image in "${img[@]}" ; do
+ local new=`basename ${image}`
+ new="${new#+([0-9])-}"
+ img[$C]=$new
+ C=$(( C + 1 ))
+ done
# get hi-res image paths...
- if ! [ -z $IMAGE_HIRES_DIR ] ; then
+ elif ! [ -z $IMAGE_HIRES_DIR ] ; then
local C=0
for image in "${img[@]}" ; do
# skip non-images...
- local new="$IMAGE_HIRES_DIR/`basename ${image/[0-9]-/}`"
+ local new=`basename ${image}`
+ new="$IMAGE_HIRES_DIR/${new#+([0-9])-}"
# ignore file ext for availability test...
# NOTE: the first match may be an unsupported format...
new="${new%.*}"
+ local target=$new
new=($new.*)
if [ -e "${new[0]}" ] ; then
img[$C]=${new[0]}
else
echo %
- echo "% WARNING: hi-res image not found for: \"${image}\" -> \"${new}\"" \
+ echo "% WARNING: hi-res image not found for: \"${image}\" -> \"${target}\"" \
| tee >(cat >&2)
echo %
fi
@@ -565,43 +606,37 @@ handleSpread(){
cat "${template}"
fi
fi
+ populateTemplate_img=("${img[@]}")
+ populateTemplate_txt=("${txt[@]}")
+
for elem in "${items[@]}" ; do
C=$(( C + 1 ))
P=$([ $C == 1 ] \
&& echo "left" \
|| echo "right")
- # XXX need to use populateTemplate here...
- # ...to do this need to somehow remove the used
- # slots/files from list...
-
# image...
if [[ "${elem,,}" =~ $IMAGE_FORMATS ]] ; then
echo %
echo "% $P page (image)..."
template=`getTemplate "$spread" "$IMAGE_PAGE"`
- echo % template: $template
- anotatePath "${elem}"
- local caption=$(getCaption "$spread" "${elem}")
- caption=$(readCaption "$caption")
- cat "${template}" \
- | sed -e "s%\${IMAGE0\?}%${elem%.*}%" \
- -e "s%\${CAPTION0\?}%${caption}%"
+ populateTemplate "$spread" "$template"
# text...
else
echo %
echo "% $P page (text)..."
template=$(getTemplate "$spread" "$TEXT_PAGE")
- echo % template: $template
- cat "${template}" \
- | sed "s%\${TEXT}%${elem}%"
+ populateTemplate "$spread" "$template"
fi
# reset for next page...
template=
# ignore the rest of the items when we are done
# creating two pages...
- [ $C == 2 ] \
- && return
+ if [ $C == 2 ] ; then
+ populateTemplate_img=
+ populateTemplate_txt=
+ return
+ fi
done
fi
fi
@@ -621,6 +656,8 @@ handleSpread(){
fi
fi
+ populateTemplate_img=
+ populateTemplate_txt=
populateTemplate "$spread" "$template" "${img[@]}" "${txt[@]}"
return $?