diff options
author | Context Git Mirror Bot <phg42.2a@gmail.com> | 2016-04-25 14:10:48 +0200 |
---|---|---|
committer | Context Git Mirror Bot <phg42.2a@gmail.com> | 2016-04-25 14:10:48 +0200 |
commit | 4668b7323a6bc1b01e72418fb646b697d68bbcb7 (patch) | |
tree | 926785b550bed158e0489d209edbab366c6997c2 /tex/context/base/mkiv/strc-reg.mkiv | |
parent | 55666205c2c1a7287105e23f58e2047c1e0dbc5a (diff) | |
download | context-4668b7323a6bc1b01e72418fb646b697d68bbcb7.tar.gz |
2016-04-25 13:34:00
Diffstat (limited to 'tex/context/base/mkiv/strc-reg.mkiv')
-rw-r--r-- | tex/context/base/mkiv/strc-reg.mkiv | 81 |
1 files changed, 59 insertions, 22 deletions
diff --git a/tex/context/base/mkiv/strc-reg.mkiv b/tex/context/base/mkiv/strc-reg.mkiv index 1d28db8df..5b32c6fc8 100644 --- a/tex/context/base/mkiv/strc-reg.mkiv +++ b/tex/context/base/mkiv/strc-reg.mkiv @@ -159,6 +159,9 @@ %D Registering: +\global\let\currentregistername \empty +\global\let\currentregisternumber\!!zerocount + \def\strc_registers_register_page_entry {\iftrialtypesetting \expandafter\gobblethreearguments @@ -250,6 +253,7 @@ \setnextinternalreference % we could consider storing register entries in a list which we % could then sort + \glet\currentregistername\currentregister \xdef\currentregisternumber{\clf_storeregister % 'own' should not be in metadata metadata {% name {\currentregister}% @@ -315,6 +319,7 @@ {\begingroup \edef\currentregister{#1}% \setnextinternalreference + \glet\currentregistername\currentregister \xdef\currentregisternumber{\clf_storeregister {% metadata {% @@ -771,6 +776,16 @@ \newdimen\d_strc_registers_hangindent \newcount\c_strc_registers_hangafter +\unexpanded\def\usenestedregisterstyleandcolor#1#2% will change + {\useregisterstyleandcolor#1#2% + % how about style + \ifconditional\c_strc_registers_text_interaction + \ifx\currentcolorparameter\empty \else + \resetinteractionparameter\c!color + \resetinteractionparameter\c!contrastcolor + \fi + \fi} + \unexpanded\def\startregisterentries#1% depth {\endgraf \begingroup @@ -778,7 +793,7 @@ \dostarttagged\t!registerentries\empty \let\savedcurrentregister\currentregister \edef\currentregister{\currentregister:\number\scratchcounter}% - \useregisterstyleandcolor\c!textstyle\c!textcolor + \usenestedregisterstyleandcolor\c!textstyle\c!textcolor \ifnum\scratchcounter>\plusone \advance\leftskip\d_strc_registers_distance\relax \fi @@ -863,7 +878,7 @@ \unexpanded\def\withregisterpagecommand#1#2#3#4% {\def\currentregisterpageindex{#2}% \iflocation - \strc_references_goto_internal{\applyprocessor{#1}{\registerparameter\c!pagecommand{#4}}}[#2]% + \strc_references_goto_internal{\applyprocessor{#1}{\registerparameter\c!pagecommand{#4}}}[internal(#2)]% \else \applyprocessor{#1}{\registerparameter\c!pagecommand{#4}}% \fi} @@ -888,18 +903,6 @@ \dostoptagged \dostoptagged} -% \unexpanded\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\doapplyregisterentrycommand{#1}{#4}}[internal(#2)]} -% {\doapplyregisterentrycommand{#1}{#4}}% -% \else -% \let\currentregisterseeindex\empty -% \doapplyregisterentrycommand{#1}{#4}% -% \fi} - \unexpanded\def\defaultregisterentry#1#2#3#4% #1:processor #2:internal #3:seeindex #4:word {\def\currentregisterpageindex{#2}% \iflocation @@ -923,14 +926,6 @@ \applyprocessor{#1}{\registerparameter\c!textcommand{\limitedregisterentry{\registerparameter\c!deeptextcommand{#2}}}}% \dostoptagged} -% \unexpanded\def\doapplyregisterseecommand#1#2% -% {\ifx\currentregisterseeindex\empty -% % \dontleavehmode -% \applyprocessor{#1}{#2}% -% \else -% \goto{\applyprocessor{#1}{#2}}[seeindex:\currentregisterseeindex]% -% \fi} - \unexpanded\def\doapplyregisterseecommand#1#2% {\ifx\currentregisterseeindex\empty \applyprocessor{#1}{#2}% @@ -1032,6 +1027,48 @@ %D The linked register code will be reimplemented (not that hard) when it's needed %D again and/or when I'm bored. + \def\findregisterinternal#1#2#3{\clf_findregisterinternal{#1}{#2}#3\relax} +\unexpanded\def\pageofinternal #1{\clf_pageofinternal#1\relax} + +\unexpanded\def\linkedregisterentrylink#1#2#3#4% tag where before after + {\iflocation + \scratchcounter\findregisterinternal{#1}{#2}\currentregisternumber\relax\relax + \ifcase\scratchcounter\else + #3\relax + \goto{\symbol[#2]}[internal(\the\scratchcounter)]% + #4\relax + \fi + \else + % \scratchcounter\findregisterinternal{#1}{#2}\currentregisternumber\relax\relax + % \ifcase\scratchcounter\else + % #3\relax + % \pageofinternal\scratchcounter + % #4\relax + % \fi + \fi} + +\unexpanded\def\linkedregisterentry#1% + {\dontleavehmode + \begingroup + \setbox\scratchbox\hbox{#1}% + \linkedregisterentrylink\currentregistername\v!previous\relax\nobreakspace + \unhbox\scratchbox + \linkedregisterentrylink\currentregistername\v!next\nobreakspace\relax + \endgroup} + +\unexpanded\def\registerpacked#1#2% + {\iflocation + \hskip\d_strc_registers_distance\relax + \nobreak + \ifnum#1=#2\relax + \goto{\symbol[\v!somewhere]}[internal(#1)]% + \else + \goto{\symbol[\v!first]}[internal(#1)]% + \nobreakspace + \goto{\symbol[\v!last]}[internal(#2)]% + \fi + \fi} + %D Default index: \defineregister |