>-----Original Message-----
>From: Felix E. Klee [mailto:felix.klee@XXXXXXX.de]
>Sent: Wednesday, October 16, 2002 10:19 AM
>To: dmug@XXXXXXX.ch
>Subject: Re: Separator-Char für Variablennamen?
>
>
>On Tuesday 15 October 2002 05:51 pm, Felix E. Klee wrote:
>> Ich möchte z.B. "x Index y" als Variablennamen definieren.
>
>Danke für die Hinweise mit dem Dollar-Zeichen. Kann ich
>eigentlich den Index
>auch direkt als Index schreiben? SubscriptBox["x", "y"]
>funktioniert ja
>nicht, weil dann x und y als separate Variablennamen aufgefasst werden.
>
>Felix
>
>
Lieber Felix,
jetzt wird es aber fix Zeit, dir 'mal das Package Utilities`Notation`
anzuschauen, siehe Help >> Add-ons >> Extras >> Utilities >> Notation
Package. (Leider finden sich diese Informationen nicht im Buch "Standard
Add-on Packages".):
Symbolize[compositeBoxes]: treat compositeBoxes as a symbol,
Symbolize[compositeBoxes, opts]:
treat compositeBoxes as a symbol with the options opts,
RemoveSymbolize[compositeBoxes]:
remove the treatment of compositeBoxes (as a symbol)
Hier eine kleine Anwendung:
In[1]:= << "Utilities`Notation`"
In[2]:=
\!\(\*
RowBox[{"Symbolize", "[",
TagBox[\(x\_y\),
NotationBoxTag,
TagStyle->"NotationTemplateStyle"], "]"}]\)
In[3]:= \!\(x\_y = \[Pi]\)
Out[3]= \[Pi]
In[4]:= \!\(x\_y - 3.14\)
Out[4]= 0.0015926535897929917
In[5]:= \!\(OwnValues[x\_y]\)
Out[5]= \!\({HoldPattern[x\_y] :> \[Pi]}\)
In[6]:= FullForm[%2]
Out[6]//FullForm=
HoldComplete[x\[UnderBracket]Subscript\[UnderBracket]y]
In[7]:= Names["Global`*"]
Out[7]=
{"x\[UnderBracket]Subscript\[UnderBracket]y", "$NotationDebug"}
Das kommuniziert sich natürlich hier schlecht, im Input-Format betrachtet
In[2]:= Symbolize[NotationBoxTag[\(x\_y\)]]
In[3]:= x\[UnderBracket]Subscript\[UnderBracket]y = Pi
Out[3]= Pi
In[4]:= x\[UnderBracket]Subscript\[UnderBracket]y - 3.14
Out[4]= 0.0015926535897929917
etc.
Im Druckbild sieht am Ende alles sehr schön aus, du "musst" allerdings alle
Eingaben über die Paletten machen:
(1) erst das Symbol über Symbolize aus der Notation Palette,
(2) dann den Platzhalter mit der Subscript Box aus der Palette BasicInput
"Musst" heisst nur: ich habe keinen bequemeren direkten Weg gefunden, ohne
den ganzen Sermon oben mit MakeBoxes usw. zu schreiben. Also etwa so literal
In[13]:= Symbolize[NotationBoxTag[\(x \_ 4\)]]
In[14]:= \!\(x \_ 4 = 4 \);
In[15]:= \!\(x \_ 4\) - 2.5
Out[15]= 1.5
Wenn du aber viel mit der Maus herumklicken willst, mag es gehen.
--
Hartmut