Texte und Tabellen - Cinderella Dokumentation
Description: The user's guide to the Interactive Geometry Software Cinderella

Zum Inhalt

# Texte und Tabellen

Mit CindyScript können Sie gesteuerten und gestylten Text für eine Zeichnung erstellen. Die wesentliche Funktionalität wird durch den `drawtext`-Operator bereitgestellt. Darüber hinaus kann mit `drawtable` eine Tabellenausgabe generiert werden. Die Verwendung von Texten und Tabellen in Skripten ist sehr nützlich, da man die Skriptsprache verwenden kann, um zu steuern, wann und wo Text in einer Konstruktion angezeigt wird. Dies ist ein sehr wichtiges Werkzeug zum Bereitstellen von erklärenden Texten und funktionalen Übungen, die auf Eingaben reagieren.

#### Text zeichnen: `drawtext(<vec>,<expr>)`

Beschreibung: Der Operator `drawtext(<vec>,<string>)` zeichnet einen Text `<string>` an einer angegebenen Position, die durch den Positionsvektor `<vec>` gegeben ist. Dieser Positionsvektor kann entweder in euklidischen xy-Koordinaten oder in homogenen Koordinaten angegeben werden.

Beispiel: Die Zeile `drawtext((0,0),"Hello World")` gibt die Zeichenkette "Hello World" mit der unteren linken Ecke an der Position (0, 0) aus.

Modifizierer: Der `drawtext`-Operator unterstützt mehrere Operatoren zur Änderung von Aussehen und Position.

Modifizierer | Parameter | Auswirkung
--- | --- | ---
`size` | `<real>` | legt die Textgröße fest
`color` | `[<real>,<real>,<real>]` | legt die Textfarbe fest
`alpha` | `<real>` | legt die Textopazität fest
`xoffset` | `<real>` | setzt einen x-Versatz in Pixeln zwischen Text und Basispunkt
`yoffset` | `<real>` | setzt einen y-Versatz in Pixeln zwischen Text und Basispunkt
`offset` | `[<real>,<real>]` | setzt einen xy-Versatz in Pixeln zwischen Text und Basispunkt
`align` | `"left", "right", "mid"` | bestimmt die Ausrichtung des Textes
`bold` | `<bool>` | Flag für fetten Text
`italics` | `<bool>` | Flag für kursiven Text
`family` | `<string>` | Angabe der Schriftfamilie

Neben den verfügbaren Schriftfamilien sind auch die drei Zeichenketten `serif`, `sansserif` und `monospaced` erlaubt, die immer die entsprechenden Standardschrifttypen erzeugen.

