diff options
Diffstat (limited to 'Master/texmf-dist/tex/context/base/strc-lst.mkiv')
-rw-r--r-- | Master/texmf-dist/tex/context/base/strc-lst.mkiv | 91 |
1 files changed, 58 insertions, 33 deletions
diff --git a/Master/texmf-dist/tex/context/base/strc-lst.mkiv b/Master/texmf-dist/tex/context/base/strc-lst.mkiv index 440047a423a..413052882e5 100644 --- a/Master/texmf-dist/tex/context/base/strc-lst.mkiv +++ b/Master/texmf-dist/tex/context/base/strc-lst.mkiv @@ -91,7 +91,7 @@ \endgroup} \def\structurelistlocation - {\ctxlua{structure.lists.location("\currentlist",\currentlistindex)}} + {\ctxlua{structure.lists.location(\currentlistindex)}} \def\structurelistpagenumber {\ctxlua{structure.lists.prefixedpage( @@ -107,6 +107,7 @@ { prefix = "\listparameter\c!pageprefix", conversionset = "\listparameter\c!pageconversionset", + starter = \!!bs\listparameter\c!pagestarter\!!es, stopper = \!!bs\listparameter\c!pagestopper\!!es, } )}} @@ -126,7 +127,7 @@ % \appendtoks % \to \everystructurelist -\def\placestructurelist#1#2#3% +\unexpanded\def\placestructurelist#1#2#3% hm ... [][][] {\ctxlua{structure.lists.process("#1","#2","#3")}} \def\analysestructurelist#1#2#3% @@ -181,16 +182,20 @@ \currentlist \structurelistlocation \structurelistgenericnumber - \structurelistgenerictitle + \structurelistgenerictitle % hm, can end up in message (volkers test) \structurelistpagenumber \structurelistrealpagenumber} % so far (todo: also recursive) \def\listalternativeparameter#1% - {\csname\??li\??li\listparameter\c!alternative#1\endcsname} + {\ifcsname\??li\??li\listparameter\c!alternative#1\endcsname + \csname\??li\??li\listparameter\c!alternative#1\endcsname + \else + \listparameter{#1}% + \fi} -\def\setuplistalternative[#1]% +\unexpanded\def\setuplistalternative[#1]% {\dodoubleargument\getparameters[\??li\??li#1]} \def\listfill {\listalternativeparameter\c!command } @@ -208,14 +213,20 @@ \def\listdots{\leaders\hbox to .5em{\hss.\hss}\hfill} -\setvalue{\??li\c!alternative}{\getvalue{\??li\c!alternative b}} -\getvalue{\??li\c!alternative} +% \setvalue{\??li\c!alternative}{\getvalue{\??li\c!alternative b}} % ? +% \getvalue{\??li\c!alternative} % ? + +\def\checklistexistence#1% + {\ifcsname\??li#1\s!parent\endcsname \else + \letvalue{\??li#1\s!parent}\??li + \fi} \def\dosetuplist[#1][#2]% slow -) - {\def\docommand##1{\getparameters[\??li##1][#2]}% + {\checklistexistence{#1}% + \def\docommand##1{\getparameters[\??li##1][#2]}% \processcommalist[#1]\docommand} -\def\setuplist +\unexpanded\def\setuplist {\dodoubleargument\dosetuplist} \def\dodefinelist[#1][#2][#3]% @@ -226,7 +237,7 @@ {\getparameters[\??li#1][\s!parent=\??li]} {\getparameters[\??li#1][\s!parent=\??li#2,#3]}}} -\def\setuplists % new, but not for users (hardly handy) +\unexpanded\def\setuplists % new, but not for users (hardly handy) {\dodoubleargument\getparameters[\??li]} \setuplists @@ -266,17 +277,20 @@ \c!limittext=\@@kolimittext, %\c!sectionseparatorset=, %\c!sectionconversionset=, + %\c!sectionstarter=, %\c!sectionstopper=, %\c!sectionset=, %\c!sectionsegments=, %\c!prefix=\v!no, %\c!prefixseparatorset=, %\c!prefixconversionset=, + %\c!prefixstarter=., %\c!prefixstopper=., %\c!prefixset=, %\c!prefixsegments=, %\c!pageseparatorset=, %\c!pageconversionset=, + %\c!pagestarter=, %\c!pagestopper=, %\c!expansion=, % \c!prefixconnector=., % maybe inherit from setupheads @@ -284,13 +298,13 @@ % \c!pageprefixconnector=\listparameter\c!prefixconnector, ]%\c!pagesegments=2:2] -\def\definelist +\unexpanded\def\definelist {\dotripleempty\dodefinelist} -\def\placelist +\unexpanded\def\placelist {\dodoubleempty\doplacelist} -\def\placerawlist +\unexpanded\def\placerawlist {\dodoubleempty\doplacerawlist} \def\dobeginoflist @@ -355,11 +369,11 @@ \utilitydonetrue \setsystemmode \v!list \fi} -\def\systemsuppliedchapter {\getvalue{\v!chapter}} % brrr -\def\systemsuppliedtitle {\getvalue{\v!title}} % brrr +\unexpanded\def\systemsuppliedchapter {\getvalue{\v!chapter}} % brrr +\unexpanded\def\systemsuppliedtitle {\getvalue{\v!title}} % brrr \def\dodocompletelist[#1][#2][#3]% enkelvoud, meervoud, instellingen - {\normalexpanded{\noexpand\systemsuppliedtitle[#2]{\noexpand\headtext{#2}}}% expansion needed for v! vs french ! + {\normalexpanded{\systemsuppliedtitle[#2]{\noexpand\headtext{#2}}}% expansion needed for v! vs french ! \doplacelist[#1][#3]} \def\docompletelist[#1][#2]% @@ -433,6 +447,7 @@ {% prefix = no, none, yes \strut \doif{\listparameter\c!label}\v!yes{\leftlabeltext\currentlist}% we can use the new command that does left and right + \listparameter\c!starter \currentlistnumber \listparameter\c!stopper \doif{\listparameter\c!label}\v!yes{\rightlabeltext\currentlist}} @@ -444,10 +459,12 @@ \strut \doifelse{\listparameter\c!label}\v!yes {\leftlabeltext\currentlist + \listparameter\c!starter \currentlistnumber \listparameter\c!stopper \rightlabeltext\currentlist} - {\currentlistnumber + {\listparameter\c!starter + \currentlistnumber \listparameter\c!stopper}} \def\listsymbol@unknown @@ -481,7 +498,7 @@ % \definelistplacement[MyListItem][none]#1#2#3% % {(#1) (#2) (#3)} -\def\definelistplacement +\unexpanded\def\definelistplacement {\dodoubleempty\dodefinelistplacement} \def\dodefinelistplacement[#1][#2]% @@ -531,12 +548,13 @@ {[\currentlist: #3 -- #4 -- #5]}} \def\domakelistelement#1#2#3#4% ref internal command data - {\dontleavehmode - \doifnot{\listparameter\c!interaction}{#1}\locationfalse - \iflocation - \directgotobox{\setlocationcolor\??ia#4}[internal(#2)]% + {\dontleavehmode + \iflocation % we cannot tewak \iflocation as we nest + \doifelse{\listparameter\c!interaction}{#1} + {\directgoto{\setlocationcolor\??ia#4}[internal(#2)]}% was \directgotobox + {#3{#4}}% \else - #3{#4}% + #3{#4}% \fi} \def\dodofreelistelement#1#2#3#4#5#6#7#8% @@ -601,11 +619,8 @@ \!!widthc\zeropoint} {\!!widtha\listparameter\c!width}} {\!!widtha\listparameter\c!width}}% - \getvalue{\??li\c!alternative\listparameter\c!alternative}% +% \getvalue{\??li\c!alternative\listparameter\c!alternative}% ? \endgraf - \doif{\listparameter\c!interaction}\v!text % not supported ! ! ! ! ! ! text == all - {\setlistparameter\currentlist\c!interaction\v!all}% - % \dontleavehmode % new, else no margin, but wrong, better (else \indent as well): \noindent \domakelistelement\v!all{#2}\hbox {\setlocalhsize @@ -655,6 +670,7 @@ \leavevmode \box2\relax \hskip\dimen2 +\domakelistelement\v!text{#2}\firstofoneargument{% \bgroup \donestedlistattributes\c!textstyle\c!textcolor {\let\\=\newlineinlist @@ -663,6 +679,7 @@ \limitatedlistentry{#4}}% %\carryoverpar % new otherwise wrong linespacing \egroup +}% \ifdim\wd4=\zeropoint\relax % \ifvoid4 % \ifdim\!!widtha<\hsize \hfill\strut \fi % spoils align \else @@ -711,17 +728,20 @@ \ifvmode \noindent\leavevmode % leavevmode ? ? ? \fi +%% actually, the next can be supported now (will be enabled when I have time to test it) \doif{\listparameter\c!interaction}\v!text % not supported {\setlistparameter\currentlist\c!interaction\v!sectionnumber}% \doif{\listparameter\c!interaction}\v!all % not supported {\setlistparameter\currentlist\c!interaction\v!sectionnumber}% +%% \setbox4\hbox {\doif{\listparameter\c!pagenumber}\v!yes {\doifsomething{#5} {\domakelistelement\v!pagenumber{#2}\hbox {\donestedlistattributes\c!pagestyle\c!pagecolor {\listparameter\c!pagecommand{#5}}}}}}% - \doif{\listparameter\c!headnumber}\v!yes +%% \domakelistelement\v!all{#2}\firstofoneargument{% + \doif{\listparameter\c!headnumber}\v!yes {\donetrue \doifnothing{#3}{\doifnothing{\listparameter\c!symbol}\donefalse}% % == \doifnothing{#3\listparameter\c!symbol}\donefalse @@ -736,17 +756,20 @@ \nobreak \fi}% \tolerance3500 % niet zomaar veranderen +%% \domakelistelement\v!text{#2}\firstofoneargument{% \donestedlistattributes\c!textstyle\c!textcolor {\let\\=\newlineinlist \dontconvertfont %\listparameter\c!textcommand{#4}}% \limitatedlistentry{#4}}% +%% }% \ifvoid4\else \nobreak \hskip.75em\relax \nobreak \box4 \fi +%% }% \dimen0=\listparameter\c!distance\relax \ifdim\dimen0<1em\relax \hskip1em\!!plus1em\!!minus.25em\relax @@ -811,7 +834,7 @@ \def\combinedlistparameter#1{\csname\??ih\currentcombinedlist#1\endcsname} -\def\setupcombinedlist +\unexpanded\def\setupcombinedlist {\dodoubleargument\dosetupcombinedlist} \def\dosetupcombinedlist[#1][#2]% @@ -819,7 +842,7 @@ \edef\currentcombinedlist{#1}% \normalexpanded{\noexpand\setuplist[\combinedlistparameter\c!list]}[#2]} -\def\definecombinedlist +\unexpanded\def\definecombinedlist {\dotripleempty\dodefinecombinedlist} \def\dodefinecombinedlist[#1][#2][#3]% @@ -830,7 +853,7 @@ \setvalue{\e!place#1}{\dodoubleempty\doplacecombinedlist[#1]}% \setvalue{\e!complete#1}{\dodoubleempty\docompletecombinedlist[#1]}} -\def\placecombinedlist +\unexpanded\def\placecombinedlist {\dodoubleempty\doplacecombinedlist} \def\doplacecombinedlist[#1][#2]% we can move much of the analysis to lua @@ -850,7 +873,7 @@ \dosetlistmode} \def\docompletecombinedlist[#1][#2]% - {\normalexpanded{\noexpand\systemsuppliedtitle[#1]{\noexpand\headtext{#1}}}% expansion due to v! vs french ! + {\normalexpanded{\systemsuppliedtitle[#1]{\noexpand\headtext{#1}}}% expansion due to v! vs french ! \doplacecombinedlist[#1][#2]} % lists that have a number/title are kind of generic and can share code @@ -872,6 +895,7 @@ prefix = "\listparameter\c!prefix", separatorset = "\listparameter\c!prefixseparatorset", conversionset = "\listparameter\c!prefixconversionset", + starter = \!!bs\listparameter\c!prefixstarter\!!es, stopper = \!!bs\listparameter\c!prefixstopper\!!es, set = "\listparameter\c!prefixset", segments = "\listparameter\c!prefixsegments", @@ -880,6 +904,7 @@ { separatorset = "\listparameter\c!numberseparatorset", conversionset = "\listparameter\c!numberconversionset", + starter = \!!bs\listparameter\c!numberstarter\!!es, stopper = \!!bs\listparameter\c!numberstopper\!!es, segments = "\listparameter\c!numbersegments", } )}} @@ -900,7 +925,7 @@ % % \definesystemvariable {ll} % ListLength % -% \def\setupremaininglistlength[#1]% +% \unexpanded\def\setupremaininglistlength[#1]% % {\getparameters[\??ll][#1]% % \globallet\listlengthcounter\!!zerocount} % |