summaryrefslogtreecommitdiff
path: root/tex/context/base/core-lst.tex
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2002-01-11 00:00:00 +0100
committerHans Hagen <pragma@wxs.nl>2002-01-11 00:00:00 +0100
commit736de6a312c37fbb8cea65cf0a86eda7dbbe0575 (patch)
treead6691db97ee31450f9ca5b30a90a22df067331b /tex/context/base/core-lst.tex
parent398264e8338d79fc389c76f0a1f0b30e4442f4e3 (diff)
downloadcontext-736de6a312c37fbb8cea65cf0a86eda7dbbe0575.tar.gz
stable 2002.01.11
Diffstat (limited to 'tex/context/base/core-lst.tex')
-rw-r--r--tex/context/base/core-lst.tex129
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}%