LATEX-L Archives

Mailing list for the LaTeX3 project

LATEX-L@LISTSERV.UNI-HEIDELBERG.DE

Options: Use Forum View

Use Monospaced Font
Show HTML Part by Default
Show All Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Subject:
From:
David Carlisle <[log in to unmask]>
Reply To:
Mailing list for the LaTeX3 project <[log in to unmask]>
Date:
Tue, 17 Jun 1997 13:59:21 +0100
Content-Type:
text/plain
Parts/Attachments:
text/plain (35 lines)
> \def\uppercase#1{\protect\tmpe@uppercase{#1}}
> \def\tmpe@uppercase#1{\edef\tmpd@uppercase{#1}%

Please don't redefine the \uppercase primitive!!!

\uppercase is fairly useless for making text uppercase. What it's real
purpose is, is as the low level TeX primitive to change the character
code of a character token without changing its catcode.

Hence you find

      \uppercase{%
   \egroup
      \def~%
   }%

in inputenc.sty and the rather similar

  \uppercase{\def~}

in dcolumn.sty

Such uses really rely that \uppercase works the way it works.
Any redefinition is likely to break these packages.

Secondly you have applied \edef to a random user-supplied argument.
This is the canoncal `moving argument' and so you should set \protect
so as to give the user some way of preventing commands dying in the
\edef. So the second line above should use \protected@edef rather than
\edef. As \protected@edef ... \uppercase .... is essentially the
definition of \MakeUppercase, you should probably just redefine that
LaTeX command rather than the TeX primitive.

David

ATOM RSS1 RSS2