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
[email protected]
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
_______________________________________________
ntg-context mailing list
[email protected]
http://www.ntg.nl/mailman/listinfo/ntg-context