You are here: Home / Przedsięwzięcia/Projects / TeX Pearls / 2008 Pearls / javier-mugica / src / saveentry.txt

saveentry.txt

This shows how to make a template where the entry is saved and procesed.
First, a self-explanatory definition:

\def\saveentry#1//{\def\entry{#1}}

Now, the problem is that we want #1 to be what the user (or ourselves) will write between the &'s,
i.e., the #-part. The template may be defined as

\saveentry#1//\dosomething{\entry},

where \dosomething is macro with one parameter that . . . does something!

\def\dosomething#1{${#1}^{#1-1}$}

Then, inside the table, we may write

A & .... \cr

or

A \cr

and we will get $A^{A-1}$.

The template definition works because, when TeX gets to the & or the \cr, it does not take it as part of the argument,
but as the ending of the #-part, and its reading mechanism goes to the v-part, where it founds the // that ends the argument.

\halign{\saveentry#//\dosomething& \saveentry#//\dosomething{\entry}\cr
A & e\cr
}

I owe the folloing remark to someone, I don't know who (I got a forwarded message via Barbara Beeton).

>
> You have to be careful with the use of & and \span and \cr, because these tokens
> are intercepted by TeX's scanner even when it is not expanding macros.
>
> but the final clause is confusing: what Don really means is "even when it
> is scanning tokens without processing them (perhaps skipping them)".
> What he is getting at is that an & will delimit the alignment entry
> even when "tokens are being absorbed at high speed", as when collecting
> a macro argument or skipping text until \else or \fi.

I have not noticed till now that, if we need the macro \dosomething for no more than the table's entries,
one may get along without \saveentry.

\def\processentry#1//{${#1}^{#1-1}$}

\halign{\processentry#//& \processentry#//\cr
A & e\cr
}

Document Actions