\MakeUppercase
{<text>}
\MakeLowercase
{<text>}
TEX provides two primitives \uppercase
and \lowercase
for
changing the case of text. These are sometimes used in document
classes, for example to set information in running heads in all
capitals.
Unfortunately, these TEX primitives do not change the case of
characters accessed by commands like \ae
or \aa
. To overcome this
problem, LATEX provides two new commands \MakeUppercase
and
\MakeLowercase
to do this.
For example:
\uppercase{aBcD\ae\AA\ss\OE}
ABCDæÅß \lowercase{aBcD\ae\AA\ss\OE}
abcdæÅß \MakeUppercase{aBcD\ae\AA\ss\OE}
ABCDæÅß \MakeLowercase{aBcD\ae\AA\ss\OE}
abcdæÅß
The commands \MakeUppercase
and \MakeLowercase
themselves are
robust, but they have moving arguments.
The commands use the TEX primitives \uppercase
and \lowercase
,
and so have a number of unexpected `features'. In particular, they
change the case of everything (except characters in the names of
control-sequences) in their text argument: this includes mathematics,
environment names, and label names.
For example:
\MakeUppercase{$x+y$ in \ref{foo}}produces
LaTeX Warning: Reference `FOO' on page ... undefined on ...In the long run, we would like to use all-caps fonts rather than any command like
\MakeUppercase
but this is not possible at the moment
because such fonts do not exist.
In order that upper/lower-casing will work reasonably well, and in
order to provide any correct hyphenation, LATEX2e must use,
throughout a document, the same fixed table for changing case.
The table used is designed for the font encoding T1
; this works well
with the standard TEX fonts for all Latin alphabets but will cause
problems when using other alphabets.