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 \setuevalue{\e!start\currentuserdata}{\dodoubleempty\userdata_start_instance[\currentuserdata]}
96 \setuevalue{\e!stop \currentuserdata}{\userdata_stop_instance}
97\to \everydefineuserdata
98
99\unexpanded\def\startuserdata
100 {\begingroup
101 \let\currentuserdata\empty
102 \doifelsenextoptionalcs\userdata_start_delayed\userdata_start_indeed}
103
104\def\userdata_start_delayed[#1]
105 {\doifelseassignmentcs{#1}
106 \userdata_start_delayed_parameters
107 \userdata_start_delayed_name
108 [#1]}
109
110\def\userdata_start_delayed_parameters[#1]
111 {\setupcurrentuserdata[#1]
112 \userdata_start_indeed}
113
114\def\userdata_start_delayed_name[#1]
115 {\edef\currentuserdata{#1}
116 \checkuserdataparent
117 \doifelsenextoptionalcs\userdata_start_delayed_parameters\userdata_start_indeed}
118
119\unexpanded\def\userdata_start_instance[#1][#2]
120 {\begingroup
121 \edef\currentuserdata{#1}
122 \setupcurrentuserdata[#2]
123 \grabbufferdatadirect
124 {\s!userdata:\currentuserdata}
125 {\e!start\currentuserdata}
126 {\e!stop \currentuserdata}}
127
128\def\userdata_start_indeed
129 {\grabbufferdatadirect
130 {\s!userdata:\currentuserdata}
131 {\csstring\startuserdata}
132 {\csstring\stopuserdata}}
133
134\unexpanded\def\stopuserdata
135 {\userdataparameter\c!before
136 \dostarttagged\t!userdata\currentuserdata
137 \begingroup
138 \useuserdatastyleandcolor\c!style\c!color
139 \usealignparameter\userdataparameter
140 \edef\currentuserdataalternative{\userdataparameter\c!alternative}
141 \ifcsname\currentuserdataalternativehash\s!parent\endcsname \else
142 \let\currentuserdataalternative\s!default
143 \fi
144 \usesetupsparameter\userdataparameter
145 \edef\p_renderingsetup{\userdataalternativeparameter\c!renderingsetup}
146 \directsetup\p_renderingsetup
147 \endgroup
148 \dostoptagged
149 \userdataparameter\c!after
150 \endgroup}
151
152\let\userdata_stop_instance\stopuserdata
153
154\unexpanded\def\getuserdata {\getbufferdata[\s!userdata]}
155\unexpanded\def\getinlineuserdata{\inlinebuffer[\s!userdata]}
156
157\defineuserdataalternative
158 [\s!default]
159 [\c!renderingsetup=\????userdatarenderings:\s!default]
160
161
162
163
164
165
166
167
168\startsetups[\????userdatarenderings:\s!default]
169 \getuserdata
170\stopsetups
171
172\setupuserdata
173 [\c!alternative=\s!default]
174
175\protect
176 |