diff options
Diffstat (limited to 'Master/texmf-dist/doc/latex/photobook/scripts/make-images.sh')
-rw-r--r-- | Master/texmf-dist/doc/latex/photobook/scripts/make-images.sh | 450 |
1 files changed, 0 insertions, 450 deletions
diff --git a/Master/texmf-dist/doc/latex/photobook/scripts/make-images.sh b/Master/texmf-dist/doc/latex/photobook/scripts/make-images.sh deleted file mode 100644 index bfec27d9782..00000000000 --- a/Master/texmf-dist/doc/latex/photobook/scripts/make-images.sh +++ /dev/null @@ -1,450 +0,0 @@ -#!/bin/bash -shopt -s nullglob extglob - -#---------------------------------------------------------------------- -# -# Template structure: -# templates/ -# imagepage.tex -# textpage.tex -# ... -# $IMAGE_DIR/ -# $spread/ -# tweaks.tex -# template tweaks. -# loaded before the templates are handled. -# layout.tex -# manual layout of spread. -# if given rest of directory contents are -# ignored. -# fields: -# ${IMAGE0} -# ${CAPTION0} -# ${IMAGE1} -# ${CAPTION1} -# NOTE: if images are included, hi-res source -# substitution is not done here. -# <spread-template-name>.tpl -# indicates the spread template to use. -# if given the rest of the .tex files in -# directory are ignored. -# resolves to: -# templates/<spread-template-name>.tex -# fields: -# ${IMAGE0} -# ${CAPTION0} -# ${IMAGE1} -# ${CAPTION1} -# imagepage.tex -# image page template. -# fields: -# ${IMAGE} -# ${CAPTION} -# textpage.tex -# text page template. -# fields: -# ${TEXT} -# <spread-template-name>-imagepage.tpl -# <spread-template-name>-textpage.tpl -# indicates the image/text page template to use. -# ignored if explicit templates are given. -# image fields: -# ${IMAGE} -# ${CAPTION} -# text fields: -# ${TEXT} -# 00-<image>.png -# image. -# if $IMAGE_HIRES_DIR is set then this will -# resolve to: -# $IMAGE_HIRES_DIR/<image> -# XXX hi-res substitution currently disabled. -# 01-<text>.txt -# text. -# ... -# ... -# -# -# -# Env variables: -# IMAGE_HIRES_DIR=<path> -# sets the path to which the hi-res images are resolved. -# -# -# -# -# XXX TODO: -# - revise printed comments... -# - add real arg handling... -# - add abbility to apply template to a specific page in spread... -# ...something like: -# <template-name>-left.tpl -# <template-name>-right.tpl -# - add multiple images/captions... -# -# -# -#---------------------------------------------------------------------- - -# defaults... - -CFG_FILE=`basename $0`.cfg - -TEMPLATE_PATH=templates/ - -IMAGE_DIR=pages/ - -#IMAGE_HIRES_DIR= - - -# Default timplates -#SINGLE_IMAGE=blank-image -SINGLE_IMAGE=imagebleedleft -DOUBLE_IMAGE=image-image - - -# load config... -[ -e $CFG_FILE ] && source $CFG_FILE - - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -printhelp(){ - echo "Usage: `basename $0` [ARGUMENTS] [PATH]" - echo " `basename $0` [ARGUMENTS] PATH FROM [COUNT]" - echo - echo "Generate LaTeX layout from directory structure." - echo - echo "Arguments:" - echo " -h --help - print this help and exit." - echo " --templates=PATH" - echo " - path to search for templates (default: $TEMPLATE_PATH)." - echo " --single-image-tpl=NAME" - echo " - single image default template (default: $SINGLE_IMAGE)." - echo " --double-image-tpl=NAME" - echo " - double image default template (default: $DOUBLE_IMAGE)." - echo - echo "Parameters:" - echo " PATH - path to root pages directory (default: $IMAGE_DIR)" - echo " FROM - spread to start from (default: 0)" - echo " COUNT - number of spreads to generate (default: 1)" - echo - echo "Environment:" - echo " \$IMAGE_HIRES_DIR " - echo " - source directory for replacement hi-res images." - echo " \$ANOTATE_IMAGE_PATHS " - echo " - if true add image paths in anotations." - echo - echo "Configuration defaults can be stored in a config file: $CFG_FILE" - echo - echo "NOTE: COUNT is relevant iff FROM is given, otherwise all available " - echo " spreads are generated." - echo - echo "Examples:" - echo " $ `basename $0` ./pages > pages.tex" - echo " - generate a layout fron the contents of ./pages" - echo - echo " $ IMAGE_HIRES_DIR=images/hi-res `basename $0` ./pages" - echo " - generate a layout fron the contents of ./pages and " - echo " replaceing local images with images in ./images/hi-res" - echo -} - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# handle arguments... - -while true ; do - case $1 in - -h|--help) - printhelp - exit - ;; - - --templates) - TEMPLATE_PATH=$2 - shift - shift - ;; - --single-image-tpl) - SINGLE_IMAGE=$2 - shift - shift - ;; - --double-image-tpl) - DOUBLE_IMAGE=$2 - shift - shift - ;; - - # handle unknown options... - -*|--*) - echo "Error: unknown option \"$1\"" - exit - ;; - - *) - break - ;; - esac -done - - -if [ -z $1 ] ; then - IMAGE_DIR=pages/ -else - IMAGE_DIR=$1/ -fi - - -# calculate spread index range... -# XXX add support for negative indexing... -FROM=$2 -COUNT=$( [ -z $3 ] && echo 1 || echo $3 ) -STOP=$(( FROM + COUNT )) - - - -#---------------------------------------------------------------------- - -# XXX should we report images w/o captions??? -getCaption(){ - local C=`basename "${1%.*}"` - #C="${C/[0-9]-}" - C="captions/${C}.txt" - - if [ -e "${C}" ] ; then - C=`cat "${C}" | sed 's/\\\/\\\\\\\/g'` - else - C="" - fi - - echo ${C[*]} -} - -getTemplate(){ - local SPREAD=$1 - local TYPE=$2 - local TEMPLATE=($SPREAD/*-$TYPE.tex) - if [ -z $TEMPLATE ] ; then - TEMPLATE=($SPREAD/*-$TYPE.tpl) - if ! [ -z $TEMPLATE ] ; then - TEMPLATE=${TEMPLATE/$SPREAD\//} - TEMPLATE=${TEMPLATE/[0-9]-/} - TEMPLATE="$TEMPLATE_PATH/${TEMPLATE[0]%-${TYPE}.*}.tex" - fi - fi - if [ -z $TEMPLATE ] ; then - TEMPLATE="$TEMPLATE_PATH/${TYPE}.tex" - fi - echo $TEMPLATE -} - -anotatePath(){ - if [ -z "$1" ] || [ -z "$ANOTATE_IMAGE_PATHS" ] ; then - return - fi - path=$(basename ${1%.*}) - # NOTE: did not figure out how to make a verbatim comment in latex - # so here we are, doing it in shell... - path=${path//_/\\_} - #echo "\\pdfmargincomment{Image: $path}%" - echo "\\pdfcommentcell{Image: $path}%" -} - - -#---------------------------------------------------------------------- - - -echo %---------------------------------------------------------------------- -echo % -echo % WARNING: This file is auto-generated by make-images.sh and will be -echo "% overwritten on next run..." -echo % -echo "% Image source (preview): \"$IMAGE_DIR\"" -echo "% Image source (hi-res): \"$IMAGE_HIRES_DIR\"" -echo % -echo %---------------------------------------------------------------------- -echo % -#echo % set image source directory... -#echo "\\graphicspath{{${IMAGE_DIR}}}" -#echo % -#echo %---------------------------------------------------------------------- -#echo % -# -#cd ${IMAGE_DIR} - -l=$(ls "$IMAGE_DIR/" | wc -l) -c=0 - -for spread in "${IMAGE_DIR}"/* ; do - # skip non-spreads... - if ! [ -d "$spread" ] ; then - continue - fi - - c=$(( c + 1 )) - - # if $FROM is given print only stuff in range... - [ -z $FROM ] \ - || if (( $(( c - 1 )) < $FROM )) || (( $c > $STOP )) ; then - continue - fi - - # if we are building only a specific spread... - ##if ! [ -z $SPREAD ] && [[ "$spread" != "$IMAGE_DIR/$SPREAD" ]]; then - ## continue - ##fi - - if ! [ -z $SKIP_FIRST ] ; then - echo % - echo % - echo % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - fi - SKIP_FIRST=1 - # skip temporarily disabled... - if [ -z ${spread/-*/} ] ; then - echo "% spread: ${spread/-/}: skipped..." | tee >(cat >&2) - echo % - continue - else - printf "Spread ($c/$l): ${spread/-/} \r" >&2 - echo "% spread: ${spread/-/}" - fi - - - # auto layout / templates... - # NOTE: to use a specific template just `touch <template-name>.tpl` - # in the spread directory... - - # layout tweaks... - tweaks=($spread/*tweak.tex) - if ! [ -z ${tweaks} ] ; then - echo "% tweaks: ${tweaks[0]}" - cat ${tweaks[0]} - fi - - - # NOTE: we also get *.txt files here... - items=($spread/*.!(tex|tpl|bak)) - - # get hi-res image paths... - if ! [ -z $IMAGE_HIRES_DIR ] ; then - C=0 - for img in "${items[@]}" ; do - # skip non-images... - if [[ "$img" == "${img/.txt/}" ]] ; then - #new="../$IMAGE_HIRES_DIR/`basename ${img/[0-9]-/}`" - new="$IMAGE_HIRES_DIR/`basename ${img/[0-9]-/}`" - # ignore file ext for availability test... - # NOTE: the first match may be an unsupported format... - new="${new%.*}" - new=($new.*) - if [ -e "${new[0]}" ] ; then - items[$C]=${new[0]} - else - echo % - echo "% WARNING: hi-res image not found for: \"${img}\" -> \"${new}\"" | tee >(cat >&2) - echo % - fi - fi - C=$(( C + 1 )) - done - fi - - - # manual layout... - layout=($spread/*layout.tex) - if ! [ -z $layout ] ; then - TEMPLATE=${layout[0]} - - # templates and partial templates... - else - # spread template... - TEMPLATE=($spread/*.tpl) - # skip page template refs: *-imagepage.tpl / *-textpage.tpl - # XXX this will also eat 0-imagepage.tpl / 20-textpage.tpl -- do a better pattern... - if ! [ -z $TEMPLATE ] ; then - TEMPLATE=(`ls "$spread/"*.tpl | egrep -v '.*-(imagepage|textpage)\.tpl'`) - fi - # no template explicitly defined -> match auto-template... - AUTO= - if [ -z $layout ] && [ -z $TEMPLATE ] ; then - AUTO=" (auto)" - if [ ${#items[@]} == 1 ] ; then - TEMPLATE=$SINGLE_IMAGE - - # multiple items... - else - C=0 - for img in "${items[@]}" ; do - C=$(( C + 1 )) - P=`[ $C == 1 ] && echo "left" || echo "right"` - - # image... - if [ "${img/.txt/}" == "${img}" ] ; then - echo % - echo "% $P page (image)..." - TEMPLATE=`getTemplate "$spread" "imagepage"` - echo % page template: $TEMPLATE - anotatePath "${img}" - CAPTION=`getCaption "${img}"` - cat "${TEMPLATE}" \ - | sed "s%\${IMAGE0\?}%${img%.*}%" \ - | sed "s%\${CAPTION0\?}%${CAPTION}%" - - # text... - else - echo % - echo "% $P page (text)..." - TEMPLATE=`getTemplate "$spread" "textpage"` - echo % page template: $TEMPLATE - cat "${TEMPLATE}" \ - | sed "s%\${TEXT}%${img}%" - fi - - # reset for next page... - TEMPLATE= - # only two pages at a time... - [ $C == 2 ] && break - done - fi - fi - # formatting done... - [ -z $TEMPLATE ] && continue - - # format... - TEMPLATE=${TEMPLATE/$spread\//} - TEMPLATE=${TEMPLATE/[0-9]-/} - # get... - TEMPLATE="$TEMPLATE_PATH/${TEMPLATE[0]%.*}.tex" - fi - - # captions... - CAPTION0=`getCaption "${items[0]}"` - CAPTION1=`getCaption "${items[1]}"` - - echo "% template: (template${AUTO}: $TEMPLATE)" - anotatePath "${items[0]}" - - # fill the template... - cat "${TEMPLATE}" \ - | sed "s%\${IMAGE0\?}%${items[0]%.*}%" \ - | sed "s%\${CAPTION0\?}%${CAPTION0}%" \ - | sed "s%\${IMAGE1}%${items[1]%.*}%" \ - | sed "s%\${CAPTION1}%${CAPTION1}%" -done - -echo % -echo % -echo % -echo %---------------------------------------------------------------------- -echo - -echo "Spread created: $c of $l " >&2 - - - -#---------------------------------------------------------------------- -# vim:set ts=4 sw=4 : |