In LaTeX, all font commands have two versions, one requires an argument (\textbf, \textit, \textsc etc), other changes the font until the end of group (\bfseries, \itshape, \scshape etc). The latter is especially useful when defining fonts for some auto-generated text in some package or class file. For example, with the memoir class:
\captionnamefont{\small\scshape}
or
\renewcommand*{\chapnamefont}{\Large\sffamily\bfseries}
\setsecheadstyle{\Large\sffamily\raggedright}
However, now I need a similar command for making text uppercase. \MakeUppercase requires an argument, but I don't know if there is a solution to make all text uppercase until end of a group, so that I could do something like:
\captionnamefont{\small\bfseries\lsstyle\MakeUppercaseUntilEndOfGroup}
In the event of no such command exists, to make this specific case work, I think I need to patch some internal memoir commands, something like this:
\makeatletter
\renewcommand{\fnum@figure}[1]{\small\bfseries\lsstyle\lsstyle\MakeUppercase{\figurename~\thefigure}\quad}
\makeatother
However this is rather inelegant and limited; besides the fact that for other commands such as \setsecheadstyle this would have to be duplicated, even for floats, only captions for figures are changed. I also have tables and other custom float types defined by the \newfloat command. Then is it possible to simply define this new style for every kind of floats in my document? I suppose there is some code that creates new float types and maybe that should be patched...
