diff options
Diffstat (limited to 'Master/texmf-dist/tex/context/base/strc-reg.mkiv')
-rw-r--r-- | Master/texmf-dist/tex/context/base/strc-reg.mkiv | 616 |
1 files changed, 167 insertions, 449 deletions
diff --git a/Master/texmf-dist/tex/context/base/strc-reg.mkiv b/Master/texmf-dist/tex/context/base/strc-reg.mkiv index fcc37549c44..19634390dba 100644 --- a/Master/texmf-dist/tex/context/base/strc-reg.mkiv +++ b/Master/texmf-dist/tex/context/base/strc-reg.mkiv @@ -17,9 +17,6 @@ \unprotect -\def\c!keys {keys} -\def\c!entries{entries} - % todo: tag:: becomes rendering % todo: language, character, linked, location @@ -117,10 +114,13 @@ \c!prefix=\v!both, %\c!expansion=, %\c!xmlsetup=, + \c!pagenumber=\v!yes, \c!pageprefixconnector=\endash, \c!pagesegments=2:2, \c!file=\jobname, %\c!deeptextcommand=, % undefined by default ! + \c!method=, % no default as we have them in the module, maybe some day in lang-* + \c!numberorder=\v!numbers, % \v!characters \s!language=\currentmainlanguage]% %D Definition: @@ -130,7 +130,7 @@ \def\dodefineregister[#1][#2]% #2? {\setupregister[#1][\s!parent=\??id]% - \ctxlua{jobregisters.define('#1')}% + \ctxlua{structures.registers.define('#1')}% \presetheadtext[#1=\Word{#1}]% \setuvalue{#1}{\dodoubleempty\doregister[#1]}% \setuvalue{\e!see#1}{\dodoubleempty\doseeregister[#1]}% @@ -223,24 +223,24 @@ % we could consider storing register entries in a list which we % could then sort \xdef\currentregisternumber{\ctxlua{ - jobregisters.store { % 'own' should not be in metadata + structures.registers.store { % 'own' should not be in metadata metadata = { kind = "entry", name = "\currentregister", - level = structure.sections.currentlevel(), + level = structures.sections.currentlevel(), coding = "\currentregistercoding", catcodes = \the\catcodetable, \ifx\currentregisterownnumber\v!yes own = "\registerparameter\c!alternative", % can be used instead of pagenumber \fi xmlroot = \ifx\currentreferencecoding\s!xml "\xmldocument" \else nil \fi, % only useful when text -\ifx\currentregisterxmlsetup\empty \else - xmlsetup = "\currentregisterxmlsetup", -\fi + \ifx\currentregisterxmlsetup\empty \else + xmlsetup = "\currentregisterxmlsetup", + \fi }, references = { internal = \nextinternalreference, - section = structure.sections.currentid(), % hm, why then not also lastsection the same way + section = structures.sections.currentid(), % hm, why then not also lastsection the same way label = "\currentregisterlabel", }, % \ifx\currentregisterentries\empty \else @@ -258,16 +258,18 @@ \fi }, % \fi - userdata = structure.helpers.touserdata(\!!bs\detokenize{#3}\!!es) + userdata = structures.helpers.touserdata(\!!bs\detokenize{#3}\!!es) } } }% - \ctxlua{jobreferences.setinternalreference(nil,nil,\nextinternalreference)}% + \ctxlua{structures.references.setinternalreference(nil,nil,\nextinternalreference)}% \ifx\currentregisterownnumber\v!yes \glet\currentregistersynchronize\relax \else - \xdef\currentregistersynchronize{\ctxlatelua{jobregisters.enhance("\currentregister",\currentregisternumber)}}% + \xdef\currentregistersynchronize{\ctxlatelua{structures.registers.enhance("\currentregister",\currentregisternumber)}}% \fi \currentregistersynchronize % here? + % needs thinking ... bla\index{bla}. will break before the . but adding a + % penalty is also no solution \attribute\destinationattribute\lastdestinationattribute \forcecolorhack % no \strut as it will be removed during cleanup \endgroup} @@ -296,7 +298,7 @@ \fi} \def\dostopregister[#1][#2]% - {\normalexpanded{\ctxlatelua{jobregisters.extend("#1","#2")}}} + {\normalexpanded{\ctxlatelua{structures.registers.extend("#1","#2")}}} \def\setregisterentry {\dotripleempty\dosetregisterentry} \def\finishregisterentry{\dotripleempty\dofinishregisterentry} @@ -327,18 +329,19 @@ \fi \globallet\currentregistercoding\s!tex \fi + % I hate this kind of mess ... but it's a user request. \ifx\currentregisterentries\empty - \normalexpanded{\ctxlua{jobregisters.extend("\currentregister","\currentregisterlabel", { + \normalexpanded{\ctxlua{structures.registers.extend("\currentregister","\currentregisterlabel", { metadata = { \ifx\currentregisterownnumber\v!yes own = "\registerparameter\c!alternative", % can be used instead of pagenumber \fi }, - userdata = structure.helpers.touserdata(\!!bs\detokenize{#3}\!!es) + userdata = structures.helpers.touserdata(\!!bs\detokenize{#3}\!!es) })% }}% \else - \normalexpanded{\ctxlua{jobregisters.extend("\currentregister","\currentregisterlabel", { + \normalexpanded{\ctxlua{structures.registers.extend("\currentregister","\currentregisterlabel", { metadata = { catcodes = \the\catcodetable, coding = "\currentregistercoding", @@ -350,7 +353,7 @@ % we need a special one for xml, this is just a single one \!!bs\currentregisterentries\!!es, \!!bs\currentregisterkeys\!!es }, - userdata = structure.helpers.touserdata(\!!bs\detokenize{#3}\!!es) + userdata = structures.helpers.touserdata(\!!bs\detokenize{#3}\!!es) }) }}% \fi @@ -387,7 +390,7 @@ {\doflushatpar{\doregisterstructurepageregister{#1}{\c!label=#2,#3}{#4}}} \def\dostopstructurepageregister[#1][#2]% - {\normalexpanded{\ctxlatelua{jobregisters.extend("#1","#2")}}} + {\normalexpanded{\ctxlatelua{structures.registers.extend("#1","#2")}}} % So far. @@ -416,16 +419,16 @@ \fi \setnextinternalreference % we could consider storing register entries in list - \edef\temp{\ctxlua{ jobregisters.store { + \edef\temp{\ctxlua{ structures.registers.store { metadata = { kind = "see", name = "\currentregister", - level = structure.sections.currentlevel(), + level = structures.sections.currentlevel(), catcodes = \the\catcodetable, }, references = { internal = \nextinternalreference, - section = structure.sections.currentid(), + section = structures.sections.currentid(), }, entries = { % we need a special one for xml, this is just a single one @@ -440,6 +443,8 @@ %D Rendering: +% todo: c!language ipv s!language + \let\utilityregisterlength\!!zerocount \def\determineregistercharacteristics @@ -449,10 +454,12 @@ {\begingroup \edef\currentregister{#1}% \setupregister[\currentregister][#2]% - \normalexpanded{\endgroup\noexpand\xdef\noexpand\utilityregisterlength{\ctxlua{jobregisters.analyse('\currentregister',{ - language = "\registerparameter\s!language", - compress = "\registerparameter\c!compress", - criterium = "\registerparameter\c!criterium", + \normalexpanded{\endgroup\noexpand\xdef\noexpand\utilityregisterlength{\ctxlua{structures.registers.analyze('\currentregister',{ + language = "\registerparameter\s!language", + method = "\registerparameter\c!method", + numberorder = "\registerparameter\c!numberorder", + compress = "\registerparameter\c!compress", + criterium = "\registerparameter\c!criterium", })}}}% brrr \ifcase\utilityregisterlength\relax \resetsystemmode\v!register @@ -482,10 +489,12 @@ \c!align=\registerparameter\c!align, \c!tolerance=\registerparameter\c!tolerance]% \startpacked[\v!blank]% - \ctxlua{jobregisters.process('\currentregister',{ - language = "\registerparameter\s!language", - compress = "\registerparameter\c!compress", - criterium = "\registerparameter\c!criterium", + \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", @@ -561,9 +570,23 @@ {\doifsomething{#1} {\doifnot{#1}\s!unknown {\doifelse{\registerparameter\c!indicator}\v!yes - {\expandcheckedcsname{\??id:\c!indicator:}{\registerparameter\c!alternative}{a}{#1}} + {\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} @@ -573,19 +596,31 @@ \setvalue{\??id:\c!indicator:a}#1% {\registerparameter\c!before % bugged, why does leftskip gets set: \vskip\lineheight\goodbreak\vskip-\lineheight - \begingroup\dosetregisterattributes\c!style\c!color - \registerparameter\c!command{\strut#1}% + \begingroup + \dosetregisterattributes\c!style\c!color + \dontleavehmode + \strut + \iflocation + \pagereference[\currentregister:\v!section:#1]% + \fi + \registerparameter\c!command{#1}% \endgroup \registerparameter\c!after - \par\nobreak} - + \par + \nobreak} % b = <goodbreak> <before> <character> <after> <nobreak> -\setvalue{\??id:\c!indicator:b}#1% +\setvalue{\??id:\c!indicator:b}#1% will be shared with a {\registerparameter\c!before - \begingroup\dosetregisterattributes\c!style\c!color - \registerparameter\c!command{\strut#1}% + \begingroup + \dosetregisterattributes\c!style\c!color + \dontleavehmode + \strut + \iflocation + \pagereference[\currentregister:\v!section:#1]% + \fi + \registerparameter\c!command{#1}% \endgroup \registerparameter\c!after \nobreak} @@ -603,47 +638,60 @@ \unexpanded\def\startregisteroutput {\endgraf \begingroup + \dostarttagged\t!register\currentregister \forgetparindent \forgetparskip} \unexpanded\def\stopregisteroutput {\endgraf + \dostoptagged \endgroup} \unexpanded\def\startregisterentries#1% depth {\endgraf \begingroup + \dostarttagged\t!registerentries\empty \dosetregisterattributes\c!textstyle\c!textcolor \advance\leftskip\numexpr#1-1\relax\dimexpr\registerparameter\c!distance\relax \hangindent\registerparameter\c!distance\hangafter\plusone} \unexpanded\def\stopregisterentries {\endgraf + \dostoptagged \endgroup} \unexpanded\def\startregistersection#1% title - {\registercharacter{#1}\endgraf} + {\dostarttagged\t!registersection\empty + \dostarttagged\t!registertag\empty + \registercharacter{#1}\endgraf + \dostoptagged} \unexpanded\def\stopregistersection - {\endgraf} + {\dostoptagged + \endgraf} \newconditional\registerpagedone \unexpanded\def\startregisterpages {\begingroup + \dostarttagged\t!registerpages\empty \setfalse\registerpagedone \dosetregisterattributes\c!pagestyle\c!pagecolor} \unexpanded\def\stopregisterpages - {\endgroup} + {\dostoptagged + \endgroup} \unexpanded\def\startregisterseewords - {\begingroup + {\ifhmode\crlf\fi + \begingroup \setfalse\registerpagedone + \dostarttagged\t!registerpage\empty \dosetregisterattributes\c!pagestyle\c!pagecolor} \unexpanded\def\stopregisterseewords - {\endgroup} + {\dostoptagged + \endgroup} \def\registerpageseparator% todo: , configurable {\ifconditional\registerpagedone @@ -655,30 +703,79 @@ \def\registeronepagerangeseparator{|\endash|} -\def\withregisterpagecommand#1#2#3% - {\def\currentregisterpageindex{#1}% +\def\withregisterpagecommand#1#2#3#4% + {\def\currentregisterpageindex{#2}% \iflocation - \goto{\registerparameter\c!pagecommand{#3}}[internal(#1)]% + \goto{\registerparameter\c!pagecommand{#4}}[internal(#2)]% \else - \registerparameter\c!pagecommand{#3}% + \registerparameter\c!pagecommand{#4}% \fi} -\def\registeronepage#1#2#3% content +\def\registeronepage#1#2#3#4% #1:processor content {\registerpageseparator - \withregisterpagecommand{#1}{#2}{#3}} + \dostarttagged\t!registerpage\empty + \withregisterpagecommand{#1}{#2}{#3}{#4}% + \dostoptagged} -\def\registerpagerange#1#2#3#4#5#6% content, content todo: -- configurable +\def\registerpagerange#1#2#3#4#5#6#7% #1:processor content, content todo: -- configurable {\registerpageseparator - \withregisterpagecommand{#1}{#2}{#3}% + \dostarttagged\t!registerpagerange\empty + \dostarttagged\t!registerfrompage\empty + \withregisterpagecommand{#1}{#2}{#3}{#4}% + \dostoptagged \registeronepagerangeseparator - \withregisterpagecommand{#4}{#5}{#6}} + \dostarttagged\t!registertopage\empty + \withregisterpagecommand{#1}{#5}{#6}{#7}% + \dostoptagged + \dostoptagged} + +\def\doapplyregisterentrycommand#1#2% processor text + {\dostarttagged\t!registerentry\empty + \ifx\currentregisterseeindex\empty \else + \dontleavehmode + \pagereference[seeindex:\currentregisterseeindex]% maybe some day we will support an area + \fi + \applyprocessor{#1}{\registerparameter\c!textcommand{\limitedregisterentry{\registerparameter\c!deeptextcommand{#2}}}}% + \dostoptagged} -\def\registeroneword#1#2#3% content - {\registerpageseparator - \registerseeword{#3}} +\def\defaultregisterentry#1#2#3#4% #1:processor #2:internal #3:seeindex #4:word + {\def\currentregisterpageindex{#2}% + \iflocation + \def\currentregisterseeindex{#3}% + \doifelse{\registerparameter\c!interaction}\v!text + {\directgoto{\setlocationcolor\??ia\doapplyregisterentrycommand{#1}{#4}}[internal(#2)]} + {\doapplyregisterentrycommand{#1}{#4}}% + \else + \let\currentregisterseeindex\empty + \doapplyregisterentrycommand{#1}{#4}% + \fi} + +\unexpanded\def\doapplyregisterseecommand#1#2% + {\ifx\currentregisterseeindex\empty + % \dontleavehmode + \applyprocessor{#1}{#2}% + \else + \goto{\applyprocessor{#1}{#2}}[seeindex:\currentregisterseeindex]% + \fi} -\def\defaultregisterentry #1{\registerparameter\c!textcommand{\limitedregisterentry{\registerparameter\c!deeptextcommand{#1}}}} -\def\defaultregisterseeword#1{\labeltexts\v!see{#1}} +\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\registerpagedone + \iflocation + \def\currentregisterseeindex{#5}% + \else + \let\currentregisterseeindex\empty + \fi + \ifnum#1=\plusone + \labeltexts\v!see{\doapplyregisterseecommand{#3}{#6}}% + \else\ifnum#1=#2\relax + \labeltexts\v!and{\doapplyregisterseecommand{#3}{#6}}% + \else + ,\space\doapplyregisterseecommand{#3}{#6}% + \fi\fi + \dostoptagged} \let\registerseeword \defaultregisterseeword \let\registerentry \defaultregisterentry @@ -700,7 +797,7 @@ % \placeregister[index][n=1,pagecommand=\MyRegisterPageCommand] % \stoptext -\def\registerpageuserdata #1#2{\ctxlua{jobregisters.userdata(#1,"#2")}} +\def\registerpageuserdata #1#2{\ctxlua{structures.registers.userdata(#1,"#2")}} \def\currentregisterpageuserdata {\registerpageuserdata\currentregisterpageindex} % {#1} % not yet ok : new internal handler names @@ -715,423 +812,44 @@ \setvalue{\??id:\c!symbol:\v!none}% {\let\registerpageseparatorsymbol\empty - \let\registeronepage \gobblethreearguments - \let\registerpagerange \gobblesixarguments} + \let\registeronepage \gobblefourarguments + \let\registerpagerange \gobblesevenarguments} \setvalue{\??id:\c!symbol:1}% {\let\registerpageseparatorsymbol\space - \def\registeronepage {\symbol[1]\gobblethreearguments}% - \def\registerpagerange {\symbol[1]\gobblesixarguments}} + \def\registeronepage {\symbol[1]\gobblefourarguments}% + \def\registerpagerange {\symbol[1]\gobblesevenarguments}} \setvalue{\??id:\c!symbol:2}% {\let\registerpageseparatorsymbol\space - \def\registeronepage {\registerpagebuttonsymbol\gobblethreearguments}% - \def\registerpagerange {\registerpagebuttonsymbol\gobblesixarguments}} + \def\registeronepage {\registerpagebuttonsymbol\gobblefourarguments}% + \def\registerpagerange {\registerpagebuttonsymbol\gobblesevenarguments}} \def\setregisterpagerendering - {\edef\currentregisterpagesymbol{\registerparameter\c!symbol}% + {\doifelse{\registerparameter\c!pagenumber}\v!no + {\let \currentregisterpagesymbol\v!none} + {\edef\currentregisterpagesymbol{\registerparameter\c!symbol}}% \ifx\currentregisterpagesymbol\empty \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\gobblethreearguments}% - \def\registerpagerange {\registerparameter\c!symbol\gobblesixarguments}% + \def\registeronepage {\registerparameter\c!symbol\gobblefourarguments}% + \def\registerpagerange {\registerparameter\c!symbol\gobblesevenarguments}% \fi\fi} \appendtoks \setregisterpagerendering \to \everyplaceregister -% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % -% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % -% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % - -%D The following code will be reimplemented (not that hard) when it's needed +%D The linked register code will be reimplemented (not that hard) when it's needed %D again and/or when I'm bored. -% \def\getalllistreferences#1#2% -% {\gdefconvertexpanded\currentregisterentry{\getvalue{\??id#1\c!expansion}}{#2}% -% \doifdefinedelse{\??id#1\??id\currentregisterentry} -% {\edef\alllistreferences% -% {\getvalue{\??id#1\??id\currentregisterentry}}% -% \beforesplitstring\alllistreferences\at::\to\internallistreference -% \aftersplitstring \alllistreferences\at::\to\alllistreferences} -% {\let\alllistreferences\empty -% \def\internallistreference{0}}} - -% \def\dosetlinkregister#1% is die page reference echt nodig? -% {\setregisterpage{#1}% -% \global\let\currentregisterentry\empty -% \global\firstsubentrytrue % not needed -% \global\firstsubsubentrytrue % not needed too -% \setvalue{#1\s!entrya}##1{\dosetlinkregisterentrya{#1}{##1}}% -% \setvalue{#1\s!entry }##1{\dosetpageregisterletter{#1}{##1}}} - -% \def\dosetlinkregisterentrya#1#2% -% {\global\utilitydonetrue -% \c!entryletter -% \iflocation -% \getalllistreferences{#1}{#2}% -% % no \endgraf -% \hangindent1em\noindent\c!entryreference -% % -% %\thisissomeinternal{\s!lin}{\internallistreference}% -% % -% \pagereference[-:\s!lin:\internallistreference]% -: added -% % -% \getcommacommandsize[\alllistreferences]% -% \getfromcommacommand[\alllistreferences][1]% -% \ifnum\commalistsize=1 -% \let\firstlistreference\empty -% \let\midlistreference\commalistelement -% \let\lastlistreference\empty -% \else -% \let\firstlistreference\commalistelement -% \getfromcommacommand[\alllistreferences][\commalistsize]% -% \let\lastlistreference\commalistelement -% \ifnum\commalistsize=2 -% \let\midlistreference\empty -% \else -% \!!counta\commalistsize -% \divide\!!counta 2 -% \getfromcommacommand[\alllistreferences][\!!counta]% -% \let\midlistreference\commalistelement -% \fi -% \fi -% % aangepast -% \def\dodocommand[##1-##2]% -% {\gotonextinternal{\s!ind}{##1}{##2}{\box0}}% -% \doifelsevalue{\??id#1\c!interaction}\v!pagenumber -% {\limitedregisterentry{#1}{#2}} % paginanummer -% {{\setbox0\hbox{\limitedregisterentry{#1}{\begstrut#2}}% -% \ifx\firstlistreference\empty % tekst,alles -% \ifx\midlistreference\empty -% \box0 -% \else -% \expandafter\dodocommand\expandafter[\midlistreference]% -% \fi -% \else -% \expandafter\dodocommand\expandafter[\firstlistreference]% -% \fi}}% -% \doifvalue{\??id#1\c!number}\v!yes -% {\hskip\getvalue{\??id#1\c!distance}(\commalistsize)}% -% \doifnotvalue{\??id#1\c!interaction}\v!text % paginanummer,alles -% {\def\docommand##1##2% -% {{\setbox0\hbox{\showlocation{\hbox to 1em{\hss\symbol[##2]\hss}}}% -% \ifx##1\empty -% % \hskip\wd0 % (optioneel maken) -% \else -% \expandafter\dodocommand\expandafter[##1]% -% \fi}}% -% \hskip\getvalue{\??id#1\c!distance}% -% \docommand\firstlistreference\v!previous -% \docommand\midlistreference\v!somewhere -% \docommand\lastlistreference\v!next}% -% % tot hier -% \else -% % no \endgraf -% \noindent\c!entryreference -% \limitedregisterentry{#1}{#2}% -% \fi -% \endgraf} - -% \def\dosetregister#1% -% {\doifelsevalue{\??id#1\c!coupling}\v!yes -% {\ifautoregisterhack -% \dosetautoregister{#1}% -% \else -% \dosetlinkregister{#1}% -% \fi} -% {\dosetpageregister{#1}}} - -% \def\dosetregister#1% -% {\dosetpageregister{#1}} - -% \newcounter\internallistreference - -% \def\doloadregisterlinks#1% -% {\setregisterpage{#1}% -% \global\let\currentregisterentry\empty -% \global\firstregisterpagetrue -% \setvalue{#1\s!entrya}##1% -% {\global\firstregisterpagetrue -% \gdefconvertedargument\currentregisterentry{##1}% global nodig? -% \doglobal\increment\internallistreference}% -% \setvalue{#1\s!from}% -% {\getvalue{#1\s!page}}% -% \ifautoregisterhack -% \setvalue{#1\s!page}##1##2##3##4% -% {\doifreglevelelse[##3] -% {\global\utilitydonetrue -% \iffirstregisterpage -% \@EA\xdef\csname\??id#1\??id\currentregisterentry\endcsname -% {\internallistreference::##4}% -% \else % catches errors in index -% \ifcsname\??id#1\??id\currentregisterentry\endcsname -% \@EA\xdef\csname\??id#1\??id\currentregisterentry\endcsname -% {\csname\??id#1\??id\currentregisterentry\endcsname,##4}% -% \fi -% \fi} -% {}}% -% \else -% \setvalue{#1\s!page}##1##2##3##4% -% {\doifreglevelelse[##3] -% {\global\utilitydonetrue -% \iffirstregisterpage -% \global\firstregisterpagefalse -% \@EA\xdef\csname\??id#1\??id\currentregisterentry\endcsname -% {\internallistreference::##2-##4}% -% \else % catches errors in index -% \ifcsname\??id#1\??id\currentregisterentry\endcsname -% \@EA\xdef\csname\??id#1\??id\currentregisterentry\endcsname -% {\csname\??id#1\??id\currentregisterentry\endcsname,##2-##4}% -% \fi -% \fi} -% {}}% -% \fi} - -% \def\docoupleregister[#1][#2]% -% {\iflocation -% \ifcase0\countervalue{autolink:#1}\relax % only once -% \begingroup -% \let\dosetregister\doloadregisterlinks -% \def\currentregister{#1}% -% \setupregister[#1][#2]% -% \mkloadregister\currentregister\dobeforeplaceregister\doafterplaceregister -% \endgroup -% \ifautoregisterhack -% \doinitializeautoregister{#1}% -% \else -% \doinitializelinkregister{#1}% -% \fi -% \fi -% \fi} - -% \def\coupleregister -% {\dodoubleempty\docoupleregister} - -% \def\dodocommandprolinrefAA[#1-#2]% -% {\def\lastlistreference{#1-#2}} - -% \def\dodocommandprolinrefA[#1-#2]% -% {\def\lastlistreference{#1-#2}% -% \ifx\firstlistreference\empty -% \let\firstlistreference\lastlistreference -% \fi -% \ifnum#1<\nextinternalreference\relax -% \let\prevlistreference\lastlistreference -% \else\ifnum#1>\nextinternalreference\relax -% \let\nextlistreference\lastlistreference -% \let\dodocommandprolinrefA\dodocommandprolinrefAA -% \else -% \let\selflistreference\lastlistreference -% \fi\fi} - -% \def\docommandprolinrefA#1% -% {\dodocommandprolinrefA[#1]} - -% \def\dodocommandprolinrefB[#1-#2]% -% {\gotonextinternal{\s!ind}{#1}{#2}{\box0}} - -% \def\docommandprolinrefB#1#2#3% -% {\bgroup -% \ifx#2\empty -% \doifvalue{\??id#1\c!unknownreference}\v!empty{\hskip1em}% -% \else -% \setbox0\hbox to 1em{\hss\showlocation{\symbol[#3]}\hss}% -% \expandafter\dodocommandprolinrefB\expandafter[#2]% -% \fi -% \egroup} - -% \def\doprocesslinkregister[#1][#2]#3% -% {\hbox -% {\doprocesspageregister{}{#2}{}{#3}% -% \let\firstlistreference\empty -% \let\lastlistreference\empty -% \let\selflistreference\empty -% \let\prevlistreference\empty -% \let\nextlistreference\empty -% \getalllistreferences{#1}{#3}% -% \ifx\alllistreferences\empty \else -% \normalexpanded{\noexpand\rawprocesscommalist[\alllistreferences]}\docommandprolinrefA -% \fi -% \ifx\prevlistreference\empty -% \let\prevlistreference\lastlistreference -% \fi -% \ifx\nextlistreference\empty -% \let\nextlistreference\firstlistreference -% \fi -% \ifx\prevlistreference\selflistreference -% \let\prevlistreference\empty -% \let\nextlistreference\empty -% \fi -% \setalignmentswitch{\getvalue{\??id#1\c!location}}% -% \ifcase\alignmentswitch -% % links -% \docommandprolinrefB{#1}\prevlistreference\v!previous -% \docommandprolinrefB{#1}\nextlistreference\v!next -% \or -% % midden -% \docommandprolinrefB{#1}\prevlistreference\v!previous -% \or -% % rechts -% \fi -% \doifreferencefoundelse{\s!lin:\internallistreference} -% {\gotosomeinternal -% \s!lin \internallistreference \currentrealreference -% {\showlocation{\limitedregisterentry{#1}{#3}}}} -% {\hbox{\limitedregisterentry{#1}{#3}}}% -% \ifcase\alignmentswitch -% % links -% \or -% % midden -% \docommandprolinrefB{#1}\nextlistreference\v!next -% \or -% % rechts -% \docommandprolinrefB{#1}\prevlistreference\v!previous -% \docommandprolinrefB{#1}\nextlistreference\v!next -% \fi}} - -% \def\doprocesslinkedregister[#1][#2]#3% page auto link -% {\bgroup -% \chardef\registerpagestatus\plusone -% \def\currentregister{#1}% -% \iflocation % \next is not needed -% \ifautoregisterhack -% \def\next{\doprocessautoregister[#1][#2]}% -% \else -% \def\next{\doprocesslinkregister[#1][#2]}% -% \fi -% \else -% \def\next{\doprocesspageregister{}{#2}{}}% -% \fi -% \next{#3}% -% \egroup} - -% \def\dodolinkedregister[#1][#2]#3% page auto link -% {\doflushatpar{\doprocesslinkedregister[#1][#2]{#3}}} - -% \def\dolinkedregister#1% -% {\dodoubleempty\dodolinkedregister[#1]} - -% \def\dosetautoregister#1% -% {\makecounter{autolink:#1}% -% \setregisterpage{#1}% -% \global\let\currentregisterentry\empty -% \global\firstsubentrytrue % not needed -% \global\firstsubsubentrytrue % not needed too -% \setvalue{#1\s!entrya}##1{\dosetautoregisterentrya{#1}{##1}}% -% \setvalue{#1\s!entry }##1{\dosetpageregisterletter{#1}{##1}}} - -% \def\dosetautoregisterentrya#1#2% -% {\global\utilitydonetrue -% \c!entryletter -% \iflocation -% \getalllistreferences{#1}{#2}% -% \endgraf\hangindent1em\noindent\c!entryreference -% \pagereference[-:\s!lin:\internallistreference]% -% \pluscounter{autolink:#1}% -% \bgroup -% %\setupinteraction[\c!color=,\c!contrastcolor=,\c!style=]% kan sneller -% \resetinteractionparameter\c!color -% \resetinteractionparameter\c!contrastcolor -% \resetinteractionparameter\c!style -% \gotobox -% {\limitedregisterentry{#1}{\begstrut#2}}% -% [JS(SetRegisterEntry{\v!register,\countervalue{autolink:#1},#2,{\alllistreferences}})]% -% \egroup -% \else -% \endgraf\noindent\c!entryreference -% \limitedregisterentry{#1}{#2}% -% \fi} - -% \def\doprocessautoregister[#1][#2]#3% -% {\hbox -% {\doprocesspageregister{}{#2}{}{#3}% -% \doifreferencefoundelse{\s!lin:\internallistreference} -% {\gotosomeinternal \s!lin -% {\internallistreference}{\currentrealreference} -% {\showlocation{\limitedregisterentry{#1}{#3}}}} -% {\hbox{\limitedregisterentry{#1}{#3}}}}} - -% \appendmacro aan openpaginaactie (in shipout) - -%D The first implementation used one main field with clones. -%D In a 2500 page document this resulted in a rather (anoying) -%D long start||up time. This \quote {every page its own field} -%D solution, combined with a \quote {page open action}, works -%D much faster, but is conceptually pretty weak. - -% \def\complexregisterfield[#1]% -% {\definefield[#1:\realfolio][line][\v!register]% -% \field[#1:\realfolio]} - -% \def\simpleregisterfield -% {\complexregisterfield[\v!register]} - -% \definecomplexorsimple\registerfield - -% \appendtoks -% % for now -% \setupfield -% [\v!register] -% [\c!width=10em, -% \c!height=3ex, -% \c!align=\v!middle, -% \c!option=\v!readonly, -% \c!location=\v!low] -% \to \everydump - -% \def\doinitializeautoregister#1% -% {\useJSscripts[reg]% -% \useJSpreamblenow{LinkedRegisters}% -% \setupinteraction[\c!openpageaction=JS(UpdateRegisterField{\v!register})]% -% \definereference[\v!reset\v!register][JS(ResetRegisterEntry{\v!register})]% -% \definereference[\v!first\v!register][JS(GotoFirstRegisterEntry{\v!register})]% -% \definereference[\v!previous\v!register][JS(GotoPreviousRegisterEntry{\v!register})]% -% \definereference[\v!next\v!register][JS(GotoNextRegisterEntry{\v!register})]% -% \definereference[\v!last\v!register][JS(GotoLastRegisterEntry{\v!register})]} - -% \def\doinitializelinkregister#1% -% {} - -% todo ruwe register - %D Default index: \defineregister [\v!index] [\v!indices] -% \setupregister[index][koppeling=ja] -% -% \stelveldenin -% [register][achtergrond=raster,kader=uit] -% -% \stelvoettekstenin -% [{\field[index]}] -% -% \stelhoofdtekstenin -% [{\naar {first}[eersteindex]\quad -% \naar{previous}[vorigeindex]\quad -% \naar {next}[volgendeindex]\quad -% \naar {last}[laatsteindex]\quad\quad -% \naar {index}[index]}] -% -% \starttekst -% -% oeps~~~\gekoppeldeindex{oeps} \blanko -% flop~~~\gekoppeldeindex{flop} \blanko -% test~~~\gekoppeldeindex{test} \pagina -% flop~~~\gekoppeldeindex{flop} \blanko -% test~~~\gekoppeldeindex{test} \pagina -% oeps~~~\gekoppeldeindex{oeps} \blanko -% test~~~\gekoppeldeindex{test} \pagina -% flop~~~\gekoppeldeindex{flop} \blanko -% oeps~~~\gekoppeldeindex{oeps} \pagina -% -% \volledigeindex - \protect \endinput |