diff options
Diffstat (limited to 'Master/texmf-dist/tex/context/base/mkiv/strc-reg.mkiv')
-rw-r--r-- | Master/texmf-dist/tex/context/base/mkiv/strc-reg.mkiv | 232 |
1 files changed, 86 insertions, 146 deletions
diff --git a/Master/texmf-dist/tex/context/base/mkiv/strc-reg.mkiv b/Master/texmf-dist/tex/context/base/mkiv/strc-reg.mkiv index 559e1bd4231..04fdef9adc2 100644 --- a/Master/texmf-dist/tex/context/base/mkiv/strc-reg.mkiv +++ b/Master/texmf-dist/tex/context/base/mkiv/strc-reg.mkiv @@ -83,7 +83,6 @@ \c!pagestyle=\v!slanted, \c!indicator=\v!yes, \c!criterium=\v!all, - \c!check=\v!yes, % check for weird see usage %\c!command=, \c!referencing=\v!on, \c!location=\v!middle, @@ -160,8 +159,8 @@ %D Registering: -\glet\currentregistername \empty -\glet\currentregisternumber\!!zerocount +\global\let\currentregistername \empty +\global\let\currentregisternumber\!!zerocount \def\strc_registers_register_page_entry {\iftrialtypesetting @@ -176,33 +175,33 @@ \xdef\currentregisterentriesb{\registerparameter{\c!entries:2}}% \xdef\currentregisterentriesc{\registerparameter{\c!entries:3}}% \xmlstopraw - \glet\currentregistercoding\s!xml} + \globallet\currentregistercoding\s!xml} \def\strc_registers_register_page_expand_yes_entries {\xdef\currentregisterentriesa{\registerparameter{\c!entries:1}}% \xdef\currentregisterentriesb{\registerparameter{\c!entries:2}}% \xdef\currentregisterentriesc{\registerparameter{\c!entries:3}}% - \glet\currentregistercoding\s!tex} + \globallet\currentregistercoding\s!tex} \def\strc_registers_register_page_expand_nop_entries {\xdef\currentregisterentriesa{\detokenizedregisterparameter{\c!entries:1}}% \xdef\currentregisterentriesb{\detokenizedregisterparameter{\c!entries:2}}% \xdef\currentregisterentriesc{\detokenizedregisterparameter{\c!entries:3}}% - \glet\currentregistercoding\s!tex} + \globallet\currentregistercoding\s!tex} \def\strc_registers_register_page_expand_xml {\xmlstartraw \xdef\currentregisterentries{\registerparameter\c!entries}% \xmlstopraw - \glet\currentregistercoding\s!xml} + \globallet\currentregistercoding\s!xml} \def\strc_registers_register_page_expand_yes {\xdef\currentregisterentries{\registerparameter\c!entries}% - \glet\currentregistercoding\s!tex} + \globallet\currentregistercoding\s!tex} \def\strc_registers_register_page_expand_nop {\xdef\currentregisterentries{\detokenizedregisterparameter\c!entries}% - \glet\currentregistercoding\s!tex} + \globallet\currentregistercoding\s!tex} \def\strc_registers_register_page_expand_xml_keys {\xmlstartraw @@ -305,7 +304,7 @@ \ifx\currentregisterownnumber\v!yes \glet\currentregistersynchronize\relax \else - \xdef\currentregistersynchronize{\clf_deferredenhanceregister{\currentregister}\number\currentregisternumber}% + \xdef\currentregistersynchronize{\ctxlatecommand{enhanceregister("\currentregister",\currentregisternumber)}}% \fi \currentregistersynchronize % here? % needs thinking ... bla\index{bla}. will break before the . but adding a @@ -341,7 +340,7 @@ % internal \locationcount % view {\interactionparameter\c!focus}% \relax % this will change - \xdef\currentregistersynchronize{\clf_deferredenhanceregister{\currentregister}\number\currentregisternumber}% + \xdef\currentregistersynchronize{\ctxlatecommand{enhanceregister("\currentregister",\currentregisternumber)}}% \currentregistersynchronize % here? \dostarttagged\t!registerlocation\currentregister \attribute\destinationattribute\lastdestinationattribute \signalcharacter % no \strut as it will be removed during cleanup @@ -353,46 +352,16 @@ \unexpanded\def\strc_registers_insert_entry[#1][#2]% {\def\currentregister{#1}% - \edef\p_ownnumber{\registerparameter\c!ownnumber}% - \ifx\p_ownnumber\v!yes - \expandafter\strc_registers_insert_entry_yes - \else - \expandafter\strc_registers_insert_entry_nop - \fi{#2}} - -% \def\strc_registers_insert_entry_nop#1#2% -% {\doflushatpar{\strc_registers_register_page_entry\currentregister{\c!keys={#1},\c!entries={#2}}{}}} -% -% \def\strc_registers_insert_entry_yes#1#2#3% -% {\doflushatpar{\strc_registers_register_page_entry\currentregister{\c!keys={#1},\c!alternative=#2,\c!entries={#3}}{}}} -% -% less tokens passed (nicer for tracing) .. could become installable - -\def\strc_registers_insert_entry_nop - {\ifvmode - \expandafter\strc_registers_insert_entry_nop_par - \else - \expandafter\strc_registers_insert_entry_nop_txt - \fi} - -\def\strc_registers_insert_entry_yes - {\ifvmode - \expandafter\strc_registers_insert_entry_yes_par - \else - \expandafter\strc_registers_insert_entry_yes_txt - \fi} - -\def\strc_registers_insert_entry_nop_par#1#2% - {\flushatnextpar{\strc_registers_register_page_entry\currentregister{\c!keys={#1},\c!entries={#2}}{}}} + \doifelse{\registerparameter\c!ownnumber}\v!yes + \strc_registers_insert_entry_yes + \strc_registers_insert_entry_nop + {#2}} -\def\strc_registers_insert_entry_yes_par#1#2#3% - {\flushatnextpar{\strc_registers_register_page_entry\currentregister{\c!keys={#1},\c!alternative=#2,\c!entries={#3}}{}}} +\def\strc_registers_insert_entry_nop#1#2% + {\doflushatpar{\strc_registers_register_page_entry\currentregister{\c!keys={#1},\c!entries={#2}}{}}} -\def\strc_registers_insert_entry_nop_txt#1#2% - {\strc_registers_register_page_entry\currentregister{\c!keys={#1},\c!entries={#2}}{}} - -\def\strc_registers_insert_entry_yes_txt#1#2#3% - {\strc_registers_register_page_entry\currentregister{\c!keys={#1},\c!alternative=#2,\c!entries={#3}}{}} +\def\strc_registers_insert_entry_yes#1#2#3% + {\doflushatpar{\strc_registers_register_page_entry\currentregister{\c!keys={#1},\c!alternative=#2,\c!entries={#3}}{}}} \unexpanded\def\startregister{\doquadrupleempty\strc_registers_start_entry} \unexpanded\def\stopregister {\dodoubleargument\strc_registers_stop_entry} @@ -434,14 +403,14 @@ \xmlstartraw \xdef\currentregisterentries{\registerparameter\c!entries}% \xmlstopraw - \glet\currentregistercoding\s!xml + \globallet\currentregistercoding\s!xml \else \ifx\currentregisterexpansion\v!yes \xdef\currentregisterentries{\registerparameter\c!entries}% \else \xdef\currentregisterentries{\detokenizedregisterparameter\c!entries}% \fi - \glet\currentregistercoding\s!tex + \globallet\currentregistercoding\s!tex \fi % I hate this kind of mess ... but it's a user request. \ifx\currentregisterentries\empty @@ -524,7 +493,7 @@ \xdef\currentregisterentries{\detokenize{#3}}% not ok yet \xdef\currentregisterseeword{\detokenize{#4}}% not ok yet \xmlstopraw - \glet\currentregistercoding\s!xml + \globallet\currentregistercoding\s!xml \else \ifx\currentregisterexpansion\v!yes \xdef\currentregisterentries{#3}% not ok yet @@ -533,7 +502,7 @@ \xdef\currentregisterentries{\detokenize{#3}}% not ok yet \xdef\currentregisterseeword{\detokenize{#4}}% not ok yet \fi - \glet\currentregistercoding\s!tex + \globallet\currentregistercoding\s!tex \fi \setnextinternalreference % we could consider storing register entries in list @@ -575,8 +544,8 @@ \def\strc_registers_determine_characteristics[#1][#2]% {\begingroup - \setupregister[#1][#2]% - \edef\currentregister{\firstinset{#1}}% + \edef\currentregister{#1}% + \setupregister[\currentregister][#2]% \normalexpanded{\endgroup\noexpand\xdef\noexpand\utilityregisterlength{\clf_analyzeregister {\currentregister}% {% @@ -600,8 +569,6 @@ \dontcomplain \to \everyplaceregister -\newconditional\c_strc_registers_text_interaction - \unexpanded\def\placeregister {\dodoubleempty\strc_registers_place} @@ -609,29 +576,30 @@ {\iffirstargument \begingroup %\forgetall - \setupregister[#1][#2]% can be a list - \edef\currentregister{\firstinset{#1}}% + \edef\currentregister{#1}% + \setupregister[\currentregister][#2]% \the\everyplaceregister \ifnum\namedmixedcolumnsparameter\currentregister\c!n>\plusone \startmixedcolumns[\currentregister] - \strc_registers_place_indeed{#1}% + \strc_registers_place_indeed \stopmixedcolumns \else - \strc_registers_place_indeed{#1}% + \strc_registers_place_indeed \fi \endgroup \fi} -\def\strc_registers_place_indeed#1% +\newconditional\c_strc_registers_text_interaction + +\def\strc_registers_place_indeed {\doifelse{\registerparameter\c!interaction}\v!text \settrue\setfalse\c_strc_registers_text_interaction \clf_processregister - {#1}% + {\currentregister}% {% language {\registerparameter\s!language}% method {\registerparameter\c!method}% numberorder {\registerparameter\c!numberorder}% - check {\registerparameter\c!check}% compress {\registerparameter\c!compress}% criterium {\registerparameter\c!criterium}% pagenumber \ifx\registerpageseparatorsymbol\empty false\else true\fi @@ -671,9 +639,9 @@ \def\strc_registers_complete[#1][#2]% {\iffirstargument \begingroup - \edef\currentregister{\firstinset{#1}}% + \edef\currentregister{#1}% \normalexpanded{\startnamedsection[\v!chapter][\c!title={\headtext{\currentregister}},reference=\currentregister]}% - \placeregister[#1][#2]% + \placeregister[\currentregister][#2]% \page[\v!yes]% \stopnamedsection \endgroup @@ -867,16 +835,15 @@ \unexpanded\def\startregisterpages {\begingroup \dostarttagged\t!registerpages\empty - \useregisterstyleandcolor\c!pagestyle\c!pagecolor - \registerparameter\c!pageleft} + \useregisterstyleandcolor\c!pagestyle\c!pagecolor} \unexpanded\def\stopregisterpages - {\registerparameter\c!pageright - \dostoptagged + {\dostoptagged \endgroup} \unexpanded\def\startregisterseewords - {\begingroup + {%\par % \ifhmode\crlf\fi % otherwise wrong level + \begingroup \dostarttagged\t!registerpage\empty \useregisterstyleandcolor\c!pagestyle\c!pagecolor} @@ -909,69 +876,46 @@ % \fi} \unexpanded\def\withregisterpagecommand#1#2#3#4% - {\ifcase#3\relax - {\tt [entry\space not\space flushed]}% + {\def\currentregisterpageindex{#2}% + \iflocation + \strc_references_goto_internal{\applyprocessor{#1}{\registerparameter\c!pagecommand{#4}}}[internal(#2)]% \else - \def\currentregisterpageindex{#2}% - \iflocation - \strc_references_goto_internal{\applyprocessor{#1}{\registerparameter\c!pagecommand{#4}}}[internal(#2)]% - \else - \applyprocessor{#1}{\registerparameter\c!pagecommand{#4}}% - \fi + \applyprocessor{#1}{\registerparameter\c!pagecommand{#4}}% \fi} -\unexpanded\def\pushcurrentregister#1% - {\let\m_current_register\currentregister - \edef\currentregister{#1}} - -\unexpanded\def\popcurrentregister - {\let\currentregister\m_current_register} - -\unexpanded\def\registeronepage#1#2#3#4#5% #1:class #2:processor content - {\pushcurrentregister{#1}% - \edef\p_pagenumber{\registerparameter\c!pagenumber}% - \ifx\p_pagenumber\v!no\else - \registerpageseparator - \global\setconstant\c_strc_registers_page_state\plusone - \dostarttagged\t!registerpage\empty - \withregisterpagecommand{#2}{#3}{#4}{#5}% - \dostoptagged - \fi - \popcurrentregister} - -\unexpanded\def\registerpagerange#1#2#3#4#5#6#7#8% #1:class #2:processor content, content todo: -- configurable - {\pushcurrentregister{#1}% - \edef\p_pagenumber{\registerparameter\c!pagenumber}% - \ifx\p_pagenumber\v!no\else - \registerpageseparator - \global\setconstant\c_strc_registers_page_state\plusone - \dostarttagged\t!registerpagerange\empty - \dostarttagged\t!registerfrompage\empty - \withregisterpagecommand{#2}{#3}{#4}{#5}% - \dostoptagged - \registeronepagerangeseparator - \dostarttagged\t!registertopage\empty - \withregisterpagecommand{#2}{#6}{#7}{#8}% - \dostoptagged - \dostoptagged - \fi - \popcurrentregister} +\unexpanded\def\registeronepage#1#2#3#4% #1:processor content + {\registerpageseparator + \global\setconstant\c_strc_registers_page_state\plusone + \dostarttagged\t!registerpage\empty + \withregisterpagecommand{#1}{#2}{#3}{#4}% + \dostoptagged} + +\unexpanded\def\registerpagerange#1#2#3#4#5#6#7% #1:processor content, content todo: -- configurable + {\registerpageseparator + \global\setconstant\c_strc_registers_page_state\plusone + \dostarttagged\t!registerpagerange\empty + \dostarttagged\t!registerfrompage\empty + \withregisterpagecommand{#1}{#2}{#3}{#4}% + \dostoptagged + \registeronepagerangeseparator + \dostarttagged\t!registertopage\empty + \withregisterpagecommand{#1}{#5}{#6}{#7}% + \dostoptagged + \dostoptagged} -\unexpanded\def\defaultregisterentry#1#2#3#4#5% #1:class #2:processor #3:internal #4:seeindex #5:word - {\pushcurrentregister{#1}% - \def\currentregisterpageindex{#3}% +\unexpanded\def\defaultregisterentry#1#2#3#4% #1:processor #2:internal #3:seeindex #4:word + {\def\currentregisterpageindex{#2}% \iflocation - \def\currentregisterseeindex{#4}% + \def\currentregisterseeindex{#3}% \ifconditional\c_strc_registers_text_interaction - \strc_references_goto_internal{\setlocationcolor\doapplyregisterentrycommand{#2}{#5}}[internal(#3)]% + \strc_references_goto_internal{\setlocationcolor\doapplyregisterentrycommand{#1}{#4}}[internal(#2)]% \else - \doapplyregisterentrycommand{#2}{#5}% + \doapplyregisterentrycommand{#1}{#4}% \fi \else \let\currentregisterseeindex\empty - \doapplyregisterentrycommand{#2}{#5}% - \fi - \popcurrentregister} + \doapplyregisterentrycommand{#1}{#4}% + \fi} \unexpanded\def\doapplyregisterentrycommand#1#2% processor text {\dostarttagged\t!registercontent\empty @@ -991,29 +935,25 @@ \applyprocessor{#1}{#2}% \fi\fi} -\unexpanded\def\defaultregisterseeword#1#2#3#4#5#6#7% class i n #3:processor #4:internal #5:seeindex #6:word - {\pushcurrentregister{#1}% - \ifnum#2=\plusone - \registerpageseparator - \fi +\unexpanded\def\defaultregisterseeword#1#2#3#4#5#6% i n #3:processor #4:internal #5:seeindex #6:word + {\registerpageseparator \global\setconstant\c_strc_registers_page_state\plustwo - \def\currentregisterpageindex{#5}% + \def\currentregisterpageindex{#4}% \dostarttagged\t!registersee\empty \settrue\c_strc_registers_page_done \iflocation - \def\currentregisterseeindex{#6}% + \def\currentregisterseeindex{#5}% \else \let\currentregisterseeindex\empty \fi - \ifnum#2=\plusone - \labeltexts\v!see{\doapplyregisterseecommand{#4}{#7}}% - \else\ifnum#2=#3\relax - \labeltexts\v!and{\doapplyregisterseecommand{#4}{#7}}% + \ifnum#1=\plusone + \labeltexts\v!see{\doapplyregisterseecommand{#3}{#6}}% + \else\ifnum#1=#2\relax + \labeltexts\v!and{\doapplyregisterseecommand{#3}{#6}}% \else - ,\space\doapplyregisterseecommand{#4}{#7}% + ,\space\doapplyregisterseecommand{#3}{#6}% \fi\fi - \dostoptagged - \popcurrentregister} + \dostoptagged} \let\registerseeword \defaultregisterseeword \let\registerentry \defaultregisterentry @@ -1053,18 +993,18 @@ \setvalue{\??registersymbol\v!none}% {\let\registerpageseparatorsymbol\empty - \let\registeronepage \gobblefivearguments - \let\registerpagerange\gobbleeightarguments} + \let\registeronepage \gobblefourarguments + \let\registerpagerange \gobblesevenarguments} \setvalue{\??registersymbol 1}% {\let\registerpageseparatorsymbol\space - \def\registeronepage {\symbol[1]\gobblefivearguments}% - \def\registerpagerange{\symbol[1]\gobbleeightarguments}} + \def\registeronepage {\symbol[1]\gobblefourarguments}% + \def\registerpagerange{\symbol[1]\gobblesevenarguments}} \setvalue{\??registersymbol 2}% {\let\registerpageseparatorsymbol\space - \def\registeronepage {\registerpagebuttonsymbol\gobblefivearguments}% - \def\registerpagerange{\registerpagebuttonsymbol\gobbleeightarguments}} + \def\registeronepage {\registerpagebuttonsymbol\gobblefourarguments}% + \def\registerpagerange{\registerpagebuttonsymbol\gobblesevenarguments}} \unexpanded\def\setregisterpagerendering {\doifelse{\registerparameter\c!pagenumber}\v!no @@ -1076,8 +1016,8 @@ \csname\??registersymbol\currentregisterpagesymbol\endcsname \else \let\registerpageseparatorsymbol\space - \def\registeronepage {\registerparameter\c!symbol\gobblefivearguments}% - \def\registerpagerange{\registerparameter\c!symbol\gobbleeightarguments}% + \def\registeronepage{\registerparameter\c!symbol\gobblefourarguments}% + \def\registerpagerange{\registerparameter\c!symbol\gobblesevenarguments}% \fi\fi} \appendtoks |