This is documentation for Mathematica 4, which was
based on an earlier version of the Wolfram Language.
View current documentation (Version 11.2)

 Documentation /  Mathematica /  Das Mathematica Buch /  Die Prinzipien von Mathematica /  Textförmige Eingabe und Ausgabe /

Definition von AusgabeformatenErzeugung unstrukturierter Ausgabe

2.8.17 Fortgeschrittenes Thema: Regeln für elementare Eingabe und Ausgabe

Elementare Funktionen zur Wandlung zwischen Ausdrücken und Boxen

MakeBoxes erzeugt Boxen, ohne deren Eingabe zu evaluieren.

In[1]:= MakeBoxes[2 + 2, StandardForm]

Out[1]=

MakeExpression interpretiert Boxen, verhindert aber durch Einsatz von HoldComplete, daß der sich ergebende Ausdruck evaluiert wird.

In[2]:= MakeExpression[%, StandardForm]

Out[2]=

Mathematica enthält eine große Anzahl Regeln zur Erzeugung von Ausgabe und zur Interpretation von Eingabe. Insbesondere für StandardForm wurden diese Regeln so sorgfältig konstruiert, daß sie konsistent sind und Ein- und Ausgabe austauschbar sind.

Sie werden nur sehr selten diese Regeln ändern müssen. Der Hauptgrund ist, daß Mathematica bereits über eingebaute Regeln für die Eingabe und Ausgabe vieler Operatoren verfügt, denen es selber keine spezielle Bedeutungen zuweist.

Wenn Sie also zum Beispiel eine verallgemeinerte Form der Addition hinzufügen wollen, können Sie gewöhnlich einfach einen Operator wie verwenden, für den Mathematica bereits eingebaute Regeln für Eingabe und Ausgabe hat.

Hier erfolgt die Ausgabe mit dem -Operator.

In[3]:= CirclePlus[u, v, w]

Out[3]=

Mathematica versteht bei der Eingabe.

In[4]:= u CirclePlus v CirclePlus w // FullForm

Out[4]//FullForm=

Für die Ausgabe können Sie Definitionen für Format[ausdr] erstellen, um die Art zu ändern, wie ein bestimmter Ausdruck formatiert werden soll. Sie sollten sich jedoch bewußt machen: Sobald Sie dies tun, gibt es keine Garantie dafür, daß die Ausgabeform Ihres Ausdrucks korrekt interpretiert werden wird, wenn sie als Mathematica-Input eingegeben wird.

Wenn Sie wollen, können Sie die Grundregeln, die Mathematica für die Eingabe und Ausgabe aller Ausdrücke verwendet, neu definieren. Dies läßt sich durch Erstellung von Definitionen für MakeBoxes und MakeExpression erreichen. Sie sollten sich jedoch bewußt machen: Nur wenn Sie derartige Regeln sehr sorgfältig aufstellen, werden Sie am Ende sicher zu konsistenten Ergebnissen gelangen.

Dies definiert, wie gplus-Objekte in StandardForm ausgegeben werden sollen.

In[5]:= gplus /: MakeBoxes[gplus[x_, y_, n_], StandardForm] :=
RowBox[ {MakeBoxes[x, StandardForm],
SubscriptBox["\[CirclePlus]", MakeBoxes[n, StandardForm]],
MakeBoxes[y, StandardForm]}]

gplus wird jetzt mit indiziertem ausgegeben.

In[6]:= gplus[a, b, m+n]

Out[6]=

Mathematica kann dies jedoch nicht als Eingabe interpretieren.

In[7]:=

Dies spezifiziert, daß Mathematica ein indiziertes als ein besonderes Stück FullForm-Input interpretieren soll.

In[7]:= MakeExpression[RowBox[{x_, SubscriptBox[
"\[CirclePlus]", n_], y_}], StandardForm] :=
MakeExpression[RowBox[
{"gplus", "[", x, ",", y, ",", n, "]"}], StandardForm]

Nun wird das indizierte als ein gplus interpretiert.

In[8]:=

Out[8]//FullForm=

Wenn Sie Definitionen für MakeBoxes angeben, können Sie sich dies im Grunde als eine elementare Art, Definitionen für Format anzugeben, vorstellen. Ein wichtiger Unterschied besteht darin, daß MakeBoxes seine Argumente nicht evaluiert. Es lassen sich also Regeln zur Formatierung von Ausdrücken definieren, ohne sich darum kümmern zu müssen, wie diese Ausdrücke evaluiert werden würden.

Außerdem gibt es folgenden Unterschied: Während Format automatisch wieder bei allen Ergebnissen aufgerufen wird, die durch seine Anwendung erhalten werden, gilt dies nicht für MakeBoxes. Sie müssen also, wenn Sie den Weg über die Angabe von Definitionen für MakeBoxes wählen, explizit für alle Unterausdrücke, die noch formatiert werden müssen, MakeBoxes aufrufen.

Operationen, die mit Mathematica-Eingabe durchgeführt werden

Definition von AusgabeformatenErzeugung unstrukturierter Ausgabe