Thursday, January 17, 2002 Giuseppe Bilotta wrote:
GB> Hello,
GB> I have a bug report and an enhancement request for enumerations.
GB> First of all: the bug.
I found the bug. It comes from the definition in core-des:
\def\special@@definitiewoord#1#2#3#4[#5]#6#7%
{\strut
\doifelsevalue{\??dd#1\c!nummer}{\v!nee}
{\!!doneafalse}
{\doifelse{#5}{-}
{\!!doneafalse}
{\!!doneatrue}}%
\chardef\definitiekoppeling=0
\iflocation
\doifvaluesomething{\??dd#1\c!koppeling}
{\processaction % genereert > of <
[\getvalue{\??dd#1\c!koppelwijze}]
[ \v!lokaal=>\chardef\definitiekoppeling=1, % old: default
\v!globaal=>\chardef\definitiekoppeling=2]}% new: global crosslinking
\fi
\stelnummerin % the number is called indirectly
[\getvalue{\??dd#1\??dd\c!nummer}]
[\c!sectienummer=\getvalue{\??dd#1\c!sectienummer}]%
\if!!donea
\getvalue{\e!volgende#2#1}%
\iflocation
\bgroup
\setvalue{\??dd#1\c!sectienummer}{\v!ja}%
\protectconversion
%\maakvoorafgaandenummer[#1]%
\maakvoorafgaandenummer[\getvalue{\??dd#1\??dd\c!nummer}]%
\ifcase\definitiekoppeling \or
\xdef\internaldoornummer{#3{#1}}%
\rawreference{\s!num}{#1:\internaldoornummer}{}%
\or
\xdef\internaldoornummer{\countervalue{\??dd\c!koppeling#1}}%
\rawreference{\s!num}{#1:\internaldoornummer}{}%
\fi
\egroup
\fi
%\maakvoorafgaandenummer[#1]%
\maakvoorafgaandenummer[\getvalue{\??dd#1\??dd\c!nummer}]%
\hbox
{\let\normalkap\relax % sorry, uppercase causes troubles
\doattributes % \nocase primitive needed
{\??dd#1}\c!kopletter\c!kopkleur
{\getvalue{\??dd#1\c!commando}% hook for taco
{\showdntext{#2#1}%
\domakednnummer{#1}{#2}{#3}}}%
\iflocation\ifcase\definitiekoppeling \else
\edef\localconnection{\getvalue{\??dd#1\c!koppeling}:\internaldoornummer}%
\doifreferencefoundelse{\localconnection}
{\in[\localconnection]}{}% genereert > of <
%\in[\localconnection]%
\fi\fi}%
\doifnot{#5}{-}{\rawreference{\s!num}{#5}{#3{#1}}}%
% Here is the bug -----------------------------^^^^^^
% When this gets called with \showdnnummer as #3, there
% is an expansion problem, since \showdnnummer is *not*
% properly expandable: it uses the command sequence
% \preparednumber which is defined by \showdnnummer itself
% If I change the line with something like
\preparethenumber{\??dd#1}\voorafgaandenummer\preparednumber
\edef\thenumbertouse{%
\preparednumber
\nummer[\getvalue{\??dd#1\??dd\c!nummer}]}%
\doifnot{#5}{-}{\rawreference{\s!num}{#5}{\thenumbertouse}}%
% everything goes on smoothly.
% Maybe we need and expandable version of showdnnummer?
\else % Why was this strange expansion needed?
\hbox
{\edef\!!stringa{\showdnpuretext{#2#1}}% nog eens testen binnen \expanded
\expanded{\doattributes{\??dd#1}\noexpand\c!kopletter\noexpand\c!kopkleur
{\noexpand\getvalue{\??dd#1\c!commando}%
{\!!stringa}}}%
\doifnot{#5}{-}{\rawreference{\s!num}{#5}{}}}%
\fi}
--
Giuseppe "Oblomov" Bilotta