# How to create symbol whose name has subscript?

I can do

Symbol["foobar"]


to create a symbol foobar. How to create a symbol $\theta_1$?

Symbol[Subscript[\[Theta], 1]]


doesn't work.

• Subscript[\[Theta], 1] = 20 works. Commented Oct 27, 2012 at 17:27
• I know; Do this fact help answer the question? Or do you mean define the symbol by assigning a value? How to create the symbol without having to assign it an arbitrary value at the same time? Commented Oct 27, 2012 at 17:34
• I could create a symbol without assigning a value to it with Subscript[\[Theta], 1]. Beyond that I am unsure what you want to do with the symbol. Commented Oct 27, 2012 at 17:40
• Have you seen this?: mathematica.stackexchange.com/questions/1004/… Commented Oct 27, 2012 at 17:44
• How about the Notation package? Commented Oct 27, 2012 at 18:23

Although your question is stated clear, I'm still wondering whether you understood, that Subscript[\[Theta], 1] is not a symbol. It's a box-structure! Therefore, what you do when you assign it a value like

is, that you don't assign a value to some indexed variable x. No, you assign a value (a DownValue) to Subscript

Let's assume I can guess that you like to use some indexed variable in your code then you should consider to work with the Notation package as already pointed out in the comments.

You can, after loading the Notation package, define a symbol like pattern which you want to use for a indexed variable. So for instance

Note, that the parameter is x subscript Blank[]!

Needs["Notation"]
Symbolize[ParsedBoxWrapper[SubscriptBox["x", "_"]]]


If you now look at InputForm[Subscript[x, 1]] you see, that the notation package transforms this into valid symbol-name only consisting of letters

At this point you could use ToExpression to define a vector

Table[ToExpression["Subscript[x, " <> ToString[i] <> "]"], {i, 10}]


and the moment you evaluate this you have your new variables

Names["x\[UnderBracket]Subscript\[UnderBracket]*"]
(*
{"x\[UnderBracket]Subscript\[UnderBracket]1",
"x\[UnderBracket]Subscript\[UnderBracket]10",
"x\[UnderBracket]Subscript\[UnderBracket]2",
"x\[UnderBracket]Subscript\[UnderBracket]3",
"x\[UnderBracket]Subscript\[UnderBracket]4",
"x\[UnderBracket]Subscript\[UnderBracket]5",
"x\[UnderBracket]Subscript\[UnderBracket]6",
"x\[UnderBracket]Subscript\[UnderBracket]7",
"x\[UnderBracket]Subscript\[UnderBracket]8",
"x\[UnderBracket]Subscript\[UnderBracket]9"}
*)

• Hi, halirutan. I tried your method. But InputForm[Subscript[x, 1]] doesn't give expected result. see pasteboard.co/a4QgrQ9ja.png Commented Dec 15, 2016 at 11:32
• Because I assumed that Subscript is automatically transformed to its box-form. You need to input the subscript with Ctrl+_. Otherwise, it doesn't work. But it must have worked at some point, because I wouldn't have put it in a post without testing. This is really odd. Commented Dec 15, 2016 at 11:50
• What's wrong with assigning value to a Subscript? I don't seem to run into unexpected behavior with it. Can you please give an example where assigning to Subscript gives wrong results? Maybe it is a performance disaster? Commented Dec 22, 2016 at 14:01
• @Adobe Look at this simple example. Especially, pay attention to the error message. Do you truly believe, a newbie would know what he did wrong? The same happens with With and Block. So basically, you cannot use those variables in some local context. Commented Dec 22, 2016 at 15:37
• @halirutan: You right, it doesn't work in local context, but with Notation it works. However, it breaks TraditionalForm`. Commented Dec 22, 2016 at 22:09