# Preventing Superscript from being interpreted as Power when using Ctrl+^ shortcut?

I have very strong desire to use superscript as the index of the variable.

However, it looks like that the Mathematica automatically recognize the superscript as the power and I got message that my variable with superscript is 'protected'.

Could you help me to make the superscript used as the index of the variable instead of power?

### UPDATE (16-June-2015):

This question is being reopened and a bounty is being awarded on this. Previous answers are very good, however the bounty is to be awarded on an answer which solve this specific problem:

How to change the behaviour of Ctrl+^ keybinding so that it produces Superscript instead of Power.

-
I'm not sure if it's possible to do, although somebody else might have an answer. I've had this problem before, and just use subscripts instead. For example: $$v_{k\_,j\_}:=\mbox{Sin}[k^2+j^3];$$ Is there a reason why subscripts are not as good for your application? – DumpsterDoofus Oct 8 '13 at 18:38
@shivams, these seem related to your update of this question: mathematica.stackexchange.com/q/68864, mathematica.stackexchange.com/q/85823 – Michael E2 Jun 16 at 19:15
@MichaelE2 Incidentally I believe one will need to edit the Menu items rather than the KeyEvent items if one is to override this particular combination. If you can show me otherwise please do so. – Mr.Wizard Jun 17 at 8:23
I was wondering about that, because I noticed the difference in the other answers and yours. It makes sense that Menu key combinations are intercepted before they become a KeyEvent in a particular notebook. But I assume one could get a superscript with a different combination using KeyEvent, which would be my preferred solution, since I use Ctrl-6 so often -- I want Power! ;-) – Michael E2 Jun 17 at 12:39
@Michael I added that to my answer too. I still don't like the fact that the typesetting menu says Superscript when it means Power however. – Mr.Wizard Jun 17 at 16:24

Superscript is not interpreted as Power:

Presumably you are referring to what happens when you enter a power in superscript notation using the key combination Ctrl+6. Mathematica is capable of representing both this power notation and a formatted plain Superscript. In my opinion it is a failing that the power notation appears in the Typesetting menu while the latter is missing; if anything it should be the other way around I think. Since there is no key combination for raw Superscript I propose using a palette or input alias:

## Palette

You may enter a formatting template using a palette button which may be created with:

CreatePalette @ PasteButton @ Superscript[\[SelectionPlaceholder], \[Placeholder]]


Click that palette button to insert a template for plain superscript in the current Notebook. Use Tab to move between fields.

## Input alias

Either open the Option Inspector, select Global Preferences, type "InputAliases" to find the appropriate entry, and add this to the list of rules:

"sps" -> TemplateBox[{"\[SelectionPlaceholder]", "\[Placeholder]"}, "Superscript"]


Or add it programmatically (run this only once):

AppendTo[
CurrentValue[$FrontEnd, "InputAliases"], "sps" -> TemplateBox[{"\[SelectionPlaceholder]", "\[Placeholder]"}, "Superscript"] ]  Now type: EscspsEsc to enter a template for plain Superscript. (In version 10.0.0 the first field will not be automatically selected due to a bug; see Input Aliases in Mathematica 10.) ## Bounty A bounty was added for: [A] solution to map the Ctrl+^ keybinding to produce superscript instead of power. To accomplish this first copy MenuSetup.tr from the installation directory to the matching path in your user directory and open the user copy for editing: os =$OperatingSystem /. "Unix" -> "X";

CopyFile @@ (
FileNameJoin[{#, "SystemFiles", "FrontEnd", "TextResources", os, "MenuSetup.tr"}] & /@
{$InstallationDirectory,$UserBaseDirectory})

% // SystemOpen


Then within the user copy edit the appropriate MenuItem to read:

MenuItem["&Superscript",
FrontEndExecute[{
FrontEndSelectionMove[FrontEndInputNotebook[], All, Word],
FrontEndNotebookApply[FrontEndInputNotebook[],
TemplateBox[{"\[SelectionPlaceholder]", "\[Placeholder]"}, "Superscript"],
Placeholder]
}],
]


Restart Mathematica.

You may now enter raw Superscript by using Ctrl+6 where 6 is the number-line six above the alphabetic keyboard.

You can still enter Power notation by using Ctrl+Shift+6 or Ctrl+Keypad-6, the latter assuming that Num Lock is on.

For those you prefer the reverse behavior you can instead copy and edit KeyEventTranslations.tr and change the Item:

Item[KeyEvent["^", Modifiers -> {Control}], "Superscript"]


to:

Item[KeyEvent["^", Modifiers -> {Control}],
FrontEndExecute[{
FrontEndSelectionMove[FrontEndInputNotebook[], All, Word],
FrontEndNotebookApply[FrontEndInputNotebook[],
TemplateBox[{"\[SelectionPlaceholder]", "\[Placeholder]"}, "Superscript"],
Placeholder]
}]
]


Now Ctrl+6 is Power and Ctrl+Shift+6 is raw Superscript. However the Typesetting menu item remains misleadingly named Superscript so I would personally change that to Power if adopting this binding.

Also see:

-
Glad that you updated your bounty answer to match Linux systems as well. This should now work for Windows and Linux. However, perhaps if you get your hands around a Mac, then check if this works on that as well. – shivams Jun 23 at 7:54

For internal representation, I prefer avoiding subscripts and superscripts, so I'll give a way for using superscripts for input and output formatting, while the internal expression is of the form x[i].

For output formatting, something like this:

Format[x[i_]] := Superscript[x, i]


Example

Table[x[i], {i, 3}]


For input, this works, but I would wonder whether it is safe:

Power[x, i_] ^:= x[i];
Unprotect[Power];
Power /: Set[Power[x, i_], val_] := x[i] = val;
Protect[Power];

x^i // InputForm
(* x[i] *)


It also works with keyboard input of superscripts.

(x^1 + x^2)^3 // Expand


-

If you want to use superscripts so as to follow some textbook symbols then use Symbolize

Needs["Notation"]


I'm going to paste an image because pasting Symbolize gives you this:

Symbolize[ParsedBoxWrapper[SuperscriptBox["y", "1"]]]


-

When I asked people about this before, they wrote up: Displaying index as subscript on output: e.g. C[i] -> C_i with Notation[...] or Interpretation[..]? As with the other answers, this focuses on only output. But uses an Interpretation instead of just changing the functions themselves. You should just be able to copy/paste the code to try it out. To change from subscripts to superscripts for your code, it should just be a copy/replace.

As for why you shouldn't use subscripts/superscripts, it took me a while to figure it out, but basically it is because $x_i$ is not a symbol. Try to call FullForm on $x_i$ to get Subscript[x,i]` which is tough to work with.

-