texlive[67500] trunk: pdfjam (27jun23)

commits+karl at tug.org commits+karl at tug.org
Tue Jun 27 22:12:07 CEST 2023


Revision: 67500
          http://tug.org/svn/texlive?view=revision&revision=67500
Author:   karl
Date:     2023-06-27 22:12:07 +0200 (Tue, 27 Jun 2023)
Log Message:
-----------
pdfjam (27jun23)

Modified Paths:
--------------
    trunk/Build/source/texk/texlive/linked_scripts/pdfjam/pdfjam
    trunk/Master/texmf-dist/doc/man/man1/pdfjam.man1.pdf
    trunk/Master/texmf-dist/doc/support/pdfjam/README.md
    trunk/Master/texmf-dist/doc/support/pdfjam/VERSION
    trunk/Master/texmf-dist/doc/support/pdfjam/tests.zip
    trunk/Master/texmf-dist/scripts/pdfjam/pdfjam

Removed Paths:
-------------
    trunk/Master/texmf-dist/doc/support/pdfjam/pdfjam.orig

Modified: trunk/Build/source/texk/texlive/linked_scripts/pdfjam/pdfjam
===================================================================
--- trunk/Build/source/texk/texlive/linked_scripts/pdfjam/pdfjam	2023-06-27 20:11:48 UTC (rev 67499)
+++ trunk/Build/source/texk/texlive/linked_scripts/pdfjam/pdfjam	2023-06-27 20:12:07 UTC (rev 67500)
@@ -1,5 +1,5 @@
 #!/bin/sh
-version=3.04
+version=3.05
 #########################################################################
 ##                                                                     ##
 ##  pdfjam: A shell-script interface to the "pdfpages" LaTeX package   ##
@@ -152,8 +152,8 @@
      --paper PAPERSPEC  (or simply --PAPERSPEC)
                   Specify a LaTeX paper size, for example
                   '--paper a4paper' or simply '--a4paper' for ISO A4 paper.
-                  If the LaTeX 'geometry' package is installed, a wider range
-                  of paper sizes is available.  For details see documentation
+                  A wide range of paper sizes is available thanks to the
+                  LaTeX 'geometry' package.  For details see documentation
                   for LaTeX and/or the 'geometry' package.
                   [Default for you at this site: paper=$paper]
      --papersize '{WIDTH,HEIGHT}'
@@ -160,7 +160,6 @@
                   Specify a custom paper size, e.g.,
                       --papersize '{10in,18cm}'
                   (Note the braces, and the comma!)
-                  If the 'geometry' package is not found, this has no effect.
      --pagecolor RGBSPEC
                   Specify a background colour for the output pages.  The 
                   RGBSPEC must be a comma-separated trio of integers
@@ -413,22 +412,19 @@
 ##
 preamble=''                ##  Default LaTeX preamble string.
 ##
-##  Guess default paper size from locale if possible, otherwise A4
+##  Get default paper size from libpaper >= 2 if possible, otherwise guess A4
 ##
-if command -v locale >/dev/null ; then
-    paperheight=$(locale -k LC_PAPER | sed -e '1!d' -e 's/.*=//') ;
-    case $paperheight in
-	297)
-	    paper='a4paper' ;
-	    ;;
-	279)
-	    paper='letterpaper' ;
-	    ;;
-	*)
-	    paper='a4paper' ;
-	    ;;
-    esac
-else paper='a4paper' ;  ## fallback paper size is ISO A4
+if command -v paper >/dev/null ; then
+    paperspec=$(paper)
+    paperdimensions=$(echo "$paperspec" | cut -f 2 -d " ")
+    paperunit=$(echo "$paperspec" | cut -f 3 -d " ")
+    if test "$paperunit" = "pt"; then paperunit=bp; fi
+    paperwidth=$(echo "$paperdimensions" | cut -f 1 -d "x")
+    paperheight=$(echo "$paperdimensions" | cut -f 2 -d "x")
+    papersize="papersize={$paperheight$paperunit,$paperwidth$paperunit}"
+    paper='' ## We might not have a LaTeX-compatible name
+else
+    paper='a4paper'  ## fallback paper size is ISO A4
 fi
 ##
 ##  END OF SETTINGS MADE DIRECTLY WITHIN THE SCRIPT
@@ -670,31 +666,22 @@
 			pagecolor="${2}" ;
 			callOptions="$callOptions ${1} ${2}" ;
 			shift ;;
-                    --a4paper | --a5paper | --b5paper | --letterpaper | \
-                        --executivepaper | --legalpaper)
-			##  standard LaTeX paper sizes
+		    --a0paper | --a1paper | --a2paper | --a3paper | \
+                        --a4paper | --a5paper | --a6paper | \
+                        --b0paper | --b1paper | --b2paper | \
+			--b3paper | --b4paper | --b5paper | --b6paper | \
+                        --c0paper | --c1paper | --c2paper | \
+			--c3paper | --c4paper | --c5paper | --c6paper | \
+                        --b0j | --b1j | --b2j | --b3j | --b4j | --b5j | --b6j | \
+                        --ansiapaper | --ansibpaper | --ansicpaper | \
+                        --ansidpaper | --ansiepaper | \
+                        --letterpaper | --legalpaper | --executivepaper)
 			paper=$(printf "%s" "${1}" | sed 's/^--//') ;
 			callOptions="$callOptions ${1}" ;
 			;;
-		    --a0paper | --a1paper | --a2paper | --a3paper | \
-                        --a6paper | --b0paper | --b1paper | --b2paper | \
-			--b3paper | --b4paper | --b6paper)
-			##  the 'geometry' package is needed
-			if test "$geometry" != false ;
-			then
-			    paper=$(printf "%s" "${1}" | sed 's/^--//') ;
-			    callOptions="$callOptions ${1}" ;
-			    geometry=true ;
-			fi ;
-			;;
 		    --papersize)
-			##  the 'geometry' package is needed
-			if test "$geometry" != false ;
-			then
-			    papersize="papersize=${2}" ;
-			    callOptions="$callOptions ${1} '${2}'" ;
-			    geometry=true ;
-			fi ;
+			papersize="papersize=${2}" ;
+			callOptions="$callOptions ${1} '${2}'" ;
 			shift ;;
 		    --landscape)
 			landscape=true ;
@@ -859,20 +846,6 @@
     *)
 	shortedge='\usepackage{everyshi}\makeatletter\EveryShipout{\ifodd\c at page\pdfpageattr{/Rotate 180}\fi}\makeatother' ;;
 esac
-if test "$geometry" != false
-then
-##  we haven't already found that geometry.sty is missing
-    case $paper in
-	a0paper | a1paper | a2paper | a3paper | \
-            a6paper | b0paper | b1paper | b2paper | \
-	    b3paper | b4paper | b6paper)
-	    ##  the 'geometry' package is needed
-	    geometry=true ;
-	    ;;
-	*)
-	    ;;
-    esac
-fi
 documentOptions="$paper","$orientation","$twoside"
 documentOptions=$(printf "%s" "$documentOptions" | sed 's/^,//' | sed 's/,$//')
 ##
@@ -913,25 +886,12 @@
 	"LaTeX package pdfpages.sty is not installed" \
 	$E_UNAVAILABLE
 
-    for pack in pdflscape eso-pic everyshi atbegshi ; do
+    for pack in geometry pdflscape eso-pic everyshi atbegshi ; do
         (kpsewhich $pack.sty >/dev/null) ||
         error_exit \
 	    "LaTeX package $pack.sty is not installed (see the pdfpages manual)" \
 	    $E_UNAVAILABLE
     done
-    if test "$geometry" = true
-    ##  ie, if the 'geometry' package is needed for paper size
-    then
-	(kpsewhich geometry.sty >/dev/null) || {
-	    prattle "LaTeX package geometry.sty is not installed, so only the"
-	    prattle "standard LaTeX paper sizes are available." 1
-	    geometry=false
-	    if test "$batch" = true
-	    then
-		export geometry   ## for use in any secondary calls
-	    fi
-	}
-    fi
 fi
 if  test "$keepinfo" = true
 then
@@ -1269,12 +1229,6 @@
 \usepackage{pdfpages}
 EndTemplate
     )  > "$texFile"
-if test -z "$geometry" ; then geometry=false ; fi
-if test "$geometry" = false; then   ## geometry package is not to be used
-    cp "$texFile" "$tempFile"
-    sed '/\\\usepackage.*{geometry}/d' "$tempFile" > "$texFile"
-    rm "$tempFile"
-fi
 if test -z "$pagecolor"; then   ## color package is not needed
     cp "$texFile" "$tempFile"
     sed '/\\\usepackage.*{color}/d' "$tempFile" > "$texFile"

