summaryrefslogtreecommitdiff
path: root/tex/context/base/strc-tag.mkiv
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/strc-tag.mkiv')
-rw-r--r--tex/context/base/strc-tag.mkiv192
1 files changed, 192 insertions, 0 deletions
diff --git a/tex/context/base/strc-tag.mkiv b/tex/context/base/strc-tag.mkiv
new file mode 100644
index 000000000..53323050a
--- /dev/null
+++ b/tex/context/base/strc-tag.mkiv
@@ -0,0 +1,192 @@
+%D \module
+%D [ file=strc-tag,
+%D version=2010.07.16,
+%D title=\CONTEXT\ Structure Macros,
+%D subtitle=Tags,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright=\PRAGMA]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% key/values and other names might change (and probably will)
+
+\writestatus{loading}{ConTeXt Structure Macros / Tags}
+
+\registerctxluafile{strc-tag}{1.001}
+
+\unprotect
+
+% labels: temporary here
+
+\def\t!document {document} % Div
+
+\def\t!division {division} % Div
+\def\t!paragraph {paragraph} % P
+\def\t!construct {construct} % Span
+
+\def\t!structure {structure} % Sect
+\def\t!structuretitle {structuretitle} % H
+\def\t!structurenumber {structurenumber} % H
+\def\t!structurecontent {structurecontent} % Div
+
+\def\t!itemgroup {itemgroup} % L
+\def\t!item {item} % Li
+\def\t!itemtag {itemtag} % Lbl
+\def\t!itemcontent {itemcontent} % LBody
+
+\def\t!description {description} % Li
+\def\t!descriptiontag {descriptiontag} % Lbl
+\def\t!descriptioncontent{descriptioncontent} % LBody
+
+\def\t!verbatimblock {verbatimblock} % Code
+\def\t!verbatim {verbatim} % Code
+
+\def\t!register {register} % Div
+\def\t!registersection {registersection} % Div
+\def\t!registertag {registertag} % Span
+\def\t!registerentries {registerentries} % Div
+\def\t!registerentry {registerentry} % Span
+\def\t!registersee {registersee} % Span
+\def\t!registerpages {registerpages} % Span
+\def\t!registerpage {registerpage} % Span
+
+\def\t!table {table} % Table
+\def\t!tablerow {tr} % TR
+\def\t!tablecell {td} % TD
+\def\t!tabulate {tabulate} % Table
+\def\t!tabulaterow {row} % TR
+\def\t!tabulatecell {cell} % TD
+
+\def\t!list {list} % TOC
+\def\t!listitem {listitem} % TOCI
+\def\t!listtag {listtag} % Lbl
+\def\t!listcontent {listcontent} % P
+\def\t!listdata {listdata} % P
+\def\t!listpage {listpage} % Reference
+
+\def\t!delimitedblock {delimited} % BlockQuote
+\def\t!delimited {delimited} % Quote
+\def\t!subsentence {subsentence} % Span
+
+\def\t!float {float} % Div
+\def\t!floatcaption {floatcaption} % Caption
+\def\t!floattag {floattag} % Span
+\def\t!floattext {floattext} % Span
+\def\t!floatcontent {floatcontent} % P
+
+\def\t!image {image} % P
+
+\def\t!mpgraphic {mpgraphic} % P
+
+\def\t!formulaset {formulaset} % Div
+\def\t!formula {formula} % Div
+\def\t!formulatag {formulatag} % Span
+\def\t!formulacontent {formulacontent} % P
+\def\t!subformula {subformula} % Div
+
+\def\t!link {link} % Link
+
+% \setuptaglabeltext
+% [en]
+% [\t!document=document]
+
+% the real code
+
+\definesystemattribute[tagged] \chardef\taggedattribute \dogetattributeid{tagged}
+\definesystemattribute[image] \chardef\imageattribute \dogetattributeid{image}
+
+% \def\mapelementtobackendtag {\dodoubleargument\domapelementtobackendtag}
+% \def\domapelementtobackendtag[#1][#2]{\ctxlua{backends.codeinjections.maptag("#1","#2")}}
+
+% todo: indirect macro for trialtypesetting
+
+\unexpanded\def\dostartelement{\iftrialtypesetting\expandafter\noostartelement\else\expandafter\dodostartelement\fi}
+\unexpanded\def\dostopelement {\iftrialtypesetting \else\expandafter\dodostopelement \fi}
+
+\unexpanded\def\dodostartelement[#1]{\ctxlua{structure.tags.start("#1","\dogetupsometaglabeltext{#1}")}}
+\unexpanded\def\dodostopelement {\ctxlua{structure.tags.stop()}}
+
+\unexpanded\def\nostartelement[#1]{}
+\unexpanded\def\nostopelement {}
+
+% beware: making this one unexpanded spoils tables (noalign problem)
+
+\def\dodostarttagged{\iftrialtypesetting\expandafter\nodostarttagged\else\expandafter\dododostarttagged\fi}
+\def\dodostoptagged {\iftrialtypesetting \else\expandafter\dododostoptagged \fi}
+
+\def\dododostarttagged#1#2{\ctxlua{structure.tags.start("#1","\dogetupsometaglabeltext{#1}","#2")}}
+\def\dododostoptagged {\ctxlua{structure.tags.stop()}}
+
+\def\nodostarttagged#1#2{}
+\def\nodostoptagged {}
+
+\newtoks\everysetupstructure
+
+\def\setupstructure[#1]%
+ {\getparameters[\??el][#1]%
+ \the\everysetupstructure}
+
+\def\doenableelements
+ {\setuplanguage[\s!default][\s!righthyphenchar="AD]% for the moment here
+ \let\startelement\dostartelement
+ \let\stopelement \dostopelement}
+
+\def\dodisableelements
+ {\let\startelement\nostartelement
+ \let\stopelement \nostopelement}
+
+\def\doenabletagged
+ {\let\dostarttagged\dodostarttagged
+ \let\dostoptagged \dodostoptagged }
+
+\def\dodisabletagged
+ {\let\dostarttagged\nodostarttagged
+ \let\dostoptagged \nodostoptagged }
+
+\newtoks\everyenableelements
+\newtoks\everydisableelements
+
+\appendtoks
+ \doenableelements
+ \doifelse\@@elmethod\v!auto\doenabletagged\dodisabletagged
+\to \everyenableelements
+
+\appendtoks
+ \dodisableelements
+ \dodisabletagged
+\to \everydisableelements
+
+\appendtoks
+ \doifelse\@@elstate\v!start{\the\everyenableelements}{\the\everydisableelements}%
+\to \everysetupstructure
+
+\setupstructure
+ [\c!state=\v!stop,
+ \c!method=\v!auto]
+
+\unexpanded\def\startparagraph
+ {\dostarttagged\t!paragraph\empty}
+
+\unexpanded\def\stopparagraph
+ {\dostoptagged
+ \par}
+
+\appendtoks
+ \dostarttagged\t!document\empty
+\to \everystarttext
+
+\appendtoks
+ \dostoptagged
+\to \everystoptext
+
+% \doifinelementelse{structure:section} {yes} {no}
+% \doifinelementelse{structure:chapter} {yes} {no}
+% \doifinelementelse{division:*-structure:chapter} {yes} {no}
+
+\def\doifinelementelse#1%
+ {\ctxlua{commands.testcase(structure.atlocation("#1"))}}
+
+\protect