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

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

Darstellung textueller Formen durch BoxenZeichenkettendarstellung von Boxen

2.8.11 Ändern von Details der Formatierung

Mathematica bietet eine große Anzahl Optionen zur Anpassung der Details, wie Ausdrücke formatiert werden. In den meisten Fällen werden die Voreinstellungen für diese Optionen angemessen sein. Aber mitunter erfordern spezielle Eigenschaften in den Ausdrücken, mit denen Sie es zu tun haben, eine Änderung der Optionen.

Optionen für GridBox

Dies erstellt ein Zahlen-Array.

In[1]:= t = Table[{i, (2i)!, (3i)!}, {i, 4}] ;

So wird das Array mit den Voreinstellungen für alle GridBox-Optionen erscheinen.

In[2]:= GridBox[t] // DisplayForm

Out[2]//DisplayForm=

So wird Rechtsbündigkeit in allen Spalten erreicht.

In[3]:= GridBox[t, ColumnAlignments->Right] // DisplayForm

Out[3]//DisplayForm=

So erscheinen die ersten beiden Spalten linksbündig und die letzte rechtsbündig.

In[4]:= GridBox[t,
ColumnAlignments->{Left, Left, Right}] // DisplayForm

Out[4]//DisplayForm=

Dies legt die Zwischenräume zwischen Spalten fest.

In[5]:= GridBox[t, ColumnSpacings->{5, 10}] // DisplayForm

Out[5]//DisplayForm=

Dies erzwingt, daß alle Spalten dieselbe Breite haben.

In[6]:= GridBox[t, ColumnsEqual->True] // DisplayForm

Out[6]//DisplayForm=

Gewöhnlich sorgt eine GridBox für genügend Raum, um jedes Zeichen in der aktuellen Schriftart in jeder Zeile zeigen zu können. Bei RowMinHeight->0 werden Zeilen jedoch dichter gepackt.

In[7]:= {GridBox[{{x, x}, {x, x}}],
GridBox[{{x, x}, {x, x}}, RowMinHeight->0]} // DisplayForm

Out[7]//DisplayForm=

Einstellungen für die Option ColumnAlignments

Bei der Formatierung komplizierter Tabellen ist es häufig wichtig, daß man die Ausrichtung der Tabellenelemente im Detail kontrollieren kann. Durch die Einstellung ColumnAlignments->"c" wird Mathematica angewiesen, die Elemente in jeder Spalte so anzuordnen, daß sie nach dem ersten Auftreten des Zeichens "c" in jedem Element ausgerichtet sind.

Durch Wahl von ColumnAlignments->"." werden deshalb Zahlen entsprechend der Positionen ihrer Dezimalpunkte angeordnet. Mathematica stellt auch ein spezielles \[AlignmentMarker]-Zeichen zur Verfügung, das als AliasIndicatoramAliasIndicator eingegeben werden kann. Dieses Zeichen erscheint nicht explizit, kann aber in Tabellenelementen eingefügt werden, um zu markieren, welcher Punkt in diesen Elementen auf eine Linie gebracht werden soll.

Einstellungen für die Option RowAlignments

Dies ist die voreingestellte Ausrichtung von Elementen in einer Zeile einer GridBox.

In[8]:= GridBox[{{SuperscriptBox[x, 2], FractionBox[y, z]}}] //
DisplayForm

Out[8]//DisplayForm=

Dies geschieht, wenn die Elemente nach ihrem unteren Ende ausgerichtet sind.

In[9]:= GridBox[{{SuperscriptBox[x, 2], FractionBox[y, z]}},
RowAlignments->Bottom] // DisplayForm

Out[9]//DisplayForm=

In gewöhnlichem Text werden aufeinanderfolgende Zeichen normalerweise so positioniert, daß ihre Grundlinien ausgerichtet sind. Bei vielen Zeichen, wie zum Beispiel m und x, fällt die Grundlinie mit dem unteren Ende des Zeichens zusammen. Allgemein ist die Grundlinie jedoch das untere Ende des Hauptteils des Zeichens, und zum Beispiel haben g und y in den meisten Schriftschnitten „Unterlängen", die sich unter der Grundlinie befinden.