Modified: trunk/Master/texmf-dist/doc/man/man1/pdfjam.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/support/pdfjam/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/support/pdfjam/README.md	2023-06-27 20:11:48 UTC (rev 67499)
+++ trunk/Master/texmf-dist/doc/support/pdfjam/README.md	2023-06-27 20:12:07 UTC (rev 67500)
@@ -1,4 +1,4 @@
-[![](https://travis-ci.com/rrthomas/pdfjam.svg?branch=master)](https://travis-ci.com/rrthomas/pdfjam)
+![GitHub CI](https://github.com/rrthomas/pdfjam/actions/workflows/ci.yml/badge.svg)
 # pdfjam
 
 _Reuben Thomas_ <https://rrt.sc3d.org/>
@@ -43,12 +43,15 @@
 installation of [Cygwin](http://www.cygwin.com) (with TeX Live 
 installed), but this has not been thoroughly tested.
 
-An alternative set of PDF manipulation tools, which are java-based, is 
-provided by the [Multivalent](http://multivalent.sourceforge.net) project. 
-Yet another alternative set of tools is [PDFsam](https://pdfsam.org). 
-Those alternatives do much the same things as `pdfjam`, and maybe 
-quite a bit more too. 
+Alternatives to `pdfjam` which are widely packaged in GNU/Linux distributions and other free software collections include:
 
+* [PDFtk](https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/) (Java-based)
+* [PDFsam](https://pdfsam.org) (Java-based)
+* [PSPDFUtils](https://pypi.org/project/pspdfutils/) (Python-based, also supports PostScript files)
+
+Those alternatives do many of the same things as `pdfjam`, and maybe
+quite a bit more too.
+
 The **pdfjam** software is made available free, under GPL version 2 (see the 
 file named `COPYING` that is included with the package). 
 It comes with **ABSOLUTELY NO WARRANTY** of fitness for any purpose whatever.
@@ -90,13 +93,13 @@
 - A working, up-to-date installation of LaTeX (including at least one of 
   `pdflatex`, `lualatex` or `xelatex`)
 - A working installation of the LaTeX package 
-  [**pdfpages**](http://www.ctan.org/tex-archive/macros/latex/contrib/pdfpages) 
+  [**pdfpages**](https://www.ctan.org/tex-archive/macros/latex/contrib/pdfpages)
   (version 0.4f or later)
-- Some of the options offered by `pdfjam` also require the LaTeX packages 
-  [**geometry**](http://www.ctan.org/tex-archive/macros/latex/contrib/geometry) 
-  and 
-  [**hyperref**](http://www.ctan.org/tex-archive/macros/latex/contrib/hyperref).
+  and
+[**geometry**](https://www.ctan.org/tex-archive/macros/latex/contrib/geometry).
 
+With [libpaper](https://github.com/rrthomas/libpaper) version 2 or later installed, `pdfjam` will be able to find your default paper size, which you can configure if desired.
+
 For some years now, **pdfjam** has been included in the _TeX Live_ distribution, 
 which includes all the necessary programs and packages to make `pdfjam` run smoothly.
 If you have the necessary bandwidth and disk space for it, I do recommend installing 
@@ -399,12 +402,7 @@
   within pipelines.
 - The `--preamble` option can sometimes clash with other elements of the LaTeX 
   preamble.  Some specific things to watch out for:
-    + If the preamble needs to set further options to the _geometry_ package, 
-	  when the _geometry_ package has already been loaded in order to 
-	  set a special page size, be sure to use the `\geometry{}` command for that.
-    + If the preamble needs to set options to the _hyperref_ package, when 
-	  the _hyperref_ package has already been loaded in order to specify PDF 
-	  document information, be sure to use the `\hypersetup{}` command for that.
+    + If the preamble needs to set further options to the _geometry_ package, be sure to use the `\geometry{}` command for that.
     + If options to the _color_ package are to be specified in the preamble, 
 	  do not at the same time use the `--pagecolor` option to `pdfjam`.
 
@@ -478,220 +476,3 @@
 ----------
 
 _Older releases are still available at <https://davidfirth.github.io/pdfjam>._
-
-**2.09** [never released]:
-
-- The default behaviour of `pdfbook` is reverted to its pre-2.06 state, 
-  because `--booklet true` seems to be problematic for some users.
-
-**2.08** [2010-11-14]: 
-
-- Fixed a bug in one of the tests. 
-
-**2.07** [2010-11-13]: 
-
-- Two other common graphics formats (JPG and PNG) are now explicitly 
-  allowed as input files (i.e., not only PDF files are allowed as inputs). 
-
-**2.06** [2010-05-11]: 
-
-- Changed the `pdfbook` script to include `--booklet true` as the 
-  default behaviour (thanks to Julien Bossert for this good suggestion). 
-
-**2.05** [2010-04-25]: 
-
-- Changes to the `pdfbook` script [the `--right-edge-binding` option is 
-  now redundant, and there's a new `--short-edge` option for binding along the 
-  short edge of pages instead of the long edge (thanks to Marco Pessotto for this).
-- The `--preamble` option to `pdfjam` is enhanced, to allow multiple instances 
-  which get concatenated. 
-- Also various minor corrections to man pages.
-
-**2.04** [2010-04-22]: 
-
-- Various minor improvements suggested by Debian maintainers 
-  (thanks to Eduard Bloch for these). The main things are: 
-    + addition of the `--version` option; 
-	+ liberalisation of `pdfjam` to allow files in _JPEG_ format to be 
-	  specified as input, as well as PDF; 
-	+ tidying of the man files; 
-	+ and more use of `exec`, to avoid forking.
-
-**2.03** [2010-04-20]: 
-
-- Fixed a bug which caused problems when your `/bin/sh` is the _zsh_ shell.
-- Fixed a bug which prevented the correct representation of many UTF-8 characters 
-  in `pdfinfo` data.
-
-**2.02** [2010-04-14]: 
-
-- More progress on portability.
-- Introduced the beginnings of a suite of tests. 
-- Iimprovements in the `--keepinfo` functionality, and in the treatment of 
-  file permissions (thanks to Marco Pessotto for these).
-
-**2.01** [2010-04-13]: 
-
-- Fixed a silly bug (thoughtless use of "`test -a`" in a couple of places) 
-  which seriously affected portability.
-
----------------------------------------------------------------
- 
-**2.00** [2010-03-14]: **a major re-design**
-
-This is not completely backward-compatible with previous versions of the 
-`pdfnup`, `pdfjoin` and `pdf90` scripts. 
-The differences in interface are few, though, and the main ones are 
-listed below.
-
-- The new script `pdfjam` now does all the work; all the other scripts 
-  included with the package are just simple wrappers for `pdfjam`. 
-- New `pdfjam` makes available essentially _all_ of the facilities of the 
-  pdfpages package (without having to know what they are). 
-- Various security and portability issues have been resolved. 
-  (None of the scripts now calls for `/bin/bash`; and the handling of 
-  temporary files is now much safer.) 
-- `pdfjam` can take PDF input from `/dev/stdin`, and send output to 
-  `/dev/stdout`. (This allows `pdfjam` to be used in a pipeline.) 
-- If the `--outfile` option specifies a relative path, that path is now 
-  relative to the _current working directory_ (as is normally expected of 
-  unix utilities). **This is different behaviour from previous versions.** 
-- With multiple input files, `pdfjam` offers two distinct methods of processing.
-  **This is different behaviour from previous versions.** 
-    1. The default is to take pages as specified from the input files, and 
-	  combine them into a single document. 
-	2. If the `--batch` option is used, `pdfjam` operates _separately_ on the 
-	  input files, producing one output file per input file. 
-- Page selection is available separately for each input file. A 
-  **difference from previous versions** is that the `--pages` keyword is no 
-  longer used. 
-- `pdfjam` uses the `\includepdfmerge` command from _pdfpages_, as a result 
-  of which all pages in an output file have the same size and orientation. 
-  **This is different behaviour from previous versions.** 
-- Output page orientation is now controlled by using `--landscape` (negated, 
-  if necessary, by `--no-landscape`). The previous `--orient` option is no 
-  longer used, and in particular "`--orient auto`" is no longer available. 
-  **This is different behaviour from previous versions.**
-- Other new features include: 
-    + `--keepinfo` option, to allow preservation of PDF document information, 
-		if the `pdfinfo` utility and the LaTeX `hyperref` package are 
-		available (thanks to Robert Wenner for suggesting this); 
-    + `--pdftitle`, `--pdfauthor`, `--pdfsubject` and `--pdfkeywords` 
-		options, to specify new PDF document information 
-		(these require the LaTeX `hyperref` package); 
-    + many more "named" output page sizes are available if the LaTeX 
-		`geometry` package is installed (the full list of allowed paper 
-		specifications is: `a0paper, a1paper, a2paper, a3paper, a4paper, 
-		a5paper, a6paper b0paper, b1paper, b2paper, b3paper, b4paper, 
-		b5paper, b6paper letterpaper, executivepaper, legalpaper`; 
-		thanks to Corné Verbruggen and Mel Irizarry for suggesting this) and 
-		non-standard page sizes can also be defined; 
-    + `--checkfiles` option to request that input files be checked using the 
-		`file` utility, rather than requiring the file name to end in 
-		"`.pdf`" or "`.PDF`"; 
-    + `--twoside` option, to allow the LaTeX _twoside_ class option to be 
-		specified (thanks to Johannes Reinhard for suggesting this); 
-    + `--pagecolor` option, to allow the background colour of output pages 
-		to be changed (thanks to James Fisher for suggesting this); 
-    + `--vanilla` option to run `pdfjam` without reading site-wide or user 
-		configuration files. 
-- In addition, various reported bugs have been fixed — many thanks to all 
-  those kind people who reported them.
-
----------------------------------------------------------------
- 
-**1.21** [2009-01-19]: 
- 
-- Bug fixes, including security issues (many thanks to Eduard Bloch, 
-  Robert Buchholz and Martin Vaeth for helpful reports on vulnerabilities and 
-  for kindly contributing patches). 
-- The scripts now call for `/bin/bash` as interpreter.
-- Availability of `mktemp` is now also assumed. 
-- The Mac OS X droplets now look for `pdflatex` at (by default) 
-  `/usr/texbin/pdflatex`
-
-**1.20** [2005-01-25]
-
-- Added minimal man pages. 
-- Added extra possible locations for the site-wide configuration file. 
-
-**1.11** [2004-10-13]: 
- 
-- Added the `--scale` option to `pdfnup`, which allows page margins either to 
-  be enlarged (e.g,. `--scale 0.9`) or reduced (e.g,. `--scale 1.1`) by 
-  scaling the page contents. By popular request!  
-
-**1.10** [2004-06-24]: 
- 
-- Output files now appear by default in same directory as input, rather than in 
-  the current working directory; fixed a bug that caused the scripts not to work 
-  on some versions of Solaris (thanks to Daniel Gebhart); major improvements to 
-  the Mac OS X sample droplets.
-
-**1.03** [2004-05-09]: 
-
-- Minor changes towards POSIX compliance. 
-
-**1.02** [2004-05-08]: 
-
-- Added a COPYING file to the package. 
-
-**1.00** [2004-05-07]: 
-
-- Package re-named PDFjam. 
-
-**0.99a** [2004-05-06]: 
-
-- A minor change to the output of `pdfnup --help` and `pdfjoin --help` 
-
-**0.99** [2004-05-05]: 
-
-- Various improvements to `pdfnup`, including the handling of multiple PDF 
-input files. Added `pdfjoin` and `pdf90`. 
-
-**0.97** [2004-04-23]: 
-
-- Corrections to the output of `pdfnup --help`. 
-
-**0.96** [2004-02-12]: 
-
-- Minor changes to comments in the `pdfnup` script. 
-
-**0.95** [2004-01-28]: 
-
-- Added the possibility of site-specific and user-specific configuration 
-  files (thanks to Jason Lewis for suggesting this). 
-
-**0.9** [2004-01-28]: 
-
-- Added `--openright` (thanks to Jason Lewis for suggesting this). 
-
-**0.8** [2003-09-12]: 
- 
-- Added `pdfnup --help` facility (thanks to Wilfrid Kendall for this suggestion). 
-
-**0.7** [2003-01-26]: 
-
-- Paths involving spaces now permitted.
-- Page trimming added (thanks to Alex Montgomery for suggesting that). 
-- Default output filename now has a dash inserted before the "nup" label 
-  (as in ` wasteful-2x2.pdf `). 
-- Sample Mac OS X droplets provided. 
-
-**0.6** [2002-08-22]: 
-
-- Use of paths involving spaces now reports an error. 
-
-**0.5** [2002-06-24]: 
-
-- Fixed a bug which caused incompatibility with some types of unix. 
-
-**0.4** [2002-04-30]: 
- 
-- Better error trapping, improved portability. 
-
-**0.3** [2002-04-04]: 
- 
-- First public release of `pdfnup`. 
-
-

Modified: trunk/Master/texmf-dist/doc/support/pdfjam/VERSION
===================================================================
--- trunk/Master/texmf-dist/doc/support/pdfjam/VERSION	2023-06-27 20:11:48 UTC (rev 67499)
+++ trunk/Master/texmf-dist/doc/support/pdfjam/VERSION	2023-06-27 20:12:07 UTC (rev 67500)
@@ -1 +1 @@
-This is pdfjam 3.04
\ No newline at end of file
+This is pdfjam 3.05
\ No newline at end of file

Deleted: trunk/Master/texmf-dist/doc/support/pdfjam/pdfjam.orig
===================================================================
--- trunk/Master/texmf-dist/doc/support/pdfjam/pdfjam.orig	2023-06-27 20:11:48 UTC (rev 67499)
+++ trunk/Master/texmf-dist/doc/support/pdfjam/pdfjam.orig	2023-06-27 20:12:07 UTC (rev 67500)
@@ -1,1171 +0,0 @@
-#!/bin/sh
-version=N.NN
-#########################################################################
-##                                                                     ##
-##  pdfjam: A shell-script interface to the "pdfpages" LaTeX package   ##
-##  ------                                                             ##
-##                                                                     ##
-##  Author: David Firth (http://warwick.ac.uk/dfirth)                  ##
-##                                                                     ##
-##  Usage: see https://github.com/rrthomas/pdfjam                      ##
-##         or "pdfjam --help"                                          ##
-##                                                                     ##
-##  Relies on:                                                         ##
-##  -- pdflatex (or xelatex or lualatex)                               ##
-##  -- the 'pdfpages' package for LaTeX (ideally version >= 0.4f)      ##
-##                                                                     ##
-##  License: GPL version 2 or later.  This software comes with         ##
-##  ABSOLUTELY NO WARRANTY of fitness for any purpose at all; if you   ##
-##  do not accept that, then you must not use it.                      ##
-##                                                                     ##
-##  The path searched for site-wide configuration files can be set     ##
-##  by editing the following variable:                                 ##
-##                                                                     ##
-    configpath='/etc:/usr/share/etc:/usr/local/share:/usr/local/etc'   ##
-##                                                                     ##
-##  Nothing else in this file should need to be changed.               ##
-##                                                                     ##
-#########################################################################
-##
-##  HELP TEXT
-##
-##  Defines the output of 'pdfjam --help'
-##
-helptext="
-insert contents of pdfjam-help.txt here
-"
-##
-##  END OF HELP TEXT
-##
-#########################################################################
-##
-##  PRELIMINARIES
-##
-##  First determine:
-##    --- whether verbose commentary should be provided (not if --quiet 
-#         or --configpath was specified); 
-##    --- whether this call to pdfjam is a "batch" call; 
-##    --- whether just the help text is required; 
-##    --- or whether all configuration files should be ignored.
-##
-verbose=true
-for arg
-do
-    case $arg in
-	--quiet | -q | --configpath)
-	    verbose=false ;
-	    ;;
-	--version | -V)
-	    echo "$version"
-	    exit 0 ;
-	    ;;
-	--batch)
-	    batch=true ;
-	    ;;
-	--help | -u | -h)
-		printf "%s\n" "$helptext" ;
-		exit 0 ;
-	    ;;
-	--vanilla)
-	    vanilla=true ;
-	    ;;
-	*)
-	    ;;
-    esac
-done
-##
-##  Check to see whether this is a "secondary" call to pdfjam:
-##
-if test -z "$PDFJAM_CALL_NUMBER"  ## not a secondary call
-then
-    PDFJAM_CALL_NUMBER=0
-fi
-##
-##  Keep a copy of the internal file separator, so we can change it safely
-##
-OIFS="$IFS"
-##
-##  Record the full filename of the current working diractory
-##
-pwd=$(pwd)
-##
-##  Trap interrupts so that they kill everything:
-##
-trap 'IFS=$OIFS; exit 1' 1 2 15
-##
-##  The following will be useful for readability of the script:
-##
-newline='
-'
-##
-##  Define a function to escape tricky characters in file names etc:
-##
-escape_chars () {
-    (printf "%s" "${1}" | sed 's/[^a-zA-Z0-9._/\-]/\\&/g')
-}
-##
-##  Define a function to output verbose comments:
-##
-prattle () { ## second argument here is non-null for continuation lines
-    if test $verbose = true; then
-	prefix1="  pdfjam:" ;
-	prefix2=$(printf "%s" "$prefix1" | sed 's/pdfjam:/       /') ;
-	indent="" ;
-	if test "$PDFJAM_CALL_NUMBER" -gt 0  &&
-	    test "$batch" != true
-	then
-	    indent="    "
-	fi
-	IFS="$newline" ;
-	lineCounter=0 ;
-	for line in ${1}
-	do
-	    lineCounter=$((lineCounter + 1)) ;
-	    if  test $lineCounter -eq 1  &&  test ! -n "${2}" ;
-	    then 
-		if test -w "$PDFJAM_MESSAGES_FILE"
-		then printf "$prefix1$indent %s\n" "$line" >> \
-                       "$PDFJAM_MESSAGES_FILE"
-		else messages="$messages$prefix1$indent $line$newline"  
-                       ## msg file not made yet
-		fi
-	    else 
-		if test -w "$PDFJAM_MESSAGES_FILE"
-		then printf "$prefix2$indent %s\n" "$line" >> \
-                       "$PDFJAM_MESSAGES_FILE"
-		else messages="$messages$prefix2$indent $line$newline"  
-                       ## msg file not made yet
-		fi
-	    fi ;
-	done ;
-	IFS="$OIFS" ;
-    fi ;
-    return ;
-}
-##
-##  And here's the first piece of verbose commentary:
-##
-prattle "----" 1
-prattle "This is pdfjam version ${version}."
-##
-#########################################################################
-##
-##  CONFIGURATION
-##
-##  THESE SETTINGS WILL BE OVER-RIDDEN by any found in configuration
-##  files.  By default such files are found at any or all of
-##     /etc/pdfjam.conf
-##     /usr/share/etc/pdfjam.conf
-##     /usr/local/share/pdfjam.conf
-##     /usr/local/etc/pdfjam.conf
-##     $HOME/.pdfjam.conf
-##  (And they are read in that order; if a setting is made more than
-##  once, the last instance prevails.)
-##
-##  An example configuration file can be found at
-##     https://github.com/rrthomas/pdfjam
-##
-##  The path searched for site-wide configuration files can be changed
-##  by editing the variable 'configpath' at the top of this file.
-##
-##
-##  First get the full path (if it exists) to pdflatex:
-##
-latex=$(command -v pdflatex)
-if [ -z "$latex" ] ; then latex="not found" ; fi
-##
-##  Likewise for the pdfinfo and iconv (only needed for `--keepinfo'):
-##
-pdfinfo=$(command -v pdfinfo)
-if [ -z "$pdfinfo" ] ; then pdfinfo="not found"; fi
-iconv=$(command -v iconv)
-if [ -z "$iconv" ] ; then iconv="not found"; fi
-##
-##
-##  Next a permitted location for temporary files on your system:
-##
-tempfileDir='/var/tmp'   ##  /var/tmp is standard on most unix systems
-##
-##
-##  Default for the output file location:
-##
-outFile="$pwd"           ##  Output to the current working directory
-##
-##
-##  A few more default settings for pdfjam:
-##
-shortedge='true'           ## Default paper is rotated shortedge when doing book
-##
-runs=1                     ## Run latex just once
-##
-tidy='true'                ##  Delete all temporary files at the end
-##
-keepinfo='false'           ##  Don't try to preserve "pdfinfo" data
-##
-checkfiles='false'         ##  Don't use the Unix 'file -Lb' utility to
-##                           identify PDF files from their contents;
-##                           rely on the .pdf or .PDF extension instead.
-##
-suffix='pdfjam'            ##  Default filename suffix to be used when 
-##                           --outfile is either (a) a directory, or (b) 
-##                           not specified in a --batch call.
-##
-preamble=''                ##  Default LaTeX preamble string.
-##
-##  Guess default paper size from locale if possible, otherwise A4
-##
-if command -v locale >/dev/null ; then
-    paperheight=$(locale -k LC_PAPER | sed -e '1!d' -e 's/.*=//') ;
-    case $paperheight in
-	297)
-	    paper='a4paper' ;
-	    ;;
-	279)
-	    paper='letterpaper' ;
-	    ;;
-	*)
-	    paper='a4paper' ;
-	    ;;
-    esac
-else paper='a4paper' ;  ## fallback paper size is ISO A4
-fi
-##
-##  END OF SETTINGS MADE DIRECTLY WITHIN THE SCRIPT
-##
-##  Now read the site's or user's configuration file(s) if such exist,
-##  unless '--vanilla' was specified.
-##
-if test "$vanilla" != true
-then
-    if test "$PDFJAM_CALL_NUMBER" = 0   ## not a secondary call to pdfjam
-    then
-	configFiles=$(printf "%s" "$configpath" | \
-	    sed 's/:/\/pdfjam.conf:/g; s/$/\/pdfjam.conf/')
-	configFiles="${configFiles}:$HOME/.pdfjam.conf"
-	PDFJAM_CONFIG=""
-	prattle "Reading any site-wide or user-specific defaults..."
-	IFS=':'
-	for d in $configFiles
-	do
-	    if test -f "$d"; then
-		change=$(sed '/^ *#.*/d ; s/ *#.*//; s/^ *//' "$d")
-		comment="## ${newline}## From ${d}: ${newline}##"
-		PDFJAM_CONFIG="$PDFJAM_CONFIG$comment$newline$change$newline"
-	    fi
-	done
-	IFS="$OIFS"
-	PDFJAM_CONFIG=$(printf "%s" "$PDFJAM_CONFIG" | sed 's/^/    /')
-	if test "$batch" = true ; then export PDFJAM_CONFIG ; fi
-	if test -z "$PDFJAM_CONFIG"
-	then
-	    prattle "(none found)" 1
-	else
-	    prattle "$PDFJAM_CONFIG" 1
-	fi
-    fi
-    if test -n "$PDFJAM_CONFIG" ; then eval "$PDFJAM_CONFIG" ; fi
-else
-    if test $PDFJAM_CALL_NUMBER -eq 0
-    then
-	prattle "Called with '--vanilla': no user or site configuration"
-	prattle "files will be read." 1
-    fi
-fi
-## For backwards compatibility, check here for a $pdflatex setting in the config file
-if [ -n "${pdflatex:-}" ] ; then latex="$pdflatex" ; fi
-##
-##  END OF CONFIGURATION BLOCK
-##
-#########################################################################
-##
-##  ERROR CODES
-##
-E_USAGE=64           #  command line usage error
-E_NOINPUT=66         #  cannot open input
-E_UNAVAILABLE=69     #  service unavailable
-E_SOFTWARE=70        #  internal software error
-E_OSFILE=72          #  file does not exist or cannot be opened
-E_CANTCREATE=73      #  can't create (user) output file
-E_CONFIG=78          #  configuration error
-##
-##  Define a function to print an error message and exit:
-##
-error_exit () {
-    if [ -r "$PDFJAM_MESSAGES_FILE" ]
-    then cat "$PDFJAM_MESSAGES_FILE" >&2
-    else printf "%s" "$messages" 1>&2
-    fi
-    printf "  pdfjam ERROR: %s\n" "$1" 1>&2 ;
-    exit "$2" ;
-}
-##
-#########################################################################
-##
-##  READ AND PROCESS THE ARGUMENTS
-##
-##  In case of NO argument supplied, mention 'pdfjam --help':
-##
-if  test $# -eq 0
-then
-    prattle "No arguments supplied; continuing anyway. (See"
-    prattle "'pdfjam --help' for information on usage.)"  1
-fi
-##
-##  Now do the argument loop.
-##
-fileSpec=""
-miscOptions=""
-callOptions=""
-optionsFinished=""
-##
-##  First note any '--checkfiles' or '--no-checkfiles' option
-##
-for arg 
-do
-    case $arg in
-	--checkfiles)
-	    checkfiles=true ;
-	    callOptions="$callOptions --checkfiles" ;
-	    ;;
-	--no-checkfiles)
-	    checkfiles=false ;
-	    callOptions="$callOptions --no-checkfiles" ;
-	    ;;
-    esac
-done
-while test -n "${1}${2}"; do
-    argUnmatched=""
-    if test "$optionsFinished" != true
-    then
-	case ${1} in
-	    --) ## signals end of command-line options
-		optionsFinished=true ;
-		shift ;
-		continue ;
-		;;
-	    --configpath)
-		printf "%s\n" "$configpath" ;
-		exit 0;;
-	    --* | -q | -o)
-		if test "$pageSpecAwaited" = true ; then
-		## fill in any missing page specs before continuing
-		    fileSpec=$(printf "%s" "$fileSpec" | sed 's/|awaited/|-/g')
-		    pageSpecAwaited=false
-		fi
-		case ${1} in
-		    --latex)
-			latex="${2}" ;
-			callOptions="$callOptions --latex ${2}" ;
-			shift ;;
-		    --batch)
-			batch=true ;
-			;;
-		    --vanilla)
-			callOptions="$callOptions ${1}" ;
-			;;
-		    --quiet | -q)
-			verbose=false ;
-			callOptions="$callOptions ${1}" ;
-			;;
-		    --outfile | -o)
-			outFile="${2}" ;
-			if test "$batch" = true
-			then
-			    outFile=$(escape_chars "$outFile")
-			fi
-			callOptions="$callOptions --outfile $outFile" ;
-  			shift ;;
-		    --suffix)
-			if test -n "${2}"
-			then
-			    suffix="${2}" ;
-			    if test "$batch" = true
-			    then
-				suffix=$(escape_chars "$suffix")
-			    fi
-			    callOptions="$callOptions --suffix $suffix"
-			    shift
-			else
-			    error_exit \
-				"'--suffix' string has zero length" \
-				$E_USAGE ;
-			fi
-			;;
-		    --runs)
-			runs="${2}" ;
-			## check if the argument is a number > 0
-                        if [ "$runs" -lt 1 ] 2> /dev/null; then
-                          error_exit \
-                                "'--runs' number must be at least 1" \
-                                $E_USAGE ;
-                        fi
-                        callOptions="$callOptions --runs ${2}" ;
-                        shift ;;
-		    --tidy)
-			tidy=true ;
-			callOptions="$callOptions --tidy" ;
-			;;
-		    --no-tidy)
-			tidy=false ;
-			callOptions="$callOptions --no-tidy" ;
-			;;
-		    --shortedge)
-			shortedge=true ;
-			callOptions="$callOptions --shortedge" ;
-			;;
-		    --longedge)
-			shortedge=false ;
-			callOptions="$callOptions --longedge" ;
-			;;
-		    --keepinfo)
-			keepinfo=true ;
-			callOptions="$callOptions --keepinfo" ;
-			;;
-		    --no-keepinfo)
-			keepinfo=false ;
-			callOptions="$callOptions --no-keepinfo" ;
-			;; 
-		    --checkfiles)
-			;; ## already done above
-		    --no-checkfiles)
-			;; ## already done above
-		    --pdftitle)
-			pdfTitle="${2}" ;
-			if test "$batch" = true
-			then
-			    pdfTitle=$(escape_chars "$pdfTitle")
-			fi
-			callOptions="$callOptions --pdftitle $pdfTitle" ;
-			shift ;;
-		    --pdfauthor)
-			pdfAuthor="${2}" ;
-			if test "$batch" = true
-			then
-			    pdfAuthor=$(escape_chars "$pdfAuthor")
-			fi
-			callOptions="$callOptions --pdfauthor $pdfAuthor" ;
-			shift ;;
-		    --pdfsubject)
-			pdfSubject="${2}" ;
-			if test "$batch" = true
-			then
-			    pdfSubject=$(escape_chars "$pdfSubject")
-			fi
-			callOptions="$callOptions --pdfsubject $pdfSubject" ;
-			shift ;;
-		    --pdfkeywords)
-			pdfKeywords="${2}" ;
-			if test "$batch" = true
-			then
-			    pdfKeywords=$(escape_chars "$pdfKeywords")
-			fi
-			callOptions="$callOptions --pdfkeywords $pdfKeywords" ;
-			shift ;;
-		    --paper)
-			paper="${2}"
-			callOptions="$callOptions ${1} ${2}" ;
-			shift ;;
-		    --pagecolor)
-			pagecolor="${2}" ;
-			callOptions="$callOptions ${1} ${2}" ;
-			shift ;;
-                    --a4paper | --a5paper | --b5paper | --letterpaper | \
-                        --executivepaper | --legalpaper)
-			##  standard LaTeX paper sizes
-			paper=$(printf "%s" "${1}" | sed 's/^--//') ;
-			callOptions="$callOptions ${1}" ;
-			;;
-		    --a0paper | --a1paper | --a2paper | --a3paper | \
-                        --a6paper | --b0paper | --b1paper | --b2paper | \
-			--b3paper | --b4paper | --b6paper)
-			##  the 'geometry' package is needed
-			if test "$geometry" != false ;
-			then
-			    paper=$(printf "%s" "${1}" | sed 's/^--//') ;
-			    callOptions="$callOptions ${1}" ;
-			    geometry=true ;
-			fi ;
-			;;
-		    --papersize)
-			##  the 'geometry' package is needed
-			if test "$geometry" != false ;
-			then
-			    papersize="papersize=${2}" ;
-			    callOptions="$callOptions ${1} '${2}'" ;
-			    geometry=true ;
-			fi ;
-			shift ;;
-		    --landscape)
-			landscape=true ;
-			callOptions="$callOptions --landscape" ;
-			;;
-		    --no-landscape)
-			landscape=false ;
-			callOptions="$callOptions --no-landscape" ;
-			;;
-		    --twoside)
-			twoside=true ;
-			callOptions="$callOptions --twoside" ;
-			;;
-		    --no-twoside)
-			twoside=false ;
-			callOptions="$callOptions --no-twoside" ;
-			;;
-		    --preamble)
-			preamble="$preamble${2}" ;
-			shift ;;
-		    --enc) # command line encoding
-			enc="${2}"
-			callOptions="$callOptions ${1} ${2}"
-			shift ;;
-		    --*)
-                        ##  options for \includepdfmerge
-			argName=$(printf "%s" "${1}" | sed 's/^--//');
-			value="${2}"
-			miscOptions=$miscOptions,"$argName=$value" ;
-		        ## saved for possible use in LaTeX file
-			callOptions="$callOptions ${1} '$value'" ;
-		        ## saved for possible use in a further call to pdfjam
-			shift ;
-			;;
-		esac ;;
-	    '' | *)
-		argUnmatched=true
-		;;
-	esac
-    fi
-    if test "$optionsFinished" = true  ||  test "$argUnmatched" = true
-    then
-	case ${1} in
-	    "" | /dev/stdin)
-		fileSpec="${fileSpec}${newline}/dev/stdin|awaited"
-		pageSpecAwaited=true
-		inputFromStdin=true ;;
-	    -)
-		if test "$pageSpecAwaited" = true  ; then
-		    fileSpec=$(printf "%s" "$fileSpec" | \
-			sed 's/|awaited/|-/g')
-		    pageSpecAwaited=false
-		else
-		    error_exit "no PDF/JPG/PNG file found at ${1}" \
-			$E_NOINPUT
-		fi ;;
-	    *)  ##  All other args should be PDF (or JPG/PNG) 
-                ##  source files and page selections; if not, we'll quit
-		if test "$checkfiles" = true ;  ## not always available
-		then
-		    case $(file -Lb "${1}") in
-			"PDF document"*|"JPEG image data"*|"PNG image"*)   
-                            ##  it's a PDF file (or JPG/PNG) as expected
-			    fileSpec="$fileSpec${newline}${1}|awaited"
-			    pageSpecAwaited=true
-			    ;;
-			*)
-			    case ${1} in
-				*.[pP][dD][fF] | *.[jJ][pP][eE][gG] | \
-				    *.[jJ][pP][gG] | *.[pP][nN][gG]) 
-                                    ## should be PDF/JPG/PNG file, but isn't
-				    error_exit "no PDF/JPG/PNG file found at ${1}" \
-					$E_NOINPUT
-				    ;;
-				*) ##  if page spec needed, assume this is it;
-		                   ##  otherwise something is wrong
-				    if test "$pageSpecAwaited" = true  ; then
-					fileSpec=$(printf "%s" "$fileSpec" | \
-					    sed "s/|awaited/|$1/g")
-					pageSpecAwaited=false
-				    else
-					error_exit "no PDF/JPG/PNG file found at ${1}" \
-					    $E_NOINPUT
-				    fi
-				    ;;
-			    esac
-			    ;;
-		    esac
-		else  ## no checking of file contents; rely on .pdf extension
-		    case ${1} in
-			*.[pP][dD][fF] | *.[jJ][pP][eE][gG] \
-			    | *.[jJ][pP][gG] | *.[pP][nN][gG])  
-                            ## assume it's a PDF/JPG/PNG file
-			    test -f "${1}" || error_exit \
-				"${1} not found" $E_NOINPUT
-			    fileSpec="$fileSpec"$newline${1}"|"awaited
-			    pageSpecAwaited=true
-			    ;;
-			*) ##  if page spec needed, assume this is it;
-		           ##  otherwise something is wrong
-			    if test "$pageSpecAwaited" = true  ; then
-				fileSpec=$(printf "%s" "$fileSpec" | \
-				    sed "s/|awaited/|$1/g")
-				pageSpecAwaited=false
-			    else
-				error_exit "no PDF/JPG/PNG file found at ${1}" \
-				    $E_NOINPUT
-			    fi
-			    ;;
-		    esac
-		fi
-		;;
-	esac
-    fi
-    shift
-done
-##
-##  Use the default page spec for any that remain unspecified:
-##
-fileSpec=$(printf "%s" "$fileSpec" | sed '/^$/d; s/^ //; s/|awaited$/|-/')
-##
-##  Check whether input from stdin should be used by default:
-if  test $PDFJAM_CALL_NUMBER -eq 0  &&  test "$inputFromStdin" != true
-then
-    ## the special argument '/dev/stdin' was not used
-    if test -z "$fileSpec" ; then
-    ## no argument specifying a PDF source was given
-	inputFromStdin=true
-	fileSpec="/dev/stdin|-"
-	prattle "No PDF/JPG/PNG source specified: input is from stdin."
-    fi
-fi
-##
-##  Delete leading comma from $miscOptions:
-##
-miscOptions=$(printf "%s" "$miscOptions" | sed 's/^,//')
-##
-if test -n "$preamble"
-then callOptions="$callOptions --preamble '$preamble'"
-fi
-##  Delete leading space from $callOptions:
-##
-callOptions=$(printf "%s" "$callOptions" | sed 's/^ //')
-##
-##  Set up a document options variable:
-##
-case $landscape in
-    true)
-	orientation=landscape ;;
-    *)
-	orientation="" ;;
-esac
-case $twoside in
-    true)
-	twoside=twoside ;;
-    *)
-	twoside="" ;;
-esac
-case $shortedge in
-    true)
-	shortedge="" ;;
-    *)
-	shortedge='\usepackage{everyshi}\makeatletter\EveryShipout{\ifodd\c at page\pdfpageattr{/Rotate 180}\fi}\makeatother' ;;
-esac
-if test "$geometry" != false
-then
-##  we haven't already found that geometry.sty is missing
-    case $paper in
-	a0paper | a1paper | a2paper | a3paper | \
-            a6paper | b0paper | b1paper | b2paper | \
-	    b3paper | b4paper | b6paper)
-	    ##  the 'geometry' package is needed
-	    geometry=true ;
-	    ;;
-	*)
-	    ;;
-    esac
-fi
-documentOptions="$paper","$orientation","$twoside"
-documentOptions=$(printf "%s" "$documentOptions" | sed 's/^,//' | sed 's/,$//')
-##
-##  END OF ARGUMENT PROCESSING
-##
-#########################################################################
-##
-##  CHECK SYSTEM SETUP
-##
-##  These checks are not repeated in secondary calls.
-##
-if test $PDFJAM_CALL_NUMBER -eq 0  ## not a secondary call
-then
-    ##  Check whether there's a suitable latex to use:
-    case "$latex" in
-	"not found")
-	    error_exit "can't find pdflatex!" $E_UNAVAILABLE
-	    ;;
-	*)  ## 
-	    if test ! -x "$latex"
-	    then
-		error_exit \
-		    "configuration error, $latex is not an executable file" \
-		    $E_CONFIG
-	    fi
-	    ;;
-    esac
-    ##
-    ##  Check that necessary LaTeX packages are installed:
-    ##
-    modifyPath=$(printf "%s" "$latex" | sed 's/\/[^\/]*$//')
-    if [ -n "$modifyPath" ] ; then
-	PATH="$modifyPath:$PATH"
-	export PATH
-    fi
-    (kpsewhich pdfpages.sty >/dev/null) ||
-    error_exit \
-	"LaTeX package pdfpages.sty is not installed" \
-	$E_UNAVAILABLE
-
-    for pack in pdflscape eso-pic everyshi atbegshi ; do
-        (kpsewhich $pack.sty >/dev/null) ||
-        error_exit \
-	    "LaTeX package $pack.sty is not installed (see the pdfpages manual)" \
-	    $E_UNAVAILABLE
-    done
-    if test "$geometry" = true
-    ##  ie, if the 'geometry' package is needed for paper size
-    then
-	(kpsewhich geometry.sty >/dev/null) || {
-	    prattle "LaTeX package geometry.sty is not installed, so only the"
-	    prattle "standard LaTeX paper sizes are available." 1
-	    geometry=false
-	    if test "$batch" = true
-	    then
-		export geometry   ## for use in any secondary calls
-	    fi
-	}
-    fi
-fi
-if  test "$keepinfo" = true
-then
-    case "$pdfinfo" in
-	"not found")
-	  if test $PDFJAM_CALL_NUMBER -eq 0
-	  then
-	    prattle \
-	      "The pdfinfo utility was not found, so --keepinfo is ignored."
-	  fi
-	  keepinfo=false
-	  ;;
-	pdfinfo)
-	  ;;
-	*)  ## $pdfinfo was set in a configuration file
-	  if test ! -x "$pdfinfo"
-	  then
-	    if test $PDFJAM_CALL_NUMBER -eq 0
-	    then
-	      prattle \
-		"No pdfinfo utility at $pdfinfo, so --keepinfo is ignored."
-	      keepinfo=false
-	    fi
-	  fi
-	  ;;
-    esac
-    case "$iconv" in
-	"not found")
-	  if test $PDFJAM_CALL_NUMBER -eq 0
-	  then
-	    prattle \
-	      "The iconv utility was not found, so --keepinfo is ignored."
-	  fi
-	  keepinfo=false
-	  ;;
-	iconv)
-	  ;;
-	*)  ## $iconv was set in a configuration file
-	  if test ! -x "$iconv"
-	  then
-	    if test $PDFJAM_CALL_NUMBER -eq 0
-	    then
-	      prattle \
-		"No iconv utility at $iconv, so --keepinfo is ignored."
-	      keepinfo=false
-	    fi
-	  fi
-	  ;;
-    esac
-fi
-## A function to check if using non-Cygwin "${latex}" from Cygwin
-using_non_cygwin_latex_from_cygwin () {
-    if [ -z "${__cache__using_non_cygwin_latex_from_cygwin}" ]; then
-	if [ "$(uname -o)" = "Cygwin" ] \
-	    && "${latex}" -version | head -1 | grep -qv Cygwin; then
-	    __cache__using_non_cygwin_latex_from_cygwin=0
-	else
-	    __cache__using_non_cygwin_latex_from_cygwin=1
-	fi
-    fi
-    return "${__cache__using_non_cygwin_latex_from_cygwin}"
-}
-##
-##  END OF CHECKING THE SETUP
-##
-#########################################################################
-##
-##  TEMPORARY FILES
-##
-##  Make a secure temporary directory (following
-##  the autoconf manual).
-##
-##  Use mktemp if possible; otherwise fall back on mkdir,
-##  with random name to make file collisions less likely.
-##
-original_umask=$(umask)
-umask 177
-if test $PDFJAM_CALL_NUMBER = 0  ## don't repeat this work for secondary calls
-then
-    PDFJAM_TEMP_DIR=''
-    trap 'IFS="$OIFS"; \
-  if test $tidy != false ; then cd "$pwd"; rm -rf "$PDFJAM_TEMP_DIR"; fi; exit 1' \
-	1 2 15
-    trap 'IFS="$OIFS"; \
-  if test $tidy != false ; then cd "$pwd"; rm -rf "$PDFJAM_TEMP_DIR"; fi' 0
-    {
-	PDFJAM_TEMP_DIR=$( (umask 077 && mktemp -d "$tempfileDir/pdfjam-XXXXXX") 2>/dev/null) &&
-	test -n "$PDFJAM_TEMP_DIR" && test -d "$PDFJAM_TEMP_DIR"
-    } || {
-    ##  We'll use awk to make random number, for portability
-	random=$(awk 'END { srand(); printf ("%d\n", rand()*1000000); }' /dev/null)
-	PDFJAM_TEMP_DIR="$tempfileDir"/pdfjam"$$"-"$random"
-	(umask 077 && mkdir "$PDFJAM_TEMP_DIR")
-    } || exit $?
-##
-    export PDFJAM_TEMP_DIR    ##  so that same dir is used in secondary calls
-    if test $tidy = false ; then
-	prattle "Temporary directory for this job is
-          $PDFJAM_TEMP_DIR"
-    fi
-    PDFJAM_MESSAGES_FILE="$PDFJAM_TEMP_DIR"/messages.txt
-    export PDFJAM_MESSAGES_FILE  
-        ## so that secondary calls can write messages there as well
-    printf "%s" "$messages" > "$PDFJAM_MESSAGES_FILE"  ## initial file contents
-    messages=""  ## we won't be using this variable again!
-else
-    PDFJAM_TEMP_DIR="$PDFJAM_TEMP_DIR/file$PDFJAM_CALL_NUMBER"
-    (umask 077 && mkdir "$PDFJAM_TEMP_DIR")
-fi
-umask "$original_umask"
-## Next is from the Cygwin patch contributed by Lucas
-if using_non_cygwin_latex_from_cygwin; then
-    PDFJAM_TEMP_DIR=$(cygpath -w "$PDFJAM_TEMP_DIR")
-fi
-##
-##  TEMPORARY DIRECTORY ALL DONE
-##
-#########################################################################
-##
-##  HANDLING THE "--batch" OPTION
-##
-##  If --batch was used, we'll call pdfjam separately on each input
-##  file.
-##
-if test "$batch" = true ; then
-    if test "$fileSpec" = "" ; then
-	error_exit "--batch was used, but no PDF/JPG/PNG source file(s) specified" \
-	    $E_USAGE
-    fi
-    if test "$inputFromStdin" = true ; then
-	error_exit "--batch cannot be used with input from stdin" \
-	    $E_USAGE
-    fi
-    IFS="$newline"
-    for k in $fileSpec ; do
-	sourcePath=$(printf "%s" "$k" | sed 's/|[^|]*$//')
-	pageSpec=$(printf "%s" $k | sed 's/.*|//')
-	callNumber=$((PDFJAM_CALL_NUMBER + 1))
-	prattle "--"
-	prattle "Processing file ${callNumber}, '$sourcePath'..."
-	prattle "Page spec is '$pageSpec'."
-	sourcePath=$(escape_chars "$sourcePath")
-	PDFJAM_EFFECTIVE_CALL="$0 $callOptions -- $sourcePath $pageSpec"
-	export PDFJAM_EFFECTIVE_CALL
-	PDFJAM_CALL_NUMBER=$callNumber
-	export PDFJAM_CALL_NUMBER
-	eval "$PDFJAM_EFFECTIVE_CALL"
-        ## i.e., call pdfjam again with one input file
-    done
-    if [ "$verbose" = "true" ]; then cat "$PDFJAM_MESSAGES_FILE" >&2 ; fi
-    IFS=$OIFS
-    exit 0
-fi
-##
-##  END OF THE '--batch' PROCESSING
-##
-#########################################################################
-##
-##  RECORD THE EFFECTIVE CALL TO PDFJAM, FOR POSSIBLE DEBUGGING PURPOSES
-##
-##  Save the text of this (effective) call to pdfjam in a temporary file,
-##  for later inspection if necessary.
-##
-##  For secondary calls, the effective call text is already made;
-##  otherwise we make it here.
-##
-if test "$PDFJAM_CALL_NUMBER" -gt 0
-then
-    theCall="$PDFJAM_EFFECTIVE_CALL"
-else
-    filePageSpec=""
-    IFS="$newline"
-    for k in $fileSpec ; do
-	##  Last substitution on next line is needed for silly characters in
-	##  file names...
-	sourcePath=$(printf "%s" $k | sed 's/|[^|]*$//')
-	sourcePath=$(escape_chars "$sourcePath")
-	pageSpec=$(printf "%s" $k | sed 's/.*|//')
-	filePageSpec="$filePageSpec$sourcePath $pageSpec "
-    done
-    IFS="$OIFS"
-    theCall="$0 $callOptions -- $filePageSpec"
-fi
-printf "%s\n%s\n" "cd $pwd" "$theCall" > "$PDFJAM_TEMP_DIR"/call.txt
-prattle "Effective call for this run of pdfjam:"
-prattle "$theCall" 1
-##
-#########################################################################
-##
-##  NOW MAKE THE INPUT FILE ETC., READY FOR LATEX
-##
-filePageList=""  ## initialize a string to supply to \includepdfmerge
-counter=0
-##
-##  Make symbolic link(s) to the source file(s) in the temporary dir,
-##  and make the $filePageList string for input to \includepdfmerge
-##
-stdinUnread=true
-IFS="$newline"
-for k in ${fileSpec}
-do
-    counter=$((counter + 1))
-    sourcePath=$(printf "%s" "$k" | sed 's/|[^|]*$//')
-    pageSpec=$(printf "%s" $k | sed 's/.*|//')
-    ##  Check, though not exhaustively, for problems with the
-    ##  page spec: leading or trailing comma, double comma or
-    ##  double dash, alphabetic characters other than the word "last",
-    ##  braces not paired as {} with nothing inbetween.  A fully
-    ##  specified pattern for valid \includepdfmerge page spec would
-    ##  be better here; but life is too short...
-    if printf "%s" "$pageSpec" | sed 's/last/99/g' | \
-	grep  '^,.*\|,$\|,,\|--\|[A-Za-z]\|{[^}]\|[^{]}' 1>/dev/null
-    then
-	error_exit "invalid page spec $pageSpec" $E_USAGE
-    fi
-    case $sourcePath in
-	/dev/stdin)
-	    uniqueName="$PDFJAM_TEMP_DIR"/stdin.pdf
-	    if test "$stdinUnread" = true
-	    then
-		if tty -s ; then
-		    error_exit \
-		 "tty is connected to connected to stdin, no PDF/JPG/PNG file found" \
-			$E_NOINPUT
-		fi
-		cat > "$uniqueName"
-		stdinUnread=false
-	    fi
-	    ;;
-	*)
-	    pdfName=$(basename "$sourcePath")
-	    sourceDir=$(dirname "$sourcePath") ## zsh on Mac OS 10.5 chokes here
-	    cd "$sourceDir" || exit 1   ##  just to get the full path
-	    sourceDir=$(pwd)
-	    cd "$pwd" || exit 1
-	    sourceFullPath="$sourceDir"/"$pdfName"
-	    uniqueName="source-$counter.pdf"
-	    uniqueName="$PDFJAM_TEMP_DIR"/"$uniqueName"
-	    ## Next is from the Cygwin patch contributed by Lucas
-	    if using_non_cygwin_latex_from_cygwin; then
-		cp "$sourceFullPath" "$uniqueName"
-	    else
-		ln -s "$sourceFullPath" "$uniqueName"
-	    fi
-	    ;;
-    esac
-    filePageList="$filePageList","$uniqueName","$pageSpec"
-done
-IFS="$OIFS"
-filePageList=$(printf "%s" "$filePageList" | \
-    sed 's/^,//')  ## remove leading comma
-##
-##  Do the pdfinfo stuff (if relevant)...
-##
-select_pdfinfo () {
-    printf '%s' "$2" | \
-    grep -e "^$1:" | \
-    sed -e 's/^'"$1"':\s*//'
-}
-echo_hex_iconv_utf16be () {
-    printf '%s' "$1" | \
-    "$iconv" -f utf8 -t utf16be | \
-    od -An -v -tx1 | \
-    tr -d '[:space:]'
-}
-echo_pdfinfodata () {
-    if [ -n "$2" ]; then
-	TMPA=$(echo_hex_iconv_utf16be "$2")
-	printf '%s' "/$1 <feff${TMPA}>"
-    fi
-}
-
-if test "$keepinfo" = true ; then
-    prattle "Calling ${pdfinfo}..."
-    PDFinfo=$(pdfinfo -enc UTF-8 "$uniqueName")
-    pdftitl=$(select_pdfinfo 'Title'    "$PDFinfo")
-    pdfauth=$(select_pdfinfo 'Author'   "$PDFinfo")
-    pdfsubj=$(select_pdfinfo 'Subject'  "$PDFinfo")
-    pdfkeyw=$(select_pdfinfo 'Keywords' "$PDFinfo")
-fi
-echo_iconv_from_enc () {
-    printf '%s' "$2" | \
-    "$iconv" -f "$1" -t utf8
-}
-if test -n "$pdfTitle" ; then
-    pdftitl=$(echo_iconv_from_enc "$enc" "$pdfTitle")
-fi
-if test -n "$pdfAuthor" ; then
-    pdfauth=$(echo_iconv_from_enc "$enc" "$pdfAuthor")
-fi
-if test -n "$pdfSubject" ; then
-    pdfsubj=$(echo_iconv_from_enc "$enc" "$pdfSubject")
-fi
-if test -n "$pdfKeywords" ; then
-    pdfkeyw=$(echo_iconv_from_enc "$enc" "$pdfKeywords")
-fi
-
-## Converting to PDF string
-raw_pdftitl=$(echo_pdfinfodata 'Title'    "$pdftitl")
-raw_pdfauth=$(echo_pdfinfodata 'Author'   "$pdfauth")
-raw_pdfsubj=$(echo_pdfinfodata 'Subject'  "$pdfsubj")
-raw_pdfkeyw=$(echo_pdfinfodata 'Keywords' "$pdfkeyw")
-
-##
-##  Now set up the files for latex...
-##
-fileName="$PDFJAM_TEMP_DIR"/a
-texFile="$fileName".tex
-msgFile="$fileName".msgs
-tempFile="$PDFJAM_TEMP_DIR"/temp.tex
-## Next is adapted from the Cygwin patch sent by Lucas
-if using_non_cygwin_latex_from_cygwin; then
-    filePageList=$(echo "$filePageList" | sed 's~\\~/~g')
-fi
-(cat <<EndTemplate
-\batchmode
-\documentclass[$documentOptions]{article}
-\usepackage{color} \definecolor{bgclr}{RGB}{$pagecolor} \pagecolor{bgclr}
-\usepackage[$papersize]{geometry}
-\usepackage[utf8]{inputenc}
-\ifdefined\luatexversion% LuaLaTeX
-  \protected\def\pdfinfo{\pdfextension info}
-\fi
-\ifdefined\XeTeXversion% XeLaTeX
-  \protected\def\pdfinfo#1{\AtBeginDvi{\special{pdf:docinfo << #1 >>}}}
-\fi
-\ifdefined\pdfinfo%
-  \pdfinfo{%
-    $raw_pdftitl %
-    $raw_pdfauth %
-    $raw_pdfsubj %
-    $raw_pdfkeyw %
-  }%
-\fi
-\usepackage{pdfpages}
-EndTemplate
-    )  > "$texFile"
-if test -z "$geometry" ; then geometry=false ; fi
-if test "$geometry" = false; then   ## geometry package is not to be used
-    cp "$texFile" "$tempFile"
-    sed '/\\\usepackage.*{geometry}/d' "$tempFile" > "$texFile"
-    rm "$tempFile"
-fi
-if test -z "$pagecolor"; then   ## color package is not needed
-    cp "$texFile" "$tempFile"
-    sed '/\\\usepackage.*{color}/d' "$tempFile" > "$texFile"
-    rm "$tempFile"
-fi
-(cat <<EndTemplate
-$preamble
-$shortedge
-\begin{document}
-\includepdfmerge[$miscOptions]{$filePageList}
-\end{document}
-EndTemplate
-    )  >> "$texFile"
-##
-##  INPUT FILES ARE ALL READY
-##
-#########################################################################
-##
-##  RUN LATEX AND COPY THE RESULTING PDF FILE 
-##
-if [ "$runs" -eq 1 ] ;
-then prattle "Calling ${latex}..."
-else prattle "Calling ${latex} $runs times..."
-fi
-cd "$PDFJAM_TEMP_DIR" || exit 1
-failureText=\
-"FAILED.
-The call to $latex resulted in an error.
-If '--no-tidy' was used, you can examine the
-log file at
-        $fileName.log
-to try to diagnose the problem."
-i=1
-while [ "$i" -le "$runs" ] ; do
-    "$latex" "$texFile" > "$msgFile" || {
-        prattle "$failureText"
-        error_exit "Run $i: Output file not written" $E_SOFTWARE
-    }
-    i=$((i + 1))
-done
-cd "$pwd" || exit 1
-if test -f "$fileName".pdf  ## if LaTeX didn't choke
-then
-    ##  Checks on output file path:
-    if test -d "$outFile"  ## outfile is a directory
-    then
-	if test "$sourcePath" = /dev/stdin 
-	then
-	    error_exit \
-		"--outfile cannot be a directory when input is stdin" \
-		$E_USAGE
-	fi
-	if test ! -w "$outFile"
-	then
-	    error_exit \
-        "FAILED: no write permission on ${outFile}." \
-	    $E_OSFILE
-	fi
-        separator="-"
-	if test "$pageSpec" != "-"
-	then
-	    separator=-"$pageSpec"-
-	fi
-	outFile=$(printf "%s" "$outFile" | sed 's/\/$//')
-                ## (delete any trailing slash)
-	pdfName=$(basename "$sourcePath")
-	pdfName=$(printf "%s" "$pdfName" | \
-	    sed 's/\.[pP][dD][fF]$//')       ## strip extension
-	pdfName="$pdfName$separator$suffix".pdf
-	outFile="$outFile"/"$pdfName"
-    fi		
-fi
-if  test -f "$outFile"  &&  test ! -w "$outFile"
-    ## file exists and we can't over-write it
-then
-    error_exit "no write permission at ${outFile}" $E_CANTCREATE
-fi
-#fileSize=$(wc -c < "$fileName.pdf" | sed 's/^\ *//')
-## Avoid explicit output to /dev/stdout.
-if test "$outFile" = "/dev/stdout" \
-   && cat "$fileName".pdf 2> /dev/null \
-   || cat "$fileName".pdf > "$outFile" 2>/dev/null
-then
-    prattle "Finished.  Output was written to '${outFile}'."
-else
-    error_exit "cannot write output at ${outFile}" $E_CANTCREATE
-fi
-if [ "$PDFJAM_CALL_NUMBER" = "0" ] && [ "$verbose" = "true" ]
-then cat "$PDFJAM_MESSAGES_FILE" >&2
-fi
-exit 0
-##
-##  END
-##
-#########################################################################

