Hi Hraban, Hans, Taco, I followed this thread with interest. By coincidence I was struggling with this kind of problem during the last days. Thanks so much for this educative example! In my case I have to fill in a table with the information concerning parcels to be sent. Some times there is a single one sometimes there are multiple pieces. For each of the parcels I have to fill in a table-row. And voilà! The community cooked up the pieces I missed. Thanks again. Willi Henning Hraban Ramm wrote:
(This mail was rejected as spam in my first try, and the reject message was catched by my spam filter...)
Am 2006-01-03 um 11:51 schrieb Taco Hoekwater:
You need to expand the \Set commands in that first loop, otherwise you store the literal token \recursevelel inside the definitions of the Key and Val macros (\setvalue{}{} autoexpands its first argument, but not its second argument).
When not inside a recursion, \recurselevel expands to the number 0 (zero) in the "manual bit", and you are actually re-evaluating the macro using the then current \recurselevel definition when inside the "looping" bit.
The magic expansion hit me again, I should've known it.
So you need:
\dostepwiserecurse{1}{9}{1}{ \expanded{\Set{\recurselevel}{K\recurselevel}{V\recurselevel}} }
I hope this is clear enough?
Thank you very much! Actually, in the real environment I needed the \expanded at another place:
\def\Sender#1#2#3{\setvalue{SenderKey#1}{#2}\setvalue{SenderVal#1}{#3}} \def\GetSenderLine#1{\bTR\bTD\doiftextelse{\getvalue{SenderKey#1}} {\getvalue{SenderKey#1}:}{}\eTD\bTD\getvalue{SenderVal#1}\eTD\eTR} % initialize values (not even needed) \dostepwiserecurse{1}{9}{1}{ \Sender{\recurselevel}{}{} }
\startsetups sendertablesetup \setupTABLE[frame=off] \setupTABLE[x][1][width=\senderkeywidth, align=left, style={\keystyle \strut}] \setupTABLE[x][2][width=\sendervalwidth, align=right, style= {\valstyle\strut}] \bTABLE \dostepwiserecurse{1}{9}{1}{% count from 1 to 9, step 1 \expanded{\GetSenderLine{\recurselevel}} } \eTABLE \stopsetups
I collect this (and more) at http://wiki.contextgarden.net/ Talk:Letter_style
Grüßlis vom Hraban! --- http://www.fiee.net/texnique/ http://contextgarden.net http://www.cacert.org (I'm an assurer)
_______________________________________________ ntg-context mailing list ntg-context@ntg.nl http://www.ntg.nl/mailman/listinfo/ntg-context
% Info-sheet for the parcel service % Context file % filename: infotable.tex % W.Egger % 06-01-2006 % Thanks to a thread on the Context mailinglist this works now! \environment layout \setupbodyfont[10pt] \setuppapersize[A4,landscape][A4,landscape] \setuplayout[ topspace=1.5cm, backspace=1.5cm, width=27cm] \setupheadertexts[\leftaligned{\bfd Parcel service info-sheet}] \def\Addressee#1#2#3#4#5#6#7#8{% \setvalue{Ordno#1}{#2}% \setvalue{Bestno#1}{#3}% \setvalue{Adres#1}{#4}% \setvalue{Dimension#1}{#5}% \setvalue{Weight#1}{#6}% \setvalue{Value#1}{#7}% \setvalue{Tel#1}{#8}} \def\Parcel#1{% \bTR% \bTD\getvalue{Ordno#1}% \doiftextelse{\getvalue{Bestno#1}}% {\blank[small]Ext. Orderno:\par\hfill\getvalue{Bestno#1}}{\strut\blank} \eTD% \bTD \getvalue{Adres#1} \eTD% \bTD \getvalue{Dimension#1} \eTD% \bTD \getvalue{Weight#1} \eTD% \bTD \getvalue{Value#1} \eTD% \bTD \getvalue{Tel#1} \eTD\eTR} \def\Numberofparcels{3} \starttext \Addressee{1}% {293-291}%Ordernumber {12345-2009}%External ordernumber {Maximilian Smallbody\\ Sunshinestreet 24\\ 3456 EE Natland\\ Cloudyland}%Addres {70 x 67 x 15 cm}%Dimension {7.5 kg}%Weight {1.000.00\euro}%Value {+31 455535251}%Phone \Addressee{2}% {293-292}%TC-nummer {}%External ordernumber {Milly Milltower\\ 3\high{rd} Duststreet\\ Millerstown 56789\\ Millersland}%Addres {120 x 12 x 12 cm}%Dimension {2.5 kg}%Gewicht {293.00\euro}%Waarde buiten EU {+99-9192939495}%Telefoon \Addressee{3}% {}% {}% {}% {}% {}% {}% {}% %= Do not edit below this line!= {\bfa Date: \date} \blank[1.5cm] \bTABLE \setupTABLE[row][first][style=bold,align=middle] \setupTABLE[column][each][width=.166\textwidth,align=right] \setupTABLE[x][3][align=middle] \setupTABLE[x][4][align=left] \setupTABLE[x][5][align=left] \bTR \bTD Ordernumber\eTD \bTD Address \eTD \bTD Dimension \eTD \bTD Weight \eTD \bTD Value \eTD \bTD Phone \eTD\eTR \dostepwiserecurse{1}{\Numberofparcels}{1}{% \expanded{\Parcel{\recurselevel}}} \eTABLE \stoptext