summaryrefslogtreecommitdiff
path: root/tex/context/base/page-imp.tex
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/page-imp.tex')
-rw-r--r--tex/context/base/page-imp.tex744
1 files changed, 470 insertions, 274 deletions
diff --git a/tex/context/base/page-imp.tex b/tex/context/base/page-imp.tex
index 535d68717..8e426caf9 100644
--- a/tex/context/base/page-imp.tex
+++ b/tex/context/base/page-imp.tex
@@ -17,12 +17,19 @@
\unprotect
-% to be moved code:
+% sizing bug:
+%
+% \setuppapersize[A4][A4,landscape] \setuparranging[2UP] \showframe
+%
+% \starttext \dorecurse{10}{\input tufte \par} \stoptext
-\newif\ifclippagebox \clippageboxtrue
+% to be moved code:
-\def\clippedpagebox#1#2%
- {\ifclippagebox
+\newif\ifclipprintbox \clipprintboxtrue
+%newif\ifclippagebox \clippageboxtrue
+
+\def\clippedprintbox#1#2% can be made more efficient, see other clipper
+ {\ifclipprintbox
\!!widthc\pagebackgroundoffset
\!!widtha \papierbreedte
\advance\!!widtha \!!widthc
@@ -38,48 +45,88 @@
{\box#2}}%
\setbox#2\hbox to \papierbreedte
{\ifcase#1\relax
+ \!!widthb\zeropoint
\hskip-\!!widthc
- \lower\!!widthc\hbox
- {\clip
- [\c!breedte=\!!widtha,\c!hoogte=\!!heighta,
- \c!hoffset=\zeropoint,\c!voffset=\zeropoint]
- {\box#2}}%
- \or
- \lower\!!widthc\hbox
- {\clip
- [\c!breedte=\!!widtha,\c!hoogte=\!!heighta,
- \c!hoffset=\!!widthc,\c!voffset=\zeropoint]
- {\box#2}}%
- \fi}%
+ \else
+ \!!widthb\!!widthc
+ \fi
+ \lower\!!widthc\hbox
+ {\clip
+ [\c!breedte=\!!widtha,\c!hoogte=\!!heighta,
+ \c!hoffset=\!!widthb,\c!voffset=\zeropoint]
+ {\box#2}}}%
\wd#2\papierbreedte
\ht#2\papierhoogte
\fi
\box#2\relax}
+\let\clippagebox \gobbleoneargument
+\let\clipprintbox\gobbleoneargument
+
+% \setuppagenumbering[alternative=doublesided]
+% \setupcolors[state=start]
+% \setuppapersize[A4][A4,oversized]
+% \setuplayout[location=middle,clipoffset=5mm]
+% \setupbackgrounds
+% [page]
+% [frame=on,rulethickness=1mm,
+% backgroundoffset=10mm,background=color,backgroundcolor=red]
+% \starttext \dorecurse{10}{\input tufte \par} \stoptext
+
+\def\clippagebox#1%
+ {\ifdim\@@lyclipoffset>\zeropoint
+ \!!widtha \wd#1%
+ \!!heighta\ht#1%
+ \!!deptha \dp#1%
+ \setbox#1\hbox
+ {\!!widthb \@@lyclipoffset
+ \advance\!!heighta\!!deptha
+ \advance\!!heighta2\!!widthb
+ \advance\!!widtha \!!widthb
+ \doifbothsides
+ \advance\!!widtha\!!widthb
+ \!!widthc-\!!widthb
+ \hskip\!!widthc
+ \orsideone
+ \!!widthc\zeropoint
+ \orsidetwo
+ \!!widthc-\!!widthb
+ \hskip\!!widthc
+ \od
+ \lower\!!widthb\hbox
+ {\clip
+ [\c!hoffset=\!!widthc,
+ \c!voffset=-\!!widthb,
+ \c!breedte=\!!widtha,
+ \c!hoogte=\!!heighta]%
+ {\box#1}}}%
+ \wd#1\!!widtha
+ \ht#1\!!heighta
+ \dp#1\!!deptha
+ \fi}
+
% moved code:
\def\myshipout#1%
{\voorpagina % voor de pagebody dus !
\dontshowcomposition
- \ifarrangingpages
- \actualarrange{\thisisrealpage{\realfolio}#1}%
- \else
- \actualshipout{\thisisrealpage{\realfolio}#1}%
- \fi
+ \ifarrangingpages\@EA\actualarrange\else\@EA\actualshipout\fi
+ {\thisisrealpage\realfolio#1}%
\gotonextrealpage
\napagina}
\newbox\postponedcontent
-\def\flushatshipout%
+\def\flushatshipout
{\dowithnextbox
- {\global\setbox\postponedcontent=\hbox to \zeropoint
- {%\hskip-\maxdimen % niet hier, gaat mis in acrobat (clipt)
- \box\postponedcontent\box\nextbox}%
- \global\ht\postponedcontent\zeropoint
- \global\dp\postponedcontent\zeropoint
- \global\wd\postponedcontent\zeropoint}%
+ {\global\setbox\postponedcontent\hbox to \zeropoint
+ {%\hskip-\maxdimen % niet hier, gaat mis in acrobat (clipt)
+ \box\postponedcontent\box\nextbox}%
+ \global\ht\postponedcontent\zeropoint
+ \global\dp\postponedcontent\zeropoint
+ \global\wd\postponedcontent\zeropoint}%
\hbox}
+
% \starttypen
% \def\pagestoshipout{1,3,5}
% \stoptypen
@@ -90,7 +137,7 @@
\chardef\whichpagetoshipout=0 % 0=all 1=odd 2=even
\def\actualshipout#1%
- {\global\advance\shippedoutpages\plusone
+ {\global\advance\shippedoutpages\plusone
\ifx\pagestoshipout\empty
\ifcase\whichpagetoshipout\relax
\donetrue
@@ -101,7 +148,7 @@
\else
\donetrue
\fi
- \else % testen, aangepast / expanded nodig ?
+ \else % testen, aangepast / expanded nodig ?
\expanded{\doifinsetelse{\the\shippedoutpages}{\pagestoshipout}}%
\donetrue\donefalse
\fi
@@ -112,11 +159,12 @@
\mindermeldingen
\vskip-1in
\hskip-1in
- \hbox % \setbox0=\box.. is nicer
- {\setbox0=\hbox{#1}% just in case there are objects there
- \setbox\scratchbox=\hbox
+ \hbox % \setbox0=\box.. is nicer
+ {\setbox0\hbox{#1}% just in case there are objects there
+ \setbox\scratchbox\hbox
{\the\everyshipout
\ifnum\realpageno=\lastpage\relax
+ \flushtextdata
\the\everylastshipout
\global\everylastshipout\emptytoks
\fi}%
@@ -129,16 +177,16 @@
{[\ifarrangingpages arranged \fi page
\ifarrangingpages\the\arrangeno\else\the\realpageno\fi\normalspace
not flushed]}%
- \setbox0=\hbox{#1}%
- \deadcycles=0
+ \setbox0\hbox{#1}%
+ \deadcycles\zerocount
\fi}
\def\actualarrange#1%
- {\setbox0=\hbox{\thisisrealpage{\realfolio}#1}%
- \pusharrangedpage0
- \deadcycles=0 }
+ {\setbox0\hbox{\thisisrealpage{\realfolio}#1}%
+ \pusharrangedpage0%
+ \deadcycles\zerocount}
-%D We need a couple of boxes for duplex printing \unknown
+%D We need a couple of boxes for duplex printing \unknown
\newbox\arrangedpageA \newbox\arrangedpageB
@@ -159,6 +207,7 @@
\def\arrangedrotationE{0}
\newcounter\arrangedpageN
+\newcounter\arrangedpageM
\chardef\arrangedpageT=1
\chardef\arrangedpageX=1
@@ -174,7 +223,7 @@
\def\setuparranging[#1]%
{\ifarrangingdisabled \else
- \doifelse{#1}{\v!blokkeer}
+ \doifelse{#1}\v!blokkeer
{\global\arrangingdisabledtrue}
{\global\arrangingdisabledfalse}%
\global\arrangingpagestrue
@@ -193,8 +242,8 @@
180=>\gdef\arrangedrotationO{180}\gdef\arrangedrotationE{0},
270=>\gdef\arrangedrotationO{270}\gdef\arrangedrotationE{90},
\s!reset=>\global\arrangingpagesfalse,
- \s!unknown=>\checkinstalledpagearrangement\commalistelement,
- \s!default=>\checkinstalledpagearrangement\commalistelement]%
+ \s!unknown=>\checkinstalledpagearrangement\commalistelement]%
+ % no \s!default=> we can have aaa,,bbb
\doifcommonelse{#1}{90,270,\v!geroteerd}
{\swapmacros\horizontalcutmarks\verticalcutmarks}{}% ugly solution
\setuppapersize
@@ -206,8 +255,8 @@
\def\installpagearrangement #1 %
{\setgvalue{\??pp\??pp#1}}
-\def\checkinstalledpagearrangement#1%
- {\executeifdefined{\??pp\??pp#1}{\global\arrangingpagesfalse}}
+\def\checkinstalledpagearrangement#1% can be empty: aaa,,bbb
+ {\executeifdefined{\??pp\??pp#1}\donothing}
\def\dosetuparrangement#1#2#3#4#5#6#7#8%
{\global\chardef\arrangedpageX #1%
@@ -219,63 +268,66 @@
\global\let \poparrangedpages #7%
\global\let \handlearrangedpage#8}
+\installpagearrangement {\v!normaal}
+ {\global\arrangingpagesfalse}
+
\installpagearrangement 2*16
- {\dosetuparrangement{4}{4}{16}{5}{5}
+ {\dosetuparrangement{4}{4}{16}{5}{5}%
\pusharrangedpageTHIRTYTWO\poparrangedpagesAB\relax}
\installpagearrangement 2*8
- {\dosetuparrangement{4}{2}{8}{5}{3}
+ {\dosetuparrangement{4}{2}{8}{5}{3}%
\pusharrangedpageSIXTEEN\poparrangedpagesAB\relax}
\installpagearrangement 2*4
- {\dosetuparrangement{2}{2}{4}{3}{3}
+ {\dosetuparrangement{2}{2}{4}{3}{3}%
\pusharrangedpageEIGHT\poparrangedpagesAB\relax}
\installpagearrangement 2*2
- {\dosetuparrangement{2}{1}{2}{3}{2}
+ {\dosetuparrangement{2}{1}{2}{3}{2}%
\pusharrangedpageFOURA\poparrangedpagesAB\relax}
\installpagearrangement 2**2
- {\dosetuparrangement{2}{1}{2}{3}{2}
+ {\dosetuparrangement{2}{1}{2}{3}{2}%
\pusharrangedpageFOURB\poparrangedpagesAB\relax}
\installpagearrangement 2SIDE
- {\dosetuparrangement{2}{1}{2}{3}{2}
+ {\dosetuparrangement{2}{1}{2}{3}{2}%
\pusharrangedpageSIDETOP\poparrangedpagesTWO\handlearrangedpageSIDE}
\installpagearrangement 2TOP
- {\dosetuparrangement{1}{2}{2}{2}{3}
+ {\dosetuparrangement{1}{2}{2}{2}{3}%
\pusharrangedpageSIDETOP\poparrangedpagesTWO\handlearrangedpageTOP}
\installpagearrangement 2UP
- {\dosetuparrangement{2}{1}{4}{3}{2}
+ {\dosetuparrangement{2}{1}{4}{3}{2}%
\pusharrangedpageTWO\poparrangedpagesTWO\handlearrangedpageTWOUP}
\installpagearrangement 2DOWN
- {\dosetuparrangement{1}{2}{4}{2}{3}
+ {\dosetuparrangement{1}{2}{4}{2}{3}%
\pusharrangedpageTWO\poparrangedpagesTWO\handlearrangedpageTWODOWN}
-\installpagearrangement 2*4*2 % one defined by Willy Egger:
- {\dosetuparrangement{2}{2}{4}{3}{2}
+\installpagearrangement 2*4*2 % one defined by Willy Egger:
+ {\dosetuparrangement{2}{2}{4}{3}{2}%
\pusharrangedpageSIXTEENTWO\poparrangedpagesAtoD\relax}
\installpagearrangement 2*2*4 % onother one of Willy Egger
- {\dosetuparrangement{2}{1}{8}{3}{2}
+ {\dosetuparrangement{2}{1}{8}{3}{2}%
\pusharrangedpageSIXTEENFOUR\poparrangedpagesAtoH\relax}
-\def\filluparrangedpages% beware: \realpageno is 1 ahead
+\def\filluparrangedpages % beware: \realpageno is 1 ahead
{\ifarrangingpages
\scratchcounter-\realpageno
\divide\scratchcounter \arrangedpageT
\multiply\scratchcounter \arrangedpageT
\advance\scratchcounter \realpageno
- \advance\scratchcounter -1
+ \advance\scratchcounter \minusone
\dorecurse\scratchcounter{\noheaderandfooterlines\ejectdummypage}%
\fi}
-\def\handlearrangedpageXY#1#2#3#4#5%
- {\global\setbox#5=\hbox to \arrangedpageX\papierbreedte
- {\setbox\scratchbox=\vbox to \arrangedpageY\papierhoogte
+\def\handlearrangedpageXandY#1#2#3#4#5%
+ {\global\setbox#5\hbox to \arrangedpageX\papierbreedte
+ {\setbox\scratchbox\vbox to \arrangedpageY\papierhoogte
{\forgetall
\offinterlineskip
\mindermeldingen
@@ -287,25 +339,26 @@
\box\scratchbox\box#5\hss}}
\def\gotonextarrangepage
- {\global\advance\arrangeno 1
+ {\global\advance\arrangeno \plusone
\def\pagecutmarksymbol{\the\arrangeno}}
\def\outputarrangedbox#1%
{\bgroup
\gotonextarrangepage
- \ifnum\arrangedrotationO\arrangedrotationE>0
- \ifdoublearranged
- \ifodd\arrangeno % if into 2d arg
- \setbox#1=\vbox{\dorotatebox\arrangedrotationO\hbox{\box#1}}%
- \else
- \setbox#1=\vbox{\dorotatebox\arrangedrotationE\hbox{\box#1}}%
- \fi
- \else
- \setbox#1=\vbox{\dorotatebox\arrangedrotationO\hbox{\box#1}}%
- \fi
+ \ifnum\arrangedrotationO\arrangedrotationE>\zerocount
+ \setbox#1\vbox
+ {\ifdoublearranged
+ \ifodd\arrangeno
+ \dorotatebox\arrangedrotationO\hbox{\box#1}%
+ \else
+ \dorotatebox\arrangedrotationE\hbox{\box#1}%
+ \fi
+ \else
+ \dorotatebox\arrangedrotationO\hbox{\box#1}%
+ \fi}%
\fi
\ifmirrorarranged
- \setbox#1=\vbox{\domirrorbox\vbox{\box#1}}%
+ \setbox#1\vbox{\domirrorbox\vbox{\box#1}}%
\fi
\ifnegatearranged
\negatecolorbox{#1}%
@@ -314,15 +367,15 @@
\actualshipout{\box#1}%
\egroup}
-%D The format file can be 16K smaller when we postpone the
-%D real arrangments. Some day ...
+%D The format file can be 16K smaller when we postpone the
+%D real arrangments. Some day ...
% TOP
% 32/16/8/4/SIDE
-\def\poparrangedpagesAB%
- {\ifnum\arrangedpageN>0
+\def\poparrangedpagesAB
+ {\ifnum\arrangedpageN>\zerocount
\mindermeldingen
\papierbreedte\arrangedpageX\papierbreedte
\papierhoogte\arrangedpageY\papierhoogte
@@ -335,38 +388,38 @@
{\doglobal\increment\arrangedpageN
\reportarrangedpage\arrangedpageN
\ifcase\arrangedpageN
- \or \handlearrangedpageXY{#1}033\arrangedpageA % 1
- \or \handlearrangedpageXY{#1}003\arrangedpageB % 2
- \or \handlearrangedpageXY{#1}100\arrangedpageB % 3
- \or \handlearrangedpageXY{#1}130\arrangedpageA % 4
- \or \handlearrangedpageXY{#1}100\arrangedpageA % 5
- \or \handlearrangedpageXY{#1}130\arrangedpageB % 6
- \or \handlearrangedpageXY{#1}033\arrangedpageB % 7
- \or \handlearrangedpageXY{#1}003\arrangedpageA % 8
- \or \handlearrangedpageXY{#1}102\arrangedpageA % 9
- \or \handlearrangedpageXY{#1}132\arrangedpageB % 10
- \or \handlearrangedpageXY{#1}031\arrangedpageB % 11
- \or \handlearrangedpageXY{#1}001\arrangedpageA % 12
- \or \handlearrangedpageXY{#1}031\arrangedpageA % 13
- \or \handlearrangedpageXY{#1}001\arrangedpageB % 14
- \or \handlearrangedpageXY{#1}102\arrangedpageB % 15
- \or \handlearrangedpageXY{#1}132\arrangedpageA % 16
- \or \handlearrangedpageXY{#1}122\arrangedpageA % 17
- \or \handlearrangedpageXY{#1}112\arrangedpageB % 18
- \or \handlearrangedpageXY{#1}011\arrangedpageB % 19
- \or \handlearrangedpageXY{#1}021\arrangedpageA % 20
- \or \handlearrangedpageXY{#1}011\arrangedpageA % 21
- \or \handlearrangedpageXY{#1}021\arrangedpageB % 22
- \or \handlearrangedpageXY{#1}122\arrangedpageB % 23
- \or \handlearrangedpageXY{#1}112\arrangedpageA % 24
- \or \handlearrangedpageXY{#1}013\arrangedpageA % 25
- \or \handlearrangedpageXY{#1}023\arrangedpageB % 26
- \or \handlearrangedpageXY{#1}120\arrangedpageB % 27
- \or \handlearrangedpageXY{#1}110\arrangedpageA % 28
- \or \handlearrangedpageXY{#1}120\arrangedpageA % 29
- \or \handlearrangedpageXY{#1}110\arrangedpageB % 30
- \or \handlearrangedpageXY{#1}013\arrangedpageB % 31
- \or \handlearrangedpageXY{#1}023\arrangedpageA % 32
+ \or \handlearrangedpageXandY{#1}033\arrangedpageA % 1
+ \or \handlearrangedpageXandY{#1}003\arrangedpageB % 2
+ \or \handlearrangedpageXandY{#1}100\arrangedpageB % 3
+ \or \handlearrangedpageXandY{#1}130\arrangedpageA % 4
+ \or \handlearrangedpageXandY{#1}100\arrangedpageA % 5
+ \or \handlearrangedpageXandY{#1}130\arrangedpageB % 6
+ \or \handlearrangedpageXandY{#1}033\arrangedpageB % 7
+ \or \handlearrangedpageXandY{#1}003\arrangedpageA % 8
+ \or \handlearrangedpageXandY{#1}102\arrangedpageA % 9
+ \or \handlearrangedpageXandY{#1}132\arrangedpageB % 10
+ \or \handlearrangedpageXandY{#1}031\arrangedpageB % 11
+ \or \handlearrangedpageXandY{#1}001\arrangedpageA % 12
+ \or \handlearrangedpageXandY{#1}031\arrangedpageA % 13
+ \or \handlearrangedpageXandY{#1}001\arrangedpageB % 14
+ \or \handlearrangedpageXandY{#1}102\arrangedpageB % 15
+ \or \handlearrangedpageXandY{#1}132\arrangedpageA % 16
+ \or \handlearrangedpageXandY{#1}122\arrangedpageA % 17
+ \or \handlearrangedpageXandY{#1}112\arrangedpageB % 18
+ \or \handlearrangedpageXandY{#1}011\arrangedpageB % 19
+ \or \handlearrangedpageXandY{#1}021\arrangedpageA % 20
+ \or \handlearrangedpageXandY{#1}011\arrangedpageA % 21
+ \or \handlearrangedpageXandY{#1}021\arrangedpageB % 22
+ \or \handlearrangedpageXandY{#1}122\arrangedpageB % 23
+ \or \handlearrangedpageXandY{#1}112\arrangedpageA % 24
+ \or \handlearrangedpageXandY{#1}013\arrangedpageA % 25
+ \or \handlearrangedpageXandY{#1}023\arrangedpageB % 26
+ \or \handlearrangedpageXandY{#1}120\arrangedpageB % 27
+ \or \handlearrangedpageXandY{#1}110\arrangedpageA % 28
+ \or \handlearrangedpageXandY{#1}120\arrangedpageA % 29
+ \or \handlearrangedpageXandY{#1}110\arrangedpageB % 30
+ \or \handlearrangedpageXandY{#1}013\arrangedpageB % 31
+ \or \handlearrangedpageXandY{#1}023\arrangedpageA % 32
\poparrangedpages
\fi}
@@ -374,22 +427,22 @@
{\doglobal\increment\arrangedpageN
\reportarrangedpage\arrangedpageN
\ifcase\arrangedpageN
- \or \handlearrangedpageXY{#1}031\arrangedpageA % 1
- \or \handlearrangedpageXY{#1}001\arrangedpageB % 2
- \or \handlearrangedpageXY{#1}031\arrangedpageB % 3
- \or \handlearrangedpageXY{#1}001\arrangedpageA % 4
- \or \handlearrangedpageXY{#1}100\arrangedpageA % 5
- \or \handlearrangedpageXY{#1}130\arrangedpageB % 6
- \or \handlearrangedpageXY{#1}100\arrangedpageB % 7
- \or \handlearrangedpageXY{#1}130\arrangedpageA % 8
- \or \handlearrangedpageXY{#1}120\arrangedpageA % 9
- \or \handlearrangedpageXY{#1}110\arrangedpageB % 10
- \or \handlearrangedpageXY{#1}120\arrangedpageB % 11
- \or \handlearrangedpageXY{#1}110\arrangedpageA % 12
- \or \handlearrangedpageXY{#1}011\arrangedpageA % 13
- \or \handlearrangedpageXY{#1}021\arrangedpageB % 14
- \or \handlearrangedpageXY{#1}011\arrangedpageB % 15
- \or \handlearrangedpageXY{#1}021\arrangedpageA % 16
+ \or \handlearrangedpageXandY{#1}031\arrangedpageA % 1
+ \or \handlearrangedpageXandY{#1}001\arrangedpageB % 2
+ \or \handlearrangedpageXandY{#1}031\arrangedpageB % 3
+ \or \handlearrangedpageXandY{#1}001\arrangedpageA % 4
+ \or \handlearrangedpageXandY{#1}100\arrangedpageA % 5
+ \or \handlearrangedpageXandY{#1}130\arrangedpageB % 6
+ \or \handlearrangedpageXandY{#1}100\arrangedpageB % 7
+ \or \handlearrangedpageXandY{#1}130\arrangedpageA % 8
+ \or \handlearrangedpageXandY{#1}120\arrangedpageA % 9
+ \or \handlearrangedpageXandY{#1}110\arrangedpageB % 10
+ \or \handlearrangedpageXandY{#1}120\arrangedpageB % 11
+ \or \handlearrangedpageXandY{#1}110\arrangedpageA % 12
+ \or \handlearrangedpageXandY{#1}011\arrangedpageA % 13
+ \or \handlearrangedpageXandY{#1}021\arrangedpageB % 14
+ \or \handlearrangedpageXandY{#1}011\arrangedpageB % 15
+ \or \handlearrangedpageXandY{#1}021\arrangedpageA % 16
\poparrangedpages
\fi}
@@ -397,14 +450,14 @@
{\doglobal\increment\arrangedpageN
\reportarrangedpage\arrangedpageN
\ifcase\arrangedpageN
- \or \handlearrangedpageXY{#1}011\arrangedpageA % 1
- \or \handlearrangedpageXY{#1}001\arrangedpageB % 2
- \or \handlearrangedpageXY{#1}100\arrangedpageB % 3
- \or \handlearrangedpageXY{#1}110\arrangedpageA % 4
- \or \handlearrangedpageXY{#1}100\arrangedpageA % 5
- \or \handlearrangedpageXY{#1}110\arrangedpageB % 6
- \or \handlearrangedpageXY{#1}011\arrangedpageB % 7
- \or \handlearrangedpageXY{#1}001\arrangedpageA % 8
+ \or \handlearrangedpageXandY{#1}011\arrangedpageA % 1
+ \or \handlearrangedpageXandY{#1}001\arrangedpageB % 2
+ \or \handlearrangedpageXandY{#1}100\arrangedpageB % 3
+ \or \handlearrangedpageXandY{#1}110\arrangedpageA % 4
+ \or \handlearrangedpageXandY{#1}100\arrangedpageA % 5
+ \or \handlearrangedpageXandY{#1}110\arrangedpageB % 6
+ \or \handlearrangedpageXandY{#1}011\arrangedpageB % 7
+ \or \handlearrangedpageXandY{#1}001\arrangedpageA % 8
\poparrangedpages
\fi}
@@ -415,10 +468,10 @@
{\doglobal\increment\arrangedpageN
\reportarrangedpage\arrangedpageN
\ifcase\arrangedpageN
- \or \handlearrangedpageXY{#3}010\arrangedpageA % 1
- \or \handlearrangedpageXY{#3}0{#1}0\arrangedpageB % 2/3 not {1}
- \or \handlearrangedpageXY{#3}0{#2}0\arrangedpageB % 3/2 not {1}
- \or \handlearrangedpageXY{#3}000\arrangedpageA % 4
+ \or \handlearrangedpageXandY{#3}010\arrangedpageA % 1
+ \or \handlearrangedpageXandY{#3}0{#1}0\arrangedpageB % 2/3 not {1}
+ \or \handlearrangedpageXandY{#3}0{#2}0\arrangedpageB % 3/2 not {1}
+ \or \handlearrangedpageXandY{#3}000\arrangedpageA % 4
\poparrangedpages
\fi}
@@ -426,8 +479,8 @@
{\doglobal\increment\arrangedpageN
\reportarrangedpage\arrangedpageN
\ifcase\arrangedpageN
- \or \handlearrangedpageXY{#1}000\arrangedpageA % 1
- \or \handlearrangedpageXY{#1}000\arrangedpageB % 2
+ \or \handlearrangedpageXandY{#1}000\arrangedpageA % 1
+ \or \handlearrangedpageXandY{#1}000\arrangedpageB % 2
\poparrangedpages
\fi}
@@ -449,7 +502,7 @@
% 2UP/2DOWN / 1pt prevents overflow
-\def\splitoffarrangedpagesTWO%
+\def\splitoffarrangedpagesTWO
{\splittopskip\zeropoint
\global\setbox\arrangedpageA\vsplit\arrangedpageB to \!!onepoint
\scratchdimen\ht\arrangedpageB
@@ -458,7 +511,7 @@
\setbox\scratchbox\vsplit\arrangedpageB to \scratchdimen
\fi}
-% \def\handlearrangedpageTWOUP%
+% \def\handlearrangedpageTWOUP
% {\splitoffarrangedpagesTWO
% \ifswaparranged
% \global\setbox\arrangedpageA\hbox
@@ -472,24 +525,23 @@
% \global\ht\arrangedpageA\papierhoogte
% \global\setbox\arrangedpageB\box\scratchbox}
-\def\handlearrangedpageTWOUP%
+\def\handlearrangedpageTWOUP
{\splitoffarrangedpagesTWO
\ifswaparranged
- \global\setbox\arrangedpageA=\hbox
- {\clippedpagebox0\arrangedpageA
- \clippedpagebox1\arrangedpageB}%
+ \global\setbox\arrangedpageA\hbox
+ {\clippedprintbox0\arrangedpageA
+ \clippedprintbox1\arrangedpageB}%
\swaparrangedfalse
\else
- \global\setbox\arrangedpageA=\hbox
- {\clippedpagebox0\arrangedpageB
- \clippedpagebox1\arrangedpageA}%
+ \global\setbox\arrangedpageA\hbox
+ {\clippedprintbox0\arrangedpageB
+ \clippedprintbox1\arrangedpageA}%
\swaparrangedtrue
\fi
- \global\ht\arrangedpageA=\papierhoogte
- \global\setbox\arrangedpageB=\box\scratchbox}
-
+ \global\ht\arrangedpageA\papierhoogte
+ \global\setbox\arrangedpageB\box\scratchbox}
-\def\handlearrangedpageTWODOWN%
+\def\handlearrangedpageTWODOWN
{\splitoffarrangedpagesTWO
\global\ht\arrangedpageA\papierhoogte
\global\ht\arrangedpageB\papierhoogte
@@ -506,8 +558,8 @@
\fi
\global\setbox\arrangedpageB\box\scratchbox}
-\def\poparrangedpagesTWO%
- {\ifnum\arrangedpageN>0
+\def\poparrangedpagesTWO
+ {\ifnum\arrangedpageN>\zerocount
\mindermeldingen
\swaparrangedfalse
\doloop
@@ -537,10 +589,10 @@
\dp#1=\zeropoint
\vbox{\box#1}}}
-%D Willy Egger's sheet simulations:
+%D Willy Egger's sheet simulations:
-\def\poparrangedpagesAtoH%
- {\ifnum\arrangedpageN>0
+\def\poparrangedpagesAtoH
+ {\ifnum\arrangedpageN>\zerocount
\mindermeldingen
\papierbreedte\arrangedpageX\papierbreedte
\papierhoogte\arrangedpageY\papierhoogte
@@ -557,8 +609,8 @@
% to arrange 16 pages on 2 sheets to form one booklet
-\def\poparrangedpagesAtoD%
- {\ifnum\arrangedpageN>0
+\def\poparrangedpagesAtoD
+ {\ifnum\arrangedpageN>\zerocount
\mindermeldingen
\papierbreedte\arrangedpageX\papierbreedte
\papierhoogte\arrangedpageY\papierhoogte
@@ -575,22 +627,22 @@
{\doglobal\increment\arrangedpageN
\reportarrangedpage\arrangedpageN
\ifcase\arrangedpageN
- \or \handlearrangedpageXY{#1}{0}{1}{0}\arrangedpageA % 1
- \or \handlearrangedpageXY{#1}{0}{0}{0}\arrangedpageB % 2
- \or \handlearrangedpageXY{#1}{0}{1}{0}\arrangedpageC % 3
- \or \handlearrangedpageXY{#1}{0}{0}{0}\arrangedpageD % 4
- \or \handlearrangedpageXY{#1}{0}{1}{0}\arrangedpageE % 5
- \or \handlearrangedpageXY{#1}{0}{0}{0}\arrangedpageF % 6
- \or \handlearrangedpageXY{#1}{0}{1}{0}\arrangedpageG % 7
- \or \handlearrangedpageXY{#1}{0}{0}{0}\arrangedpageH % 8
- \or \handlearrangedpageXY{#1}{0}{1}{0}\arrangedpageH % 9
- \or \handlearrangedpageXY{#1}{0}{0}{0}\arrangedpageG % 10
- \or \handlearrangedpageXY{#1}{0}{1}{0}\arrangedpageF % 11
- \or \handlearrangedpageXY{#1}{0}{0}{0}\arrangedpageE % 12
- \or \handlearrangedpageXY{#1}{0}{1}{0}\arrangedpageD % 13
- \or \handlearrangedpageXY{#1}{0}{0}{0}\arrangedpageC % 14
- \or \handlearrangedpageXY{#1}{0}{1}{0}\arrangedpageB % 15
- \or \handlearrangedpageXY{#1}{0}{0}{0}\arrangedpageA % 16
+ \or \handlearrangedpageXandY{#1}010\arrangedpageA % 1
+ \or \handlearrangedpageXandY{#1}000\arrangedpageB % 2
+ \or \handlearrangedpageXandY{#1}010\arrangedpageC % 3
+ \or \handlearrangedpageXandY{#1}000\arrangedpageD % 4
+ \or \handlearrangedpageXandY{#1}010\arrangedpageE % 5
+ \or \handlearrangedpageXandY{#1}000\arrangedpageF % 6
+ \or \handlearrangedpageXandY{#1}010\arrangedpageG % 7
+ \or \handlearrangedpageXandY{#1}000\arrangedpageH % 8
+ \or \handlearrangedpageXandY{#1}010\arrangedpageH % 9
+ \or \handlearrangedpageXandY{#1}000\arrangedpageG % 10
+ \or \handlearrangedpageXandY{#1}010\arrangedpageF % 11
+ \or \handlearrangedpageXandY{#1}000\arrangedpageE % 12
+ \or \handlearrangedpageXandY{#1}010\arrangedpageD % 13
+ \or \handlearrangedpageXandY{#1}000\arrangedpageC % 14
+ \or \handlearrangedpageXandY{#1}010\arrangedpageB % 15
+ \or \handlearrangedpageXandY{#1}000\arrangedpageA % 16
\poparrangedpages
\fi}
@@ -600,25 +652,167 @@
{\doglobal\increment\arrangedpageN
\reportarrangedpage\arrangedpageN
\ifcase\arrangedpageN
- \or \handlearrangedpageXY{#1} {0}{1}{1}\arrangedpageA % 1
- \or \handlearrangedpageXY{#1} {0}{0}{1}\arrangedpageB % 2
- \or \handlearrangedpageXY{#1} {0}{1}{1}\arrangedpageC % 3
- \or \handlearrangedpageXY{#1} {0}{0}{1}\arrangedpageD % 4
- \or \handlearrangedpageXY{#1}{1}{0}{0}\arrangedpageD % 5
- \or \handlearrangedpageXY{#1}{1}{1}{0}\arrangedpageC % 6
- \or \handlearrangedpageXY{#1}{1}{0}{0}\arrangedpageB % 7
- \or \handlearrangedpageXY{#1}{1}{1}{0}\arrangedpageA % 8
- \or \handlearrangedpageXY{#1}{1}{0}{0}\arrangedpageA % 9
- \or \handlearrangedpageXY{#1}{1}{1}{0}\arrangedpageB % 10
- \or \handlearrangedpageXY{#1}{1}{0}{0}\arrangedpageC % 11
- \or \handlearrangedpageXY{#1}{1}{1}{0}\arrangedpageD % 12
- \or \handlearrangedpageXY{#1} {0}{1}{1}\arrangedpageD % 13
- \or \handlearrangedpageXY{#1} {0}{0}{1}\arrangedpageC % 14
- \or \handlearrangedpageXY{#1} {0}{1}{1}\arrangedpageB % 15
- \or \handlearrangedpageXY{#1} {0}{0}{1}\arrangedpageA % 16
+ \or \handlearrangedpageXandY{#1}011\arrangedpageA % 1
+ \or \handlearrangedpageXandY{#1}001\arrangedpageB % 2
+ \or \handlearrangedpageXandY{#1}011\arrangedpageC % 3
+ \or \handlearrangedpageXandY{#1}001\arrangedpageD % 4
+ \or \handlearrangedpageXandY{#1}100\arrangedpageD % 5
+ \or \handlearrangedpageXandY{#1}110\arrangedpageC % 6
+ \or \handlearrangedpageXandY{#1}100\arrangedpageB % 7
+ \or \handlearrangedpageXandY{#1}110\arrangedpageA % 8
+ \or \handlearrangedpageXandY{#1}100\arrangedpageA % 9
+ \or \handlearrangedpageXandY{#1}110\arrangedpageB % 10
+ \or \handlearrangedpageXandY{#1}100\arrangedpageC % 11
+ \or \handlearrangedpageXandY{#1}110\arrangedpageD % 12
+ \or \handlearrangedpageXandY{#1}011\arrangedpageD % 13
+ \or \handlearrangedpageXandY{#1}001\arrangedpageC % 14
+ \or \handlearrangedpageXandY{#1}011\arrangedpageB % 15
+ \or \handlearrangedpageXandY{#1}001\arrangedpageA % 16
\poparrangedpages
\fi}
+
+% % handy for stickers etc, this way we can treat them as page
+%
+% \setuppapersize [XY][A4]
+% \setuppaper [topspace=5mm,backspace=5mm,dx=1mm,dy=1mm,nx=2,ny=6]
+% \setuplayout [page] [topspace=5mm,backspace=5mm]
+% \setuplayout [page]
+% \setuplayout [location=middle]
+% \setuparranging [XY]
+% \showframe
+%
+% \starttext \dorecurse{30}{test \recurselevel \page} \stoptext
+
+\def\pusharrangedpageXY#1%
+ {\doglobal\increment\arrangedpageN
+ \reportarrangedpage\arrangedpageN
+ \doglobal\increment\arrangedpageM
+ \global\setbox\arrangedpageB\hbox
+ \ifdim\@@ppbreedte>\zeropoint to \@@ppbreedte \fi
+ {\ifvoid\arrangedpageB\else
+ \unhbox\arrangedpageB\hss\hskip\@@ppdx\hss
+ \fi
+ \box#1}%
+ \ifnum\arrangedpageM<\arrangedpageX\else
+ \global\setbox\arrangedpageA\vbox
+ \ifdim\@@pphoogte>\zeropoint to \@@pphoogte \fi
+ {\offinterlineskip
+ \ifvoid\arrangedpageA\else
+ \unvbox\arrangedpageA\vss\vskip\@@ppdy\vss
+ \fi
+ \box\arrangedpageB}%
+ \doglobal\newcounter\arrangedpageM
+ \fi
+ \ifnum\arrangedpageN<\arrangedpageT\else
+ \poparrangedpages
+ \fi}
+
+\def\poparrangedpagesXY
+ {\ifnum\arrangedpageN>\zerocount
+ \mindermeldingen
+ \papierbreedte\arrangedpageX\papierbreedte
+ \papierhoogte \arrangedpageY\papierhoogte
+ \outputarrangedbox\arrangedpageA
+ \doglobal\newcounter\arrangedpageN
+ \doglobal\newcounter\arrangedpageM
+ \fi}
+
+\installpagearrangement XY
+ {\dosetuparrangement\@@ppnx\@@ppny\@@ppxy\!!zerocount\!!zerocount
+ \pusharrangedpageXY\poparrangedpagesXY\relax}
+
+\beginETEX \dimexpr
+
+\definepapersize
+ [XY]
+ [\c!breedte=\dimexpr(\dimexpr(\@@ppbreedte-\numexpr(\@@ppnx-1)\dimexpr(\@@ppdx))/\@@ppnx),
+ \c!hoogte =\dimexpr(\dimexpr(\@@pphoogte -\numexpr(\@@ppny-1)\dimexpr(\@@ppdy))/\@@ppny)]
+
+\setuppaper
+ [\c!breedte=\dimexpr(\printpapierbreedte-2\dimexpr(\@@pprugwit)),
+ \c!hoogte =\dimexpr(\printpapierhoogte -2\dimexpr(\@@ppkopwit))]
+
+\endETEX
+
+% \definepageshift[test][horizontal][10pt,20pt,30pt,40pt,50pt]
+% \definepageshift[test][vertical] [10pt,20pt,30pt,40pt,50pt]
+%
+% \setuppageshift[test]
+% \setuppageshift[test][test]
+% \setuppageshift[test][none]
+% \setuppageshift[none][test]
+% \setuppageshift[paper][test][test] % arrange only
+% \setuppageshift[paper][test] % arrange only
+% \setuppageshift[print][test][test]
+%
+% \showframe \dorecurse{100}{\input tufte \par}
+
+% #1=name #2=horizontal|vertical #3=shiftlist
+
+\def\definepageshift
+ {\dotripleargument\dodefinepageshift}
+\def\dodefinepageshift[#1][#2][#3]%
+ {\setvalue{\??pt#2:#1}{#3}}
+
+\letempty \hpageshifts \newcounter\nofhpageshifts
+\letempty \vpageshifts \newcounter\nofvpageshifts
+
+% \let\shiftprintpagebox\gobbleoneargument
+% \let\shiftpaperpagebox\gobbleoneargument
+
+\def\dogetpageshift#1#2#3% #1=\dimenx #2=\xpageshifts #3=\nofxpageshifts
+ {\ifx#2\empty
+ #1\zeropoint
+ \else
+ \doglobal\increment#3%
+ \getfromcommacommand[#2][#3]%
+ \ifx\commalistelement\empty
+ \globallet#3\!!plusone
+ \getfromcommacommand[#2][#3]%
+ \fi
+ \ifx\commalistelement\empty
+ #1\zeropoint
+ \else
+ #1=\commalistelement
+ \donetrue
+ \fi
+ \fi}
+
+\def\shiftpagebox#1%
+ {\donefalse
+ \dogetpageshift{\dimen0}\hpageshifts\nofhpageshifts
+ \dogetpageshift{\dimen2}\vpageshifts\nofvpageshifts
+ \ifdone % see also layout offsets, maybe \movebox
+ \edef\next{\wd#1\the\wd#1\ht#1\the\ht#1\dp#1\the\dp#1}%
+ \setbox#1\vbox % \forgetall already done
+ {\offinterlineskip\vskip\dimen2\hskip\dimen0\box#1}%
+ \next
+ \fi}
+
+\def\setuppageshift
+ {\dotripleempty\dosetuppageshift}
+
+\def\dosetuppageshift[#1][#2][#3]% page|paper horizontal vertical
+ {\ifthirdargument % paper=arrange
+ \let\hpageshifts\empty
+ \let\vpageshifts\empty
+ \let\shiftprintpagebox\gobbleoneargument
+ \let\shiftpaperpagebox\gobbleoneargument
+ \doifdefined{\??pt\v!horizontaal:#2}
+ {\edef\hpageshifts{\getvalue{\??pt\v!horizontaal:#2}}}%
+ \doifdefined{\??pt\v!vertikaal :#3}
+ {\edef\vpageshifts{\getvalue{\??pt\v!vertikaal :#3}}}%
+ \doif{#1}\v!pagina{\let\shiftprintpagebox\shiftpagebox}%
+ \doif{#1}\v!papier{\let\shiftpaperpagebox\shiftpagebox}%
+ \else\ifsecondargument
+ \doifinsetelse{#1}{\v!pagina,\v!papier}
+ {\setuppageshift[#1][#2][#2]}
+ {\setuppageshift[\v!pagina][#1][#2]}%
+ \else\iffirstargument
+ \setuppageshift[\v!pagina][#1][#1]%
+ \fi\fi}
+
%D One can (mis)use this mechanism, in close cooperation
%D with \PDFTEX\ to arrange pages of already produced files.
%D
@@ -646,7 +840,7 @@
%D This macros inserts the page, according to the settings
%D provided.
-\def\insertpages%
+\def\insertpages
{\dotripleempty\doinsertpages}
\def\doinsertpages[#1][#2][#3]%
@@ -659,13 +853,13 @@
\mindermeldingen
\getfiguredimensions[#1]%
\getparameters[\??ip][\c!n=\noffigurepages,\c!breedte=\!!zeropoint,#3]%
- \doifinsetelse{0}{#2}{\null\pagina}{}%
- \dorecurse{\@@ipn}
- {\dofilterpage{#1}{\recurselevel}%
- \doifinsetelse{\recurselevel}{#2}{\null\pagina}{}}%
+ \doifinset0{#2}{\null\pagina}%
+ \dorecurse\@@ipn
+ {\dofilterpage{#1}\recurselevel
+ \doifinset\recurselevel{#2}{\null\pagina}}%
\egroup}
-\def\filterpages%
+\def\filterpages
{\dotripleempty\dofilterpages}
\def\dofilterpages[#1][#2][#3]% % \noffigurepages not yet supported
@@ -673,12 +867,12 @@
\mindermeldingen
\getfiguredimensions[#1]%
\getparameters[\??ip][\c!n=\noffigurepages,\c!breedte=\!!zeropoint,#3]%
- \doifelse{#2}{\v!even}
- {\dorecurse{\@@ipn}
- {\ifodd\recurselevel\relax\else\dofilterpage{#1}{\recurselevel}\fi}}
- {\doifelse{#2}{\v!oneven}
- {\dorecurse{\@@ipn}
- {\ifodd\recurselevel\relax\dofilterpage{#1}{\recurselevel}\fi}}
+ \doifelse{#2}\v!even
+ {\dorecurse\@@ipn
+ {\ifodd\recurselevel\relax\else\dofilterpage{#1}\recurselevel\fi}}
+ {\doifelse{#2}\v!oneven
+ {\dorecurse\@@ipn
+ {\ifodd\recurselevel\relax\dofilterpage{#1}\recurselevel\fi}}
{\def\dodocommando##1%
{\ifnum##1>\@@ipn\else\dofilterpage{#1}{##1}\fi}%
\def\docommando##1%
@@ -687,11 +881,10 @@
\egroup}
\def\dowithrange#1#2% #2 takes number
- {\beforesplitstring#1\at :\to\fromrange
- \aftersplitstring #1\at :\to\torange
+ {\beforesplitstring#1\at:\to\fromrange
+ \aftersplitstring #1\at:\to\torange
\ifx\torange\empty\let\torange\fromrange\fi
- \dostepwiserecurse{\fromrange}{\torange}{1}
- {#2{\recurselevel}}}
+ \dostepwiserecurse\fromrange\torange1{#2{\recurselevel}}}
\def\dofilterpage#1#2%
{\hbox to \tekstbreedte
@@ -699,13 +892,13 @@
\hfill
\def\dowithfigure{\hskip-\@@ipbreedte}%
\fi\fi\fi
- \setbox0=\hbox
+ \setbox0\hbox
{\externalfigure[#1][\c!pagina=#2,\c!hoogte=\teksthoogte]}%
\wd0\zeropoint
\box0}
\pagina}
-\def\copypages%
+\def\copypages
{\dodoubleempty\docopypages}
\def\docopypages[#1][#2]%
@@ -717,17 +910,15 @@
\c!schaal=\!!thousand,
\c!offset=\!!zeropoint,
#2]%
- \dorecurse{\@@ipn}
+ \dorecurse\@@ipn
{\vbox to \teksthoogte
- {\hsize=\tekstbreedte
- \scratchdimen=\@@ipoffset
+ {\hsize\tekstbreedte
+ \scratchdimen\@@ipoffset
\centeredbox
- {\doifelse{\@@ipmarkering}{\v!aan}
- {\let\next\cuthbox}{\let\next\hbox}%
- \next
+ {\doifelse\@@ipmarkering\v!aan\cuthbox\hbox
{\ifdim\scratchdimen>\zeropoint\relax
- \advance\vsize by -2\scratchdimen
- \advance\hsize by -2\scratchdimen
+ \advance\vsize -2\scratchdimen
+ \advance\hsize -2\scratchdimen
\externalfigure[#1][\c!pagina=\recurselevel,#2,\c!schaal=,\c!factor=\v!max,\c!offset=\v!overlay]%
\else
\externalfigure[#1][\c!pagina=\recurselevel,#2,\c!offset=\v!overlay]%
@@ -762,7 +953,7 @@
%D One can influence the way the pages are combined. (This
%D will be explained some time.)
-\def\combinepages%
+\def\combinepages
{\dodoubleempty\docombinepages}
\def\docombinepages[#1][#2]% a=perpag b=free
@@ -772,68 +963,77 @@
\getparameters
[\??ip]
[\c!variant=\v!a,
- \c!n=\noffigurepages,\c!nx=2,\c!ny=2,
+ \c!n=\noffigurepages,\c!nx=2,\c!ny=2,\c!start=1,\c!stop=\!!maxcard,
\c!afstand=\bodyfontsize,
\c!onder=\vfill,\c!boven=\vss,
\c!links=\hss,\c!rechts=\hss,
\c!voor=\pagina,\c!na=\pagina,\c!tussen=\blanko,
- \c!kader=,
+ \c!kader=,\c!achtergrond=,\c!achtergrondkleur=,
#2]%
\@@ipvoor
- \doglobal\newcounter\combinedpagescounter
- \doifelse{\@@ipvariant}{\v!b}{\!!doneafalse}{\!!doneatrue}%
+ %\doglobal\newcounter\combinedpagescounter
+ \globallet\combinedpagescounter\@@ipstart
+ \doifelse\@@ipvariant\v!b\!!doneafalse\!!doneatrue
\if!!donea
\doloop
{\vbox to \teksthoogte
- {\hsize=\tekstbreedte % ? ?
- \scratchdimen=\@@ipafstand
- \!!widtha=\hsize
- \advance\!!widtha by -\@@ipnx\scratchdimen
- \advance\!!widtha by \scratchdimen
- \divide \!!widtha by \@@ipnx
- \!!heighta=\vsize
- \advance\!!heighta by -\@@ipny\scratchdimen
- \advance\!!heighta by \scratchdimen
- \divide \!!heighta by \@@ipny
- \dorecurse{\@@ipny}
+ {\hsize\tekstbreedte % ? ?
+ \scratchdimen\@@ipafstand
+ \!!widtha\hsize
+ \advance\!!widtha -\@@ipnx\scratchdimen
+ \advance\!!widtha \scratchdimen
+ \divide \!!widtha \@@ipnx
+ \!!heighta\vsize
+ \advance\!!heighta -\@@ipny\scratchdimen
+ \advance\!!heighta \scratchdimen
+ \divide \!!heighta \@@ipny
+ \dorecurse\@@ipny
{\hbox to \hsize
- {\dorecurse{\@@ipnx}
- {\doglobal\increment\combinedpagescounter
- \vbox to \!!heighta
- {\hsize=\!!widtha
- \vsize=\!!heighta
+ {\dorecurse\@@ipnx
+ {\vbox to \!!heighta
+ {\hsize\!!widtha
+ \vsize\!!heighta
\@@ipboven
\hbox to \hsize
{\@@iplinks
+\ifnum\combinedpagescounter>\@@ipstop\relax
+ \globallet\@@ipn\!!zerocount
+\else
\ifnum\combinedpagescounter>\@@ipn \else
\externalfigure[#1]
[\c!object=\v!nee,
\c!pagina=\combinedpagescounter,
\c!factor=\v!max,
+ \c!achtergrond=\@@ipachtergrond,
+ \c!achtergrondkleur=\@@ipachtergrondkleur,
\c!kader=\@@ipkader]%
\fi
+\fi
\@@iprechts}
\@@iponder}%
+ \doglobal\increment\combinedpagescounter
\hfil}%
\hfilneg}
\vfil}%
\vfilneg}%
- \ifnum\combinedpagescounter<\@@ipn \else\exitloop\fi}
+ \ifnum\combinedpagescounter>\@@ipn \exitloop\fi}
\else
\doloop
{\startbaselinecorrection
- \scratchdimen=\@@ipafstand
- \!!widtha=\hsize
- \advance\!!widtha by -\@@ipnx\scratchdimen
- \advance\!!widtha by \scratchdimen
- \divide \!!widtha by \@@ipnx
+ \scratchdimen\@@ipafstand
+ \!!widtha\hsize
+ \advance\!!widtha -\@@ipnx\scratchdimen
+ \advance\!!widtha \scratchdimen
+ \divide \!!widtha \@@ipnx
\hbox to \hsize
- {\dorecurse{\@@ipnx}
+ {\dorecurse\@@ipnx
{\doglobal\increment\combinedpagescounter
\ifnum\combinedpagescounter>\@@ipn \else
\externalfigure[#1]
[\c!pagina=\combinedpagescounter,
\c!breedte=\!!widtha,
+ \c!achtergrond=\@@ipachtergrond,
+ \c!achtergrondkleur=\@@ipachtergrondkleur,
\c!kader=\@@ipkader]%
\fi}}%
\stopbaselinecorrection
@@ -859,13 +1059,13 @@
%D \stoppagecomment
%D \stoptypen
-\def\setuppagecomment%
+\def\setuppagecomment
{\dosingleempty\dosetuppagecomment}
\def\dosetuppagecomment[#1]%
{\getparameters[\??pc][#1]%
- \doifelse{\@@pcstatus}{\v!start}
- {\doifinsetelse{\@@pcplaats}{\v!onder,\v!boven}
+ \doifelse\@@pcstatus\v!start
+ {\doifinsetelse\@@pcplaats{\v!onder,\v!boven}
{\setuppapersize[\c!links=\hskip\@@pcoffset]%
\adddimenmacro\papierhoogte\@@pcoffset\@@pcoffset\@@pcafstand\@@pchoogte\to\@@pcpaperheight
\adddimenmacro\papierbreedte\@@pcoffset\@@pcoffset\to\@@pcpaperwidth
@@ -887,19 +1087,19 @@
\let\@@pcprintpapersize\printpapersize
\setuppapersize[\papersize][commentedpage]%
\setupbackgrounds[\v!papier][\c!achtergrond=pagecomment]}
- {\doif{\@@pcstatus}{\v!stop} % else initialization invokes backgrounds
+ {\doif\@@pcstatus\v!stop % else initialization invokes backgrounds
{% this should be tested first
% \expanded{\setuppapersize[\papersize][\@@pcprintpapersize]}%
\setupbackgrounds[\v!papier][\c!achtergrond=]}}}
\def\@@pcprintpapersize{\printpapersize}
-\def\placepagecommentTB%
+\def\placepagecommentTB
{\vbox to \printpapierhoogte
{\forgetall
\hsize\printpapierbreedte
\vskip\@@pcoffset
- \doifelse{\@@pcplaats}{\v!onder}{\vskip\papierhoogte\vskip\@@pcafstand}{\vss}
+ \doifelse\@@pcplaats\v!onder{\vskip\papierhoogte\vskip\@@pcafstand}\vss
\hskip\@@pcoffset
\vbox to \@@pchoogte
{\forgetall
@@ -909,13 +1109,13 @@
\global\pagecommentfalse
\fi}%
\hfill
- \doifelse{\@@pcplaats}{\v!onder}{\vss}{\vskip\papierhoogte\vskip\@@pcafstand}
+ \doifelse\@@pcplaats\v!onder\vss{\vskip\papierhoogte\vskip\@@pcafstand}
\vskip\@@pcoffset}}
-\def\placepagecommentLR%
+\def\placepagecommentLR
{\hbox to \printpapierbreedte
{\hskip\@@pcoffset
- \doifelse{\@@pcplaats}{\v!rechts}{\hskip\papierbreedte\hskip\@@pcafstand}{\hss}%
+ \doifelse\@@pcplaats\v!rechts{\hskip\papierbreedte\hskip\@@pcafstand}\hss
\vbox to \printpapierhoogte
{\forgetall
\vskip\@@pcoffset
@@ -925,7 +1125,7 @@
\global\pagecommentfalse
\fi
\vss}%
- \doifelse{\@@pcplaats}{\v!rechts}{\hss}{\hskip\papierbreedte\hskip\@@pcafstand}%
+ \doifelse\@@pcplaats\v!rechts\hss{\hskip\papierbreedte\hskip\@@pcafstand}%
\hskip\@@pcoffset}}
\newif\ifpagecomment
@@ -945,7 +1145,7 @@
% This macro cuts a page into n parts that can be pasted
% together.
-\def\slicepages%
+\def\slicepages
{\dotripleempty\doslicepages}
\def\doslicepages[#1][#2][#3]%
@@ -960,7 +1160,7 @@
\def\dodoslicepages[#1][#2][#3]%
{\bgroup
\dontcomplain
- \gdef\slicedpagenumber{0}%
+ \globallet\slicedpagenumber\!!zerocount
\getfiguredimensions[#1]
\getparameters
[\??ip]
@@ -968,20 +1168,20 @@
\c!offset=\!!zeropoint,
\c!hoffset=\!!zeropoint,\c!voffset=\!!zeropoint,
\c!breedte=\figurewidth,\c!hoogte=\figureheight,#2]
-\ifnum\@@ipn>0
- \definepapersize
- [\s!dummy][\c!hoogte=\@@iphoogte,\c!breedte=\@@ipbreedte]
- \setuppapersize
- [\s!dummy][\s!dummy]
- \stellayoutin % \setuplayout
- [\c!rugwit=\!!zeropoint,\c!kopwit=\!!zeropoint,
- \c!hoogte=\v!midden,\c!breedte=\v!midden,
- \c!tekstafstand=\!!zeropoint,
- \c!hoofd=\!!zeropoint,\c!voet=\!!zeropoint]
-\fi
+ \ifnum\@@ipn>\zerocount
+ \definepapersize
+ [\s!dummy][\c!hoogte=\@@iphoogte,\c!breedte=\@@ipbreedte]
+ \setuppapersize
+ [\s!dummy][\s!dummy]
+ \stellayoutin % \setuplayout
+ [\c!rugwit=\!!zeropoint,\c!kopwit=\!!zeropoint,
+ \c!hoogte=\v!midden,\c!breedte=\v!midden,
+ \c!tekstafstand=\!!zeropoint,
+ \c!hoofd=\!!zeropoint,\c!voet=\!!zeropoint]
+ \fi
\dorecurse\noffigurepages
{\global\let\slicedpagenumber\recurselevel
- \ifnum\@@ipn>1
+ \ifnum\@@ipn>\plusone
\dorecurse\@@ipn
{\let\xslice\recurselevel
\dorecurse\@@ipn
@@ -1007,10 +1207,6 @@
\fi}
\egroup}
-% \starttext
-%
-% \slicepages[slice1.pdf][n=3]
-%
-% \stoptext
+% \starttext \slicepages[slice1.pdf][n=3] \stoptext
\protect \endinput