Modified: trunk/Master/texmf-dist/doc/support/pdfjam/tests.zip
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/scripts/pdfjam/pdfjam
===================================================================
--- trunk/Master/texmf-dist/scripts/pdfjam/pdfjam	2023-06-27 20:11:48 UTC (rev 67499)
+++ trunk/Master/texmf-dist/scripts/pdfjam/pdfjam	2023-06-27 20:12:07 UTC (rev 67500)
@@ -1,5 +1,5 @@
 #!/bin/sh
-version=3.04
+version=3.05
 #########################################################################
 ##                                                                     ##
 ##  pdfjam: A shell-script interface to the "pdfpages" LaTeX package   ##
@@ -152,8 +152,8 @@
      --paper PAPERSPEC  (or simply --PAPERSPEC)
                   Specify a LaTeX paper size, for example
                   '--paper a4paper' or simply '--a4paper' for ISO A4 paper.
-                  If the LaTeX 'geometry' package is installed, a wider range
-                  of paper sizes is available.  For details see documentation
+                  A wide range of paper sizes is available thanks to the
+                  LaTeX 'geometry' package.  For details see documentation
                   for LaTeX and/or the 'geometry' package.
                   [Default for you at this site: paper=$paper]
      --papersize '{WIDTH,HEIGHT}'
