register: spurious space & one more entry level ask
Dear ConTeXters, there are 3 topics dealing with register (index): 1. [Spurious space] There are entries like \registerpage{index}{,}{5}{2--1-1-0-1-0-0-0--1}{2} in a *.tuo file. Since the definition (core-reg.tex) \def\dosetpageregisterpage#1#2#3#4#5#6% {\doifreglevelelse[#5]% {\dodosetpageregisterpage{#1}{#2}{#3}{#4}{#5}{#6}}% {}} there will be a spurious space between page number like Entry 23 , 67 instead of Entry 23, 67 Solution: \def\dosetpageregisterpage#1#2#3#4#5#6% {\doifreglevelelse[#5]% {\dodosetpageregisterpage{#1}{#2}{#3}{#4}{#5}{#6}}% {}\ignorespaces} Test file: -------------- \starttext Text\index{test}. \page[yes] Paragraph\index{test}. \placeindex \stoptext -------------- 2. [feature request] Current register implementation enable upto three entry level (\index{level 1+level 2+level 3}). My custommer require 4 levels. Please could the entry number be extended? 3. [not important, just for info] Formating of the register entries is not much user friendly. See \hangindent1em in a following definition: \def\dosetpageregisterentrya#1#2% {\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 \dohandlepageregisterentry{#1}{#2}% \global\firstregisterentryfalse \global\firstsubentrytrue \global\firstsubsubentrytrue}} So, when one want the change formating he has to redefine this definition. It is against a ConTeXt spirit. Best Vit
Vit Zyka wrote:
Dear ConTeXters,
there are 3 topics dealing with register (index):
1. [Spurious space] There are entries like \registerpage{index}{,}{5}{2--1-1-0-1-0-0-0--1}{2} in a *.tuo file. Since the definition (core-reg.tex) \def\dosetpageregisterpage#1#2#3#4#5#6% {\doifreglevelelse[#5]% {\dodosetpageregisterpage{#1}{#2}{#3}{#4}{#5}{#6}}% {}} there will be a spurious space between page number like Entry 23 , 67 instead of Entry 23, 67
Solution: \def\dosetpageregisterpage#1#2#3#4#5#6% {\doifreglevelelse[#5]% {\dodosetpageregisterpage{#1}{#2}{#3}{#4}{#5}{#6}}% {}\ignorespaces}
interesting that no one noticed this before ... in core-uti.tex pushing the line ending was messed up when changing to catcode tables (well, pseudo ones in mkii) \long\def\doutilities#1#2#3#4#5% % introduceren in utility file {\resetutilities % more than one utility thing can be handled in one pass, % for instance lists, so we process ##1 as list \def\douticommand##1{\csname\s!set##1\endcsname}% \processcommacommand[#1]\douticommand \begingroup \def\currentutilityfilename{#2}% \notesenabledfalse \doinpututilitiestrue \global\utilitydonefalse \pushcatcodetable \setcatcodetable\ctxcatcodes \pushendofline % <<<<<<<<<<<<<<<<<<<<<<<<< \ifunprotectutilities % nog nodig ? \unprotect \fi
2. [feature request] Current register implementation enable upto three entry level (\index{level 1+level 2+level 3}). My custommer require 4 levels. Please could the entry number be extended?
not trivial, since we then need to adapt texutil too + a bunch of macros; adapting mkiv may be easier
3. [not important, just for info] Formating of the register entries is not much user friendly. See \hangindent1em in a following definition:
\def\dosetpageregisterentrya#1#2% {\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 \dohandlepageregisterentry{#1}{#2}% \global\firstregisterentryfalse \global\firstsubentrytrue \global\firstsubsubentrytrue}}
So, when one want the change formating he has to redefine this definition. It is against a ConTeXt spirit.
some day there will be a better interface (probably only in mkiv) Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------
Jupiiiii! Both patches (space & 4-level entry) work well as I can test them till now. I will do some testing on a real and big document in a near future. Do you intend to incorporate both patches to the distribution? Thank you Hans for extremely quick solutions Vit Hans Hagen wrote:
Vit Zyka wrote:
Dear ConTeXters,
there are 3 topics dealing with register (index):
1. [Spurious space] There are entries like \registerpage{index}{,}{5}{2--1-1-0-1-0-0-0--1}{2} in a *.tuo file. Since the definition (core-reg.tex) \def\dosetpageregisterpage#1#2#3#4#5#6% {\doifreglevelelse[#5]% {\dodosetpageregisterpage{#1}{#2}{#3}{#4}{#5}{#6}}% {}} there will be a spurious space between page number like Entry 23 , 67 instead of Entry 23, 67
Solution: \def\dosetpageregisterpage#1#2#3#4#5#6% {\doifreglevelelse[#5]% {\dodosetpageregisterpage{#1}{#2}{#3}{#4}{#5}{#6}}% {}\ignorespaces}
interesting that no one noticed this before ... in core-uti.tex pushing the line ending was messed up when changing to catcode tables (well, pseudo ones in mkii)
\long\def\doutilities#1#2#3#4#5% % introduceren in utility file {\resetutilities % more than one utility thing can be handled in one pass, % for instance lists, so we process ##1 as list \def\douticommand##1{\csname\s!set##1\endcsname}% \processcommacommand[#1]\douticommand \begingroup \def\currentutilityfilename{#2}% \notesenabledfalse \doinpututilitiestrue \global\utilitydonefalse \pushcatcodetable \setcatcodetable\ctxcatcodes \pushendofline % <<<<<<<<<<<<<<<<<<<<<<<<< \ifunprotectutilities % nog nodig ? \unprotect \fi
2. [feature request] Current register implementation enable upto three entry level (\index{level 1+level 2+level 3}). My custommer require 4 levels. Please could the entry number be extended?
not trivial, since we then need to adapt texutil too + a bunch of macros; adapting mkiv may be easier
3. [not important, just for info] Formating of the register entries is not much user friendly. See \hangindent1em in a following definition:
\def\dosetpageregisterentrya#1#2% {\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 \dohandlepageregisterentry{#1}{#2}% \global\firstregisterentryfalse \global\firstsubentrytrue \global\firstsubsubentrytrue}}
So, when one want the change formating he has to redefine this definition. It is against a ConTeXt spirit.
some day there will be a better interface (probably only in mkiv)
Hans
----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------
Vit Zyka wrote:
Jupiiiii!
Both patches (space & 4-level entry) work well as I can test them till now. I will do some testing on a real and big document in a near future.
Do you intend to incorporate both patches to the distribution?
well, i always do such things directly in the source files so ... ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------
participants (2)
-
Hans Hagen
-
Vit Zyka