# Unitalicizing a label with a sub/superscript

I need to use a sub/superscript to label the x-axis variable on the horizontal axis of my plot.

Mathematica returns the variable as italicized, but only the $x^2$ needs to be italicized, but not the subscript $g$.

I tried using both Subsuperscript and with the control+6 and _, but both yielded the same results.

Code:

ListPlot[{1, 4, 5}, Frame -> True,
FrameLabel -> (
{"\!$$\*SuperscriptBox[SubscriptBox[\(x$$, $$g$$], \ $$2$$]\)",
"y"
})]


Corresponding plot:

I'm adding this answer because I think it is the simplest solution.

ListPlot[{1, 4, 5},
Frame -> True,
FrameLabel -> {Subsuperscript[x, g, 2], y}]


### Edit

Johu has a raised a valid issue in his comment. Here is a solution that addresses it.

ListPlot[{1, 4, 5},
Frame -> True,
FrameLabel -> {Subsuperscript[Style["x", "TI"], Style["g", "TR"], "2"], "y"}]


If someone asks where the mystical "TI" and "TR" styles come from: They are heavily used in the reference pages. So if you see something like this in the documentation

you can use Ctrl+Shift+E to see the underlying box-expression and you will note that the same style-definitions are used.

### Note

Quite a lot of information on named styles such "TR" can be found on this page

• -1 as g is still italic? – Johu Sep 11 '18 at 21:47
• @Johu. Valid point. I have addressed it in an edit to the answer – m_goldberg Sep 11 '18 at 21:59
• Thank you all!! :) Greatly appreciate it! – wiscoYogi Sep 11 '18 at 22:00
• Now it is a really over-complicated solution. "TR" does the same as FontSlant -> "Plain" which does nothing to solve this problem. Making subscript to String is what makes the difference and it also makes sense semantically. – Johu Sep 11 '18 at 22:56
• For example TraditionalForm[Style[Subscript[x, g], FontSlant -> Plain]] gives still italic text. – Johu Sep 11 '18 at 22:59

In my opinion, it is better to avoid linear syntax strings (the kind of strings you get when you apply 2D typesetting structures inside of a string) and instead just use expressions. So, I like this:

Superscript[Subscript[x, g], 2]


"\!$$\*SuperscriptBox[SubscriptBox[\(x$$, $$g$$], \ $$2$$]\)"


Now, the reason that some characters get italicized is because by default ListPlot renders labels in TraditionalForm, and TraditionalForm uses the option SingleLetterItalics->True. So, to avoid having g italicized, you could override this with:

FrameLabel -> {Superscript[Subscript[x, Style[g, Plain]], 2], y}


or:

FrameLabel -> {Superscript[Subscript[x, "g"], 2], y}


where the latter works because "g" is not a single letter symbol.

Visualization:

ListPlot[
{1, 4, 5},
Frame -> True,
FrameLabel -> {Superscript[Subscript[x, Style[g, Plain]], 2], y}
]


ListPlot[{1, 4, 5}, Frame -> True, ImageSize -> Tiny,
FrameLabel -> ({Subsuperscript[x, "g", 2], "y"})]~Magnify~3


I think it happens because StandardForm for output plots has TraditionalForm applied to it. TraditionalForm formats differently String-s and Symbol-s. Example:

Magnify[Subsuperscript["x", "g", 2] // TraditionalForm, 2]
Magnify[Subsuperscript[x, "g", 2] // TraditionalForm, 2]


That's also a typical usage case for the MaTeX-package by Szabolcs:

Needs["MaTeX"]
ListPlot[{1, 4, 5},
Frame -> True,
FrameLabel -> ({MaTeX["x_{\\mathrm{g}}^2"], MaTeX["y"]})
]


• Latex \operatorname has a different semantical meaning. \mathrm or \text from amsmath would be more precise. – Johu Sep 11 '18 at 21:46
• Good point although I would avoid \text for subscripts because \textit{$x_{\text{g}}$}` would be again in italics -- and theorems are usually typeset in italics. – Henrik Schumacher Sep 11 '18 at 22:06