summaryrefslogtreecommitdiff
path: root/support
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2021-04-26 03:00:32 +0000
committerNorbert Preining <norbert@preining.info>2021-04-26 03:00:32 +0000
commit03117c94362b2fed2fd4aabe50f3106fbf1e0a70 (patch)
treee9c379ff69ea790a0059725aebd5048e8d773e45 /support
parent31672400f6cb00d38c0e707da2640589b6d5c523 (diff)
CTAN sync 202104260300
Diffstat (limited to 'support')
-rw-r--r--support/pdfxup/README4
-rw-r--r--support/pdfxup/RELEASES15
-rwxr-xr-xsupport/pdfxup/pdfxup61
-rw-r--r--support/pdfxup/pdfxup-template.tex250
-rw-r--r--support/pdfxup/pdfxup.142
-rw-r--r--support/pdfxup/pdfxup.pdfbin89505 -> 90395 bytes
6 files changed, 262 insertions, 110 deletions
diff --git a/support/pdfxup/README b/support/pdfxup/README
index f2f7738538..05a36f5f4b 100644
--- a/support/pdfxup/README
+++ b/support/pdfxup/README
@@ -1,4 +1,4 @@
-PDFXUP -- v2.00 (2020/12/17)
+PDFXUP -- v2.10 (2021/04/25)
N. Markey <pdfxup@markey.fr>
@@ -18,7 +18,7 @@ graphicx package) in order to produce the new document.
-%% (c) 2020/12/17 Nicolas Markey <pdfxup at markey dot fr>
+%% (c) 2021/04/25 Nicolas Markey <pdfxup at markey dot fr>
%%
%% This work may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License, either version 1.3 of this license
diff --git a/support/pdfxup/RELEASES b/support/pdfxup/RELEASES
index 06f0951bc3..a9f1fedc6a 100644
--- a/support/pdfxup/RELEASES
+++ b/support/pdfxup/RELEASES
@@ -4,7 +4,7 @@
##
##################################################################
Author: Nicolas Markey
-Please send your comments to <pdfxup@markey.fr>
+Please send your comments and bug reports to <pdfxup@markey.fr>
v1.00 (2015/08/23)
- first release
@@ -50,4 +50,15 @@ v2.00 (2020/12/17)
extension .xup) can be used to define default values
for frequent situations.
- cleaned-up man page, adding some missing options (thanks
- to Louis Gostiaux for pointing undocumented options) \ No newline at end of file
+ to Louis Gostiaux for pointing undocumented options)
+
+v2.10 (2021/04/25)
+ - fixed a bug due to ghostscript adding a patch-level number in
+ their version number. This is the bug reported in
+ https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=976080
+ It was solved with the help of Christian Gnaegi.
+ - fixed 2 bugs in the computations of size of pages
+ - fixed a bug which inhibited short-edge option of booklets
+ - added options --col (to fill in pages vertically first) and --bal
+ (to balance columns (or rows) the last page). This feature was
+ requested by Philipp Killinger.
diff --git a/support/pdfxup/pdfxup b/support/pdfxup/pdfxup
index 12ac684ede..c53607b82a 100755
--- a/support/pdfxup/pdfxup
+++ b/support/pdfxup/pdfxup
@@ -2,12 +2,12 @@
shopt -s extglob
shopt -s lastpipe
-VERSION="2.00"
-VDATE="2020/12/17"
+VERSION="2.10"
+VDATE="2021/04/25"
## see release notes at the end of this file.
-## (c) 2020/12/17 Nicolas Markey <pdfxup at markey dot fr>
+## (c) 2021/04/25 Nicolas Markey <pdfxup at markey dot fr>
##
## This work may be distributed and/or modified under the conditions of
## the LaTeX Project Public License, either version 1.3 of this license
@@ -83,6 +83,8 @@ function defaultvalues()
: ${dfpdfxupSILENTLY_OVERWRITE="0"}
: ${dfpdfxupSET_BBOX=""}
: ${dfpdfxupTIGHT_FRAME="0"}
+ : ${dfpdfxupCOLUMN="0"}
+ : ${dfpdfxupBALANCELAST="0"}
}
function setdefaultvalues()
@@ -140,11 +142,16 @@ function setdefaultvalues()
TIGHT_FRAME=$dfpdfxupTIGHT_FRAME;
# initial bounding box
SET_BBOX=$dfpdfxupSET_BBOX
-
+ # pages displayed left-to-right first (default), or top-to-bottom first
+ COLUMN=$dfpdfxupCOLUMN
+ # balance last page (corresponds to option 'columnstrict' option
+ # in the pdfpages manual; also works in "non-column" mode)
+ BALANCELAST=$dfpdfxupBALANCELAST
+
## Notice: the names for h and w should actually be X and Y:
## they are not width and height, but coordinates of upper right corner.
- ## Notice: PAGES, INCLUDE_FOR_BBOX and EXCLUDE_FOR_BBOX will be set to default values if empty after
- ## processing options
+ ## Notice: PAGES, INCLUDE_FOR_BBOX and EXCLUDE_FOR_BBOX will be set to
+ ## default values if empty after processing options
}
######################################################################
@@ -204,9 +211,11 @@ See the manual page ('man pdfxup') for the list of all options.";
## -ow allow overwriting [default: \"$dfpdfxupSILENTLY_OVERWRITE\"]
## -ps s output paper size [default: \"$dfpdfxupPAPERSIZE\"]
## -tf draw tight frame around each page [default: \"$dfpdfxupTIGHT_FRAME\"]
+## -col arrange pages top-to-bottom first [default: \"$dfpdfxupCOLUMN\"]
+## -bal balance last page [default: \"$dfpdfxupBALANCELAST\"]
## -q run quietly (equiv. '-V=0')
## -h show this help message
-## -V [0-3] select verbosity [default: \"$dfpdfxupVERBOSITY\"]
+## -V [0-3] select verbosity [default: \"$dfpdfxupVERBOSITY\"]
##
##
##
@@ -445,15 +454,16 @@ fi
defaultvalues;
setdefaultvalues;
filename="temp-pdfxup-`date +%s`";
-inputfilename="input-$filename";
-watermarkfilename="watermark-$filename";
+inputfilename="input-pdfxup-$filename";
+watermarkfilename="watermark-pdfxup-$filename";
######################################################################
## check for ghostscript and pdflatex
######################################################################
## GS could be specified from command-line
: ${GS=`which gs`}
-GSVERSION=`$GS --version 2>/dev/null`;
+## regexp keeps only first two numbers of version number (eg. 9.53.3 -> 9.53)
+GSVERSION=`$GS --version 2>/dev/null |sed -e "s/\(.\.[^\.]*\)\..*/\\1/"`;
if [ ! "$GSVERSION" ]; then
echo " /!\\ ghostscript not found; aborting.";
exit 1;
@@ -620,6 +630,18 @@ while [ $# != 0 ]; do
myecho 0+ " /!\ configuration file $TMP not found"
fi
shift;;
+ -?(-)col|--column|--column-mode|-?(-)vert?(ical))
+ COLUMN=1
+ shift;;
+ -?(-)row|--row-mode|-?(-)line?(s)|-?(-)horiz?(ontal))
+ COLUMN=0
+ shift;;
+ -?(-)bal|--balance|--balancelast|--balance-last)
+ BALANCELAST=1
+ shift;;
+ -?(-)no-bal|--no-balance|--no-balancelast|--no-balance-last)
+ BALANCELAST=0
+ shift;;
-c|--clip)
case $2 in
1|yes|y|true)
@@ -674,7 +696,7 @@ while [ $# != 0 ]; do
shift 2;;
-p*|--page*)
ANS=`echo $1|sed -re "s/--?p(ages?)?=?//"`;
- PAGES=+="$ANS,";
+ PAGES+="$ANS,";
shift;;
-o|--out|--output-file|--outfile)
OUTPUTFILE=$2;
@@ -1351,7 +1373,7 @@ EOF
case $BOOKLET in
0)
echo " \bookletfalse" >> $filename.tex;;
- se)
+ 2)
echo " \booklettrue" >> $filename.tex
echo " \longedgefalse" >> $filename.tex;;
*)
@@ -1387,6 +1409,8 @@ cat >> $filename.tex <<EOF
\def\pdfxupwidefbox{$WIDE_FRAMEBOX}
\def\pdfxuptightfbox{$TIGHT_FRAMEBOX}
\def\pdfxupbbox{$BBOPTION}
+ \def\columnmode{$COLUMN}
+ \def\balancelast{$BALANCELAST}
\input{pdfxup-template}
@@ -1539,7 +1563,7 @@ pdfxup has numerous options:
##
##################################################################
Author: Nicolas Markey
-Please send your comments to <pdfxup@markey.fr>
+Please send your comments and bug reports to <pdfxup@markey.fr>
v1.00 (2015/08/23)
- first release
@@ -1585,3 +1609,14 @@ v2.00 (2020/12/17)
for frequent situations.
- cleaned-up man page, adding some missing options (thanks
to Louis Gostiaux for pointing undocumented options)
+
+v2.10 (2021/04/25)
+ - fixed a bug with ghostscript adding a patch-level number in their
+ version number. This is the bug reported in
+ https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=976080
+ It was solved with the help of Christian Gnaegi.
+ - fixed 2 bugs in the computations of size of pages
+ - fixed a bug which inhibited short-edge option of booklets
+ - added options --col (to fill in pages vertically first) and --bal
+ (to balance columns (or rows) the last page). This feature was
+ requested by Philipp Killinger.
diff --git a/support/pdfxup/pdfxup-template.tex b/support/pdfxup/pdfxup-template.tex
index f5b6839f31..5f7bea843f 100644
--- a/support/pdfxup/pdfxup-template.tex
+++ b/support/pdfxup/pdfxup-template.tex
@@ -1,6 +1,25 @@
+%
+% pdfxup template file
+%
+%% (c) 2021/04/25 Nicolas Markey <pdfxup at markey dot fr>
+%%
+%% This work may be distributed and/or modified under the conditions of
+%% the LaTeX Project Public License, either version 1.3 of this license
+%% or (at your option) any later version. The latest version of this
+%% license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of LaTeX version
+%% 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%% The Current Maintainer of this work is Nicolas Markey.
+
+
\expandafter\ifx\csname pdfxupfile\endcsname\relax
\PackageError{pdfxup}{This file should not be compiled alone}
- {File pdfxup-template.pdf is not meant to be compiled alone.
+ {File pdfxup-template.tex is not meant to be compiled alone.
\MessageBreak
It should only be used via the 'pdfxup' script.}
\fi
@@ -20,17 +39,17 @@
\newcounter{result}%
\newif\iffound
\def\@parserange#1-#2-#3\@end#4\@end{%
- \setcounter{result}{#4}%
- \ifnum\value{result}=1\relax
+ \c@result=#4\relax%
+ \ifnum\c@result=1\relax
\foundtrue
- \setcounter{result}{#1}%
+ \c@result=#1\relax%
\else
- \addtocounter{result}{-1}%
+ \advance\c@result by -1\relax%
\ifx\relax#3\relax%% means that range contains no -
\else
- \addtocounter{result}{#1}%
- \ifnum#2<\value{result}\relax
- \addtocounter{result}{-#2}%
+ \advance\c@result by #1\relax%
+ \ifnum#2<\c@result\relax
+ \advance\c@result by -#2\relax%
\else
\foundtrue
\fi
@@ -40,48 +59,45 @@
\def\@parsecsl#1,#2\@end#3\@end{%
\parserange{#3}{#1}%
\iffound\else
- \ifx\relax#2\relax\else\@parsecsl#2\@end\value{result}\@end\fi\fi}
+ \ifx\relax#2\relax\else\@parsecsl#2\@end\c@result\@end\fi\fi}
%% \nthvalue#1#2 looks for #1-th value in list of intervals #2
\def\nthvalue#1#2{\foundfalse\expandafter\@parsecsl#2,\@end#1\@end}
- %%
-
%% perform various computations:
%% - width and height of image (\hresult and \vresult)
%% - width and height of frame containing image (\hboxsize and \vboxsize)
\newcounter{lastpage}
- \newcounter{outpage}
- \setcounter{outpage}{\pdfxupnbpages}
- \addtocounter{outpage}{-1}
+ \newcounter{outpage}%%% nr of pages of output document
+ \c@outpage=\pdfxupnbpages\relax
+ \advance\c@outpage by -1\relax
\divide\c@outpage by \pdfxupnbhoriz
\divide\c@outpage by \pdfxupnbvert
\ifbooklet
- \divide\c@outpage by 2
+ \divide\c@outpage by 2\relax
\fi
- \stepcounter{outpage}
+ \advance\c@outpage by 1\relax
\ifbooklet
- \multiply\c@outpage by 2
+ \multiply\c@outpage by 2\relax
\fi
- \setcounter{lastpage}{\value{outpage}}
+ \c@lastpage=\c@outpage\relax
\multiply\c@lastpage by \pdfxupnbhoriz
\multiply\c@lastpage by \pdfxupnbvert
- \makeatother
%
\newlength\outputvmargin
\newlength\outputhmargin
- \setlength\outputvmargin{\pdfxupvmargin}
- \setlength\outputhmargin{\pdfxuphmargin}
+ \outputvmargin=\pdfxupvmargin\relax
+ \outputhmargin=\pdfxuphmargin\relax
\newlength\innervmargin
\newlength\innerhmargin
- \setlength\innervmargin{\pdfxupinnervmargin}
- \setlength\innerhmargin{\pdfxupinnerhmargin}
+ \innervmargin=\pdfxupinnervmargin\relax
+ \innerhmargin=\pdfxupinnerhmargin\relax
\newlength\outputindivvmargin
\newlength\outputindivhmargin
- \setlength\outputindivvmargin{\pdfxupintermvspace}
- \setlength\outputindivhmargin{\pdfxupintermhspace}
+ \outputindivvmargin=\pdfxupintermvspace\relax
+ \outputindivhmargin=\pdfxupintermhspace\relax
%
- \fboxsep=0pt%
- \setlength\fboxrule{\pdfxupframewidth}
+ \fboxrule=\pdfxupframewidth\relax
+ \fboxsep=-\fboxrule
\newlength\hresult
\newlength\vresult
\newlength\vboxsize
@@ -94,8 +110,8 @@
\vresult=\paperheight
\advance\vresult by -\pdfxupnbvert\fboxrule
\advance\vresult by -\pdfxupnbvert\fboxrule
- \advance\vresult by -\pdfxupnbvert\innerhmargin
- \advance\vresult by -\pdfxupnbvert\innerhmargin
+ \advance\vresult by -\pdfxupnbvert\innervmargin
+ \advance\vresult by -\pdfxupnbvert\innervmargin
%
\advance\hresult by -2\outputhmargin
\advance\vresult by -2\outputvmargin
@@ -116,14 +132,26 @@
\advance\hboxsize by 2\innerhmargin
- %% compute actual scale by which PDF is shrunk (or extended)
+ \let\pdfxupnblines\pdfxupnbvert
+ \let\pdfxupnbcols\pdfxupnbhoriz
+ \ifnum\columnmode=0\relax
+ %% "row-mode"
+ \def\horizincr{\pdfxupnbhoriz}
+ \def\vertincr{1}
+ \else
+ %% "column-mode"
+ \def\horizincr{1}
+ \def\vertincr{\pdfxupnbvert}%
+ \fi
+
+%% compute actual scale by which PDF is shrunk (or extended)
\ifnum\pdfxupemptybb=0\relax
\newcounter{origx}
- \setcounter{origx}{\pdfxupw}
- \addtocounter{origx}{-\pdfxupx}
+ \c@origx=\pdfxupw\relax
+ \advance\c@origx by -\pdfxupx\relax
\newcounter{origy}
- \setcounter{origy}{\pdfxuph}
- \addtocounter{origy}{-\pdfxupy}
+ \c@origy=\pdfxuph\relax
+ \advance\c@origy by -\pdfxupy\relax
\newlength\finalx
\newlength\finaly
\finalx=\hresult
@@ -148,56 +176,94 @@
%\tracingoutput=1
%\tracingpages=1
%\tracingparagraphs=1
- \makeatletter
- \newcounter{curroutpage}
- \setcounter{curroutpage}{1}
- \addtocounter{curroutpage}{-1}
- \newcounter{currpage}
- \newcounter{currcol}
- \newcounter{currline}
- \newcounter{realout}
- \newcounter{wmout}
- \newcounter{wmoutaux}
- \@whilenum \value{outpage}>\value{curroutpage} \do%
- {\stepcounter{curroutpage}%
- \setcounter{currpage}{\value{curroutpage}}%
- \advance\c@currpage by -1%
- \multiply\c@currpage by \pdfxupnbhoriz%
- \multiply\c@currpage by \pdfxupnbvert%
+ \newcounter{curroutpage}%%%% counts pages nr of output document
+ \c@curroutpage=0\relax
+ \newcounter{currpage}%%%%%%% page nr of input document
+ \newcounter{linecurrpage}%%% currpage at beginning of line
+ \newcounter{currcol}%
+ \newcounter{currline}%
+ \newcounter{realout}%
+ \newcounter{wmout}%
+ \newcounter{wmoutaux}%
+ \@whilenum \c@outpage>\c@curroutpage \do%
+ {\advance\c@curroutpage by 1\relax%
+ %% check if we are on last page, and if so, possibly balance last page
+ \if0\balancelast\relax\else
+ \c@currpage=\c@curroutpage\relax%
+ \multiply\c@currpage by \pdfxupnbhoriz\relax%
+ \multiply\c@currpage by \pdfxupnbvert\relax%
+ \ifnum\c@currpage>\pdfxupnbpages\relax
+ \c@currpage=-\c@curroutpage\relax%
+ \advance\c@currpage by 1 %
+ \multiply\c@currpage by \pdfxupnbhoriz\relax%
+ \multiply\c@currpage by \pdfxupnbvert\relax%
+ \advance\c@currpage by \pdfxupnbpages\relax
+ \ifnum\columnmode=0\relax
+ \advance\c@currpage by -1\relax
+ \divide\c@currpage by \pdfxupnbvert\relax%
+ \advance\c@currpage by 1\relax
+ \edef\horizincr{\thecurrpage}%
+ \edef\pdfxupnbcols{\thecurrpage}%
+ \else
+ \advance\c@currpage by -1\relax
+ \divide\c@currpage by \pdfxupnbhoriz\relax%
+ \advance\c@currpage by 1\relax
+ %\showthe\value{currpage}
+ \edef\vertincr{\thecurrpage}%
+ \edef\pdfxupnblines{\thecurrpage}%
+ %\show\vertincr
+ %\show\horizincr
+ \fi
+ \fi
+ \fi
+ %% start producing page
+ \c@currpage=\c@curroutpage%
+ \advance\c@currpage by -1\relax%
+ \multiply\c@currpage by \pdfxupnbhoriz\relax%
+ \multiply\c@currpage by \pdfxupnbvert\relax%
+ \c@linecurrpage=\c@currpage%
\hrule \@height\z@%
- \setcounter{currline}{0}%
- \vskip \outputvmargin%
- \@whilenum\value{currline}<\pdfxupnbvert \do%
- {\hrule \@height\z@\vskip \outputindivvmargin%
- \ifnum\value{currline}>0\vskip \outputindivvmargin\fi%
- \global\stepcounter{currline}%
- \setcounter{currcol}{0}%
+ \c@currline=0\relax%
+ \vskip\outputvmargin%
+ \@whilenum\c@currline<\pdfxupnblines \do%
+ {\hrule \@height\z@%
+ \ifnum\value{currline}>0\relax%
+ \vskip \outputindivvmargin%
+ \advance\c@linecurrpage by \horizincr\relax%
+ \else%
+ \advance\c@linecurrpage by 1\relax%
+ \fi%
+ \advance\c@currline by 1\relax%
+ \c@currpage=\c@linecurrpage\relax%
+ \c@currcol=0\relax%
\hskip \outputhmargin%
- \@whilenum\value{currcol}<\pdfxupnbhoriz \do%
- {\ifnum\value{currcol}>0\hskip\outputindivhmargin\fi%
- \global\stepcounter{currcol}%
- \global\stepcounter{currpage}%
- \ifnum\value{currpage}>\value{lastpage}\else
+ \@whilenum\c@currcol<\pdfxupnbcols \do%
+ {\ifnum\c@currcol>0\relax%
+ \hskip\outputindivhmargin%
+ \advance\c@currpage by \vertincr\relax%
+ \fi%
+ \advance\c@currcol by 1\relax%
+ \ifnum\c@currpage>\c@lastpage\else
%% computing page number corresponding to \currline and \currcol
- \setcounter{realout}{\value{currpage}}%
+ \c@realout=\c@currpage%
\def\ang{0}%
\ifbooklet
\iflongedge
%% long edge:
%% 1->n, 2->1, 3->n-1 (rotated), 4->2(rotated)...
- \ifodd\value{realout}% -> 1 or 3
- \addtocounter{realout}{-1}%
+ \ifodd\c@realout\relax% -> 1 or 3
+ \advance\c@realout by -1\relax%
\divide\c@realout by 2\relax
- \ifodd\value{realout}% -> 3
+ \ifodd\c@realout\relax% -> 3
\def\ang{180}%
\else% -> 1
\fi
- \setcounter{realout}{-\value{realout}}%
- \addtocounter{realout}{\value{outpage}}%
- \addtocounter{realout}{\value{outpage}}%
+ \c@realout=-\value{realout}\relax%
+ \advance\c@realout by \c@outpage\relax%
+ \advance\c@realout by \c@outpage\relax%
\else% -> 2 or 4
\divide\c@realout by 2\relax
- \ifodd\value{realout}% -> 2
+ \ifodd\c@realout% -> 2
\else% -> 4
\def\ang{180}%
\fi
@@ -205,51 +271,51 @@
\else
%% short edge:
%% 1->n, 2->1, 3->2, 4->n-1, 5->n-2, 6->3, 7->4, 8->n-3
- \ifodd\value{realout}% -> 1 or 3
- \addtocounter{realout}{-1}%
+ \ifodd\c@realout\relax% -> 1 or 3
+ \advance\c@realout by -1\relax%
\divide\c@realout by 2\relax
- \ifodd\value{realout}% -> 3
- \stepcounter{realout}
+ \ifodd\c@realout% -> 3
+ \advance\c@realout by 1\relax
\else% -> 1
- \setcounter{realout}{-\value{realout}}%
- \addtocounter{realout}{\value{outpage}}%
- \addtocounter{realout}{\value{outpage}}%
+ \c@realout=-\c@realout%
+ \advance\c@realout by \c@outpage\relax%
+ \advance\c@realout by \c@outpage\relax%
\fi
\else% -> 2 or 4
\divide\c@realout by 2\relax
- \ifodd\value{realout}% -> 2
+ \ifodd\c@realout\relax% -> 2
\else% -> 4
- \setcounter{realout}{-\value{realout}}%
- \stepcounter{realout}
- \addtocounter{realout}{\value{outpage}}%
- \addtocounter{realout}{\value{outpage}}%
+ \c@realout=-\c@realout\relax%
+ \advance\c@realout by 1\relax
+ \advance\c@realout by \c@outpage\relax%
+ \advance\c@realout by \c@outpage\relax%
\fi
\fi
\fi %% \iflongedge...\else
\fi %% \ifbooklet
- \ifnum\value{realout}>\pdfxupnbpages\relax
+ \ifnum\c@realout>\pdfxupnbpages\relax
%% if page above nb of pages, output blank page
%\hskip\hresult\hskip2\fboxrule
\hskip\hboxsize
\else
%% otherwise compute corresponding page to display
%% first keep realout for watermarking...
- \setcounter{wmoutaux}{\value{realout}}%
- \setcounter{wmout}{\value{realout}}%
- \nthvalue{\value{realout}}{\pdfxuppagelist}%
- \iffound\setcounter{realout}{\value{result}}%
+ \c@wmoutaux=\c@realout\relax%
+ \c@wmout=\c@realout\relax%
+ \nthvalue{\c@realout}{\pdfxuppagelist}%
+ \iffound\c@realout=\c@result\relax%
\else %% hmmm... problem
\message{I'm messed up counting pages...}%
\fi
%% compute watermarking page and display
\ifx\pdfxupwatermark\@empty\else
- \ifnum\pdfxupnbwp<\value{wmoutaux}\relax
- \addtocounter{wmoutaux}{-\pdfxupnbwp}%
- \addtocounter{wmoutaux}{-1}%
+ \ifnum\pdfxupnbwp<\c@wmoutaux\relax
+ \advance\c@wmoutaux by -\pdfxupnbwp\relax%
+ \advance\c@wmoutaux by -1\relax%
\divide\c@wmoutaux by \pdfxupwperiod\relax
- \stepcounter{wmoutaux}%
+ \advance\c@wmoutaux by 1\relax%
\multiply\c@wmoutaux by \pdfxupwperiod\relax
- \addtocounter{wmout}{-\value{wmoutaux}}%
+ \advance\c@wmout by -\c@wmoutaux%
\fi
\vbox to \vboxsize{\vfill
\hbox to \hboxsize{\hfill
diff --git a/support/pdfxup/pdfxup.1 b/support/pdfxup/pdfxup.1
index 5fe8a3e054..75198b87fc 100644
--- a/support/pdfxup/pdfxup.1
+++ b/support/pdfxup/pdfxup.1
@@ -1,6 +1,6 @@
.\" Manpage for pdfxup.
.\" Contact pdfxup@markey.fr to correct errors or typos.
-.TH man 1 "17 december 2020" "2.00" "pdfxup man page"
+.TH man 1 "25 april 2021" "2.10" "pdfxup man page"
.SH NAME
pdfxup \- n-up tool with reduced margins
.SH SYNOPSIS
@@ -123,6 +123,46 @@ repeat the last p pages of the watermark file instead of only the last one.
\fB\-d\fR, \fB\-\-debug\fR
debug mode: keep intermediary files.
.TP
+\fB\-col\fR, \fB\-\-column-mode\fR, \fB\-\-vertical\fR
+fill in pages top-down first (instead of the default left-to-right mode).
+By default, pages are inserted from left to right, until the line is full;
+with this option, pages are inserted from top to bottom, until the column
+is full. See option \fB\-bal\fR below for examples of both options.
+.TP
+\fB\-row\fR, \fB\-\-row-mode\fR, \fB\-\-horizontal\fR
+fill in pages left to right (which is the default mode).
+.TP
+\fB\-bal\fR, \fB\-\-balance-last\fR
+balance last page: when using column mode, the pages are filled in from
+top to bottom, and the last page is no exception. Still, it may be prefered
+that the columns in the last page remains "balanced", which is what this
+option achieves. Symmetrically, in row mode, this option would balance the
+rows.
+.nf
+ --------- ---------
+row, no-balance | 1 2 3 | column, no-balance | 1 4 7 |
+(default mode) | 4 5 6 | | 2 5 8 |
+ | 7 8 9 | | 3 6 9 |
+ --------- ---------
+ --------- ---------
+ |10 11 12 | |10 13 |
+ |13 14 | |11 14 |
+ | | |12 |
+ --------- ---------
+
+ --------- ---------
+ row, balance | 1 2 3 | column, balance | 1 4 7 |
+ | 4 5 6 | | 2 5 8 |
+ | 7 8 9 | | 3 6 9 |
+ --------- ---------
+ --------- ---------
+ |10 11 | |10 12 14 |
+ |12 13 | |11 13 |
+ |14 | | |
+ --------- ---------
+
+.fi
+.TP
\fB\-V [0-3]\fR, \fB\-\-verbose\fR [0-3]
select verbosity (default: 1).
.TP
diff --git a/support/pdfxup/pdfxup.pdf b/support/pdfxup/pdfxup.pdf
index b6e779cb30..d7b289a8a1 100644
--- a/support/pdfxup/pdfxup.pdf
+++ b/support/pdfxup/pdfxup.pdf
Binary files differ