diff options
Diffstat (limited to 'tex/context/base/page-imp.tex')
-rw-r--r-- | tex/context/base/page-imp.tex | 744 |
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 |