If I use the following function to define me a fancy subscript:
Needs["Notation`"];
Symbolize[ParsedBoxWrapper[SubscriptBox["_", "_"]]]
SetAttributes[fancySubscript,HoldFirst]
fancySubscript[var_Symbol, tag_String, index_Integer] /;
Not[ValueQ[var]] := Subscript[var, tag <> ToString[index]]
fancySubscript[var_Symbol, tags : {_String ..}, index_Integer] /;
Not[ValueQ[var]] := fancySubscript[var, #, index] & /@ tags
fancySubscript[var_Symbol, tags : {_String ..}, indices : {_Integer ..}] /;
Not[ValueQ[var]] := fancySubscript[var, tags, #] & /@ indices
I can use the following now:
fancySubscript[b, {"b"}, Range@3]
$\left( \begin{array}{c} b_{\text{b1}} \\ b_{\text{b2}} \\ b_{\text{b3}} \\ \end{array} \right)$
With the notation module by symbolizing the subscripts: the values are now :
b\[UnderBracket]Subscript\[UnderBracket]DoubleQuote\[UnderBracket]b1\[UnderBracket]DoubleQuote
1. Problem
But when I want to refer to such a variable in the list above and write with the shortcuts in a cell by typing b then Ctrl+_ then 1.
The variable is a new symbol because i did not use Quotes ""
b\[UnderBracket]Subscript\[UnderBracket]b1
How can we circumvent this that I can still write all variables in the cell and they are parsed and interpreted as the one defined in the fancySubscript
command?
It is not so easy because, when I would use something like this:
fancySubscript[b, {b}, Range@3]
I would get an infinite loop, because it is no more a string, hm...
2. Problem:
I cannot assign it back to the variable b:
b=fancySubscript[b, {"b"}, Range@3]
This gives an infinite loop, but when I try this:
btemp=fancySubscript[b, {"b"}, Range@3]
b=btemp
This should work, and not give an inifinte loop, because btemp contains the new defined symbols and they should then be assigned to b
again, but also here mathematica trys to run a recursion which I dont understand??
Comments
Post a Comment