I have some macros to distinguish between two varieties of similar objects. So, for example, I need \psi to come out as expected, but \MakeUppercase{\psi} to come out as \Psi. (Obviously my real applications are more complicated than this.) Is this possible to do in any reasonable way?

At the moment, the non-English characters I need are limited to greek, and \eth and \thorn if possible. But I'm writing these papers to be posted to the arXiv, and as I understand it xelatex and lualatex just don't work on arXiv -- even pdflatex is hard enough to wrangle in my experience. So I'm basically restricted to plain old (pdf)latex.


For reference, here's what I ended up using.

\usepackage{amsmath, amssymb}


Result of iterating through the above code


I also experimented with combining the two answers with something like the following:


This allows me to just do the upcasing inside my command, and keep the standard casing everywhere else. I'm not totally sure why I had to make a temporary copy of the list. (I guess \g@addto@macro actually changes the data in place???) But it seems to work.

2 Answers 2


Quite a curious requirement: usually the problem is how not to make math uppercase, because symbols are not linked to their uppercase variant.

However, you need to update the \@uclclist variable that contains the pairs of letters for uppercasing/lowercasing:





$\MakeUppercase{Hello World \alpha\omega\psi}:\alpha\omega\psi$


enter image description here

  • Well, that's easier to use, alright. Thank you!
    – Mike
    Jun 4, 2015 at 18:34
  • @Mike Supplement it with the characters you need.
    – egreg
    Jun 4, 2015 at 18:35

Here's a possibility that I've modeled somewhat on how \MakeUppercase is defined:





$\myMakeUppercase{Hello World \alpha\omega\psi}:\alpha\omega\psi$


I am assuming that the characters you want to uppercase are already control sequences. For each such control sequence for which you want an uppercase version, you add a line which is either

\let<cs name><cs name>


\def<cs name>{<replacement string>}

enter image description here

  • Not as elegant as I had hoped, but it'll do the job. :) Thanks!
    – Mike
    Jun 4, 2015 at 18:08

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .