## LATEX-L@LISTSERV.UNI-HEIDELBERG.DE

 Options: Use Forum View Use Monospaced Font Show Text Part by Default Show All Mail Headers Message: [<< First] [< Prev] [Next >] [Last >>] Topic: [<< First] [< Prev] [Next >] [Last >>] Author: [<< First] [< Prev] [Next >] [Last >>]

It recently occured to me that when you use a \@for (or one of its
relatives) loop to generate something that gets typeset, you often want to
do things slightly different at the first or last iteration. Therefore, how
about including in LaTeX2e* a command
\@fancyfor <command> := <list> \do{<first>}{<middle>}{<last>}
say, which is like \@for except for the fact that it does <first> on the
first iteration, <last> on the last (unless that's the first), and <middle>
on the others? With that, you could write
\@fancyfor\@tempa:=<list>\do{\@tempa}{, \@tempa}{ and \@tempa}
and for <list> equal to A; A,B; A,B,C; A,B,C,D respectively get the results
A
A and B
A, B and C
A, B, C and D

This will of course need some thinking about; perhaps these are not the
best rules for which body gets executed when; perhaps the command should
not be constructed as a variant of \@for, but rather as some map over a
LaTeX3 sequence. But regardless of this, I think that some command in the
future standard language (be that LaTeX 2e+required, 2e*, or 3) should
offer this kind of feature, since doing special things at the end is so
useful to have, but so laborious to code.

Lars Hellström

PS: What happened to the promised (FMi 2000/03/07) trace package? I didn't
see anything like it on www.latex-project.org when I looked for it a couple
of weeks ago, nor is there anything with that name on CTAN.