From: "Wolfgang Schuster" <schuster.wolfgang@googlemail.com>
Subject: Re: \combinepages[]: Change order
Date: Mon, 9 Oct 2006 09:39:59 +0200 [thread overview]
Message-ID: <115224fb0610090039o20a56200nd4a1882879b27227@mail.gmail.com> (raw)
In-Reply-To: <4527DD70.9000309@net-b.de>
[-- Attachment #1.1: Type: text/plain, Size: 6160 bytes --]
2006/10/7, Tobias Burnus <burnus@net-b.de>:
>
> 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
[-- Attachment #1.2: Type: text/html, Size: 17544 bytes --]
[-- Attachment #2: Type: text/plain, Size: 139 bytes --]
_______________________________________________
ntg-context mailing list
ntg-context@ntg.nl
http://www.ntg.nl/mailman/listinfo/ntg-context
next prev parent reply other threads:[~2006-10-09 7:39 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-10-07 17:01 Tobias Burnus
2006-10-09 7:39 ` Wolfgang Schuster [this message]
2006-10-10 7:25 ` Wolfgang Schuster
2006-10-10 10:07 ` Hans Hagen
2006-10-10 10:43 ` Wolfgang Schuster
2006-10-10 20:41 ` Hans Hagen
2006-10-11 12:30 ` Wolfgang Schuster
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=115224fb0610090039o20a56200nd4a1882879b27227@mail.gmail.com \
--to=schuster.wolfgang@googlemail.com \
--cc=ntg-context@ntg.nl \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).