summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2023-09-05 20:05:54 +0000
committerKarl Berry <karl@freefriends.org>2023-09-05 20:05:54 +0000
commit1cd2a368d88ead401759589ff913bad3e1507e0a (patch)
tree02ba093e5890f662722357b17361a6e28d925826 /Master/texmf-dist/doc/latex
parente5ae57ce1defb65931a4dbe4a43b9f15a3440ab5 (diff)
photobook (5sep23)
git-svn-id: svn://tug.org/texlive/trunk@68182 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/latex')
-rw-r--r--Master/texmf-dist/doc/latex/photobook/photobook.pdfbin144364 -> 144593 bytes
-rw-r--r--Master/texmf-dist/doc/latex/photobook/scripts/README.md8
-rw-r--r--Master/texmf-dist/doc/latex/photobook/scripts/make-spreads.sh77
3 files changed, 64 insertions, 21 deletions
diff --git a/Master/texmf-dist/doc/latex/photobook/photobook.pdf b/Master/texmf-dist/doc/latex/photobook/photobook.pdf
index 953e58eace1..a51b6c384d6 100644
--- a/Master/texmf-dist/doc/latex/photobook/photobook.pdf
+++ b/Master/texmf-dist/doc/latex/photobook/photobook.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/photobook/scripts/README.md b/Master/texmf-dist/doc/latex/photobook/scripts/README.md
index 7befc142281..9ed47398846 100644
--- a/Master/texmf-dist/doc/latex/photobook/scripts/README.md
+++ b/Master/texmf-dist/doc/latex/photobook/scripts/README.md
@@ -137,7 +137,7 @@ or multiples, ...etc.? At this stage this is about the presentation,
the flow of the work and not about the actual design. How many typical
spreads (i.e. spread templates) should it have? A good number should be
small-ish, for example 3-4 spread templates is a good number, if you
-count 10+ then you might be overcomplicating tings, but note, there are
+count 10+ then you might be overcomplicating things, but note, there are
no rules, a book where each spread is individually and manually layed out
may work as well as a book with just a single template spread, but in
general for a photo book the focus is on the project and the layout
@@ -344,6 +344,8 @@ IMAGE_FORMATS=jpeg|jpg|png|pdf|svg|eps
SPREADS_DIR=spreads/
# if non-empty link link images to matching ones from this directory...
+# NOTE: this is ignored if --graphicx-path is passed or GRAPHICX_PATH
+# is set.
IMAGE_HIRES_DIR=
# directory where external captions are stored...
@@ -370,6 +372,10 @@ IMAGE_SPREAD=(
[0]=text-spread
[2]=image-image
)
+
+# if set (or --graphicx-path is passed) the images are identified by their
+# basename so as to let graphicx package resolve the paths internally.
+GRAPHICX_PATH=1
```
An explicit configuration file can be manually specified:
diff --git a/Master/texmf-dist/doc/latex/photobook/scripts/make-spreads.sh b/Master/texmf-dist/doc/latex/photobook/scripts/make-spreads.sh
index 41dae4ec270..4f8b30db2a5 100644
--- a/Master/texmf-dist/doc/latex/photobook/scripts/make-spreads.sh
+++ b/Master/texmf-dist/doc/latex/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 $?