@@ -160,7 +160,6 @@
                   Specify a custom paper size, e.g.,
                       --papersize '{10in,18cm}'
                   (Note the braces, and the comma!)
-                  If the 'geometry' package is not found, this has no effect.
      --pagecolor RGBSPEC
                   Specify a background colour for the output pages.  The 
                   RGBSPEC must be a comma-separated trio of integers
@@ -413,22 +412,19 @@
 ##
 preamble=''                ##  Default LaTeX preamble string.
 ##
-##  Guess default paper size from locale if possible, otherwise A4
+##  Get default paper size from libpaper >= 2 if possible, otherwise guess A4
 ##
-if command -v locale >/dev/null ; then
-    paperheight=$(locale -k LC_PAPER | sed -e '1!d' -e 's/.*=//') ;
-    case $paperheight in
-	297)
-	    paper='a4paper' ;
-	    ;;
-	279)
-	    paper='letterpaper' ;
-	    ;;
-	*)
-	    paper='a4paper' ;
-	    ;;
-    esac
-else paper='a4paper' ;  ## fallback paper size is ISO A4
+if command -v paper >/dev/null ; then
+    paperspec=$(paper)
+    paperdimensions=$(echo "$paperspec" | cut -f 2 -d " ")
+    paperunit=$(echo "$paperspec" | cut -f 3 -d " ")
+    if test "$paperunit" = "pt"; then paperunit=bp; fi
+    paperwidth=$(echo "$paperdimensions" | cut -f 1 -d "x")
+    paperheight=$(echo "$paperdimensions" | cut -f 2 -d "x")
+    papersize="papersize={$paperheight$paperunit,$paperwidth$paperunit}"
+    paper='' ## We might not have a LaTeX-compatible name
+else
+    paper='a4paper'  ## fallback paper size is ISO A4
 fi
 ##
 ##  END OF SETTINGS MADE DIRECTLY WITHIN THE SCRIPT
