%D \module %D [ file=core-lst, %D version=1997.03.31, %D title=\CONTEXT\ Core Macros, %D subtitle=Lists, %D author=Hans Hagen, %D date=\currentdate, %D copyright={PRAGMA / Hans Hagen \& Ton Otten}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. \writestatus{loading}{Context Core Macros / Lists} \unprotect % \getlistlevel[hoofdstuk]\test{0} \test % can be made faster if needed \def\getlistlevel[#1]#2#3% [list] \variable \default {\doifdefinedelse{\??ko#1\c!section} {\edef#2{\getvalue{\??ko#1\c!section}}% \doifdefinedelse{\??se#2\c!level} {\edef#2{\getvalue{\??se#2\c!level}}} {\edef#2{#3}}} {\edef#2{#3}}} % Auto cross document links work by either using logical or % page references, depending on the general settings. The % locations are stored in global references where the auto tag % number uses the text container. We use reference mapping % (define reference) to keep track of the current ref. \def\dowritetolist#1% {\doifelsevalue{\??li#1\c!state}\v!start \dodowritetolist\gobblefourarguments{#1}} \def\dodowritetolist#1#2#3#4% {\begingroup \def\currentlist{#1}% \convertexpanded{\??li\currentlist}{#3}\asciilistentry \makesectionformat \doifelse\@@nmstate\v!start {\def\dopaginanummer{\noexpand\pagenumber}} {\def\dopaginanummer{0}}% % niet waterdicht, wat te doen met figuren en zo % first hack: scheelt rommel, second hack: alleen koppen \doifelsevalue{\??rf\currentlist\c!state}\v!start {\doif{\@@sectionlevel\@@sectie}{0}\autocrossdocumentfalse} {\autocrossdocumentfalse}% % blijft nog wat zwakjes en inefficient \ifautocrossdocument \bgroup \thisisnextinternal\currentlist %\thisisdestination{\currentlist::\sectionformat}% \@EA\setsectieenkoppeling\@EA{\currentlist}% \edef\currentlevel{\@@sectionlevel\@@sectie}% \processcommacommand[\crossdocumentreferences]\dododowritetolist \egroup \else \thisisnextinternal\currentlist \fi \edef\next % \schrijfwegnaarlijst% {\writeutilitycommand% {\listentry% {\currentlist}% {\nextinternalreference}% {#2}% {\asciilistentry}% {\sectionformat\sectionseparator\sectionseparator\dopaginanummer}% {\noexpand\realfolio}}}% \next % \schrijfwegnaarlijst \endgroup} \def\dododowritetolist#1% {\def\docommando##1% {\doifvalue{\??rf##1\c!state}\v!start {\setsectieenkoppeling{##1}% \def\level{\@@sectionlevel\@@sectie}% \ifnum\level>\currentlevel \expanded{\definereference[#1::##1][\v!none]}% \else\ifnum\level=\currentlevel \expanded{\definereference[#1::##1][#1::{##1::\sectionformat}]}% \fi\fi}}% \processcommacommand[\crossdocumentelements]\docommando} % so far \def\dowritebetweenlist#1#2% {\doifvalue{\??li#1\c!state}\v!start {\begingroup \convertargument#2\to\ascii \makesectionformat \doifelse{\@@nmstate}\v!start {\def\dopaginanummer{\noexpand\pagenumber}} {\def\dopaginanummer{0}}% \edef\next % \schrijfwegnaarlijst {\writeutilitycommand% {\listbetween% {#1}% {\ascii}% {\sectionformat\sectionseparator\sectionseparator\dopaginanummer}% {\noexpand\realfolio}}}% \next % \schrijfwegnaarlijst \endgroup}} % experimental (no nodes in mvl), needed for naw \def\immediatetolist[#1]#2#3#4% {\begingroup \convertexpanded{\??li#1}{#3}\asciilistentry \makesectionformat \immediatewriteutilitycommand {\listentry {#1}{}{#2}{\asciilistentry}% {\sectionformat\sectionseparator\sectionseparator\number#4}% {\realfolio}}% \endgroup} \def\immediatebetweenlist[#1]#2% {\begingroup \convertargument#2\to\asciilistentry \makesectionformat \immediatewriteutilitycommand {\listbetween {#1}{\asciilistentry}% {\sectionformat\sectionseparator\sectionseparator0}% {\realfolio}}% \endgroup} \def\setlistentries {\def\listentry ##1{\executeifdefined{##1\c!list }\gobblefivearguments }% \def\listbetween##1{\executeifdefined{##1\c!inbetween}\gobblethreearguments}} \def\resetlistentries {\let\listentry \gobblesixarguments \let\listbetween\gobblefourarguments} \resetlistentries \addutilityreset{listentries} %\def\@@livariantaa% nr - tit - pag % {\def\lijstfill{\hskip .5em}% % \def\lijstskip{0em}% % \def\lijstwidth{0pt}} \def\@@livarianta% nr - tit - pag % {\def\lijstfill{\hskip 1.75em}% was \hskip.5em\hskip 1.25em {\def\lijstfill{\hskip .25em}% omdat nu check \def\lijstskip{0em}% \def\lijstwidth{2em}} \def\@@livariantb% nr - tit - fill - pag {\def\lijstfill{\hfill}% was \hskip.5em\hfill \def\lijstskip{5em}% \def\lijstwidth{2em}} \def\@@livariantc% nr - tit - dots - pag {\def\lijstfill{\hskip.5em\lijstdots\hskip.5em}% \def\lijstskip{5em}% \def\lijstwidth{0pt}} \def\lijstdots{\leaders\hbox to .5em{\hss.\hss}\hfill} \def\@@lialternative% {\lijstvariantb} \@@livariantb \def\setlistparameter#1#2{\@EA\def\csname\??li#1#2\endcsname} \def\dosetuplist[#1][#2]% slow -) {\def\docommando##1% {\getparameters[\??li##1][#2]% \preparepageprefix{\??li##1}}% \processcommalist[#1]\docommando} \def\setuplist {\dodoubleargument\dosetuplist} \def\dodosetlijst#1% {\def\nolist{\splitsequence{\getvalue{\??li#1\c!limittext}}}% \setvalue{#1\c!inbetween}{\dotussenlijst {#1}}% \setvalue{#1\c!list }{\dolijstelement{#1}}} \def\dodoresetlijst#1% {\let\nolist\empty \setvalue{#1\c!inbetween}{\gobblefourarguments{#1}}% \setvalue{#1\c!list }{\gobblesixarguments {#1}}} \let\nolist\empty \def\dodefinelist[#1][#2][#3]% {\presetlocalframed[\??li#1]% \getparameters [\??li#1] [\c!height=\v!broad, \c!depth=\v!broad, \c!offset=0.25em, \c!maxwidth=, \c!state=\v!start, \c!coupling=\v!off, \c!criterium=\v!local, \c!width=3em, \c!alternative=\c!b, \c!style=\v!normal, \c!textstyle=\getvalue{\??li#1\c!style}, \c!numberstyle=\getvalue{\??li#1\c!style}, \c!pagestyle=\getvalue{\??li#1\c!style}, \c!color=, \c!textcolor=\getvalue{\??li#1\c!color}, \c!numbercolor=\getvalue{\??li#1\c!color}, \c!pagecolor=\getvalue{\??li#1\c!color}, \c!numbercommand=\lijstnummercommando, \c!textcommand=\lijsttekstcommando, \c!pagecommand=\lijstpaginacommando, \c!pagenumber=\v!yes, \c!pageboundaries=, \c!margin=\!!zeropoint, \c!aligntitle=, \c!before=, \c!after=, \c!inbetween=, \c!symbol=, \c!interaction=\v!sectionnumber, \v!part\v!number=\v!yes, % nodig ? % v \c!label=\v!no, \c!distance=\!!zeropoint, \c!separator=\@@koseparator, \c!limittext=\@@kolimittext, \c!stopper=, \c!expansion=]% \doifassignmentelse{#2} {\getparameters[\??li#1][#2]} {\ConvertToConstant\doifnot{#2}{} {\copyparameters % interactie ? [\??li#1][\??li#2] [\c!state,\c!width,\c!alternative,\c!style,\c!color, \c!textstyle,\c!textcolor,\c!textcommand, \c!pagestyle,\c!pagecommand,\c!pagecolor, \c!numberstyle,\c!numbercolor,\c!numbercommand, \c!pagenumber,\c!pageboundaries,\c!margin,\c!symbol, \c!limittext, \c!aligntitle,\c!before,\c!after,\c!inbetween,\v!part\c!number,\c!label]% \getparameters[\??li#1][#3]}}% \addutilityreset{#1}% \setvalue{\s!set #1}{\dodosetlijst {#1}}% \setvalue{\s!reset#1}{\dodoresetlijst{#1}}} \def\definelist {\dotripleempty\dodefinelist} \def\iflijstgeplaatst{\ifutilitydone} \def\placelist {\dodoubleempty\doplacelist} \def\plaatsruwelijst {\dodoubleempty\doplaatsruwelijst} \def\dobeginoflist {\begingroup \startpacked[\v!blank]} \def\doendoflist {\stoppacked \endgroup} \def\doplacelist[#1][#2]% {\dobeginoflist \plaatsruwelijst[#1][#2]% \doendoflist} \def\plaatsruwelijst[#1][#2]% {\begingroup \dogetcommalistelement1\from#1\to\firstlistelement \dosetuplist[#1][#2]% \doifvalue{\??li\firstlistelement\c!coupling}\v!on {\startlistreferences{#1}}% \dosettoclevel\??li\firstlistelement \honorlocalfilterlevel \doutilities{listentries,#1}\jobname{#1}\relax\par \stoplistreferences{#1}% \dosetlistmode \endgroup} % the simple appreach: % % \def\dosettoclevel#1#2% % {\dosetfilterlevel{\getvalue{#1#2\c!criterium}}\empty} % % but we want to to support selection by number: % % \starttypen % \placelist[section][criterium=chapter,number=1] \blank % \placelist[section][criterium=chapter,number=2] \blank % \placelist[section][criterium=chapter,number=3] \blank % % \chapter{first} \section{AA} \section{BB} % \chapter{second} \section{CC} \section{DD} % \chapter{third} \section{EE} \section{FF} % \stoptypen \def\dosettoclevel#1#2% {\ifundefined{#1#2\c!number}% \dosetfilterlevel{\getvalue{#1#2\c!criterium}}\empty \else \doifelsevaluenothing{#1#2\c!number}% {\dosetfilterlevel{\getvalue{#1#2\c!criterium}}\empty} {\setsectieenkoppeling{\getvalue{#1#2\c!criterium}}% \dosetfilterlevel {\previoussection\@@sectie}% {\getvalue{#1#2\c!number}}}% \fi} \def\dosetlistmode {\iflijstgeplaatst \setsystemmode \v!list \else \resetsystemmode\v!list \fi} \def\dodocompletelist[#1][#2][#3]% enkelvoud, meervoud, instellingen {\expanded{\systemsuppliedtitle[#2]{\noexpand\headtext{#2}}}% expansion needed for v! vs french ! \doplacelist[#1][#3]} \def\docompletelist[#1][#2]% {\dodocompletelist[#1][#1][#2]} \def\completelist {\dodoubleempty\docompletelist} \def\lijstelementen {} % bevat lijst met paginaovergangen \def\lijstnummercommando #1{#1} % geen strut i.v.m. intractieve versie \def\lijsttekstcommando #1{\begstrut#1\endstrut} \def\lijstpaginacommando #1{\strut#1} \def\doassigndimen#1#2#3% {\doifinsetelse{#2}{\v!fit,\v!broad} {#1=#3\relax} {#1=#2\relax}} % \let\dohandlelistnumber\firstofoneargument % % can be anything, so no \expanded{\separatednumber{#1}} ! \def\dohandlelistnumber#1{\separatednumber{#1}} \let\currentlistsymbol\empty \def\listsymbol[#1]#2% {{\dosetlistsymbol{#1}{#2}\currentlistsymbol}} \def\dosetlistsymbol#1% #2% {\executeifdefined {listsymbol@\getvalue{\??li#1\c!symbol}}% \listsymbol@default {#1}} % {#2} \def\listsymbol@none#1#2% {\def\currentlistsymbol% {\doassigndimen{\dimen0}{\getvalue{\??li#1\c!width}}{1.5em}% \hbox to \dimen0{}}} \def\listsymbol@one#1#2% {\def\currentlistsymbol{\strut$\bullet$}} \def\listsymbol@two#1#2% {\def\currentlistsymbol{\vrule\!!width1em\!!height1ex\!!depth\zeropoint}} \def\listsymbol@three#1#2% {\def\currentlistsymbol % very slow {{\doassigndimen{\dimen0}{\getvalue{\??li#1\c!width}}{1.5em}% \doassigndimen{\dimen2}{\getvalue{\??li#1\c!height}}{1ex}% \doassigndimen{\dimen4}{\getvalue{\??li#1\c!depth}}{0pt}% \vrule\!!width\dimen0\!!height\dimen2\!!depth\dimen4}}} \def\listsymbol@default#1#2% {\doifelsevalue{\??li#1\c!prefix}\v!no % ook nog eerste {\edef\splitlistsymbol{\removefirstprefix{#2}}} {\doifelsevalue{\??li#1\c!prefix}\v!none {\edef\splitlistsymbol{\removeallprefixes{#2}}}% {\def\splitlistsymbol{#2}}}% geen \edef ivm enz \def\currentlistsymbol% kan iets efficienter met \ifdone {\doifvalue{\??li#1\c!label}\v!yes{\leftlabeltext{#1}}% \strut \def\numberseparator{\getvalue{\??li#1\c!separator}}% \@EA\dohandlelistnumber\@EA{\splitlistsymbol}% \getvalue{\??li#1\c!stopper}% \doifvalue{\??li#1\c!label}\v!yes{\rightlabeltext{#1}}}} \def\listsymbol@unknown#1#2% {\def\currentlistsymbol{\getvalue{\??li#1\c!symbol}}} % so far for list symbols \def\@@dodolijstelement{dodolijstelement} \def\dosomelijstelement#1#2#3{#1 #2 \translatednumber[#3]} \setvalue{\@@dodolijstelement a}{\let\dosomelijstelement\dodofixdlijstelementABC} \setvalue{\@@dodolijstelement b}{\let\dosomelijstelement\dodofixdlijstelementABC} \setvalue{\@@dodolijstelement c}{\let\dosomelijstelement\dodofixdlijstelementABC} \setvalue{\@@dodolijstelement d}{\let\dosomelijstelement\dodofixdlijstelementD} \setvalue{\@@dodolijstelement e}{\let\dosomelijstelement\dodofixdlijstelementE} \setvalue{\@@dodolijstelement f}{\let\dosomelijstelement\dodofixdlijstelementF} \setvalue{\@@dodolijstelement g}{\let\dosomelijstelement\dodofixdlijstelementG} \setvalue{\@@dodolijstelement\v!none}% {\def\dosomelijstelement{\dodofreevlijstelement}} \setvalue{\@@dodolijstelement\v!vertical}% {\def\dosomelijstelement{\dodofreevlijstelement}} \setvalue{\@@dodolijstelement\v!horizontal}% {\def\dosomelijstelement{\dodofreehlijstelement}} \setvalue{\@@dodolijstelement\v!command}% {\let\dosomelijstelement\dodocommandlijstelement} % Here I learned something new: \leftskip can be changed % within a paragraph and the last one counts. Therefore we % cannot use \bgroup's! The placement of the \leftskip % assignment and the \endgraf's may not be changed. We have to % end the preceding paragraph before changing \leftskip. This is % because every listelement sets the \leftskip. % \strippedcsname\dodolijstelement \def\newlineinlist{\space} \def\dolijstelement#1#2#3#4#5#6% pas op: wordt ook elders gedefinieerd {\doiftoclevelelse[#5]{\dodolijstelement{#1}{#2}{#3}{#4}{#5}{#6}}{}} \def\dodolijstelement#1#2#3#4#5#6% {\getvalue{\@@dodolijstelement\getvalue{\??li#1\c!alternative}}% %\showcomposition \let\@@iawidth\!!zeropoint % moet boolean worden \bgroup \edef\lijstelementen {\getvalue{\??li#1\c!pageboundaries}}% \ExpandBothAfter\doifinset{#3}\lijstelementen {\showmessage\m!systems{14}{#3}% \page}% \egroup \dontcomplain \setfullsectionnumber{\??li#1}% \dosetlistsymbol{#1}{#3}% \dosomelijstelement{#1}{#2}{#3}{#4}{#5}{#6}% \global\utilitydonetrue} \def\dolistattributes#1#2#3% {\doifvaluesomething{\??li#1#3} {\resetinteractionparameter\c!color \resetinteractionparameter\c!contrastcolor}% \doattributes{\??li#1}{#2}{#3}} \def\dodocommandlijstelement#1#2#3#4#5#6% {\doifdefinedelse{\??li#1\c!command} {\getvalue{\??li#1\c!command}% {#3}{#4}{\pageprefix\??li#1[#5]\translatednumber[#5]}} {[#1: #3 - #4 - \pageprefix\??li#1[#5]\translatednumber[#5]]}} \def\dodofreelijstelement#1#2#3#4#5#6#7#8% {\def\makelijstelement##1##2% {\noindent % new and needed \hbox {\doifelsevalue{\??li#1\c!interaction}{##1} % \??li ipv \??ia {\setbox0\hbox{\showcontrastlocation{\??li#1}{#6}{##2}}% \linklisttoelement{#1}{#2}{#5}{#6}{\box0}}%{\copy0}}% {##2}}}% \getvalue{\??li#1\c!before}% can be \hskip \doifdefinedelse{\??li#1\c!command} {\makelijstelement{\getvalue{\??li#1\c!interaction}}% this forces all {\getvalue{\??li#1\c!command}% {#3}% geen conversies etc {#4}% geen conversies etc {\pageprefix\??li#1[#5]% \translatednumber[#5]}}} {#7% \vbox {\forgetall \makelijstelement\v!all {\makelijstelement\v!sectionnumber {\dolistattributes{#1}\c!numberstyle\c!numbercolor {\getvalue{\??li#1\c!numbercommand}{\currentlistsymbol}}}% \makelijstelement\v!text {\dolistattributes{#1}\c!textstyle\c!textcolor {\let\\=\newlineinlist \dontconvertfont \getvalue{\??li#1\c!textcommand}{#4}}}% \doifvalue{\??li#1\c!pagenumber}\v!yes {\doifsomething{#5} {\makelijstelement\v!pagenumber {\dolistattributes{#1}\c!pagestyle\c!pagecolor {\getvalue{\??li#1\c!pagecommand} {\pageprefix\??li#1[#5]% \translatednumber[#5]}}}}}}}% #8}% \getvalue{\??li#1\c!after}} \def\dodofreehlijstelement#1#2#3#4#5#6% {\dodofreelijstelement{#1}{#2}{#3}{#4}{#5}{#6} {\noindent}{}} \def\dodofreevlijstelement#1#2#3#4#5#6% % \nointerlineskip nodig, {\dodofreelijstelement{#1}{#2}{#3}{#4}{#5}{#6} % anders verkeerde spatiering {\ifvmode\nointerlineskip\fi} % bij multi-line lijsten {\nointerlineskip\endgraf\allowbreak}} % % to be documented: uitlijnen, hang % now also in abc \def\limitatedlistentry#1#2% {\doifelsenothing{\??li#1\c!maxwidth} {\getvalue{\??li#1\c!textcommand}{#2}} {\getvalue{\??li#1\c!textcommand}% {\limitatetext {#2}% {\getvalue{\??li#1\c!maxwidth}}% {\splitsymbol{\getvalue{\??li#1\c!limittext}}}}}} \def\dodofixdlijstelementABC#1#2#3#4#5#6% weeden {\endgraf \leftskip\getvalue{\??li#1\c!margin}% na de \endgraf ! \getvalue{\??li#1\c!before}% \!!widthc\getvalue{\??li#1\c!distance}% \doifelsevalue{\??li#1\c!width}\v!fit {\!!widtha\zeropoint} {\doifelsenothing{#3} {\doifelsevalue{\??li#1\c!aligntitle}\v!yes {\!!widtha\zeropoint \!!widthc\zeropoint} {\!!widtha\getvalue{\??li#1\c!width}}} {\!!widtha\getvalue{\??li#1\c!width}}}% \getvalue{\??li\c!alternative\getvalue{\??li#1\c!alternative}}% \endgraf \def\makelijstelement##1##2% {\doifelsevalue{\??li#1\c!interaction}{##1} {\setbox0\hbox{\showcontrastlocation\??ia{#6}{##2}}% \linklisttoelement{#1}{#2}{#5}{#6}{\box0}}%{\copy0}}% {\hbox{##2}}}% \doifvalue{\??li#1\c!interaction}\v!text % not supported {\setlistparameter{#1}\c!interaction\v!all}% \makelijstelement\v!all {\hbox to \hsize {\dostartattributes{\??li#1}\c!style\c!color\empty \!!widthb\hsize \setbox2\hbox \ifdim\!!widtha>\zeropoint to \!!widtha \fi {\makelijstelement\v!sectionnumber {\dolistattributes{#1}\c!numberstyle\c!numbercolor {\getvalue{\??li#1\c!numbercommand}{\currentlistsymbol}}% \hfill}}% \setbox4\hbox {\doifvalue{\??li#1\c!pagenumber}\v!yes {\doifsomething{#5} % \lijstwidth is new ; temp hack {\hbox \ifdim\lijstwidth>\zeropoint to \lijstwidth\fi {\hfill \makelijstelement\v!pagenumber {\dolistattributes{#1}\c!pagestyle\c!pagecolor {\getvalue{\??li#1\c!pagecommand}% {\pageprefix\??li#1[#5]% \translatednumber[#5]}}}}}}}% \vbox {\hsize\!!widthb \setupalign[\getvalue{\??li#1\c!align}]% \ifdim\!!widtha<\hsize \hangindent=\wd2 \dimen2=\!!widthc % \getvalue{\??li#1\c!distance}% \advance\hangindent \dimen2 \hangafter=1 \doifvalue{\??li#1\c!hang}\v!no{\hangafter\zerocount}% \ifdim\wd4=\zeropoint % \ifvoid4 % we kunnen gewoon afbreken aan het eind \else \ifdim\lijstskip>\zeropoint\relax \rightskip=\lijstskip\!!plus10em\relax \parfillskip=-\rightskip \fi \fi \else \dimen2\zeropoint \fi \parindent\zeropoint\relax \leavevmode \box2\relax \hskip\dimen2 \bgroup \dolistattributes{#1}\c!textstyle\c!textcolor {\let\\=\newlineinlist \dontconvertfont %\getvalue{\??li#1\c!textcommand}{#4}}% \limitatedlistentry{#1}{#4}}% %\carryoverpar % new otherwise wrong linespacing \egroup \ifdim\wd4=\zeropoint\relax % \ifvoid4 % \ifdim\!!widtha<\hsize \hfill\strut \fi % spoils align \else \nobreak\lijstfill \box4\relax \relax \fi}% \hss \dostopattributes}}% new \nointerlineskip % anders verkeerde spatiering bij multi-line \endgraf \allowbreak \getvalue{\??li#1\c!after}} % overrulen interactie kan sneller, bv door hulpconstanten % te gebruiken en die te letten \def\dodofixdlijstelementD#1#2#3#4#5#6% {%\leftskip=\getvalue{\??li#1\c!margin}% \ifvmode \advance\leftskip\getvalue{\??li#1\c!margin}% AANGEPAST \fi \bgroup \ifvmode \noindent\leavevmode % leavevmode ? ? ? \fi \doifvalue{\??li#1\c!interaction}\v!text % not supported {\setlistparameter{#1}\c!interaction\v!sectionnumber}% \doifvalue{\??li#1\c!interaction}\v!all % not supported {\setlistparameter{#1}\c!interaction\v!sectionnumber}% \def\makelijstelement##1##2% {\doifelsevalue{\??li#1\c!interaction}{##1} {\setbox0\hbox{\showcontrastlocation\??ia{#6}{##2}}% \linklisttoelement{#1}{#2}{#5}{#6}{\box0}}%{\copy0}}% {\hbox{##2}}}% \setbox4=\hbox {\doifvalue{\??li#1\c!pagenumber}\v!yes {\doifsomething{#5} {\makelijstelement\v!pagenumber {\dolistattributes{#1}\c!pagestyle\c!pagecolor {\getvalue{\??li#1\c!pagecommand} {\pageprefix\??li#1[#5]% \translatednumber[#5]}}}}}}% \donetrue \doifnothing{#3}{\doifvaluenothing{\??li#1\c!symbol}\donefalse}% \ifdone \hbox {\getvalue{\??li#1\c!left}% \makelijstelement\v!sectionnumber {\dolistattributes{#1}\c!numberstyle\c!numbercolor {\getvalue{\??li#1\c!numbercommand}{\currentlistsymbol}}}% \getvalue{\??li#1\c!right}% \hskip.5em}% \nobreak \fi \tolerance3500 % niet zomaar veranderen \dolistattributes{#1}\c!textstyle\c!textcolor {\let\\=\newlineinlist \dontconvertfont %\getvalue{\??li#1\c!textcommand}{#4}}% \limitatedlistentry{#1}{#4}}% \ifvoid4\else \nobreak \hskip.75em\relax \nobreak \box4 \fi \dimen0=\getvalue{\??li#1\c!distance}\relax \ifdim\dimen0<1em\relax \hskip1em\!!plus1em\!!minus.25em\relax \else \hskip\dimen0\!!plus.5\dimen0\!!minus.25\dimen0\relax \fi \egroup} \def\dodofixdlijstelementE#1% {\dodofixdlijstelementEFG {\setupinteraction[\c!strut=\v!no]} {\localframed[\??li#1][\c!depth=\!!zeropoint,\c!color=]} {#1}} \def\dodofixdlijstelementF#1% {\dodofixdlijstelementEFG {} {\dosetraggedhbox{\getvalue{\??li#1\c!align}}\raggedbox} {#1}} \def\dodofixdlijstelementG#1% {\dodofixdlijstelementEFG {} \midaligned {#1}} \def\dodofixdlijstelementEFG#1#2#3#4#5#6#7#8% {\noindent \hbox {#1% in case E nils the strut \let\\=\newlineinlist \setbox0\hbox {#2{\showcontrastlocation\??ia{#8}% {\dostartattributes{\??li#3}\c!style\c!color\empty \ignorespaces\dontconvertfont\setstrut \begstrut %\doifelsenothing{\??li#3\c!maxwidth} % {\getvalue{\??li#3\c!textcommand}{#6}} % {\getvalue{\??li#3\c!textcommand}{\limitatetext{#6}{\getvalue{\??li#3\c!maxwidth}}{\unknown}}}% \limitatedlistentry{#3}{#6}% \endstrut % struts new \dostopattributes}}}% \linklisttoelement{#3}{#4}{#7}{#8}{\box0}}%{\copy0}}% \par % should be an option \getvalue{\??li#3\c!inbetween}} % better: % % \def\linklisttoelement#1#2#3#4#5% % list location format page data % {\ifautocrossdocument % \gotodestination{}{}{#1::\@@filterblocknumberpart[#3]}{#4}{#5}% % \else % \gotonextinternal{#1}{#2}{#4}{#5}% % \fi} % % but for the moment: \def\linklisttoelement#1#2#3#4#5% % list location format page data {\gotonextinternal{#1}{#2}{#4}{#5}} \def\writetolist[#1]#2#3% {\doifsomething{#1} {\convertargument#2\to\firstlistelement \@EA\dowritetolist\@EA{#1}{\firstlistelement}{#3}{\v!head}}} \def\dotussenlijst#1#2#3#4% pas op: wordt ook elders gedefinieerd {\doiftoclevelelse[#3]{#2}{}} \def\writebetweenlist[#1]#2% {\@EA\dowritebetweenlist\@EA{#1}{#2}} % #2 weg en \expanded % NOG ENGELS MAKEN \def\listlength {\utilitylistlength} \def\listwidth {\utilitylistwidth} \def\listheight {\utilitylistheight} \def\utilitylistlength {0} \def\utilitylistwidth {0pt} \def\utilitylistheight {0pt} \def\dolijstelementX#1#2#3#4#5#6% {\doiftoclevelelse[#5] {\doglobal\increment\utilitylistlength \hbox {\doattributes {\??li#1}\c!textstyle\c!textcolor {\let\\=\newlineinlist \dontconvertfont \getvalue{\??li#1\c!textcommand}{#4}}}% \global\utilitydonetrue} {}} \def\dodeterminelistcharacteristics[#1][#2]% {\begingroup \doglobal\newcounter\utilitylistlength \let\dolijstelement\dolijstelementX \dosetuplist[#1][#2]% \dogetcommalistelement1\from#1\to\commalistelement \dosettoclevel\??li\commalistelement \setbox0\vbox{\doutilities{listentries,#1}\jobname{#1}\relax\par}% \xdef\utilitylistheight{\the\ht0}% \xdef\utilitylistwidth {\the\wd0}% \endgroup \dosetlistmode} \def\determinelistcharacteristics {\dodoubleempty\dodeterminelistcharacteristics} % \definieerreferentielijst % [externalfigure] % [commando=\toongrootfiguur, % voor=\pagina, % na=\pagina] % % \definieerreferentielijst % [externaltable] % [commando=\toongrotetabel, % voor=\pagina, % na=\pagina] % % \def\toongrootfiguur#1% % {\externfiguur[#1][kader=aan,factor=max]} % % \def\toongrotetabel#1% % {\switchtobodyfont[12pt]\haalbuffer[#1]} % % \schrijfnaarreferentielijst[externalfigure]{koe}{\externfiguur[koe][breedte=3cm,kader=aan]} % \schrijfnaarreferentielijst[externalfigure]{paard}{\externfiguur[paard][breedte=3cm,kader=aan]} % % \startbuffer[kanweg] % \starttabel[|||] % \HL % \VL test \VL test \VL\SR % \HL % \VL test \VL test \VL\FR % \VL test \VL test \VL\MR % \VL test \VL test \VL\LR % \HL % \stoptabel % \stopbuffer % % \schrijfnaarreferentielijst[externaltable]{kanweg}{\switchtbodyfont[5pt]\haalbuffer[kanweg]} % % \plaatsreferentielijst % [externalfigure,externaltable] % algemeen \def\referentiebutton#1[#2]% {\hbox\bgroup % the \hbox is needed to bypass \let\referenceprefix=\empty % \dontleavehmode in \gotobox \setupinteraction[\c!color=,\c!contrastcolor=,\c!strut=]% \setupreferencing[\c!prefix=]% \gotobox{\hbox{\ignorespaces#1}}[#2]% \egroup} \newcounter\referencecounter \def\doreferentielijstelement#1#2#3#4#5% {\doiftoclevelelse[#4] {\getvalue{\??rl#1\c!before}% \referentiebutton {\getvalue{\??rl#1\c!command}{#3}\pagereference[\r!to#2]}% [\r!from#2]% \global\utilitydonetrue \getvalue{\??rl#1\c!after}} {}} \def\doplaatsreferentielijst[#1][#2]% {\begingroup % \let\doschrijfnaarreferentielijst=\gobblethreearguments \setupreferencelist[#1][#2,\c!state=\v!stop]% \dogetcommalistelement1\from#1\to\commalistelement \dosettoclevel\??rl\commalistelement \doutilities{listentries,#1}\jobname{#1}\relax\par \endgroup} \def\plaatsreferentielijst% {\dodoubleempty\doplaatsreferentielijst} \def\dowritetoreferencelist#1#2#3% {\doifvalue{\??rl#1\c!state}\v!start {\begingroup \makesectionformat \doifelse{\@@nmstate}\v!start {\def\dopaginanummer{\noexpand\pagenumber}} {\def\dopaginanummer{0}}% \edef\schrijfwegnaarlijst% {\writeutilitycommand% {\referencelistentry% {#1}% tag {#2}% number {#3}% data {\sectionformat\sectionseparator\sectionseparator\dopaginanummer}% {\noexpand\realfolio}}}% \schrijfwegnaarlijst \endgroup}} \def\writetoreferencelist[#1]#2% #1=class #2=data #3=visualization {\dowithnextbox {\doifelsevalue{\??rl#1\c!state}\v!start {\doglobal\increment\referencecounter % must be resolved due to #2 \referentiebutton {\flushnextbox \pagereference[\r!from\referencecounter]% \dowritetoreferencelist{#1}{\referencecounter}{#2}}% [\r!to\referencecounter]} {\flushnextbox}} \hbox} % \vbox ? \def\referencelistentry#1% {\executeifdefined{#1\c!list}\gobblefourarguments} \def\dodosetreferentielijst#1% {\setvalue{#1\c!list}{\doreferentielijstelement{#1}}} \def\dodoresetreferentielijst#1% {\setvalue{#1\c!list}{\gobblefourarguments}} \def\dodefinereferencelist[#1][#2]% {\setupreferencelist[#1] [\c!command=, \c!state=\v!start, \c!criterium=\v!all, \c!before=, \c!after=, #2]% \setcounter{#1}{0}% \addutilityreset{#1}% \setvalue{\s!set #1}{\dodosetreferentielijst {#1}}% \setvalue{\s!reset#1}{\dodoresetreferentielijst{#1}}} \def\definereferencelist% {\dodoubleempty\dodefinereferencelist} \def\dosetupreferencelist[#1][#2]% {\getparameters[\??rl#1][#2]} \def\setupreferencelist% {\dodoubleempty\dosetupreferencelist} \def\dosetupcombinedlist[#1][#2]% {\getparameters[\??ih#1][#2]% \expanded{\setuplist[\getvalue{\??ih#1\c!list}]}[#2]} \def\setupcombinedlist% {\dodoubleargument\dosetupcombinedlist} \def\doplacecombinedlist[#1][#2]% {\begingroup \getparameters[\??ih#1][#2]% \dosettoclevel\??ih{#1}% \edef\samengesteldelijst{\getvalue{\??ih#1\c!list}}% %\stripspaces\from\samengesteldelijst\to\samengesteldelijst \doifelsevalue{\??ih#1\c!level}\v!current % criterium=vorige,niveau=huidige {\!!counta=0\@@kolevel} % hm: \@@kolevel {\fullexpandoneargafter\doifnumberelse{\getvalue{\??ih#1\c!level}}% in verband {\!!counta\getvalue{\??ih#1\c!level}% met de vorige implementatie \advance\!!counta \plusone % accepteren we ook nummers (0==deel) \getfromcommacommand[\samengesteldelijst][\!!counta]% \edef\maximumlijst{\commalistelement}}% {\edef\maximumlijst{\getvalue{\??ih#1\c!level}}}% \!!counta\getvalue{\??se\getvalue{\??ko\maximumlijst\c!section}\c!level}}% \let\!!stringa\samengesteldelijst \let\samengesteldelijst\empty \def\docommando##1% {\ifnum\getvalue{\??se\getvalue{\??ko##1\c!section}\c!level}>\!!counta \else \addtocommalist{##1}\samengesteldelijst \fi}% \processcommacommand[\!!stringa]\docommando \doifvalue{\??ih#1\c!coupling}\v!on {\startlistreferences{#1}}% \ExpandFirstAfter\dodoplacecombinedlist[\samengesteldelijst][#2]% \stoplistreferences{#1}% \endgroup \dosetlistmode} \def\dodoplacecombinedlist[#1][#2]% {\dobeginoflist \dosetuplist[#1][#2]% \doutilities{listentries,#1}\jobname{#1}\relax\par \doendoflist} \def\dovolledigesamengesteldelijst[#1][#2]% {\expanded{\systemsuppliedtitle[#1]{\noexpand\headtext{#1}}}% expansion due to v! vs french ! \doplacecombinedlist[#1][#2]} \def\dodefinecombinedlist[#1][#2][#3]% {\makerawcommalist[#2]\samengesteldelijst % for fast processing \letvalue{\??ih#1\c!list}\samengesteldelijst \getcommalistsize[#2]% \getfromcommalist[#2][\commalistsize]% \doeassign[\??ih#1][\c!level=\commalistelement]% \getparameters [\??ih#1] [\c!criterium=\v!local,#3]% \setvalue{\e!setup#1\e!endsetup}% {\dodoubleempty\dosetupcombinedlist[#1]}% \setvalue{\e!place#1}% {\dodoubleempty\doplacecombinedlist[#1]}% \setvalue{\e!complete#1}% {\dodoubleempty\dovolledigesamengesteldelijst[#1]}} \def\definecombinedlist% {\dotripleempty\dodefinecombinedlist} \def\placecombinedlist% {\dodoubleempty\doplacecombinedlist} % new and yet undocumented (used in cocoa qa) % % \setupremaininglistlength % [left=\hss nog~,right=~ingangen] % % \resetremaininglistlength % [section][settings] % % \placelist % [section] % [before=\showremaininglistlength] % % \dorecurse{100}{\section{hans}} \definesystemvariable {ll} % ListLength \def\setupremaininglistlength[#1]% {\getparameters[\??ll][#1]% \xdef\listlengthcounter{0}} \setupremaininglistlength [\c!left=\hss,\c!right=,\c!number=\v!yes, \c!before=\blank,\c!after=\page, \c!style=\v!smallnormal,\c!color=] \def\resetremaininglistlength {\dodoubleempty\doresetremaininglistlength} \def\doresetremaininglistlength[#1][#2]% {\determinelistcharacteristics[#1][#2]% \determinelistcharacteristics[#1][#2]% \xdef\listlengthcounter{\number\utilitylistlength}} \def\showremaininglistlength {\bgroup \ifnum\listlengthcounter>\plusone \scratchdimen\pagetotal \setbox\scratchbox\vbox {\@@llbefore\par\horizontalstrut\par\horizontalstrut\par\@@llafter}% \advance\scratchdimen \ht\scratchbox \advance\scratchdimen \dp\scratchbox \ifdim\scratchdimen>\pagegoal \@@llbefore \nobreak\hbox to \hsize {\doifnot\@@llnumber\v!yes{\let\listlengthcounter\empty}% \doattributes\??ll\c!style\c!color{\@@llleft\listlengthcounter\@@llright}} \@@llafter \fi \fi \doglobal\decrement\listlengthcounter\relax \egroup} \setupreferencelist [\c!style=\v!normal] \protect \endinput