diff options
author | Hans Hagen <pragma@wxs.nl> | 2002-01-11 00:00:00 +0100 |
---|---|---|
committer | Hans Hagen <pragma@wxs.nl> | 2002-01-11 00:00:00 +0100 |
commit | 736de6a312c37fbb8cea65cf0a86eda7dbbe0575 (patch) | |
tree | ad6691db97ee31450f9ca5b30a90a22df067331b /tex/context/base/core-lst.tex | |
parent | 398264e8338d79fc389c76f0a1f0b30e4442f4e3 (diff) | |
download | context-736de6a312c37fbb8cea65cf0a86eda7dbbe0575.tar.gz |
stable 2002.01.11
Diffstat (limited to 'tex/context/base/core-lst.tex')
-rw-r--r-- | tex/context/base/core-lst.tex | 129 |
1 files changed, 75 insertions, 54 deletions
diff --git a/tex/context/base/core-lst.tex b/tex/context/base/core-lst.tex index dd399e460..03cd5bfbe 100644 --- a/tex/context/base/core-lst.tex +++ b/tex/context/base/core-lst.tex @@ -17,6 +17,8 @@ % \getlistlevel[hoofdstuk]\test{0} \test +% can be made faster if needed + \def\getlistlevel[#1]#2#3% [list] \variable \default {\doifdefinedelse{\??ko#1\c!sectie} {\edef#2{\getvalue{\??ko#1\c!sectie}}% @@ -160,7 +162,9 @@ \@@livariantb -\def\dostellijstin[#1][#2]% +\def\setlistparameter#1#2{\@EA\def\csname\??li#1#2\endcsname} + +\def\dostellijstin[#1][#2]% slow -) {\def\docommando##1% {\getparameters[\??li##1][#2]% \preparepaginaprefix{\??li##1}}% @@ -217,8 +221,11 @@ \v!deel\v!nummer=\v!ja, % nodig ? % v \c!label=\v!nee, \c!afstand=\!!zeropoint, - \c!scheider=]% - \ConvertToConstant\doifinstringelse{=}{#2} + \c!scheider=\@@koscheider, + \c!afsluiter=, + \c!expansie=]% +% \ConvertToConstant\doifinstringelse{=}{#2} + \doifassignmentelse{#2} {\getparameters[\??li#1][#2]} {\ConvertToConstant\doifnot{#2}{} {\copyparameters % interactie ? @@ -261,14 +268,14 @@ \doendoflist \dosetlistmode} -\def\dosetlistmode% +\def\dosetlistmode {\iflijstgeplaatst - \expandafter \enablemode + \setsystemmode \v!lijst \else - \expandafter \disablemode - \fi [\systemmodeprefix\v!lijst]} + \resetsystemmode\v!lijst + \fi} -\def\plaatslijst% +\def\plaatslijst {\dodoubleempty\doplaatslijst} \def\dodovolledigelijst[#1][#2][#3]% enkelvoud, meervoud, instellingen @@ -291,6 +298,12 @@ {#1=#3\relax} {#1=#2\relax}} +% \let\dohandlelistnumber\firstofoneargument +% +% can be anything, so no \expanded{\separatednumber{#1}} ! + +\def\dohandlelistnumber#1{\separatednumber{#1}} + \def\dosetlistsymbol#1#2% kan sneller, default case afvangen {\processaction [\getvalue{\??li#1\c!symbool}] @@ -300,19 +313,24 @@ 1=>\def\listsymbol% {\strut$\bullet$}, 2=>\def\listsymbol% - {\vrule\!!width1em\!!height1ex\!!depth\!!zeropoint}, + {\vrule\!!width1em\!!height1ex\!!depth\zeropoint}, 3=>\def\listsymbol% very slow {{\doassigndimen{\dimen0}{\getvalue{\??li#1\c!breedte}}{1.5em}% \doassigndimen{\dimen2}{\getvalue{\??li#1\c!hoogte}}{1ex}% \doassigndimen{\dimen4}{\getvalue{\??li#1\c!diepte}}{0pt}% \vrule\!!width\dimen0\!!height\dimen2\!!depth\dimen4}}, \s!unknown=>\def\listsymbol{\getvalue{\??li#1\c!symbool}}, - \s!default=>\doifelsevalue{\??li#1\c!prefix}{\v!nee} - {\aftersplitstring#2\at.\to\splitlistsymbol} - {\def\splitlistsymbol{#2}}% geen \edef ivm enz + \s!default=>\doifelsevalue{\??li#1\c!prefix}{\v!nee} % ook nog eerste + {\edef\splitlistsymbol{\removefirstprefix{#2}}} + {\doifelsevalue{\??li#1\c!prefix}{\v!geen} + {\edef\splitlistsymbol{\removeallprefixes{#2}}}% + {\def\splitlistsymbol{#2}}}% geen \edef ivm enz \def\listsymbol% kan iets efficienter met \ifdone {\doifvalue{\??li#1\c!label}{\v!ja}{\leftlabeltext{#1}}% - \strut\splitlistsymbol\getvalue{\??li#1\c!scheider}% + \strut + \def\numberseparator{\getvalue{\??li#1\c!scheider}}% + \@EA\dohandlelistnumber\@EA{\splitlistsymbol}% + \getvalue{\??li#1\c!afsluiter}% \doifvalue{\??li#1\c!label}{\v!ja}{\rightlabeltext{#1}}}]} \def\@@dodolijstelement{dodolijstelement} @@ -356,11 +374,11 @@ \def\dodolijstelement#1#2#3#4#5#6% {\getvalue{\@@dodolijstelement\getvalue{\??li#1\c!variant}}% %\showcomposition - \let\@@iabreedte=\!!zeropoint % moet boolean worden + \let\@@iabreedte\!!zeropoint % moet boolean worden \bgroup \edef\lijstelementen% {\getvalue{\??li#1\c!paginaovergangen}}% - \ExpandSecondAfter\doifinset{#3}{\lijstelementen}% + \ExpandBothAfter\doifinset{#3}{\lijstelementen}% {\showmessage{\m!systems}{14}{#3}% \pagina}% \egroup @@ -372,7 +390,9 @@ \def\dolistattributes#1#2#3% {\doifvaluesomething{\??li#1#3} - {\setupinteraction[\c!kleur=,\c!contrastkleur=]}% + %{\setupinteraction[\c!kleur=,\c!contrastkleur=]}% + {\resetinteractionparameter\c!kleur + \resetinteractionparameter\c!contrastkleur}% \doattributes{\??li#1}{#2}{#3}} \def\dodocommandlijstelement#1#2#3#4#5#6% @@ -430,17 +450,17 @@ \def\dodofixdlijstelementABC#1#2#3#4#5#6% weeden {\endgraf - \leftskip=\getvalue{\??li#1\c!marge}% na de \endgraf ! + \leftskip\getvalue{\??li#1\c!marge}% na de \endgraf ! \getvalue{\??li#1\c!voor}% - \!!widthc=\getvalue{\??li#1\c!afstand}% + \!!widthc\getvalue{\??li#1\c!afstand}% \doifelsevalue{\??li#1\c!breedte}{\v!passend} - {\!!widtha=\!!zeropoint} + {\!!widtha\zeropoint} {\doifelsenothing{#3} {\doifelsevalue{\??li#1\c!titeluitlijnen}{\v!ja} - {\!!widtha=\!!zeropoint - \!!widthc=\!!zeropoint} - {\!!widtha=\getvalue{\??li#1\c!breedte}}} - {\!!widtha=\getvalue{\??li#1\c!breedte}}}% + {\!!widtha\zeropoint + \!!widthc\zeropoint} + {\!!widtha\getvalue{\??li#1\c!breedte}}} + {\!!widtha\getvalue{\??li#1\c!breedte}}}% \getvalue{\??li\c!variant\getvalue{\??li#1\c!variant}}% \endgraf \def\makelijstelement##1##2% @@ -449,12 +469,12 @@ \linklisttoelement{#1}{#2}{#5}{#6}{\box0}}%{\copy0}}% {\hbox{##2}}}% \doifvalue{\??li#1\c!interactie}{\v!tekst} % not supported - {\doassign[\??li#1][\c!interactie=\v!alles]}% + {\setlistparameter{#1}\c!interactie\v!alles}% \makelijstelement\v!alles {\hbox to \hsize {\dostartattributes{\??li#1}\c!letter\c!kleur{}% new - \!!widthb=\hsize - \setbox2=\hbox \ifdim\!!widtha>\!!zeropoint to \!!widtha \fi + \!!widthb\hsize + \setbox2=\hbox \ifdim\!!widtha>\zeropoint to \!!widtha \fi {\makelijstelement\v!sectienummer {\dolistattributes{#1}\c!nummerletter\c!nummerkleur {\getvalue{\??li#1\c!nummercommando}{\listsymbol}}% @@ -462,7 +482,7 @@ \setbox4=\hbox {\doifvalue{\??li#1\c!paginanummer}{\v!ja} {\doifsomething{#5} % \lijstwidth is new ; temp hack - {\hbox \ifdim\lijstwidth>\!!zeropoint to \lijstwidth\fi + {\hbox \ifdim\lijstwidth>\zeropoint to \lijstwidth\fi {\hfill \makelijstelement\v!paginanummer {\dolistattributes{#1}\c!paginaletter\c!paginakleur @@ -479,15 +499,15 @@ \ifvoid4 % we kunnen gewoon afbreken aan het eind \else - \ifdim\lijstskip>\!!zeropoint\relax + \ifdim\lijstskip>\zeropoint\relax \rightskip=\lijstskip\!!plus10em\relax \parfillskip=-\rightskip \fi \fi \else - \dimen2=\!!zeropoint + \dimen2=\zeropoint \fi - \parindent=\!!zeropoint\relax + \parindent\zeropoint\relax \leavevmode \box2\relax \hskip\dimen2 @@ -496,6 +516,7 @@ {\let\\=\newlineinlist \dontconvertfont \getvalue{\??li#1\c!tekstcommando}{#4}}% +%\carryoverpar % new otherwise wrong linespacing \egroup \ifvoid4 \ifdim\!!widtha<\hsize @@ -526,9 +547,9 @@ \noindent\leavevmode % leavevmode ? ? ? \fi \doifvalue{\??li#1\c!interactie}{\v!tekst} % not supported - {\doassign[\??li#1][\c!interactie=\v!sectienummer]}% + {\setlistparameter{#1}\c!interactie\v!sectienummer}% \doifvalue{\??li#1\c!interactie}{\v!alles} % not supported - {\doassign[\??li#1][\c!interactie=\v!sectienummer]}% + {\setlistparameter{#1}\c!interactie\v!sectienummer}% \def\makelijstelement##1##2% {\doifelsevalue{\??li#1\c!interactie}{##1} {\setbox0=\hbox{\showcontrastlocation{\??ia}{#6}{##2}}% @@ -626,9 +647,7 @@ \@EA\doschrijfnaarlijst\@EA{#1}{\firstlistelement}{#3}{\v!kop}}} \def\dotussenlijst#1#2#3#4% pas op: wordt ook elders gedefinieerd - {\doiftoclevelelse[#3] - {#2} - {}} + {\doiftoclevelelse[#3]{#2}{}} \def\schrijftussenlijst[#1]#2% {\@EA\doschrijftussenlijst\@EA{#1}{#2}} % #2 weg en \expanded @@ -643,20 +662,22 @@ \def\utilitylistwidth {0pt} \def\utilitylistheight {0pt} +\def\dolijstelementX#1#2#3#4#5#6% + {\doiftoclevelelse[#5] + {\doglobal\increment\utilitylistlength + \hbox + {\doattributes + {\??li#1}\c!tekstletter\c!tekstkleur + {\let\\=\newlineinlist + \dontconvertfont + \getvalue{\??li#1\c!tekstcommando}{#4}}}% + \global\utilitydonetrue} + {}} + \def\dobepaallijstkenmerken[#1][#2]% {\begingroup \doglobal\newcounter\utilitylistlength - \def\dolijstelement##1##2##3##4##5##6% - {\doiftoclevelelse[##5] - {\doglobal\increment\utilitylistlength - \hbox - {\doattributes - {\??li##1}\c!tekstletter\c!tekstkleur - {\let\\=\newlineinlist - \dontconvertfont - \getvalue{\??li##1\c!tekstcommando}{##4}}}% - \global\utilitydonetrue} - {}}% + \let\dolijstelement\dolijstelementX \dostellijstin[#1][#2]% \dogetcommalistelement1\from#1\to\commalistelement \dosettoclevel{\getvalue{\??li\commalistelement\c!criterium}}% @@ -817,7 +838,7 @@ \def\dostelsamengesteldelijstin[#1][#2]% {\getparameters[\??ih#1][#2]% - \ExpandFirstAfter\stellijstin[\getvalue{\??ih#1\c!lijst}][#2]} + \expanded{\stellijstin[\getvalue{\??ih#1\c!lijst}]}[#2]} \def\stelsamengesteldelijstin% {\dodoubleargument\dostelsamengesteldelijstin} @@ -854,18 +875,18 @@ \getparameters[\??ih#1][#2]% \dosettoclevel{\getvalue{\??ih#1\c!criterium}}% \edef\samengesteldelijst{\getvalue{\??ih#1\c!lijst}}% - \stripspaces\from\samengesteldelijst\to\samengesteldelijst + %\stripspaces\from\samengesteldelijst\to\samengesteldelijst \doifelsevalue{\??ih#1\c!niveau}{\v!huidige} % criterium=vorige,niveau=huidige {\!!counta=0\@@koniveau} % hm: \@@koniveau - {\ExpandFirstAfter\doifnumberelse{\getvalue{\??ih#1\c!niveau}}% in verband + {\fullexpandoneargafter\doifnumberelse{\getvalue{\??ih#1\c!niveau}}% in verband {\!!counta=\getvalue{\??ih#1\c!niveau}% met de vorige implementatie \advance\!!counta by 1 % accepteren we ook nummers (0==deel) \getfromcommacommand[\samengesteldelijst][\!!counta]% \edef\maximumlijst{\commalistelement}}% {\edef\maximumlijst{\getvalue{\??ih#1\c!niveau}}}% \!!counta=\getvalue{\??se\getvalue{\??ko\maximumlijst\c!sectie}\c!niveau}}% - \let\!!stringa=\samengesteldelijst - \let\samengesteldelijst=\empty + \let\!!stringa\samengesteldelijst + \let\samengesteldelijst\empty \def\docommando##1% {\ifnum\getvalue{\??se\getvalue{\??ko##1\c!sectie}\c!niveau}>\!!counta \else @@ -890,14 +911,14 @@ \doplaatssamengesteldelijst[#1][#2]} \def\dodefinieersamengesteldelijst[#1][#2][#3]% - {\setvalue{\??ih#1\c!lijst}{#2}% + {\makerawcommalist[#2]\samengesteldelijst % for fast processing + \letvalue{\??ih#1\c!lijst}\samengesteldelijst \getcommalistsize[#2]% \getfromcommalist[#2][\commalistsize]% \doeassign[\??ih#1][\c!niveau=\commalistelement]% \getparameters [\??ih#1] - [\c!criterium=\v!lokaal, - #3]% + [\c!criterium=\v!lokaal,#3]% \setvalue{\e!stel#1\e!in}% {\dodoubleempty\dostelsamengesteldelijstin[#1]}% \setvalue{\e!plaats#1}% |