Dies zeigt die Ausrichtung von Zeichen bei der Voreinstellung RowAlignments->Baseline.

In[10]:= GridBox[{{"x", "m", "g", "y"}}] // DisplayForm

Out[10]//DisplayForm=

Dies geschieht, wenn stattdessen nach dem unteren Rand jedes Zeichens ausgerichtet wird.

In[11]:= GridBox[{{"x", "m", "g", "y"}}, RowAlignments->Bottom] //
DisplayForm

Out[11]//DisplayForm=

Mathematica wird normalerweise Folgen von Boxen ähnlich wie Zeichen in gewöhnlichem Text so ausrichten, daß ihre Grundlinien ausgerichtet sind. Für viele Arten von Boxen wird als Grundlinie einfach die Grundlinie des Hauptelementes der Box genommen. So wird zum Beispiel bei einer SuperScript-Box die Grundlinie von x zu der der Box.

Bei einer FractionBox definiert der Bruchstrich die Achse der Box. Bei Text einer bestimmten Schrift kann man auch eine Achse definieren—eine Linie, die durch das Zentrum symmetrischer Zeichen, wie zum Beispiel + und ( gehen. Die Grundlinie einer FractionBox liegt dann genauso weit unter ihrer Achse wie die Grundlinie für Text in der aktuellen Schrift unter ihrer Achse liegt.

Bei einer GridBox läßt sich mit der Option GridBaseline spezifizieren, wo die Grundlinie liegen soll. Die möglichen Einstellungen sind dieselben wie die für RowAlignments. Die Voreinstellung ist Axis, dadurch wird das Zentrum der GridBox mit der Achse von umgebendem Text ausgerichtet.

Die Option GridBaseline spezifiziert, wo die Grundlinie der GridBox liegen soll.

In[12]:= {GridBox[{{x,x},{x,x}}, GridBaseline->Top],
GridBox[{{x,x},{x,x}}, GridBaseline->Bottom]} //
DisplayForm

Out[12]//DisplayForm=

Formatierungsoptionen für ButtonBox-Objekte

Dies erzeugt eine Taste, der wie ein Element eines Dialogfeldes aussieht.

In[13]:= ButtonBox["abcd",
ButtonFrame->"DialogBox"] // DisplayForm

Out[13]//DisplayForm=

Paletten werden in der Regel mit Gittern von ButtonBox-Objekten erstellt, bei denen die Zeilen- und Spaltenabstände gleich Null sind.

In[14]:= GridBox[{{ButtonBox["abc"], ButtonBox["xyz"]}},
ColumnSpacings->0] // DisplayForm

Out[14]//DisplayForm=

Tasten expandieren in der Regel, so daß sie in einer GridBox bündig erscheinen.

In[15]:= GridBox[{{ButtonBox["abcd"]},
{ButtonBox["x"]}}] // DisplayForm

Out[15]//DisplayForm=

In diesem Fall wird verhindert, daß die untere Tasten expandiert.

In[16]:= GridBox[{{ButtonBox["abcd"]}, {ButtonBox["x",
ButtonExpandable->False]}}] // DisplayForm

Out[16]//DisplayForm=

In Abschnitt 2.10.6 wird beschrieben, wie Aktionen für ButtonBox-Objekte konstruiert werden.

Abstandsmaße

Zeichen für Zwischenräume verschiedener Breite. steht für das Leerzeichen auf Ihrer Tastatur.

Wenn Sie zum Beispiel x+y eingeben, dann wird Mathematica dies automatisch in RowBox[{"x","+","y"}] konvertieren. Wenn die RowBox ausgegeben wird, wird Mathematica dann versuchen, zwischen jedes Element geeigneten Zwischenraum einzufügen. In der Regel wird es mehr Zwischenraum um Zeichen wie + legen, die gewöhnlich als Operatoren verwendet werden, und weniger Zwischenraum um Zeichen wie x, die gewöhnlich keine Operatoren sind. Die Zwischenräume lassen sich jedoch immer durch Einfügen expliziter Zwischenraum-Zeichen modifizieren. Positive Zwischenraum-Zeichen werden aufeinanderfolgende Elemente auseinanderrücken, während negative sie näherrücken.

In der Voreinstellung läßt Mathematica mehr Zwischenraum um Zeichen wie + und -, die gewöhnlich als Operatoren eingesetzt werden.

In[17]:= RowBox[{"a", "b", "+", "c", "-", "+"}] // DisplayForm

Out[17]//DisplayForm=

Zur Änderung der Zwischenräume lassen sich explizit Zeichen für positiven und negativen Zwischenraum einfügen.

In[18]:= RowBox[{"a", "\[ThickSpace]", "b", "+",
"\[NegativeMediumSpace]", "c", "-", "+"}] // DisplayForm

Out[18]//DisplayForm=

Blockierung automatischer Zwischenräume in Mathematica

So wird Mathematica veranlaßt, zwischen aufeinanderfolgenden Zeichen denselben Zwischenraum zu lassen.

In[19]:= StyleBox[RowBox[{"a", "b", "+", "c", "-", "+"}],
AutoSpacing->False] // DisplayForm

Out[19]//DisplayForm=

Wenn Sie einen Ausdruck auf dem Bildschirm darstellen, erlaubt die Notebook-Benutzeroberfläche, interaktiv im Einzelfall die Positionen der Elemente anzupassen. In der Regel „schubsen" ControlKeyLeftModifiedRightModified, ControlKeyLeftModifiedRightModified, ControlKeyLeftModifiedRightModified und ControlKeyLeftModifiedRightModified das, was Sie gerade gewählt haben, um einen Pixel (in der jeweiligen Bildschirmvergrößerung). Derartige Änderungen werden in Mathematica durch AdjustmentBox-Objekte repräsentiert.

Änderung der Position einer Box

Dies fügt Zwischenraum zur Linken von B hinzu und entfernt Zwischenraum zur Rechten.

In[20]:= RowBox[{"A", AdjustmentBox["B", BoxMargins->
{{1, -0.3}, {0, 0}}], "C", "D"}] // DisplayForm

Out[20]//DisplayForm=

Durch sorgfältige Ausrichtung läßt sich erreichen, daß zwei Zeichen übereinander gesetzt werden.

In[21]:= RowBox[{"C", AdjustmentBox["/",
BoxMargins->{{-.8, .8}, {0, 0}}]}] // DisplayForm

Out[21]//DisplayForm=

Die linken und rechten Ränder in einer AdjustmentBox werden in ems angegeben; die oberen und unteren in x-Höhen. Durch Angabe positiver Werte für Ränder läßt sich ein Rand um eine Box erzwingen. Durch Angabe negativer Werte läßt sich der belegte Platz reduzieren und erreichen, daß andere Boxen näherrücken. Beachten Sie, daß vertikale Ausrichtung in einer RowBox durch die Position der Grundlinie bestimmt wird; in einer FractionBox oder einer OverscriptBox zum Beispiel wird sie stattdessen durch die oberen und unteren Ränder bestimmt.

Platz für Boxen lassen, ohne sie darzustellen

Wenn Sie versuchen, verschiedene Elemente Ihrer Ausgabe zusammenzustellen, können Sie mit ShowContents->False in StyleBox Platz für Boxen lassen, ohne sie darzustellen.

Dies läßt Platz für das Y, stellt es aber nicht dar.

In[22]:= RowBox[{"X", StyleBox["Y", ShowContents->False], "Z"}] //
DisplayForm

Out[22]//DisplayForm=

Die Größen der meisten Zeichen werden allein durch ihre Schriftart festgelegt, so wie es zum Beispiel durch die Option FontSize in StyleBox angegeben wird. Es gibt jedoch einige streckbare Sonderzeichen, deren Größe sogar innerhalb eines Zeichensatzes variieren kann. Klammern sind ein Beispiel, die bereits in der Voreinstellung als streckbar angesehen werden, damit sie jeden Ausdruck umspannen, den sie enthalten.

In der Voreinstellung ändern Klammern ihre Größe, um jeden Ausdruck, den sie enthalten, einzufassen.

In[23]:= {RowBox[{"(", "X", ")"}],
RowBox[{"(", FractionBox["X", "Y"], ")"}]} // DisplayForm

Out[23]//DisplayForm=

StyleBox-Optionen zur Kontrolle streckbarer Zeichen

In der Voreinstellung wachsen Klammern in einer einzelnen RowBox, um alles einzufassen, was auch immer sonst in der RowBox erscheint.

In[24]:= RowBox[{"(", "(", GridBox[{{X},{Y},{Z}}]}] // DisplayForm

Out[24]//DisplayForm=

In der Voreinstellung wachsen einige streckbare Zeichen jedoch nur bis zu einer endlichen Größe.

In[25]:= RowBox[{"{", "[", "(", GridBox[{{X},{Y},
{Z}}]}] // DisplayForm

Out[25]//DisplayForm=

Dies spezifiziert, daß alle Zeichen in der StyleBox so, wie es nötig ist, gestreckt werden können.

In[26]:= StyleBox[%, SpanMaxSize->Infinity] // DisplayForm

Out[26]//DisplayForm=

In der Voreinstellung wachsen streckbare Zeichen immer symmetrisch.

In[27]:= RowBox[{"(", GridBox[{{X},{Y}},
GridBaseline->Bottom], ")"}] // DisplayForm

Out[27]//DisplayForm=

Nach Einstellung von SpanSymmetric->False dürfen streckbare Zeichen asymmetrisch wachsen.

In[28]:= {X, StyleBox[%, SpanSymmetric->False]} // DisplayForm

Out[28]//DisplayForm=

Normalerweise enthält die Notebook-Benutzeroberfläche ein Menü Streckbare Zeichen Streckbare Zeichen (Spanning Characters), mit dem sich die Einfassungs-Charakteristika aller Zeichen in ihrer aktuellen Auswahl ändern lassen.

Vorgabe-Charakteristika streckbarer Zeichen

In der Voreinstellung wächst die obere eckige Klammer so, daß die OverscriptBox eingefaßt wird.

In[29]:= OverscriptBox["xxxxxx", "\[OverBracket]"] // DisplayForm

Out[29]//DisplayForm=

In der Voreinstellung wächst der rechte Pfeil in horizontaler Richtung, um so die Spalte auszufüllen, in der er sich befindet.

In[30]:= GridBox[{{"a", "xxxxxxx", "b"},
{"a", "\[RightArrow]", "b"}}] // DisplayForm

Out[30]//DisplayForm=

Der nach oben gerichtete Pfeil wächst in vertikaler Richtung, um so die Zeile auszufüllen, in der er sich befindet.

In[31]:= GridBox[{{FractionBox[X, Y],
"\[UpArrow]"}}] // DisplayForm

Out[31]//DisplayForm=

StyleBox-Optionen für die Kontrolle der Größe von Tiefstellungen usw

Dies erstellt einen Satz verschachtelter SuperscriptBox-Objekte.

In[32]:= b = ToBoxes[X^X^X^X^X]

Out[32]=

In der Voreinstellung werden aufeinanderfolgende Hochstellungen progressiv kleiner.

In[33]:= b // DisplayForm

Out[33]//DisplayForm=

Damit wird Mathematica angewiesen, allen Stufen dieselbe Größe zu geben.

In[34]:= StyleBox[b, ScriptSizeMultipliers->1] // DisplayForm

Out[34]//DisplayForm=

Hier werden aufeinanderfolgende Stufen der Hochstellungen kleiner, aber nur bis zur 5-Punkt-Größe.

In[35]:= StyleBox[b, ScriptMinSize->5] // DisplayForm

Out[35]//DisplayForm=

Mathematica wird die Position von Tief- und Hochstellungen normalerweise auf eine Weise optimieren, die von ihrer Umgebung abhängt. Wenn man mehrere verschiedene Tief- und Hochstellungen unterschiedlich plazieren möchte, muß man in der Regel mit der Option ScriptBaselineShifts für jede einzelne einen expliziten Abstand für die Verschiebung angeben.

In der Voreinstellung wird die zweite Tiefstellung etwas mehr als die erste nach unten verschoben.

In[36]:= RowBox[{SubscriptBox["x", "0"], "+",
SubsuperscriptBox["x", "0", "2"]}] // DisplayForm

Out[36]//DisplayForm=

So wird Mathematica angewiesen, auf beide Tiefstellungen genau dieselbe Verschiebung anzuwenden.

In[37]:= StyleBox[%, ScriptBaselineShifts->{1, Automatic}] //
DisplayForm

Out[37]//DisplayForm=

Eine Option für UnderoverscriptBox und verwandte Boxen

Die Grenzen einer Summe werden gewöhnlich als darüber- und daruntergestellte Zeichen dargestellt.

In[38]:= Sum[f[i], {i, 0, n}]

Out[38]=

Wenn die Summe jedoch kleiner gezeigt wird, dann werden die Grenzen üblicherweise als tief- und hochgestellte Zeichen dargestellt.

In[39]:= 1/%

Out[39]=

Hier werden niedrig und hoch immer noch direkt über- und unterhalb XX dargestellt.

In[40]:= UnderoverscriptBox["XX", "niedrig", "hoch",
LimitsPositioning->True] // DisplayForm

Out[40]//DisplayForm=

Jetzt aber werden niedrig und hoch in die niedrig- bzw. die hochgestellte Positionen verschoben.

In[41]:= FractionBox["a", %] // DisplayForm

Out[41]//DisplayForm=

LimitsPositioning->Automatic wird sich so wie LimitsPositioning->True verhalten, wenn das erste Argument der Box ein Objekt wie \[Sum] oder \[Product] ist. Sie können die Liste derartiger Zeichen durch eine entsprechende Einstellung der Option LimitsPositioningTokens spezifizieren.

Zeilenumbruch-Optionen für Boxen

Wenn Sie es mit einem langen Ausdruck zu tun haben, wird es sich nicht immer vermeiden lassen, daß dieser sich über mehr als nur eine Zeile erstrecken wird. Viele Arten von Boxen ändern ihre Darstellungscharakteristika, wenn sie über mehrere Zeilen umgebrochen werden.

Dies stellt eine Bruch-Konstruktion auf einer einzelnen Zeile dar.

In[42]:= Expand[(1 + x)^5]/Expand[(1 + y)^5]

Out[42]=

Diese wird über mehrere Zeilen umgebrochen.

In[43]:= Expand[(1 + x)^10]/Expand[(1 + y)^5]

Out[43]=

Mit der Option MultilineFunction läßt sich spezifizieren, wie eine spezielle Box dargestellt werden soll, wenn sie sich über mehrere Zeilen erstreckt. Die Einstellung MultilineFunction->None verhindert, daß die Box überhaupt umgebrochen wird.

Bis zu einem gewissen Grad läßt sich durch Einfügen von \[NoBreak]- und \[NonBreakingSpace]-Zeichen kontrollieren, wo Ausdrücke umgebrochen werden. Mathematica wird versuchen, einen Ausdruck an der Position dieser Zeichen möglichst nicht umzubrechen.

Mathematica kann zum Umbruch einer Zeile gezwungen werden, indem man explizit ein \[NewLine]-Zeichen einfügt, das in der gewöhnlichen Notebook-Benutzeroberfläche einfach durch Eintippen von Return erzeugt wird. Gelten die Voreinstellungen für Optionen, wird Mathematica automatisch, nachdem ein Return eingetippt wird, die nächste Zeile einrücken. Der Grad der Einrückung wird jedoch festgelegt sein, sobald die Zeile begonnen wurde, und wird sich nicht ändern, wenn man dann editieren sollte. Durch Einfügen eines \[IndentingNewLine]-Zeichens kann Mathematica veranlassen werden, immer, entsprechend der jeweiligen Umgebung, in der die Zeile sich befindet, das korrekte Ausmaß der Einrückung zu bewahren.

Zeichen zur Kontrolle des Zeilenumbruchs

Wenn Mathematica einen Ausdruck über mehrere Zeilen umbricht, so erfolgt die Einrückung von Zwischenzeilen proportional zur Verschachtelungsstufe an dem Punkt im Ausdruck, an dem der Umbruch erfolgt.

Die Zeilenumbrüche erfolgen hier nur auf Stufe 1.

In[44]:= Range[30]

Out[44]=

Hier erfolgt der Umbruch hingegen auf einer viel tieferen Stufe.

In[45]:= Nest[List, x+y, 30]

Out[45]=

Darstellung textueller Formen durch BoxenZeichenkettendarstellung von Boxen