On Fri, 28 Dec 2007 14:31:52 +0100, Andreas Matthias wrote:
> Well, I am still pondering on this. How does \def:Npx fit into this
> scheme? The x argument is not expanded before being passed to \edef.
The x argument is expanded before being passed on the \def:Npn. Which is
more or less true except currently it is implemented as a straight \edef
because it would otherwise suffer from the same problems as other
functions needing to go through a temporary variable in the \::x function.
With the \expanded primitive in pdfTeX 1.50 we should have uniform
behavior at last.
> Here are some other functions I just ran across, where the x might not
> be appropriate: \io_put_deferred:Nx, \io_put_term:x, \io_put_log:x,
> \err_message:x, \err_latex_bug:x. These names have the same problem
> as the proposed \int_set:Nx, haven't they?
Most of those functions are from before eTeX was required and so now one
could say the base form of many such messages was, say, \err_latex_bug:n
which just outputs a message (making it literal with \unexpanded) and then
there are x variants in case one wants to use the value of some variable
in the output. You are pointing to an area of the code which hasn't
received much attention after we started extending expl3 and it could use
some cleaning up (so could our 4-day old daughter so I better look at that