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