diff options
| -rw-r--r-- | tex/context/base/core-con.lua | 42 | ||||
| -rw-r--r-- | tex/context/base/meta-tex.lua | 46 | ||||
| -rw-r--r-- | tex/context/base/meta-tex.mkiv | 159 | ||||
| -rw-r--r-- | tex/context/base/mlib-pps.lua | 6 | ||||
| -rw-r--r-- | tex/context/base/strc-ref.mkiv | 278 | 
5 files changed, 271 insertions, 260 deletions
| diff --git a/tex/context/base/core-con.lua b/tex/context/base/core-con.lua index c5d58484c..5b8417d00 100644 --- a/tex/context/base/core-con.lua +++ b/tex/context/base/core-con.lua @@ -701,47 +701,13 @@ end  --     do_alphabetic(n,counters[code] or counters['**'],uppercased)  -- end --- korean: --- --- 하 0xD558 => ㅎ 0x314E --- 파 0xD30C => ㅍ 0x314D --- 타 0xD0C0 => ㅌ 0x314C --- 카 0xCE74 => ㅋ 0x314B --- 차 0xCC28 => ㅊ 0x314A --- 자 0xC790 => ㅈ 0x3148 --- 아 0xC544 => ㅇ 0x3147 --- 사 0xC0AC => ㅅ 0x3145 --- 바 0xBC14 => ㅂ 0x3142 --- 마 0xB9C8 => ㅁ 0x3141 --- 라 0xB77C => ㄹ 0x3139 --- 다 0xB2E4 => ㄷ 0x3137 --- 나 0xB098 => ㄴ 0x3134 --- 가 0xAC20 => ㄱ 0x3131 - ---~ function converters.koreanconsonants(n) ---~     if     n  < 0xAC00 then return n      -- original ---~     elseif n  > 0xD7AF then return n      -- original ---~     elseif n >= 0xD558 then return 0x314E -- 하 => ㅎ ---~     elseif n >= 0xD30C then return 0x314D -- 파 => ㅍ ---~     elseif n >= 0xD0C0 then return 0x314C -- 타 => ㅌ ---~     elseif n >= 0xCE74 then return 0x314B -- 카 => ㅋ ---~     elseif n >= 0xCC28 then return 0x314A -- 차 => ㅊ ---~     elseif n >= 0xC790 then return 0x3148 -- 자 => ㅈ ---~     elseif n >= 0xC544 then return 0x3147 -- 아 => ㅇ ---~     elseif n >= 0xC0AC then return 0x3145 -- 사 => ㅅ ---~     elseif n >= 0xBC14 then return 0x3142 -- 바 => ㅂ ---~     elseif n >= 0xB9C8 then return 0x3141 -- 마 => ㅁ ---~     elseif n >= 0xB77C then return 0x3139 -- 라 => ㄹ ---~     elseif n >= 0xB2E4 then return 0x3137 -- 다 => ㄷ ---~     elseif n >= 0xB098 then return 0x3134 -- 나 => ㄴ ---~     elseif n >= 0xAC20 then return 0x3131 -- 가 => ㄱ ---~     else                    return n      -- can't happen ---~     end ---~ end +-- For the moment here:  languages.firstcharacters = { }  local firstcharacters     = languages.firstcharacters +-- korean: +  function firstcharacters.korean(chr)      local consonant      if     chr  < 0xAC00 then consonant = chr    -- original @@ -759,7 +725,7 @@ function firstcharacters.korean(chr)      elseif chr >= 0xB77C then consonant = 0x3139 -- 라 => ㄹ      elseif chr >= 0xB2E4 then consonant = 0x3137 -- 다 => ㄷ      elseif chr >= 0xB098 then consonant = 0x3134 -- 나 => ㄴ -    elseif chr >= 0xAC00 then consonant = 0x3131 -- 가 => ㄱ +    elseif chr >= 0xAC00 then consonant = 0x3131 -- 가 => ㄱ -- was 0xAC20      else                      consonant = chr    -- can't happen      end   -- print(format("korean: 0x%04X 0x%04X",chr,consonant)) diff --git a/tex/context/base/meta-tex.lua b/tex/context/base/meta-tex.lua index 63028d28d..3cd70024b 100644 --- a/tex/context/base/meta-tex.lua +++ b/tex/context/base/meta-tex.lua @@ -6,25 +6,33 @@ if not modules then modules = { } end modules ['meta-tex'] = {      license   = "see context related readme files"  } -local P, C, lpegmatch = lpeg.P, lpeg.C, lpeg.match +--~ local P, C, lpegmatch = lpeg.P, lpeg.C, lpeg.match -local left     = P("[") -local right    = P("]") -local space    = P(" ") -local argument = left * C((1-right)^1) * right -local pattern  = (argument + space)^0 +-- local left     = P("[") +-- local right    = P("]") +-- local space    = P(" ") +-- local argument = left * C((1-right)^1) * right +-- local pattern  = (argument + space)^0 -function metapost.sometxt(optional,str) -    if optional == "" then -        context.sometxta(str) -    else -        local one, two = lpegmatch(pattern,optional) -        if two then -            context.sometxtc(one,two,str) -        elseif one then -            context.sometxtb(one,str) -        else -            context.sometxta(str) -        end -    end +-- function metapost.sometxt(optional,str) +--     if optional == "" then +--         context.sometxta(str) +--     else +--         local one, two = lpegmatch(pattern,optional) +--         if two then +--             context.sometxtc(one,two,str) +--         elseif one then +--             context.sometxtb(one,str) +--         else +--             context.sometxta(str) +--         end +--     end +-- end + +local P, Cs, lpegmatch = lpeg.P, lpeg.Cs, lpeg.match + +local pattern = Cs((P([[\"]]) + P([["]])/"\\quotedbl " + P(1))^0) + +function metapost.escaped(str) +    context(lpegmatch(pattern,str))  end diff --git a/tex/context/base/meta-tex.mkiv b/tex/context/base/meta-tex.mkiv index a6c785094..2496440c7 100644 --- a/tex/context/base/meta-tex.mkiv +++ b/tex/context/base/meta-tex.mkiv @@ -64,85 +64,82 @@  % \stopMPcode  % a tex one: - -\unexpanded\def\definetextext     [#1]#2{\setvalue{@@st@@#1}{#2}} -           \def\sometxt              #1#{\dosometxt{#1}} -           \def\dosometxt           #1#2{textext.drt("\dodosometxt#1{#2}")} - -%unexpanded\def\dodosometxt             {\doifnextoptionalelse\dododosometxt\relax} -%          \def\dododosometxt       [#1]{\dodododosometxt{#1}} -%          \def\dodododosometxt       #1{\doifnextoptionalelse{\dododododosometxt{#1}}{\getsometxt{#1}}} -%          \def\dododododosometxt #1[#2]{\switchtobodyfont[#2]\getsometxt{#1}} -%          \def\getsometxt          #1#2{\csname @@st@@#1\endcsname{#2}} -% -% or: - -\unexpanded\def\dodosometxt             {\dodoubleempty\dododosometxt} -           \def\dododosometxt           {\ifsecondargument -                                           \expandafter\dododosometxtA -                                         \else\iffirstargument -                                           \expandafter\expandafter\expandafter\dododosometxtB -                                         \else -                                           \expandafter\expandafter\expandafter\dododosometxtC -                                         \fi\fi} -           \def\dododosometxtA[#1][#2]#3{\getsometxt{#1}{\switchtobodyfont[#2]#3}} -           \def\dododosometxtB[#1][#2]#3{\getsometxt{#1}{#3}} -           \def\dododosometxtC[#1][#2]#3{#3} -           \def\getsometxt          #1#2{\csname @@st@@#1\endcsname{#2}} - - -% a variant ... if m likes it: -% -%  \unexpanded\def\definetextext[#1]% -%    {\def\currenttextext{#1}% -%     \dosingleempty\dodefinetextext} -% -%  \def\dodefinetextext -%    {\iffirstargument -%       \expandafter\dodefinetextextone -%     \else -%       \expandafter\dodefinetextextzero -%     \fi} -% -%  \def\dodefinetextextone     {\setvalue{@@st@@one\currenttextext}} -%  \def\dodefinetextextzero[#1]{\setvalue{@@st@@zero\currenttextext}} -% -%  \def\sometxt#1#% -%    {\dosometxt{#1}} -% -%  \def\dosometxt#1#2% -%    {textext.drt("\dodosometxt#1{#2}")} -% -%  \unexpanded\def\dodosometxt -%    {\dosingleempty\dododosometxt} -% -%  \def\dododosometxt -%    {\iffirstargument -%       \expandafter\dosometxtsome -%     \else -%       \expandafter\dosometxtzero -%     \fi} -% -%  \def\dosometxtsome[#1]% -%    {\def\currenttextext{#1}% -%     \csname @@st@@% -%       \ifcsname  @@st@@one#1\endcsname  one\else -%       \ifcsname @@st@@zero#1\endcsname zero\else -%                                        none\fi\fi -%     \endcsname} -% -%  \def\dosometxtzero[#1]% -%    {} -% -%  \def\@@st@@one  {\dosingleempty\do@@st@@one} -%  \def\do@@st@@one{\csname  @@st@@one\currenttextext\endcsname} -%  \def\@@st@@zero {\csname @@st@@zero\currenttextext\endcsname} -%  \def\@@st@@none {} -% -%  \protect -% -%  \definetextext[framed][#1]#2{\framed[width=4cm]{\switchtobodyfont[#1]#2}} -%  \definetextext[simple]{\framed[width=8cm]} +% +% \unexpanded\def\definetextext     [#1]#2{\setvalue{@@st@@#1}{#2}} +%            \def\sometxt              #1#{\dosometxt{#1}} +%            \def\dosometxt           #1#2{textext.drt("\dodosometxt#1{#2}")} +% +% \unexpanded\def\dodosometxt             {\doifnextoptionalelse\dododosometxt\relax} +%           \def\dododosometxt       [#1]{\dodododosometxt{#1}} +%           \def\dodododosometxt       #1{\doifnextoptionalelse{\dododododosometxt{#1}}{\getsometxt{#1}}} +%           \def\dododododosometxt #1[#2]{\switchtobodyfont[#2]\getsometxt{#1}} +%           \def\getsometxt          #1#2{\csname @@st@@#1\endcsname{#2}} +% +%  or: +% +% \unexpanded\def\dodosometxt             {\dodoubleempty\dododosometxt} +%            \def\dododosometxt           {\ifsecondargument +%                                            \expandafter\dododosometxtA +%                                          \else\iffirstargument +%                                            \expandafter\expandafter\expandafter\dododosometxtB +%                                          \else +%                                            \expandafter\expandafter\expandafter\dododosometxtC +%                                          \fi\fi} +%            \def\dododosometxtA[#1][#2]#3{\getsometxt{#1}{\switchtobodyfont[#2]#3}} +%            \def\dododosometxtB[#1][#2]#3{\getsometxt{#1}{#3}} +%            \def\dododosometxtC[#1][#2]#3{#3} +%            \def\getsometxt          #1#2{\csname @@st@@#1\endcsname{#2}} +% +% a nicer variant: + +\unexpanded\def\definetextext[#1]% +  {\def\currenttextext{#1}% +   \dosingleempty\dodefinetextext} + +\def\dodefinetextext +  {\iffirstargument +     \expandafter\dodefinetextextone +   \else +     \expandafter\dodefinetextextzero +   \fi} + +\def\dodefinetextextone     {\setvalue{@@st@@one\currenttextext}} +\def\dodefinetextextzero[#1]{\setvalue{@@st@@zero\currenttextext}} + +\def\sometxt#1#% +  {\dosometxt{#1}} + +\def\dosometxt#1#2% we need to capture embedded quotes (a bit messy as later on textext is filtered +  {textext.drt("\dodosometxt#1{\ctxlua{metapost.escaped(\!!bs#2\!!es)}}")} + +\unexpanded\def\dodosometxt +  {\dosingleempty\dododosometxt} + +\def\dododosometxt +  {\iffirstargument +     \expandafter\dosometxtsome +   \else +     \expandafter\dosometxtzero +   \fi} + +\def\dosometxtsome[#1]% +  {\def\currenttextext{#1}% +   \csname @@st@@% +     \ifcsname  @@st@@one#1\endcsname  one\else +     \ifcsname @@st@@zero#1\endcsname zero\else +                                      none\fi\fi +   \endcsname} + +\def\dosometxtzero[#1]% +  {} + +\def\@@st@@one  {\dosingleempty\do@@st@@one} +\def\do@@st@@one{\csname  @@st@@one\currenttextext\endcsname} +\def\@@st@@zero {\csname @@st@@zero\currenttextext\endcsname} +\def\@@st@@none {} + +% \definetextext[framed][#1]#2{\framed[width=4cm]{\switchtobodyfont[#1]#2}} +% \definetextext[simple]{\framed[width=8cm]}  %  %  \starttext  % @@ -150,11 +147,11 @@  %      draw \sometxt{This is for} rotated 45 ;  %      draw \sometxt [framed] [ss,16pt] {Mojca's};  %      draw \sometxt[framed]{eyes only!} rotated -45 ; -%      draw \sometxt[simple]{Indeed!} rotated 180 ; +%      draw \sometxt[simple]{Quotes "indeed" work!} rotated 180 ;  %  \stopMPcode  %  % \stoptext - +%  % a lua one:  %  % \unexpanded\def\definetextext[#1]#2{\setvalue{@@st@@#1}{#2}} diff --git a/tex/context/base/mlib-pps.lua b/tex/context/base/mlib-pps.lua index 3eb861342..947c19af4 100644 --- a/tex/context/base/mlib-pps.lua +++ b/tex/context/base/mlib-pps.lua @@ -644,7 +644,7 @@ local function force()      forced = true  end -local texmess   = (dquote/ditto + (1 - etex))^0 +local texmess = (dquote/ditto + (1 - etex))^0  local function ignore(s)      report_metapost("ignoring verbatim tex: %s",s) @@ -661,6 +661,10 @@ end  -- currently a a one-liner produces less code +-- textext.*(".*") can have "'s but tricky parsing as we can have concatenated strings +-- so this is something for a boring plain or train trip and we might assume proper mp +-- input anyway +  local parser = Cs((      (ttex + gtex)/register    + (btex * spacing * Cs(texmess) * etex)/convert diff --git a/tex/context/base/strc-ref.mkiv b/tex/context/base/strc-ref.mkiv index b91940523..22267ef9b 100644 --- a/tex/context/base/strc-ref.mkiv +++ b/tex/context/base/strc-ref.mkiv @@ -640,37 +640,55 @@  \newconstant\autocrossfilereferences  % not yet supported in mkiv  \newconstant\referencefilecaseswap    % not yet supported in mkiv +\newtoks \everysetupreferencing +  \unexpanded\def\setupreferencing    {\dosingleargument\dosetupreferencing}  \def\dosetupreferencing[#1]% -  {\getparameters -     [\??rf] -     [\c!prefix=\s!unknown,#1]% +  {\getparameters[\??rf][\c!prefix=\s!unknown,#1]% +   \the\everysetupreferencing} + +\appendtoks     \processaction       [\@@rfstate]       [  \v!stop=>\referencingfalse,         \v!start=>\referencingtrue]% -   \processaction -     [\@@rfinteraction] -     [   \v!all=>\let\dowantedreference\docompletereference, -       \v!label=>\let\dowantedreference\dolabelonlyreference, -        \v!text=>\let\dowantedreference\dotextonlyreference, -      \v!symbol=>\let\dowantedreference\dosymbolreference]% +\to \everysetupreferencing + +% \newconstant \referencecontentmode +% +% \appendtoks +%     \processaction +%       [\@@rfinteraction] +%       [   \v!all=>\referencecontentmode\zerocount, +%         \v!label=>\referencecontentmode\plusone, +%          \v!text=>\referencecontentmode\plustwo, +%        \v!symbol=>\referencecontentmode\plusthree]% +% \to \everysetupreferencing + +\appendtoks     \autocrossfilereferences\zerocount     \processaction -     [\@@rfautofile] +     [\@@rfautofile] % not yet in mkiv       [  \v!yes=>\autocrossfilereferences\plusone,         \v!page=>\autocrossfilereferences\plustwo]% -   \referencefilecaseswap\zerocount -   \processaction[\@@rfconvertfile] -     [  \v!yes=>\referencefilecaseswap\plusone, -        \v!big=>\referencefilecaseswap\plusone, -      \v!small=>\referencefilecaseswap\plustwo]% +\to \everysetupreferencing + +\appendtoks +    \referencefilecaseswap\zerocount +    \processaction[\@@rfconvertfile] % not yet in mkiv +      [  \v!yes=>\referencefilecaseswap\plusone, +         \v!big=>\referencefilecaseswap\plusone, +       \v!small=>\referencefilecaseswap\plustwo]% +\to \everysetupreferencing + +\appendtoks     \setupreferenceprefix[\@@rfprefix]%     \doifelse\@@rfglobal\v!yes -     {\settrue \autoglobalfilereferences} -     {\setfalse\autoglobalfilereferences}} +     {\settrue \autoglobalfilereferences}% +     {\setfalse\autoglobalfilereferences}% +\to \everysetupreferencing  % \appendtoks\ctxlua{structures.references.export("whatever")}\to\everystoptext  % \starttext @@ -885,95 +903,97 @@             \v!next%           \fi]}}} -\def\dosymbolreference#1#2[#3]% -  {\removeunwantedspaces -   \goto{\referencesymbol}[#3]} - -\def\symbolreference[#1]% -  {\removeunwantedspaces -   \goto{\referencesymbol}[#1]} - -  %D The other alternatives just conform their names: only the  %D label, only the text, or the label and the text. -\def\dounknownreference#1#2[#3]% -  {\dotextprefix{#2}{\leftofreference\dummyreference\rightofreference}} - -\def\docompletereference #1#2[#3]{\goto{\dotextprefix{#2}#1}[#3]} -\def\dolabelonlyreference#1#2[#3]{\goto{\dotextprefix{#2}}[#3]} -\def\dotextonlyreference #1#2[#3]{\dotextprefix{#2}\goto{#1}[#3]} - -\let\dowantedreference\docompletereference - -\unexpanded\def\dospecialin{\dontleavehmode\begingroup\doinatreference\currentreferencedefault} % ends in \doinatreference -\unexpanded\def\dospecialat{\dontleavehmode\begingroup\doinatreference\currentreferencepage   } % ends in \doinatreference - -\newtoks\leftreferencetoks   \newtoks\defaultleftreferencetoks   \glet\leftofreference \relax -\newtoks\rightreferencetoks  \newtoks\defaultrightreferencetoks  \glet\rightofreference\relax - -\def\doinatreference#1% -  {\let\currentreferencecontent#1% -   \futurelet\next\doinatreferenceone} - -\def\doinatreferenceone -  {\ifx\next\bgroup -     \afterassignment\doinatreferenceonetwo -     \expandafter\leftreferencetoks -   \else -     \leftreferencetoks\emptytoks -     \expandafter\dodoinatreferencenone -   \fi} - -\def\doinatreferenceonetwo -  {\futurelet\next\doinatreferencetwo} - -\def\doinatreferencetwo -  {\ifx\next\bgroup -     \afterassignment\dodoinatreferenceboth -     \expandafter\rightreferencetoks -   \else -     \rightreferencetoks\emptytoks -     \expandafter\dodoinatreferenceleft -   \fi} - -\def\dodoinatreferencenone -  {\dodoinatreferenceindeed -     {\the\defaultleftreferencetoks\leftofreference\currentreferencecontent\rightofreference} -     {\the\defaultrightreferencetoks}} - -\def\dodoinatreferenceleft -  {\dodoinatreferenceindeed -     {\leftofreference\currentreferencecontent\rightofreference} -     {\the\leftreferencetoks}} - -\def\dodoinatreferenceboth -  {\doifnothing{\the\leftreferencetoks} -     {\leftreferencetoks\defaultleftreferencetoks}% -   \dodoinatreferenceindeed -     {\leftofreference\currentreferencecontent\the\rightreferencetoks\rightofreference} -     {\the\leftreferencetoks}} - -% lefttext left <ref> right righttext +% \dounknownreference -> \dummyreference + +\def\symbolreference[#1]% for old times sake +  {\goto{\referencesymbol}[#1]} + +% \referencecontentmode 0=all 1=label 2=text 3=symbol + +\newtoks\leftreferencetoks +\newtoks\rightreferencetoks +\newtoks\defaultleftreferencetoks +\newtoks\defaultrightreferencetoks + +\def\leftofreferencecontent {\nobreakspace} % we cannot do \definereferenceformat[at] .. so we need this +\let\rightofreferencecontent \empty +\let\leftofreference         \empty +\let\rightofreference        \empty + +\setvalue{\??rf\c!interaction\v!all}% +  {\leftofreference +   \the\leftreferencetoks +   \leftofreferencecontent +   \currentreferencecontent +   \rightofreferencecontent +   \the\rightreferencetoks +   \rightofreference} + +\setvalue{\??rf\c!interaction\v!label}% +  {\leftofreference +   \the\leftreferencetoks +   \the\rightreferencetoks +   \rightofreference} + +\setvalue{\??rf\c!interaction\v!text}% +  {\leftofreference +   \currentreferencecontent +   \rightofreference} + +\setvalue{\??rf\c!interaction\v!symbol}% +  {\referencesymbol} + +\def\referencesequence +  {\csname \??rf\c!interaction +     \ifcsname\??rf\c!interaction\@@rfinteraction\endcsname +       \@@rfinteraction +     \else +       \v!all +     \fi +   \endcsname}  \newtoks\everyresetinatreference -\def\dodoinatreferenceindeed#1#2#3[#4]% #3 gobbles space -  {%\dontleavehmode\begingroup % already done -   \postponenotes -   \doifreferencefoundelse{#4} -     {\doifelsenothing{#1}\dosymbolreference\dowantedreference{#1}{#2}[#4]}% -     {\dounknownreference{#1}{#2}[#4]}% -   \the\everyresetinatreference -   \endgroup} - -\let\dosymbolreference\dowantedreference -  \appendtoks      \glet\leftofreference \relax      \glet\rightofreference\relax  \to \everyresetinatreference +\def\dostartgotoreference +  {\dontleavehmode +   \begingroup} + +\def\dostopgotoreference +  {\the\everyresetinatreference +   \endgroup} + +\def\dopickupgotoreference +  {\dodoublegroupempty\dodopickupgotoreference} + +\def\dodopickupgotoreference#1#2#3[#4]% #3 gobbles spaces (really needed) +  {\leftreferencetoks +     \iffirstargument +       {#1}% +     \else +       \defaultleftreferencetoks +       \let\leftofreferencecontent\empty +     \fi +   \rightreferencetoks +     \ifsecondargument +       {#2}% +     \else +       \defaultrightreferencetoks +       \let\rightofreferencecontent\empty +     \fi +   \goto{\referencesequence}[#4]% +   \dostopgotoreference} + +\unexpanded\def\dospecialin{\dostartgotoreference\let\currentreferencecontent\currentreferencedefault\dopickupgotoreference} +\unexpanded\def\dospecialat{\dostartgotoreference\let\currentreferencecontent\currentreferencepage   \dopickupgotoreference} +  %D \macros  %D   {definereferenceformat}  %D @@ -1034,8 +1054,8 @@       \setuvalue{#1}{\doexecutereferenceformat{#1}}%     \fi} -\def\doexecutereferenceformat#1% -  {\dontleavehmode\begingroup % ends in \doinatreference +\def\doexecutereferenceformat#1% quite slow due to all assignments but we will speed it up +  {\dostartgotoreference     \edef\currentreferenceformat{#1}%     \gdef\leftofreference {\referenceformatparameter\c!left }%     \gdef\rightofreference{\referenceformatparameter\c!right}% @@ -1049,12 +1069,28 @@        \let\@@iacontrastcolor\empty        \let\@@iacolor        \empty}%     % -   \doifsomethingelse{\referenceformatparameter\c!label} -     {\defaultleftreferencetoks {\leftlabeltext {\referenceformatparameter\c!label}}% -      \defaultrightreferencetoks{\rightlabeltext{\referenceformatparameter\c!label}}}% -     {\defaultleftreferencetoks {\referenceformatparameter\c!text}% -      \defaultrightreferencetoks\emptytoks}% -   \doinatreference\currentreferencedefault} % we can make \currentreferencedefault configurable +   \edef\currentreferenceformatlabel{\referenceformatparameter\c!label}% +   \ifx\currentreferenceformatlabel\autoreferencelabeltextflag +      \edef\currentreferenceformatlabel{\autoreferencelabeltext}% +   \fi +   \ifx\currentreferenceformatlabel\empty +     \defaultleftreferencetoks {\referenceformatparameter\c!text}% +     \defaultrightreferencetoks\emptytoks +   \else +     \defaultleftreferencetoks {\leftlabeltext \currentreferenceformatlabel}% +     \defaultrightreferencetoks{\rightlabeltext\currentreferenceformatlabel}% +   \fi +   \doifelse{\referenceformatparameter\c!type}\v!page +     {\let\currentreferencecontent\currentreferencepage} +     {\let\currentreferencecontent\currentreferencedefault}% +   \let\leftofreferencecontent \empty +   \let\rightofreferencecontent\empty +   \dopickupgotoreference} + +\def\autoreferencelabeltextflag{*} % a proper key like 'auto' or 'name' can clash with a label key + +\unexpanded\def\autoreferencelabeltext +  {\ctxlua{structures.references.getcurrentmetadata("name")}}  % \starttext  %     \definereferenceformat[inxx]  [left=(,right=),text=txt] @@ -1111,13 +1147,13 @@    {\dontleavehmode     \begingroup     \attribute\referenceattribute\attributeunsetvalue -\global\lastsavedreferenceattribute\attributeunsetvalue +   \global\lastsavedreferenceattribute\attributeunsetvalue     \iflocation       \dostarttagged\t!link\empty % not here       \ctxlua{structures.references.inject("\referenceprefix","#2",\number\ht\strutbox,\number\dp\strutbox,\extrareferencearguments)}%       \setlocationattributes\??ia       \setstrut % can be option -\global\lastsavedreferenceattribute\lastreferenceattribute +     \global\lastsavedreferenceattribute\lastreferenceattribute       \attribute\referenceattribute\lastreferenceattribute       #1%       \dostoptagged @@ -1129,7 +1165,7 @@  \def\dodirectgotohtdp#1[#2]% no test for valid references    {\dontleavehmode     \begingroup -\global\lastsavedreferenceattribute\attributeunsetvalue +   \global\lastsavedreferenceattribute\attributeunsetvalue     \attribute\referenceattribute\attributeunsetvalue     \iflocation       \dostarttagged\t!link\empty @@ -1137,7 +1173,7 @@       \dostoptagged       \setlocationattributes\??ia       \attribute\referenceattribute\lastreferenceattribute -\global\lastsavedreferenceattribute\lastreferenceattribute +     \global\lastsavedreferenceattribute\lastreferenceattribute     \fi     #1%     \endgroup} @@ -1146,7 +1182,7 @@    {\dontleavehmode     \begingroup    %\setbox\referencebox\hbox\bgroup % experiment, might change again to non \par support -\global\lastsavedreferenceattribute\attributeunsetvalue +   \global\lastsavedreferenceattribute\attributeunsetvalue     \attribute\referenceattribute\attributeunsetvalue     \iflocation       \ctxlua{structures.references.doifelse("\referenceprefix","#3",\extrareferencearguments)}% @@ -1156,7 +1192,7 @@          \dostoptagged          \setlocationattributes\??ia          \setstrut % can be option -\global\lastsavedreferenceattribute\lastreferenceattribute +        \global\lastsavedreferenceattribute\lastreferenceattribute          \attribute\referenceattribute\lastreferenceattribute}%         {}%     \fi @@ -1167,7 +1203,7 @@  \def\dogotohtdp#1#2[#3]% #2 gobbles spaces after #1 so that \goto{xx} [yy] works ok    {\dontleavehmode     \begingroup -\global\lastsavedreferenceattribute\attributeunsetvalue +   \global\lastsavedreferenceattribute\attributeunsetvalue     \attribute\referenceattribute\attributeunsetvalue     \iflocation       \ctxlua{structures.references.doifelse("\referenceprefix","#3",\extrareferencearguments)}% @@ -1176,7 +1212,7 @@          \ctxlua{structures.references.injectcurrentset(\number\dimexpr\@@iaheight\relax,\number\dimexpr\@@iadepth\relax)}%          \dostoptagged          \setlocationattributes\??ia -\global\lastsavedreferenceattribute\lastreferenceattribute +        \global\lastsavedreferenceattribute\lastreferenceattribute          \attribute\referenceattribute\lastreferenceattribute}%         {}%     \fi @@ -1186,14 +1222,14 @@  \unexpanded\def\directgotobox#1[#2]% no test for valid references    {\dontleavehmode     \begingroup -\global\lastsavedreferenceattribute\attributeunsetvalue +   \global\lastsavedreferenceattribute\attributeunsetvalue     \attribute\referenceattribute\attributeunsetvalue     \iflocation       \dostarttagged\t!link\empty       \ctxlua{structures.references.inject("\referenceprefix","#2",nil,nil,\extrareferencearguments)}%       \dostoptagged       \setlocationattributes\??ia -\global\lastsavedreferenceattribute\lastreferenceattribute +     \global\lastsavedreferenceattribute\lastreferenceattribute       \hbox attr \referenceattribute \lastreferenceattribute {#1}%     \else       #1% @@ -1203,14 +1239,14 @@  \unexpanded\def\directgotospecbox#1#2[#3]% no test for valid references    {\dontleavehmode     \begingroup -\global\lastsavedreferenceattribute\attributeunsetvalue +   \global\lastsavedreferenceattribute\attributeunsetvalue     \attribute\referenceattribute\attributeunsetvalue     \iflocation       \dostarttagged\t!link\empty       \ctxlua{structures.references.inject("\referenceprefix","#3",nil,nil,\extrareferencearguments)}%       \dostoptagged       \setlocationcolorspec{#1}% no consequence for strut -\global\lastsavedreferenceattribute\lastreferenceattribute +     \global\lastsavedreferenceattribute\lastreferenceattribute       \hbox attr \referenceattribute \lastreferenceattribute {#2}%     \else       #2% @@ -1220,13 +1256,13 @@  \unexpanded\def\directgotodumbbox#1[#2]% no test for valid references    {\dontleavehmode     \begingroup -\global\lastsavedreferenceattribute\attributeunsetvalue +   \global\lastsavedreferenceattribute\attributeunsetvalue     \attribute\referenceattribute\attributeunsetvalue     \iflocation       \dostarttagged\t!link\empty       \ctxlua{structures.references.inject("\referenceprefix","#2",nil,nil,\extrareferencearguments)}%       \dostoptagged -\global\lastsavedreferenceattribute\lastreferenceattribute +     \global\lastsavedreferenceattribute\lastreferenceattribute       \hbox attr \referenceattribute \lastreferenceattribute {#1}%     \else       #1% @@ -1236,7 +1272,7 @@  \unexpanded\def\gotobox#1[#2]% no test for valid references    {\dontleavehmode     \begingroup -\global\lastsavedreferenceattribute\attributeunsetvalue +   \global\lastsavedreferenceattribute\attributeunsetvalue     \attribute\referenceattribute\attributeunsetvalue     \iflocation       \ctxlua{structures.references.doifelse("\referenceprefix","#2",\extrareferencearguments)}% @@ -1245,7 +1281,7 @@          \ctxlua{structures.references.injectcurrentset(nil,nil)}%          \dostoptagged          \setlocationattributes\??ia -\global\lastsavedreferenceattribute\lastreferenceattribute +        \global\lastsavedreferenceattribute\lastreferenceattribute          \hbox attr \referenceattribute \lastreferenceattribute {#1}}%         {}%     \else @@ -1256,12 +1292,12 @@  \unexpanded\def\gotowdhtbox#1#2[#3]% fast variant for overlays    {\dontleavehmode     \begingroup -\global\lastsavedreferenceattribute\attributeunsetvalue +   \global\lastsavedreferenceattribute\attributeunsetvalue     \attribute\referenceattribute\attributeunsetvalue     \ctxlua{structures.references.doifelse("\referenceprefix","#3",\extrareferencearguments)}%       {\ctxlua{structures.references.injectcurrentset(nil,nil)}%        \setbox\scratchbox\emptyhbox\wd\scratchbox#1\ht\scratchbox#2% -\global\lastsavedreferenceattribute\lastreferenceattribute +      \global\lastsavedreferenceattribute\lastreferenceattribute        \hbox attr \referenceattribute \lastreferenceattribute {\box\scratchbox}}%       {}%     \endgroup} | 
