|
2.8.12 Zeichenkettendarstellung von Boxen
Boxen lassen sich in Mathematica auf kompakte Weise mit Zeichenketten darstellen. Dies ist besonders dann vorteilhaft, wenn Sie Spezifikationen von Boxen als normalen Text im- oder exportieren wollen.
Dies erzeugt eine InputForm-Zeichenkette, die die SuperscriptBox darstellt.
In[1]:= ToString[SuperscriptBox["x", "2"], InputForm]
Out[1]= 
Dies erzeugt die SuperscriptBox.
In[2]:= \( x \^ 2 \)
Out[2]= 
ToExpression interpretiert die SuperscriptBox als Potenz.
In[3]:= ToExpression[%] // FullForm
Out[3]//FullForm= 
Es ist wichtig, zwischen Formen zu unterscheiden, die rohe (uninterpretierte) Boxen darstellen, und Formen, die die Bedeutung der Boxen darstellen.
Dies entspricht einer rohen SuperscriptBox.
In[4]:= \( x \^ 2 \)
Out[4]= 
Dies entspricht der Potenz, die die SuperscriptBox darstellt.
In[5]:= \!\( x \^ 2 \)
Out[5]= 
Der hier erzeugte Ausdruck ist eine Potenz.
In[6]:= FullForm[ \!\( x \^ 2 \) ]
Out[6]//FullForm= 
Unterscheiden zwischen rohen Boxen und den Ausdrücken, die sie darstellen
Wenn Sie den Inhalt einer StandardForm-Zelle in ein anderes Programm kopieren wollen, zum Beispiel in einen Texteditor, wird Mathematica automatisch eine \!\( ... \)-Form erzeugen. Dies geschieht, damit der ursprüngliche Inhalt der StandardForm-Zelle automatisch wiederhergestellt wird, wenn Sie nachfolgend die Form wieder in Mathematica einfügen. Ohne das \! würden sich nur die rohen Boxen, die diesen Inhalten entsprechen, ergeben.
Mit den Voreinstellungen für Optionen werden \!\( ... \)-Formen, die in Mathematica-Notebooks eingefügt wurden, automatisch in zweidimensionaler Form dargestellt. \!\( ... \)-Formen, die direkt über die Tastatur eingegeben werden, können mit dem Menübefehl In 2D-Format umwandeln (Make 2D) im Menü Bearbeiten (Edit) in zweidimensionaler Form dargestellt werden.
Einbettung zweidimensionaler Box-Strukturen in Zeichenketten
Mathematica wird normalerweise eine \( ... \)-Form, die innerhalb einer Zeichenkette erscheint, wie jede andere Zeichenfolge behandeln. Durch Einfügen eines \! können Sie Mathematica anweisen, diese Form wie die Boxen zu behandeln, die sie darstellt. Auf diese Weise können Sie deshalb Box-Strukturen in gewöhnlichen Zeichenketten einbetten.
Mathematica behandelt dies als eine gewöhnliche Zeichenkette.
In[7]:= "\( x \^ 2 \)"
Out[7]=\( x \^ 2 \)
Das Zeichen \! teilt Mathematica mit, daß diese Zeichenkette Boxen enthält.
In[8]:= "\!\( x \^ 2 \)"
Out[8]= 
Sie können Boxen und gewöhnlichen Text mischen.
In[9]:= "box 1: \!\(x\^2\); box 2: \!\(y\^3\)"
Out[9]= 
Eingabeformen für Boxen
Mathematica verlangt, daß alle Eingabeformen, die Sie für Boxen geben, in \( und \) eingeschlossen sind. Zwischen diesen äußersten \( und \) können Sie zur Angabe der Gruppierung zusätzliche \( und \) einfügen.
Hier werden gewöhnliche runde Klammern zur Kennzeichnung der Gruppierung verwendet.
In[10]:= \( x \/ (y + z) \) // DisplayForm
Out[10]//DisplayForm= 
Ohne runde Klammern wäre die Gruppierung anders.
In[11]:= \( x \/ y + z \) // DisplayForm
Out[11]//DisplayForm= 
\( und \) spezifizieren Gruppierung, werden jedoch nicht als explizite runde Klammern dargestellt.
In[12]:= \( x \/ \(y + z\) \) // DisplayForm
Out[12]//DisplayForm= 
Die inneren \( und \) führen zur Konstruktion einer RowBox.
In[13]:= \( x \/ \(y + z\) \)
Out[13]= 
Wenn Sie in Mathematica aa+bb eingeben, werden zuerst aa, + und bb als separate „Token" erkannt. Dieselbe Zerlegung in Token geschieht, wenn Boxen aus Eingabe konstruiert werden, die in \( ... \) eingeschlossen ist. In diesen Boxen wird jedes Token als Zeichenkette und nicht in seiner rohen Form angegeben.
RowBox hat aa, + und bb in separate Zeichenketten zerlegt.
In[14]:= \( aa+bb \) // FullForm
Out[14]//FullForm= 
Die Leerzeichen um die + werden in der Voreinstellung nicht berücksichtigt.
In[15]:= \( aa + bb \) // FullForm
Out[15]//FullForm= 
Backslash-Leerzeichen fügt ein richtiges Leerzeichen ein.
In[16]:= \( aa \ + \ bb \) // FullForm
Out[16]//FullForm= 
Hier werden zwei verschachtelte RowBox-Objekte gebildet.
In[17]:= \( aa+bb/cc \) // FullForm
Out[17]//FullForm= 
Dieselbe Box-Struktur wird gebildet, auch wenn die eingegebene Zeichenkette keinem vollständigen Mathematica-Ausdruck entspricht.
In[18]:= \( aa+bb/ \) // FullForm
Out[18]//FullForm= 
In \( ... \)-Sequenzen lassen sich gewisse Arten von Boxen mit Backslash-Schreibweisen wie zum Beispiel \^ und \@ konstruieren. Für andere Arten von Boxen ist jedoch gewöhnliche Mathematica-Eingabe erforderlich, der \* vorangestellt ist.
Dies konstruiert eine GridBox.
In[19]:= \( \*GridBox[{{"a", "b"}, {"c", "d"}}] \) // DisplayForm
Out[19]//DisplayForm= 
Dies konstruiert eine StyleBox.
In[20]:= \( \*StyleBox["text", FontWeight->"Bold"] \) // DisplayForm
Out[20]//DisplayForm= 
\* funktioniert im Grunde wie ein Escape: Damit läßt sich gewöhnliche Mathematica-Syntax sogar innerhalb einer \( ... \)-Sequenz eingeben. Beachten Sie, daß die Eingabe, die nach einem \* folgt, selbst wieder \(... \)-Sequenzen enthalten kann.
Sie können verschachtelte \* und \( ... \) abwechseln. Außerhalb von \( ... \) werden explizite Anführungsstriche benötigt.
In[21]:= \( x + \*GridBox[{{"a", "b"}, {\(c \^ 2\), \(d \/ \*GridBox[{{"x","y"},{"x","y"}}] \)}}] \) // DisplayForm
Out[21]//DisplayForm= 
In der Notebook-Benutzeroberfläche wird in der Regel mit  * oder  8 ein Dialogfeld eingeblendet, in dem uninterpretierte Boxen eingegeben werden können—genauso wie nach \*.
Kontrolle der Weise, wie Eingabe interpretiert wird
In einer StandardForm-Zelle wird dies als StandardForm interpretiert und ergibt ein Produkt.
In[22]:= \!\( c(1+x) \)
Out[22]= 
Die Backslash-Backquote-Sequenz (Folge der Zeichen inverser Schrägstrich und Gravis) weist Mathematica an, dies als TraditionalForm zu interpretieren.
In[23]:= \!\(TraditionalForm\` c(1+x) \)
Out[23]= 
Wenn Sie den Inhalt einer Zelle aus einem Notebook in ein Programm, wie zum Beispiel einen Texteditor, kopieren, wird gewöhnlich keine explizite Backslash-Backquote-Sequenz mitgegeben. Wenn Sie aber das, was Sie zurückerhalten, in eine Zelle eines anderen Typs einfügen wollen, sollten Sie eine Backslash-Backquote-Sequenz einfügen, um sicherzustellen, daß alles korrekt interpretiert werden wird.
|