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