# Print indexed (by subscript) variable name systematically

I have some variables : Subscript[S, 1], Subscript[S, 2]...etc. But they are defined in a for loop like For[g = 1, g < 4, g++, Subscript[S, g] = g]; Later, I need to print each of the variable name, i.e Subscript[S, 1], Subscript[S, 2]...etc. But I can't find a systematic way to do this. For[g = 1, g < 4, g++, Print[HoldForm@Subscript[S, g]]]; doesn't work because it prints Subscript[S, g] always.

Any idea?

Just look at the code:

For[g = 1, g < 4, g++, Subscript[S, g] = g];
Print[Subscript[S, 1]]
Print[Subscript[S, 2]]
Print[Subscript[S, 3]]
For[g = 1, g < 4, g++, Print[Subscript[S, g]]];
Print[HoldForm@Subscript[S, 1]]
Print[HoldForm@Subscript[S, 2]]
Print[HoldForm@Subscript[S, 3]]
For[g = 1, g < 4, g++, Print[HoldForm@Subscript[S, g]]];
For[g = 1, g < 4, g++, Subscript[S, g] =.];


And this is the result:

-
Have a look at Defer and What are the most common pitfalls awaiting new users? – ssch Sep 9 '13 at 13:16
You should use Do[..., {g, 3}] instead of For[g = 1, g < 4, g++, ...];. It's idiomatic, easier to read and maintain, and possibly faster. Or Map, if possible, or some other construct. – Volker Sep 9 '13 at 13:17
@ssch, using defer instead HoldForm@ still prints S_g. – user565739 Sep 9 '13 at 13:23
Just HoldForm/Defer the S part: Subscript[S, 3] = 4; g = 3; Subscript[Defer[S], g] – ssch Sep 9 '13 at 13:32
You may benefit from this answer which adds automatically symbolic elements with subscript. mathematica.stackexchange.com/questions/22376/… – s.s.o Sep 9 '13 at 14:05

Table[Subscript[HoldForm @ S, i], {i, 3}]

You could also use Defer as ssch mentioned if you want to be able to use the output as input that evaluates.