TeX Rendering - Cinderella Dokumentation
Description: The user's guide to the Interactive Geometry Software Cinderella

Zum Inhalt

# TeX Rendering

Ab Version 2.4 von Cinderella wurde die Textdarstellung erheblich leistungsgestärker. Es ist nun auch möglich, Formeln mit einer Variante der TeX-Schriftsetzungssprache zu rendern [Knu93]. Diese Sprache ist Standard für mathematische Dokumente und ermöglicht die Darstellung sehr komplexer Formeln. Derzeit unterstützt Cinderella etwa 95% der Formatierungsfähigkeiten der TeX-Formelsprache. Wir berichten hier nur über die wichtigsten Formatierungsprobleme. Wir berichten auch über die wichtigsten Unterschiede zum Standard-TeX.

TeX-Rendering kann auch in Texten für Element-Beschriftungen und in üblichen geometrischen Text-Objekten verwendet werden.

### TeX-Rendering aktivieren

Innerhalb einer gewöhnlichen Zeichenkette kann die TeX-Formeldarstellung durch Einschließen der Formel mit Dollarzeichen aktiviert werden: `$...here is the formula text...$`. Die folgende Anweisung erzeugt eine Formel, die bereits einige interessante Funktionen der TeX-Darstellung abdeckt:

    drawtext(
      (0,0),
      "Sum formula: $\sum_{i=1}^n i^2 = { 2\cdot n^3+ 4\cdot n^2 +n\over 6 }
    );

Der TeX-Renderer bemüht sich, sein Bestes zu geben, auch wenn ungewöhnliche Schriftfamilien für die Darstellung von Formeln ausgewählt werden.

    drawtext(
      (0,0),
      "Sum formula: $\sum_{i=1}^n i^2 =
                   { 2\cdot n^3+ 3\cdot n^2 +n\over 6 }$",size->20,
      family->"Lucida Calligraphy"
    );

### Indizes und Exponenten

Die vielleicht einfachste und häufigste Anwendung der TeX-Darstellung ist es, Beschriftungen mit Indizes oder Exponenten auszustatten. Dies kann mit den Zeichen `_` und `^` erfolgen. Wenn die Indizes oder Exponenten wieder komplizierteren Formeln entsprechen, müssen sie in geschweifte Klammern eingeschlossen werden. Im Gegensatz zum gewöhnlichen TeX müssen Indizes oder Exponenten, die nur aus Zahlen bestehen, nicht in geschweifte Klammern eingeschlossen werden. Der folgende Code-Ausschnitt zeigt verschiedene Anwendungen von Indizes und Exponenten.

    textsize(20);
    drawtext((0,0), "$A_1$");
    drawtext((2,0), "$A_123$");
    drawtext((4,0), "$A_1^12$");
    drawtext((6,0), "$A_{1_2}^{1/2}$");
    drawtext((8,0), "$A_{1_2}^{\sqrt{x^2+y^2}}$");

### Spezielle Formularelemente

Der TeX-Renderer kann spezielle Formelzeichen wie Summen, Quadratwurzeln und Integrale rendern. Das folgende Beispiel gibt einen Eindruck davon, wie diese Objekte dargestellt werden können.

    textsize(20);
    drawtext((0,0), "$\sum_{i=1}^n (i^2+1)");
    drawtext((3,0), "$\sqrt{x^2+y^2}");
    drawtext((6,0), "$\int_a^b f(x)dx");

