1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17\writestatus{loading}{ConTeXt Symbol Libraries Initialization}
18
19\registerctxluafile{symbini}{autosuffix}
20
21\unprotect
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43\installcorenamespace{symbol}
44\installcorenamespace{symbols}
45\installcorenamespace{symbolset}
46\installcorenamespace{symboldefault}
47
48
49
50\installparameterhandler\??symbols {symbols}
51\installsetuphandler \??symbols {symbols}
52
53\appendtoks
54 \ifcstok{\symbolsparameter\c!stylealternative}\v!math
55 \prefermathovertextchar\conditionaltrue
56 \else
57 \prefermathovertextchar\conditionalfalse
58 \fi
59\to \everysetupsymbols
60
61\setupsymbols
62 [\c!stylealternative=\v!text]
63
64\mutable\lettonothing\currentsymbol
65\mutable\lettonothing\currentsymbolset
66
67\newtoks\t_symb_setups
68
69\lettonothing\m_symb_current_set
70
71\newconditional\c_symb_found
72
73\newtoks\everysymbol
74
75
76
77
78
79
80
81
82
83
84
85
86
87\permanent\tolerant\protected\def\definesymbol[#1]#*[#2]#*[#3]
88 {\ifparameter#3\or
89 \defcsname\??symbol#1:#2\endcsname{#3}
90 \ifempty{#1}\else\symb_register{#1}{#2}\fi
91 \else
92 \defcsname\??symbol\m_symb_current_set:#1\endcsname{#2}
93 \symb_register{\m_symb_current_set}{#1}
94 \fi}
95
96\permanent\tolerant\protected\def\symb_register#1#2
97 {\ifcsname\??symbolset#1\endcsname
98 \normalexpanded{\addtocommalist{#2}\expandafter\noexpand\lastnamedcs}
99 \else
100 \edefcsname\??symbolset#1\endcsname{#2}
101 \fi}
102
103\permanent\protected\def\doifelseinsymbolset#1#2{\ifcsname\??symbol#1:#2\endcsname\expandafter\firstoftwoarguments\else\expandafter\secondoftwoarguments\fi}
104\permanent\protected\def\doifinsymbolset #1#2{\ifcsname\??symbol#1:#2\endcsname\expandafter\firstofoneargument \else\expandafter\gobbleoneargument \fi}
105\permanent\protected\def\doifelsesymbolset #1{\ifcsname\??symbolset#1\endcsname\expandafter\firstoftwoarguments\else\expandafter\secondoftwoarguments\fi}
106
107\aliased\let\doifinsymbolsetelse\doifelseinsymbolset
108\aliased\let\doifsymbolsetelse \doifelsesymbolset
109
110\letvalue\??symbolset\empty
111
112
113
114\permanent\def\symbolset#1{\begincsname\??symbolset#1\endcsname}
115
116
117
118
119
120
121
122
123
124
125\permanent\tolerant\protected\def\symbol[#1]#*[#2]
126 {\ifarguments
127 \expandafter\symb_place_argument
128 \or
129 \symb_place_argument{#1}
130 \or
131 \dontleavehmode
132 \edef\currentsymbol{#2}
133 \ifcsname\??symbol#1:#2\endcsname
134 \symb_place_indeed{#1:#2}
135 \orelse\ifcsname\??symboldefault#1\endcsname
136 \symb_place_named{#1}
137 \else
138 \symb_place_normal
139 \fi
140 \fi}
141
142\def\symb_place_argument#1
143 {\dontleavehmode
144 \edef\currentsymbol{#1}
145 \ifcsname\??symbol\currentsymbolset:#1\endcsname
146 \symb_place_indeed{\currentsymbolset:#1}
147 \else
148 \symb_place_normal
149 \fi}
150
151\def\symb_place_normal
152 {\c_symb_found\conditionalfalse
153 \expand\t_symb_setups
154 \ifconditional\c_symb_found \else
155 \symb_place_retry\currentsymbol
156 \fi}
157
158\def\symb_place_indeed#1
159 {\c_symb_found\conditionaltrue
160 \begingroup
161 \expand\everysymbol
162 \csname\??symbol#1\endcsname\relax
163 \endgroup}
164
165\letcsname\??symbol\endcsname\firstofoneargument
166
167\permanent\def\directsymbol#1#2
168 {\begincsname\??symbol#1:#2\endcsname}
169
170\protected\def\symb_fetch
171 {\ifconditional\c_symb_found
172 \expandafter\gobbleoneargument
173 \else
174 \expandafter\symb_fetch_indeed
175 \fi}
176
177\def\symb_fetch_indeed#1
178 {\ifcsname\??symbol#1:\currentsymbol\endcsname
179 \symb_place_indeed{#1:\currentsymbol}
180 \orelse\ifcsname\??symboldefault#1\endcsname
181 \symb_place_named{#1}
182 \fi}
183
184\def\symb_place_named#1
185 {\begingroup
186 \setbox\scratchbox\hbox\bgroup
187 \expand\everysymbol
188 \getglyphstyled
189 {\csname\??symboldefault#1\endcsname}
190 {\tochar{n:\currentsymbol}}
191 \relax
192 \egroup
193 \ifdim\wd\scratchbox>\zeropoint
194 \unhbox\scratchbox
195 \endgroup
196 \xdefcsname\??symbol#1:\currentsymbol\endcsname{\symb_place_named_indeed{#1}{\currentsymbol}}
197 \c_symb_found\conditionaltrue
198 \else
199 \endgroup
200 \fi}
201
202\protected\def\symb_place_named_indeed#1#2
203 {\c_symb_found\conditionaltrue
204 \begingroup
205 \expand\everysymbol
206 \getglyphstyled
207 {\csname\??symboldefault#1\endcsname}
208 {\tochar{n:#2}}
209 \relax
210 \endgroup}
211
212\def\symb_place_retry#1
213 {\ifcsname\??symbol:#1\endcsname
214 \symb_place_indeed{:#1}
215 \else
216 #1
217 \fi}
218
219
220
221
222
223
224
225
226
227
228
229\ifdefined\externalfigure \else \def\externalfigure[#1][#2]{#1} \fi
230
231\mutable\def\defaultsymbolfactor{10}
232\mutable\def\defaultsymbolheight{1.25ex}
233
234\permanent\tolerant\protected\def\figuresymbol[#1]#,[#S#2]
235 {\externalfigure[#1][\c!reset=\v!yes,\c!symbol=\v!yes,\c!height=\defaultsymbolheight,#2]}
236
237\permanent\tolerant\protected\def\definefiguresymbol[#1]#*[#2]#*[#S#3]
238 {\ifarguments\or\else
239 \definesymbol[#1][{\figuresymbol[#2][#3]}]
240 \fi}
241
242
243
244
245
246
247\def\symb_fetch_first
248 {\ifconditional\c_symb_found
249 \expandafter\gobbleoneargument
250 \else
251 \expandafter\symb_fetch_first_indeed
252 \fi}
253
254\def\symb_fetch_first_indeed#1
255 {\doifinsymbolset{#1}\currentsymbol{\c_symb_found\conditionaltrue}}
256
257\def\symb_fetch_second#1
258 {\doifinsymbolset\empty\currentsymbol{\c_symb_found\conditionaltrue}}
259
260\permanent\protected\def\doifelsesymboldefined#1
261 {\begingroup
262 \edef\currentsymbol{#1}
263 \let\symb_fetch\symb_fetch_first
264 \c_symb_found\conditionalfalse
265 \expand\t_symb_setups
266 \ifconditional\c_symb_found
267 \endgroup\expandafter\firstoftwoarguments
268 \else
269 \symb_fetch_second\currentsymbol
270 \ifconditional\c_symb_found
271 \endgroup\doubleexpandafter\firstoftwoarguments
272 \else
273 \endgroup\doubleexpandafter\secondoftwoarguments
274 \fi
275 \fi}
276
277\aliased\let\doifsymboldefinedelse\doifelsesymboldefined
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309\installcorenamespace{symbolsets}
310
311\permanent\tolerant\protected\def\startsymbolset[#1]#*[#S#2]
312 {\pushmacro\m_symb_current_set
313 \def\m_symb_current_set{#1}
314 \ifarguments\or\or
315 \getdummyparameters[\s!font=,#2]
316 \edef\p_font{\dummyparameter\s!font}
317 \ifempty\p_font\else
318 \letcsname\??symboldefault#1\endcsname\p_font
319 \fi
320 \fi}
321
322\permanent\protected\def\stopsymbolset
323 {\popmacro\m_symb_current_set}
324
325\permanent\protected\def\setupsymbolset[#1]
326 {\cdef\currentsymbolset{#1}
327 \ifcsname\??symbolsets\currentsymbolset\endcsname \else
328 \symb_setup_symbol_set
329 \fi}
330
331\def\symb_setup_symbol_set
332 {\normalexpanded{\t_symb_setups{\symb_fetch{\currentsymbolset}\expand\t_symb_setups}}
333 \letcsname\??symbolsets\currentsymbolset\endcsname\empty}
334
335\permanent\protected\def\resetsymbolset
336 {\t_symb_setups\emptytoks}
337
338\permanent\protected\def\forcesymbolset[#1]
339 {\normalexpanded{\t_symb_setups{\symb_fetch{#1}}}}
340
341
342
343
344
345
346\fetchmodulecommand \showsymbolset \f!symb_run
347
348
349
350
351
352
353\permanent\protected\def\usesymbols[#1]{\clf_usesymbols{#1}}
354
355
356
357
358
359\protect \endinput
360 |