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}{autosuffix}
20
21\unprotect
22
23
24
25
26\definetagconstant{document}
27\definetagconstant{documentpart}
28
29\definetagconstant{division}
30\definetagconstant{paragraph}
31\definetagconstant{subparagraph}
32\definetagconstant{p}
33\definetagconstant{highlight}
34\definetagconstant{ornament}
35\definetagconstant{break}
36\definetagconstant{placeholder}
37
38\definetagconstant{construct}
39\definetagconstant{constructleft}
40\definetagconstant{constructright}
41\definetagconstant{constructcontent}
42
43
44
45\definetagconstant{section}
46\definetagconstant{sectioncaption}
47\definetagconstant{sectiontitle}
48\definetagconstant{sectionnumber}
49\definetagconstant{sectioncontent}
50
51\definetagconstant{itemgroup}
52\definetagconstant{item}
53\definetagconstant{itemtag}
54\definetagconstant{itemcontent}
55\definetagconstant{itemhead}
56\definetagconstant{itembody}
57
58\definetagconstant{items}
59\definetagconstant{itemtexts}
60\definetagconstant{itemtext}
61\definetagconstant{itemsymbols}
62\definetagconstant{itemsymbol}
63
64\definetagconstant{description}
65\definetagconstant{descriptiontag}
66\definetagconstant{descriptioncontent}
67\definetagconstant{descriptionsymbol}
68
69\aliastagconstant {construction} {description}
70\aliastagconstant {constructiontag} {descriptiontag}
71\aliastagconstant {constructioncontent}{descriptioncontent}
72\aliastagconstant {constructionsymbol} {descriptionsymbol}
73
74\definetagconstant{verbatimblock}
75\definetagconstant{verbatimlines}
76\definetagconstant{verbatimline}
77\definetagconstant{verbatim}
78
79\definetagconstant{lines}
80\definetagconstant{line}
81\definetagconstant{linenumber}
82
83\definetagconstant{sorting}
84\definetagconstant{synonym}
85
86\definetagconstant{register}
87\definetagconstant{registerlocation}
88\definetagconstant{registersection}
89\definetagconstant{registertag}
90\definetagconstant{registerentries}
91\definetagconstant{registerentry}
92\definetagconstant{registercontent}
93\definetagconstant{registersee}
94\definetagconstant{registerpages}
95\definetagconstant{registerpage}
96\definetagconstant{registerpagerange}
97\definetagconstant{registerfrompage}
98\definetagconstant{registertopage}
99\definetagconstant{registerseparator}
100
101\definetagconstant{table}
102\definetagconstant{tablerow}
103\definetagconstant{tablecell}
104\definetagconstant{tableheadcell}
105\definetagconstant{tablehead}
106\definetagconstant{tablebody}
107\definetagconstant{tablefoot}
108
109\definetagconstant{tabulate}
110\definetagconstant{tabulaterow}
111\definetagconstant{tabulatecell}
112\definetagconstant{tabulateheadcell}
113\definetagconstant{tabulatehead}
114\definetagconstant{tabulatebody}
115\definetagconstant{tabulatefoot}
116
117\definetagconstant{math}
118\definetagconstant{mtable}
119\definetagconstant{mtr}
120\definetagconstant{mtd}
121
122\definetagconstant{maction}
123
124\definetagconstant{mstack}
125
126\definetagconstant{mstacker}
127\definetagconstant{mstackertop}
128\definetagconstant{mstackermid}
129\definetagconstant{mstackerbot}
130
131\definetagconstant{mextensible}
132
133\definetagconstant{mfunction}
134\definetagconstant{mfunctionstack}
135
136\definetagconstant{mdelimited}
137\definetagconstant{mdelimitedstack}
138
139\definetagconstant{mfraction}
140\definetagconstant{mfractionstack}
141
142\definetagconstant{munit}
143\definetagconstant{mdigits}
144
145\aliastagconstant {mtablerow} {mtr}
146\aliastagconstant {mtablecell}{mtd}
147
148\definetagconstant{munderover}
149\definetagconstant{munder}
150\definetagconstant{mover}
151\definetagconstant{mtext}
152
153\definetagconstant{mrow}
154
155\definetagconstant{list}
156\definetagconstant{listitem}
157\definetagconstant{listtag}
158\definetagconstant{listcontent}
159\definetagconstant{listdata}
160\definetagconstant{listpage}
161\definetagconstant{listtext}
162
163\definetagconstant{delimitedblock}
164\definetagconstant{delimited}
165\definetagconstant{delimitedsymbol}
166\definetagconstant{delimitedcontent}
167
168
169
170\definetagconstant{subsentence}
171\definetagconstant{subsentencecontent}
172\definetagconstant{subsentencesymbol}
173
174\definetagconstant{float}
175\definetagconstant{floatcaption}
176\definetagconstant{floatlabel}
177\definetagconstant{floattext}
178\definetagconstant{floatnumber}
179\definetagconstant{floatcontent}
180
181\definetagconstant{image}
182
183\definetagconstant{mpgraphic}
184
185\definetagconstant{formulaset}
186\definetagconstant{formula}
187\definetagconstant{formulacaption}
188\definetagconstant{formulalabel}
189\definetagconstant{formulanumber}
190\definetagconstant{formulacontent}
191\definetagconstant{subformula}
192
193\definetagconstant{link}
194\definetagconstant{reference}
195
196\definetagconstant{nativation}
197\definetagconstant{nativationbutton}
198\definetagconstant{nativationmenu}
199\definetagconstant{nativationmenuitem}
200\definetagconstant{nativationaction}
201
202\definetagconstant{margintext}
203\definetagconstant{margintextblock}
204\definetagconstant{marginanchor}
205
206\definetagconstant{linetext}
207
208
209
210\definetagconstant{label}
211\definetagconstant{number}
212
213\definetagconstant{ignore}
214\definetagconstant{private}
215
216\definetagconstant{mid}
217\definetagconstant{sub}
218\definetagconstant{sup}
219\definetagconstant{subsup}
220
221\definetagconstant{unit}
222\definetagconstant{quantity}
223
224
225\definetagconstant{combination}
226\definetagconstant{combinationpair}
227\definetagconstant{combinationcontent}
228\definetagconstant{combinationcaption}
229
230\definetagconstant{publications}
231\definetagconstant{publication}
232\definetagconstant{pubfld}
233
234\definetagconstant{citation}
235\definetagconstant{cite}
236
237\definetagconstant{narrower}
238
239\definetagconstant{block}
240
241\definetagconstant{userdata}
242
243\definetagconstant{textdisplay}
244
245\definetagconstant{verse}
246\definetagconstant{versetag}
247\definetagconstant{verseseparator}
248\definetagconstant{versecontent}
249
250\definetagconstant{navigation}
251\definetagconstant{navigationbutton}
252\definetagconstant{navigationmenu}
253\definetagconstant{navigationmenuitem}
254\definetagconstant{navigationaction}
255\definetagconstant{navigationpage}
256
257
258
259
260
261
262
263\definesystemattribute[tagged][public]
264\definesystemattribute[image] [public]
265
266
267
268
269\permanent\protected\def\ignoretagsinexport[#1]{\clf_ignoretagsinexport{#1}}
270
271\installcorenamespace{tagging}
272
273\installsetuponlycommandhandler \??tagging {tagging}
274
275
276
277
278
279
280
281
282
283
284\permanent\protected\def\strc_tags_element_start_yes
285 {\iftrialtypesetting
286 \expandafter\gobbletwooptionals
287 \else
288 \expandafter\strc_tags_start_userdata
289 \fi}
290
291\permanent\protected\def\strc_tags_element_stop_yes
292 {\iftrialtypesetting
293
294 \else
295 \expandafter\strc_tags_stop
296 \fi}
297
298\protected\def\strc_tags_enable_elements
299 {\enforced\let\startelement \strc_tags_element_start_yes
300 \enforced\let\stopelement \strc_tags_element_stop_yes
301 \enforced\let\dosettagproperty\strc_tags_set_aspect}
302
303\protected\def\strc_tags_disable_elements
304 {\enforced\let\startelement \gobbletwooptionals
305 \enforced\let\stopelement \relax
306 \enforced\let\dosettagproperty\gobbletwoarguments}
307
308
309
310\def\strc_tags_enabled_start_no_detail
311 {\iftrialtypesetting
312 \expandafter\gobbleoneargument
313 \else
314 \expandafter\strc_tags_start
315 \fi}
316
317\def\strc_tags_enabled_start_detail
318 {\iftrialtypesetting
319 \expandafter\gobbletwoarguments
320 \else
321 \expandafter\strc_tags_start_detail
322 \fi}
323
324\def\strc_tags_enabled_start_chained
325 {\iftrialtypesetting
326 \expandafter\gobblefourarguments
327 \else
328 \expandafter\strc_tags_start_chained_indeed
329 \fi}
330
331\def\strc_tags_enabled_start_ignore
332 {\iftrialtypesetting
333 \expandafter\gobbleoneargument
334 \else
335 \expandafter\strc_tags_start_ignore
336 \fi}
337
338\def\strc_tags_enabled_stop
339 {\iftrialtypesetting
340
341 \else
342 \expandafter\strc_tags_stop
343 \fi}
344
345
346
347\def\strc_tags_start_chained_indeed#1#2#3#4{\strc_tags_start_chained{#1}{#2}{\getcurrentparentchain#4{#3}}}
348
349\newconditional\c_strc_tags_enabled
350\newconditional\c_strc_tags_global
351
352\permanent\protected\def\taggingpause
353 {\c_strc_tags_global\conditionalfalse}
354
355\lettonothing\dotaggedplaceholder
356
357\immutable\chardef\strc_tags_placeholder_char\zerocount
358
359\protected\def\strc_tags_enable_indeed
360 {\enforced\let\dotaggedplaceholder \strc_tags_placeholder_char
361 \enforced\let\dostarttagged \strc_tags_enabled_start_detail
362 \enforced\let\dostarttaggednodetail\strc_tags_enabled_start_no_detail
363 \enforced\let\dostarttaggedchained \strc_tags_enabled_start_chained
364 \enforced\let\dostoptagged \strc_tags_enabled_stop
365 \enforced\let\dostartignoretagging \strc_tags_enabled_start_ignore
366 \enforced\let\dostopignoretagging \strc_tags_stop
367 \enforced\let\dotagdocumentpush \strc_tags_document_push
368 \enforced\let\dotagdocumentpop \strc_tags_document_pop
369 \enforced\let\dotagdocumentignore \strc_tags_document_ignore}
370
371\protected\def\strc_tags_enable
372 {
373 \global\c_strc_tags_enabled\conditionaltrue
374
375 \strc_tags_enable_indeed}
376
377\protected\def\strc_tags_disable
378 {\ifconditional\c_strc_tags_enabled
379
380 \enforced\let\dotaggedplaceholder \strc_tags_placeholder_char
381 \enforced\let\dostarttagged \gobbletwoarguments
382 \enforced\let\dostarttaggednodetail\gobbleoneargument
383 \enforced\let\dostarttaggedchained \gobblefourarguments
384 \enforced\let\dostoptagged \donothing
385 \else
386
387 \enforced\lettonothing\dotaggedplaceholder
388 \enforced\let\dostarttagged \gobbletwoarguments
389 \enforced\let\dostarttaggednodetail\gobbleoneargument
390 \enforced\let\dostarttaggedchained \gobblefourarguments
391 \enforced\let\dostoptagged \donothing
392 \enforced\let\dostartignoretagging \donothing
393 \enforced\let\dostopignoretagging \donothing
394 \enforced\let\dotagdocumentpush \donothing
395 \enforced\let\dotagdocumentpop \donothing
396 \enforced\let\dotagdocumentignore \donothing
397 \fi}
398
399
400
401
402
403
404
405
406
407
408\protected\def\strc_tags_document_ignore
409 {\c_attr_tagged\plusone}
410
411\prependtoks
412 \dotagdocumentignore
413\to \everybeforepagebody
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429\protected\def\strc_tags_setup_element_user_properties
430 {\iftrialtypesetting
431 \expandafter\gobbletwooptionals
432 \else
433 \expandafter\strc_tags_set_element_user_properties
434 \fi}
435
436\protected\def\strc_tags_enable_properties
437 {\enforced\let\getelementtag \strc_tags_get_element_tag
438 \enforced\let\setupelementuserproperties\strc_tags_set_element_user_properties}
439
440\protected\def\strc_tags_disable_properties
441 {\enforced\let\getelementtag \donothing
442 \enforced\let\setupelementuserproperties\gobbletwooptionals}
443
444\strc_tags_disable
445
446
447
448\newtoks\everyenableelements
449\newtoks\everydisableelements
450
451\appendtoks
452 \strc_tags_enable_elements
453 \strc_tags_enable_properties
454 \ifcstok{\taggingparameter\c!method}\v!auto
455 \strc_tags_enable
456 \else
457 \strc_tags_disable
458 \fi
459\to \everyenableelements
460
461\appendtoks
462 \strc_tags_disable_elements
463 \strc_tags_disable_properties
464 \strc_tags_disable
465\to \everydisableelements
466
467
468
469
470
471\appendtoks
472 \ifexporting
473
474 \orelse\ifcstok{\taggingparameter\c!state}\v!start
475 \c_strc_tags_global\conditionaltrue
476 \setsystemmode\s!tagging
477 \expand\everyenableelements
478 \orelse\iflastnamedcs\v!on
479 \setsystemmode\s!tagging
480 \ifconditional\c_strc_tags_global \else
481 \expand\everyenableelements
482 \fi
483 \orelse\iflastnamedcs\v!off
484 \resetsystemmode\s!tagging
485 \ifconditional\c_strc_tags_global \else
486 \expand\everydisableelements
487 \fi
488 \else
489 \c_strc_tags_global\conditionalfalse
490 \resetsystemmode\s!tagging
491 \expand\everydisableelements
492 \fi
493\to \everysetuptagging
494
495\permanent\protected\def\forgettagging
496 {\c_attr_tagged\attributeunsetvalue}
497
498\setuptagging
499 [\c!state=\v!stop,
500 \c!method=\v!auto]
501
502
503
504
505
506
507
508
509
510
511
512\installcorenamespace {paragraph}
513\installcommandhandler \??paragraph {paragraph} \??paragraph
514
515\setupparagraph
516 [\c!color=,
517 \c!style=]
518
519\ifdefined\dotagparagraph \else \aliased\let\dotagparagraph\gobbleoneargument \fi
520
521\permanent\tolerant\protected\def\startparagraph[#S#1]#*[#S#2]
522 {\endgraf
523 \begingroup
524 \ifarguments
525 \lettonothing\currentparagraph
526 \or
527 \ifhastok={#1}
528 \lettonothing\currentparagraph
529 \setupcurrentparagraph[#1]
530 \else
531 \cdef\currentparagraph{#1}
532 \fi
533 \or
534 \cdef\currentparagraph{#1}
535 \setupcurrentparagraph[#2]
536 \fi
537 \useparagraphstyleandcolor\c!style\c!color
538 \usealignparameter\paragraphparameter
539 \usesetupsparameter\paragraphparameter
540 \dostarttagged\t!paragraph\currentparagraph
541 \dotagparagraph{\paragraphparameter\c!align}}
542
543\permanent\protected\def\stopparagraph
544 {\dostoptagged
545 \endgraf
546 \endgroup}
547
548\aliased\let\startpar\startparagraph
549\aliased\let\stoppar \stopparagraph
550
551\def\strc_tags_document_start_indeed
552 {\glet\strc_tags_document_start_indeed\relax
553 \dostarttaggednodetail\t!document
554 \dostarttaggednodetail\t!documentpart}
555
556\def\strc_tags_document_stop_indeed
557 {\glet\strc_tags_document_stop_indeed\relax
558 \dostoptagged
559 \dostoptagged}
560
561\appendtoks
562 \strc_tags_document_start_indeed
563\to \everyenableelements
564
565
566
567
568
569\appendtoks
570 \strc_tags_document_stop_indeed
571\to \everystoptext
572
573
574
575
576
577\aliased\let\doifinelementelse\doifelseinelement
578
579\permanent\protected\def\taggedlabeltexts#1#2#3
580 {\begingroup
581 \dostarttagged\t!label{#1}
582 \labeltexts{#1}
583 {\dostoptagged
584 \dostarttagged\t!number{#2}
585 #3
586 \dostoptagged
587 \dostarttagged\t!label{#1}}
588 \dostoptagged
589 \endgroup}
590
591\permanent\protected\def\namedtaggedlabeltexts#1#2#3#4#5
592 {\begingroup
593 \dostarttagged{#1}{#2}
594 \labeltexts{#2}
595 {\dostoptagged
596 \dostarttagged{#3}{#4}
597 #5
598 \dostoptagged
599 \dostarttagged{#1}{#2}}
600 \dostoptagged
601 \endgroup}
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625\pushoverloadmode
626
627\aliased\let\strc_tagged_saved_bpar\bpar
628\aliased\let\strc_tagged_saved_epar\epar
629
630\enforced\permanent\protected\def\bpar{\dostarttaggednodetail\t!paragraph\strc_tagged_saved_bpar}
631\enforced\permanent\protected\def\epar{\strc_tagged_saved_epar\dostoptagged}
632
633\popoverloadmode
634
635
636
637
638
639\def\strc_tags_horrible_start
640 {\ifconditional\c_strc_tags_enabled
641 \strc_tags_enable_indeed
642 \dostarttaggednodetail\t!document
643 \dostarttaggednodetail\t!documentpart
644 \fi}
645
646\def\strc_tags_horrible_stop
647 {\ifconditional\c_strc_tags_enabled
648 \dostoptagged
649 \dostoptagged
650 \fi}
651
652
653
654
655
656
657
658
659
660
661
662\newboundary\subparagraphboundary
663
664\permanent\protected\def\startsubparagraph
665 {\removeunwantedspaces
666 \ifnum\lastboundary=\subparagraphboundary
667 \unboundary
668 \par
669 \fi
670 \dostarttagged\t!subparagraph\empty
671 \ignorespaces}
672
673\permanent\protected\def\stopsubparagraph
674 {\removeunwantedspaces
675 \dostoptagged
676 \boundary\subparagraphboundary
677 \ignorespaces}
678
679\permanent\protected\def\subparagraph{\stopsubparagraph\startsubparagraph}
680
681\protect
682 |