@@ -670,31 +666,22 @@
 			pagecolor="${2}" ;
 			callOptions="$callOptions ${1} ${2}" ;
 			shift ;;
-                    --a4paper | --a5paper | --b5paper | --letterpaper | \
-                        --executivepaper | --legalpaper)
-			##  standard LaTeX paper sizes
+		    --a0paper | --a1paper | --a2paper | --a3paper | \
+                        --a4paper | --a5paper | --a6paper | \
+                        --b0paper | --b1paper | --b2paper | \
+			--b3paper | --b4paper | --b5paper | --b6paper | \
+                        --c0paper | --c1paper | --c2paper | \
+			--c3paper | --c4paper | --c5paper | --c6paper | \
+                        --b0j | --b1j | --b2j | --b3j | --b4j | --b5j | --b6j | \
+                        --ansiapaper | --ansibpaper | --ansicpaper | \
+                        --ansidpaper | --ansiepaper | \
+                        --letterpaper | --legalpaper | --executivepaper)
 			paper=$(printf "%s" "${1}" | sed 's/^--//') ;
 			callOptions="$callOptions ${1}" ;
 			;;
-		    --a0paper | --a1paper | --a2paper | --a3paper | \
-                        --a6paper | --b0paper | --b1paper | --b2paper | \
-			--b3paper | --b4paper | --b6paper)
-			##  the 'geometry' package is needed
-			if test "$geometry" != false ;
-			then
-			    paper=$(printf "%s" "${1}" | sed 's/^--//') ;
-			    callOptions="$callOptions ${1}" ;
-			    geometry=true ;
-			fi ;
-			;;
 		    --papersize)
