diff options
author | Hans Hagen <pragma@wxs.nl> | 2010-02-12 10:22:00 +0100 |
---|---|---|
committer | Hans Hagen <pragma@wxs.nl> | 2010-02-12 10:22:00 +0100 |
commit | ea6a2529249923eb8ea4d9ae94fb29bd62cd8e80 (patch) | |
tree | 0b3fc474a2491f20235deb40f27dc2cab1983609 /tex/context/base/strc-reg.mkiv | |
parent | 44d8cfd7f075e99c4adf6785920bcb39e9d88e75 (diff) | |
download | context-ea6a2529249923eb8ea4d9ae94fb29bd62cd8e80.tar.gz |
beta 2010.02.12 10:22
Diffstat (limited to 'tex/context/base/strc-reg.mkiv')
-rw-r--r-- | tex/context/base/strc-reg.mkiv | 67 |
1 files changed, 56 insertions, 11 deletions
diff --git a/tex/context/base/strc-reg.mkiv b/tex/context/base/strc-reg.mkiv index 2b73c4ae5..5a6e42a71 100644 --- a/tex/context/base/strc-reg.mkiv +++ b/tex/context/base/strc-reg.mkiv @@ -632,13 +632,14 @@ \setvalue{\??id:\c!indicator:a}#1% {\registerparameter\c!before - \vskip\lineheight\goodbreak\vskip-\lineheight + % bugged, why does leftskip gets set: \vskip\lineheight\goodbreak\vskip-\lineheight \begingroup\dosetregisterattributes\c!style\c!color \registerparameter\c!command{\strut#1}% \endgroup \registerparameter\c!after \par\nobreak} + % b = <goodbreak> <before> <character> <after> <nobreak> \setvalue{\??id:\c!indicator:b}#1% @@ -655,6 +656,10 @@ %D The following macros are the interface to the rendering. These are %D generated by \LUA. This might change. +%D Beware, we get funny side effects when a dangling \index precedes an +%D placeindex as then flushing takes place inside the index. Took me hours +%D to notice that. + \def\startregisteroutput {\endgraf \begingroup @@ -708,14 +713,29 @@ \settrue\registerpagedone \fi} +\def\registeronepagerangeseparator{|\endash|} + +\def\withregisterpagecommand#1#2#3% + {\def\currentregisterpageindex{#1}% + \iflocation + \goto{\registerparameter\c!pagecommand{#2}}[internal(#1)]% + \else + \registerparameter\c!pagecommand{#2}% + \fi} + \def\registeronepage#1#2#3% content - {\registerpageseparator\registerparameter\c!pagecommand{\goto{#3}[internal(#1)]}} + {\registerpageseparator + \withregisterpagecommand{#1}{#2}{#3}} \def\registerpagerange#1#2#3#4#5#6% content, content todo: -- configurable - {\registerpageseparator\registerparameter\c!pagecommand{\goto{#3}[internal(#1)]}|--|\registerparameter\c!pagecommand{\goto{#6}[internal(#4)]}} + {\registerpageseparator + \withregisterpagecommand{#1}{#2}{#3}% + \registeronepagerangeseparator + \withregisterpagecommand{#4}{#5}{#6}} \def\registeroneword#1#2#3% content - {\registerpageseparator\registerseeword{#3}} + {\registerpageseparator + \registerseeword{#3}} \def\defaultregisterentry #1{\registerparameter\c!textcommand{\limitedregisterentry{\registerparameter\c!deeptextcommand{#1}}}} \def\defaultregisterseeword#1{\labeltexts\v!see{#1}} @@ -732,17 +752,41 @@ % todo: \installregisterpagehandler -\def\registerpageuserdata#1#2{\ctxlua{jobregisters.userdata(#1,"#2")}} +% \def\MyRegisterPageCommand#1% +% {#1\currentregisterpageuserdata{whatever}} +% +% \starttext +% \setregisterentry[index][entries=aaa][whatever=f.] test \index{bbb} test +% \placeregister[index][n=1,pagecommand=\MyRegisterPageCommand] +% \stoptext + +\def\registerpageuserdata #1#2{\ctxlua{jobregisters.userdata(#1,"#2")}} +\def\currentregisterpageuserdata {\registerpageuserdata\currentregisterpageindex} % {#1} % not yet ok : new internal handler names \def\registerpagebuttonsymbol{\vrule\!!width1em\!!height1ex\!!depth\zeropoint\relax} -\setvalue{\??id:\c!symbol :\c!n}{\def\registerpageseparatorsymbol{, }\let\registerpagenumberhandler\firstofoneargument} -\setvalue{\??id:\c!symbol :\c!a}{\def\registerpageseparatorsymbol{, }\let\registerpagenumberhandler\firstofoneargument} % now done via conversion -\setvalue{\??id:\c!symbol:\v!none}{\let\registerpageseparatorsymbol\empty\let\registerpagenumberhandler\gobbleoneargument} -\setvalue{\??id:\c!symbol :1}{\let\registerpageseparatorsymbol\space\def\registerpagenumberhandler{\symbol[1]\gobbleoneargument}} -\setvalue{\??id:\c!symbol :2}{\let\registerpageseparatorsymbol\space\def\registerpagenumberhandler{\registerpagebuttonsymbol\gobbleoneargument}} +\setvalue{\??id:\c!symbol:\c!n}% + {\def\registerpageseparatorsymbol{, }} + +\setvalue{\??id:\c!symbol:\c!a}% + {\def\registerpageseparatorsymbol{, }} % now done via conversion + +\setvalue{\??id:\c!symbol:\v!none}% + {\let\registerpageseparatorsymbol\empty + \let\registeronepage \gobblethreearguments + \let\registerpagerange \gobblesixarguments} + +\setvalue{\??id:\c!symbol:1}% + {\let\registerpageseparatorsymbol\space + \def\registeronepage {\symbol[1]\gobblethreearguments}% + \def\registerpagerange {\symbol[1]\gobblesixarguments}} + +\setvalue{\??id:\c!symbol:2}% + {\let\registerpageseparatorsymbol\space + \def\registeronepage {\registerpagebuttonsymbol\gobblethreearguments}% + \def\registerpagerange {\registerpagebuttonsymbol\gobblesixarguments}} \def\setregisterpagerendering {\edef\currentregisterpagesymbol{\registerparameter\c!symbol}% @@ -752,7 +796,8 @@ \csname\??id:\c!symbol:\currentregisterpagesymbol\endcsname \else \let\registerpageseparatorsymbol\space - \def\registerpagenumberhandle{\registerparameter\c!symbol\gobbleoneargument}% + \def\registeronepage {\registerparameter\c!symbol\gobblethreearguments}% + \def\registerpagerange {\registerparameter\c!symbol\gobblesixarguments}% \fi\fi} \appendtoks |