1
2
3
4
5
6
7
8
9
10
11
12
13
14\writestatus
{
loading
}{
ConTeXt
Core
Macros
Environments
}
15
16\registerctxluafile
{
core
env
}{}
17
18\unprotect
19
20\def
\wildcardsymbol
{
*
}
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44\let
\systemmodeprefix
\wildcardsymbol
45
46
47
48\installcorenamespace
{
modestack
}
49
50\setnewconstant
\disabledmode
\zerocount
51\setnewconstant
\enabledmode
\plusone
52\setnewconstant
\preventedmode
\plustwo
53
54
55
56\def
\??mode
{
mode
>
}
57
58\def
\syst_modes_new
#
1
59 {
\expandafter
\newcount
\csname
\??mode
#
1
\endcsname
}
60
61\unexpanded
\def
\newmode
#
1
62 {
\ifcsname
\??mode
#
1
\endcsname\else
\syst_modes_new
{
#
1
}
\fi
}
63
64\unexpanded
\def
\setmode
#
1
65 {
\ifcsname
\??mode
#
1
\endcsname\else
\syst_modes_new
{
#
1
}
\fi
66 \lastnamedcs
\enabledmode
}
67
68\unexpanded
\def
\resetmode
#
1
69 {
\ifcsname
\??mode
#
1
\endcsname\else
\syst_modes_new
{
#
1
}
\fi
70 \lastnamedcs
\disabledmode
}
71
72\unexpanded
\def
\globalsetmode
#
1
73 {
\ifcsname
\??mode
#
1
\endcsname\else
\syst_modes_new
{
#
1
}
\fi
74 \global\lastnamedcs
\enabledmode
}
75
76\unexpanded
\def
\globalresetmode
#
1
77 {
\ifcsname
\??mode
#
1
\endcsname\else
\syst_modes_new
{
#
1
}
\fi
78 \global\lastnamedcs
\disabledmode
}
79
80\unexpanded
\def
\newsystemmode
#
1
81 {
\ifcsname
\??mode
\systemmodeprefix
#
1
\endcsname\else
\syst_modes_new
{
\systemmodeprefix
#
1
}
\fi
}
82
83\unexpanded
\def
\setsystemmode
#
1
84 {
\ifcsname
\??mode
\systemmodeprefix
#
1
\endcsname\else
\syst_modes_new
{
\systemmodeprefix
#
1
}
\fi
85 \lastnamedcs
\enabledmode
}
86
87\unexpanded
\def
\resetsystemmode
#
1
88 {
\ifcsname
\??mode
\systemmodeprefix
#
1
\endcsname\else
\syst_modes_new
{
\systemmodeprefix
#
1
}
\fi
89 \lastnamedcs
\disabledmode
}
90
91\unexpanded
\def
\globalsetsystemmode
#
1
92 {
\ifcsname
\??mode
\systemmodeprefix
#
1
\endcsname\else
\syst_modes_new
{
\systemmodeprefix
#
1
}
\fi
93 \global\lastnamedcs
\enabledmode
}
94
95\unexpanded
\def
\globalresetsystemmode
#
1
96 {
\ifcsname
\??mode
\systemmodeprefix
#
1
\endcsname\else
\syst_modes_new
{
\systemmodeprefix
#
1
}
\fi
97 \global\lastnamedcs
\disabledmode
}
98
99
100
101
102
103
104
105
106
107\newsystemmode
{
trialtypesetting
}
108
109\expandafter\let\csname
\??mode
\systemmodeprefix
trialtypesetting
\endcsname
\trialtypesettingstate
110
111\appendtoks
112 \trialtypesettingstate
\enabledmode
113 \luacopyinputnodes
\plusone
114\to
\everysettrialtypesetting
115
116\appendtoks
117 \trialtypesettingstate
\disabledmode
118 \luacopyinputnodes
\zerocount
119\to
\everyresettrialtypesetting
120
121
122
123\let
\syst_mode_prefix
\relax
124
125\unexpanded
\def
\preventmode
{
\unprotect
\syst_modes_prevent
}
126\unexpanded
\def
\enablemode
{
\unprotect
\syst_modes_enable
}
127\unexpanded
\def
\disablemode
{
\unprotect
\syst_modes_disable
}
128
129\unexpanded
\def
\globalpreventmode
{
\let
\syst_mode_prefix
\global
\unprotect
\syst_modes_prevent
}
130\unexpanded
\def
\globalenablemode
{
\let
\syst_mode_prefix
\global
\unprotect
\syst_modes_enable
}
131\unexpanded
\def
\globaldisablemode
{
\let
\syst_mode_prefix
\global
\unprotect
\syst_modes_disable
}
132
133
134
135
136
137\def
\syst_modes_prevent
[#
1
]
{
\protect
\fastprocesscommacommand
[#
1
]
\syst_modes_prevent_indeed
\let
\syst_mode_prefix
\relax
}
138\def
\syst_modes_enable
[#
1
]
{
\protect
\fastprocesscommacommand
[#
1
]
\syst_modes_enable_indeed
\let
\syst_mode_prefix
\relax
}
139\def
\syst_modes_disable
[#
1
]
{
\protect
\fastprocesscommacommand
[#
1
]
\syst_modes_disable_indeed
\let
\syst_mode_prefix
\relax
}
140
141\def
\syst_modes_prevent_indeed
#
1
142 {
\ifcsname
\??mode
#
1
\endcsname\else
\syst_modes_new
{
#
1
}
\fi
143 \syst_mode_prefix
\lastnamedcs
\preventedmode
}
144
145\def
\syst_modes_enable_indeed
#
1
146 {
\ifcsname
\??mode
#
1
\endcsname\else
\syst_modes_new
{
#
1
}
\fi
147 \ifnum
\lastnamedcs
=
\preventedmode
\else
148 \syst_mode_prefix
\lastnamedcs
\enabledmode
149 \fi
}
150
151\def
\syst_modes_disable_indeed
#
1
152 {
\ifcsname
\??mode
#
1
\endcsname\else
\syst_modes_new
{
#
1
}
\fi
153 \ifnum
\lastnamedcs
=
\preventedmode
\else
154 \syst_mode_prefix
\lastnamedcs
\disabledmode
155 \fi
}
156
157
158
159
160
161
162
163\unexpanded
\def
\definemode
164 {
\unprotect
165 \dodoubleempty
\syst_modes_define
}
166
167\def
\syst_modes_define
[#
1
][#
2
]
168 {
\protect
169 \edef
\m_modes_asked
{
#
2
}
170
171 \fastprocesscommacommand
[#
1
]
\syst_modes_define_indeed
}
172
173\def
\syst_modes_define_indeed
#
1
174 {
\ifcsname
\??mode
#
1
\endcsname
175
176 \else
177 \syst_modes_new
{
#
1
}
178 \fi
179 \ifx
\m_modes_asked
\v!keep
180
181 \else
182 \lastnamedcs\ifx
\m_modes_asked
\v!yes
\enabledmode
\else
\disabledmode
\fi
183 \fi
}
184
185
186
187\def
\booleanmodevalue
#
1
188 {
\ifcsname
\??mode
#
1
\endcsname
189 \ifcase
\lastnamedcs
190 \s!false
191 \or
192 \s!true
193 \else
194 \s!false
195 \fi
196 \else
197 \s!false
198 \fi
}
199
200
201
202\newconditional
\c_checked_mode
203
204
205
206\def
\syst_modes_check_indeed
#
1
207 {
\ifcsname
\??mode
#
1
\endcsname
208 \ifcase
\lastnamedcs\else
209 \let
\syst_modes_check_step
\gobbleoneargument
210 \fi
211 \fi
}
212
213\def
\syst_modes_check_nop
#
1
#
2
#
3
214 {
\let
\syst_modes_check_step
\syst_modes_check_indeed
215
216 \fastprocesscommacommand
[#
3
]
\syst_modes_check_step
217 \ifx
\syst_modes_check_step
\gobbleoneargument
218 \expandafter
#
1
219 \else
220 \expandafter
#
2
221 \fi
}
222
223\def
\syst_modes_check_yes
#
1
#
2
#
3
224 {
\ifcase
\lastnamedcs
225 \expandafter
#
2
226 \or
227 \expandafter
#
1
228 \else
229 \expandafter
#
2
230 \fi
}
231
232\def
\syst_modes_check_lr
#
1
#
2
#
3
233 {
\ifcsname
\??mode
#
3
\endcsname
234 \expandafter
\syst_modes_check_yes
235 \else
236 \expandafter
\syst_modes_check_nop
237 \fi
#
1
#
2
{
#
3
}}
238
239\def
\syst_modes_check_ss
#
1
#
2
[#
3
]
240 {
\ifcsname
\??mode
#
3
\endcsname
241 \expandafter
\syst_modes_check_yes
242 \else
243 \expandafter
\syst_modes_check_nop
244 \fi
#
1
#
2
{
#
3
}}
245
246
247
248\def
\syst_modes_check_all_indeed
#
1
249 {
\ifcsname
\??mode
#
1
\endcsname
250 \ifcase
\lastnamedcs
251 \let
\syst_modes_check_all_step
\gobbleoneargument
252 \or
253
254 \else
255 \let
\syst_modes_check_all_step
\gobbleoneargument
256 \fi
257 \else
258 \let
\syst_modes_check_all_step
\gobbleoneargument
259 \fi
}
260
261\def
\syst_modes_check_all_lr
#
1
#
2
#
3
262 {
\let
\syst_modes_check_all_step
\syst_modes_check_all_indeed
263 \fastprocesscommacommand
[#
3
]
\syst_modes_check_all_step
264 \ifx
\syst_modes_check_all_step
\gobbleoneargument
265 \expandafter
#
2
266 \else
267 \expandafter
#
1
268 \fi
}
269
270\def
\syst_modes_check_all_ss
#
1
#
2
[#
3
]
271 {
\let
\syst_modes_check_all_step
\syst_modes_check_all_indeed
272 \fastprocesscommacommand
[#
3
]
\syst_modes_check_all_step
273 \ifx
\syst_modes_check_all_step
\gobbleoneargument
274 \expandafter
#
2
275 \else
276 \expandafter
#
1
277 \fi
}
278
279\unexpanded
\def
\doifelsemode
{
\syst_modes_check_lr
\firstoftwoarguments\secondoftwoarguments
}
280\unexpanded
\def
\doifmode
{
\syst_modes_check_lr
\firstofoneargument\gobbleoneargument
}
281\unexpanded
\def
\doifnotmode
{
\syst_modes_check_lr
\gobbleoneargument\firstofoneargument
}
282\unexpanded
\def
\startmode
{
\syst_modes_check_ss
\donothing
\syst_modes_stop_yes
}
283\unexpanded
\def
\startnotmode
{
\syst_modes_check_ss
\syst_modes_stop_nop
\donothing
}
284\unexpanded
\def
\doifelseallmodes
{
\syst_modes_check_all_lr
\firstoftwoarguments\secondoftwoarguments
}
285\unexpanded
\def
\doifallmodes
{
\syst_modes_check_all_lr
\firstofoneargument\gobbleoneargument
}
286\unexpanded
\def
\doifnotallmodes
{
\syst_modes_check_all_lr
\gobbleoneargument\firstofoneargument
}
287\unexpanded
\def
\startallmodes
{
\syst_modes_check_all_ss
\donothing
\syst_modes_stop_all_yes
}
288\unexpanded
\def
\startnotallmodes
{
\syst_modes_check_all_ss
\syst_modes_stop_all_nop
\donothing
}
289
290\let
\doifmodeelse
\doifelsemode
291\let
\doifallmodeselse
\doifelseallmodes
292
293\unexpanded
\def
\stopmode
{}
294\unexpanded
\def
\stopnotmode
{}
295\unexpanded
\def
\stopallmodes
{}
296\unexpanded
\def
\stopnotallmodes
{}
297
298\def
\syst_modes_stop_yes
#
1
\stopmode
{}
299\def
\syst_modes_stop_nop
#
1
\stopnotmode
{}
300\def
\syst_modes_stop_all_yes
#
1
\stopallmodes
{}
301\def
\syst_modes_stop_all_nop
#
1
\stopnotallmodes
{}
302
303
304
305\unexpanded
\def
\pushmode
[#
1
]
306 {
\ifcsname
\??mode
#
1
\endcsname\else
\syst_modes_new
{
#
1
}
\fi
307 \expandafter\edef\csname
\??modestack
#
1
\expandafter\endcsname\expandafter
{
\number\lastnamedcs
}
308 \expandafter
\pushmacro
\lastnamedcs
}
309
310\unexpanded
\def
\popmode
[#
1
]
311 {
\ifcsname
\??modestack
#
1
\endcsname
312 \expandafter
\popmacro
\lastnamedcs
313 \csname
\??mode
#
1
\endcsname\csname
\??modestack
#
1
\endcsname\relax
314 \fi
}
315
316\def
\pushsystemmode
#
1
317 {
\ifcsname
\??mode
\systemmodeprefix
#
1
\endcsname\else
\syst_modes_new
{
\systemmodeprefix
#
1
}
\fi
318 \expandafter\edef\csname
\??modestack
\systemmodeprefix
#
1
\expandafter\endcsname\expandafter
{
\number\lastnamedcs
}
319 \expandafter
\pushmacro
\lastnamedcs
}
320
321\def
\popsystemmode
#
1
322 {
\ifcsname
\??modestack
\systemmodeprefix
#
1
\endcsname
323 \expandafter
\popmacro
\lastnamedcs
324 \csname
\??mode
\systemmodeprefix
#
1
\endcsname\csname
\??modestack
\systemmodeprefix
#
1
\endcsname\relax
325 \fi
}
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368\newconditional
\c_syst_modes_set_done
369
370\unexpanded
\def
\startmodeset
371 {
\pushmacro
\c_syst_modes_set_done
372 \setfalse
\c_syst_modes_set_done
373 \doifelsenextoptionalcs
\syst_modes_set_start
\syst_modes_set_quit
}
374
375\def
\syst_modes_set_start
[#
1
]
376 {
\edef
\m_mode_case
{
#
1
}
377 \ifx
\m_mode_case
\s!default
378 \ifconditional
\c_syst_modes_set_done
379 \doubleexpandafter
\syst_modes_set_quit
380 \else
381 \doubleexpandafter
\syst_modes_set_yes
382 \fi
383 \else
384 \singleexpandafter
\syst_modes_set_check
385 \fi
}
386
387\def
\syst_modes_set_check
388 {
\syst_modes_check_lr
\syst_modes_set_yes
\syst_modes_set_nop
\m_mode_case
}
389
390\def
\syst_modes_set_yes
#
1
391 {
\settrue
\c_syst_modes_set_done
392 #
1
393 \doifelsenextoptionalcs
\syst_modes_set_start
\syst_modes_set_quit
}
394
395\def
\syst_modes_set_nop
#
1
396 {
\doifelsenextoptionalcs
\syst_modes_set_start
\syst_modes_set_quit
}
397
398\def
\syst_modes_set_quit
#
1
\stopmodeset
399 {
\popmacro
\c_syst_modes_set_done
}
400
401\let
\stopmodeset
\relax
402
403
404
405\enablemode
[
mkiv
]
\newsystemmode
{
mkiv
}
\setsystemmode
{
mkiv
}
406
407
408
409\installcorenamespace
{
setup
}
410
411\unexpanded
\def
\startsetups
{}
412\unexpanded
\def
\stopsetups
{}
413
414\unexpanded
\def
\setups
{
\doifelsenextbgroup
\syst_setups_a
\syst_setups_b
}
415\unexpanded
\def
\setup
{
\doifelsenextbgroup
\syst_setups
\syst_setups_c
}
416
417\def
\syst_setups_a
#
1
{
\processcommacommand
[#
1
]
\syst_setups
}
418\def
\syst_setups_b
[#
1
]
{
\processcommacommand
[#
1
]
\syst_setups
}
419\def
\syst_setups_c
[#
1
]
{
\syst_setups
{
#
1
}}
420
421\letvalue
{
\??setup
:
\??empty
}
\gobbleoneargument
422
423\def
\syst_setups
#
1
424 {
\csname
\??setup
425 \ifgridsnapping
426 \ifcsname
\??setup\v!grid
:
#
1
\endcsname
\v!grid
:
#
1
\else
:
\ifcsname
\??setup
:
#
1
\endcsname
#
1
\else
\??empty
\fi\fi
427 \else
428 :
\ifcsname
\??setup
:
#
1
\endcsname
#
1
\else
\??empty
\fi
429 \fi
430 \endcsname
\empty
}
431
432
433
434\def
\fastsetup
#
1
{
\csname
\??setup
:
#
1
\endcsname
\empty
}
435\def
\fastsetupwithargument
#
1
{
\csname
\??setup
:
#
1
\endcsname
}
436\def
\fastsetupwithargumentswapped
#
1
#
2
{
\csname
\??setup
:
#
2
\endcsname
{
#
1
}}
437
438
439
440
441\let
\m_syst_setups_asked
\empty
442
443\def
\doprocesslocalsetups
#
1
444 {
\edef
\m_syst_setups_asked
{
#
1
}
445 \ifx
\m_syst_setups_asked
\empty
\else
446 \expandafter
\syst_setups_process_local
447 \fi
}
448
449\unexpanded
\def
\usesetupsparameter
#
1
450 {
\edef
\m_syst_setups_asked
{
#
1
\c!setups
}
451 \ifx
\m_syst_setups_asked
\empty
\else
452 \expandafter
\syst_setups_process_local
453 \fi
}
454
455
456
457
458
459
460\def
\syst_setups_process_local
461 {
\clf_autosetups
{
\m_syst_setups_asked
}
462 \relax
}
463
464\def
\autosetups
#
1
465 {
\clf_autosetups
{
#
1
}}
466
467\edef
\setupwithargument
#
1
468 {
\noexpand\csname
\??setup
:
\noexpand\ifcsname
\??setup
:
#
1
\endcsname
#
1
\noexpand\else
\??empty
\noexpand\fi\endcsname
}
469
470\edef
\setupwithargumentswapped
#
1
#
2
471 {
\noexpand\csname
\??setup
:
\noexpand\ifcsname
\??setup
:
#
2
\endcsname
#
2
\noexpand\else
\??empty
\noexpand\fi\endcsname
{
#
1
}}
472
473\let
\directsetup
\syst_setups
474\let
\texsetup
\syst_setups
475
476\unexpanded
\def
\doifelsesetups
#
1
477 {
\ifcsname
\??setup
:
#
1
\endcsname
478 \expandafter
\firstoftwoarguments
479 \else
480 \expandafter
\secondoftwoarguments
481 \fi
}
482
483\let
\doifsetupselse\doifelsesetups
484
485\unexpanded
\def
\doifsetups
#
1
486 {
\ifcsname
\??setup
:
#
1
\endcsname
487 \expandafter
\firstofoneargument
488 \else
489 \expandafter
\gobbleoneargument
490 \fi
}
491
492\unexpanded
\def
\doifnotsetups
#
1
493 {
\ifcsname
\??setup
:
#
1
\endcsname
494 \expandafter
\gobbleoneargument
495 \else
496 \expandafter
\firstofoneargument
497 \fi
}
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549\newtoks
\t_syst_setups_tex
\appendtoks
550 \catcode
\endoflineasciicode
\ignorecatcode
551\to
\t_syst_setups_tex
552
553\newtoks
\t_syst_setups_loc
\appendtoks
554 \catcode
\endoflineasciicode
\ignorecatcode
555\to
\t_syst_setups_loc
556
557\newtoks
\t_syst_setups_raw
\appendtoks
558
559\to
\t_syst_setups_raw
560
561\newtoks
\t_syst_setups_xml
\appendtoks
562 \catcode
\endoflineasciicode\ignorecatcode
563 \catcode
\barasciicode
\othercatcode
564\to
\t_syst_setups_xml
565
566\newtoks
\t_syst_setups_lua
\appendtoks
567 \obeylualines
568 \obeyluatokens
569\to
\t_syst_setups_lua
570
571
572
573\unexpanded
\def
\startluasetups
{
\begingroup
\doifelsenextoptionalcs
\syst_setups_start_lua_a
\syst_setups_start_lua_b
}
\let
\stopluasetups
\relax
574\unexpanded
\def
\startxmlsetups
{
\begingroup
\doifelsenextoptionalcs
\syst_setups_start_xml_a
\syst_setups_start_xml_b
}
\let
\stopxmlsetups
\relax
575\unexpanded
\def
\startrawsetups
{
\begingroup
\doifelsenextoptionalcs
\syst_setups_start_raw_a
\syst_setups_start_raw_b
}
\let
\stoprawsetups
\relax
576\unexpanded
\def
\startlocalsetups
{
\begingroup
\doifelsenextoptionalcs
\syst_setups_start_loc_a
\syst_setups_start_loc_b
}
\let
\stoplocalsetups
\relax
577\unexpanded
\def
\startsetups
{
\begingroup
\doifelsenextoptionalcs
\syst_setups_start_tex_a
\syst_setups_start_tex_b
}
\let
\stopsetups
\relax
578
579\def
\syst_setups_start_lua_indeed
#
1
#
2
#
3
\stopluasetups
{
\endgroup
\dodoglobal
\expandafter\def\csname
\??setup
#
1
:
#
2
\expandafter\endcsname\expandafter
##
\expandafter
1
\expandafter
{
#
3
}}
580\def
\syst_setups_start_xml_indeed
#
1
#
2
#
3
\stopxmlsetups
{
\endgroup
\dodoglobal
\expandafter\def\csname
\??setup
#
1
:
#
2
\expandafter\endcsname\expandafter
##
\expandafter
1
\expandafter
{
#
3
}}
581\def
\syst_setups_start_raw_indeed
#
1
#
2
#
3
\stoprawsetups
{
\endgroup
\dodoglobal
\expandafter\def\csname
\??setup
#
1
:
#
2
\expandafter\endcsname\expandafter
##
\expandafter
1
\expandafter
{
#
3
}}
582\def
\syst_setups_start_loc_indeed
#
1
#
2
#
3
\stoplocalsetups
{
\endgroup
\dodoglobal
\expandafter\def\csname
\??setup
#
1
:
#
2
\expandafter\endcsname\expandafter
##
\expandafter
1
\expandafter
{
#
3
}}
583\def
\syst_setups_start_tex_indeed
#
1
#
2
#
3
\stopsetups
{
\endgroup
\dodoglobal
\expandafter\def\csname
\??setup
#
1
:
#
2
\expandafter\endcsname\expandafter
##
\expandafter
1
\expandafter
{
#
3
}}
584
585\def
\syst_setups_start_lua
{
\ifsecondargument
\expandafter
\syst_setups_start_lua_c
\else\expandafter
\syst_setups_start_lua_d
\fi
}
586\def
\syst_setups_start_xml
{
\ifsecondargument
\expandafter
\syst_setups_start_xml_c
\else\expandafter
\syst_setups_start_xml_d
\fi
}
587\def
\syst_setups_start_raw
{
\ifsecondargument
\expandafter
\syst_setups_start_raw_c
\else\expandafter
\syst_setups_start_raw_d
\fi
}
588\def
\syst_setups_start_loc
{
\ifsecondargument
\expandafter
\syst_setups_start_loc_c
\else\expandafter
\syst_setups_start_loc_d
\fi
}
589\def
\syst_setups_start_tex
{
\ifsecondargument
\expandafter
\syst_setups_start_tex_c
\else\expandafter
\syst_setups_start_tex_d
\fi
}
590
591\def
\syst_setups_start_lua_a
{
\the
\t_syst_setups_lua
\dodoubleempty
\syst_setups_start_lua
}
592\def
\syst_setups_start_xml_a
{
\the
\t_syst_setups_xml
\dodoubleempty
\syst_setups_start_xml
}
593\def
\syst_setups_start_raw_a
{
\the
\t_syst_setups_raw
\dodoubleempty
\syst_setups_start_raw
}
594\def
\syst_setups_start_loc_a
{
\the
\t_syst_setups_loc
\dodoubleempty
\syst_setups_start_loc
}
595\def
\syst_setups_start_tex_a
{
\the
\t_syst_setups_tex
\dodoubleempty
\syst_setups_start_tex
}
596
597
598
599\def
\syst_setups_start_lua_b
#
1
{
\the
\t_syst_setups_lua
\syst_setups_start_lua_indeed
\empty
{
#
1
}
\empty
}
600\def
\syst_setups_start_xml_b
#
1
{
\the
\t_syst_setups_xml
\syst_setups_start_xml_indeed
\empty
{
#
1
}
\empty
}
601\def
\syst_setups_start_raw_b
#
1
{
\the
\t_syst_setups_raw
\syst_setups_start_raw_indeed
\empty
{
#
1
}
\empty
}
602\def
\syst_setups_start_loc_b
#
1
{
\the
\t_syst_setups_loc
\syst_setups_start_loc_indeed
\empty
{
#
1
}
\empty
}
603\def
\syst_setups_start_tex_b
#
1
{
\the
\t_syst_setups_tex
\syst_setups_start_tex_indeed
\empty
{
#
1
}
\empty
}
604
605\def
\syst_setups_start_lua_c
[#
1
][#
2
]
{
\the
\t_syst_setups_lua
\syst_setups_start_lua_indeed
{
#
1
}{
#
2
}
\empty
}
606\def
\syst_setups_start_xml_c
[#
1
][#
2
]
{
\the
\t_syst_setups_xml
\syst_setups_start_xml_indeed
{
#
1
}{
#
2
}
\empty
}
607\def
\syst_setups_start_raw_c
[#
1
][#
2
]
{
\the
\t_syst_setups_raw
\syst_setups_start_raw_indeed
{
#
1
}{
#
2
}
\empty
}
608\def
\syst_setups_start_loc_c
[#
1
][#
2
]
{
\the
\t_syst_setups_loc
\syst_setups_start_loc_indeed
{
#
1
}{
#
2
}
\empty
}
609\def
\syst_setups_start_tex_c
[#
1
][#
2
]
{
\the
\t_syst_setups_tex
\syst_setups_start_tex_indeed
{
#
1
}{
#
2
}
\empty
}
610
611\def
\syst_setups_start_lua_d
[#
1
][#
2
]
{
\the
\t_syst_setups_lua
\syst_setups_start_lua_indeed
\empty
{
#
1
}
\empty
}
612\def
\syst_setups_start_xml_d
[#
1
][#
2
]
{
\the
\t_syst_setups_xml
\syst_setups_start_xml_indeed
\empty
{
#
1
}
\empty
}
613\def
\syst_setups_start_raw_d
[#
1
][#
2
]
{
\the
\t_syst_setups_raw
\syst_setups_start_raw_indeed
\empty
{
#
1
}
\empty
}
614\def
\syst_setups_start_loc_d
[#
1
][#
2
]
{
\the
\t_syst_setups_loc
\syst_setups_start_loc_indeed
\empty
{
#
1
}
\empty
}
615\def
\syst_setups_start_tex_d
[#
1
][#
2
]
{
\the
\t_syst_setups_tex
\syst_setups_start_tex_indeed
\empty
{
#
1
}
\empty
}
616
617\def
\luasetup
#
1
{
\ctxlua{
\syst_setups
{
#
1
}
}
}
618
619
620
621\let
\systemsetupsprefix
\wildcardsymbol
622
623\def
\systemsetups
#
1
{
\syst_setups
{
\systemsetupsprefix
#
1
}}
624
625\unexpanded
\def
\resetsetups
[#
1
]
626 {
\ifcsname
\??setup
\ifgridsnapping
\v!grid
\fi
:
#
1
\endcsname
627 \dodoglobal\undefinevalue
{
\??setup
\ifgridsnapping
\v!grid
\fi
:
#
1
}
628 \else
629 \dodoglobal\undefinevalue
{
\??setup
:
#
1
}
630 \fi
}
631
632\unexpanded
\def
\copysetups
633 {
\dodoubleargument
\syst_setups_copy
}
634
635\def
\syst_setups_copy
[#
1
][#
2
]
636 {
\ifcsname
\??setup
:
#
2
\endcsname
637 \expandafter\let\csname
\??setup
:
#
1
\expandafter\endcsname\lastnamedcs
638 \fi
}
639
640\unexpanded
\def
\showsetupsdefinition
[#
1
]
641 {
\showvalue
{
\??setup
:
#
1
}}
642
643
644
645
646
647
648
649
650
651
652
653
654
655\installcorenamespace
{
variables
}
656
657\unexpanded
\def
\setvariables
{
\dotripleargument
\syst_variables_set
[
\getrawparameters
]
}
658\unexpanded
\def
\setevariables
{
\dotripleargument
\syst_variables_set
[
\getraweparameters
]
}
659\unexpanded
\def
\setgvariables
{
\dotripleargument
\syst_variables_set
[
\getrawgparameters
]
}
660\unexpanded
\def
\setxvariables
{
\dotripleargument
\syst_variables_set
[
\getrawxparameters
]
}
661
662\unexpanded
\def
\globalsetvariables
663 {
\dotripleargument
\syst_variables_set
[
\globalgetrawparameters
]
}
664
665\def
\syst_variables_set
[#
1
][#
2
][#
3
]
666 {
\doifelse
{
#
2
}
\currentvariableclass
667 {
#
1
[
\??variables
#
2
:
][#
3
]
}
668 {
\pushmacro
\currentvariableclass
669 \def
\currentvariableclass
{
#
2
}
670 \getvariable
{
#
2
}
\s!reset
671 #
1
[
\??variables
#
2
:
][#
3
]
672 \getvariable
{
#
2
}
\s!set
673 \popmacro
\currentvariableclass
}}
674
675\unexpanded
\def
\setvariable
#
1
#
2
#
3
{
\expandafter\def
\csname
\??variables
#
1
:
#
2
\endcsname
{
#
3
}}
676\unexpanded
\def
\setevariable
#
1
#
2
#
3
{
\expandafter\edef\csname
\??variables
#
1
:
#
2
\endcsname
{
#
3
}}
677\unexpanded
\def
\setgvariable
#
1
#
2
#
3
{
\expandafter\gdef\csname
\??variables
#
1
:
#
2
\endcsname
{
#
3
}}
678\unexpanded
\def
\setxvariable
#
1
#
2
#
3
{
\expandafter\xdef\csname
\??variables
#
1
:
#
2
\endcsname
{
#
3
}}
679
680\def
\getvariable
#
1
#
2
681 {
\begincsname
\??variables
#
1
:
#
2
\endcsname
}
682
683\def
\showvariable
#
1
#
2
684 {
\showvalue
{
\begincsname
\??variables
#
1
:
#
2
\endcsname
}}
685
686\let
\currentvariableclass
\empty
687
688
689
690
691
692
693\let
\m_syst_variables_temp
\empty
694
695\def
\checkvariables
696 {
\dodoubleargument
\syst_variables_check
}
697
698\def
\syst_variables_check
699 {
\dogetparameters
\syst_variables_check_value
}
700
701\def
\syst_variables_check_value
#
1
#
2
#
3
702 {
\ifcsname
\??variables
#
1
:
#
2
\endcsname
703 \edef
\m_syst_variables_temp
{
\lastnamedcs
}
704 \ifx
\m_syst_variables_temp
\empty
705 \expandafter\def\csname
\??variables
#
1
:
#
2
\endcsname
{
#
3
}
706 \fi
707 \else
708 \expandafter\def\csname
\??variables
#
1
:
#
2
\endcsname
{
#
3
}
709 \fi
}
710
711
712
713
714
715
716\unexpanded
\def
\doifelsevariable
#
1
#
2
717 {
\ifcsname
\??variables
#
1
:
#
2
\endcsname
718 \expandafter
\firstoftwoarguments
719 \else
720 \expandafter
\secondoftwoarguments
721 \fi
}
722
723\let
\doifvariableelse\doifelsevariable
724
725\unexpanded
\def
\doifvariable
#
1
#
2
726 {
\ifcsname
\??variables
#
1
:
#
2
\endcsname
727 \expandafter
\firstofoneargument
728 \else
729 \expandafter
\gobbleoneargument
730 \fi
}
731
732\unexpanded
\def
\doifnotvariable
#
1
#
2
733 {
\ifcsname
\??variables
#
1
:
#
2
\endcsname
734 \expandafter
\gobbleoneargument
735 \else
736 \expandafter
\firstofoneargument
737 \fi
}
738
739
740
741
742\letvalue
{
\??variables
:
}
\empty
743
744\unexpanded
\def
\doifelseemptyvariable
#
1
#
2
745 {
\edef
\m_syst_string_one
{
\begincsname
\??variables
#
1
:
#
2
\endcsname
}
746 \ifx
\m_syst_string_one
\empty
747 \expandafter
\firstoftwoarguments
748 \else
749 \expandafter
\secondoftwoarguments
750 \fi
}
751
752\let
\doifemptyvariableelse\doifelseemptyvariable
753
754\unexpanded
\def
\doifemptyvariable
#
1
#
2
755 {
\edef
\m_syst_string_one
{
\begincsname
\??variables
#
1
:
#
2
\endcsname
}
756 \ifx
\m_syst_string_one
\empty
757 \expandafter
\firstofoneargument
758 \else
759 \expandafter
\gobbleoneargument
760 \fi
}
761
762\unexpanded
\def
\doifnotemptyvariable
#
1
#
2
763 {
\edef
\m_syst_string_one
{
\begincsname
\??variables
#
1
:
#
2
\endcsname
}
764 \ifx
\m_syst_string_one
\empty
765 \expandafter
\gobbleoneargument
766 \else
767 \expandafter
\firstofoneargument
768 \fi
}
769
770\def
\getvariabledefault
#
1
#
2
771 {
\ifcsname
\??variables
#
1
:
#
2
\endcsname
772 \expandafter\expandafter\expandafter\lastnamedcs\expandafter
\gobbleoneargument
773 \else
774 \expandafter
\firstofoneargument
775 \fi
}
776
777\unexpanded
\def
\setupenv
778 {
\dotripleargument
\syst_variables_set
[
\getrawparameters
][
\s!environment
]
}
779
780\unexpanded
\def
\doifelseenv
{
\doifelsevariable
\s!environment
}
781\unexpanded
\def
\doifenv
{
\doifvariable
\s!environment
}
782\unexpanded
\def
\doifnotenv
{
\doifnotvariable
\s!environment
}
783\def
\env
{
\getvariable
\s!environment
}
784\def
\envvar
{
\getvariabledefault
\s!environment
}
785
786\let
\doifenvelse\doifelseenv
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806\installcorenamespace
{
selector
}
807
808\unexpanded
\def
\defineselector
{
\dodoubleargument
\syst_selectors_define
}
809\unexpanded
\def
\setupselector
{
\dodoubleargument
\syst_selectors_setup
}
810
811
812
813
814\def
\syst_selectors_define
[#
1
][
{
\getparameters
[
\??selector
#
1
][
\c!max
=
\plustwo
,
\c!n
=
\plusone
,
}
815\def
\syst_selectors_setup
[#
1
][
{
\getparameters
[
\??selector
#
1
][
}
816
817\unexpanded
\def
\select
818 {
\directselect
}
819
820
821
822
823
824
825
826
827\def
\directselect
#
1
828 {
\expandafter
\filterfromnext
829 \csname
\??selector
\ifcsname
\??selector
#
1
\c!max
\endcsname
#
1
\fi
\c!max
\expandafter\endcsname
830 \csname
\??selector
\ifcsname
\??selector
#
1
\c!n
\endcsname
#
1
\fi
\c!n
\endcsname
}
831
832\letvalue
{
\??selector\c!max
}
\plusone
833\letvalue
{
\??selector\c!n
}
\plusone
834
835\protect
\endinput
836