%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!section {section} % Sect \def\t!sectiontitle {sectiontitle} % H \def\t!sectionnumber {sectionnumber} % H \def\t!sectioncontent {sectioncontent} % 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!descriptionsymbol {descriptionsymbol} % Span \def\t!verbatimblock {verbatimblock} % Code \def\t!verbatimlines {verbatimlines} % Code \def\t!verbatimline {verbatimline} % Code \def\t!verbatim {verbatim} % Code \def\t!sorting {sorting} % Span \def\t!synonym {synonym} % Span \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!registerpagerange {registerpagerange} % Span \def\t!table {table} % Table \def\t!tablerow {tablerow} % TR \def\t!tablecell {tablecell} % TD \def\t!tabulate {tabulate} % Table \def\t!tabulaterow {tabulaterow} % TR \def\t!tabulatecell {tabulatecell} % 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 \def\t!margintext {margintext} % Span \def\t!margintextblock {margintextblock} % Div % \setuptaglabeltext % [en] % [\t!document=document] % the real code \definesystemattribute[tagged][public] \definesystemattribute[image] [public] \def\setelementbackendtag{\dodoubleargument\dosetelementbackendtag} \def\setelementnature {\dodoubleargument\dosetelementnature} \def\dosetelementbackendtag[#1][#2]{\ctxlua{structures.tags.settagproperty("#1","backend","#2")}} \def\dosetelementnature [#1][#2]{\ctxlua{structures.tags.settagproperty("#1","nature", "#2")}} % todo: indirect macro for trialtypesetting \unexpanded\def\dostartelement{\iftrialtypesetting\expandafter\renostartelement\else\expandafter\redostartelement\fi} \unexpanded\def\dostopelement {\iftrialtypesetting\expandafter\nonostopelement \else\expandafter\dodostopelement \fi} \unexpanded\def\redostartelement{\dodoubleempty\dodostartelement} \unexpanded\def\renostartelement{\dodoubleempty\nonostartelement} \unexpanded\def\dodostartelement[#1][#2]% {\ctxlua{structures.tags.start("#1",{ label = "\dogetupsometaglabeltext{#1}", userdata = \!!bs#2\!!es, })}} \unexpanded\def\dodostopelement {\ctxlua{structures.tags.stop()}} \unexpanded\def\nonostartelement[#1][#2]{} \unexpanded\def\nonostopelement {} % beware: making this one unexpanded spoils tables (noalign problem) \def\dodostarttagged{\iftrialtypesetting\expandafter\nododostarttagged\else\expandafter\dododostarttagged\fi} \def\dodostoptagged {\iftrialtypesetting\expandafter\nododostoptagged \else\expandafter\dododostoptagged \fi} \def\dododostarttagged#1#2% {\ctxlua{structures.tags.start("#1",{ label = "\dogetupsometaglabeltext{#1}", detail = "#2", })}} \def\dododostoptagged {\ctxlua{structures.tags.stop()}} \def\nododostarttagged#1#2{} \def\nododostoptagged {} \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\renostartelement \let\stopelement \nonostopelement} \def\doenabletagged {\let\dostarttagged\dodostarttagged \let\dostoptagged \dodostoptagged } \def\dodisabletagged {\let\dostarttagged\nododostarttagged \let\dostoptagged \nododostoptagged } \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% {\ctxcommand{testcase(structures.atlocation("#1"))}} \protect