Gruppierung

Inzwischen haben wir eine ganze Reihe von Anweisungen kennengelernt, welche das Verhalten nachfolgender Anweisungen ändern. Vor allem die Anweisungen zum Ändern der Farbe können uns dabei in Schwierigkeiten bringen, wenn wir vergessen, sie rechtzeitig wieder rückgängig zu machen. Mit den Anweisungen für Transformation (welche wir später für die Bilder benötigen) wird dies noch schlimmer.

Um diesem Problem Herr zu werden, fassen wir alle zusammengehörigen Anweisungen zu einer Gruppe zusammen. Anweisungen innerhalb der Gruppe haben keinen Einfluss auf Anweisungen ausserhalb der Gruppe.

Anweisungen

Eine Gruppe wird mit der Anweisung q eingeleitet, und mit der Anweisung Q beendet.

Beispiel:

q
0 0.75 0.75 rg
100 100 150 150 re f
Q

Dies zeichnet ein türkises Quadrat, und stellt sicher, dass die Füllfarbe danach wieder auf dem Wert ist, der vorher gesetzt war.

Seiten und Gruppen

Jede Seite eines PDF ist eine implizite Gruppe. Das heisst, keine Anweisung kann Anweisungen auf anderen Seiten beeinflussen. Das heisst aber auch, dass eine explizit gesetzte Gruppe nicht über mehrere Seiten gehen kann. Gemäss Standard muss jede mit q gestartete Gruppe innerhalb derselben Seite mit Q wieder geschlossen werden.

Verschachtelung

Gruppen können ineinander verschachtelt werden. In dem Falle wird Q so interpretiert, dass die innerste, offene Gruppe geschlossen wird. Damit sind komplexe Strukturen möglich, ohne das wir uns viel Gedanken machen müssen. Es sollten nicht mehr als 28 Gruppen ineinander verschachtelt werden.

Beispiel:

/F1 24 Tf
q
1 0 0 rg
q
0 1 0 rg
q
0 0 1 rg
BT 72 72 Td (Blau) Tj ET
Q
BT 72 102 Td (Gruen) Tj ET
Q
BT 72 132 Td (Rot) Tj ET
Q
BT 72 162 Td (Schwarz) Tj ET

Dies setzt von oben nach unten die Texte „Schwarz“, „Rot“, „Gruen“ und „Blau“ in den jeweiligen Farben.

Diskussion

Geben Sie Ihren Kommentar ein. Wiki-Syntax ist zugelassen:
Q D B H U
 
grundlagen/seiteninhalt/gruppierung.txt · Zuletzt geändert: 2013/06/23 22:43 (Externe Bearbeitung)
 
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: CC0 1.0 Universal
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki