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