summaryrefslogtreecommitdiff
path: root/Master
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
parente5ae57ce1defb65931a4dbe4a43b9f15a3440ab5 (diff)
photobook (5sep23)
git-svn-id: svn://tug.org/texlive/trunk@68182 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-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
-rw-r--r--Master/texmf-dist/tex/latex/photobook/photobook.cls30
4 files changed, 83 insertions, 32 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 $?
diff --git a/Master/texmf-dist/tex/latex/photobook/photobook.cls b/Master/texmf-dist/tex/latex/photobook/photobook.cls
index 899a4880698..54b7d1f0b35 100644
--- a/Master/texmf-dist/tex/latex/photobook/photobook.cls
+++ b/Master/texmf-dist/tex/latex/photobook/photobook.cls
@@ -93,7 +93,7 @@
%%% NOTE: \def\<module-name>@[A-Z]+ macros will be visible to both the
%%% code and the generated docs...
-\edef\photobook@FILEVERSION{v0.1.25}
+\edef\photobook@FILEVERSION{v0.1.26}
\edef\photobook@FILEDATE{2023-08-24}
@@ -2046,7 +2046,7 @@
\setlength\photobook@cliptocell@right{0mm}%
\newlength\photobook@cliptocell@bottom
\setlength\photobook@cliptocell@bottom{0mm}%
-\def\cliptocellclearances{0mm 0mm 0mm 0mm}%
+\def\cliptocellclearances{{0mm} {0mm} {0mm} {0mm}}%
%% Set the default bleeds for |cliptocell| environments
%%
@@ -2061,9 +2061,8 @@
%%%
%%% Set by |\cliptocellbleeds{..}| and contains clearances (negative
%%% clipping bleeds) usable by imagecell.
-%
-% XXX BUG: bleeds is set correctly for one value but 2 and 4 seem to be
-% misbehaving (see: ./examples/endpaper.tex)
+%%%
+%%% XXX still testing....
\newcommand\cliptocellbleeds[1]{
\setsepchar{ }%
\readlist*\photobook@cliptocell@bleeds{#1}%
@@ -2099,12 +2098,15 @@
\setlength\photobook@cliptocell@top{%
\photobook@cliptocell@bleeds[4]}\fi%
% NOTE: trailing spaces here are significant...
+ % XXX should we use \the here?
+ % ...it makes things printable...
\def\cliptocellclearances{%
- {-\photobook@cliptocell@left} %
- {-\photobook@cliptocell@bottom} %
- {-\photobook@cliptocell@right} %
- {-\photobook@cliptocell@top}}}
+ {-\the\photobook@cliptocell@left} %
+ {-\the\photobook@cliptocell@bottom} %
+ {-\the\photobook@cliptocell@right} %
+ {-\the\photobook@cliptocell@top}}}
+% XXX use \cliptocellclearances as default...
\newenvironment{cliptocell}[1][0mm]{%
\begingroup%
\cliptocellbleeds{#1}
@@ -4270,10 +4272,16 @@
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
%%%%% Basic book information
-%% \DescribeMacro{BookType=<text>}
-\def\BookType{book}
% XXX Document metadata -- move to globals...
% XXX Use LaTeX generic metadata...
+%% \DescribeMacro{BookType=<text>}
+%
+%% Used in page macro text to indicate the type of document built, by default
+%% this is set to |book| for the most common case but can be set to anything
+%% (e.g. |brochure|, |magazine|, |presentation|, ...etc.)
+%%
+\def\BookType{book}
+
%% \DescribeMacro{BookTitle=<text>}
\def\BookTitle{}
%% \DescribeMacro{BookVersion=<text>}