-			##  the 'geometry' package is needed
-			if test "$geometry" != false ;
-			then
-			    papersize="papersize=${2}" ;
-			    callOptions="$callOptions ${1} '${2}'" ;
-			    geometry=true ;
-			fi ;
+			papersize="papersize=${2}" ;
+			callOptions="$callOptions ${1} '${2}'" ;
 			shift ;;
 		    --landscape)
 			landscape=true ;
@@ -859,20 +846,6 @@
     *)
 	shortedge='\usepackage{everyshi}\makeatletter\EveryShipout{\ifodd\c at page\pdfpageattr{/Rotate 180}\fi}\makeatother' ;;
 esac
-if test "$geometry" != false
-then
-##  we haven't already found that geometry.sty is missing
-    case $paper in
-	a0paper | a1paper | a2paper | a3paper | \
-            a6paper | b0paper | b1paper | b2paper | \
-	    b3paper | b4paper | b6paper)
-	    ##  the 'geometry' package is needed
-	    geometry=true ;
-	    ;;
-	*)
-	    ;;
-    esac
-fi
 documentOptions="$paper","$orientation","$twoside"
 documentOptions=$(printf "%s" "$documentOptions" | sed 's/^,//' | sed 's/,$//')
 ##
@@ -913,25 +886,12 @@
 	"LaTeX package pdfpages.sty is not installed" \
 	$E_UNAVAILABLE
 
