summaryrefslogtreecommitdiff
path: root/tex/context/base/strc-reg.mkiv
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/strc-reg.mkiv')
-rw-r--r--tex/context/base/strc-reg.mkiv454
1 files changed, 213 insertions, 241 deletions
diff --git a/tex/context/base/strc-reg.mkiv b/tex/context/base/strc-reg.mkiv
index 3940594c3..e36556949 100644
--- a/tex/context/base/strc-reg.mkiv
+++ b/tex/context/base/strc-reg.mkiv
@@ -19,7 +19,12 @@
% todo: tag:: becomes rendering
% todo: language, character, linked, location
-% todo: fonts etc at sublevels (already defined)
+
+%D Helper:
+
+% \def\doflushatpar{\ifvmode\expandafter\dogotopar\else\expandafter\firstofoneargument\fi}
+
+\def\doflushatpar{\ifvmode\expandafter\flushatnextpar\else\expandafter\firstofoneargument\fi}
% \starttext
% \placeregister[index]
@@ -29,6 +34,9 @@
% test \index{aa} test \setregisterentry[index][label=y] test \page test \page test \page test \finishregisterentry[index][label=y,entries=yy]
% \stoptext
+% In plaats van + kan een & worden gebruikt. Ook kan als
+% eerste karakter worden opgegeven wat de scheider is.
+%
% \index {entry}
% \index[key] {entry}
% \index[pageclass::] {entry}
@@ -38,34 +46,52 @@
% \index[pageclass::] {textclass::entry}
% \index[pageclass::key]{textclass::entry}
-% tzt variant with n entries, parameters and userdata (altnum)
+%D Parameters ... we set up levels so we need a slightly different command handler here .. okay, we
+%D can use the childs for that ... but then we need to tweak the name in order to distinguis:
+%D register -> register:1 (i.e. prefix)
+
+\let\currentregister\empty
+
+% \def\registerparameter#1{\csname\??id\currentregister#1\endcsname}
+
+\def\detokenizedregisterparameter#1{\detokenize\expandafter\expandafter\expandafter{\csname\??id#1\endcsname}} % always root
-\installcorenamespace{register}
+\def\registerparameter #1{\csname\doregisterparameter{\??id\currentregister}{#1}\endcsname}
+\def\registerparameterhash#1{\doregisterparameterhash {\??id\currentregister}#1}
-\installcommandhandler\??register {register} \??register
+\def\doregisterparameter #1#2{\ifcsname#1#2\endcsname#1#2\else\expandafter\doregisterparentparameter \csname#1\s!parent\endcsname{#2}\fi}
+\def\doregisterparameterhash#1#2{\ifcsname#1#2\endcsname #1\else\expandafter\doregisterparentparameterhash\csname#1\s!parent\endcsname{#2}\fi}
-\let\strc_registers_setup_saved\setupregister
+\def\doregisterparentparameter #1#2{\ifx#1\relax\s!empty\else\doregisterparameter #1{#2}\fi}
+\def\doregisterparentparameterhash#1#2{\ifx#1\relax \else\doregisterparameterhash#1{#2}\fi}
-\unexpanded\def\setupregister % maybe we should drop the plural form
- {\dotripleempty\strc_registers_setup}
+\def\useregisterstyleandcolor#1#2% style color
+ {\edef\currentstyleparameter{\registerparameter#1}%
+ \edef\currentcolorparameter{\registerparameter#2}%
+ \ifx\currentstyleparameter\empty\else\dousestyleparameter\currentstyleparameter\fi
+ \ifx\currentcolorparameter\empty\else\dousecolorparameter\currentcolorparameter\fi}
-\def\strc_registers_setup[#1][#2][#3]%
+%D Setup:
+
+\newtoks\everysetupregister
+
+\unexpanded\def\setupregisters
+ {\dotripleempty\dosetupregisters}
+
+\def\dosetupregisters[#1][#2][#3]%
{\ifthirdargument
- \def\strc_registers_setup_step##1{\strc_registers_setup_saved[#1:##1][#3]}%
- \processcommalist[#2]\strc_registers_setup_step
+ \def\dodosetupregister##1{\getparameters[\??id##1#2][#3]}%
+ \processcommalist[#1]\dodosetupregister
\else\ifsecondargument
- \strc_registers_setup_saved[#1][#2]%
+ \def\dodosetupregister##1{\edef\currentregister{##1}\getparameters[\??id##1][#2]\the\everysetupregister}%
+ \processcommalist[#1]\dodosetupregister
\else
- \strc_registers_setup_saved[#1]%
+ \getparameters[\??id][#1]%
\fi\fi}
-\unexpanded\def\setupregisters
- {\dosingleempty\strc_registers_setup_root}
-
-\def\strc_registers_setup_root[#1]%
- {\strc_registers_setup_saved[#1]\relax}
+\let\setupregister\setupregisters
-\setupregister
+\setupregisters
[\c!n=2,
\c!balance=\v!yes, % \v!no komt niet zo vaak voor
\c!align=\v!flushleft,
@@ -76,7 +102,7 @@
\c!compress=\v!no,
\c!interaction=\v!pagenumber,
\c!alternative=\v!a,
- \c!distance=\emwidth,
+ \c!distance=1em,
\c!style=\v!bold,
\c!pagestyle=\v!slanted,
\c!indicator=\v!yes,
@@ -89,7 +115,7 @@
\c!unknownreference=\v!empty,
\c!prefix=\v!both,
%\c!expansion=,
- %\c!xmlsetup=,
+%\c!xmlsetup=,
\c!pagenumber=\v!yes,
\c!pageprefixconnector=\endash,
\c!pagesegments=2:2,
@@ -99,63 +125,48 @@
\c!numberorder=\v!numbers, % \v!characters
\s!language=\currentmainlanguage]%
-% yes or no shared ?
+%D Definition:
-\setupregister
- [\c!label=,
- \c!entries=,
- \c!alternative=]
+\unexpanded\def\defineregister
+ {\dodoubleargument\dodefineregister}
-%D \starttyping
-%D \setupregister[index][1][textcolor=darkred]
-%D \setupregister[index][2][textcolor=darkgreen,textstyle=bold]
-%D
-%D \placeregister[index][n=1] \blank[3*big]
-%D
-%D test \index{test+one} test \index{test+two} more \index{more}
-%D \stoptyping
+\def\dodefineregister[#1][#2]% #2?
+ {\setupregister[#1][\s!parent=\??id]%
+ \ctxlua{structures.registers.define('#1')}%
+ \presetheadtext[#1=\Word{#1}]%
+ \setuvalue{#1}{\dodoubleempty\doregister[#1]}%
+ \setuvalue{\e!see#1}{\dodoubleempty\doseeregister[#1]}%
+% \setuvalue{\e!coupled#1}{\dolinkedregister{#1}}%
+ \setvalue{\e!place#1}{\placeregister[#1]}%
+ \setvalue{\e!complete#1}{\completeregister[#1]}%
+ \setvalue{\e!setup#1\e!endsetup}[##1]{\getparameters[\??id#1][##1]}}
-\newconditional\c_strc_registers_defining
+%D Registering:
-\ifdefined\Word \else \unexpanded\def\Word#1{#1} \fi
+\newif\ifwritetoregister \writetoregistertrue
-\appendtoks
- \ifconditional\c_strc_registers_defining \else
- \settrue\c_strc_registers_defining
- \ctxlua{structures.registers.define('\currentregister')}%
- \normalexpanded{\presetheadtext[\currentregister=\Word{\currentregister}]}%
- \setuevalue{\currentregister}{\dodoubleempty\strc_registers_insert_entry[\currentregister]}%
- \setuevalue{\e!see\currentregister}{\dodoubleempty\strc_registers_insert_see[\currentregister]}%
- %setuevalue{\e!coupled\currentregister}{\dolinkedregister{\currentregister}}%
- % historic ballast
- \setuevalue{\e!place\currentregister}{\placeregister[\currentregister]}%
- \setuevalue{\e!complete\currentregister}{\completeregister[\currentregister]}%
- \setuevalue{\e!setup\currentregister\e!endsetup}{\setupregister[\currentregister]}%
- \dorecurse\plusthree {% weird, expanded should not be needed
- \normalexpanded{\defineregister[\currentregister:\recurselevel][\currentregister]}%
-% \defineregister[\currentregister:\recurselevel][\currentregister]%
- \letregisterparameter{\c!entries:\recurselevel}\empty % needed as we use detokenize (ok, we can
- \letregisterparameter{\c!keys :\recurselevel}\empty % avoid it, but it's faster too)
- }%
- %
- \setfalse\c_strc_registers_defining
- \fi
-\to \everydefineregister
+% tzt variant met n entries, parameters en userdata (altnum)
-%D Registering:
+\getparameters
+ [\??id]
+ [\c!label=,
+ \c!entries=,
+ \c!entries:1=,\c!entries:2=,\c!entries:3=,
+ \c!keys:1=,\c!keys:2=,\c!keys:3=,
+ \c!alternative=]
-\def\strc_registers_register_page_entry
+\def\doregisterstructurepageregister
{\iftrialtypesetting
\expandafter\gobblethreearguments
\else
- \expandafter\strc_registers_register_page_entry_indeed
+ \expandafter\dodoregisterstructurepageregister
\fi}
-\def\strc_registers_register_page_entry_indeed#1#2#3% register data userdata
+\def\dodoregisterstructurepageregister#1#2#3% register data userdata
{\begingroup
\edef\currentregister{#1}%
- %\setupcurrentregister[\c!entries=,\c!label=,\c!keys=,\c!alternative=,#2]%
- \setupcurrentregister[#2]%
+ %getparameters[\??id][\c!entries=,\c!label=,\c!keys=,\c!alternative=,#2]%
+ \getparameters[\??id][#2]%
\edef\currentregisterlabel {\registerparameter\c!label}%
\edef\currentregisterexpansion{\registerparameter\c!expansion}%
\edef\currentregisterownnumber{\registerparameter\c!ownnumber}%
@@ -234,7 +245,7 @@
section = structures.sections.currentid(), % hm, why then not also lastsection the same way
label = "\currentregisterlabel",
},
- % \ifx\currentregisterentries\empty \else
+% \ifx\currentregisterentries\empty \else
entries = {
% we need a special one for xml, this is just a single one
\ifx\currentregisterentries\empty
@@ -248,10 +259,10 @@
\!!bs\currentregisterkeys\!!es,
\fi
},
- % \fi
+% \fi
userdata = structures.helpers.touserdata(\!!bs\detokenize{#3}\!!es)
}
- }}%
+ } }%
\ctxlua{structures.references.setinternalreference(nil,nil,\nextinternalreference)}%
\ifx\currentregisterownnumber\v!yes
\glet\currentregistersynchronize\relax
@@ -264,51 +275,45 @@
\attribute\destinationattribute\lastdestinationattribute \signalcharacter % no \strut as it will be removed during cleanup
\endgroup}
-\unexpanded\def\strc_registers_insert_entry[#1][#2]%
+\def\doregister[#1][#2]%
{\def\currentregister{#1}%
- \doifelse{\registerparameter\c!ownnumber}\v!yes
- \strc_registers_insert_entry_yes
- \strc_registers_insert_entry_nop
- {#2}}
-
-\def\strc_registers_insert_entry_nop#1#2%
- {\doflushatpar{\strc_registers_register_page_entry\currentregister{\c!keys={#1},\c!entries={#2}}{}}}
+ \doifelse{\registerparameter\c!ownnumber}\v!yes\dodoregister\donoregister{#1}{#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}}{}}}
+\def\donoregister #1#2#3{\doflushatpar{\doregisterstructurepageregister{#1}{\c!keys={#2},\c!entries={#3}}{}}}
+\def\dodoregister#1#2#3#4{\doflushatpar{\doregisterstructurepageregister{#1}{\c!keys={#2},\c!alternative=#3,\c!entries={#4}}{}}}
-\unexpanded\def\startregister{\doquadrupleempty\strc_registers_start_entry}
-\unexpanded\def\stopregister {\dodoubleargument\strc_registers_stop_entry}
+\unexpanded\def\startregister{\doquadrupleempty\dostartregister}
+\unexpanded\def\stopregister {\dodoubleargument\dostopregister}
% a synonym, so that we can nest with overlap without syntax check problems
\let\openregisterrange \startregister
\let\closeregisterrange\stopregister
-\def\strc_registers_start_entry[#1][#2][#3][#4]#5%
+\def\dostartregister[#1][#2][#3][#4]#5%
{\iffourthargument
% #1=register #2=tag #3=own #4=sortkey #5=entry
- \doflushatpar{\strc_registers_register_page_entry{#1}{\c!label=#2,\c!alternative=#3,\c!keys={#4},\c!entries={#5}}{}}%
+ \doflushatpar{\doregisterstructurepageregister{#1}{\c!label=#2,\c!alternative=#3,\c!keys={#4},\c!entries={#5}}{}}%
\else
% #1=register #2=tag #3=sortkey #5=entry
- \doflushatpar{\strc_registers_register_page_entry{#1}{\c!label=#2,\c!keys={#3},\c!entries={#5}}{}}%
+ \doflushatpar{\doregisterstructurepageregister{#1}{\c!label=#2,\c!keys={#3},\c!entries={#5}}{}}%
\fi}
-\def\strc_registers_stop_entry[#1][#2]%
+\def\dostopregister[#1][#2]%
{\normalexpanded{\ctxlatelua{structures.registers.extend("#1","#2")}}}
-\def\setregisterentry {\dotripleempty\strc_registers_set_entry}
-\def\finishregisterentry{\dotripleempty\strc_registers_finish_entry}
+\def\setregisterentry {\dotripleempty\dosetregisterentry}
+\def\finishregisterentry{\dotripleempty\dofinishregisterentry}
% not yet document, not sure if this will stay:
-\def\strc_registers_set_entry [#1][#2][#3]{\doflushatpar{\strc_registers_register_page_entry{#1}{#2}{#3}}}
-\def\strc_registers_finish_entry[#1][#2][#3]{\strc_registers_finish_entry_indeed{#1}{#2}{#3}}
+\def\dosetregisterentry [#1][#2][#3]{\doflushatpar{\doregisterstructurepageregister{#1}{#2}{#3}}}
+\def\dofinishregisterentry[#1][#2][#3]{\dofinishregisterstructurepageregister{#1}{#2}{#3}}
-\def\strc_registers_finish_entry_indeed#1#2#3% register data userdata
+\def\dofinishregisterstructurepageregister#1#2#3% register data userdata
{\begingroup
\edef\currentregister{#1}%
- \setupcurrentregister[\c!entries=,\c!label=,\c!keys=,\c!alternative=,#2]%
+ \getparameters[\??id][\c!entries=,\c!label=,\c!keys=,\c!alternative=,#2]%
\edef\currentregisterlabel {\registerparameter\c!label}%
\edef\currentregisterexpansion{\registerparameter\c!expansion}%
\edef\currentregisterownnumber{\registerparameter\c!ownnumber}%
@@ -331,7 +336,7 @@
\normalexpanded{\ctxlua{structures.registers.extend("\currentregister","\currentregisterlabel", {
metadata = {
\ifx\currentregisterownnumber\v!yes
- own = "\registerparameter\c!alternative", % can be used instead of pagenumber
+ own = "\registerparameter\c!alternative", % can be used instead of pagenumber
\fi
},
userdata = structures.helpers.touserdata(\!!bs\detokenize{#3}\!!es)
@@ -348,8 +353,7 @@
},
entries = {
% we need a special one for xml, this is just a single one
- \!!bs\currentregisterentries\!!es,
- \!!bs\currentregisterkeys\!!es
+ \!!bs\currentregisterentries\!!es, \!!bs\currentregisterkeys\!!es
},
userdata = structures.helpers.touserdata(\!!bs\detokenize{#3}\!!es)
})
@@ -373,32 +377,29 @@
% \placeregister[index][n=1]
% \stoptext
-% some overlap wit previous
-
-\unexpanded\def\setstructurepageregister
- {\dotripleempty\strc_registers_set}
+\def\setstructurepageregister{\dotripleempty\dosetstructurepageregister}
-\def\strc_registers_set[#1][#2][#3]% [register][settings][userdata]
- {\doflushatpar{\strc_registers_register_page_entry{#1}{#2}{#3}}}
+\def\dosetstructurepageregister[#1][#2][#3]% [register][settings][userdata]
+ {\doflushatpar{\doregisterstructurepageregister{#1}{#2}{#3}}}
-\unexpanded\def\startstructurepageregister{\doquadrupleempty\strc_registers_start}
-\unexpanded\def\stopstructurepageregister {\dodoubleargument\strc_registers_stop}
+\unexpanded\def\startstructurepageregister{\doquadrupleempty\dostartstructurepageregister}
+\unexpanded\def\stopstructurepageregister {\dodoubleargument\dostopstructurepageregister}
\let\openstructurepageregisterrange \startstructurepageregister
\let\closestructurepageregisterrange\stopstructurepageregister
-\def\strc_registers_start[#1][#2][#3][#4]% [register][tag][settings][userdata]
- {\doflushatpar{\strc_registers_register_page_entry{#1}{\c!label=#2,#3}{#4}}}
+\def\dostartstructurepageregister[#1][#2][#3][#4]% [register][tag][settings][userdata]
+ {\doflushatpar{\doregisterstructurepageregister{#1}{\c!label=#2,#3}{#4}}}
-\def\strc_registers_stop[#1][#2]%
+\def\dostopstructurepageregister[#1][#2]%
{\normalexpanded{\ctxlatelua{structures.registers.extend("#1","#2")}}}
% So far.
-\unexpanded\def\strc_registers_insert_see[#1][#2]#3#4%
- {\doflushatpar{\strc_registers_insert_see_indeed{#1}{#2}{#3}{#4}}}
+\def\doseeregister[#1][#2]#3#4%
+ {\doflushatpar{\doprocessseeregister{#1}{#2}{#3}{#4}}}
-\def\strc_registers_insert_see_indeed#1#2#3#4% register key entry seeword
+\def\doprocessseeregister#1#2#3#4% register key entry seeword
{\begingroup
\edef\currentregister{#1}%
\edef\currentregisterexpansion{\registerparameter\c!expansion}%
@@ -433,11 +434,10 @@
},
entries = {
% we need a special one for xml, this is just a single one
- \!!bs\currentregisterentries\!!es,
- \!!bs#2\!!es
+ "\currentregisterentries", "#2"
},
seeword = {
- text = \!!bs\currentregisterseeword\!!es
+ text = "\currentregisterseeword"
},
}
}}%
@@ -450,9 +450,9 @@
\let\utilityregisterlength\!!zerocount
\def\determineregistercharacteristics
- {\dodoubleempty\strc_registers_determine_characteristics}
+ {\dodoubleempty\dodetermineregistercharacteristics}
-\def\strc_registers_determine_characteristics[#1][#2]%
+\def\dodetermineregistercharacteristics[#1][#2]%
{\begingroup
\edef\currentregister{#1}%
\setupregister[\currentregister][#2]%
@@ -476,85 +476,67 @@
\to \everyplaceregister
\unexpanded\def\placeregister
- {\dodoubleempty\strc_registers_place}
+ {\dodoubleempty\doplaceregister}
-\def\strc_registers_place[#1][#2]%
+\def\doplaceregister[#1][#2]%
{\iffirstargument
\begingroup
- %\forgetall
+% \forgetall
\edef\currentregister{#1}%
\setupregister[\currentregister][#2]%
\the\everyplaceregister
- \ifnum\registerparameter\c!n>\plusone
- \startcolumns
- [\c!n=\registerparameter\c!n,
- \c!balance=\registerparameter\c!balance,
- \c!align=\registerparameter\c!align,
- \c!tolerance=\registerparameter\c!tolerance]%
- \strc_registers_place_indeed
- \stopcolumns
- \else
- \strc_registers_place_indeed
- \fi
+ \startcolumns
+ [\c!n=\registerparameter\c!n,
+ \c!balance=\registerparameter\c!balance,
+ \c!align=\registerparameter\c!align,
+ \c!tolerance=\registerparameter\c!tolerance]%
+ \startpacked[\v!blank]%
+ \ctxlua{structures.registers.process('\currentregister',{
+ language = "\registerparameter\s!language",
+ method = "\registerparameter\c!method",
+ numberorder = "\registerparameter\c!numberorder",
+ compress = "\registerparameter\c!compress",
+ criterium = "\registerparameter\c!criterium",
+ },
+ {
+% prefix = "\registerparameter\c!pageprefix",
+ separatorset = "\registerparameter\c!pageprefixseparatorset",
+ conversionset = "\registerparameter\c!pageprefixconversionset",
+ starter = \!!bs\registerparameter\c!pageprefixstarter\!!es,
+ stopper = \!!bs\registerparameter\c!pageprefixstopper\!!es,
+ set = "\registerparameter\c!pageprefixset",
+ segments = "\registerparameter\c!pageprefixsegments",
+ connector = \!!bs\registerparameter\c!pageprefixconnector\!!es,
+ },
+ {
+ prefix = "\registerparameter\c!pageprefix",
+ separatorset = "\registerparameter\c!pageseparatorset",
+ conversionset = "\registerparameter\c!pageconversionset",
+ starter = \!!bs\registerparameter\c!pagestarter\!!es,
+ stopper = \!!bs\registerparameter\c!pagestopper\!!es,
+ segments = "\registerparameter\c!pagesegments",
+ }
+ )}%
+ \stoppacked
+ \stopcolumns
\endgroup
\fi}
-\def\strc_registers_place_columns
- {\startcolumns
- [\c!n=\registerparameter\c!n,
- \c!balance=\registerparameter\c!balance,
- \c!align=\registerparameter\c!align,
- \c!tolerance=\registerparameter\c!tolerance]%
- \startpacked[\v!blank]%
- \strc_registers_place_indeed
- \stoppacked
- \stopcolumns}
-
-\def\strc_registers_place_normal
- {\startpacked[\v!blank]%
- \strc_registers_place_indeed
- \stoppacked}
-
-\def\strc_registers_place_indeed
- {\ctxlua{structures.registers.process('\currentregister',{
- language = "\registerparameter\s!language",
- method = "\registerparameter\c!method",
- numberorder = "\registerparameter\c!numberorder",
- compress = "\registerparameter\c!compress",
- criterium = "\registerparameter\c!criterium",
- },{
- separatorset = "\registerparameter\c!pageprefixseparatorset",
- conversionset = "\registerparameter\c!pageprefixconversionset",
- starter = \!!bs\registerparameter\c!pageprefixstarter\!!es,
- stopper = \!!bs\registerparameter\c!pageprefixstopper\!!es,
- set = "\registerparameter\c!pageprefixset",
- segments = "\registerparameter\c!pageprefixsegments",
- connector = \!!bs\registerparameter\c!pageprefixconnector\!!es,
- },{
- prefix = "\registerparameter\c!pageprefix",
- separatorset = "\registerparameter\c!pageseparatorset",
- conversionset = "\registerparameter\c!pageconversionset",
- starter = \!!bs\registerparameter\c!pagestarter\!!es,
- stopper = \!!bs\registerparameter\c!pagestopper\!!es,
- segments = "\registerparameter\c!pagesegments",
- })}}
-
-\def\strc_registers_limited_entry#1%
- {\limitatetext{#1}\currentregistermaxwidth\unknown}%
+\def\dolimitedregisterentry#1{\limitatetext{#1}\currentregistermaxwidth\unknown}%
\appendtoks
\edef\currentregistermaxwidth{\registerparameter\c!maxwidth}%
\ifx\currentregistermaxwidth\empty
\let\limitedregisterentry\firstofoneargument
\else
- \let\limitedregisterentry\strc_registers_limited_entry
+ \let\limitedregisterentry\dolimitedregisterentry
\fi
\to \everyplaceregister
-\unexpanded\def\completeregister
- {\dodoubleempty\strc_registers_complete}
+\def\completeregister
+ {\dodoubleempty\docompleteregister}
-\def\strc_registers_complete[#1][#2]%
+\def\docompleteregister[#1][#2]%
{\iffirstargument
\begingroup
\edef\currentregister{#1}%
@@ -564,7 +546,7 @@
\stopnamedsection
\endgroup
\fi}
-
+
% test case for collapsing (experimental, for Steffen Wolfrum)
%
% \starttext
@@ -583,36 +565,37 @@
% xxxx \index{xxxx}
% todo \index{todo}
% \stoptext
-
+
%D Character rendering (sections):
-\installcorenamespace{registerindicator}
-
\def\defaultregistercharacter#1%
- {\edef\currentregistercharacter{#1}%
- \ifx\currentregistercharacter\empty
- % skip
- \else\ifx\currentregistercharacter\s!unknown
- % skip
- \else
- \edef\p_indicator{\registerparameter\c!indicator}%
- \ifx\p_indicator\v!yes
- \strc_registers_place_character_yes
- \else
- \strc_registers_place_character_nop
- \fi
- \fi\fi}
-
-\def\strc_registers_place_character_yes
- {\expandcheckedcsname\??registerindicator{\registerparameter\c!alternative}\v!a{\currentregistercharacter}}
-
-\def\strc_registers_place_character_nop
+ {\doifsomething{#1}
+ {\doifnot{#1}\s!unknown
+ {\doifelse{\registerparameter\c!indicator}\v!yes
+ {\doregistercharacter{#1}}
+ {\noregistercharacter{#1}}}}}
+
+% \def\doregistercharacter#1%
+% {\expandcheckedcsname % why no \executeifdefined
+% {\??id:\c!indicator:}%
+% {\registerparameter\c!alternative}%
+% {a}%
+% {#1}}
+
+\def\doregistercharacter#1%
+ {\expandcheckedcsname % why no \executeifdefined
+ {\??id:\c!indicator:}%
+ {\registerparameter\c!alternative}%
+ {a}%
+ {#1}}
+
+\def\noregistercharacter#1%
{\registerparameter\c!before
\goodbreak}
% a = <before> <goodbreak> <character> <par> <after> <nobreak>
-\setvalue{\??registerindicator a}#1%
+\setvalue{\??id:\c!indicator:a}#1%
{\registerparameter\c!before
% bugged, why does leftskip gets set: \vskip\lineheight\goodbreak\vskip-\lineheight
\begingroup
@@ -624,14 +607,13 @@
\fi
\registerparameter\c!command{#1}%
\endgroup
- \blank[\v!samepage]%
\registerparameter\c!after
\par
\nobreak}
% b = <goodbreak> <before> <character> <after> <nobreak>
-\setvalue{\??registerindicator b}#1% will be shared with a
+\setvalue{\??id:\c!indicator:b}#1% will be shared with a
{\registerparameter\c!before
\begingroup
\useregisterstyleandcolor\c!style\c!color
@@ -645,9 +627,9 @@
\registerparameter\c!after
\nobreak}
-\setvalue{\??registerindicator A}#1{\getvalue{\??registerindicator a}{\WORD{#1}}}
-\setvalue{\??registerindicator B}#1{\getvalue{\??registerindicator b}{\WORD{#1}}}
-
+\setvalue{\??id:\c!indicator:A}#1{\getvalue{\??id:\c!indicator:a}{\WORD{#1}}}
+\setvalue{\??id:\c!indicator:B}#1{\getvalue{\??id:\c!indicator:b}{\WORD{#1}}}
+
%D The following macros are the interface to the rendering. These are
%D generated by \LUA. This might change.
@@ -655,13 +637,9 @@
%D placeindex as then flushing takes place inside the index. Took me hours
%D to notice that.
-\newconditional\c_strc_registers_page_done
-\newdimen \d_strc_registers_distance
-
\unexpanded\def\startregisteroutput
{\endgraf
\begingroup
- \d_strc_registers_distance\registerparameter\c!distance\relax
\dostarttagged\t!register\currentregister
\forgeteverypar
\forgetparindent
@@ -676,13 +654,9 @@
{\endgraf
\begingroup
\dostarttagged\t!registerentries\empty
- \let\savedcurrentregister\currentregister
- \edef\currentregister{\currentregister:#1}%
\useregisterstyleandcolor\c!textstyle\c!textcolor
- \advance\leftskip\numexpr#1-\plusone\relax\dimexpr\d_strc_registers_distance\relax
- \hangindent\registerparameter\c!distance\relax
- \hangafter\plusone
- \let\currentregister\savedcurrentregister}
+ \advance\leftskip\numexpr#1-1\relax\dimexpr\registerparameter\c!distance\relax
+ \hangindent\registerparameter\c!distance\hangafter\plusone}
\unexpanded\def\stopregisterentries
{\endgraf
@@ -699,10 +673,12 @@
{\dostoptagged
\endgraf}
+\newconditional\registerpagedone
+
\unexpanded\def\startregisterpages
{\begingroup
\dostarttagged\t!registerpages\empty
- \setfalse\c_strc_registers_page_done
+ \setfalse\registerpagedone
\useregisterstyleandcolor\c!pagestyle\c!pagecolor}
\unexpanded\def\stopregisterpages
@@ -712,7 +688,7 @@
\unexpanded\def\startregisterseewords
{\ifhmode\crlf\fi
\begingroup
- \setfalse\c_strc_registers_page_done
+ \setfalse\registerpagedone
\dostarttagged\t!registerpage\empty
\useregisterstyleandcolor\c!pagestyle\c!pagecolor}
@@ -720,16 +696,15 @@
{\dostoptagged
\endgroup}
-\unexpanded\def\registerpageseparator% todo: , configurable
- {\ifconditional\c_strc_registers_page_done
+\def\registerpageseparator% todo: , configurable
+ {\ifconditional\registerpagedone
\registerpageseparatorsymbol
\else
- \hskip\d_strc_registers_distance\relax
- \settrue\c_strc_registers_page_done
+ \hskip\registerparameter\c!distance\relax
+ \settrue\registerpagedone
\fi}
-\unexpanded\def\registeronepagerangeseparator
- {|\endash|}
+\def\registeronepagerangeseparator{|\endash|}
\def\withregisterpagecommand#1#2#3#4%
{\def\currentregisterpageindex{#2}%
@@ -739,13 +714,13 @@
\applyprocessor{#1}{\registerparameter\c!pagecommand{#4}}%
\fi}
-\unexpanded\def\registeronepage#1#2#3#4% #1:processor content
+\def\registeronepage#1#2#3#4% #1:processor content
{\registerpageseparator
\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
+\def\registerpagerange#1#2#3#4#5#6#7% #1:processor content, content todo: -- configurable
{\registerpageseparator
\dostarttagged\t!registerpagerange\empty
\dostarttagged\t!registerfrompage\empty
@@ -757,7 +732,7 @@
\dostoptagged
\dostoptagged}
-\unexpanded\def\doapplyregisterentrycommand#1#2% processor text
+\def\doapplyregisterentrycommand#1#2% processor text
{\dostarttagged\t!registerentry\empty
\ifx\currentregisterseeindex\empty \else
\dontleavehmode
@@ -766,7 +741,7 @@
\applyprocessor{#1}{\registerparameter\c!textcommand{\limitedregisterentry{\registerparameter\c!deeptextcommand{#2}}}}%
\dostoptagged}
-\unexpanded\def\defaultregisterentry#1#2#3#4% #1:processor #2:internal #3:seeindex #4:word
+\def\defaultregisterentry#1#2#3#4% #1:processor #2:internal #3:seeindex #4:word
{\def\currentregisterpageindex{#2}%
\iflocation
\def\currentregisterseeindex{#3}%
@@ -786,11 +761,11 @@
\goto{\applyprocessor{#1}{#2}}[seeindex:\currentregisterseeindex]%
\fi}
-\unexpanded\def\defaultregisterseeword#1#2#3#4#5#6% i n #3:processor #4:internal #5:seeindex #6:word
+\def\defaultregisterseeword#1#2#3#4#5#6% i n #3:processor #4:internal #5:seeindex #6:word
{%\registerpageseparator
\def\currentregisterpageindex{#4}%
\dostarttagged\t!registersee\empty
- \settrue\c_strc_registers_page_done
+ \settrue\registerpagedone
\iflocation
\def\currentregisterseeindex{#5}%
\else
@@ -830,44 +805,41 @@
% not yet ok : new internal handler names
-\unexpanded\def\registerpagebuttonsymbol
- {\vrule\s!width\emwidth\s!height\exheight\s!depth\zeropoint\relax}
-
-\installcorenamespace{registersymbol}
+\def\registerpagebuttonsymbol{\vrule\!!width1em\!!height1ex\!!depth\zeropoint\relax}
-\setvalue{\??registersymbol n}%
+\setvalue{\??id:\c!symbol:\c!n}%
{\def\registerpageseparatorsymbol{, }}
-\setvalue{\??registersymbol a}%
+\setvalue{\??id:\c!symbol:\c!a}%
{\def\registerpageseparatorsymbol{, }} % now done via conversion
-\setvalue{\??registersymbol\v!none}%
+\setvalue{\??id:\c!symbol:\v!none}%
{\let\registerpageseparatorsymbol\empty
\let\registeronepage \gobblefourarguments
\let\registerpagerange \gobblesevenarguments}
-\setvalue{\??registersymbol 1}%
+\setvalue{\??id:\c!symbol:1}%
{\let\registerpageseparatorsymbol\space
- \def\registeronepage {\symbol[1]\gobblefourarguments}%
- \def\registerpagerange{\symbol[1]\gobblesevenarguments}}
+ \def\registeronepage {\symbol[1]\gobblefourarguments}%
+ \def\registerpagerange {\symbol[1]\gobblesevenarguments}}
-\setvalue{\??registersymbol 2}%
+\setvalue{\??id:\c!symbol:2}%
{\let\registerpageseparatorsymbol\space
- \def\registeronepage {\registerpagebuttonsymbol\gobblefourarguments}%
- \def\registerpagerange{\registerpagebuttonsymbol\gobblesevenarguments}}
+ \def\registeronepage {\registerpagebuttonsymbol\gobblefourarguments}%
+ \def\registerpagerange {\registerpagebuttonsymbol\gobblesevenarguments}}
\def\setregisterpagerendering
{\doifelse{\registerparameter\c!pagenumber}\v!no
{\let \currentregisterpagesymbol\v!none}
{\edef\currentregisterpagesymbol{\registerparameter\c!symbol}}%
\ifx\currentregisterpagesymbol\empty
- \csname\??registersymbol n\endcsname
- \else\ifcsname\??registersymbol\currentregisterpagesymbol\endcsname
- \csname\??registersymbol\currentregisterpagesymbol\endcsname
+ \csname\??id:\c!symbol:\c!n\endcsname
+ \else\ifcsname\??id:\c!symbol:\currentregisterpagesymbol\endcsname
+ \csname\??id:\c!symbol:\currentregisterpagesymbol\endcsname
\else
\let\registerpageseparatorsymbol\space
- \def\registeronepage{\registerparameter\c!symbol\gobblefourarguments}%
- \def\registerpagerange{\registerparameter\c!symbol\gobblesevenarguments}%
+ \def\registeronepage {\registerparameter\c!symbol\gobblefourarguments}%
+ \def\registerpagerange {\registerparameter\c!symbol\gobblesevenarguments}%
\fi\fi}
\appendtoks
@@ -881,6 +853,6 @@
\defineregister
[\v!index]
-% [\v!indices]
+ [\v!indices]
\protect \endinput