summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/context/base/strc-lst.mkiv
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/context/base/strc-lst.mkiv')
-rw-r--r--Master/texmf-dist/tex/context/base/strc-lst.mkiv91
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}
%