TeX provides two primitive commands \uppercase
and
\lowercase
to change the case of text; they're not much used, but
are capable creating confusion.
The two commands do not expand the text that is their parameter -
the result of \uppercase{abc}
is 'ABC
', but \uppercase{\abc}
is always '\abc
', whatever the meaning of \abc
. The commands
are simply interpreting a table of equivalences between upper- and
lowercase characters.
They have (for example) no mathematical sense, and
\uppercase{About $y=f(x)$}will produce
ABOUT $Y=F(X)$which is probably not what is wanted.
In addition, \uppercase
and \lowercase
do not deal very well
with non-American characters, for example \uppercase{\ae}
is the
same as \ae
.
LaTeX provides commands \MakeUppercase
and \MakeLowercase
which fixes the latter problem. These commands are used in the
standard classes to produce upper case running heads for chapters
and sections.
Unfortunately \MakeUppercase
and \MakeLowercase
do not solve
the other problems with \uppercase
, so for example a section
title containing \begin{tabular}
... \end{tabular}
will
produce a running head containing \begin{TABULAR}
. The simplest
solution to this problem is using a user-defined command, for
example:
\newcommand{\mytable}{\begin{tabular}... \end{tabular}} \section{A section title \protect\mytable{} with a table}Note that
\mytable
has to be protected, otherwise it will be
expanded and made upper case; you can achieve the same result by
declaring it with \DeclareRobustCommand
, in which case the
\protect
won't be necessary.
David Carlisle's textcase package
addresses many of these problems in a transparent way. It defines
commands \MakeTextUppercase
and \MakeTextLowercase
which do
upper- or lowercase, with the fancier features of the LaTeX
standard \Make*
-commands but without the problems
mentioned above. Load the package with
\usepackage[overload]{textcase}
, and it will redefine the standard
commands, so that section headings and the like don't produce broken
page headings.