|
>-----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 |