7
$\begingroup$

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:

enter image description here

$\endgroup$
5
$\begingroup$

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}]

plot

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"}]

Mathematica graphics

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

img

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

$\endgroup$
  • $\begingroup$ -1 as g is still italic? $\endgroup$ – Johu Sep 11 '18 at 21:47
  • $\begingroup$ @Johu. Valid point. I have addressed it in an edit to the answer $\endgroup$ – m_goldberg Sep 11 '18 at 21:59
  • $\begingroup$ Thank you all!! :) Greatly appreciate it! $\endgroup$ – wiscoYogi Sep 11 '18 at 22:00
  • $\begingroup$ 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. $\endgroup$ – Johu Sep 11 '18 at 22:56
  • $\begingroup$ For example TraditionalForm[Style[Subscript[x, g], FontSlant -> Plain]] gives still italic text. $\endgroup$ – Johu Sep 11 '18 at 22:59
4
$\begingroup$

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]

instead of:

"\!\(\*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}
]

enter image description here

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

enter image description here

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]

enter image description here

$\endgroup$
2
$\begingroup$

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"]})
 ]

enter image description here

$\endgroup$
  • 1
    $\begingroup$ Latex \operatorname has a different semantical meaning. \mathrm or \text from amsmath would be more precise. $\endgroup$ – Johu Sep 11 '18 at 21:46
  • 1
    $\begingroup$ 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. $\endgroup$ – Henrik Schumacher Sep 11 '18 at 22:06

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.