DMUG-Archiv 2002

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

RE: Separator-Char für Variablennamen?

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


Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html