1
2
3
4
5
6
7
8
9
10
11
12
13
14\writestatus{loading}{ConTeXt Structure Macros Userdata}
15
16\registerctxluafile{strcusr}{}
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85\unprotect
86
87\installnamespace {userdata}
88\installnamespace {userdataalternative}
89\installnamespace {userdatarenderings}
90
91\installcommandhandler \????userdata {userdata} \????userdata
92\installcommandhandler \????userdataalternative {userdataalternative} \????userdataalternative
93
94\appendtoks
95 \frozen\protected\instance\edefcsname\e!start\currentuserdata\endcsname{\userdata_start_instance{\currentuserdata}}
96 \frozen\protected\instance\letcsname \e!stop \currentuserdata\endcsname\userdata_stop_instance
97\to \everydefineuserdata
98
99\permanent\protected\def\startuserdata
100 {\begingroup
101 \lettonothing\currentuserdata
102 \doifelsenextoptionalcs\userdata_start_delayed\userdata_start_indeed}
103
104\def\userdata_start_delayed[#S#1]
105 {\doifelseassignmentcs{#1}
106 \userdata_start_delayed_parameters
107 \userdata_start_delayed_name
108 [#1]}
109
110\def\userdata_start_delayed_parameters[#S#1]
111 {\setupcurrentuserdata[#1]
112 \userdata_start_indeed}
113
114\def\userdata_start_delayed_name[#1]
115 {\cdef\currentuserdata{#1}
116 \checkuserdataparent
117 \doifelsenextoptionalcs\userdata_start_delayed_parameters\userdata_start_indeed}
118
119\protected\tolerant\def\userdata_start_instance#1#*[#S#2]
120 {\begingroup
121 \cdef\currentuserdata{#1}
122 \setupcurrentuserdata[#2]
123 \grabbufferdatadirect
124
125 {\s!userdata}
126 {\e!start\currentuserdata}
127 {\e!stop \currentuserdata}}
128
129\def\userdata_start_indeed
130 {\grabbufferdatadirect
131
132 {\s!userdata}
133 {\csstring\startuserdata}
134 {\csstring\stopuserdata}}
135
136\permanent\protected\def\stopuserdata
137 {\userdataparameter\c!before
138 \dostarttagged\t!userdata\currentuserdata
139 \begingroup
140 \useuserdatastyleandcolor\c!style\c!color
141 \usealignparameter\userdataparameter
142 \edef\currentuserdataalternative{\userdataparameter\c!alternative}
143 \ifcsname\currentuserdataalternativehash\s!parent\endcsname \else
144 \let\currentuserdataalternative\s!default
145 \fi
146 \usesetupsparameter\userdataparameter
147 \edef\p_renderingsetup{\userdataalternativeparameter\c!renderingsetup}
148 \directsetup\p_renderingsetup
149 \endgroup
150 \dostoptagged
151 \userdataparameter\c!after
152 \endgroup}
153
154\aliased\let\userdata_stop_instance\stopuserdata
155
156
157
158
159
160
161
162
163\permanent\tolerant\protected\def\getuserdata [#1]{\getbufferdata[\s!userdata]}
164\permanent\tolerant\protected\def\getinlineuserdata[#1]{\inlinebuffer [\s!userdata]}
165
166\defineuserdataalternative
167 [\s!default]
168 [\c!renderingsetup=\????userdatarenderings:\s!default]
169
170
171
172
173
174
175
176
177\startsetups[\????userdatarenderings:\s!default]
178 \getuserdata
179\stopsetups
180
181\setupuserdata
182 [\c!alternative=\s!default]
183
184\protect
185 |