1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17\writestatus{loading}{ConTeXt Structure Macros Tags}
18
19\registerctxluafile{strctag}{}
20
21\unprotect
22
23
24
25
26\definetagconstant{document}
27
28\definetagconstant{division}
29\definetagconstant{paragraph}
30\definetagconstant{p}
31\definetagconstant{construct}
32\definetagconstant{highlight}
33
34\definetagconstant{section}
35\definetagconstant{sectioncaption}
36\definetagconstant{sectiontitle}
37\definetagconstant{sectionnumber}
38\definetagconstant{sectioncontent}
39
40\definetagconstant{itemgroup}
41\definetagconstant{item}
42\definetagconstant{itemtag}
43\definetagconstant{itemcontent}
44\definetagconstant{itemhead}
45\definetagconstant{itembody}
46
47\definetagconstant{description}
48\definetagconstant{descriptiontag}
49\definetagconstant{descriptioncontent}
50\definetagconstant{descriptionsymbol}
51
52\aliastagconstant{construction} {description}
53\aliastagconstant{constructiontag} {descriptiontag}
54\aliastagconstant{constructioncontent}{descriptioncontent}
55\aliastagconstant{constructionsymbol} {descriptionsymbol}
56
57\definetagconstant{verbatimblock}
58\definetagconstant{verbatimlines}
59\definetagconstant{verbatimline}
60\definetagconstant{verbatim}
61
62\definetagconstant{lines}
63\definetagconstant{line}
64\definetagconstant{linenumber}
65
66\definetagconstant{sorting}
67\definetagconstant{synonym}
68
69\definetagconstant{register}
70\definetagconstant{registerlocation}
71\definetagconstant{registersection}
72\definetagconstant{registertag}
73\definetagconstant{registerentries}
74\definetagconstant{registerentry}
75\definetagconstant{registercontent}
76\definetagconstant{registersee}
77\definetagconstant{registerpages}
78\definetagconstant{registerpage}
79\definetagconstant{registerpagerange}
80\definetagconstant{registerfrompage}
81\definetagconstant{registertopage}
82\definetagconstant{registerseparator}
83
84\definetagconstant{table}
85\definetagconstant{tablerow}
86\definetagconstant{tablecell}
87\definetagconstant{tableheadcell}
88\definetagconstant{tablehead}
89\definetagconstant{tablebody}
90\definetagconstant{tablefoot}
91
92\definetagconstant{tabulate}
93\definetagconstant{tabulaterow}
94\definetagconstant{tabulatecell}
95\definetagconstant{tabulateheadcell}
96\definetagconstant{tabulatehead}
97\definetagconstant{tabulatebody}
98\definetagconstant{tabulatefoot}
99
100\definetagconstant{math}
101\definetagconstant{mtable}
102\definetagconstant{mtr}
103\definetagconstant{mtd}
104\definetagconstant{maction}
105\definetagconstant{mstacker}
106\definetagconstant{mstackertop}
107\definetagconstant{mstackermid}
108\definetagconstant{mstackerbot}
109
110\aliastagconstant{mtablerow} {mtr}
111\aliastagconstant{mtablecell}{mtd}
112
113\definetagconstant{munderover}
114\definetagconstant{munder}
115\definetagconstant{mover}
116
117\definetagconstant{list}
118\definetagconstant{listitem}
119\definetagconstant{listtag}
120\definetagconstant{listcontent}
121\definetagconstant{listdata}
122\definetagconstant{listpage}
123\definetagconstant{listtext}
124
125\definetagconstant{delimited}
126
127\definetagconstant{delimitedsymbol}
128\definetagconstant{delimitedcontent}
129
130\aliastagconstant{delimitedblock}{delimited}
131
132\definetagconstant{subsentence}
133\definetagconstant{subsentencecontent}
134\definetagconstant{subsentencesymbol}
135
136\definetagconstant{float}
137\definetagconstant{floatcaption}
138\definetagconstant{floatlabel}
139\definetagconstant{floattext}
140\definetagconstant{floatnumber}
141\definetagconstant{floatcontent}
142
143\definetagconstant{image}
144
145\definetagconstant{mpgraphic}
146
147\definetagconstant{formulaset}
148\definetagconstant{formula}
149\definetagconstant{formulacaption}
150\definetagconstant{formulalabel}
151\definetagconstant{formulanumber}
152\definetagconstant{formulacontent}
153\definetagconstant{subformula}
154
155\definetagconstant{link}
156\definetagconstant{reference}
157
158\definetagconstant{margintext}
159\definetagconstant{margintextblock}
160\definetagconstant{marginanchor}
161
162
163
164\definetagconstant{label}
165\definetagconstant{number}
166
167\definetagconstant{ignore}
168\definetagconstant{private}
169
170\definetagconstant{mid}
171\definetagconstant{sub}
172\definetagconstant{sup}
173\definetagconstant{subsup}
174
175\definetagconstant{unit}
176\definetagconstant{quantity}
177
178
179\definetagconstant{combination}
180\definetagconstant{combinationpair}
181\definetagconstant{combinationcontent}
182\definetagconstant{combinationcaption}
183
184\definetagconstant{publications}
185\definetagconstant{publication}
186\definetagconstant{pubfld}
187
188\definetagconstant{block}
189\definetagconstant{userdata}
190
191
192
193
194
195
196
197\definesystemattribute[tagged][public]
198\definesystemattribute[image] [public]
199
200\unexpanded\def\setelementbackendtag{\dodoubleargument\strc_tags_set_backend}
201\unexpanded\def\setelementnature {\dodoubleargument\strc_tags_set_nature}
202
203\def\strc_tags_set_backend[#1][#2]{\clf_settagproperty_b{#1}{#2}}
204\def\strc_tags_set_nature [#1][#2]{\clf_settagproperty_n{#1}{#2}}
205
206\unexpanded\def\strc_tags_set_aspect_nop#1#2{}
207\unexpanded\def\strc_tags_set_aspect_yes#1#2{\clf_settagaspect{#1}{#2}}
208
209\unexpanded\def\ignoretagsinexport[#1]
210 {\clf_ignoretagsinexport{#1}}
211
212\installcorenamespace{tagging}
213
214\installsetuponlycommandhandler \??tagging {tagging}
215
216
217
218
219\unexpanded\def\strc_tags_element_start_yes{\dodoubleempty\strc_tags_element_start_yes_indeed}
220\unexpanded\def\strc_tags_element_start_nop{\dodoubleempty\strc_tags_element_start_nop_indeed}
221
222\unexpanded\def\strc_tags_element_start_yes_indeed
223 {\iftrialtypesetting
224 \expandafter\strc_tags_element_start_yes_indeed_nop
225 \else
226 \expandafter\strc_tags_element_start_yes_indeed_yes
227 \fi}
228
229\unexpanded\def\strc_tags_element_start_yes_indeed_nop[#1][#2]
230 {}
231
232\unexpanded\def\strc_tags_element_start_yes_indeed_yes[#1][#2]
233 {\clf_starttag_u{#1}{#2}}
234
235\unexpanded\def\strc_tags_element_stop_yes
236 {\iftrialtypesetting
237 \expandafter\strc_tags_element_stop_yes_indeed_nop
238 \else
239 \expandafter\strc_tags_element_stop_yes_indeed_yes
240 \fi}
241
242\unexpanded\def\strc_tags_element_stop_nop
243 {}
244
245\unexpanded\def\strc_tags_element_stop_yes_indeed_nop
246 {}
247
248\unexpanded\def\strc_tags_element_stop_yes_indeed_yes
249 {\clf_stoptag}
250
251\let\strc_tags_element_start_nop_indeed\strc_tags_element_start_yes_indeed_nop
252\let\strc_tags_element_stop_nop_indeed \strc_tags_element_stop_yes_indeed_nop
253
254\def\strc_tags_report_hyphen#1
255 {\writestatus\m!languages{setting #1 to U00AD}}
256
257\unexpanded\def\strc_tags_patch_hyphen
258 {
259 \ifnum\languageparameter\s!lefthyphenchar>\zerocount
260 \setuplanguage[\s!default][\s!lefthyphenchar="AD]
261 \strc_tags_report_hyphen\s!lefthyphenchar
262 \fi
263 \ifnum\languageparameter\s!righthyphenchar>\zerocount
264 \setuplanguage[\s!default][\s!righthyphenchar="AD]
265 \strc_tags_report_hyphen\s!righthyphenchar
266 \fi
267 \let\strc_tags_report_hyphen\gobbleoneargument}
268
269\unexpanded\def\strc_tags_enable_elements
270 {\strc_tags_patch_hyphen
271 \let\startelement\strc_tags_element_start_yes
272 \let\stopelement \strc_tags_element_stop_yes
273 \let\dosettagproperty\strc_tags_set_aspect_yes}
274
275\unexpanded\def\strc_tags_disable_elements
276 {\let\startelement\strc_tags_element_start_nop
277 \let\stopelement \strc_tags_element_stop_nop
278 \let\dosettagproperty\strc_tags_set_aspect_nop}
279
280
281
282\def\strc_tags_enabled_start_no_detail
283 {\iftrialtypesetting
284 \expandafter\strc_tags_start_nop_no_detail
285 \else
286 \expandafter\strc_tags_start_yes_no_detail
287 \fi}
288
289\def\strc_tags_enabled_start_detail
290 {\iftrialtypesetting
291 \expandafter\strc_tags_start_nop_detail
292 \else
293 \expandafter\strc_tags_start_yes_detail
294 \fi}
295
296\def\strc_tags_enabled_start_chained
297 {\iftrialtypesetting
298 \expandafter\strc_tags_start_nop_chained
299 \else
300 \expandafter\strc_tags_start_yes_chained
301 \fi}
302
303\def\strc_tags_enabled_stop
304 {\iftrialtypesetting
305 \expandafter\strc_tags_stop_nop
306 \else
307 \expandafter\strc_tags_stop_yes
308 \fi}
309
310\def\strc_tags_start_yes_no_detail #1{\clf_starttag{#1}}
311\def\strc_tags_start_yes_detail #1#2{\clf_starttag_d{#1}{#2}}
312\def\strc_tags_start_yes_chained #1#2#3{\clf_starttag_c{#1}{#2}{\getcurrentparentchain#3{#2}}}
313\def\strc_tags_stop_yes {\clf_stoptag}
314
315\let\strc_tags_start_nop_no_detail\gobbleoneargument
316\let\strc_tags_start_nop_detail \gobbletwoarguments
317\let\strc_tags_start_nop_chained \gobblethreearguments
318\let\strc_tags_stop_nop \donothing
319
320\def\strc_tags_start_yes_ignore{\clf_starttag{\t!ignore}}
321\let\strc_tags_stop_yes_ignore \strc_tags_stop_yes
322\let\strc_tags_start_nop_ignore\donothing
323\let\strc_tags_stop_nop_ignore \donothing
324
325
326
327
328
329
330
331\newconditional\c_strc_tags_enabled
332
333\let\dotaggedplaceholder\empty
334
335\chardef\strc_tags_placeholder_char\zerocount
336
337\unexpanded\def\strc_tags_enable_indeed
338 {\let\dotaggedplaceholder \strc_tags_placeholder_char
339 \let\dostarttagged \strc_tags_enabled_start_detail
340 \let\dostarttaggednodetail\strc_tags_enabled_start_no_detail
341 \let\dostarttaggedchained \strc_tags_enabled_start_chained
342 \let\dostoptagged \strc_tags_enabled_stop
343 \let\dostartignoretagging \strc_tags_start_yes_ignore
344 \let\dostopignoretagging \strc_tags_stop_yes_ignore}
345
346\unexpanded\def\strc_tags_enable
347 {
348 \global\settrue\c_strc_tags_enabled
349
350 \strc_tags_enable_indeed}
351
352\unexpanded\def\strc_tags_disable
353 {\ifconditional\c_strc_tags_enabled
354
355 \let\dotaggedplaceholder \strc_tags_placeholder_char
356 \let\dostarttagged \strc_tags_start_nop_detail
357 \let\dostarttaggednodetail\strc_tags_start_nop_no_detail
358 \let\dostarttaggedchained \strc_tags_start_nop_chained
359 \let\dostoptagged \strc_tags_stop_nop_ignore
360 \else
361
362 \let\dotaggedplaceholder \empty
363 \let\dostarttagged \strc_tags_start_nop_detail
364 \let\dostarttaggednodetail\strc_tags_start_nop_no_detail
365 \let\dostarttaggedchained \strc_tags_start_nop_chained
366 \let\dostoptagged \strc_tags_stop_nop_ignore
367 \let\dostartignoretagging \strc_tags_start_nop_ignore
368 \let\dostopignoretagging \strc_tags_stop_nop_ignore
369 \fi}
370
371
372
373\def\strc_tags_get_element_tag_yes{\clf_getelementtag}
374\let\strc_tags_get_element_tag_nop\donothing
375
376\unexpanded\def\strc_tags_setup_element_user_properties_yes
377 {\dodoubleempty\strc_tags_setup_element_user_properties_indeed}
378
379\unexpanded\def\strc_tags_setup_element_user_properties_nop
380 {\dodoubleempty\strc_tags_setup_element_user_properties_indeed_nop}
381
382\def\strc_tags_setup_element_user_properties_indeed
383 {\iftrialtypesetting
384 \expandafter\strc_tags_setup_element_user_properties_indeed_nop
385 \else
386 \expandafter\strc_tags_setup_element_user_properties_indeed_yes
387 \fi}
388
389\def\strc_tags_setup_element_user_properties_indeed_nop[#1][#2]{}
390\def\strc_tags_setup_element_user_properties_indeed_yes[#1][#2]{\clf_setelementuserproperties{#1}{#2}}
391
392\unexpanded\def\strc_tags_enable_properties
393 {\let\getelementtag \strc_tags_get_element_tag_yes
394 \let\setupelementuserproperties\strc_tags_setup_element_user_properties_yes}
395
396\unexpanded\def\strc_tags_disable_properties
397 {\let\getelementtag \strc_tags_get_element_tag_nop
398 \let\setupelementuserproperties\strc_tags_setup_element_user_properties_nop}
399
400
401
402\newtoks\everyenableelements
403\newtoks\everydisableelements
404
405\appendtoks
406 \strc_tags_enable_elements
407 \strc_tags_enable_properties
408 \doifelse{\taggingparameter\c!method}\v!auto\strc_tags_enable\strc_tags_disable
409\to \everyenableelements
410
411\appendtoks
412 \strc_tags_disable_elements
413 \strc_tags_disable_properties
414 \strc_tags_disable
415\to \everydisableelements
416
417\appendtoks
418 \doifelse{\taggingparameter\c!state}\v!start{\the\everyenableelements}{\the\everydisableelements}
419\to \everysetuptagging
420
421\unexpanded\def\forgettagging
422 {\c_attr_tagged\attributeunsetvalue}
423
424\setuptagging
425 [\c!state=\v!stop,
426 \c!method=\v!auto]
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446\installcorenamespace {paragraph}
447\installcommandhandler \??paragraph {paragraph} \??paragraph
448
449\setupparagraph
450 [\c!color=,
451 \c!style=]
452
453\unexpanded\def\startparagraph
454 {\dodoubleempty\paragraph_start}
455
456\def\paragraph_start
457 {\endgraf
458 \begingroup
459 \iffirstargument
460 \ifsecondargument
461 \doubleexpandafter\paragraph_start_two
462 \else
463 \doubleexpandafter\paragraph_start_one
464 \fi
465 \else
466 \expandafter\paragraph_start_zero
467 \fi}
468
469\def\paragraph_start_two[#1][#2]
470 {\edef\currentparagraph{#1}
471 \setupcurrentparagraph[#2]
472 \paragraph_start_indeed}
473
474\def\paragraph_start_one[#1][#2]
475 {\doifelseassignment{#1}
476 {\let\currentparagraph\empty
477 \setupcurrentparagraph[#1]}
478 {\edef\currentparagraph{#1}}
479 \paragraph_start_indeed}
480
481\def\paragraph_start_zero[#1][#2]
482 {\let\currentparagraph\empty
483 \paragraph_start_indeed}
484
485\ifdefined\dotagparagraph \else \let\dotagparagraph \gobbleoneargument \fi
486
487\def\paragraph_start_indeed
488 {\useparagraphstyleandcolor\c!style\c!color
489 \usealignparameter\paragraphparameter
490 \usesetupsparameter\paragraphparameter
491 \dostarttagged\t!paragraph\currentparagraph
492 \dotagparagraph{\paragraphparameter\c!align}}
493
494\unexpanded\def\stopparagraph
495 {\dostoptagged
496 \endgraf
497 \endgroup}
498
499\let\startpar\startparagraph
500\let\stoppar \stopparagraph
501
502\def\strc_tags_document_start_indeed
503 {\glet\strc_tags_document_start_indeed\relax
504 \dostarttagged\t!document\empty}
505
506\def\strc_tags_document_stop_indeed
507 {\glet\strc_tags_document_stop_indeed\relax
508 \dostoptagged}
509
510\appendtoks
511 \strc_tags_document_start_indeed
512\to \everyenableelements
513
514
515
516
517
518\appendtoks
519 \strc_tags_document_stop_indeed
520\to \everystoptext
521
522\appendtoks
523 \strc_tags_disable_elements
524 \strc_tags_disable
525\to \everybeforepagebody
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555\unexpanded\def\doifelseinelement#1
556 {\clf_doifelseinelement{#1}}
557
558\let\doifinelementelse\doifelseinelement
559
560\unexpanded\def\taggedlabeltexts#1#2#3
561 {\begingroup
562 \dostarttagged\t!label{#1}
563 \labeltexts{#1}
564 {\dostoptagged
565 \dostarttagged\t!number{#2}
566 #3
567 \dostoptagged
568 \dostarttagged\t!label{#1}}
569 \dostoptagged
570 \endgroup}
571
572\unexpanded\def\namedtaggedlabeltexts#1#2#3#4#5
573 {\begingroup
574 \dostarttagged{#1}{#2}
575 \labeltexts{#2}
576 {\dostoptagged
577 \dostarttagged{#3}{#4}
578 #5
579 \dostoptagged
580 \dostarttagged{#1}{#2}}
581 \dostoptagged
582 \endgroup}
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603\unexpanded\def\settaggedmetadata[#1]
604 {\clf_settaggedmetadata{#1}}
605
606
607
608\let\strc_tagged_saved_bpar\bpar
609\let\strc_tagged_saved_epar\epar
610
611\unexpanded\def\bpar{\dostarttagged\t!paragraph\empty\strc_tagged_saved_bpar}
612\unexpanded\def\epar{\strc_tagged_saved_epar\dostoptagged}
613
614
615
616\protect
617 |