TeX-Steuerbefehle müssen durch ein `\`-Zeichen vorangestellt werden. Beachten Sie, dass `\sum` und `\int` automatisch eine angemessene Platzierung von oberen und unteren Indizes erzeugen. Neben `\sum` und `\int` gibt es auch andere Symbole, die obere und untere Indizes auf besondere Weise behandeln. Hier ist eine vollständige Liste davon:

`\prod`, `\coprod`, `\bigcup`, `\bigcap`, `\bigwedge`, `\bigvee`, `\bigoplus`, `\bigotimes`, `\bigodot`, `\biguplus`, `\int`, `\iint`, `\iiint`, `\ont`

### Klammern

Die Cinderella TeX-Implementierung ermöglicht die Verwendung von vier Arten von Klammern in Formeln:

- Runde Klammern: (....)
- Eckige Klammern: [....]
- Geschweifte Klammern: {...}
- Vertikale Linien: |...|

Da geschweifte Klammern eine spezielle semantische Bedeutung in TeX-Formeln haben, müssen sie durch einen Backslash vorangestellt werden. In Formeln ist es oft notwendig, Klammern unterschiedlicher Größen zu verwenden. Zu diesem Zweck kann jede Klammer durch einen der Modifizierungsbefehle `\big`, `\Big`, `\bigg`, `\Bigg` vorangestellt werden. Sie erzeugen Klammern unterschiedlicher Größen, wie das folgende Code-Beispiel zeigt.

    drawtext((0,0),size->16,
    "$\Bigg( \bigg( \Big( \big( (\ldots)
               \big) \Big) \bigg) \Bigg)$");
    drawtext((5,0),size->16,
    "$\Bigg[ \bigg[ \Big[ \big[ [\ldots]
               \big] \Big] \bigg] \Bigg]$");
    drawtext((10,0),size->16,
    "$\Bigg\{ \bigg\{ \Big\{ \big\{ \{\ldots\}
               \big\} \Big\} \bigg\} \Bigg\}$");
    drawtext((15,0),size->16,
    "$\Bigg| \bigg| \Big| \big| |\ldots|
               \big| \Big| \bigg| \Bigg|$")

Es gibt auch eine vielseitigere Möglichkeit, eine riesige Klammer zu erstellen. Mit den Befehlen `\left` und `\right` können Klammern erstellt werden, die genau der Größe der eingeschlossenen Formel entsprechen, wie im nächsten Beispiel gezeigt:

    drawtext((0,0),size->16,
    "$\left[\sum_{i=1}^n \left({\sqrt sin(i)\right)\right]^2$")

Die Anweisungen `\left` und `\right` müssen ordnungsgemäß verschachtelt sein. Wenn man eine öffnende oder schließende Klammer unterdrücken möchte, kann man `\left.` oder `\right.` verwenden.

### Formeln mit speziellem Layout

Einige Formeln wie zum Beispiel Brüche erzwingen ein spezielles Layout, das die verschiedenen Teile der Formeln an speziellen Positionen platziert. Cinderella TeX-Anweisungen, die diese Art der Darstellung unterstützen, sind

`\frac,\over,\choose,\binom`

Ihre Verwendung wird im nächsten Beispiel gezeigt:

    drawtext((0,0),size->16,"${1+n^2\over 1-n^2}$");
    drawtext((3,0),size->16,"${2\choose 3}$");
    drawtext((6,0),size->16,"$\frac{a+b}{x^2}$");
    drawtext((9,0),size->16,"$\binom{a+b}{x^2}$");

### Leerzeichen

Gewöhnliche Leerzeichen und Zeilenumbrüche werden in Formeln nur als syntaktische Trennzeichen verwendet und haben keinen Einfluss auf das Layout der Formel. Um Leerzeichen einzuführen, werden die Befehle `\`, `\;`, `\quad`, `\qquad`, `\!` verwendet. Sie erzeugen ein Leerzeichen, das in Einheiten eines „m" der aktuellen Schriftart gemessen wird.

- `\qquad`: Leerzeichen von 2,0 Einheiten
- `\quad`: Leerzeichen von 1,0 Einheit
- `\;`: Leerzeichen von 5/18 Einheiten
- `\,`: Leerzeichen von 3/18 Einheiten
- `\!`: negatives Leerzeichen von -5/18 Einheiten

    drawtext((0,0),size->16,"$A\!A A \,A\;A\quad A \qquad A$")

### Über- und Unterstreichung

Cinderella TeX unterstützt mehrere Anweisungen, die es ermöglichen, Dekorationen wie Pfeile und Linien über oder unter einer Formel anzubringen. Die unterstützten Befehle sind

`\overline, \underline, \overleftarrow, \overrightarrow, \vec, \hat, \tilde`

Die Argumente dieser Anweisungen müssen in geschweifte Klammern eingeschlossen werden. Hier sind einige Formeln, die diese Funktionen verwenden:

    drawtext((0,0),size->16,"$\overline{A}\;\cap\;\overline{B}\;=\;
                          \overline{A\;\cup\; B}$");
    drawtext((6,0),size->16,"$|\overrightarrow{(x,y)}|\;= \;
                          \sqrt{x^2+y^2}$");
    drawtext((13,0),size->16,"$\tilde{X}+\hat{Y}\;=\;
                          \underline{X\oplus Y}$");

### Vektoren und Matrizen

Matrizen und Vektoren sind für mathematische Formeln unerlässlich. Sie können auch mit der TeX-Implementierung von Cinderella dargestellt werden. Die grundlegendste Methode, eine Matrix (oder einen Vektor) einzuführen, ist die Verwendung der Anweisung `\begin{array}{...}.....\end{array}`. Ein Array besteht aus einer Folge von Zeilen, die durch `\\` getrennt sind. Jede Zeile besteht aus den Einträgen der Zeile, die durch `&` getrennt sind. Das zweite Klammernpaar in der obigen Anweisung enthält Formatierungsinformationen für jede Spalte. Hier

- `r` bedeutet rechtsbündig,
- `l` bedeutet linksbündig,
- `c` bedeutet zentriert.

Im folgenden Beispiel wird die `array`-Anweisung mit einschließenden Klammern kombiniert, um ein matrixähnliches Objekt zu erzeugen.

    drawtext((0,0),
    "$M\;=\;\left(
    \begin{array}{lcr}
     1+1&2&3\\
     1&2+2&3\\
     1&2&3+3\\
     \end{array}
    \right)
    $"
    ,size->20);

Arrays können auch verwendet werden, um Formeln mit mehreren Fällen zu erstellen, wie das folgende Beispiel zeigt:

    drawtext((0,0),
    "$sign(x)\;:=\;\left\{
    \begin{array}{ll}
      1&if \quad x>0\\
     -1&if \quad x<0\\
      0&if \quad x=0\\
     \end{array}
    \right.
    $"
    ,size->20);

Cinderella unterstützt auch Matrix-Operatoren, die keine Formatierungsinformationen benötigen und die einschließenden Klammern automatisch erzeugen. Die fünf Arten zulässiger Matrizen werden im Code unten veranschaulicht:

    drawtext((0,0), "$\begin{matrix} a-\lambda & b\\
                            c & b-\lambda\\ \end{matrix}$",);
    drawtext((4,0), "$\begin{pmatrix}a-\lambda & b\\
                            c & b-\lambda\\ \end{pmatrix}$");
    drawtext((8,0), "$\begin{bmatrix}a-\lambda & b\\
                            c & b-\lambda\\ \end{bmatrix}$");
    drawtext((12,0),"$\begin{Bmatrix}a-\lambda & b\\
                            c & b-\lambda\\ \end{Bmatrix}$");
    drawtext((16,0),"$\begin{vmatrix}a-\lambda & b\\
                            c & b-\lambda\\ \end{vmatrix}$");

### Farbe

Cinderellas TeX unterstützt farbigen Text über einen speziellen Befehl `\color{...}`. Die derzeit vordefinierten Farben sind:

`white, black, red, green, blue, darkred, darkgreen, darkblue, magenta, yellow, cyan, orange`

Die Verwendung der Farbanweisung beeinflusst die Farbe der Unterformel, in der sie verwendet wird.

    drawtext((0,0),size->20,color->(0,0,0),
      "Sum formula: $
    \sum_{\color{darkgreen}i=1}^{\color{darkgreen}n} {\color{darkred}i^2}
    \quad = \quad
    {\color{blue}{ 2\cdot n^3+ 4\cdot n^2 +n\over 6 }}$"
    );

### Klartext

Manchmal kann es nützlich sein, einen Abschnitt normalen Textes innerhalb einer Formel zu verwenden. Dies kann mit der Anweisung `\mbox{....}` geschehen. Das folgende Beispiel zeigt seine Verwendung:

    drawtext((0,0),size->20,color->(0,0,0),
      "$
    \sum_{\mbox{All i not equal to j}}(i^2+j^2)
    $"
    );

### Spezielle Zeichen

In mathematischen Formeln benötigt man viele Spezialzeichen. Die folgende Liste gibt einen Überblick über alle Zeichen, die mit speziellen TeX-Anweisungen verknüpft sind.

#### Griechische Buchstaben

α | \alpha | β | \beta | γ | \gamma | δ | \delta
∊ | \epsilon | ε | \varepsilon | ζ | \zeta | η | \eta
θ | \theta | ϑ | \vartheta | ι | \iota | κ | \kappa
λ | \lambda | λ | \lamda | μ | \mu | μ | \my
ν | \nu | ν | \ny | ξ | \xi | ο | \omicron
π | \pi | ϖ | \varpi | ρ | \rho | ϱ | \varrho
σ | \sigma | ς | \varsigma | τ | \tau | υ | \upsilon
υ | \ypsilon | φ | \phi | χ | \chi | ψ | \psi
ω | \omega | Α | \Alpha | Β | \Beta | Γ | \Gamma
Δ | \Delta | Ε | \Epsilon | Ζ | \Zeta | Η | \Eta
Θ | \Theta | Ι | \Oota | Κ | \Kappa | Λ | \Lambda
Λ | \Lamda | Μ | \Mu | Μ | \My | Ν | \Nu
Ν | \Ny | Ξ | \Xi | Ο | \Omicron | Π | \Pi
Ρ | \Rho | Σ | \Sigma | Τ | \Tau | Υ | \Upsilon
Υ | \Ypsilon | Φ | \Phi | Χ | \Chi | Ψ | \Psi
Ω | \Omega |  |  |  |  |  |

#### Pfeile

← | \leftarrow | → | \rightarrow | → | \to | ↔ | \leftrightarrow
⇐ | \Leftarrow | ⇒ | \Rightarrow | ⇔ | \Leftrightarrow | ↦ | \mapsto
↩ | \hookleftarrow | ↼ | \leftharpoonup | ↽ | \leftharpoondown | ↪ | \hookrightarrow
⇀ | \rightharpoonup | ⇁ | \rightharpoondown | ← | \longleftarrow | → | \longrightarrow
↔ | \longleftrightarrow | ⇐ | \Longleftarrow | ⇒ | \Longrightarrow | ⇔ | \Longleftrightarrow
⇖ | \longmapsto | ↑ | \uparrow | ↓ | \downarrow | ↕ | \updownarrow
⇑ | \Uparrow | ⇓ | \Downarrow | ⇕ | \Updownarrow | ↗ | \nearrow
↘ | \searrow | ↙ | \swarrow | ↖ | \nwarrow | ↝ | \leadsto
⇠ | \dashleftarrow | ⇇ | \leftleftarrows | ⇆ | \leftrightarrows | ⇚ | \Lleftarrow
↞ | \twoheadleftarrow | ↢ | \leftarrowtail | ⇋ | \leftrightharpoons | ↰ | \Lsh
↫ | \looparrowleft | ↶ | \curvearrowleft | ↺ | \circlearrowleft | ⇢ | \dashrightarrow
⇉ | \rightrightarrows | ⇄ | \rightleftarrows | ⇛ | \Rrightarrow | ↠ | \twoheadrightarrow
↣ | \rightarrowtail | ⇌ | \rightleftharpoons | ↱ | \Rsh | ↬ | \looparrowright
↷ | \curvearrowright | ↻ | \circlearrowright | ⊸ | \multimap | ⇈ | \upuparrows
⇊ | \downdownarrows | ↿ | \upharpoonleft | ↾ | \upharpoonright | ⇃ | \downharpoonleft
⇂ | \downharpoonright | ⇝ | \rightsquigarrow | ↭ | \leftrightsquigarrow | ← | \leftarrow
↑ | \uparrow | → | \rightarrow | ↓ | \downarrow | ↔ | \leftrightarrow
↕ | \updownarrow | ↖ | \nwarrow | ↗ | \nearrow | ↘ | \searrow
↙ | \snarrow | ⇐ | \Leftarrow | ⇑ | \Uparrow | ⇒ | \Rightarrow
⇓ | \Downarrow | ⇔ | \Leftrightarrow | ⇕ | \Updownarrow | ⇖ | \Nwarrow
⇗ | \Nearrow | ⇘ | \Searrow | ⇙ | \Snarrow |  |

#### Mathematische Zeichen

≤ | \leq | ≪ | \ll | ≺ | \prec | ≼ | \preceq
⊂ | \subset | ⊆ | \subseteq | ⊏ | \sqsubset | ⊑ | \sqsubseteq
∈ | \in | ⊢ | \vdash | ∣ | \mid | ⌣ | \smile
≥ | \geq | ≫ | \gg | ≻ | \succ | ≽ | \succeq
⊃ | \supset | ⊇ | \supseteq | ⊐ | \sqsupset | ⊒ | \sqsupseteq
∋ | \ni | ⊣ | \dashv | ∥ | \parallel | ⌢ | \frown
∉ | \notin | ≡ | \equiv | ≐ | \doteq | ∼ | \sim
≃ | \simeq | ≈ | \approx | ≅ | \cong | ⋈ | \Join
⋈ | \bowtie | ∝ | \propto | ⊨ | \models | ⊥ | \perp
≍ | \asymp | ≠ | \neq | ± | \pm | × | \times
∪ | \cup | ⊔ | \sqcup | ∨ | \vee | ⊕ | \oplus
⊙ | \odot | ⊗ | \otimes | △ | \bigtriangleup | ⊲ | \lhd
⊴ | \unlhd | ∓ | \mp | ÷ | \div | ∖ | \setminus
∩ | \cap | ⊓ | \sqcap | ∧ | \wedge | ⊖ | \ominus
⊘ | \oslash | ○ | \bigcirc | ▽ | \bigtriangledown | ⊳ | \rhd
⊵ | \unrhd | ◁ | \triangleleft | ▷ | \triangleright | ⋆ | \star
∗ | \ast | ∘ | \circ | ∙ | \bullet | ⋄ | \diamond
⊎ | \uplus | † | \dagger | ‡ | \ddagger | ≀ | \wr
∑ | \sum | ∏ | \prod | ∐ | \coprod | ∨ | \int
⋃ | \bigcup | ⋂ | \bigcap | ⊔ | \bigsqcup | ∮ | \oint
⋁ | \bigvee | ⋀ | \bigwedge | ⊕ | \bigoplus | ⊗ | \bigotimes
⊙ | \bigodot | ⊎ | \biguplus | … | \dots | ⋯ | \cdots
⋮ | \vdots | ⋱ | \ddots | ℏ | \hbar | ℓ | \ell
ℜ | \Re | ℑ | \Im | א | \aleph | ℘ | \wp
∀ | \forall | ∃ | \exists | ℧ | \mho | ∂ | \partial
′ | \prime | ∅ | \emptyset | ∞ | \infty | ∇ | \nabla
△ | \triangle | □ | \Box | ◇ | \Diamond | ⊥ | \bot
⊤ | \top | ∠ | \angle | √ | \surd | ♢ | \diamondsuit
♡ | \heartsuit | ♣ | \clubsuit | ♠ | \spadesuit | ¬ | \neg
♭ | \flat | ♮ | \natural | ♯ | \sharp | Ϝ | \digamma
ϰ | \varkappa | ב | \beth | ד | \daleth | ג | \gimel
⋖ | \lessdot | ≤ | \leqslant | ≦ | \leqq | ⋘ | \lll
≲ | \lesssim | ≶ | \lessgtr | ⋚ | \lesseqgtr | ≼ | \preccurlyeq
⋞ | \curlyeqprec | ≾ | \precsim | ⋐ | \Subset | ⊏ | \sqsubset
∴ | \therefore | ⌣ | \smallsmile | ⊲ | \vartriangleleft | ⊴ | \trianglelefteq
⋗ | \gtrdot | ≧ | \geqq | ⋙ | \ggg | ≳ | \gtrsim
≷ | \gtrless | ⋛ | \gtreqless | ≽ | \succcurlyeq | ⋟ | \curlyeqsucc
≿ | \succsim | ⋑ | \Supset | ⊐ | \sqsupset | ∵ | \because
∥ | \shortparallel | ⌢ | \smallfrown | ⊳ | \vartriangleright | ⊵ | \trianglerighteq
≑ | \doteqdot | ≓ | \risingdotseq | ≒ | \fallingdotseq | ≖ | \eqcirc
≗ | \circeq | ≜ | \triangleq | ≏ | \bumpeq | ≎ | \Bumpeq
∼ | \thicksim | ≈ | \thickapprox | ≊ | \approxeq | ∽ | \backsim
⊨ | \vDash | ⊩ | \Vdash | ⊪ | \Vvdash | ∍ | \backepsilon
∝ | \varpropto | ≬ | \between | ⋔ | \pitchfork | ◀ | \blacktriangleleft
▷ | \blacktriangleright | ∔ | \dotplus | ⋉ | \ltimes | ⋓ | \Cup
⊻ | \veebar | ⊞ | \boxplus | ⊠ | \boxtimes | ⋋ | \leftthreetimes
⋎ | \curlyvee | ⋅ | \centerdot | ⋈ | \rtimes | ⋒ | \Cap
⊼ | \barwedge | ⊟ | \boxminus | ⊡ | \boxdot | ⋌ | \rightthreetimes
⋏ | \curlywedge | ⊺ | \intercal | ⋇ | \divideontimes | ∖ | \smallsetminus
⊝ | \circleddash | ⊚ | \circledcirc | ⊛ | \circledast | ℏ | \hbar
ℏ | \hslash | □ | \square | ■ | \blacksquare | Ⓢ | \circledS
△ | \vartriangle | ▲ | \blacktriangle | ∁ | \complement | ▽ | \triangledown
▼ | \blacktriangledown | ◊ | \lozenge | ◆ | \blacklozenge | ★ | \bigstar
∠ | \angle | ∡ | \measuredangle | ∢ | \sphericalangle | ‵ | \backprime
∄ | \nexists | Ⅎ | \Finv | ∅ | \varnothing | ð | \eth
℧ | \mho |  |  | \vert | ‖ | \Vert | ℂ
ℇ | \vareps | ℍ | \H | ℑ | \Im | ℓ | \ell
ℕ | \N | ℙ | \P | ℚ | \Q | ℜ | \Re
ℝ | \R | ℤ | \Z | ± | \pm | ∓ | \mp
★ | \star | ∗ | \ast | • | \bullet | · | \centerdot
ℵ | \aleph | ∈ | \in | ∉ | \not\in | ∋ | \ni
∌ | \not\ni | ∖ | \backslash | ∖ | \setminus | ∕ | \slash
∀ | \forall | ╳ | \times | ∩ | \cap | ∪ | \cup
⋅ | \cdot | ∞ | \infty | ⇒ | \implies | ⋮ | \vdots
⋱ | \ddots | ⋯ | \cdots | … | \ldots |  |

#### Unicode

Im seltenen Fall, dass ein bestimmtes Zeichen nicht durch die Standard-TeX-Befehle bereitgestellt wird, gibt es auch eine Möglichkeit, ein Unicode-Zeichen in eine TeX-Formel einzuschließen. Dies kann mit einer der beiden TeX-Anweisungen `\unicode{...}` oder `\unicodex{...}` geschehen. Die erste dieser Anweisungen erwartet eine Dezimalzahl, die das Unicode-Zeichen angibt. Die zweite Anweisung erwartet eine Hexadezimalzahl. Das folgende (etwas fortgeschrittene) Beispiel erstellt zunächst eine Zeichenkette von Unicode-Anweisungen unter Verwendung der Funktion `sum(...)`. Dann wird die resultierende Zeichenkette als TeX-Formel dargestellt.

    chess=sum(0..11,i,"\;\unicode{"+(9812+i)+"}");
    drawtext((0,0),size->30,"$"+chess+"$");

Das resultierende Bild wird unten angezeigt:

Diese Seite wurde automatisch mit KI (Claude) übersetzt und wartet noch auf Überprüfung. → Alle KI-übersetzten Seiten