[Tex/LaTex] modal command for MakeLowercase

macrostext manipulation

Analog to this question I've been wondering WHAT is to \lowercase as \bfseries is to \textbf?
(… and for uppercase, or \MakeLowercase and MakeUppercase, etc., which also seem to be text-block commands as explained here.)

Is there a "switch"/"declaration"/"modal command" (what is the correct term here?, is there a difference between them?) that would allow one to turn something into lowercase/uppercase in the same way that one would use \scshape for example, i.e., not as text-block command with the curly braces? Or how to create such a command? I couldn't find any clue on the forum.

Best Answer

Really there is no such command.

If you have a command that acts as a switch, such as a font change like \bfseries then it is easy to make a command that takes an argument and applies the original command in a local group, so \textbf is (simplified a bit) just

\def\textbf#1{{\bfseries #1}}

However going the other way is harder. \MakeUppercase is a wrapper around \edef and \uppercase and both of these primitives require a {} delimited list of tokens on which to act.

You can get caps and small caps as a modal switch \scshape as that font shape is commonly available, however an all-caps font is not available in most font sets. \uppercase (and so \MakeUppercase) does not work as a font change but as a token level transformation replacing each token in the argument by a specified replacement a to A for example. Conversely with an all caps font then a would still be a (ASCII/Unicode hex 61) but would use a glyph that looked like A when rendered.

Related Question