diff options
author | Karl Berry <karl@freefriends.org> | 2023-09-05 20:05:54 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2023-09-05 20:05:54 +0000 |
commit | 1cd2a368d88ead401759589ff913bad3e1507e0a (patch) | |
tree | 02ba093e5890f662722357b17361a6e28d925826 /Master/texmf-dist/doc/latex | |
parent | e5ae57ce1defb65931a4dbe4a43b9f15a3440ab5 (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.pdf | bin | 144364 -> 144593 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/photobook/scripts/README.md | 8 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/photobook/scripts/make-spreads.sh | 77 |
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 Binary files differindex 953e58eace1..a51b6c384d6 100644 --- a/Master/texmf-dist/doc/latex/photobook/photobook.pdf +++ b/Master/texmf-dist/doc/latex/photobook/photobook.pdf 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 $? |