1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16\writestatus{loading}{ConTeXt Page Macros Pagebody Building}
17
18\unprotect
19
20
21
22
23
24
25
26\newtoks\t_page_text_data
27
28\unexpanded\def\starttextdata#1\stoptextdata
29 {\glet\page_shipouts_flush_text_data\page_shipouts_flush_text_data_indeed
30 \globaladdtotoks\t_page_text_data{#1}}
31
32\let\stoptextdata\relax
33
34\def\page_shipouts_flush_text_data_indeed
35 {\vsmashed{\the\t_page_text_data}
36 \global\t_page_text_data\emptytoks
37 \glet\page_shipouts_flush_text_data\relax}
38
39\let\page_shipouts_flush_text_data\relax
40
41\prependtoks
42 \page_shipouts_flush_text_data
43\to \everylastshipout
44
45
46
47
48
49
50
51
52
53
54\installcorenamespace{shipoutmethod}
55\installcorenamespace{layoutarranger}
56\installcorenamespace{layoutarrangeoption}
57
58\newcount \shippedoutpages
59\newcount \combinedpagescounter
60
61\let \pagestoshipout\empty
62\newconstant \whichpagetoshipout
63
64\newbox \shipoutscratchbox
65
66\setnewconstant\shipoutfinalizemethod\plusone
67
68\unexpanded\def\shipoutrange#1#2
69 {\begingroup
70 \scratchtoks\emptytoks
71 \dostepwiserecurse{#1}{\numexpr#2\plusone\relax}\plusone{\etoksapp\scratchtoks{##1,}}
72 \xdef\pagestoshipout{\the\scratchtoks,\number#2}
73 \doglobal\appendtoks
74 \ifnum\realpageno>\numexpr#2\plusone\relax
75 \global\everypar{\normalend}
76 \fi
77 \to\everyaftershipout
78 \endgroup}
79
80\unexpanded\def\installshipoutmethod#1#2
81 {\setgvalue{\??shipoutmethod#1}##1{#2{##1}}}
82
83\let\installpagehandler\installshipoutmethod
84
85\unexpanded\def\invokepagehandler#1
86 {\expandnamespacevalue\??shipoutmethod{#1}\v!normal}
87
88\def\page_shipouts_handle
89 {\ifcsname\??shipoutmethod\v_page_target_method\endcsname
90 \expandafter\lastnamedcs
91 \else
92 \expandafter\page_shipouts_ignore
93 \fi}
94
95\installshipoutmethod \v!normal
96 {\ifarrangingpages
97 \expandafter\page_shipouts_arrange
98 \else
99 \expandafter\page_shipouts_normal
100 \fi}
101
102\installshipoutmethod \v!none
103 {\page_shipouts_ignore}
104
105
106
107
108\installshipoutmethod\v!rotate
109 {\page_shipouts_rotate}
110
111\protected\def\page_shipouts_rotate#1
112 {\invokepagehandler\v!normal{\rotate[\c!rotation=\rootlayouttargetparameter\c!rotation]{#1}}}
113
114
115
116\newcount\c_page_boxes_flush_n
117
118\let\page_boxes_flush_before\relax
119\let\page_boxes_flush_after \relax
120
121
122
123\def\page_boxes_shipout#1
124 {\dontcomplain
125 \ifcase\c_page_boxes_flush_n\else
126 \page_boxes_flush_before
127 \fi
128 \the\everybeforeshipout
129 \ifcase\shipoutfinalizemethod
130 \page_shipouts_handle{#1}
131 \else
132 \setbox\shipoutscratchbox\hpack
133 {#1}
134 \page_shipouts_handle
135 {\finalizeshipoutbox\shipoutscratchbox
136 \box\shipoutscratchbox}
137 \fi
138 \setnextrealpageno
139 \the\everyaftershipout
140 \ifcase\c_page_boxes_flush_n\else
141 \page_boxes_flush_after
142 \fi}
143
144\def\page_shipouts_ignore#1
145 {\begingroup
146 \writestatus\m!system
147 {\ifarrangingpages arranged \fi page
148 \ifarrangingpages\the\arrangeno\else\the\realpageno\fi\normalspace
149 not flushed}
150
151
152 \deadcycles\zerocount
153 \endgroup}
154
155\def\page_otr_flush_every_stuff
156 {\begingroup
157 \setbox\scratchbox\hpack
158 {
159 \ifcase\realfolio \or
160 \the\everyfirstshipout
161 \global\everyfirstshipout\emptytoks
162 \fi
163
164 \the\everyshipout\relax
165
166 \ifnum\realpageno=\lastpage\relax
167 \the\everylastshipout
168 \global\everylastshipout\emptytoks
169 \fi}
170 \smashbox\scratchbox
171 \box\scratchbox
172 \endgroup}
173
174
175
176
177
178
179\def\page_shipout_show_box{\scratchcounter}
180
181\unexpanded\def\page_shipout_box#1
182 {\ifcase\tracingoutput\else
183 \page_shipout_show_box#1\relax
184 \fi
185 \clf_shipoutpage#1\relax
186 \global\setbox#1\emptybox
187 \global\deadcycles\zerocount}
188
189\def\page_shipouts_normal#1
190 {\global\advance\shippedoutpages\plusone
191
192 \ifx\pagestoshipout\empty
193 \ifcase\whichpagetoshipout\relax
194 \donetrue
195 \or
196 \ifodd\shippedoutpages\relax\donetrue\else\donefalse\fi
197 \or
198 \ifodd\shippedoutpages\relax\donefalse\else\donetrue\fi
199 \else
200 \donetrue
201 \fi
202 \else
203 \normalexpanded{\doifelseinset{\the\shippedoutpages}{\pagestoshipout}}\donetrue\donefalse
204 \fi
205 \ifdone
206 \setbox\shipoutscratchbox\hpack
207 {#1}
208 \ifcase\shipoutfinalizemethod
209 \finalizeshipoutbox\shipoutscratchbox
210 \fi
211 \setbox\shipoutscratchbox\vpack
212 {\scratchdimen\clf_shipoutoffset\relax
213 \ifdim\scratchdimen=\zeropoint\else
214 \offinterlineskip
215 \vkern\scratchdimen
216 \hkern\scratchdimen
217 \fi
218 \hpack
219 {\page_otr_flush_every_stuff
220 \page_otr_flush_special_content
221 \box\shipoutscratchbox}}
222 \page_shipout_box\shipoutscratchbox
223 \else
224 \page_shipouts_ignore{#1}
225 \fi}
226
227\newconditional\c_page_shipouts_use_objects \settrue\c_page_shipouts_use_objects
228
229\installcorenamespace {arrangedpage}
230
231\def\page_shipouts_arrange#1
232 {\begingroup
233 \setbox\shipoutscratchbox\hpack
234 {#1}
235 \setbox\shipoutscratchbox\hpack
236 {\page_otr_flush_every_stuff
237 \page_otr_flush_special_content
238 \box\shipoutscratchbox}
239
240 \ifconditional\c_page_shipouts_use_objects
241 \setobject\??arrangedpage{\the\realpageno}\hpack{\box\shipoutscratchbox}
242 \setbox\shipoutscratchbox\hpack{\getobject\??arrangedpage{\the\realpageno}}
243 \fi
244
245 \pusharrangedpage\shipoutscratchbox
246 \deadcycles\zerocount
247 \endgroup}
248
249
250
251\newbox\arrangedpageA \newbox\arrangedpageB
252\newbox\arrangedpageC \newbox\arrangedpageD
253\newbox\arrangedpageE \newbox\arrangedpageF
254\newbox\arrangedpageG \newbox\arrangedpageH
255
256\newconditional\arrangedswapstate
257\newconditional\arrangednegatestate
258\newconditional\arrangedmirrorstate
259\newconditional\arrangeddoublestate
260\newconditional\arrangingdisabledstate
261\newconditional\arrangedbackgroundstate
262
263\def\arrangedrotationO{0}
264\def\arrangedrotationE{0}
265
266\newcount\arrangedpageN
267\newcount\arrangedpageM
268
269\newcount\arrangedpageT \arrangedpageT\plusone
270\newcount\arrangedpageX \arrangedpageX\plusone
271\newcount\arrangedpageY \arrangedpageY\plusone
272
273\def\page_paper_set_offsets
274 {\global\paperoffset\v_page_target_offset
275 \global\advance\paperwidth 2\dimexpr\paperoffset\arrangedpageX\relax
276 \global\advance\paperheight2\dimexpr\paperoffset\arrangedpageY\relax}
277
278\def\doinstallarrangedoption#1#2
279 {\setvalue{\??layoutarrangeoption#1}{#2}}
280
281\def\doinstalledarrangedoption#1
282 {\ifcsname\??layoutarrangeoption#1\endcsname
283 \csname\??layoutarrangeoption#1\endcsname
284 \else
285 \checkinstalledpagearrangement{#1}
286 \fi}
287
288\doinstallarrangedoption\empty
289 {}
290
291\doinstallarrangedoption\v!disable
292 {\global\settrue\arrangingdisabledstate}
293
294\doinstallarrangedoption\v!mirrored
295 {\global\settrue\arrangedmirrorstate}
296
297\doinstallarrangedoption\v!doublesided
298 {\global\settrue\arrangeddoublestate}
299
300\doinstallarrangedoption\v!negative
301 {\global\settrue\arrangednegatestate}
302
303\doinstallarrangedoption\v!rotated
304 {\gdef\arrangedrotationO {90}
305 \gdef\arrangedrotationE{270}
306 \swapcounts\c_page_marks_nx\c_page_marks_ny}
307
308\doinstallarrangedoption{90}
309 {\gdef\arrangedrotationO {90}
310 \gdef\arrangedrotationE{270}
311 \swapcounts\c_page_marks_nx\c_page_marks_ny}
312
313\doinstallarrangedoption{180}
314 {\gdef\arrangedrotationO{180}
315 \gdef\arrangedrotationE {0}}
316
317\doinstallarrangedoption{270}
318 {\gdef\arrangedrotationO{270}
319 \gdef\arrangedrotationE {90}
320 \swapcounts\c_page_marks_nx\c_page_marks_ny}
321
322\doinstallarrangedoption\s!reset
323 {\global\arrangingpagesfalse}
324
325\doinstallarrangedoption\v!background
326 {\global\settrue\arrangedbackgroundstate}
327
328\unexpanded\def\setuparranging[#1]
329 {\ifconditional\arrangingdisabledstate \else
330
331 \global\arrangingpagestrue
332 \global\setfalse\arrangednegatestate
333 \global\setfalse\arrangedmirrorstate
334 \global\setfalse\arrangeddoublestate
335 \global\setfalse\arrangedswapstate
336 \gdef\arrangedrotationO{0}
337 \gdef\arrangedrotationE{180}
338 \processcommalist[#1]\doinstalledarrangedoption
339 \ifdefined\handlearrangedpage\else
340 \global\arrangingpagesfalse
341 \fi
342 \setuppapersize
343 \ifarrangingpages
344 \ifconditional\c_page_shipouts_use_objects\else
345 \clf_disablejobsave
346 \clf_synctexdisable
347
348 \fi
349 \fi
350 \fi}
351
352\def\installpagearrangement #1
353 {\setgvalue{\??layoutarranger#1}}
354
355\def\checkinstalledpagearrangement#1
356 {\begincsname\??layoutarranger#1\endcsname}
357
358\let\poparrangedpages\relax
359\let\pusharrangedpage\relax
360
361\def\dosetuparrangement#1#2#3#4#5#6#7#8
362 {\global\arrangedpageX #1
363 \global\arrangedpageY #2
364 \global\arrangedpageT #3
365 \global\c_page_marks_nx #4
366 \global\c_page_marks_ny #5
367 \glet \pusharrangedpage #6
368 \glet \poparrangedpages #7
369 \glet \handlearrangedpage#8}
370
371\installpagearrangement {\v!normal}
372 {\global\arrangingpagesfalse}
373
374
375
376
377
378
379
380
381
382
383\installpagearrangement 2*16
384 {\dosetuparrangement{4}{4}{16}{5}{5}
385 \pusharrangedpageTHIRTYTWO\poparrangedpagesAB\relax}
386
387\installpagearrangement 2*8
388 {\dosetuparrangement{4}{2}{8}{5}{3}
389 \pusharrangedpageSIXTEEN\poparrangedpagesAB\relax}
390
391\installpagearrangement 2*4
392 {\dosetuparrangement{2}{2}{4}{3}{3}
393 \pusharrangedpageEIGHT\poparrangedpagesAB\relax}
394
395\installpagearrangement 2*2
396 {\dosetuparrangement{2}{1}{2}{3}{2}
397 \pusharrangedpageFOURA\poparrangedpagesAB\relax}
398
399\installpagearrangement 2**2
400 {\dosetuparrangement{2}{1}{2}{3}{2}
401 \pusharrangedpageFOURB\poparrangedpagesAB\relax}
402
403\installpagearrangement 2SIDE
404 {\dosetuparrangement{2}{1}{2}{3}{2}
405 \pusharrangedpageSIDETOP\poparrangedpagesTWO\handlearrangedpageSIDE}
406
407\installpagearrangement 2TOP
408 {\dosetuparrangement{1}{2}{2}{2}{3}
409 \pusharrangedpageSIDETOP\poparrangedpagesTWO\handlearrangedpageTOP}
410
411\installpagearrangement 2UP
412 {\dosetuparrangement{2}{1}{4}{3}{2}
413 \pusharrangedpageTWO\poparrangedpagesTWO\handlearrangedpageTWOUP}
414
415\installpagearrangement 2DOWN
416 {\dosetuparrangement{1}{2}{4}{2}{3}
417 \pusharrangedpageTWO\poparrangedpagesTWO\handlearrangedpageTWODOWN}
418
419\installpagearrangement 2*4*2
420 {\dosetuparrangement{2}{2}{4}{3}{3}
421 \pusharrangedpageSIXTEENTWO\poparrangedpagesAtoD\relax}
422
423\installpagearrangement 2*2*4
424 {\dosetuparrangement{2}{1}{8}{3}{2}
425 \pusharrangedpageSIXTEENFOUR\poparrangedpagesAtoH\relax}
426
427\installpagearrangement 2TOPSIDE
428 {\dosetuparrangement{1}{2}{4}{2}{3}
429 \pusharrangedpageTWOTOPSIDE\poparrangedpagesTWOTOPSIDE\handlearrangedpageTOP}
430
431\def\filluparrangedpages
432 {\ifarrangingpages
433 \scratchcounter\numexpr\realpageno\plusone\relax
434 \dosetmodulo\scratchcounter\arrangedpageT\scratchcounter
435 \ifcase\scratchcounter\else
436 \advance\scratchcounter \plusone
437 \dostepwiserecurse\scratchcounter\arrangedpageT\plusone
438 {\noheaderandfooterlines\page_otr_insert_dummy_page}
439 \fi
440 \fi}
441
442\def\handlearrangedpageXandY#1#2#3#4#5
443 {\global\setbox#5\hpack to \arrangedpageX\paperwidth
444 {\setbox\scratchbox\vpack to \arrangedpageY\paperheight
445 {\offinterlineskip
446 \vskip#4\paperheight
447 \hskip#3\paperwidth
448 \dorotatebox{\ifcase#2 0\else180\fi}\hpack{\box#1}
449 \vfill}
450 \wd\scratchbox\zeropoint
451 \box\scratchbox\box#5\hss}}
452
453\def\gotonextarrangepage
454 {\global\advance\arrangeno \plusone
455 \def\pagecutmarksymbol{\the\arrangeno}}
456
457\def\outputarrangedbox#1
458 {\begingroup
459 \forgetall
460 \dontcomplain
461 \gotonextarrangepage
462 \ifnum\arrangedrotationO\arrangedrotationE>\zerocount
463 \setbox#1\vpack
464 {\ifconditional\arrangeddoublestate
465 \ifodd\arrangeno
466 \dorotatebox\arrangedrotationO\hpack{\box#1}
467 \else
468 \dorotatebox\arrangedrotationE\hpack{\box#1}
469 \fi
470 \else
471 \dorotatebox\arrangedrotationO\hpack{\box#1}
472 \fi}
473 \fi
474 \ifconditional\arrangedmirrorstate
475 \page_boxes_apply_mirror{#1}
476 \fi
477 \ifconditional\arrangednegatestate
478 \page_boxes_apply_negate{#1}
479 \fi
480 \page_marks_add_more #1
481 \page_boxes_apply_center #1
482 \page_boxes_apply_mirror_print #1
483 \page_boxes_apply_orientate_print#1
484 \page_boxes_apply_offset #1
485 \page_boxes_apply_negate_print #1
486
487 \ifconditional\arrangedbackgroundstate
488 \page_backgrounds_add_to_print#1
489 \fi
490
491 \page_shipouts_normal{\box#1}
492 \endgroup}
493
494
495
496
497\def\reportarrangedpage#1
498 {\showmessage\m!system{23}{\the\realpageno.\the\pageno\ifnum\subpageno>0 .\the\subpageno\fi,\number#1}}
499
500\def\advancearrangedpageN
501 {\global\advance\arrangedpageN\plusone}
502
503
504
505
506
507\def\poparrangedpagesAB
508 {\ifnum\arrangedpageN>\zerocount
509 \paperwidth\arrangedpageX\paperwidth
510 \paperheight\arrangedpageY\paperheight
511 \outputarrangedbox\arrangedpageA
512 \outputarrangedbox\arrangedpageB
513 \global\arrangedpageN\zerocount
514 \fi}
515
516\def\pusharrangedpageTHIRTYTWO#1
517 {\advancearrangedpageN
518 \reportarrangedpage\arrangedpageN
519 \ifcase\arrangedpageN
520 \or \handlearrangedpageXandY{#1}033\arrangedpageA
521 \or \handlearrangedpageXandY{#1}003\arrangedpageB
522 \or \handlearrangedpageXandY{#1}100\arrangedpageB
523 \or \handlearrangedpageXandY{#1}130\arrangedpageA
524 \or \handlearrangedpageXandY{#1}100\arrangedpageA
525 \or \handlearrangedpageXandY{#1}130\arrangedpageB
526 \or \handlearrangedpageXandY{#1}033\arrangedpageB
527 \or \handlearrangedpageXandY{#1}003\arrangedpageA
528 \or \handlearrangedpageXandY{#1}102\arrangedpageA
529 \or \handlearrangedpageXandY{#1}132\arrangedpageB
530 \or \handlearrangedpageXandY{#1}031\arrangedpageB
531 \or \handlearrangedpageXandY{#1}001\arrangedpageA
532 \or \handlearrangedpageXandY{#1}031\arrangedpageA
533 \or \handlearrangedpageXandY{#1}001\arrangedpageB
534 \or \handlearrangedpageXandY{#1}102\arrangedpageB
535 \or \handlearrangedpageXandY{#1}132\arrangedpageA
536 \or \handlearrangedpageXandY{#1}122\arrangedpageA
537 \or \handlearrangedpageXandY{#1}112\arrangedpageB
538 \or \handlearrangedpageXandY{#1}011\arrangedpageB
539 \or \handlearrangedpageXandY{#1}021\arrangedpageA
540 \or \handlearrangedpageXandY{#1}011\arrangedpageA
541 \or \handlearrangedpageXandY{#1}021\arrangedpageB
542 \or \handlearrangedpageXandY{#1}122\arrangedpageB
543 \or \handlearrangedpageXandY{#1}112\arrangedpageA
544 \or \handlearrangedpageXandY{#1}013\arrangedpageA
545 \or \handlearrangedpageXandY{#1}023\arrangedpageB
546 \or \handlearrangedpageXandY{#1}120\arrangedpageB
547 \or \handlearrangedpageXandY{#1}110\arrangedpageA
548 \or \handlearrangedpageXandY{#1}120\arrangedpageA
549 \or \handlearrangedpageXandY{#1}110\arrangedpageB
550 \or \handlearrangedpageXandY{#1}013\arrangedpageB
551 \or \handlearrangedpageXandY{#1}023\arrangedpageA
552 \poparrangedpages
553 \fi}
554
555\def\pusharrangedpageSIXTEEN#1
556 {\advancearrangedpageN
557 \reportarrangedpage\arrangedpageN
558 \ifcase\arrangedpageN
559 \or \handlearrangedpageXandY{#1}031\arrangedpageA
560 \or \handlearrangedpageXandY{#1}001\arrangedpageB
561 \or \handlearrangedpageXandY{#1}031\arrangedpageB
562 \or \handlearrangedpageXandY{#1}001\arrangedpageA
563 \or \handlearrangedpageXandY{#1}100\arrangedpageA
564 \or \handlearrangedpageXandY{#1}130\arrangedpageB
565 \or \handlearrangedpageXandY{#1}100\arrangedpageB
566 \or \handlearrangedpageXandY{#1}130\arrangedpageA
567 \or \handlearrangedpageXandY{#1}120\arrangedpageA
568 \or \handlearrangedpageXandY{#1}110\arrangedpageB
569 \or \handlearrangedpageXandY{#1}120\arrangedpageB
570 \or \handlearrangedpageXandY{#1}110\arrangedpageA
571 \or \handlearrangedpageXandY{#1}011\arrangedpageA
572 \or \handlearrangedpageXandY{#1}021\arrangedpageB
573 \or \handlearrangedpageXandY{#1}011\arrangedpageB
574 \or \handlearrangedpageXandY{#1}021\arrangedpageA
575 \poparrangedpages
576 \fi}
577
578\def\pusharrangedpageEIGHT#1
579 {\advancearrangedpageN
580 \reportarrangedpage\arrangedpageN
581 \ifcase\arrangedpageN
582 \or \handlearrangedpageXandY{#1}011\arrangedpageA
583 \or \handlearrangedpageXandY{#1}001\arrangedpageB
584 \or \handlearrangedpageXandY{#1}100\arrangedpageB
585 \or \handlearrangedpageXandY{#1}110\arrangedpageA
586 \or \handlearrangedpageXandY{#1}100\arrangedpageA
587 \or \handlearrangedpageXandY{#1}110\arrangedpageB
588 \or \handlearrangedpageXandY{#1}011\arrangedpageB
589 \or \handlearrangedpageXandY{#1}001\arrangedpageA
590 \poparrangedpages
591 \fi}
592
593\def\pusharrangedpageFOURA{\pusharrangedpageFOURdo01}
594\def\pusharrangedpageFOURB{\pusharrangedpageFOURdo10}
595
596\def\pusharrangedpageFOURdo#1#2#3
597 {\advancearrangedpageN
598 \reportarrangedpage\arrangedpageN
599 \ifcase\arrangedpageN
600 \or \handlearrangedpageXandY{#3}010\arrangedpageA
601 \or \handlearrangedpageXandY{#3}0{#1}0\arrangedpageB
602 \or \handlearrangedpageXandY{#3}0{#2}0\arrangedpageB
603 \or \handlearrangedpageXandY{#3}000\arrangedpageA
604 \poparrangedpages
605 \fi}
606
607\def\pusharrangedpageSIDETOP#1
608 {\advancearrangedpageN
609 \reportarrangedpage\arrangedpageN
610 \ifcase\arrangedpageN
611 \or \handlearrangedpageXandY{#1}000\arrangedpageA
612 \or \handlearrangedpageXandY{#1}000\arrangedpageB
613 \poparrangedpages
614 \fi}
615
616\def\handlearrangedpageSIDE
617 {\wd\arrangedpageA\paperwidth
618 \wd\arrangedpageB\paperwidth
619 \global\setbox\arrangedpageA\hpack
620 {\box\arrangedpageA\box\arrangedpageB}
621 \ht\arrangedpageA\paperheight}
622
623\def\handlearrangedpageTOP
624 {\ht\arrangedpageA\paperheight
625 \ht\arrangedpageB\paperheight
626 \global\setbox\arrangedpageA\vpack
627 {\offinterlineskip\vskip\paperheight
628 \box\arrangedpageA\box\arrangedpageB}
629 \global\setbox\arrangedpageB\box\scratchbox}
630
631
632
633\def\splitoffarrangedpagesTWO
634 {\splittopskip\zeropoint
635 \global\setbox\arrangedpageA\vsplit\arrangedpageB to \onepoint
636 \scratchdimen\dimexpr\ht\arrangedpageB\onepoint\relax
637 \ifdim\scratchdimen>\onepoint
638 \setbox\scratchbox\vsplit\arrangedpageB to \scratchdimen
639 \fi}
640
641\def\handlearrangedpageTWOUP
642 {\splitoffarrangedpagesTWO
643 \ht\arrangedpageA\paperheight
644 \ht\arrangedpageB\paperheight
645 \ifconditional\arrangedswapstate
646 \global\setbox\arrangedpageA\hpack
647 {\page_boxes_apply_clip_print_left \arrangedpageA
648 \box\arrangedpageA
649 \page_boxes_apply_clip_print_right\arrangedpageB
650 \box\arrangedpageB}
651 \setfalse\arrangedswapstate
652 \else
653 \global\setbox\arrangedpageA\hpack
654 {\page_boxes_apply_clip_print_left \arrangedpageB
655 \box\arrangedpageB
656 \page_boxes_apply_clip_print_right\arrangedpageA
657 \box\arrangedpageA}
658 \settrue\arrangedswapstate
659 \fi
660 \global\setbox\arrangedpageB\box\scratchbox}
661
662\def\handlearrangedpageTWODOWN
663 {\splitoffarrangedpagesTWO
664 \ht\arrangedpageA\paperheight
665 \ht\arrangedpageB\paperheight
666 \ifconditional\arrangedswapstate
667 \global\setbox\arrangedpageA\vpack
668 {\offinterlineskip
669 \vskip\paperheight
670 \box\arrangedpageA
671 \box\arrangedpageB}
672 \setfalse\arrangedswapstate
673 \else
674 \global\setbox\arrangedpageA\vpack
675 {\offinterlineskip
676 \vskip\paperheight
677 \box\arrangedpageB
678 \box\arrangedpageA}
679 \settrue\arrangedswapstate
680 \fi
681 \global\setbox\arrangedpageB\box\scratchbox}
682
683\def\poparrangedpagesTWO
684 {\ifnum\arrangedpageN>\zerocount
685 \setfalse\arrangedswapstate
686 \doloop
687 {\handlearrangedpage
688 \bgroup
689 \paperwidth \arrangedpageX\paperwidth
690 \paperheight\arrangedpageY\paperheight
691 \ht\arrangedpageA\paperheight
692 \wd\arrangedpageA\paperwidth
693 \outputarrangedbox\arrangedpageA
694 \egroup
695 \ifdim\ht\arrangedpageB=\zeropoint
696 \exitloop
697 \fi}
698 \global\arrangedpageN\zerocount
699 \fi}
700
701\def\pusharrangedpageTWO#1
702 {\advancearrangedpageN
703 \reportarrangedpage\arrangedpageN
704 \global\setbox\arrangedpageB\vpack
705 {\offinterlineskip
706 \unvbox\arrangedpageB
707 \allowbreak
708 \setbox#1\vpack{\box#1}
709 \ht#1\onepoint
710 \dp#1\zeropoint
711 \vpack{\box#1}}}
712
713\def\poparrangedpagesTWOTOPSIDE
714 {\ifnum\arrangedpageN>\zerocount
715 \bgroup
716 \global\arrangedpageN\plustwo
717 \poparrangedpagesTWO
718 \let\arrangedpageA\arrangedpageC
719 \let\arrangedpageB\arrangedpageD
720 \global\arrangedpageN\plustwo
721 \poparrangedpagesTWO
722 \global\arrangedpageN\zerocount
723 \egroup
724 \fi}
725
726\def\pusharrangedpageTWOTOPSIDE#1
727 {\advancearrangedpageN
728 \reportarrangedpage\arrangedpageN
729 \ifcase\arrangedpageN
730 \or \handlearrangedpageXandY{#1}000\arrangedpageA
731 \or \handlearrangedpageXandY{#1}000\arrangedpageC
732 \or \handlearrangedpageXandY{#1}000\arrangedpageB
733 \or \handlearrangedpageXandY{#1}000\arrangedpageD
734 \poparrangedpages
735 \fi}
736
737
738
739\def\poparrangedpagesAtoH
740 {\ifnum\arrangedpageN>\zerocount
741 \paperwidth \arrangedpageX\paperwidth
742 \paperheight\arrangedpageY\paperheight
743 \outputarrangedbox\arrangedpageA
744 \outputarrangedbox\arrangedpageB
745 \outputarrangedbox\arrangedpageC
746 \outputarrangedbox\arrangedpageD
747 \outputarrangedbox\arrangedpageE
748 \outputarrangedbox\arrangedpageF
749 \outputarrangedbox\arrangedpageG
750 \outputarrangedbox\arrangedpageH
751 \global\arrangedpageN\zerocount
752 \fi}
753
754
755
756\def\poparrangedpagesAtoD
757 {\ifnum\arrangedpageN>\zerocount
758 \paperwidth\arrangedpageX\paperwidth
759 \paperheight\arrangedpageY\paperheight
760 \outputarrangedbox\arrangedpageA
761 \outputarrangedbox\arrangedpageB
762 \outputarrangedbox\arrangedpageC
763 \outputarrangedbox\arrangedpageD
764 \global\arrangedpageN\zerocount
765 \fi}
766
767
768
769\def\pusharrangedpageSIXTEENFOUR#1
770 {\advancearrangedpageN
771 \reportarrangedpage\arrangedpageN
772 \ifcase\arrangedpageN
773 \or \handlearrangedpageXandY{#1}010\arrangedpageA
774 \or \handlearrangedpageXandY{#1}000\arrangedpageB
775 \or \handlearrangedpageXandY{#1}010\arrangedpageC
776 \or \handlearrangedpageXandY{#1}000\arrangedpageD
777 \or \handlearrangedpageXandY{#1}010\arrangedpageE
778 \or \handlearrangedpageXandY{#1}000\arrangedpageF
779 \or \handlearrangedpageXandY{#1}010\arrangedpageG
780 \or \handlearrangedpageXandY{#1}000\arrangedpageH
781 \or \handlearrangedpageXandY{#1}010\arrangedpageH
782 \or \handlearrangedpageXandY{#1}000\arrangedpageG
783 \or \handlearrangedpageXandY{#1}010\arrangedpageF
784 \or \handlearrangedpageXandY{#1}000\arrangedpageE
785 \or \handlearrangedpageXandY{#1}010\arrangedpageD
786 \or \handlearrangedpageXandY{#1}000\arrangedpageC
787 \or \handlearrangedpageXandY{#1}010\arrangedpageB
788 \or \handlearrangedpageXandY{#1}000\arrangedpageA
789 \poparrangedpages
790 \fi}
791
792
793
794\def\pusharrangedpageSIXTEENTWO#1
795 {\advancearrangedpageN
796 \reportarrangedpage\arrangedpageN
797 \ifcase\arrangedpageN
798 \or \handlearrangedpageXandY{#1}011\arrangedpageA
799 \or \handlearrangedpageXandY{#1}001\arrangedpageB
800 \or \handlearrangedpageXandY{#1}011\arrangedpageC
801 \or \handlearrangedpageXandY{#1}001\arrangedpageD
802 \or \handlearrangedpageXandY{#1}100\arrangedpageD
803 \or \handlearrangedpageXandY{#1}110\arrangedpageC
804 \or \handlearrangedpageXandY{#1}100\arrangedpageB
805 \or \handlearrangedpageXandY{#1}110\arrangedpageA
806 \or \handlearrangedpageXandY{#1}100\arrangedpageA
807 \or \handlearrangedpageXandY{#1}110\arrangedpageB
808 \or \handlearrangedpageXandY{#1}100\arrangedpageC
809 \or \handlearrangedpageXandY{#1}110\arrangedpageD
810 \or \handlearrangedpageXandY{#1}011\arrangedpageD
811 \or \handlearrangedpageXandY{#1}001\arrangedpageC
812 \or \handlearrangedpageXandY{#1}011\arrangedpageB
813 \or \handlearrangedpageXandY{#1}001\arrangedpageA
814 \poparrangedpages
815 \fi}
816
817
818
819
820
821
822\installpagearrangement 2*8*Z
823 {\dosetuparrangement{2}{4}{8}{3}{5}
824 \pusharrangedpageSIXTEENZ\poparrangedpagesAB\relax}
825
826\def\pusharrangedpageSIXTEENZ#1
827 {\advancearrangedpageN
828 \reportarrangedpage\arrangedpageN
829 \ifcase\arrangedpageN
830 \or \handlearrangedpageXandY{#1}010\arrangedpageA
831 \or \handlearrangedpageXandY{#1}000\arrangedpageB
832 \or \handlearrangedpageXandY{#1}101\arrangedpageB
833 \or \handlearrangedpageXandY{#1}111\arrangedpageA
834 \or \handlearrangedpageXandY{#1}012\arrangedpageA
835 \or \handlearrangedpageXandY{#1}002\arrangedpageB
836 \or \handlearrangedpageXandY{#1}103\arrangedpageB
837 \or \handlearrangedpageXandY{#1}113\arrangedpageA
838 \or \handlearrangedpageXandY{#1}103\arrangedpageA
839 \or \handlearrangedpageXandY{#1}113\arrangedpageB
840 \or \handlearrangedpageXandY{#1}012\arrangedpageB
841 \or \handlearrangedpageXandY{#1}002\arrangedpageA
842 \or \handlearrangedpageXandY{#1}101\arrangedpageA
843 \or \handlearrangedpageXandY{#1}111\arrangedpageB
844 \or \handlearrangedpageXandY{#1}010\arrangedpageB
845 \or \handlearrangedpageXandY{#1}000\arrangedpageA
846 \poparrangedpages
847 \fi}
848
849
850
851
852\installpagearrangement 2*6*Z
853 {\dosetuparrangement{2}{3}{6}{3}{4}
854 \pusharrangedpageTWELVEZ\poparrangedpagesAB\relax}
855
856\def\pusharrangedpageTWELVEZ#1
857 {\advancearrangedpageN
858 \reportarrangedpage\arrangedpageN
859 \ifcase\arrangedpageN
860 \or \handlearrangedpageXandY{#1}010\arrangedpageA
861 \or \handlearrangedpageXandY{#1}000\arrangedpageB
862 \or \handlearrangedpageXandY{#1}101\arrangedpageB
863 \or \handlearrangedpageXandY{#1}111\arrangedpageA
864 \or \handlearrangedpageXandY{#1}012\arrangedpageA
865 \or \handlearrangedpageXandY{#1}002\arrangedpageB
866 \or \handlearrangedpageXandY{#1}012\arrangedpageB
867 \or \handlearrangedpageXandY{#1}002\arrangedpageA
868 \or \handlearrangedpageXandY{#1}101\arrangedpageA
869 \or \handlearrangedpageXandY{#1}111\arrangedpageB
870 \or \handlearrangedpageXandY{#1}010\arrangedpageB
871 \or \handlearrangedpageXandY{#1}000\arrangedpageA
872 \poparrangedpages
873 \fi}
874
875
876
877
878\installpagearrangement 1*8
879 {\dosetuparrangement{4}{2}{8}{5}{3}
880 \pusharrangedpageEIGHTSINGLESIDEDFOLDED\poparrangedpagesTWO\relax}
881
882\def\pusharrangedpageEIGHTSINGLESIDEDFOLDED#1
883 {\advancearrangedpageN
884 \reportarrangedpage\arrangedpageN
885 \ifcase\arrangedpageN
886 \or \handlearrangedpageXandY{#1}010\arrangedpageA
887 \or \handlearrangedpageXandY{#1}020\arrangedpageA
888 \or \handlearrangedpageXandY{#1}030\arrangedpageA
889 \or \handlearrangedpageXandY{#1}131\arrangedpageA
890 \or \handlearrangedpageXandY{#1}121\arrangedpageA
891 \or \handlearrangedpageXandY{#1}111\arrangedpageA
892 \or \handlearrangedpageXandY{#1}101\arrangedpageA
893 \or \handlearrangedpageXandY{#1}000\arrangedpageA
894 \poparrangedpages
895 \fi}
896
897
898
899
900\installpagearrangement 1*4
901 {\dosetuparrangement{2}{2}{4}{3}{3}
902 \pusharrangedpageFOURSINGLESIDEDFOLDED\poparrangedpagesTWO\relax}
903
904\def\pusharrangedpageFOURSINGLESIDEDFOLDED#1
905 {\advancearrangedpageN
906 \reportarrangedpage\arrangedpageN
907 \ifcase\arrangedpageN
908 \or \handlearrangedpageXandY{#1}100\arrangedpageA
909 \or \handlearrangedpageXandY{#1}001\arrangedpageA
910 \or \handlearrangedpageXandY{#1}011\arrangedpageA
911 \or \handlearrangedpageXandY{#1}110\arrangedpageA
912 \poparrangedpages
913 \fi}
914
915
916
917
918\installpagearrangement 3SIDE
919 {\dosetuparrangement{3}{1}{3}{4}{2}
920 \pusharrangedpageTHREESIDE\poparrangedpagesAB\relax}
921
922\def\pusharrangedpageTHREESIDE#1
923 {\advancearrangedpageN
924 \reportarrangedpage\arrangedpageN
925 \ifcase\arrangedpageN
926 \or \handlearrangedpageXandY{#1}000\arrangedpageA
927 \or \handlearrangedpageXandY{#1}010\arrangedpageA
928 \or \handlearrangedpageXandY{#1}020\arrangedpageA
929 \or \handlearrangedpageXandY{#1}000\arrangedpageB
930 \or \handlearrangedpageXandY{#1}010\arrangedpageB
931 \or \handlearrangedpageXandY{#1}020\arrangedpageB
932 \poparrangedpages
933 \fi}
934
935
936
937
938\installpagearrangement TRYPTICHON
939 {\dosetuparrangement{3}{1}{3}{4}{2}
940 \pusharrangedpageFLYERSIX\poparrangedpagesAB\relax}
941
942\def\pusharrangedpageFLYERSIX#1
943 {\advancearrangedpageN
944 \reportarrangedpage\arrangedpageN
945 \ifcase\arrangedpageN
946 \or \handlearrangedpageXandY{#1}020\arrangedpageA
947 \or \handlearrangedpageXandY{#1}000\arrangedpageB
948 \or \handlearrangedpageXandY{#1}010\arrangedpageB
949 \or \handlearrangedpageXandY{#1}020\arrangedpageB
950 \or \handlearrangedpageXandY{#1}000\arrangedpageA
951 \or \handlearrangedpageXandY{#1}010\arrangedpageA
952 \poparrangedpages
953 \fi}
954
955
956
957
958\installpagearrangement ZFLYER8
959 {\dosetuparrangement{4}{1}{4}{5}{2}
960 \pusharrangedpageZFLYEREIGHT\poparrangedpagesAB\relax}
961
962\def\pusharrangedpageZFLYEREIGHT#1
963 {\advancearrangedpageN
964 \reportarrangedpage\arrangedpageN
965 \ifcase\arrangedpageN
966 \or \handlearrangedpageXandY{#1}030\arrangedpageA
967 \or \handlearrangedpageXandY{#1}000\arrangedpageB
968 \or \handlearrangedpageXandY{#1}010\arrangedpageB
969 \or \handlearrangedpageXandY{#1}020\arrangedpageB
970 \or \handlearrangedpageXandY{#1}030\arrangedpageB
971 \or \handlearrangedpageXandY{#1}000\arrangedpageA
972 \or \handlearrangedpageXandY{#1}010\arrangedpageA
973 \or \handlearrangedpageXandY{#1}020\arrangedpageA
974 \poparrangedpages
975 \fi}
976
977
978
979
980\installpagearrangement ZFLYER10
981 {\dosetuparrangement{5}{1}{5}{6}{2}
982 \pusharrangedpageZFLYERTEN\poparrangedpagesAB\relax}
983
984\def\pusharrangedpageZFLYERTEN#1
985 {\advancearrangedpageN
986 \reportarrangedpage\arrangedpageN
987 \ifcase\arrangedpageN
988 \or \handlearrangedpageXandY{#1}040\arrangedpageA
989 \or \handlearrangedpageXandY{#1}000\arrangedpageB
990 \or \handlearrangedpageXandY{#1}010\arrangedpageB
991 \or \handlearrangedpageXandY{#1}020\arrangedpageB
992 \or \handlearrangedpageXandY{#1}030\arrangedpageB
993 \or \handlearrangedpageXandY{#1}040\arrangedpageB
994 \or \handlearrangedpageXandY{#1}000\arrangedpageA
995 \or \handlearrangedpageXandY{#1}010\arrangedpageA
996 \or \handlearrangedpageXandY{#1}020\arrangedpageA
997 \or \handlearrangedpageXandY{#1}030\arrangedpageA
998 \poparrangedpages
999 \fi}
1000
1001
1002
1003
1004\installpagearrangement ZFLYER12
1005 {\dosetuparrangement{6}{1}{6}{7}{2}
1006 \pusharrangedpageZFLYERTWELVE\poparrangedpagesAB\relax}
1007
1008\def\pusharrangedpageZFLYERTWELVE#1
1009 {\advancearrangedpageN
1010 \reportarrangedpage\arrangedpageN
1011 \ifcase\arrangedpageN
1012 \or \handlearrangedpageXandY{#1}050\arrangedpageA
1013 \or \handlearrangedpageXandY{#1}000\arrangedpageB
1014 \or \handlearrangedpageXandY{#1}010\arrangedpageB
1015 \or \handlearrangedpageXandY{#1}020\arrangedpageB
1016 \or \handlearrangedpageXandY{#1}030\arrangedpageB
1017 \or \handlearrangedpageXandY{#1}040\arrangedpageB
1018 \or \handlearrangedpageXandY{#1}050\arrangedpageB
1019 \or \handlearrangedpageXandY{#1}000\arrangedpageA
1020 \or \handlearrangedpageXandY{#1}010\arrangedpageA
1021 \or \handlearrangedpageXandY{#1}020\arrangedpageA
1022 \or \handlearrangedpageXandY{#1}030\arrangedpageA
1023 \or \handlearrangedpageXandY{#1}040\arrangedpageA
1024 \poparrangedpages
1025 \fi}
1026
1027
1028
1029
1030\installpagearrangement MAPFLYER12
1031 {\dosetuparrangement{3}{2}{6}{4}{3}
1032 \pusharrangedpageMFLYERTWELVE\poparrangedpagesAB\relax}
1033
1034\def\pusharrangedpageMFLYERTWELVE#1
1035 {\advancearrangedpageN
1036 \reportarrangedpage\arrangedpageN
1037 \ifcase\arrangedpageN
1038 \or \handlearrangedpageXandY{#1}020\arrangedpageA
1039 \or \handlearrangedpageXandY{#1}000\arrangedpageB
1040 \or \handlearrangedpageXandY{#1}001\arrangedpageB
1041 \or \handlearrangedpageXandY{#1}010\arrangedpageB
1042 \or \handlearrangedpageXandY{#1}011\arrangedpageB
1043 \or \handlearrangedpageXandY{#1}020\arrangedpageB
1044 \or \handlearrangedpageXandY{#1}021\arrangedpageB
1045 \or \handlearrangedpageXandY{#1}000\arrangedpageA
1046 \or \handlearrangedpageXandY{#1}001\arrangedpageA
1047 \or \handlearrangedpageXandY{#1}010\arrangedpageA
1048 \or \handlearrangedpageXandY{#1}011\arrangedpageA
1049 \or \handlearrangedpageXandY{#1}021\arrangedpageA
1050 \poparrangedpages
1051 \fi}
1052
1053
1054
1055
1056\installpagearrangement DOUBLEWINDOW
1057 {\dosetuparrangement{4}{1}{4}{5}{2}
1058 \pusharrangedpageDOUBLEWINDOWEIGHT\poparrangedpagesAB\relax}
1059
1060\def\pusharrangedpageDOUBLEWINDOWEIGHT#1
1061 {\advancearrangedpageN
1062 \reportarrangedpage\arrangedpageN
1063 \ifcase\arrangedpageN
1064 \or \handlearrangedpageXandY{#1}020\arrangedpageA
1065 \or \handlearrangedpageXandY{#1}030\arrangedpageA
1066 \or \handlearrangedpageXandY{#1}000\arrangedpageB
1067 \or \handlearrangedpageXandY{#1}010\arrangedpageB
1068 \or \handlearrangedpageXandY{#1}020\arrangedpageB
1069 \or \handlearrangedpageXandY{#1}030\arrangedpageB
1070 \or \handlearrangedpageXandY{#1}000\arrangedpageA
1071 \or \handlearrangedpageXandY{#1}010\arrangedpageA
1072 \poparrangedpages
1073 \fi}
1074
1075
1076
1077
1078
1079
1080\installpagearrangement 1*2Conference
1081 {\dosetuparrangement{1}{2}{4}{3}{2}
1082 \pusharrangedpageCONFERENCETWO\poparrangedpagesAB\relax}
1083
1084\def\pusharrangedpageCONFERENCETWO#1
1085 {\advancearrangedpageN
1086 \reportarrangedpage\arrangedpageN
1087 \ifcase\arrangedpageN
1088 \or \handlearrangedpageXandY{#1}001\arrangedpageA
1089 \or \handlearrangedpageXandY{#1}100\arrangedpageA
1090 \poparrangedpages
1091 \fi}
1092
1093
1094
1095
1096\installpagearrangement 1*4Conference
1097 {\dosetuparrangement{1}{2}{4}{3}{2}
1098 \pusharrangedpageCONFERENCEFOUR\poparrangedpagesAB\relax}
1099
1100\def\pusharrangedpageCONFERENCEFOUR#1
1101 {\advancearrangedpageN
1102 \reportarrangedpage\arrangedpageN
1103 \ifcase\arrangedpageN
1104 \or \handlearrangedpageXandY{#1}001\arrangedpageA
1105 \or \handlearrangedpageXandY{#1}100\arrangedpageA
1106 \or \handlearrangedpageXandY{#1}011\arrangedpageB
1107 \or \handlearrangedpageXandY{#1}110\arrangedpageB
1108 \poparrangedpages
1109 \fi}
1110
1111
1112
1113
1114
1115
1116\installpagearrangement 2*2*2
1117 {\dosetuparrangement{2}{1}{2}{3}{2}
1118 \pusharrangedpageEIGHTTWO\poparrangedpagesAtoD\relax}
1119
1120\def\pusharrangedpageEIGHTTWO#1
1121 {\advancearrangedpageN
1122 \reportarrangedpage\arrangedpageN
1123 \ifcase\arrangedpageN
1124 \or \handlearrangedpageXandY{#1}010\arrangedpageA
1125 \or \handlearrangedpageXandY{#1}000\arrangedpageB
1126 \or \handlearrangedpageXandY{#1}010\arrangedpageC
1127 \or \handlearrangedpageXandY{#1}000\arrangedpageD
1128 \or \handlearrangedpageXandY{#1}010\arrangedpageD
1129 \or \handlearrangedpageXandY{#1}000\arrangedpageC
1130 \or \handlearrangedpageXandY{#1}010\arrangedpageB
1131 \or \handlearrangedpageXandY{#1}000\arrangedpageA
1132 \poparrangedpages
1133 \fi}
1134
1135
1136
1137
1138
1139\def\poparrangedpagesAtoF
1140 {\ifnum\arrangedpageN>\zerocount
1141 \paperwidth \arrangedpageX\paperwidth
1142 \paperheight\arrangedpageY\paperheight
1143 \outputarrangedbox\arrangedpageA
1144 \outputarrangedbox\arrangedpageB
1145 \outputarrangedbox\arrangedpageC
1146 \outputarrangedbox\arrangedpageD
1147 \outputarrangedbox\arrangedpageE
1148 \outputarrangedbox\arrangedpageF
1149 \global\arrangedpageN\zerocount
1150 \fi}
1151
1152\installpagearrangement 2*2*3
1153 {\dosetuparrangement{2}{1}{2}{3}{2}
1154 \pusharrangedpageTWELVETWO\poparrangedpagesAtoF\relax}
1155
1156\def\pusharrangedpageTWELVETWO#1
1157 {\advancearrangedpageN
1158 \reportarrangedpage\arrangedpageN
1159 \ifcase\arrangedpageN
1160 \or \handlearrangedpageXandY{#1}010\arrangedpageA
1161 \or \handlearrangedpageXandY{#1}000\arrangedpageB
1162 \or \handlearrangedpageXandY{#1}010\arrangedpageC
1163 \or \handlearrangedpageXandY{#1}000\arrangedpageD
1164 \or \handlearrangedpageXandY{#1}010\arrangedpageE
1165 \or \handlearrangedpageXandY{#1}000\arrangedpageF
1166 \or \handlearrangedpageXandY{#1}010\arrangedpageF
1167 \or \handlearrangedpageXandY{#1}000\arrangedpageE
1168 \or \handlearrangedpageXandY{#1}010\arrangedpageD
1169 \or \handlearrangedpageXandY{#1}000\arrangedpageC
1170 \or \handlearrangedpageXandY{#1}010\arrangedpageB
1171 \or \handlearrangedpageXandY{#1}000\arrangedpageA
1172 \poparrangedpages
1173 \fi}
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253\unexpanded\def\pusharrangedpageXY#1
1254 {\advancearrangedpageN
1255 \global\advance\arrangedpageM\plusone
1256 \reportarrangedpage\arrangedpageN
1257 \global\setbox\arrangedpageB\hpack \ifdim\v_page_target_width>\zeropoint to \v_page_target_width \fi
1258 {\ifvoid\arrangedpageB\else
1259 \unhbox\arrangedpageB
1260 \ifdim\v_page_target_dx>\zeropoint
1261 \hskip\v_page_target_dx
1262 \else
1263 \hss
1264 \hskip\v_page_target_dx
1265 \hss
1266 \fi
1267 \fi
1268 \box#1}
1269 \ifnum\arrangedpageM<\arrangedpageX\else
1270 \global\setbox\arrangedpageA\vpack \ifdim\v_page_target_height>\zeropoint to \v_page_target_height \fi
1271 {\offinterlineskip
1272 \ifvoid\arrangedpageA\else
1273 \unvbox\arrangedpageA
1274 \ifdim\v_page_target_dy>\zeropoint
1275 \vskip\v_page_target_dy
1276 \else
1277 \vss
1278 \vskip\v_page_target_dy
1279 \vss
1280 \fi
1281 \fi
1282 \box\arrangedpageB}
1283 \global\arrangedpageM\zerocount
1284 \fi
1285 \ifnum\arrangedpageN<\arrangedpageT\else
1286 \poparrangedpages
1287 \fi}
1288
1289\unexpanded\def\poparrangedpagesXY
1290 {\ifnum\arrangedpageN>\zerocount
1291 \paperwidth \arrangedpageX\paperwidth
1292 \paperheight\arrangedpageY\paperheight
1293 \outputarrangedbox\arrangedpageA
1294 \global\arrangedpageN\zerocount
1295 \global\arrangedpageM\zerocount
1296 \fi}
1297
1298\installpagearrangement XY
1299 {\dosetuparrangement
1300 \v_page_target_nx
1301 \v_page_target_ny
1302 \v_page_target_xy
1303 \zerocount
1304 \zerocount
1305 \pusharrangedpageXY\poparrangedpagesXY\relax}
1306
1307
1308
1309\def\page_imposition_xy_height
1310 {\dimexpr
1311 \dimexpr
1312 \v_page_target_height
1313 \numexpr\v_page_target_ny1\relax\v_page_target_dy
1314 \relax
1315 \v_page_target_ny
1316 \relax}
1317
1318\def\page_imposition_xy_width
1319 {\dimexpr
1320 \dimexpr
1321 \v_page_target_width
1322 \numexpr\v_page_target_nx1\relax\v_page_target_dx
1323 \relax
1324 \v_page_target_nx
1325 \relax}
1326
1327\definepapersize
1328 [XY]
1329 [\c!height=\page_imposition_xy_height,
1330 \c!width =\page_imposition_xy_width]
1331
1332\setuppaper
1333 [\c!width =\dimexpr\printpaperwidth 2\v_page_target_backspace\relax,
1334 \c!height=\dimexpr\printpaperheight2\v_page_target_topspace \relax]
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353\installcorenamespace {pageshift}
1354
1355\unexpanded\def\definepageshift
1356 {\dotripleargument\page_boxes_define_shift}
1357
1358\def\page_boxes_define_shift[#1][#2][#3]
1359 {\setvalue{\??pageshift#2:#1}{#3}}
1360
1361\let\page_boxes_h_shifts\empty
1362\let\page_boxes_v_shifts\empty
1363
1364\newcount\c_page_boxes_h_shifts
1365\newcount\c_page_boxes_v_shifts
1366
1367\newdimen\d_page_boxes_h_shifts
1368\newdimen\d_page_boxes_v_shifts
1369
1370\let\page_boxes_apply_shift_print\gobbleoneargument
1371\let\page_boxes_apply_shift_paper\gobbleoneargument
1372
1373\def\page_boxes_filter_shift#1#2#3
1374 {#1\zeropoint
1375 \ifx#2\empty \else
1376 \global\advance#3\plusone
1377 \getfromcommacommand[#2][#3]
1378 \ifx\commalistelement\empty
1379 \global#3\plusone
1380 \getfromcommacommand[#2][#3]
1381 \fi
1382 \ifx\commalistelement\empty \else
1383 #1\commalistelement\relax
1384 \fi
1385 \fi}
1386
1387\def\page_boxes_apply_shift#1
1388 {\page_boxes_filter_shift\d_page_boxes_h_shifts\page_boxes_h_shifts\c_page_boxes_h_shifts
1389 \page_boxes_filter_shift\d_page_boxes_v_shifts\page_boxes_v_shifts\c_page_boxes_v_shifts
1390 \ifzeropt\d_page_boxes_h_shifts
1391 \ifzeropt\d_page_boxes_v_shifts
1392
1393 \else
1394 \page_boxes_apply_shift_indeed#1
1395 \fi
1396 \else
1397 \page_boxes_apply_shift_indeed#1
1398 \fi}
1399
1400\def\page_boxes_apply_shift_indeed#1
1401 {\edef\next{\wd#1\the\wd#1\ht#1\the\ht#1\dp#1\the\dp#1}
1402 \setbox#1\vpack
1403 {\offinterlineskip
1404 \vskip\d_page_boxes_v_shifts
1405 \hskip\d_page_boxes_h_shifts
1406 \box#1}
1407 \next}
1408
1409\unexpanded\def\setuppageshift
1410 {\dotripleempty\page_boxes_setup_shift}
1411
1412\def\page_boxes_setup_shift[#1][#2][#3]
1413 {\ifthirdargument
1414
1415
1416 \edef\page_boxes_h_shifts{\begincsname\??pageshift\v!horizontal:#2\endcsname}
1417 \edef\page_boxes_v_shifts{\begincsname\??pageshift\v!vertical :#3\endcsname}
1418 \doifelse{#1}\v!page {\let\page_boxes_apply_shift_print\page_boxes_apply_shift}{\let\page_boxes_apply_shift_print\gobbleoneargument}
1419 \doifelse{#1}\v!paper{\let\page_boxes_apply_shift_paper\page_boxes_apply_shift}{\let\page_boxes_apply_shift_paper\gobbleoneargument}
1420 \else\ifsecondargument
1421 \doifelseinset{#1}{\v!page,\v!paper}
1422 {\setuppageshift[#1][#2][#2]}
1423 {\setuppageshift[\v!page][#1][#2]}
1424 \else\iffirstargument
1425 \setuppageshift[\v!page][#1][#1]
1426 \fi\fi\fi}
1427
1428\protect \endinput
1429 |