-    for pack in pdflscape eso-pic everyshi atbegshi ; do
+    for pack in geometry pdflscape eso-pic everyshi atbegshi ; do
         (kpsewhich $pack.sty >/dev/null) ||
         error_exit \
 	    "LaTeX package $pack.sty is not installed (see the pdfpages manual)" \
 	    $E_UNAVAILABLE
     done
-    if test "$geometry" = true
-    ##  ie, if the 'geometry' package is needed for paper size
-    then
-	(kpsewhich geometry.sty >/dev/null) || {
-	    prattle "LaTeX package geometry.sty is not installed, so only the"
-	    prattle "standard LaTeX paper sizes are available." 1
-	    geometry=false
-	    if test "$batch" = true
-	    then
-		export geometry   ## for use in any secondary calls
-	    fi
-	}
-    fi
 fi
 if  test "$keepinfo" = true
 then
@@ -1269,12 +1229,6 @@
 \usepackage{pdfpages}
 EndTemplate
     )  > "$texFile"
-if test -z "$geometry" ; then geometry=false ; fi
-if test "$geometry" = false; then   ## geometry package is not to be used
-    cp "$texFile" "$tempFile"
-    sed '/\\\usepackage.*{geometry}/d' "$tempFile" > "$texFile"
-    rm "$tempFile"
-fi
 if test -z "$pagecolor"; then   ## color package is not needed
     cp "$texFile" "$tempFile"
     sed '/\\\usepackage.*{color}/d' "$tempFile" > "$texFile"



More information about the tex-live-commits mailing list.