# 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. – dearN Oct 27 '12 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? – qazwsx Oct 27 '12 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. – dearN Oct 27 '12 at 17:40
• Have you seen this?: mathematica.stackexchange.com/questions/1004/… – DavidC Oct 27 '12 at 17:44
• How about the Notation package? – Sjoerd C. de Vries Oct 27 '12 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 – matheorem Dec 15 '16 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. – halirutan Dec 15 '16 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? – Adobe Dec 22 '16 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. – halirutan Dec 22 '16 at 15:37
• @halirutan: You right, it doesn't work in local context, but with Notation it works. However, it breaks TraditionalForm`. – Adobe Dec 22 '16 at 22:09