1
2
3
4
5
6
7
8
9
10
11
12
13
14\writestatus{loading}{ConTeXt Page Macros Initializations}
15
16\registerctxluafile{pageini}{autosuffix}
17
18
19
20
21
22
23
24
25
26
27\unprotect
28
29
30
31\newinteger\nofshipouts
32
33\appendtoks
34 \global\advanceby\nofshipouts\plusone
35\to \everyaftershipout
36
37\newconditional\c_otr_shipout_enabled \c_otr_shipout_enabled\conditionaltrue
38
39\protected\def\page_otr_shipout
40 {\ifconditional\c_otr_shipout_enabled
41 \expandafter\page_otr_shipout_yes
42 \else
43 \expandafter\page_otr_shipout_nop
44 \fi}
45
46\aliased\let\page_otr_shipout_yes\normalshipout
47
48\protected\def\page_otr_shipout_nop
49 {\writestatus\m!system{ignoring shipout of real page \the\realpageno}
50 \global\advanceby\realpageno\minusone
51 \dowithnextbox{\deadcycles\zerocount}}
52
53
54
55
56
57
58
59\newbox\pagebox
60
61
62
63
64
65\newtoks\t_page_postprocessors_box
66\newtoks\t_page_postprocessors_page
67\newtoks\t_page_postprocessors_column
68
69\newconstant\b_page_postprocessor
70
71\def\page_apply_postprocessors_box#1
72 {\b_page_postprocessor#1\relax
73 \expand\t_page_postprocessors_box}
74
75\def\page_apply_postprocessors_page#1
76 {\b_page_postprocessor#1\relax
77 \expand\t_page_postprocessors_page}
78
79\def\page_apply_postprocessors_column#1
80 {\b_page_postprocessor#1\relax
81 \expand\t_page_postprocessors_column}
82
83
84
85\def\page_otr_flush_all_floats
86 {
87 \ifconditional\c_page_floats_some_waiting
88 \page_otr_command_flush_all_floats
89 \fi}
90
91\def\page_otr_insert_dummy_page
92 {\par
93 \ifvmode
94 \page_otr_flush_all_floats
95 \fixedspace
96 \vfill
97 \page_otr_command_next_page
98 \fi}
99
100\def\page_otr_flush_pending_content
101 {\vkern\zeropoint\relax
102 \ifvoid\normalpagebox \else
103 \unvbox\normalpagebox
104 \penalty\outputpenalty
105 \fi}
106
107\newconstant\c_page_postponed_mode
108\newbox \b_page_otr_saved
109
110\installoutputroutine\savepagecontent
111 {\global\setbox\b_page_otr_saved\box\normalpagebox}
112
113
114
115
116\permanent\protected\def\flushpagecontent
117 {\ifvoid\b_page_otr_saved\else
118 \scratchdepth\dp\b_page_otr_saved
119 \unvbox\b_page_otr_saved
120 \prevdepth\scratchdepth
121 \fi}
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158\ifdefined\page_check_weird_page \else \let\page_check_weird_page\relax \fi
159
160\def\page_otr_construct_and_shipout#1#2#3
161 {\forgetall
162 \page_boxes_shipout{\page_boxes_constructed_page#1#2}
163 \page_otr_flush_pending_content
164
165 \page_otr_check_for_pending_inserts
166
167 \inpagebodytrue
168 \pagebodymode\plusone
169 \page_otr_command_flush_saved_floats
170 \page_otr_command_set_vsize
171 \strc_pagenumbers_increment_counters
172 \page_adapts_synchronize
173 \page_otr_check_for_pending_inserts
174 \page_floats_flush_page_floats
175 \page_spread_flush
176 \ifnum#3=\plusone
177
178 \ifnum\c_page_postponed_mode=\plusone
179 \aftergroup\page_postponed_blocks_flush
180 \else
181 \page_postponed_blocks_flush
182 \fi
183 \else
184 \page_postponed_blocks_flush
185 \fi
186 \page_check_weird_page}
187
188
189
190
191\newbox\b_page_otr_special
192
193\def\page_otr_flush_special_content
194 {\ifvoid\b_page_otr_special \else
195 \box\b_page_otr_special
196 \fi}
197
198\permanent\protected\def\page_otr_add_special_content
199 {\dowithnextboxcs\page_otr_add_special_content_indeed\hbox}
200
201\permanent\protected\def\page_otr_add_special_content_indeed
202 {\wd\nextbox\zeropoint
203 \ht\nextbox\zeropoint
204 \dp\nextbox\zeropoint
205 \global\setbox\b_page_otr_special\hbox
206 {
207 \box\b_page_otr_special\box\nextbox}}
208
209\aliased\let\flushatshipout\page_otr_add_special_content
210
211\maxdeadcycles\plusthousand
212
213\newtoks\afterpage \newtoks\aftereverypage
214\newtoks\beforepage \newtoks\beforeeverypage
215
216\newif\ifarrangingpages \arrangingpagesfalse
217
218\newconstant\pageornamentstate
219
220
221
222
223
224
225
226\appendtoks
227 \ifcase\pageornamentstate \or
228 \global\pageornamentstate\zerocount
229 \fi
230\to \everyaftershipout
231
232
233
234\newconditional\c_page_marks_building_successive_pages \c_page_marks_building_successive_pages\conditionaltrue
235
236\ifdefined\??markingclass
237
238 \def\page_marks_synchronize_page#1
239 {}
240
241 \def\page_marks_synchronize_column#1#2#3#4
242 {\strc_markings_synchronize\v!column{#3}{#4}}
243
244\else
245
246 \def\page_marks_synchronize_page#1
247 {\strc_markings_synchronize\v!page{#1}{\ifconditional\c_page_marks_building_successive_pages\v!keep\fi}}
248
249 \def\page_marks_synchronize_column#1#2#3#4
250 {\ifnum#3=#1\relax
251 \strc_markings_synchronize{\number#3,\v!column:\number#3,\v!first,\v!column:\v!first}{#4}{}
252 \orelse\ifnum#3=#2\relax
253 \strc_markings_synchronize{\number#3,\v!column:\number#3,\v!last,\v!column:\v!last}{#4}{}
254 \else
255 \strc_markings_synchronize{\number#3,\v!column:\number#3}{#4}{}
256 \fi}
257
258\fi
259
260
261
262\newconditional\c_page_boxes_save_page_body
263\newbox \b_page_boxes_saved_page_body
264
265\def\page_boxes_constructed_page_body#1#2
266 {\ifconditional\c_page_boxes_save_page_body \global\setbox\b_page_boxes_saved_page_body \fi \vpack \bgroup
267 \boxmaxdepth\maxdimen
268 \dontcomplain
269 \page_marks_synchronize_page {#2}
270 \page_boxes_construct_content \pagebox{#1}{#2}
271 \page_backgrounds_add_to_main \pagebox
272 \page_boxes_apply_offsets \pagebox
273 \page_info_add_to_box \pagebox
274 \ifcase\pageornamentstate
275 \page_backgrounds_add_to_paper \pagebox
276 \fi
277 \anch_positions_register_page \pagebox
278 \ifarrangingpages
279 \page_boxes_apply_shift_paper \pagebox
280 \else
281 \page_boxes_apply_clip_paper \pagebox
282 \page_marks_add_page \pagebox
283 \page_boxes_apply_replicate \pagebox
284 \page_boxes_apply_scale \pagebox
285 \page_boxes_apply_mirror_paper \pagebox
286 \page_boxes_apply_orientate_paper \pagebox
287 \page_marks_add_more \pagebox
288 \page_boxes_apply_center \pagebox
289 \page_backgrounds_add_to_print \pagebox
290 \page_boxes_apply_mirror_print \pagebox
291 \page_boxes_apply_orientate_print \pagebox
292 \page_boxes_apply_shift_print \pagebox
293 \page_boxes_apply_offset \pagebox
294 \page_boxes_apply_negate_print \pagebox
295 \fi
296 \box\pagebox
297 \egroup \ifconditional\c_page_boxes_save_page_body \copy\b_page_boxes_saved_page_body \fi}
298
299\appendtoks
300 \restoreglobalbodyfont
301 \restoreglobalinterlinespace
302 \pickupattributes
303\to \everybeforepagebody
304
305
306
307
308
309
310
311
312
313\def\page_boxes_constructed_page#1#2
314 {\vpack\bgroup
315 \expand\everybeforepagebody
316 \starttextproperties
317 \checkmarginblocks
318 \expand\beforeeverypage
319 \normalexpanded{\global\beforepage\emptytoks\expand\beforepage}
320 \inpagebodytrue
321 \pagebodymode\plusone
322 \page_boxes_constructed_page_body#1#2
323 \normalexpanded{\global\afterpage \emptytoks\expand\afterpage }
324 \expand\aftereverypage
325 \resetpagebreak
326 \resetlayouttextlines
327 \stoptextproperties
328 \expand\everyafterpagebody
329 \egroup}
330
331\permanent\def\doifelsetopofpage
332 {\ifdim\pagegoal=\maxdimen
333 \expandafter\firstoftwoarguments
334 \orelse\ifdim\pagegoal=\vsize
335 \expandafter\firstoftwoarguments
336 \else
337 \expandafter\secondoftwoarguments
338 \fi}
339
340\aliased\let\doiftopofpageelse\doifelsetopofpage
341
342\installcorenamespace{markedpage}
343
344
345
346\permanent\tolerant\protected\def\markpage [#1]#*[#2]#*[#3]{\clf_markpage{#1}{#2}{#3}}
347\permanent\tolerant\protected\def\startmarkpages [#1]#*[#2]{\clf_startmarkpages{#1}{#2}}
348
349\permanent \def\markedpages [#1]{\clf_markedpages{#1}}
350
351
352
353
354
355\appendtoks
356 \checkmarkedpages
357\to \everyaftershipout
358
359
360
361\newconstant\c_page_force_strut_depth_trace_mode
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389\permanent\protected\def\doifelsependingpagecontent{\clf_doifelsependingpagecontent}
390
391
392\protect \endinput
393 |