Hi Aaron,
this remark really throws me off. I certainly didn't think that Round was a shortcut for anything. Here is how I understood Sympy:
When I write
Round1 = symbols('\\(1\\)')Â
then I assume that the right-hand side is the form used by Sympy for printout, especially for print(latex(...)), and the left-hand side is just a name that I invent, meaning that Round is my way of remembering what it is, and the name should avoid special characters that I want in the printout, such as parentheses and minus signs, because they cause unwanted things to happen in an expression. By the way, that is why I have a Roundm2 = symbols('\\(-2\\)')
meaning that I have used "m" to indicate (to me) that this is minus 2, but avoiding "-" in a name.
Now, as a bit more background, (j) is an arithmetic expression involving j and m (a constant in this context), meaning that (j) is a shortcut for something that would fill a lot of space in a normal printout.
By the way, in the recent test code
print(latex(Round1))
print(latex(parse_expr('Round1')))
print(latex(Round1Bar))
print(latex(parse_expr('Round1Bar')))
produces
\(1\)
Round_{1}
\bar{\(1\)}
\bar{Round1}
so the problem I have is that
print(latex(symbolname))
and
print(latex(parse_expr('symbolname')))
are different. My old code with static limits uses the first case, and the new code with variable limits uses the second.
I can see now that parse_expr('string') is not converting 'string' into the name of a symbol, as I expected. I also see that suffix 1 is being converted to _{1} (as you mentioned earlier) and suffix Bar is being converted to prefix \bar. That explains where this form is coming from.
Finally, here is one more test to avoid the automatic assumption about suffixes (like Microsoft Word's autocorrect, but I won't go into that rant here).
Round2BarX = symbols('\\bar{\\(2\\)}')
print(latex(Round2BarX))
print(latex(parse_expr('Round2BarX')))
produces