# [texhax] macro help

Wed Aug 9 23:14:13 CEST 2006

On Wed, 9 Aug 2006, John R. Culleton wrote:

> On Wednesday 09 August 2006 10:35, Tom Sgouros wrote:
>> Hello all:
>>
>>>
>> The problem I have is that in a huge list of XML tags, there are a
>> few whose names have digits: STREET1 and STREET2, for example.  The
>> only digits in use are 1 and 2, and they only occur at the end of the
>> tags.  I haven't quite been able to come up with a macro definition that
>> could translate STREET1 into \STREETONE or \STREETA, and I wonder if
>> anyone here could lend a hand, or tell me definitely that I'm wasting
>> time.
>>
>> Many thanks all,
>>
>>  -tom
>
> I can only confirm that TeX treats a numeric at the end of a tag
> not as part of the tag but as a parameter. This is primitive TeX,
> not LaTeX or Context or even plain. So I don't know a way aorund
> it.

I was testing whether it is possible to have macro name with numbers
and came across something surprising. The following works in plain tex

\def\csname street1\endcsname{First street}

\tagentry{street1}

\bye

But the corresponding latex code

\documentclass{minimal}
\def\csname street1\endcsname{First street}

\begin{document}
\tagentry{street1}
\end{document}

gives

! Use of \csname doesn't match its definition.
<argument> d
ocument
l.6 \begin{document}

?

The corresponding context code

\def{\csname street1\endcsname}{First street}

\starttext
\tagentry{street1}
\stoptext

gives

! Use of \csname doesn't match its definition.
\doprocesscommalist ...after \def \csname \s!next
\the \commalevel
\endcsnam...

\globallet
\alltwopassdata...
\resetutilities \globallet
\ignorerestoftex...

\doateverystarttext ->\the \everystarttext
\global \everystarttext
\emptytoks
\starttext ->\doateverystarttext
\ifnum \textlevel =\zerocount
\registerfile...
l.4 \starttext

Do latex and context redefine the meaning of \def or \csname?