1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16\writestatus{loading}{ConTeXt Core Macros System}
17
18\registerctxluafile{coresys}{autosuffix}
19
20\unprotect
21
22
23
24\permanent\protected\def\newcontextversion#1
25 {\ifcstok{#1}\contextversion
26 \aliased\let\newcontextversion\gobbleoneargument
27 \else
28 \writeline
29 \writestatus{Fatal Error}{Your format does not match the base files!}
30 \writeline
31 \writestatus{Format Version}{\contextversion\space\contextmark}
32 \writestatus{Files Version}{#1}
33 \batchmode
34 \normalend
35 \fi}
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61\installcorenamespace{system}
62
63\installdirectcommandhandler \??system {system}
64
65\appendtoks
66
67
68\to \everysetupsystem
69
70\appendtoks
71 \ifcase\directsystemparameter\c!n\relax
72
73 \or
74 \setsystemmode\v!first
75 \or
76
77 \or
78 \setsystemmode\v!first
79 \or
80 \setsystemmode\v!last
81 \fi
82\to \everysetupsystem
83
84\newconditional\prerollrun
85
86
87
88
89
90
91\permanent\def\jobfullname{\jobfilename.\jobfilesuffix}
92
93\permanent\protected\def\setjobfullname#1
94 {\ifempty\jobfilename
95 \lettonothing\jobfullname
96 \orelse\ifcstok\jobfilesuffix\c!tex
97 \edef\jobfullname{\jobfilename.#1}
98 \fi}
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129\permanent\protected\def\setuprandomize[#1]
130 {\ifempty{#1}\else
131 \begingroup
132
133 \scratchcounter\normaltime
134 \processaction
135 [#1]
136 [ \v!small=>\divideby\scratchcounter 15,
137 \v!medium=>\divideby\scratchcounter 30,
138 \v!big=>\divideby\scratchcounter 60,
139 \v!normal=>\scratchcounter\newrandomseed,
140 \s!default=>\scratchcounter\newrandomseed,
141 \s!unknown=>\scratchcounter#1]
142 \setrandomseed\scratchcounter
143
144 \endgroup
145 \fi}
146
147\setupsystem
148 [\c!directory=,
149 \c!n=0,
150
151
152
153
154 \c!type=unix,
155 \c!bodyfont=\normalizedlocalbodyfontsize]
156
157
158
159
160
161
162\permanent\tolerant\protected\def\start[#1]
163 {\bgroup
164 \ifparameters
165 \expandafter\syst_start_nop
166 \else
167 \edef\m_syst_start_stop{#1}
168 \expandafter\syst_start_yes
169 \fi}
170
171\let\syst_stop_indeed\donothing
172
173\def\syst_start_yes
174 {\ifempty\m_syst_start_stop
175 \let\syst_stop_indeed\donothing
176 \orelse\ifcsname\e!start\m_syst_start_stop\endcsname
177 \expandafter\let\expandafter\syst_stop_indeed\csname\e!stop\m_syst_start_stop\endcsname
178 \csname\e!start\m_syst_start_stop\expandafter\expandafter\expandafter\endcsname
179 \else
180 \let\syst_stop_indeed\donothing
181 \fi}
182
183\def\syst_start_nop
184 {\let\syst_stop_indeed\donothing}
185
186\permanent\protected\def\stop
187 {\syst_stop_indeed
188 \egroup}
189
190
191
192\installcorenamespace{startstop}
193
194\installcommandhandler \??startstop {startstop} \??startstop
195
196\appendtoks
197 \ifcstok{\startstopparameter\c!arguments}\v!yes
198 \frozen\instance\protected\edefcsname\e!start\currentstartstop\endcsname{\syst_startstop_start_yes {\currentstartstop}}
199 \frozen\instance\protected\edefcsname\e!stop \currentstartstop\endcsname{\syst_startstop_stop_yes }
200 \frozen\instance\protected\edefcsname \currentstartstop\endcsname{\syst_startstop_indeed_yes{\currentstartstop}}
201 \else
202 \frozen\instance\protected\edefcsname\e!start\currentstartstop\endcsname{\syst_startstop_start_nop {\currentstartstop}}
203 \frozen\instance\protected\edefcsname\e!stop \currentstartstop\endcsname{\syst_startstop_stop_nop {\currentstartstop}}
204 \frozen\instance\protected\edefcsname \currentstartstop\endcsname{\syst_startstop_indeed_nop{\currentstartstop}}
205 \fi
206\to \everydefinestartstop
207
208\ifdefined\dotagconstruct \else \aliased\let\dotagconstruct\relax \fi
209
210\protected\def\syst_startstop_start_indeed
211 {
212 \startstopparameter\c!commands\relax
213
214 \usesetupsparameter\startstopparameter\relax
215 \dostarttagged\t!construct\currentstartstop
216 \usestartstopstyleandcolor\c!style\c!color
217 \dotagconstruct}
218
219
220
221\tolerant\protected\def\syst_startstop_start_yes#1#*[#S#2]
222 {\begingroup
223 \cdef\currentstartstop{#1}
224 \ifparameter#2\or\setupcurrentstartstop[#2]\fi
225 \startstopparameter\c!before\relax
226 \syst_startstop_start_indeed}
227
228\tolerant\protected\def\syst_startstop_indeed_yes#1#*[#S#2]
229 {\groupedcommand
230 {\cdef\currentstartstop{#1}
231 \ifparameter#2\or\setupcurrentstartstop[#2]\fi
232 \startstopparameter\c!commands\relax
233 \dostarttagged\t!construct\currentstartstop
234 \usestartstopstyleandcolor\c!style\c!color
235 \dostarttaggednodetail\t!constructleft
236 \startstopparameter\c!left\relax
237 \dostoptagged
238 \dostarttaggednodetail\t!constructcontent}
239 {\dostoptagged
240 \cdef\currentstartstop{#1}
241 \dostarttaggednodetail\t!constructright
242 \startstopparameter\c!right\relax
243 \dostoptagged
244 \dostoptagged
245 \startstopparameter\c!inbetween\relax}}
246
247\protected\def\syst_startstop_stop_yes
248 {\dostoptagged
249 \startstopparameter\c!after\relax
250 \endgroup}
251
252
253
254\protected\def\syst_startstop_start_nop#1
255 {\namedstartstopparameter{#1}\c!before\relax
256 \bgroup
257 \cdef\currentstartstop{#1}
258 \syst_startstop_start_indeed}
259
260\protected\def\syst_startstop_stop_nop#1
261 {\dostoptagged
262 \egroup
263 \namedstartstopparameter{#1}\c!after\relax}
264
265\protected\def\syst_startstop_indeed_nop#1
266 {\syst_startstop_indeed_yes{#1}[]}
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289\installcorenamespace{highlight}
290
291\installcommandhandler \??highlight {highlight} \??highlight
292
293\setuphighlight
294 [\c!define=\v!yes]
295
296
297
298\appendtoks
299 \ifcstok{\highlightparameter\c!define}\v!yes
300 \frozen\instance\protected\edefcsname\currenthighlight\endcsname
301 {\typo_highlights_indeed{\currenthighlight}}
302 \fi
303\to \everydefinehighlight
304
305\ifdefined\dotaghighlight \else \aliased\let\dotaghighlight\relax \fi
306
307\permanent\protected\def\typo_highlights_indeed#1
308 {\dontleavehmode\groupedcommand
309 {\cdef\currenthighlight{#1}
310 \dostarttagged\t!highlight\currenthighlight
311 \usehighlightstyleandcolor\c!style\c!color
312
313
314 \dotaghighlight}
315 {\dostoptagged}}
316
317\permanent\protected\def\highlight[#1]
318 {\typo_highlights_indeed{#1}}
319
320\permanent\protected\def\starthighlight[#1]
321 {\begingroup
322 \cdef\currenthighlight{#1}
323 \dostarttagged\t!highlight\currenthighlight
324 \usehighlightstyleandcolor\c!style\c!color
325
326
327 \dotaghighlight}
328
329\permanent\protected\def\stophighlight
330 {\dostoptagged
331 \endgroup}
332
333\aliased\let\directhighlight\typo_highlights_indeed
334
335
336
337\permanent\protected\def\defineexpandable
338 {\integerdef\c_syst_parameter_catcode\catcode\hashasciicode
339 \catcode\hashasciicode\parametercatcode
340 \doifelsenextoptional
341 {\syst_basics_define_yes\def}
342 {\syst_basics_define_nop\def}}
343
344\permanent\protected\def\define
345 {\integerdef\c_syst_parameter_catcode\catcode\hashasciicode
346 \catcode\hashasciicode\parametercatcode
347 \doifelsenextoptional
348 {\syst_basics_define_yes{\protected\def}}
349 {\syst_basics_define_nop{\protected\def}}}
350
351\protected\def\syst_basics_define_yes#1[#2]#3#4
352 {\ifdefined#3
353 \showmessage\m!system4{\string#3}
354 \fi
355 \ifcase0#2\relax
356 #1#3{#4}\or
357 #1#3##1{#4}\or
358 #1#3##1##2{#4}\or
359 #1#3##1##2##3{#4}\or
360 #1#3##1##2##3##4{#4}\or
361 #1#3##1##2##3##4##5{#4}\or
362 #1#3##1##2##3##4##5##6{#4}\or
363 #1#3##1##2##3##4##5##6##7{#4}\or
364 #1#3##1##2##3##4##5##6##7##8{#4}\or
365 #1#3##1##2##3##4##5##6##7##8##9{#4}\else
366 #1#3##1##2##3##4##5##6##7##8##9##A{#4}\else
367 #1#3##1##2##3##4##5##6##7##8##9##A##B{#4}\else
368 #1#3##1##2##3##4##5##6##7##8##9##A##B##C{#4}\else
369 #1#3##1##2##3##4##5##6##7##8##9##A##B##C##D{#4}\else
370 #1#3##1##2##3##4##5##6##7##8##9##A##B##C##D##E{#4}\else
371 #1#3{#4}\fi
372 \catcode\hashasciicode\c_syst_parameter_catcode}
373
374\protected\def\syst_basics_define_nop#1#2#3
375 {\ifdefined#2
376 \showmessage\m!system4{\string#2}
377 \fi
378 #1#2{#3}
379 \catcode\hashasciicode\c_syst_parameter_catcode}
380
381\aliased\let\redefine\define
382
383
384
385
386
387
388\mutable\let\gobbleddefinition\relax
389
390\permanent\protected\def\unique#1#2
391 {\ifdefined#2
392 \showmessage\m!system4{\string#2}
393 \expandafter#1\expandafter\gobbleddefinition
394 \else
395 \expandafter#1
396 \fi#2}
397
398\permanent\protected\def\checked#1#2
399 {\ifdefined#2
400 \showmessage\m!system4{\string#2}
401 \fi
402 #1#2}
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485\permanent\protected\def\macroname#1
486 {\begincsname#1\endcsname}
487
488
489
490\permanent\protected\def\systemlogfirst
491 {\ifcase\directsystemparameter\c!n\relax
492 \expandafter\systemlog
493 \or
494 \expandafter\systemlog
495 \else
496 \expandafter\gobblethreearguments
497 \fi}
498
499\permanent\protected\def\systemloglast
500 {\ifcase\directsystemparameter\c!n\relax
501 \expandafter\systemlog
502 \or
503 \expandafter\gobblethreearguments
504 \or
505 \expandafter\gobblethreearguments
506 \or
507 \expandafter\gobblethreearguments
508 \or
509 \expandafter\systemlog
510 \fi}
511
512\protect \endinput
513 |