Re: Defining a control sequence with uppercase roman numerals

Jellby <me@xxxxxxxxxxx> wrote:

But I can't find the way to do it with uppercase numerals, even though
exercise 7.9 is a hint. I tried with:


This is more tricky, because \uppercase cannot be used inside \csname.

But you are using LaTeX, thus you can use \@Roman that is expandable,
because it explicitly looks for the limited range of roman letters and
replaces them by the uppercase variants:

| \def\@Roman#1{\expandafter\@slowromancap\romannumeral #1@}
| \def\@slowromancap#1{\ifx @#1% then terminate
| \else
| \if i#1I\else\if v#1V\else\if x#1X\else\if l#1L\else\if
| c#1C\else\if d#1D\else \if m#1M\else#1\fi\fi\fi\fi\fi\fi\fi
| \expandafter\@slowromancap
| \fi
| }

The result:
\csname myhiddencommand\@Roman{\mytype}\endcsname

and all kinds of \string, \expandafter and \noexpand I could think of (I
don't really understand them, you'd have noticed), to no avail. Is there
(of course there is, but how?) a way to get it?

If \@Roman cannot be used, then \uppercase helps, but it must be
used outside of \csname:



Yours sincerely
Heiko <oberdiek@xxxxxxxxxxxxxxx>