diff options
author | Karl Berry <karl@freefriends.org> | 2006-11-16 01:02:47 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-11-16 01:02:47 +0000 |
commit | 3c85b55e2f245fb7edac7e445f107e6d0bb423ae (patch) | |
tree | c62b7f80edafe0455310d08e09f4218127bf9e87 /Master/texmf-dist/tex/context/base/core-reg.tex | |
parent | e5ecff27a26ef59e1dbe9702677687fd7107be3a (diff) |
context update
git-svn-id: svn://tug.org/texlive/trunk@2444 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/context/base/core-reg.tex')
-rw-r--r-- | Master/texmf-dist/tex/context/base/core-reg.tex | 458 |
1 files changed, 362 insertions, 96 deletions
diff --git a/Master/texmf-dist/tex/context/base/core-reg.tex b/Master/texmf-dist/tex/context/base/core-reg.tex index 431cee6b9d6..309aee2f9ed 100644 --- a/Master/texmf-dist/tex/context/base/core-reg.tex +++ b/Master/texmf-dist/tex/context/base/core-reg.tex @@ -80,6 +80,34 @@ % % \index[Ätsch]{Ätsch} test \index{QÄtsch} test \index[ratsch]{RÄtsch} test +% \def\doprocesspageregister[#1]#2#3% key altnum entry +% {\begingroup +% \thisisnextinternal\s!ind +% \ifduplicate\getlastregisterentry{#3}\fi +% \convertexpanded{\registerparameter\c!keyexpansion}{#1}\asciiregisterentryA +% \convertexpanded{\registerparameter\c!expansion }{#3}\asciiregisterentryB +% \doifsomething{\registerparameter\c!keyexpansion} +% {\ifx\asciiregisterentryA\empty +% \convertexpanded{\registerparameter\c!keyexpansion}{#3}\asciiregisterentryA +% \fi}% +% \makesectionformat +% \doifelse{\registerparameter\c!ownnumber}\v!yes +% \donetrue\donefalse +% % the spaces between } { are essential for texutil's split +% \expanded +% {\writeutility% +% {r \ifcase\registerpagestatus\space\or e \or f \or t \fi +% {\currentregister} % +% {\nextinternalreference} % +% {\asciiregisterentryA} % +% {\asciiregisterentryB} % +% {\sectionformat\sectionseparator\sectionseparator +% \ifdone#2\else\noexpand\pagenumber\fi} % +% {\noexpand\realfolio}}}% +% \getfirstcharacter\currentregister +% \registerinfo{> \firstcharacter}{#3}% +% \endgroup} + \def\doprocesspageregister[#1]#2#3% key altnum entry {\begingroup \thisisnextinternal\s!ind @@ -123,49 +151,58 @@ % \ifvmode\nobreak\fi % \GotoPar} +% \long\def\doflushatpar#1% +% %{\dogotopar{#1}} +% %{\dogotopar{\dontleavehmode#1}} % this one can introduce empty lines +% {\dogotopar{#1\ifvmode\nobreak\fi}} % while this one can mess up vertical space +% +% fails when [text] \index{test} [empty line] [text] so we now have +% Taco's test based solution: + +\def\doflushatpar + {\ifvmode + \expandafter\dogotopar + \else + \expandafter\firstofoneargument + \fi} + \def\dodoregister[#1]#2#3% - {\dogotopar{\doprocesspageregister[#1]{#2}{#3}}} + {\doflushatpar{\doprocesspageregister[#1]{#2}{#3}}} \def\writetoregister[#1]% to be documented {\doregister{#1}} \def\startregister - {\dodoubleargument\dostartregister} - -%\def\dostartregister[#1][#2]#3% -% {\chardef\registerpagestatus=2 -% \def\currentregister{#1}% -% \setgvalue{\??id#1\??id#2}{\dodostopregister[#1][#2]{#3}}% -% \complexdoregister[#2]{#3}} + {\dotripleempty\dostartregister} -\def\dostartregister[#1][#2]#3% - {\chardef\registerpagestatus2 +\def\dostartregister[#1][#2][#3]#4% + {\chardef\registerpagestatus\plustwo \def\currentregister{#1}% - \setgvalue{\??id#1\??id#2}{\dodostopregister[#1][#2]{#3}}% - \donoregister[#2]{#3}} + \setgvalue{\??id#1\??id#2}{\dodostopregister[#1][#3]{#4}}% + \dodoregister[#3]{}{#4}} \def\stopregister {\dodoubleargument\dostopregister} \def\dostopregister[#1][#2]% - {\getvalue{\??id#1\??id#2}\setgvalue{\??id#1\??id#2}{}} + {\getvalue{\??id#1\??id#2}\letgvalue{\??id#1\??id#2}\relax} -\def\dodostopregister[#1][#2]% - {\chardef\registerpagestatus3 +\def\dodostopregister[#1][#2]#3% + {\chardef\registerpagestatus\plusthree \def\currentregister{#1}% - \donoregister[#2]} + \dodoregister[#2]{}{#3}} % key altnum entry -\def\complexdozieregister[#1]#2#3% +\def\doprocessseeregister[#1]#2#3% {\begingroup \thisisnextinternal\s!ind \ifduplicate\getlastregisterentry{#2}\fi \convertexpanded{\registerparameter\c!keyexpansion}{#1}\asciiregisterentryA \convertexpanded{\registerparameter\c!expansion }{#2}\asciiregisterentryB \convertexpanded{\registerparameter\c!expansion }{#3}\asciiregisterentryC -\doifsomething{\registerparameter\c!keyexpansion} - {\ifx\asciiregisterentryA\empty - \convertexpanded{\registerparameter\c!keyexpansion}{#2}\asciiregisterentryA - \fi}% + \doifsomething{\registerparameter\c!keyexpansion} + {\ifx\asciiregisterentryA\empty + \convertexpanded{\registerparameter\c!keyexpansion}{#2}\asciiregisterentryA + \fi}% \makesectionformat \expanded {\writeutility% @@ -177,16 +214,18 @@ {\asciiregisterentryC} % {\sectionformat}}}% \endgroup - \registerinfo{> zie}{#2}% - \GotoPar} + \registerinfo{> see}{#2}} + +\def\complexdoseeregister[#1]#2#3% + {\doflushatpar{\doprocessseeregister[#1]{#2}{#3}}} -\def\dozieregister#1% +\def\doseeregister#1% {\def\currentregister{#1}% - \complexorsimpleempty\dozieregister} + \complexorsimpleempty\doseeregister} % = \dosingleempty\doseeregister -\def\dowritetoregister[#1]% % de twee-traps-aanroep is nodig - {\edef\currentregister{#1}% % om gebruik van \ExpandBothAfter - \doprocesspageregister{}} % mogelijk te maken +\def\dowritetoregister[#1]% % de twee-traps-aanroep is nodig + {\edef\currentregister{#1}% % om gebruik van \ExpandBothAfter + \doprocesspageregister} % mogelijk te maken \def\writetoregister {\dodoubleempty\dowritetoregister} @@ -242,12 +281,12 @@ \def\registertexthowto{#2}}% \def\doregistertexthowto#1#2% - {\dostartattributes{\??id#1\registertexthowto}\c!textstyle\c!textcolor{}% + {\dostartattributes{\??id#1\registertexthowto}\c!textstyle\c!textcolor\empty \getvalue{\??id#1\c!textcommand}{#2}% \dostopattributes} \def\doregisterpagehowto#1#2% - {\dostartattributes{\??id#1\registerpagehowto}\c!pagestyle\c!pagecolor{}% + {\dostartattributes{\??id#1\registerpagehowto}\c!pagestyle\c!pagecolor\empty \getvalue{\??id#1\c!pagecommand}{#2}% \dostopattributes} @@ -292,21 +331,84 @@ \def\dosetpageregisterpage#1#2#3#4#5#6% {\doifreglevelelse[#5]{\dodosetpageregisterpage{#1}{#2}{#3}{#4}{#5}{#6}}{}} -\def\dodosetpageregisterpage#1#2#3#4#5#6% +% \def\dodosetpageregisterpage#1#2#3#4#5#6% +% {\global\utilitydonetrue +% \c!entryletter +% \setregisterhowto[#3]% +% \def\dohandleregisterentry##1% +% {\bgroup +% \if!!donea % \strut nieuw +% %\setbox0\hbox{\showlocation{\doregistertexthowto{#2} +% % {\strut\limitedregisterentry{#2}{##1}}}}% +% % \gotonextinternal\s!ind{#4}{#6}{\box0}% +% % +% \hhboxindent\hangindent % maybe also left and right skip +% \setbox0\hbox{\doregistertexthowto{#2}{\strut\limitedregisterentry{#2}{##1}}}% +% \unhhbox0\with{\gotonextinternal\s!ind{#4}{#6}{\box\hhbox}}% +% % +% \else +% \doregistertexthowto{#2}{##1}% +% \fi +% \egroup +% \!!doneafalse}% +% \!!doneafalse +% \doifelsevalue{\??id#2\c!interaction}\v!text +% {\ifcase\currententrylevel \or +% \!!doneatrue\c!entrya\c!entryb\c!entryc \or +% \c!entrya\!!doneatrue\c!entryb\c!entryc \or +% \c!entrya\c!entryb\!!doneatrue\c!entryc \fi} +% {\c!entrya\c!entryb\c!entryc}% +% \global\let\c!entrya\relax +% \global\let\c!entryb\relax +% \global\let\c!entryc\relax +% \global\let\c!entryletter\relax +% \global\let\c!entryreference\relax +% % \global\firstregisterentrytrue +% \iffirstregisterpage +% \global\chardef\lastregisterpagestatus\zerocount +% \expandafter\hskip\getvalue{\??id#2\c!distance}\relax +% \donetrue +% \else\ifnum#1=3 +% |--|\relax % -- ! +% \donetrue +% \else\ifnum\lastregisterpagestatus=2 +% \donefalse % waiting for "to" pagenumber +% \else +% \registerpageseparator +% |\space|\relax % \relax needed because | looks ahead +% \donetrue +% \fi\fi\fi +% \ifdone +% \begingroup +% % +% \doifelsevalue{\??id#2\c!prefix}\v!none % default v!both +% {\chardef\pageprefixmode\zerocount}% +% {\doifvalue{\??id#2\c!prefix}\v!first % only first in range (1.2-4) +% {\ifnum#1=3 \chardef\pageprefixmode\zerocount \fi}}% +% % +% \doifelsevalue{\??id#2\c!interaction}\v!pagenumber +% {\bgroup +% \setbox0\hbox +% {\showlocation{\doregisterpage{#2}[#5]\ifnum#1=2\/\fi}}% +% \gotonextinternal{\s!ind}{#4}{#6}{\box0}%{\copy0}% +% \egroup} +% {\hbox{\doregisterpage{#2}[#5]\ifnum#1=2\/\fi}}% +% \endgroup +% \ignorespaces +% \global\chardef\lastregisterpagestatus#1\relax +% \fi +% \global\firstregisterpagefalse} + +\def\dodosetpageregisterpageA#1#2#3#4#5#6% {\global\utilitydonetrue \c!entryletter \setregisterhowto[#3]% \def\dohandleregisterentry##1% {\bgroup \if!!donea % \strut nieuw - %\setbox0\hbox{\showlocation{\doregistertexthowto{#2} - % {\strut\limitedregisterentry{#2}{##1}}}}% - % \gotonextinternal\s!ind{#4}{#6}{\box0}% - % \hhboxindent\hangindent % maybe also left and right skip \setbox0\hbox{\doregistertexthowto{#2}{\strut\limitedregisterentry{#2}{##1}}}% \unhhbox0\with{\gotonextinternal\s!ind{#4}{#6}{\box\hhbox}}% - % \else \doregistertexthowto{#2}{##1}% \fi @@ -323,8 +425,10 @@ \global\let\c!entryb\relax \global\let\c!entryc\relax \global\let\c!entryletter\relax - \global\let\c!entryreference\relax - % \global\firstregisterentrytrue + \global\let\c!entryreference\relax} + +\def\dodosetpageregisterpageB#1#2#3#4#5#6% + {% \global\firstregisterentrytrue \iffirstregisterpage \global\chardef\lastregisterpagestatus\zerocount \expandafter\hskip\getvalue{\??id#2\c!distance}\relax @@ -340,6 +444,13 @@ \donetrue \fi\fi\fi \ifdone + \begingroup + % + \doifelsevalue{\??id#2\c!prefix}\v!none % default v!both + {\chardef\pageprefixmode\zerocount}% + {\doifvalue{\??id#2\c!prefix}\v!first % only first in range (1.2-4) + {\ifnum#1=3 \chardef\pageprefixmode\zerocount \fi}}% + % \doifelsevalue{\??id#2\c!interaction}\v!pagenumber {\bgroup \setbox0\hbox @@ -347,13 +458,99 @@ \gotonextinternal{\s!ind}{#4}{#6}{\box0}%{\copy0}% \egroup} {\hbox{\doregisterpage{#2}[#5]\ifnum#1=2\/\fi}}% + \endgroup \ignorespaces \global\chardef\lastregisterpagestatus#1\relax \fi \global\firstregisterpagefalse} +\def\resetseenregisterpage + {\global\let\firstseenregisterreal \relax + \global\let\currentseenregisterreal\relax + \global\let\lastseenregisterreal \relax + \global\let\firstseenregisterpage \relax + \global\let\currentseenregisterpage\relax + \global\let\lastseenregisterpage \relax} + +\resetseenregisterpage + +\def\dodosetpageregisterpageC#1#2#3#4#5#6% + {\xdef\currentseenregisterpage{#5}% + \xdef\currentseenregisterreal{#6}% + \gdef\flushseenregisterpage{\doflushseenregisterpage{#1}{#2}{#3}{#4}}% + \ifx\firstseenregisterreal\relax + \global\let\firstseenregisterreal\currentseenregisterreal + \global\let\firstseenregisterpage\currentseenregisterpage + \global\let\lastseenregisterreal \currentseenregisterreal + \global\let\lastseenregisterpage \currentseenregisterpage + \else\ifnum\numexpr\lastseenregisterreal+\plusone\relax=\currentseenregisterreal\relax + \global\let\lastseenregisterreal \currentseenregisterreal + \global\let\lastseenregisterpage \currentseenregisterpage + \else + \ifx\firstseenregisterreal\lastseenregisterreal + \expanded{\dodosetpageregisterpageB{1}{#2}{#3}{#4}{\lastseenregisterpage}{\lastseenregisterreal}}% + \else + \expanded{\dodosetpageregisterpageB{2}{#2}{#3}{#4}{\firstseenregisterpage}{\firstseenregisterreal}}% + \expanded{\dodosetpageregisterpageB{3}{#2}{#3}{#4}{\lastseenregisterpage }{\lastseenregisterreal }}% + \fi + \global\let\firstseenregisterreal\currentseenregisterreal + \global\let\firstseenregisterpage\currentseenregisterpage + \global\let\lastseenregisterreal \currentseenregisterreal + \global\let\lastseenregisterpage \currentseenregisterpage + \fi\fi} + +\def\doflushseenregisterpage#1#2#3#4% + {\global\let\flushseenregisterpage\relax + \ifx\firstseenregisterreal\relax + % nothing in the hold + \else\ifx\firstseenregisterreal\lastseenregisterreal + \expanded{\dodosetpageregisterpageB{1}{#2}{#3}{#4}{\lastseenregisterpage}{\lastseenregisterreal}}% + \else + \expanded{\dodosetpageregisterpageB{2}{#2}{#3}{#4}{\firstseenregisterpage}{\firstseenregisterreal}}% + \expanded{\dodosetpageregisterpageB{3}{#2}{#3}{#4}{\lastseenregisterpage }{\lastseenregisterreal }}% + \fi\fi + \resetseenregisterpage} + +\let\flushseenregisterpage\relax + +\chardef\collapseregisterpages\zerocount + +\def\dodosetpageregisterpage + {\ifcase\collapseregisterpages + \expandafter\dodosetpageregisterpagenormal + \else + \expandafter\dodosetpageregisterpagecollapsed + \fi} + +\def\dodosetpageregisterpagenormal#1#2#3#4#5#6% + {\dodosetpageregisterpageA{#1}{#2}{#3}{#4}{#5}{#6}% + \dodosetpageregisterpageB{#1}{#2}{#3}{#4}{#5}{#6}} + +\def\dodosetpageregisterpagecollapsed#1#2#3#4#5#6% + {\dodosetpageregisterpageA{#1}{#2}{#3}{#4}{#5}{#6}% + \dodosetpageregisterpageC{#1}{#2}{#3}{#4}{#5}{#6}} + +% test case for collapsing (experimental, for Steffen Wolfrum) +% +% \starttext +% \chardef\collapseregisterpages\zerocount \placeregister[index] \blank[2*big] +% \chardef\collapseregisterpages\plusone \placeregister[index] \page +% \dorecurse{10}{test 1:!\index{test} test \page} +% \dorecurse{5} {test 2:\recurselevel \page} +% \dorecurse{10}{test 3:!\index{test} test \page} +% \dorecurse{5} {test 4:\recurselevel \page} +% \dorecurse{1} {test 5:!\index{test} test \page} +% \dorecurse{5} {test 6:\recurselevel \page} +% \dorecurse{10}{test 7:!\index{test} test \page} +% \dorecurse{5} {test 8:\recurselevel \page} +% oeps \index{oeps} +% xxxx \index{xxxx} +% todo \index{todo} +% \stoptext + \def\dosetpageregistersee#1#2#3#4% ugly separator hack - {\expanded{\doifreglevelelse[#4\sectionseparator\sectionseparator0]}% + {\flushseenregisterpage + \expanded{\doifreglevelelse[#4\sectionseparator\sectionseparator0]}% {{\global\utilitydonetrue \setregisterhowto[#2]% \def\dohandleregisterentry##1% dubbelop | \strut nieuw @@ -376,12 +573,13 @@ \def\doregistercharacter[#1]#2% {\global\firstregisterentrytrue - \doifelsevalue{\??id#1\c!indicator}\v!yes - {\executeifdefined - {\strippedcsname\doregistercharacter\getvalue{\??id#1\c!alternative}}% - \doregistercharactera - [#1]{#2}} - {\noregistercharacter[#1]{#2}}} + \doifsomething{#2} + {\doifelsevalue{\??id#1\c!indicator}\v!yes + {\executeifdefined + {\strippedcsname\doregistercharacter\getvalue{\??id#1\c!alternative}}% + \doregistercharactera + [#1]{#2}} + {\noregistercharacter[#1]{#2}}}} \def\noregistercharacter[#1]#2% {\getvalue{\??id#1\c!before}% @@ -413,12 +611,18 @@ %D Don't use \type{\string#2}; another hack is needed, since %D \type {#2} can be \type {\string} itself. +% \def\doregisterreference[#1]#2% +% {\doifvalue{\??id#1\c!referencing}\v!on +% {\pagereference[#1:#2]}} + \def\doregisterreference[#1]#2% - {\doifvalue{\??id#1\c!referencing}\v!on - {\pagereference[#1:#2]}} + {\doifsomething{#2} + {\doifvalue{\??id#1\c!referencing}\v!on + {\pagereference[#1:\strippedcsname#2]}}} \def\dosetpageregisterletter#1#2% - {\gdef\c!entryreference + {\flushseenregisterpage + \gdef\c!entryreference {\global\let\c!entryreference\relax \doregisterreference[#1]{#2}}% \gdef\c!entryletter @@ -426,21 +630,43 @@ \global\let\c!entryletter\relax \doregistercharacter[#1]{#2}}} +% \def\HowUgly #1{\doHowUgly#1\relax} +% \def\doHowUgly#1#2\relax{\iffirstregisterentry{\bf#1}#2\fi#1#2} # handles utf too +% +% \setupregister[index][indicator=no,deeptextcommand=\HowUgly] +% +% \starttext +% \chapter{First Chapter} +% Some text...\index{word} +% \section {First Section} +% Some text...\index{word} +% Some text...\index{another entry} +% Some text...\index{ansi} +% Some text...\index{another entry} +% \page[yes] +% \completeindex +% \stoptext + +\def\dohandlepageregisterentry#1#2% + {\dohandleregisterentry{\executeifdefined{\??id#1\c!deeptextcommand}\firstofoneargument{#2}}} + \def\dosetpageregisterentrya#1#2% - {\edef\currententrylevel{1}% + {\flushseenregisterpage + \edef\currententrylevel{1}% \global\let\c!entryb\relax \global\let\c!entryc\relax \gdef\c!entrya {\iffirstregisterentry\else\endgraf\fi % new \global\firstregisterpagetrue \hangindent1em\noindent\c!entryreference - \dohandleregisterentry{#2}% + \dohandlepageregisterentry{#1}{#2}% \global\firstregisterentryfalse \global\firstsubentrytrue \global\firstsubsubentrytrue}} \def\dosetpageregisterentryb#1#2% - {\edef\currententrylevel{2}% + {\flushseenregisterpage % redundant + \edef\currententrylevel{2}% \global\let\c!entryc\relax \global\def\c!entryb {\iffirstregisterentry\else\endgraf\fi % new @@ -448,13 +674,14 @@ \global\let\c!entrya\relax \iffirstsubentry\nobreak\fi \hangindent2em\noindent\c!entryreference\hskip1em\relax - \dohandleregisterentry{#2}% + \dohandlepageregisterentry{#1}{#2}% \global\firstregisterentryfalse \global\firstsubentryfalse \global\firstsubsubentrytrue}} \def\dosetpageregisterentryc#1#2% - {\edef\currententrylevel{3}% + {\flushseenregisterpage % redundant + \edef\currententrylevel{3}% \gdef\c!entryc {\iffirstregisterentry\else\endgraf\fi % new \global\firstregisterpagetrue @@ -462,7 +689,7 @@ \global\let\c!entryb\relax \iffirstsubsubentry\nobreak\fi \hangindent3em\noindent\c!entryreference\hskip2em\relax - \dohandleregisterentry{#2}% + \dohandlepageregisterentry{#1}{#2}% \global\firstregisterentryfalse \global\firstsubsubentryfalse}} @@ -509,7 +736,7 @@ \c!entryletter \iflocation \getalllistreferences{#1}{#2}% -% \endgraf + % no \endgraf \hangindent1em\noindent\c!entryreference % %\thisissomeinternal{\s!lin}{\internallistreference}% @@ -566,7 +793,7 @@ \docommando\lastlistreference\v!next}% % tot hier \else -% \endgraf + % no \endgraf \noindent\c!entryreference \limitedregisterentry{#1}{#2}% \fi @@ -594,36 +821,36 @@ \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 + \ifautoregisterhack + \setvalue{#1\s!page}##1##2##3##4% + {\doifreglevelelse[##3] + {\global\utilitydonetrue + \iffirstregisterpage \@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 + {\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 - {\csname\??id#1\??id\currentregisterentry\endcsname,##2-##4}% - \fi - \fi} - {}}% -\fi} + {\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 @@ -726,11 +953,29 @@ \docommandoprolinrefB{#1}\nextlistreference\v!next \fi}} -\def\dodolinkedregister[#1][#2]#3% page auto link +% \def\dodolinkedregister[#1][#2]#3% page auto link +% {\bgroup +% \chardef\registerpagestatus\plusone +% \def\currentregister{#1}% +% \iflocation +% \ifautoregisterhack +% \def\next{\doprocessautoregister[#1][#2]}% +% \else +% \def\next{\doprocesslinkregister[#1][#2]}% +% \fi +% \else +% \def\next{\doprocesspageregister[#2]{}}% +% \fi +% \next{#3}% +% \egroup +% \ifvmode\nobreak\fi +% \GotoPar} + +\def\doprocesslinkedregister[#1][#2]#3% page auto link {\bgroup \chardef\registerpagestatus\plusone \def\currentregister{#1}% - \iflocation + \iflocation % \next is not needed \ifautoregisterhack \def\next{\doprocessautoregister[#1][#2]}% \else @@ -740,9 +985,10 @@ \def\next{\doprocesspageregister[#2]{}}% \fi \next{#3}% - \egroup - \ifvmode\nobreak\fi - \GotoPar} + \egroup} + +\def\dodolinkedregister[#1][#2]#3% page auto link + {\doflushatpar{\doprocesslinkedregister[#1][#2]{#3}}} \def\dolinkedregister#1% {\dodoubleempty\dodolinkedregister[#1]} @@ -754,10 +1000,8 @@ \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}}} + \setvalue{#1\s!entrya}##1{\dosetautoregisterentrya{#1}{##1}}% + \setvalue{#1\s!entry }##1{\dosetpageregisterletter{#1}{##1}}} \def\dosetautoregisterentrya#1#2% {\global\utilitydonetrue @@ -838,6 +1082,9 @@ \begingroup \edef\currentregister{#1}% \setupregister[\currentregister][#2]% + \doifelse{\registerparameter\c!compress}\v!yes % new + {\chardef\collapseregisterpages\plusone} + {\chardef\collapseregisterpages\zerocount}% \raggedright \startcolumns [\c!n=\registerparameter\c!n, @@ -845,12 +1092,20 @@ \c!align=\registerparameter\c!align]% \dontcomplain \startpacked[\v!blank]% - \doutilities\currentregister\jobname\currentregister\relax\par + \doutilities\currentregister\jobname\currentregister\dobeforeplaceregister\doafterplaceregister \stoppacked \stopcolumns \endgroup \fi} +\def\dobeforeplaceregister + {\resetseenregisterpage + \relax} + +\def\doafterplaceregister + {\flushseenregisterpage + \par} + \def\completeregister {\dodoubleempty\docompleteregister} @@ -865,6 +1120,10 @@ \endgroup \fi} +\def\doregisterregisterlanguage#1% + {\savesortlanguage{\getvalue{\??id#1\s!language}}% + \immediatewriteutility{r l {#1} {\getvalue{\??id#1\s!language}}}} + \def\dodefineregister[#1][#2]% {\setupregister[#1]% [\c!n=2, @@ -873,6 +1132,7 @@ \c!before=\blank, % binnen kolommen: \blank[\v!line] \c!after=, \c!symbol=, + \c!compress=\v!no, \c!interaction=\v!pagenumber, \c!alternative=\v!a, \c!distance=1em, @@ -888,15 +1148,21 @@ \c!maxwidth=, \c!number=\v!no, \c!unknownreference=\v!empty, + \c!prefix=\v!both, \c!expansion=, - \c!keyexpansion=]% + \c!keyexpansion=, + %\c!deeptextcommand=, % undefined by default ! + \s!language=\currentmainlanguage]% + \doglobal\appendtoksonce + \doregisterregisterlanguage{#1}% + \to \everysavesortkeys \presetheadtext[#1=\Word{#1}]% \addutilityreset{#1}% \setvalue{#1}{\doregister{#1}}% \setvalue{\e!coupled#1}{\dolinkedregister{#1}}% \setvalue{\s!set#1}{\dosetregister{#1}}% \setvalue{\s!reset#1}{\doresetregister{#1}}% - \setvalue{\e!see#1}{\dozieregister{#1}}% + \setvalue{\e!see#1}{\doseeregister{#1}}% \setvalue{\e!place#1}{\placeregister[#1]}% \setvalue{\e!complete#1}{\completeregister[#1]}% \setvalue{\e!setup#1\e!endsetup}[##1]{\getparameters[\??id#1][##1]}} |