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