Frank Mittelbach <[log in to unmask]> writes: > > It was supposed to hit at \label time. But since putting a label > > i still don't see how that would work You did analyze it already: it is a confusing undefined control sequence error, where the "real" error message is the csname. The \csname must be constructed in a way that does not equate it to \relax. Url.sty contains: \def\Url@movingtest{\begingroup \ifx\let\HyPsd@LetCommand % we are already in a pdf string! \expandafter\Url@unmove \fi % give the argument and hope for the best \let\Url@moving\relax\relax\relax \ifx\Url@moving\relax\else \expandafter\Url@unmove \fi \endgroup} \long\def\Url@unmove#1\Url@y{\endgroup \ifx\protect\relax\else\protect\Url\fi} \edef\Url@moving{\csname Url Error\endcsname} \expandafter\edef\Url@moving {\csname url used in a moving argument.\endcsname} \expandafter\expandafter\expandafter \let \Url@moving\@undefined Note the last line! This gives error messages like: ! Undefined control sequence. \Url Error ->\url used in a moving argument. l.104 \section{\url{moving}} Anyway, We should still allow \label for purposes of \pageref, so the error should indeed be encoded to occur at \ref. It would be nice if \label would put the current \inputlineno into the error message, but that requires altering the definition of \label. The error message should at least make use of the page number also stores. Donald Arseneau [log in to unmask]