\combinepages[]: Change order
Hello, Using \combinepages[some-pdf][nx=3,ny=5], I get: 1 2 3 4 5 6 7 8 9 10 11 12 However, I'd like to get: 1 5 9 2 6 10 3 7 11 4 8 12 How can one achieve this? (I want to create again a poster out of talk.pdf.) Tobias
2006/10/7, Tobias Burnus
Hello,
Using \combinepages[some-pdf][nx=3,ny=5], I get:
1 2 3 4 5 6 7 8 9 10 11 12
However, I'd like to get: 1 5 9 2 6 10 3 7 11 4 8 12
How can one achieve this? (I want to create again a poster out of talk.pdf .)
Tobias
Hi Tobias, I can provide a first draft of a solution to your problem. The frame around the combination should you show a small problem with my correction, it is up to you change this and maybe to wikify this. \unprotect \startvariables dutch english german czech italian romanian french horizontal: horizontal horizontal horizontal horizontal horizontal horizontal horizontal \stopvariables \def\docombinepages[#1][#2]% a=perpag b=free {\bgroup \dontcomplain \getfiguredimensions[#1]% \getparameters [\??ip] [\c!alternative=\v!a, \c!n=\noffigurepages,\c!nx=2,\c!ny=2,\c!start=1,\c!stop=\!!maxcard, \c!distance=\bodyfontsize, \c!bottom=\vfill,\c!top=\vss, \c!left=\hss,\c!right=\hss, \c!before=\page,\c!after=\page,\c!inbetween=\blank, \c!frame=,\c!background=,\c!backgroundcolor=, \c!direction=\v!horizontal, % added #2]% \@@ipbefore %\doglobal\newcounter\combinedpagescounter \globallet\combinedpagescounter\@@ipstart \doifelse\@@ipalternative\v!b\!!doneafalse\!!doneatrue \if!!donea \doifelse\@@ipdirection\v!horizontal % added % loop for left to right and top to bottom combination {\doloop {\vbox to \textheight {\hsize\textwidth % ? ? \scratchdimen\@@ipdistance \!!widtha \dimexpr(\hsize-\@@ipnx\scratchdimen+\scratchdimen)/\@@ipnx\relax \!!heighta\dimexpr(\vsize-\@@ipny\scratchdimen+\scratchdimen)/\@@ipny\relax \dorecurse\@@ipny {\hbox to \hsize {\dorecurse\@@ipnx {\vbox to \!!heighta {\hsize\!!widtha \vsize\!!heighta \@@iptop \hbox to \hsize {\@@ipleft \ifnum\combinedpagescounter>\@@ipstop\relax \globallet\@@ipn\!!zerocount \else\ifnum\combinedpagescounter>\@@ipn \else \externalfigure[#1] [\c!object=\v!no, \c!page=\combinedpagescounter, \c!factor=\v!max, \c!background=\@@ipbackground, \c!backgroundcolor=\@@ipbackgroundcolor, \c!frame=\@@ipframe]% \fi\fi \@@ipright} \@@ipbottom}% \doglobal\increment\combinedpagescounter \hfil}% \hfilneg} \vfil}% \vfilneg}% \page \ifnum\combinedpagescounter>\@@ipn \exitloop\fi}} % loop for top to bottom and left to right combination {\doloop {\vbox %to \textheight {\hsize\textwidth \scratchdimen\@@ipdistance \!!widtha \dimexpr(\hsize-\@@ipnx\scratchdimen+\scratchdimen)/\@@ipnx\relax \!!heighta\dimexpr(\vsize-\@@ipny\scratchdimen+\scratchdimen)/\@@ipny\relax \hbox to \hsize {\dorecurse\@@ipnx {\@@ipleft \vbox to \textheight {\hsize\!!widtha {\dorecurse\@@ipny {\@@iptop \hbox to \hsize {\vbox to \!!heighta {\hsize\!!widtha \vsize\!!heighta \ifnum\combinedpagescounter>\@@ipstop\relax \globallet\@@ipn\!!zerocount \else\ifnum\combinedpagescounter>\@@ipn \else \externalfigure[#1] [\c!object=\v!no, \c!page=\combinedpagescounter, \c!factor=\v!max, \c!background=\@@ipbackground, \c!backgroundcolor=\@@ipbackgroundcolor, \c!frame=\@@ipframe]% \fi\fi}} \doglobal\increment\combinedpagescounter \@@ipbottom}% %\doglobal\increment\combinedpagescounter \vfil}% \vfilneg} \hfil}% \hfilneg}} \page \ifnum\combinedpagescounter>\@@ipn \exitloop\fi}} \else \doloop {\startbaselinecorrection \scratchdimen\@@ipdistance \!!widtha\dimexpr(\hsize-\@@ipnx\scratchdimen+\scratchdimen)/\@@ipnx\relax \hbox to \hsize {\dorecurse\@@ipnx {\doglobal\increment\combinedpagescounter \ifnum\combinedpagescounter>\@@ipn \else \expanded{\externalfigure[#1] [\c!page=\combinedpagescounter, \c!width=\the\!!widtha,% todo \freezedimenmacro \c!background=\@@ipbackground, \c!backgroundcolor=\@@ipbackgroundcolor, \c!frame=\@@ipframe]}% \hfill \fi}\hfillneg}% \stopbaselinecorrection \ifnum\combinedpagescounter<\@@ipn\relax \@@ipinbetween \else \exitloop \fi} \fi \@@ipafter \egroup} \protect \starttext \framed{\combinepages[your-pdf][nx=4,ny=6,direction=vertical]} \framed{\combinepages[your-pdf][nx=4,ny=6]} \stoptext Wolfgang
2006/10/9, Wolfgang Schuster
2006/10/7, Tobias Burnus
: Hello,
Using \combinepages[some-pdf][nx=3,ny=5], I get:
1 2 3 4 5 6 7 8 9 10 11 12
However, I'd like to get: 1 5 9 2 6 10 3 7 11 4 8 12
How can one achieve this? (I want to create again a poster out of talk.pdf.)
Tobias
Hi Tobias,
I can provide a first draft of a solution to your problem.
The frame around the combination should you show a small problem with my correction, it is up to you change this and maybe to wikify this.
[old macro deleted] I changed the macro to a (for mee) more readable form. \unprotect % a new variable for horizontal (default) direction \startvariables dutch english german czech italian romanian french horizontal: horizontal horizontal horizontal horizontal horizontal horizontal horizontal \stopvariables % we extract the combine macros from the core \def\docombinepages[#1][#2]% a=perpag b=free {\bgroup \dontcomplain \getfiguredimensions[#1]% \getparameters [\??ip] [\c!alternative=\v!a, \c!n=\noffigurepages,\c!nx=2,\c!ny=2,\c!start=1,\c!stop=\!!maxcard, \c!distance=\bodyfontsize, \c!bottom=\vfill,\c!top=\vss, \c!left=\hss,\c!right=\hss, \c!before=\page,\c!after=\page,\c!inbetween=\blank, \c!frame=,\c!background=,\c!backgroundcolor=, \c!direction=\v!horizontal, #2]% \@@ipbefore %\doglobal\newcounter\combinedpagescounter \globallet\combinedpagescounter\@@ipstart \doifelse\@@ipalternative\v!b\!!doneafalse\!!doneatrue \doifelse\@@ipdirection\v!horizontal\docombinepageshorizontal\docombinepagesvertical#1 % watch the #1 ;-) \@@ipafter \egroup} % we work from left to right and from top to bottom \def\docombinepageshorizontal#1 {\if!!donea \doloop {\vbox to \textheight {\hsize\textwidth % ? ? \scratchdimen\@@ipdistance \!!widtha \dimexpr(\hsize-\@@ipnx\scratchdimen+\scratchdimen)/\@@ipnx\relax \!!heighta\dimexpr(\vsize-\@@ipny\scratchdimen+\scratchdimen)/\@@ipny\relax \dorecurse\@@ipny {\hbox to \hsize {\dorecurse\@@ipnx {\vbox to \!!heighta {\hsize\!!widtha \vsize\!!heighta \@@iptop \hbox to \hsize {\@@ipleft \ifnum\combinedpagescounter>\@@ipstop\relax \globallet\@@ipn\!!zerocount \else\ifnum\combinedpagescounter>\@@ipn \else \externalfigure[#1] [\c!object=\v!no, \c!page=\combinedpagescounter, \c!factor=\v!max, \c!background=\@@ipbackground, \c!backgroundcolor=\@@ipbackgroundcolor, \c!frame=\@@ipframe]% \fi\fi \@@ipright} \@@ipbottom}% \doglobal\increment\combinedpagescounter \hfil}% \hfilneg} \vfil}% \vfilneg}% \page \ifnum\combinedpagescounter>\@@ipn \exitloop\fi} \else \doloop {\startbaselinecorrection \scratchdimen\@@ipdistance \!!widtha\dimexpr(\hsize-\@@ipnx\scratchdimen+\scratchdimen)/\@@ipnx\relax \hbox to \hsize {\dorecurse\@@ipnx {\doglobal\increment\combinedpagescounter \ifnum\combinedpagescounter>\@@ipn \else \expanded{\externalfigure[#1] [\c!page=\combinedpagescounter, \c!width=\the\!!widtha,% todo \freezedimenmacro \c!background=\@@ipbackground, \c!backgroundcolor=\@@ipbackgroundcolor, \c!frame=\@@ipframe]}% \hfill \fi}\hfillneg}% \stopbaselinecorrection \ifnum\combinedpagescounter<\@@ipn\relax \@@ipinbetween \else \exitloop \fi} \fi} % we work from top to bottom and from left to right, no alternative=b \def\docombinepagesvertical#1 {\doloop {\vbox %to \textheight % neccesary? {\hsize\textwidth \vsize\textheight \scratchdimen\@@ipdistance \!!widtha \dimexpr(\hsize-\@@ipnx\scratchdimen+\scratchdimen)/\@@ipnx\relax \!!heighta\dimexpr(\vsize-\@@ipny\scratchdimen+\scratchdimen)/\@@ipny\relax \hbox to \hsize {\dorecurse\@@ipnx {\vbox to \vsize {\hsize\!!widtha \dorecurse\@@ipny {\@@iptop \hbox to \hsize {\@@ipleft \vbox to \!!heighta {\hsize\!!widtha \vsize\!!heighta \ifnum\combinedpagescounter>\@@ipstop\relax \globallet\@@ipn\!!zerocount \else\ifnum\combinedpagescounter>\@@ipn \else \externalfigure[#1] [\c!object=\v!no, \c!page=\combinedpagescounter, \c!factor=\v!max, \c!background=\@@ipbackground, \c!backgroundcolor=\@@ipbackgroundcolor, \c!frame=\@@ipframe]% \fi\fi}% \@@ipright} \doglobal\increment\combinedpagescounter \@@ipbottom} \vfil}% \hfil} \hfilneg} \vfilneg} \page \ifnum\combinedpagescounter>\@@ipn \exitloop\fi}} \protect
\starttext
\framed{\combinepages[your-pdf][nx=4,ny=6,direction=vertical]}
\framed{\combinepages[your-pdf][nx=4,ny=6]}
\stoptext
Wolfgang
Wolfgang Schuster wrote:
I changed the macro to a (for mee) more readable form.
i changed your first patch to an 'alternative c' option with split up macro's directiuon is reserved for directional typesetting
\doifelse\@@ipdirection\v!horizontal\docombinepageshorizontal\docombinepagesvertical#1 % watch the #1 ;-)
see patch i sent you; we can avoid the #1 ; will be in the next beta also imagine that #1 is blabla and not a \cs ... in sich cases you really need {#1} so: ...[alternative=a|b|c|horizontal|vertical] Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------
2006/10/10, Hans Hagen
Wolfgang Schuster wrote:
I changed the macro to a (for mee) more readable form.
i changed your first patch to an 'alternative c' option with split up macro's directiuon is reserved for directional typesetting
\doifelse\@@ipdirection\v!horizontal\docombinepageshorizontal\docombinepagesvertical#1
% watch the #1 ;-)
see patch i sent you; we can avoid the #1 ; will be in the next beta
also imagine that #1 is blabla and not a \cs ... in sich cases you really need {#1}
so: ...[alternative=a|b|c|horizontal|vertical]
Hans
Hi Hans, if I look at your it seems to me alternative=horizontal|vertical will be similiar to alternative=b and not horizontal==a and vertical==c as I thought. You're right about the #1 but this is my method of lerning of TeX. Help other people and try to understand how things work. Wolfgang
Wolfgang Schuster wrote:
2006/10/10, Hans Hagen
mailto:pragma@wxs.nl>: Wolfgang Schuster wrote: > > I changed the macro to a (for mee) more readable form. i changed your first patch to an 'alternative c' option with split up macro's directiuon is reserved for directional typesetting > > > > > \doifelse\@@ipdirection\v!horizontal\docombinepageshorizontal\docombinepagesvertical#1 > % watch the #1 ;-) > > see patch i sent you; we can avoid the #1 ; will be in the next beta
also imagine that #1 is blabla and not a \cs ... in sich cases you really need {#1}
so: ...[alternative=a|b|c|horizontal|vertical]
Hans
Hi Hans,
if I look at your it seems to me alternative=horizontal|vertical will be similiar to alternative=b and not horizontal==a and vertical==c as I thought.
can you test the beta? the code is in there now Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------
2006/10/10, Hans Hagen
Wolfgang Schuster wrote:
2006/10/10, Hans Hagen
mailto:pragma@wxs.nl>: Wolfgang Schuster wrote: > > I changed the macro to a (for mee) more readable form. i changed your first patch to an 'alternative c' option with split
up
macro's directiuon is reserved for directional typesetting > > > > >
\doifelse\@@ipdirection\v!horizontal\docombinepageshorizontal\docombinepagesvertical#1
> % watch the #1 ;-) > > see patch i sent you; we can avoid the #1 ; will be in the next beta
also imagine that #1 is blabla and not a \cs ... in sich cases you really need {#1}
so: ...[alternative=a|b|c|horizontal|vertical]
Hans
Hi Hans,
if I look at your it seems to me alternative=horizontal|vertical will be similiar to alternative=b and not horizontal==a and vertical==c as I thought.
can you test the beta? the code is in there now
Hans
Hi Hans, I looked yesterday only at your E-Mail, after I tried today the new beta everything works fine and as expected with all alternatives. Wolfgang
participants (3)
-
Hans Hagen
-
Tobias Burnus
-
Wolfgang Schuster