|
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 am 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"    ,    ,    und    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]= 
|