|
2.8.10 Darstellung textueller Formen durch Boxen
Alle textuellen Formen werden in Mathematica letztendlich als verschachtelte Sätze von Boxen dargestellt. Die Elemente dieser Boxen entsprechen in der Regel Objekten, die an bestimmte relative Positionen in zwei Dimensionen plaziert werden sollen.
Dies sind die Boxen entsprechend dem Ausdruck a + b.
In[1]:= ToBoxes[a + b]
Out[1]= 
DisplayForm zeigt, wie diese Boxen dargestellt werden würden.
In[2]:= DisplayForm[%]
Out[2]//DisplayForm= 
Die dargestellte Form von Boxen zeigen
Dies zeigt drei Zeichenketten in einer Zeile.
In[3]:= RowBox[{"a", "+", "b"}] // DisplayForm
Out[3]//DisplayForm= 
Dies zeigt eine Zeichenkette als Index zu einer anderen.
In[4]:= SubscriptBox["a", "i"] // DisplayForm
Out[4]//DisplayForm= 
Dies setzt zwei Subscript-Boxen in eine Zeile.
In[5]:= RowBox[{SubscriptBox["a", "1"], SubscriptBox["b", "2"]}] // DisplayForm
Out[5]//DisplayForm= 
Einige Grund-Box-Arten
Dies verschachtelt einen Bruch in einem Wurzelausdruck.
In[6]:= RadicalBox[FractionBox[x, y], n] // DisplayForm
Out[6]//DisplayForm= 
Dies setzt ein hochgestelltes Zeichen über ein tiefgestelltes Objekt.
In[7]:= SuperscriptBox[SubscriptBox[a, b], c] // DisplayForm
Out[7]//DisplayForm= 
Dies fügt demselben Objekt sowohl ein tief- als auch ein hochgestelltes Zeichen hinzu.
In[8]:= SubsuperscriptBox[a, b, c] // DisplayForm
Out[8]//DisplayForm= 
Rahmen und Gitterlinien einfügen
Dies zeigt einen Bruch in einem Rahmen.
In[9]:= FrameBox[FractionBox["x", "y"]] // DisplayForm
Out[9]//DisplayForm= 
Dies setzt Linien zwischen Zeilen und Spalten eines Arrays.
In[10]:= GridBox[Table[i+j, {i, 3}, {j, 3}], RowLines->True, ColumnLines->True] // DisplayForm
Out[10]//DisplayForm= 
Und dies legt außerdem noch einen Rahmen um das Ganze.
In[11]:= FrameBox[%] // DisplayForm
Out[11]//DisplayForm= 
Änderung des Aussehens von Boxen
StyleBox akzeptiert dieselben Optionen wie StyleForm. Der Unterschied besteht darin, daß StyleForm als „Hülle" für einen Ausdruck agiert, während StyleBox die zugrundeliegende Box-Struktur repräsentiert.
Dies zeigt die Zeichenkette "Name" kursiv.
In[12]:= StyleBox["Name", FontSlant->"Italic"] // DisplayForm
Out[12]//DisplayForm= 
Dies zeigt "Name" im Stil für Abschnittsüberschriften des aktuellen Notebooks.
In[13]:= StyleBox["Name", "Section"] // DisplayForm
Out[13]//DisplayForm= 
Hier wird der Stil für Abschnittsüberschrift verwendet, die Zeichen werden aber grau gezeigt.
In[14]:= StyleBox["Name", "Section", FontColor->GrayLevel[0.5]] // DisplayForm
Out[14]//DisplayForm= 
Wenn Sie eine Notebook-Benutzeroberfläche für Mathematica verwenden, dann werden Sie den Stil und das, was Sie auf dem Bildschirm sehen, direkt mit Menübefehlen ändern können. Intern werden diese Änderungen jedoch immer noch durch Einfügen geeigneter StyleBox-Objekte aufgezeichnet.
Die Interpretation von Boxen kontrollieren
Dies wird als mit einer Hochstellung gedruckt.
In[15]:= SuperscriptBox["x", "2"] // DisplayForm
Out[15]//DisplayForm= 
Dies wird normalerweise als Potenz interpretiert.
In[16]:= ToExpression[%] // InputForm
Out[16]//InputForm= x^2
Auch dies wird als mit einem hochgestellten Zeichen gedruckt.
In[17]:= InterpretationBox[SuperscriptBox["x", "2"], vec[x, 2]] // DisplayForm
Out[17]//DisplayForm= 
Aber nun wird es als vec[x, 2] interpretiert, entsprechend der Spezifikation in der InterpretationBox.
In[18]:= ToExpression[%] // InputForm
Out[18]//InputForm= vec[x, 2]
Wenn Sie die in einer InterpretationBox angegebenen Boxen editieren, dann gibt es keine Garantie, daß die durch die Interpretations-Box spezifizierte Interpretation noch korrekt ist. Deshalb stellt Mathematica verschiedene Optionen zur Verfügung, mit denen die Auswahl und Editierung von InterpretationBox-Objekten kontrolliert werden kann.
Optionen für InterpretationBox und verwandte Boxen
Mit TagBox-Objekten wird Information gespeichert, die nicht dargestellt wird, die aber dennoch von den Regeln, die Boxen interpretieren, verwendet werden kann. In der Regel ist marke in TagBox[boxen, marke] ein Symbol, das den Kopf des zu boxen gehörigen Ausdruckes angibt. Wenn Sie nur die Argumente dieses Ausdruckes editieren, dann wird die Interpretation, die durch TagBox spezifiziert wird, wahrscheinlich immer noch angemessen sein. Deshalb ist Editable->True die Voreinstellung für eine TagBox.
Die Regeln, die Mathematica zur Interpretation von Boxen verwendet, sind im allgemeinen so konstruiert, daß sie die Details der Formatierung ignorieren, wie sie zum Beispiel durch StyleBox-Objekte definiert werden. Außer wenn StripWrapperBoxes->False gilt, wird deshalb zum Beispiel ein rotes x nicht von einem gewöhnlichen schwarzen x unterschieden.
Ein rotes x wird normalerweise genauso wie ein gewöhnliches behandelt.
In[19]:= ToExpression[ StyleBox[x, FontColor->RGBColor[1,0,0]]] == x
Out[19]= 
Konstruktion aktiver Elemente
In einem Mathematica-Notebook lassen sich Elemente konstruieren, die eine Aktion ausführen, wann immer Sie sie anklicken. Diese Elemente werden intern durch ButtonBox-Objekte dargestellt. Wenn Sie einen Ausdruck erstellen, der eine ButtonBox enthält, dann werden Sie den Inhalt der ButtonBox so lange direkt editieren können, wie die Option Active für die Zelle, die den Ausdruck enthält, False ist. Sobald Sie Active->True setzen, wird die ButtonBox ihre Aktion ausführen, wann immer sie angeklickt wird.
In Abschnitt 2.10.6 wird beschrieben, wie sich für ButtonBox-Objekte Aktionen konstruieren lassen.
|