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\permanent\tolerant\protected\def\definesymbol[#1]#*[#2]#*[#3]
79 {\ifparameter#3\or
80 \defcsname\??symbol#1:#2\endcsname{#3}
81 \ifempty{#1}\else\addvalue{\??symbolset#1}{#2}\fi
82 \else
83 \defcsname\??symbol\m_symb_current_set:#1\endcsname{#2}
84 \addvalue{\??symbolset\m_symb_current_set}{#1}
85 \fi}
86
87\permanent\protected\def\doifelseinsymbolset#1#2{\ifcsname\??symbol#1:#2\endcsname\expandafter\firstoftwoarguments\else\expandafter\secondoftwoarguments\fi}
88\permanent\protected\def\doifinsymbolset #1#2{\ifcsname\??symbol#1:#2\endcsname\expandafter\firstofoneargument \else\expandafter\gobbleoneargument \fi}
89\permanent\protected\def\doifelsesymbolset #1{\ifcsname\??symbolset#1\endcsname\expandafter\firstoftwoarguments\else\expandafter\secondoftwoarguments\fi}
90
91\aliased\let\doifinsymbolsetelse\doifelseinsymbolset
92\aliased\let\doifsymbolsetelse \doifelsesymbolset
93
94\letvalue\??symbolset\empty
95
96
97
98\permanent\def\symbolset#1{\begincsname\??symbolset#1\endcsname}
99
100
101
102
103
104
105
106
107
108
109\permanent\tolerant\protected\def\symbol[#1]#*[#2]
110 {\ifarguments
111 \expandafter\symb_place_argument
112 \or
113 \symb_place_argument{#1}
114 \or
115 \dontleavehmode
116 \edef\currentsymbol{#2}
117 \ifcsname\??symbol#1:#2\endcsname
118 \symb_place_indeed{#1:#2}
119 \orelse\ifcsname\??symboldefault#1\endcsname
120 \symb_place_named{#1}
121 \else
122 \symb_place_normal
123 \fi
124 \fi}
125
126\def\symb_place_argument#1
127 {\dontleavehmode
128 \edef\currentsymbol{#1}
129 \ifcsname\??symbol\currentsymbolset:#1\endcsname
130 \symb_place_indeed{\currentsymbolset:#1}
131 \else
132 \symb_place_normal
133 \fi}
134
135\def\symb_place_normal
136 {\c_symb_found\conditionalfalse
137 \expand\t_symb_setups
138 \ifconditional\c_symb_found \else
139 \symb_place_retry\currentsymbol
140 \fi}
141
142\def\symb_place_indeed#1
143 {\c_symb_found\conditionaltrue
144 \begingroup
145 \expand\everysymbol
146 \csname\??symbol#1\endcsname\relax
147 \endgroup}
148
149\letcsname\??symbol\endcsname\firstofoneargument
150
151\permanent\def\directsymbol#1#2
152 {\begincsname\??symbol#1:#2\endcsname}
153
154\protected\def\symb_fetch
155 {\ifconditional\c_symb_found
156 \expandafter\gobbleoneargument
157 \else
158 \expandafter\symb_fetch_indeed
159 \fi}
160
161\def\symb_fetch_indeed#1
162 {\ifcsname\??symbol#1:\currentsymbol\endcsname
163 \symb_place_indeed{#1:\currentsymbol}
164 \orelse\ifcsname\??symboldefault#1\endcsname
165 \symb_place_named{#1}
166 \fi}
167
168\def\symb_place_named#1
169 {\begingroup
170 \setbox\scratchbox\hbox\bgroup
171 \expand\everysymbol
172 \getglyphstyled
173 {\csname\??symboldefault#1\endcsname}
174 {\tochar{n:\currentsymbol}}
175 \relax
176 \egroup
177 \ifdim\wd\scratchbox>\zeropoint
178 \unhbox\scratchbox
179 \endgroup
180 \xdefcsname\??symbol#1:\currentsymbol\endcsname{\symb_place_named_indeed{#1}{\currentsymbol}}
181 \c_symb_found\conditionaltrue
182 \else
183 \endgroup
184 \fi}
185
186\protected\def\symb_place_named_indeed#1#2
187 {\c_symb_found\conditionaltrue
188 \begingroup
189 \expand\everysymbol
190 \getglyphstyled
191 {\csname\??symboldefault#1\endcsname}
192 {\tochar{n:#2}}
193 \relax
194 \endgroup}
195
196\def\symb_place_retry#1
197 {\ifcsname\??symbol:#1\endcsname
198 \symb_place_indeed{:#1}
199 \else
200 #1
201 \fi}
202
203
204
205
206
207
208
209
210
211
212
213\ifdefined\externalfigure \else \def\externalfigure[#1][#2]{#1} \fi
214
215\mutable\def\defaultsymbolfactor{10}
216\mutable\def\defaultsymbolheight{1.25ex}
217
218\permanent\tolerant\protected\def\figuresymbol[#1]#,[#S#2]
219 {\externalfigure[#1][\c!reset=\v!yes,\c!symbol=\v!yes,\c!height=\defaultsymbolheight,#2]}
220
221\permanent\tolerant\protected\def\definefiguresymbol[#1]#*[#2]#*[#S#3]
222 {\ifarguments\or\else
223 \definesymbol[#1][{\figuresymbol[#2][#3]}]
224 \fi}
225
226
227
228
229
230
231\def\symb_fetch_first
232 {\ifconditional\c_symb_found
233 \expandafter\gobbleoneargument
234 \else
235 \expandafter\symb_fetch_first_indeed
236 \fi}
237
238\def\symb_fetch_first_indeed#1
239 {\doifinsymbolset{#1}\currentsymbol{\c_symb_found\conditionaltrue}}
240
241\def\symb_fetch_second#1
242 {\doifinsymbolset\empty\currentsymbol{\c_symb_found\conditionaltrue}}
243
244\permanent\protected\def\doifelsesymboldefined#1
245 {\begingroup
246 \edef\currentsymbol{#1}
247 \let\symb_fetch\symb_fetch_first
248 \c_symb_found\conditionalfalse
249 \expand\t_symb_setups
250 \ifconditional\c_symb_found
251 \endgroup\expandafter\firstoftwoarguments
252 \else
253 \symb_fetch_second\currentsymbol
254 \ifconditional\c_symb_found
255 \endgroup\doubleexpandafter\firstoftwoarguments
256 \else
257 \endgroup\doubleexpandafter\secondoftwoarguments
258 \fi
259 \fi}
260
261\aliased\let\doifsymboldefinedelse\doifelsesymboldefined
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293\installcorenamespace{symbolsets}
294
295\permanent\tolerant\protected\def\startsymbolset[#1]#*[#S#2]
296 {\pushmacro\m_symb_current_set
297 \def\m_symb_current_set{#1}
298 \ifarguments\or\or
299 \getdummyparameters[\s!font=,#2]
300 \edef\p_font{\dummyparameter\s!font}
301 \ifempty\p_font\else
302 \letcsname\??symboldefault#1\endcsname\p_font
303 \fi
304 \fi}
305
306\permanent\protected\def\stopsymbolset
307 {\popmacro\m_symb_current_set}
308
309\permanent\protected\def\setupsymbolset[#1]
310 {\cdef\currentsymbolset{#1}
311 \ifcsname\??symbolsets\currentsymbolset\endcsname \else
312 \symb_setup_symbol_set
313 \fi}
314
315\def\symb_setup_symbol_set
316 {\normalexpanded{\t_symb_setups{\symb_fetch{\currentsymbolset}\expand\t_symb_setups}}
317 \letcsname\??symbolsets\currentsymbolset\endcsname\empty}
318
319\permanent\protected\def\resetsymbolset
320 {\t_symb_setups\emptytoks}
321
322\permanent\protected\def\forcesymbolset[#1]
323 {\normalexpanded{\t_symb_setups{\symb_fetch{#1}}}}
324
325
326
327
328
329
330\fetchmodulecommand \showsymbolset \f!symb_run
331
332
333
334
335
336
337\permanent\protected\def\usesymbols[#1]{\clf_usesymbols{#1}}
338
339
340
341
342
343\protect \endinput
344 |