1
2
3
4
5
6
7
8
9
10
11
12
13
14\writestatus{loading}{ConTeXt Structure Macros Labels}
15
16\unprotect
17
18
19
20
21
22
23
24\installcorenamespace{labels}
25
26\installcommandhandler \??labels {label} \??labels
27
28\installcounterassociation{label}
29
30\let\setuplabels\setuplabel
31
32\setuplabel
33 [\c!alternative=\v!intext,
34 \c!headstyle=\v!bold,
35 \c!titlestyle=\v!bold,
36 \c!distance=\zeropoint,
37 \c!width=\v!fit,
38 \c!titledistance=.5\emwidth,
39 \c!margin=\v!no,
40 \c!titleleft=(,
41 \c!titleright=),
42 \c!display=\v!no,
43 \c!titlecommand=,
44 \c!expansion=\v!no,
45 \c!way=\v!by\v!text,
46 \c!prefix=\v!no,
47 \c!prefixconnector=.,
48 \c!text=\currentlabel,
49 \c!number=\v!yes,
50 \c!start=0,
51 \c!state=\v!start,
52 \c!levels=3]
53
54\unexpanded\def\strc_define_commands_label#1#2#3
55 {\doifelsenothing{#3}
56 {\normalexpanded{\defineconstruction[#1][\s!handler=\v!label,\c!level=#2]}
57 \setevalue{\??label#1:\s!parent}{\??label}}
58 {\normalexpanded{\defineconstruction[#1][#3][\s!handler=\v!label,\c!level=#2]}
59 \setevalue{\??label#1:\s!parent}{\??label#3}}
60 \ifconditional\c_strc_constructions_define_commands
61 \setuevalue{\e!next #1}{\strc_labels_next {#1}{\number#2}}
62 \setuevalue{\v!reset #1}{\strc_labels_reset {#1}{\number#2}}
63
64 \ifcsname\v!current#1\endcsname
65
66 \else
67 \setuevalue{\v!current#1}{\strc_labels_current{#1}}
68 \fi
69 \setuevalue {#1}{\strc_labels_command{#1}}
70 \fi}
71
72
73
74\appendtoks
75 \ifx\currentlabelparent\empty
76
77 \let\currentlabelsub\empty
78 \strc_define_commands_label
79 {\currentlabelsub\currentlabel}
80 \plusone
81 \empty
82 \edef\p_levels{\labelparameter\c!levels}
83 \dostepwiserecurse\plustwo\p_levels\plusone
84 {\strc_define_commands_label
85 {\v!sub\currentlabelsub\currentlabel}
86 \recurselevel
87 {\currentlabelsub\currentlabel}
88 \edef\currentlabelsub{\v!sub\currentlabelsub}}
89 \else
90
91 \let\currentlabelsub\empty
92 \edef\p_levels{\labelparameter\c!levels}
93 \dorecurse\p_levels
94 {\strc_define_commands_label
95 {\currentlabelsub\currentlabel}
96 \recurselevel
97 {\currentlabelsub\currentlabelparent}
98 \edef\currentlabelsub{\v!sub\currentlabelsub}}
99 \fi
100 \edef\p_counter{\labelparameter\s!counter}
101 \ifx\p_counter\empty
102 \let\p_counter\currentlabel
103 \fi
104 \doifelsecounter\p_counter\donothing{\strc_labels_define_counter\p_counter}
105 \letlabelparameter\s!counter\p_counter
106\to \everydefinelabel
107
108\let\p_strc_constructions_title \empty
109\let\p_strc_constructions_number\empty
110
111\newconditional\c_strc_constructions_number_keep
112
113\setvalue{\??constructioninitializer\v!label}
114 {\let\currentlabel \currentconstruction
115 \let\constructionparameter \labelparameter
116 \let\constructionnamespace \??label
117 \let\detokenizedconstructionparameter\detokenizedlabelparameter
118 \let\letconstructionparameter \letlabelparameter
119 \let\useconstructionstyleandcolor \uselabelstyleandcolor
120 \let\setupcurrentconstruction \setupcurrentlabel
121
122 \edef\p_strc_constructions_number{\constructionparameter\c!number}
123 \ifx\p_strc_constructions_number\v!yes
124 \settrue\c_strc_constructions_number_state
125 \iftrialtypesetting
126 \strc_counters_save\currentconstructionnumber
127 \fi
128 \ifconditional\c_strc_constructions_number_keep \else
129 \strc_counters_increment_sub\currentconstructionnumber\currentconstructionlevel
130 \fi
131 \else
132 \setfalse\c_strc_constructions_number_state
133 \fi
134 \edef\p_strc_constructions_title{\constructionparameter\c!title}
135 \ifx\p_strc_constructions_title\v!yes
136 \settrue\c_strc_constructions_title_state
137 \else
138 \setfalse\c_strc_constructions_title_state
139 \fi}
140
141\setvalue{\??constructionfinalizer\v!label}
142 {\ifconditional\c_strc_constructions_number_state
143 \iftrialtypesetting
144 \strc_counters_restore\currentconstructionnumber
145 \fi
146 \fi}
147
148
149
150\unexpanded\def\strc_labels_command{\setfalse\c_strc_constructions_number_keep\strc_descriptions_command}
151\unexpanded\def\strc_labels_current{\settrue \c_strc_constructions_number_keep\strc_descriptions_command}
152
153\unexpanded\def\strc_labels_next {\strc_constructions_next_indeed \namedlabelparameter}
154\unexpanded\def\strc_labels_reset {\strc_constructions_reset_indeed\namedlabelparameter}
155
156
157
158
159\def\strc_labels_define_counter#1
160 {\definecounter[#1]
161 \registerlabelcounter{#1}}
162
163\appendtoks
164 \synchronizelabelcounters
165\to \everysetuplabel
166
167\appendtoks
168 \synchronizelabelcounters
169\to \everydefinelabel
170
171
172
173\expandafter\let\csname\??constructionmainhandler\v!label\expandafter\endcsname\csname\??constructionmainhandler\v!description\endcsname
174
175\unexpanded\setevalue{\??constructioncommandhandler\v!label}
176 {\csname\??constructionstarthandler\v!construction\endcsname
177 \csname\??constructionstophandler \v!construction\endcsname
178 \endgroup}
179
180\unexpanded\setvalue{\??constructiontexthandler\v!label}
181 {\begingroup
182 \useconstructionstyleandcolor\c!headstyle\c!headcolor
183 \strc_labels_text
184 \endgroup}
185
186\let\strc_labels_text\strc_enumerations_text
187
188
189
190\defineconstructionalternative
191 [\v!intext]
192 [\c!renderingsetup=\??constructionrenderings:\v!intext]
193
194\startsetups[\??constructionrenderings:\v!intext]
195 \dontleavehmode\box\constructionheadbox
196\stopsetups
197
198\protect \endinput
199 |