Beispiel: Der Code

    x=1..10;
    forall(x,i,
      drawtext((i,0),"Text",
      size->2*i+15,
      bold->true,
      color->(1-i/10,0,i/10`

    ![](../assets/wiki_up/TextX.png)
    )

erzeugt das folgende Bild.

Wenn der Zeichenkettenausdruck ein -Zeichen enthält, wird dieser Zeilenumbruch wörtlich interpretiert. Auf diese Weise ist es einfach, mehrzeilige Texte zu erstellen, wie das folgende Code-Stück zeigt.

    drawtext`0,0),size->18,
    "In Cinderella 'newlines' in Text
    are really used as line terminators.
    So this text will appear as a
    multilined text.")

#### Verfügbare Schriftfamilien: `fontfamilies()`

Beschreibung: Dieser Operator erzeugt eine Liste aller Schriftfamilien, die auf Ihrem Computer verfügbar sind. Normalerweise wird dies eine ganze Menge sein. Das folgende Code-Stück zeigt die Namen einiger dieser Schriftfamilien in ihrem eigenen Schriftstil an.

    families=fontfamilies();
    i=0;
    while(length(families)>i,i=i+1;
       drawtext((mod(i,5)*7,round(i/5)),families_i,family->families_i);
    )

#### Unicode-Zeichen: `unicode(<string>)`

Beschreibung: Cinderella kann alle Unicode-Zeichen in Textzeichenketten anzeigen. Um auf ein Unicode-Zeichen zuzugreifen, akzeptiert die Anweisung `unicode(<string>)` eine Unicode-Beschreibung (eine Nummer), die als Ziffernfolge angegeben wird. Sie gibt eine Zeichenkette mit dem entsprechenden Unicode-Zeichen zurück. Standardmäßig ist die Basis der Unicode-Beschreibung 16. Daher werden normalerweise hexadezimale Beschreibungen als Eingabe akzeptiert. Die Basis kann mit einem Modifizierer geändert werden.

Die Basis der Unicode-Beschreibung kann mit dem `base`-Modifizierer geändert werden.

Beispiel: Sowohl `unicode("0041")` als auch `unicode("65",base->10)` erzeugen das Zeichen "A".

#### Testen, ob eine Zeichenkette angezeigt werden kann: `candisplay(<string>)`

Beschreibung: Dieser Operator testet, ob eine bestimmte Zeichenkette in der aktuell gewählten Schriftart angezeigt werden kann. Er gibt einen booleschen Wert zurück.

#### Tabellen zeichnen: `drawtable(<vec>,<list>)`

Ein- und zweidimensionale Listen können leicht in einer geometrischen Ansicht als Tabellen gezeichnet werden. In der einfachsten Form brauchen Sie nur die Liste und eine Position anzugeben, an der die Tabelle gezeichnet werden soll. Modifizierer können verwendet werden, um das Aussehen der Tabelle zu verfeinern.

Beispiel: Der folgende Code erzeugt das folgende Bild:

    x=1..10;
    table=apply(x,(#,#^2,#^3,#^4`;
    drawtable`0,0),table);

Modifizierer: Der `drawtable`-Operator unterstützt mehrere Modifizierer, um das grafische Aussehen der Tabelle zu kontrollieren. Eine Zusammenfassung der Modifizierer ist in der folgenden Tabelle enthalten:

Modifizierer | Parameter | Auswirkung
--- | --- | ---
`width` | `<int>` | die Breite der Zellen in Pixeln
`height` | `<int>` | die Breite der Zellen in Pixeln
`flip` |  | vertauscht die Rolle von Zeilen und Spalten
`border` | `<bool>` | schaltet das Zeichnen von Linien und Rahmen ein/aus
`size` | `<real>` | legt die Textgröße fest
`color` | `[<real>,<real>,<real>]` | legt die Textfarbe fest
`alpha` | `<real>` | legt die Textopazität fest
`offset` | `[<real>,<real>]` | setzt einen xy-Versatz in Pixeln zwischen Text und Basispunkt
`align` | `"left", "right", "mid"` | bestimmt die horizontale Textausrichtung innerhalb einer Zelle
`back` | `<bool>` | schaltet das Zeichnen eines Tabellenhintergrunds ein/aus
`back` | `[<real>,<real>,<real>]` | schaltet das Zeichnen des Tabellenhintergrunds ein und setzt ihn auf eine RGB-Farbe
`backalpha` | `<real>` | legt die Opazität des Tabellenhintergrunds fest

Beispiel: Der folgende Code ist ein anspruchsvolleres Beispiel für die Verwendung des `drawtable`-Operators. Modifizierer werden verwendet, um eine schöne Darstellung der Tabellen zu erstellen. Eine zweite Tabelle wird verwendet, um eine Überschrift für die Tabelle zu erstellen.

    x=1..9;
    tab=apply(x,(#,#^2,#^3,#^4));
    tab1=("x","$x^2$","$x^3$","$x^4$");
    linecolor((0,0,.8`;
    drawtable`0,0),tab,
      width->50,
      height->22,
      back->(1,0,0),
      backalpha->0.1,

    ![](../assets/wiki_up/Table1X.png)
      align->"right",
      size->12
    );
    linecolor((0,0,0`;
    drawtable`0,8.1),tab1,flip->true,
      width->50,
      height->33,
      back->(0,0,1),
      backalpha->0.4,
      align->"mid",
      size->16,
      color->(1,1,1)
    );

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