update to new lyluatex version
This commit is contained in:
parent
730d9fb22d
commit
2771f1c76f
62 changed files with 1704 additions and 771 deletions
655
bin/makebook
Executable file
655
bin/makebook
Executable file
|
@ -0,0 +1,655 @@
|
|||
#!/bin/sh
|
||||
# +AMDG This document was begun just before Christmas,
|
||||
# 2010, and it is humbly dedicated to St. Wulfric, patron of
|
||||
# bookbinders, and to the Immaculate Heart of Mary for their
|
||||
# prayers, and to the Sacred Heart of Jesus for His mercy.
|
||||
#
|
||||
#**********************************************************#
|
||||
# makebook #
|
||||
# written by Donald P. Goodman III #
|
||||
# Copyright (C) 2011 #
|
||||
# #
|
||||
# Impose pdf pages for binding #
|
||||
#**********************************************************#
|
||||
#
|
||||
# This program is free software: you can redistribute it
|
||||
# and/or modify it under the terms of the GNU General Public
|
||||
# License as published by the Free Software Foundation,
|
||||
# either version 3 of the License, or (at your option) any
|
||||
# later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be
|
||||
# useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
# PURPOSE. See the GNU General Public License for more
|
||||
# details.
|
||||
#
|
||||
# For a full copy of the GNU General Public License, see
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
#**********************************************************#
|
||||
# begin the code #
|
||||
#**********************************************************#
|
||||
# make script more portable and secure
|
||||
PATH=/bin:/usr/bin:/usr/local/bin ; export PATH
|
||||
umask 033
|
||||
# define our revision number variable for rcs
|
||||
REVISION="2.1"
|
||||
# define error codes
|
||||
E_WRONG_ARGS=64 # too many or few args
|
||||
E_BAD_SIG_TYPE=65 # invalid type of signature
|
||||
E_BAD_UNIT=66 # unrecognized dimension unit used
|
||||
E_BAD_FILENAME=67 # filename contains insecure chars,
|
||||
# or doesn't exist
|
||||
E_BAD_OPT=68 # bad command-line flag requested
|
||||
E_NO_PROG=69 # missing a required program
|
||||
# define usage variables
|
||||
VERBOSE=0 # 0 if not verbose, 1 if -v
|
||||
SIG_TYPE="folio" # type of section desired
|
||||
PAGES_PER_SIG=4 # number of pages per signature
|
||||
SECT_TYPE=1 # number of signatures per section
|
||||
NUP="2x1" # default format of signatures
|
||||
FRONT_FAVOR=0 # favor front for blanks; off by default
|
||||
# define various variables to be zero by default
|
||||
TGT_PAGE_WIDTH=0
|
||||
TGT_PAGE_HEIGHT=0
|
||||
HORIZ_DELTA=0
|
||||
VERT_DELTA=0
|
||||
HORIZ_OFFSET=0
|
||||
VERT_OFFSET=0
|
||||
SCALE=1
|
||||
# make sure user has the right programs installed, and die
|
||||
# horribly if not
|
||||
command -v od >/dev/null 2>&1 ||
|
||||
{ echo >&2 "makebook: error: requires od, but it's not installed";
|
||||
exit $E_NO_PROG;
|
||||
}
|
||||
command -v pdflatex >/dev/null 2>&1 ||
|
||||
{ echo >&2 "makebook: error: requires pdflatex, but it's not installed";
|
||||
exit $E_NO_PROG;
|
||||
}
|
||||
command -v pdfinfo >/dev/null 2>&1 ||
|
||||
{ echo >&2 "makebook: error: requires pdfinfo, but it's not installed";
|
||||
exit $E_NO_PROG;
|
||||
}
|
||||
command -v pdftk >/dev/null 2>&1 ||
|
||||
{ echo >&2 "makebook: error: requires pdftk, but it's not installed";
|
||||
exit $E_NO_PROG;
|
||||
}
|
||||
command -v dc >/dev/null 2>&1 ||
|
||||
{ echo >&2 "makebook: error: requires dc, but it's not installed";
|
||||
exit $E_NO_PROG;
|
||||
}
|
||||
command -v bc >/dev/null 2>&1 ||
|
||||
{ echo >&2 "makebook: error: requires bc, but it's not installed";
|
||||
exit $E_NO_PROG;
|
||||
}
|
||||
|
||||
# print the version information and exit successfully
|
||||
versionfunc ()
|
||||
{
|
||||
echo "makebook v${REVISION}. Copyright (C) 2011, Donald P."
|
||||
echo "Goodman III."
|
||||
echo "This program comes with ABSOLUTELY NO WARRANTY."
|
||||
echo "This is free software, and you are welcome to "
|
||||
echo "redistribute it under certain conditions; see "
|
||||
echo "the GNU GPL v3 for details."
|
||||
exit 0
|
||||
}
|
||||
|
||||
# print the online help and exit successfully
|
||||
helpfunc ()
|
||||
{
|
||||
cat <<End-of-help
|
||||
makebook v${REVISION}. Copyright (C) 2011, Donald P. Goodman III.
|
||||
This program comes with ABSOLUTELY NO WARRANTY.
|
||||
This is free software, and you are welcome to
|
||||
redistribute it under certain conditions; see
|
||||
the GNU GPL v3 for details.
|
||||
|
||||
-V: Prints license and version information, then exits
|
||||
successfully.
|
||||
-h: Prints this help information, then exist successfully.
|
||||
-v: Verbose output
|
||||
-f: Favor front, rather than back, for blanks.
|
||||
-t: Signature type
|
||||
-n: Number of signatures per section.
|
||||
-H: Height of the target page.
|
||||
-w: Width of the target page.
|
||||
-d: Horizontal delta.
|
||||
-D: Vertical delta.
|
||||
-m: Horizontal offset.
|
||||
-M: Vertical offset.
|
||||
-s: Scaling of source pages to target page.
|
||||
-i: Input file.
|
||||
-o: Output file.
|
||||
|
||||
Please see the man page for complete documentation.
|
||||
End-of-help
|
||||
exit 0;
|
||||
}
|
||||
|
||||
# define a for dealing with units; convert to bp ()
|
||||
unitarg ()
|
||||
{
|
||||
if [ ! `echo "$1" | grep '^[\+\|-]*[0-9\.][0-9\.]*\(in\|cm\|pt\|mm\|bp\|pc\|$\)'` ]
|
||||
then
|
||||
echo "ERROR: dimension \"$1\" not valid." >&2
|
||||
exit $E_BAD_UNIT
|
||||
fi
|
||||
if [ `expr match "$1" '.*\(in\)'` ]
|
||||
then
|
||||
OPTARG=`echo "scale=0; ${1%in} * 72" | bc`
|
||||
OPTARG=${OPTARG%.*}
|
||||
elif [ `expr match "$1" '.*\(cm\)'` ]
|
||||
then
|
||||
OPTARG=`echo "scale=0; ${1%cm} * 28.3464567" | bc`
|
||||
OPTARG=${OPTARG%.*}
|
||||
elif [ `expr match "$1" '.*\(mm\)'` ]
|
||||
then
|
||||
OPTARG=`echo "scale=0; ${1%mm} * 2.83464567" | bc`
|
||||
OPTARG=${OPTARG%.*}
|
||||
elif [ `expr match "$1" '.*\(pt\)'` ]
|
||||
then
|
||||
OPTARG=`echo "scale=0; ${1%pt} / 1.00375" | bc`
|
||||
OPTARG=${OPTARG%.*}
|
||||
elif [ `expr match "$1" '.*\(pc\)'` ]
|
||||
then
|
||||
OPTARG=`echo "scale=0; (${1%pc} / 1.00375) * 12" | bc`
|
||||
OPTARG=${OPTARG%.*}
|
||||
elif [ `expr match "$1" '.*\(bp\)'` ]
|
||||
then
|
||||
OPTARG=${1%bp}
|
||||
else
|
||||
OPTARG=${1%.*}
|
||||
fi
|
||||
}
|
||||
# define a for dealing with section types; convert ()
|
||||
# to words; e.g., "4to" to "quarto"
|
||||
typearg ()
|
||||
{
|
||||
if [ "$1" = "4to" ] || [ "$1" = "quarto" ]
|
||||
then
|
||||
PAGES_PER_SIG=8
|
||||
NUP="2x2"
|
||||
OPTARG="quarto"
|
||||
elif [ "$1" = "2o" ] || [ "$1" = "folio" ]
|
||||
then
|
||||
PAGES_PER_SIG=4
|
||||
NUP="2x1"
|
||||
OPTARG="folio"
|
||||
elif [ "$1" = "8vo" ] || [ "$1" = "octavo" ]
|
||||
then
|
||||
PAGES_PER_SIG=16
|
||||
NUP="4x2"
|
||||
OPTARG="octavo"
|
||||
elif [ "$1" = "6to" ] || [ "$1" = "sexto" ]
|
||||
then
|
||||
PAGES_PER_SIG=12
|
||||
NUP="2x3"
|
||||
OPTARG="sexto"
|
||||
elif [ "$1" = "12mo" ] || [ "$1" = "duodecimo" ]
|
||||
then
|
||||
PAGES_PER_SIG=24
|
||||
NUP="4x3"
|
||||
OPTARG="duodecimo"
|
||||
else
|
||||
echo "ERROR: signature type \"$1\" not recognized." >&2
|
||||
exit $E_BAD_SIG_TYPE
|
||||
fi
|
||||
}
|
||||
|
||||
# clean up filename argument
|
||||
filefunc ()
|
||||
{
|
||||
err_message="ERROR: bad characters in file name."
|
||||
if [ `echo "$1" | grep '\?'` ]
|
||||
then
|
||||
echo "$err_message" >&2
|
||||
exit $E_BAD_FILENAME
|
||||
elif [ `echo "$1" | grep '\*'` ]
|
||||
then
|
||||
echo "$err_message" >&2
|
||||
exit $E_BAD_FILENAME
|
||||
elif [ `echo "$1" | grep '"'` ]
|
||||
then
|
||||
echo "$err_message" >&2
|
||||
exit $E_BAD_FILENAME
|
||||
elif [ `echo "$1" | grep ';'` ]
|
||||
then
|
||||
echo "$err_message" >&2
|
||||
exit $E_BAD_FILENAME
|
||||
elif [ `echo "$1" | grep '[\\]'` ]
|
||||
then
|
||||
echo "$err_message" >&2
|
||||
exit $E_BAD_FILENAME
|
||||
elif [ `echo "$1" | grep ' '` ]
|
||||
then
|
||||
echo "$err_message" >&2
|
||||
exit $E_BAD_FILENAME
|
||||
fi
|
||||
OPTARG=`basename $1`
|
||||
}
|
||||
|
||||
# now identify and parse the options
|
||||
while getopts "Vhvfn:t:H:w:d:D:m:M:s:i:o:" Option
|
||||
do
|
||||
case $Option in
|
||||
V ) versionfunc;;
|
||||
h ) helpfunc;;
|
||||
v ) VERBOSE=1;;
|
||||
f ) FRONT_FAVOR=1;;
|
||||
n ) SECT_TYPE=$OPTARG;;
|
||||
t ) typearg "$OPTARG"; SIG_TYPE=$OPTARG;;
|
||||
H ) unitarg "$OPTARG"; TGT_PAGE_HEIGHT=$OPTARG;;
|
||||
w ) unitarg "$OPTARG"; TGT_PAGE_WIDTH=$OPTARG;;
|
||||
d ) unitarg "$OPTARG"; HORIZ_DELTA=$OPTARG;;
|
||||
D ) unitarg "$OPTARG"; VERT_DELTA=$OPTARG;;
|
||||
m ) unitarg "$OPTARG"; HORIZ_OFFSET=$OPTARG;;
|
||||
M ) unitarg "$OPTARG"; VERT_OFFSET=$OPTARG;;
|
||||
s ) SCALE=$OPTARG;;
|
||||
i ) filefunc "$OPTARG"; FILE_NAME=$OPTARG;;
|
||||
o ) filefunc "$OPTARG"; OUTFILE_NAME=$OPTARG;;
|
||||
* ) echo "ERROR: unknown flag \
|
||||
\"$Option\"." >&2; exit $E_BAD_OPT;;
|
||||
esac
|
||||
done
|
||||
|
||||
# make random file name to use for input
|
||||
NEW_FILE_NAME="tmp_`od -An -N4 -t uL /dev/urandom | tr -d '\ '`.pdf"
|
||||
# if input file specified, use file; if not, read stdin
|
||||
if [ "$FILE_NAME" ]
|
||||
then
|
||||
cp "$FILE_NAME" "$NEW_FILE_NAME"
|
||||
else
|
||||
FILE_NAME="book.pdf"
|
||||
cat /dev/stdin > "$NEW_FILE_NAME"
|
||||
fi
|
||||
# declare holder variable for pdftk
|
||||
tmp_name="tmp_`od -An -N4 -t uL /dev/urandom | tr -d '\ '`.pdf"
|
||||
# if output file specified, use that; if not, name it; if
|
||||
# "-", use stdout
|
||||
[ "$OUTFILE_NAME" ] || OUTFILE_NAME="sigs_$FILE_NAME"
|
||||
if [ "$OUTFILE_NAME" = "stdout" ]
|
||||
then
|
||||
VERBOSE=0
|
||||
fi
|
||||
# print our introduction message
|
||||
if [ $VERBOSE -eq 1 ]
|
||||
then
|
||||
echo "makebook. Copyright (C) 2011, Donald P. Goodman III."
|
||||
echo "This program comes with ABSOLUTELY NO WARRANTY."
|
||||
echo "This is free software, and you are welcome to "
|
||||
echo "redistribute it under certain conditions; see "
|
||||
echo "the GNU GPL v3 for details."
|
||||
echo "IMPOSING pdf pages onto \"$OUTFILE_NAME\"..."
|
||||
fi
|
||||
|
||||
# get some information about our source document
|
||||
NUM_PAGES=`pdfinfo "$NEW_FILE_NAME" | awk '/Pages:/ {print $2}'`;
|
||||
SRC_PAGE_WIDTH=`pdfinfo "$NEW_FILE_NAME" | awk '/Page\ size:/ {print $3}'`;
|
||||
SRC_PAGE_HEIGHT=`pdfinfo "$NEW_FILE_NAME" | awk '/Page\ size:/ {print $5}'`;
|
||||
# find the number of pages we'll have per signature
|
||||
PAGES_PER_SIG=$(dc -e "$PAGES_PER_SIG $SECT_TYPE * p")
|
||||
# determine if extra pages will be necessary
|
||||
NUM_BLANKS=`expr $NUM_PAGES % $PAGES_PER_SIG`
|
||||
if [ $NUM_BLANKS -ne 0 ]
|
||||
then
|
||||
NUM_BLANKS=`expr $PAGES_PER_SIG - $NUM_BLANKS`
|
||||
fi
|
||||
tmp=`expr $NUM_PAGES + $NUM_BLANKS`
|
||||
NUM_SIGS=`expr $tmp / $PAGES_PER_SIG`
|
||||
|
||||
# if extra pages are needed, generate blank page
|
||||
if [ $NUM_BLANKS -gt 0 ] && [ ! -e "./blank.pdf" ]
|
||||
then
|
||||
echo "\documentclass{article}" > blank.tex
|
||||
echo '\\thispagestyle{empty}' >> blank.tex
|
||||
echo "\usepackage[paperwidth=${SRC_PAGE_WIDTH}bp,paperheight="${SRC_PAGE_HEIGHT}bp"]{geometry}" >> blank.tex
|
||||
echo '\\begin{document}' >> blank.tex
|
||||
echo "\quad \\\\end{document}" >> blank.tex
|
||||
if [ $VERBOSE -eq 1 ]
|
||||
then
|
||||
echo "CREATING blank page to fill sections...";
|
||||
fi
|
||||
pdflatex blank.tex > /dev/null 2&>1
|
||||
fi
|
||||
# now insert blank pages as needed, preferring the back for
|
||||
# odd numbers by default, front if stated
|
||||
if [ $NUM_BLANKS -eq 1 ]
|
||||
then
|
||||
if [ $VERBOSE -eq 1 ]
|
||||
then
|
||||
echo "INSERTING one blank page..."
|
||||
fi
|
||||
if [ $FRONT_FAVOR -eq 0 ]
|
||||
then
|
||||
pdftk A="$NEW_FILE_NAME" B=blank.pdf cat A1-end \
|
||||
B1 output "$tmp_name"
|
||||
else
|
||||
pdftk A="$NEW_FILE_NAME" B=blank.pdf cat B1 \
|
||||
A1-end output "$tmp_name"
|
||||
fi
|
||||
mv "$tmp_name" "$NEW_FILE_NAME"
|
||||
else
|
||||
# tmp=`expr $NUM_BLANKS / 2`
|
||||
# START_BLANKS=${tmp/.*}
|
||||
START_BLANKS=`expr $NUM_BLANKS / 2`
|
||||
END_BLANKS=`expr $NUM_BLANKS - $START_BLANKS`
|
||||
if [ `expr $START_BLANKS % 2` -ne 0 ]; then : else
|
||||
START_BLANKS=`expr $START_BLANKS - 1`
|
||||
END_BLANKS=`expr $END_BLANKS + 1 `
|
||||
fi
|
||||
if [ $FRONT_FAVOR -eq 1 ]
|
||||
then
|
||||
tmp=$START_BLANKS
|
||||
START_BLANKS=$END_BLANKS
|
||||
END_BLANKS=$tmp
|
||||
if [ `expr $START_BLANKS % 2` -ne 0 ]; then : else
|
||||
START_BLANKS=`expr $START_BLANKS - 1`
|
||||
END_BLANKS=`expr $END_BLANKS + 1 `
|
||||
fi
|
||||
fi
|
||||
if [ $VERBOSE -eq 1 ]
|
||||
then
|
||||
echo "INSERTING $START_BLANKS blank pages at start..."
|
||||
echo "INSERTING $END_BLANKS blank pages at end...";
|
||||
fi
|
||||
i=0
|
||||
while [ $i -lt $START_BLANKS ]
|
||||
do
|
||||
pdftk A="$NEW_FILE_NAME" B=blank.pdf cat B1 A1-end output "$tmp_name"
|
||||
mv "$tmp_name" "$NEW_FILE_NAME"
|
||||
i=`expr $i + 1`
|
||||
done
|
||||
i=0
|
||||
while [ $i -lt $END_BLANKS ]
|
||||
do
|
||||
pdftk A="$NEW_FILE_NAME" B=blank.pdf cat A1-end B1 output "$tmp_name"
|
||||
mv "$tmp_name" "$NEW_FILE_NAME"
|
||||
i=`expr $i + 1`
|
||||
done
|
||||
fi
|
||||
# begin the imposing, announcing if appropriate
|
||||
tmp=`expr $NUM_PAGES + $NUM_BLANKS`
|
||||
if [ $VERBOSE -eq 1 ]
|
||||
then
|
||||
echo "IMPOSING $NUM_PAGES pages ($tmp with blanks) on
|
||||
$(dc -e "$NUM_SIGS $SECT_TYPE * p") signature(s) gathered in
|
||||
sections of $SECT_TYPE signature(s) each...";
|
||||
fi
|
||||
# arrange the pages for impression on signatures
|
||||
i=1
|
||||
j=1
|
||||
if [ $VERBOSE -eq 1 ]
|
||||
then
|
||||
echo "REARRANGING pages...";
|
||||
fi
|
||||
while [ $j -le $NUM_SIGS ]
|
||||
do
|
||||
if [ "$SIG_TYPE" = "quarto" ]
|
||||
then
|
||||
# determine size of target page
|
||||
if [ $TGT_PAGE_HEIGHT -eq 0 ]
|
||||
then
|
||||
TGT_PAGE_HEIGHT=$(dc -e "$SRC_PAGE_HEIGHT 2 * p")
|
||||
fi
|
||||
if [ $TGT_PAGE_WIDTH -eq 0 ]
|
||||
then
|
||||
TGT_PAGE_WIDTH=$(dc -e "$SRC_PAGE_WIDTH 2 * p")
|
||||
fi
|
||||
# do the rearranging
|
||||
k=$i; n=1; total=$(dc -e "$SECT_TYPE 8 * p"); m=$total
|
||||
while [ $n -le $SECT_TYPE ]
|
||||
do
|
||||
pdftk "$NEW_FILE_NAME" cat `expr $k + $m - 1` $k \
|
||||
`expr $k + $m - 4`south `expr $k + 3`south \
|
||||
`expr $k + 1` `expr $k + $m - 2` `expr $k + 2`south \
|
||||
`expr $k + $m - 3`south output ${tmp_name%.pdf}_$n;
|
||||
k=`expr $k + 4`; n=`expr $n + 1`; m=`expr $m - 8`
|
||||
done
|
||||
n=1
|
||||
while [ `expr $n + 0` -le $SECT_TYPE ]
|
||||
do
|
||||
if [ ! -e "$tmp_name" ]
|
||||
then
|
||||
pdftk A=${tmp_name%.pdf}_$n cat A1-end \
|
||||
output "$tmp_name"
|
||||
else
|
||||
pdftk A=$tmp_name B=${tmp_name%.pdf}_`expr $n` \
|
||||
cat A1-end B1-end output ${tmp_name}_tmp
|
||||
mv ${tmp_name}_tmp "$tmp_name"
|
||||
fi
|
||||
n=`expr $n + 1`
|
||||
done
|
||||
if [ $VERBOSE -eq 1 ]
|
||||
then
|
||||
echo "REARRANGING section number $j..."
|
||||
fi
|
||||
j=`expr $j + 1`;
|
||||
i=`expr $i + $total`;
|
||||
elif [ "$SIG_TYPE" = "folio" ]
|
||||
then
|
||||
# determine size of target page
|
||||
if [ 1 -eq "$(echo "${TGT_PAGE_HEIGHT} == 0" | bc)" ]
|
||||
then
|
||||
TGT_PAGE_HEIGHT=$(dc -e "$SRC_PAGE_HEIGHT 1 * p")
|
||||
fi
|
||||
if [ 1 -eq "$(echo "${TGT_PAGE_WIDTH} == 0" | bc)" ]
|
||||
then
|
||||
TGT_PAGE_WIDTH=$(dc -e "$SRC_PAGE_WIDTH 2 * p")
|
||||
fi
|
||||
# do the rearranging
|
||||
k=$i; n=1; total=$(dc -e "$SECT_TYPE 4 * p"); m=$total
|
||||
while [ $n -le $SECT_TYPE ]
|
||||
do
|
||||
pdftk "$NEW_FILE_NAME" cat `expr $k + $m - 1` \
|
||||
`expr $k` `expr $k + 1` `expr $k + $m - 2` \
|
||||
output ${tmp_name%.pdf}_$n;
|
||||
k=`expr $k + 2`; n=`expr $n + 1`; m=`expr $m - 4`
|
||||
done
|
||||
n=1
|
||||
while [ `expr $n + 0` -le $SECT_TYPE ]
|
||||
do
|
||||
if [ ! -e "$tmp_name" ]
|
||||
then
|
||||
pdftk A=${tmp_name%.pdf}_$n cat A1-end \
|
||||
output "$tmp_name"
|
||||
else
|
||||
pdftk A="$tmp_name" B=${tmp_name%.pdf}_`expr $n` \
|
||||
cat A1-end B1-end output ${tmp_name}_tmp
|
||||
mv ${tmp_name}_tmp "$tmp_name"
|
||||
fi
|
||||
n=`expr $n + 1`
|
||||
done
|
||||
if [ $VERBOSE -eq 1 ]
|
||||
then
|
||||
echo "REARRANGING section number $j..."
|
||||
fi
|
||||
j=`expr $j + 1`;
|
||||
i=`expr $i + $total`;
|
||||
elif [ "$SIG_TYPE" = "octavo" ]
|
||||
then
|
||||
# determine target page dimensions
|
||||
if [ 1 -eq "$(echo "${TGT_PAGE_HEIGHT} == 0" | bc)" ]
|
||||
then
|
||||
TGT_PAGE_HEIGHT=$(dc -e "$SRC_PAGE_HEIGHT 2 * p")
|
||||
fi
|
||||
if [ 1 -eq "$(echo "${TGT_PAGE_WIDTH} == 0" | bc)" ]
|
||||
then
|
||||
TGT_PAGE_WIDTH=$(dc -e "$SRC_PAGE_WIDTH 4 * p")
|
||||
fi
|
||||
# do the rearranging
|
||||
k=$i; n=1; total=$(dc -e "$SECT_TYPE 16 * p"); m=$total
|
||||
while [ $n -le $SECT_TYPE ]
|
||||
do
|
||||
pdftk "$NEW_FILE_NAME" cat `expr $k + 3` \
|
||||
`expr $k + $m - 4` `expr $k + $m - 1` $k \
|
||||
`expr $k + 4`south `expr $k + $m - 5`south \
|
||||
`expr $k + $m - 8`south `expr $k + 7`south \
|
||||
`expr $k + 1` `expr $k + $m - 2` `expr $k + $m - 3` \
|
||||
`expr $k + 2` `expr $k + 6`south `expr $k + $m - 7`south \
|
||||
`expr $k + $m - 6`south `expr $k + 5`south \
|
||||
output ${tmp_name%.pdf}_$n;
|
||||
k=`expr $k + 8`; n=`expr $n + 1`; m=`expr $m - 16`
|
||||
done
|
||||
n=1
|
||||
while [ `expr $n + 0` -le $SECT_TYPE ]
|
||||
do
|
||||
if [ ! -e "$tmp_name" ]
|
||||
then
|
||||
pdftk A=${tmp_name%.pdf}_$n cat A1-end \
|
||||
output "$tmp_name"
|
||||
else
|
||||
pdftk A="$tmp_name" B=${tmp_name%.pdf}_`expr $n` \
|
||||
cat A1-end B1-end output ${tmp_name}_tmp
|
||||
mv ${tmp_name}_tmp "$tmp_name"
|
||||
fi
|
||||
n=`expr $n + 1`
|
||||
done
|
||||
if [ $VERBOSE -eq 1 ]
|
||||
then
|
||||
echo "REARRANGING section number $j..."
|
||||
fi
|
||||
j=`expr $j + 1`;
|
||||
i=`expr $i + $total`;
|
||||
elif [ "$SIG_TYPE" = "sexto" ]
|
||||
then
|
||||
# determine target page dimensions
|
||||
if [ $TGT_PAGE_HEIGHT -eq 0 ]
|
||||
then
|
||||
TGT_PAGE_HEIGHT=$(dc -e "$SRC_PAGE_HEIGHT 3 * p")
|
||||
fi
|
||||
if [ $TGT_PAGE_WIDTH -eq 0 ]
|
||||
then
|
||||
TGT_PAGE_WIDTH=$(dc -e "$SRC_PAGE_WIDTH 2 * p")
|
||||
fi
|
||||
# do the rearranging
|
||||
k=$i; n=1; total=$(dc -e "$SECT_TYPE 12 * p"); m=$total
|
||||
while [ $n -le $SECT_TYPE ]
|
||||
do
|
||||
pdftk "$NEW_FILE_NAME" cat `expr $k + 5` \
|
||||
`expr $k + 6` `expr $k + $m - 1` $k \
|
||||
`expr $k + $m - 1 - 3`south `expr $k + 3`south \
|
||||
`expr $k + 7` `expr $k + 4` \
|
||||
`expr $k + 1` `expr $k + $m - 1 - 1` \
|
||||
`expr $k + 2`south `expr $k + $m - 1 - 2`south \
|
||||
output ${tmp_name%.pdf}_$n;
|
||||
k=`expr $k + 6`; n=`expr $n + 1`; m=`expr $m - 12`
|
||||
done
|
||||
n=1
|
||||
while [ `expr $n + 0` -le $SECT_TYPE ]
|
||||
do
|
||||
if [ ! -e "$tmp_name" ]
|
||||
then
|
||||
pdftk A=${tmp_name%.pdf}_$n cat A1-end \
|
||||
output "$tmp_name"
|
||||
else
|
||||
pdftk A=$tmp_name B=${tmp_name%.pdf}_`expr $n` \
|
||||
cat A1-end B1-end output ${tmp_name}_tmp
|
||||
mv ${tmp_name}_tmp "$tmp_name"
|
||||
fi
|
||||
n=`expr $n + 1`
|
||||
done
|
||||
if [ $VERBOSE -eq 1 ]
|
||||
then
|
||||
echo "REARRANGING section number $j..."
|
||||
fi
|
||||
j=`expr $j + 1`;
|
||||
i=`expr $i + $total`;
|
||||
elif [ "$SIG_TYPE" = "duodecimo" ]
|
||||
then
|
||||
# determine target page dimensions
|
||||
if [ $TGT_PAGE_HEIGHT -eq 0 ]
|
||||
then
|
||||
TGT_PAGE_HEIGHT=$(dc -e "$SRC_PAGE_HEIGHT 3 * p")
|
||||
fi
|
||||
if [ $TGT_PAGE_WIDTH -eq 0 ]
|
||||
then
|
||||
TGT_PAGE_WIDTH=$(dc -e "$SRC_PAGE_WIDTH 4 * p")
|
||||
fi
|
||||
# do the rearranging
|
||||
k=$i; n=1; total=$(dc -e "$SECT_TYPE 24 * p"); m=$total
|
||||
while [ $n -le $SECT_TYPE ]
|
||||
do
|
||||
pdftk "$NEW_FILE_NAME" cat `expr $k + 8` \
|
||||
`expr $k + $m - 1 - 8` `expr $k + 12` \
|
||||
`expr $k + 11` `expr $k + 4` \
|
||||
`expr $k + $m - 1 - 3` `expr $k + $m - 1` \
|
||||
$k `expr $k + 4`south `expr $k + $m - 1 - 4`south \
|
||||
`expr $k + $m - 1 - 7`south `expr $k + 7`south \
|
||||
`expr $k + 10` `expr $k + 13` `expr $k + 14` \
|
||||
`expr $k + 9` `expr $k + 1` `expr $k + $m - 1 - 1` \
|
||||
`expr $k + $m - 1 - 2` `expr $k + 2` \
|
||||
`expr $k + 6`south `expr $k + $m - 1 - 6`south \
|
||||
`expr $k + $m - 1 - 5`south `expr $k + 5`south \
|
||||
output ${tmp_name%.pdf}_$n;
|
||||
k=`expr $k + 12`; n=`expr $n + 1`; m=`expr $m - 24`
|
||||
done
|
||||
n=1
|
||||
while [ `expr $n + 0` -le $SECT_TYPE ]
|
||||
do
|
||||
if [ ! -e "$tmp_name" ]
|
||||
then
|
||||
pdftk A=${tmp_name%.pdf}_$n cat A1-end \
|
||||
output $tmp_name
|
||||
else
|
||||
pdftk A="$tmp_name" B=${tmp_name%.pdf}_`expr $n` \
|
||||
cat A1-end B1-end output ${tmp_name}_tmp
|
||||
mv ${tmp_name}_tmp "$tmp_name"
|
||||
fi
|
||||
n=`expr $n + 1`
|
||||
done
|
||||
if [ $VERBOSE -eq 1 ]
|
||||
then
|
||||
echo "REARRANGING section number $j..."
|
||||
fi
|
||||
j=`expr $j + 1`;
|
||||
i=`expr $i + $total`;
|
||||
fi
|
||||
done
|
||||
mv "$tmp_name" "$NEW_FILE_NAME"
|
||||
rm ${tmp_name%.pdf}*
|
||||
echo "\documentclass{article}
|
||||
\usepackage{pdfpages}
|
||||
\usepackage[paperwidth=${TGT_PAGE_WIDTH}bp,paperheight=${TGT_PAGE_HEIGHT}bp]{geometry}
|
||||
\pagestyle{empty}" > ${OUTFILE_NAME%.pdf}.tex
|
||||
echo '\\begin{document}' >> ${OUTFILE_NAME%.pdf}.tex
|
||||
echo "\includepdf[nup=$NUP,pages=-,turn=false,columnstrict,
|
||||
noautoscale,delta=${HORIZ_DELTA}bp ${VERT_DELTA}bp,
|
||||
offset=${HORIZ_OFFSET}bp ${VERT_OFFSET}bp,scale=${SCALE}]
|
||||
{./"$NEW_FILE_NAME"}" >> ${OUTFILE_NAME%.pdf}.tex
|
||||
echo "\\\\end{document}" >> ${OUTFILE_NAME%.pdf}.tex
|
||||
if [ $VERBOSE -eq 1 ]
|
||||
then
|
||||
echo "IMPOSING sections..."
|
||||
fi
|
||||
pdflatex ${OUTFILE_NAME%.pdf}.tex > /dev/null 2>&1
|
||||
if [ $VERBOSE -eq 1 ]
|
||||
then
|
||||
echo "CLEANING up..."
|
||||
fi
|
||||
rm ${OUTFILE_NAME%.pdf}.tex ${OUTFILE_NAME%.pdf}.aux \
|
||||
${OUTFILE_NAME%.pdf}.log "$NEW_FILE_NAME"
|
||||
if [ -e "./blank.tex" ]; then
|
||||
rm ./blank.tex
|
||||
fi
|
||||
if [ -e "./blank.aux" ]; then
|
||||
rm ./blank.aux
|
||||
fi
|
||||
if [ -e "./blank.log" ]; then
|
||||
rm ./blank.log
|
||||
fi
|
||||
if [ $VERBOSE -eq 1 ]
|
||||
then
|
||||
echo "`expr $NUM_PAGES + $NUM_BLANKS` pages imposed in
|
||||
$(dc -e "$NUM_SIGS $SECT_TYPE * p") $SIG_TYPE signatures gathered
|
||||
in sections of $SECT_TYPE signature(s) each and output to
|
||||
${OUTFILE_NAME%.pdf}.pdf."
|
||||
fi
|
||||
if [ "$OUTFILE_NAME" = "stdout" ]
|
||||
then
|
||||
cat ${OUTFILE_NAME}.pdf
|
||||
rm ${OUTFILE_NAME}.pdf
|
||||
fi
|
||||
exit 0
|
Loading…
Add table
Add a link
Reference in a new issue