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