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
237\ifdefined\??markingclass
238
239 \def\page_marks_synchronize_page#1
240 {}
241
242 \def\page_marks_synchronize_column#1#2#3#4
243 {\strc_markings_synchronize\v!column{#3}{#4}}
244
245\else
246
247 \def\page_marks_synchronize_page#1
248 {\strc_markings_synchronize\v!page{#1}{\ifconditional\c_page_marks_building_successive_pages\v!keep\fi}}
249
250 \def\page_marks_synchronize_column#1#2#3#4
251 {\ifnum#3=#1\relax
252 \strc_markings_synchronize{\number#3,\v!column:\number#3,\v!first,\v!column:\v!first}{#4}{}
253 \orelse\ifnum#3=#2\relax
254 \strc_markings_synchronize{\number#3,\v!column:\number#3,\v!last,\v!column:\v!last}{#4}{}
255 \else
256 \strc_markings_synchronize{\number#3,\v!column:\number#3}{#4}{}
257 \fi}
258
259\fi
260
261
262
263\newconditional\c_page_boxes_save_page_body
264\newbox \b_page_boxes_saved_page_body
265
266\def\page_boxes_constructed_page_body#1#2
267 {\ifconditional\c_page_boxes_save_page_body \global\setbox\b_page_boxes_saved_page_body \fi \vpack \bgroup
268 \boxmaxdepth\maxdimen
269 \dontcomplain
270 \page_marks_synchronize_page {#2}
271 \page_boxes_construct_content \pagebox{#1}{#2}
272 \page_backgrounds_add_to_main \pagebox
273 \page_boxes_apply_offsets \pagebox
274 \page_info_add_to_box \pagebox
275 \ifcase\pageornamentstate
276 \page_backgrounds_add_to_paper \pagebox
277 \fi
278 \anch_positions_register_page \pagebox
279 \ifarrangingpages
280 \page_boxes_apply_shift_paper \pagebox
281 \else
282 \page_boxes_apply_clip_paper \pagebox
283 \page_marks_add_page \pagebox
284 \page_boxes_apply_replicate \pagebox
285 \page_boxes_apply_scale \pagebox
286 \page_boxes_apply_mirror_paper \pagebox
287 \page_boxes_apply_orientate_paper \pagebox
288 \page_marks_add_more \pagebox
289 \page_boxes_apply_center \pagebox
290 \page_backgrounds_add_to_print \pagebox
291 \page_boxes_apply_mirror_print \pagebox
292 \page_boxes_apply_orientate_print \pagebox
293 \page_boxes_apply_shift_print \pagebox
294 \page_boxes_apply_offset \pagebox
295 \page_boxes_apply_negate_print \pagebox
296 \fi
297 \box\pagebox
298 \egroup \ifconditional\c_page_boxes_save_page_body \copy\b_page_boxes_saved_page_body \fi}
299
300\appendtoks
301 \restoreglobalbodyfont
302 \restoreglobalinterlinespace
303 \pickupattributes
304\to \everybeforepagebody
305
306
307
308
309
310
311
312
313
314\def\page_boxes_constructed_page#1#2
315 {\vpack\bgroup
316 \expand\everybeforepagebody
317 \starttextproperties
318 \checkmarginblocks
319 \expand\beforeeverypage
320 \normalexpanded{\global\beforepage\emptytoks\expand\beforepage}
321 \inpagebodytrue
322 \pagebodymode\plusone
323 \page_boxes_constructed_page_body#1#2
324 \normalexpanded{\global\afterpage \emptytoks\expand\afterpage }
325 \expand\aftereverypage
326 \resetpagebreak
327 \resetlayouttextlines
328 \stoptextproperties
329 \expand\everyafterpagebody
330 \egroup}
331
332\permanent\def\doifelsetopofpage
333 {\ifdim\pagegoal=\maxdimen
334 \expandafter\firstoftwoarguments
335 \orelse\ifdim\pagegoal=\vsize
336 \expandafter\firstoftwoarguments
337 \else
338 \expandafter\secondoftwoarguments
339 \fi}
340
341\aliased\let\doiftopofpageelse\doifelsetopofpage
342
343\installcorenamespace{markedpage}
344
345
346
347\permanent\tolerant\protected\def\markpage [#1]#*[#2]#*[#3]{\clf_markpage{#1}{#2}{#3}}
348\permanent\tolerant\protected\def\startmarkpages [#1]#*[#2]{\clf_startmarkpages{#1}{#2}}
349
350\permanent \def\markedpages [#1]{\clf_markedpages{#1}}
351
352
353
354
355
356\appendtoks
357 \checkmarkedpages
358\to \everyaftershipout
359
360
361
362\newconstant\c_page_force_strut_depth_trace_mode
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
390\permanent\protected\def\doifelsependingpagecontent{\clf_doifelsependingpagecontent}
391
392
393\protect \endinput
394 |