PSTricks: Grafik mit PostScript für TeX und LaTeX 3865418589, 9783865418586

2,147 170 87MB

German Pages 0 [958] Year 2016

Report DMCA / Copyright

DOWNLOAD FILE

Polecaj historie

PSTricks: Grafik mit PostScript für TeX und LaTeX
 3865418589, 9783865418586

Citation preview

PSTricks Siebte, überarbeitete und erweiterte Auflage Herbert Voß Berlin

DANTE

Alle in diesem Buch enthaltenen Programme, Darstellungen und Informationen wurden nach bestem Wissen erstellt und mit Sorgfalt getestet. Dennoch sind Fehler nicht ganz auszuschließen. Aus diesem Grund ist das in dem vorliegenden Buch enthaltene Programm-Material mit keiner Verpflichtung oder Garantie irgendeiner Art verbunden. Autoren und Herausgeber übernehmen infolgedessen keine Verantwortung und werden keine Haftung übernehmen, die auf irgendeine Art aus der Benutzung dieses Programmmaterials, oder Teilen davon, oder durch Rechtsverletzungen Dritter entsteht. Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Buch berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen- und Markenschutz-Gesetzgebung als frei zu betrachten wären und daher von jedermann verwendet werden dürften. Alle Warennamen werden ohne Gewährleistung der freien Verwendbarkeit benutzt und sind möglicherweise eingetragene Warenzeichen. Autoren und Herausgeber richten sich im Wesentlichen nach den Schreibweisen der Hersteller. Andere hier genannte Produkte können Warenzeichen des jeweiligen Herstellers sein. Dieses Werk ist urheberrechtlich geschützt. Alle Rechte, auch die der Übersetzung, des Nachdrucks und der Vervielfältigung des Buches, oder Teilen daraus, sind vorbehalten.

© 2016 Herbert Voß, Berlin Siebte, überarbeitete und erweiterte Auflage ISBN 978-3-86541-858-6 Umschlag: Herbert Voß Satz: LATEX (Libertine, Kp-Math und Beramono) Verlag: Lehmanns Media, Berlin (www.lehmanns.de) Druck: Dimograf – Bielsko-Biała – Polen

Inhaltsverzeichnis 1 1.1 1.2 1.3 1.4 1.5

Einführung Die Geschichte . . . . . . . Der Kern . . . . . . . . . . . Was es ist ... . . . . . . . . . Was es nicht ist ... . . . . Was noch zu sagen ist ...

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

3 3 4 5 5 6

2 2.1 2.2 2.3 2.4 2.5 2.6

Erste Schritte Farben . . . . . . . . . . . . . . . Parameter mit \psset setzen Maßstäbe und Längen . . . . . Koordinaten. . . . . . . . . . . . pspicture–Umgebung . . . . Leerraum (»Whitespace«) . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

9 10 23 24 26 26 32

3 3.1 3.2 3.3 3.4

Koordinatensystem Grids . . . . . . . . . . . Parameter . . . . . . . . Makros . . . . . . . . . . Spezialfälle . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

33 34 35 39 42

4 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8

Linien und Polygone Parameter . . . . . . . . . . . . . . \psline . . . . . . . . . . . . . . . \qline . . . . . . . . . . . . . . . . \pspolygon . . . . . . . . . . . . . \psframe und \psTextFrame . \psdiamond . . . . . . . . . . . . . \pstriangle . . . . . . . . . . . . Beispiele . . . . . . . . . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

45 45 58 58 59 59 61 61 62

5 5.1 5.2 5.3 5.4 5.5

Kreise, Ellipsen und Kurven Parameter . . . . . . . . . . . . . . Kreise und Ellipsen . . . . . . . . Kurven . . . . . . . . . . . . . . . . Kubische B-Splines . . . . . . . . Ergänzende Beispiele. . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

63 63 69 75 78 81

. . . .

. . . .

. . . . .

. . . .

. . . . .

. . . .

. . . .

v

buch-titelseiten.tex: (#311)

herbert

6 6.1 6.2 6.3

Punkte Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . \psdot und \psdots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . TEXnisches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7 7.1 7.2 7.3

Füllen 93 Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 »Semitransparente« Farben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 Kreisförmige Farbverläufe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

8 8.1 8.2

Pfeile 107 Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Erweiterungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

9 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9

Label Referenzpunkte . . . . . . . . . . Drehwinkel . . . . . . . . . . . . . Parameter . . . . . . . . . . . . . . \rput . . . . . . . . . . . . . . . . . \Rput . . . . . . . . . . . . . . . . . \uput . . . . . . . . . . . . . . . . . \cput . . . . . . . . . . . . . . . . . \multirput und \rmultiput . \multips . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

119 119 120 120 121 122 122 123 123 124

10 10.1 10.2 10.3 10.4 10.5 10.6

Boxen Parameter . . . . . . . . . . . . . . . . Makros . . . . . . . . . . . . . . . . . . Boxgröße. . . . . . . . . . . . . . . . . Clipping . . . . . . . . . . . . . . . . . Rotieren und Skalieren . . . . . . . Mathematik und Verbatim-Boxen

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

125 126 127 130 130 132 134

11 11.1 11.2 11.3

Anwenderstile und Anwenderobjekte 137 Anwenderstile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 Anwenderobjekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 \pscustom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138

12 12.1 12.2 12.3 12.4

Koordinaten Punkte . . . . . . . . . . . . . . Winkelangaben . . . . . . . . Veraltete Makros . . . . . . . Beispiel für \SpecialCoor .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

155 155 161 161 162

13 13.1 13.2 13.3 13.4

Grundlagen Prologdateien. . . . . . . . . . . . . . . . . . . . Spezielle Makros. . . . . . . . . . . . . . . . . . Mathematische Funktionen auf TEX-Ebene »Low level« Makros . . . . . . . . . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

163 163 164 171 175

. . . .

. . . .

. . . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

vi

buch-titelseiten.tex: (#311)

herbert

83 83 86 86

13.5 »High level«-Makros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 13.6 »key value«-Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 14 14.1 14.2 14.3 14.4 14.5 14.6 14.7

pst-plot: Plotten von Funktionen und Daten

15 15.1 15.2 15.3 15.4 15.5 15.6 15.7 15.8 15.9

pst-node: Knoten und Verbindungen

16 16.1 16.2 16.3 16.4 16.5

pst-tree: Bäume

Koordinatenachsen . . . . . . . . . . . . . . . . . . . . . Automatische Skalierung mit psgraph . . . . . . . . Plotten von Funktionen . . . . . . . . . . . . . . . . . . PostScript-Funktionen in algebraischer Notation . Plotten von Daten . . . . . . . . . . . . . . . . . . . . . . \pstScalePoints. . . . . . . . . . . . . . . . . . . . . . Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Knotennamen . . . . . . . . . . . . . . Parameter . . . . . . . . . . . . . . . . . Knoten . . . . . . . . . . . . . . . . . . . \nc-Verbindungen. . . . . . . . . . . . \pc-Verbindungen. . . . . . . . . . . . Label . . . . . . . . . . . . . . . . . . . . Spezielles. . . . . . . . . . . . . . . . . . \psmatrix . . . . . . . . . . . . . . . . . TEX und PS – eine einseitige Sache. Parameter für Baumknoten . . . Baumknoten . . . . . . . . . . . . . Label . . . . . . . . . . . . . . . . . . \skiplevel und \skiplevels . Probleme . . . . . . . . . . . . . . . .

. . . . .

. . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

183 184 210 214 230 233 245 245

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

251 252 252 263 271 280 281 285 286 291

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

293 294 304 307 311 312

17 pst-text: Zeichen und Text manipulieren 313 17.1 Zeichenmanipulationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313 17.2 Textmanipulationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317 18 pst-fill: Füllen und Parkettieren 319 18.1 Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320 18.2 Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324 19 19.1 19.2 19.3

pst-coil: Spulen, Federn und Zickzacklinien

327 Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327 Makros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333 Knotenverbindungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334

20 20.1 20.2 20.3 20.4

pst-eps: Exportieren von PSTricks-Umgebungen 337 TeXtoEPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338 \PSTtoEPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338

Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339 Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340

vii

buch-titelseiten.tex: (#311)

herbert

21 21.1 21.2 21.3

pst-grad und pst-slpe: Farbverläufe und Schatten 341 pst-grad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341 pst-slpe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344 pst-blur: Verschwommene Schatten. . . . . . . . . . . . . . . . . . . . . . . . . . 352

22 22.1 22.2 22.3 22.4 22.5 22.6 22.7 22.8

pst-3d: Schatten, Kippen und dreidimensionale Darstellungen . . pst-ob3d: Einfache, dreidimensionale Objekte . . . . . . . . . . . . . pst-gr3d: Dreidimensionale Gitter . . . . . . . . . . . . . . . . . . . . . pst-fr3d: Button mit 3D-Effekt . . . . . . . . . . . . . . . . . . . . . . . pst-3dplot: 3D-Parallelprojektionen von Funktionen und Daten . pst-solides3d: 3D-Ansichten . . . . . . . . . . . . . . . . . . . . . . . . pst-mirror: Projektionen auf einem Kugelspiegel . . . . . . . . . . . pst-platon: Die platonischen Körper . . . . . . . . . . . . . . . . . . .

Dreidimensionale Abbildungen

23 23.1 23.2 23.3 23.4

pst-circ: Erstellen von Schaltbildern

24 24.1 24.2 24.3 24.4 24.5 24.6

pst-geo: Geografische Projektionen

Das Prinzip . . . . . . Parameter . . . . . . . Die Objekte . . . . . . Logische Bausteine .

. . . .

. . . .

. . . .

Parameter . . . . . . . . . . pst-map2d . . . . . . . . . . pst-map3d . . . . . . . . . . pst-map2dII . . . . . . . . pst-map3dII . . . . . . . . \pnodeMap und \mapput

. . . .

. . . . . .

. . . .

. . . . . .

. . . .

. . . . . .

. . . .

. . . . . .

. . . .

. . . . . .

. . . .

. . . . . .

. . . .

. . . . . .

. . . .

. . . . . .

. . . .

. . . . . .

. . . .

. . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

357 358 370 372 379 382 415 469 476

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

481 481 482 484 498

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

505 506 515 516 524 525 527

25 pst-barcode: Barcodes 535 25.1 Die Optionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535 25.2 Mögliche Barcodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538 26 26.1 26.2 26.3

pst-bar: Balkendiagramme

549 Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549 Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550 Makros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554

27 Mathematische Funktionen 557 27.1 pst-math – Erweiterte PS-Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . 557 27.2 pst-func: Spezielle Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560 28 pst-eucl: Euklidische Geometrie 593 28.1 Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593 28.2 Makros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605 29 pstricks-add: Erweiterte Grundfunktionen 623 29.1 Neue Makros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624 29.2 Knotentypen und -linien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635

viii

buch-titelseiten.tex: (#311)

herbert

29.3 Mathematische Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639 29.4 Berechnete Farben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652 29.5 Verschiedene Makros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 30 30.1 30.2 30.3 30.4 30.5

pst-labo: Chemische Geräte

Parameter . . . . . . . . . . . . . . Vordefinierte Farben und Stile. Makros . . . . . . . . . . . . . . . . Basisobjekte. . . . . . . . . . . . . Beispiele . . . . . . . . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

657 657 671 672 677 677

31 UML-Diagramme 679 31.1 pst-uml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 679 31.2 uml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 690 32 32.1 32.2 32.3 32.4 32.5

Weitere PSTricks-Pakete Linguistik . . . . . . . . . . . . Mathematik. . . . . . . . . . . Naturwissenschaften. . . . . Informationstechnik . . . . . Verschiedenes . . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

699 699 705 725 780 790

33 Spezielles . . . 803 33.1 Gouraud-Färbung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 803 33.2 Animationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 805 34 PSTricks in Präsentationen 811 34.1 beamer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 811 34.2 powerdot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813 35

Beispiele

817

A A.1 A.2

Tabellen 859 Zusammenstellung der Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . 859 Zusammenfassung aller Makros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 871

B B.1 B.2 B.3 B.4

PostScript Die mathematischen PS-Funktionen . . . . Die nicht-mathematischen PS-Funktionen Die PS-Definitionen von pstricks.pro . . Die Namen der PSTricks-Dictionaries . . .

. . . .

883 883 884 889 890

C C.1 C.2 C.3

pstricks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pst-plot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pst-node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

893 893 894 895

D D.1

PDF-Ausgabe 897 XELATEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 897

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

Bekannte Fehler

ix

buch-titelseiten.tex: (#311)

herbert

D.2 D.3 D.4 D.5

auto-pst-pdf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

E E.1 E.2 E.3

Fehler und Hilfe 903 Häufige Fehler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 903 Hilfe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 904 Paketverzeichnis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 904

898 ps2pdf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 900 pdftricks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 900 Grafik extern »on-the-fly« erstellen. . . . . . . . . . . . . . . . . . . . . . . . . . . 901

Index der Befehle und Begriffe

912

Personen

948

x

buch-titelseiten.tex: (#311)

herbert

Vorwort

»PSTricks–mehr als nur ein alter Hut«, war ein Vortrag auf der DANTE-Tagung in Darmstadt betitelt. [54] Er sollte den Teilnehmern vor Augen führen, dass PSTricks, als eines der ersten für Plain TEX entwickelten Pakete nichts an seiner Aktualität und vor allem seiner Professionalität verloren hat. Die Qualität der Grafikausgabe, die mit PSTricks erreicht werden kann, sucht sicherlich ihresgleichen. Dabei darf nicht vergessen werden, dass alles seine Grenzen hat, so auch PSTricks mit seinen vielfältigen Paketen, denn die Grafiken müssen komplett in TEX- und somit in Textform eingegeben werden. Keiner wird auf die Idee kommen, die Baupläne für eine Gasturbinenanlage oder das Layout für die nächste Prozessorgeneration in Textform zu erstellen. Dies ist auch oft gar nicht erforderlich für die Forschung und Lehre, denn hier gilt es sehr oft Grafiken zu erstellen, die in ihrem Anspruch zwar reduziert aber dennoch komplex genug sind, wie es beispielsweise für zu erstellende Arbeitsblätter, Veröffentlichungen (Aufsätze, Bücher), Studien-, Diplom- und Doktorarbeiten, usw. sehr oft der Fall ist. Hier bietet PSTricks fast unvorstellbare Möglichkeiten hinsichtlich der Professionalität in der Ausgabe, denn hinter PSTricks steht die zwar alte, aber im grafischen Bereich mächtige Programmiersprache PS. PSTricks verfügt mittlerweile über derartig viele verschiedene Pakete und somit Makros und Parameter, dass schon lange keiner mehr in der Lage ist, diese alle präsent zu haben. Hier soll diese Veröffentlichung helfen, denn die aktuelle Dokumentation von PSTricks ist nicht nur in die Jahre gekommen, sondern auch bislang unvollständig gewesen. TEX lebt vom Enthusiasmus der Entwickler und der postiven Rückkopplung der Benutzer. So war es Timothy Van Zandt, der Anfang der 90-er Jahre ein paar Makros zur Unterstützung der Seminar-Klasse schrieb. Und wie so oft, es fing »ganz langsam an, aber dann . . . « Irgendwann korrelierten Enthusiasmus und »offizieller Broterwerb« im negativen Sinne, sodass Timothy die mehr oder weniger fertige Arbeit am sehr umfangreichen Grundgerüst von PSTricks einstellte. Etwas zu entwickeln ist eine Seite, aber es am Laufen zu halten eine nicht minder schwierige und zeitaufwendige Sache. Seit Jahren kümmerte sich Denis Girou darum, dass Bugs beseitigt und Fragen auf der PSTricks-eigenen Mailingliste umfassend und schnell beantwortet wurden. Nebenbei

entwickelte er noch eine Reihe weiterer Pakete. Ohne Denis wäre PSTricks heute nicht das was es ist. Fast von Anfang an dabei war auch Rolf Niepraschk. Ohne ihn wäre diese Veröffentlichung erstens nicht so schnell entstanden und zweitens auch nicht mit so wenig Fehlern. Er übernahm neben Uwe Ziegenhagen und Hubert Gäßlein den wichtigen Part des Korrekturlesens und engagierte sich vehement, LATEX, PSTricks und Farbe unter einen Hut zu bringen. Rolf hatte auch immer irgendwo die unvollständigen Uralt-Dokumentationen gespeichert und konnte sie auch unter LATEX 2ε zum Laufen bringen, was wahrlich nicht ganz einfach war. Immer, wenn es mit TEX an das Eingemachte ging, war Hubert gefragt, der mit seinen TEX-Kenntnissen alles auf den Punkt bringen konnte. Jens-Uwe Morawski erstellte das Cover und zeigte wieder einmal, was mit ConTEXt alles möglich ist. Uwe Siart stellte seine tabellarische Zusammenfassung der Makros zur Verfügung und der Berliner TEX-Stammtisch, sowie viele PSTricks-Anwender überprüften die bei der Arbeit an diesem Buch entdeckten Bugs und Ungereimtheiten von PSTricks. Last but not least, was wäre der Mensch ohne seinen Verein. DANTE e.V. unterstützte die Veröffentlichung nicht nur dieses Buches, sondern war mit Klaus Hoeppner letztlich der Impulsgeber. Klaus war auch zusammen mit Christoph Kaeder von Lehmanns Fachbuchhandlung stets bemüht eine adäquate Veröffentlichungsform zu finden. Von den Entwicklern der PSTricks-Pakete seien noch ausdrücklich Manuel Luque und Christophe Jorssen erwähnt. Ohne Manuel wären die 3D-Welten in dieser professionellen Weise nicht in ein PSTricks-Paket eingeflossen. Allen gilt es zu danken dafür, dass PSTricks das ist, was es ist: ein professionelles Werkzeug. Bleibt nur die Hoffnung, dass dieses Buch ebenfalls diesen Anspruch erfüllen möge. Berlin, im Juni 2004

Herbert Voß

Vorwort zur 7. Auflage Diese siebte Auflage ist mehr als nur ein verbesserter Nachdruck der sechsten Auflage; sie ist zum erstem Mal auch komplett in Farbe. Die Pakete pst-solarsystem, pst-intersect, pst-ode und pst-cie wurden neu aufgenommen. Inhaltlich gibt es zudem mehrere Verschiebungen, da zwischenzeitlich einige Makros in andere Pakete verschoben wurden. Dank geht an Uwe Siart, der wieder seine hilfreiche Zusammenstellung der Befehle zur Verfügung stellte und an Thomas Söll für die Titelgrafik. Christine Römer und Sebastian Hitziger haben mich auf Fehler in der sechsten Auflage hingewiesen. Alle Beispiele findet man wieder als eigenständige Programme auf CTAN:/info/examples/PSTricks_7_de. Berlin, im Mai 2016

Herbert Voß

2

ch00-vorwort.tex: (#321)

herbert

K a p i t e l

1

Einführung 1.1 Die Geschichte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2 Der Kern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.3 Was es ist ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.4 Was es nicht ist ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.5 Was noch zu sagen ist ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

Mit der Entwicklung von TEX wurde nicht unbedingt Wert auf die grafischen Fähigkeiten des Systems gelegt. TEX selbst verfügt daher auch nur über rudimentäre grafische Elemente, die mit der Einführung von LATEX erweitert wurden und erst seit neuestem durch das Paket pict2e [18] den normalen Ansprüchen Rechnung tragen. So entstand schon sehr früh die Idee, die grafischen Fähigkeiten der »alten« Programmiersprache PostScript zu nutzen, denn PostScript war ohnehin als Standard-Ausgabeformat für TEX vorgesehen, wenn man einmal vom »Zwischenformat« DVI absieht.

1.1 Die Geschichte PSTricks gehört zu den älteren Paketen, die bereits für eine Anwendung unter Plain TEX geschaffen wurden.

I started in 1991. Initially I was just trying to develop tools for my own use. Then I thought it would be nice to package them so that others could use them. It soon became tempting to add lots of features, not just the ones I needed. When this become so interesting that it interfered with my »day job«, I gave up the project »cold turkey«, in 1994. [Timothy Van Zandt]

Dieser Ablauf kann fast als der Standard für viele Paketentwickler angesehen werden, die fast ausnahmslos ehrenamtlich tätig waren und sind. Es fängt sehr häufig ganz bescheiden an und wird irgendwann zu einem Selbstläufer, sobald man sich mit seinen

1

Einführung

Ideen an die TEX-Öffentlichkeit wendet. Andererseits ist die Weiterentwicklung von TEX von genau solchen selbstlosen Entwicklern abhängig, wenn sie weiter auf einem hohen softwaretechnischen Niveau bleiben will. Nach Timothy Van Zandt übernahmen Sebastian Rahtz und Denis Girou die Aufgabe, PSTricks zu betreuen und Fehler zu beheben. Die Zahl der mittlerweile neu hinzugekommenen Pakete (siehe Kapitel 32) nimmt stetig zu, sodass PSTricks nach wie vor nicht als »alter Hut« bezeichnet werden kann.[54]

1.2 Der Kern Der Kern von PSTricks befindet sich ähnlich wie TEX und LATEX in einem quasi eingefrorenen Zustand, woran sich auch in nächster Zeit nichts ändern wird. Zum Kern sind die in Tabelle 1.1 angegebenen Pakete zu zählen, die sich alle in dem CTAN-Verzeichnis CTAN: /graphics/pstricks/generic/ befinden1 . Der Verzeichnisname generic deutet schon daraufhin, dass es sich hier um Plain TEX-kompatible Pakete handelt, die entweder über den \input-Befehl oder für LATEX über den korrespondierenden \usepackageBefehl eingebunden werden können. Die entsprechenden Style-Dateien befinden sich im Verzeichnis CTAN:/graphics/pstricks/latex/. Die genannten Basispakete gehören zu jeder bekannten TEX-Distribution, sodass hier keine weiteren Schritte notwendig sind, um mit ihnen arbeiten zu können. Weitere Informationen zu diesen und anderen Paketen findet man im Kapitel 32. Bei den Dateien mit der Endung .con handelt es sich um spezielle Konfigurationsdateien, von denen nur pstricks.con entscheidend ist. Je nach verwendetem System ist eine der anderen Dateien in pstricks.con umzubenennen. Die meisten Distributionen kommen bereits mit einer korrekten Grundeinstellung, beispielsweise MiKTEX oder TEX Live. Tabelle 1.1: Die Basispakete von PSTricks

Paketname

Datum

Changes pst-fp.tex pst-key.tex pstricks.con pstricks.tex pstricks97.tex

2016 2010 1998 2010 2010 1999

distiller.cfg dvips.cfg dvipsone.cfg textures.cfg vtex.cfg xdvipdfmx.cfg

2008 2010 1994 1997 2003 2015

Eigenschaft

log Dezimalzahloperationen Key-Value-Interface Konfigurationsdatei (DVIPS-Version) Das Basispaket Version 1997 patch 14 Konfigurationsdateien Standard, siehe

for XETEX

1 CTAN: Comprehensive T X Archive Network E

4

ch01-Intro.tex: (#267)

herbert

1.3

Was es ist ...

1.3 Was es ist ... PSTricks ist eine Ansammlung von PS-basierten TEX-Makros, die mit den meisten TEX-Formaten wie Plain TEX, LATEX, LuaTEX und ConTEXt kompatibel sind. PSTricks gibt ihnen die Möglichkeit Farbe, Grafiken, Transformationen, Bäume, Overlays usw. einzusetzen. Wichtige, grundlegende Informationen enthält die Datei README, die Teil des Pakets PSTricks ist. Sie enthält auch wichtige Informationen über aktuelle Probleme im Umgang mit PSTricks.

Die Zahl der Optionen und ihr Einsatz mit PSTricks-Makros ist mittlerweile wegen ihrer großen Zahl nur noch wenigen Anwendern vollständig geläufig, sodass diese Veröffentlichung eine Hilfe sein kann, den Überblick zu bekommen oder zu behalten. Der Index enthält daher auch jedes besprochene Makro samt seiner Optionen und kann neben dem Inhaltsverzeichnis sowie der Zusammenstellung der Optionen im Anhang (Abschnitt A.1 auf Seite 859) als Ausgangspunkt für die Suche von Informationen dienen. Aus Gründen der Kompatibilität gibt es von fast jedem PSTricks-Paket eine TEX- (Endung .tex) und eine LATEX-Version (Endung .sty). Beide sind prinzipiell gleichwertig, wenn auch die LATEX-Styledatei in der Regel nichts anderes macht, als die TEX-Version mittels des \input Befehls zu laden. Die Datei pstricks.sty weicht davon ab, da sie einige grundlegende Tests ausführt (siehe Kapitel 2 auf Seite 9).

.sty und .tex

PSTricks verwendet sehr stark PS-Funktionen, die über den \special-Befehl vom

dvips Programm, beziehungsweise dem DVIPS-Treiber an PS weitergereicht werden. Damit steht prinzipiell das komplette PS innerhalb von (LA)TEX zur Verfügung. Prinzipiell deshalb, weil eine Einschränkung gemacht werden muss; die Kommunikation zwischen TEX und PS ist einseitig, nämlich genau nur in dieser Richtung (Abschnitt 15.9 auf Seite 291). Nur mit zusätzlichen und relativ umständlichen Tricks ist es möglich, Informationen von PS wieder an TEX zurückzugeben. Dies impliziert vor allen Dingen auch die Fehlermeldungen von PS, über die man während eines TEX-Laufs keinerlei Kenntnis hat, lediglich der PS-Interpreter kann hier weitere Informationen liefern. Das TEX-Logfile enthält keinerlei Informationen über eventuelle PS-Fehler, die erst beim Ausführen der PS-Datei auftreten! In Zweifelsfällen kann die explizite Ausführung der ~ PS-Datei mit GhostScript hilfreich sein.

1.4 Was es nicht ist ... PSTricks ist bezeichnenderweise eine Abkürzung für PS-Tricks, woraus folgt, dass eine Ausgabe im PS-Format die Regel ist (Dateiendung .ps). Welche Möglichkeiten dennoch vorhanden sind, das populäre PDF-Format zu erreichen, wird ausführlich im Anhang D auf Seite 897 erläutert. Der Standardablauf zur Erzeugung einer PDF-Ausgabe ist daher nicht der rechte Zweig in Abbildung 1.1 auf der nächsten Seite, sondern der linke, grau hinterlegte Bereich! Die Befehlssequenz ist daher immer latex⇒dvips⇒pdf2pdf, wobei diese Schritte durchaus von einem pdflatex intern ausgeführt werden können, ohne dass der Anwender dies explizit erkennt. Weitere Informationen dazu gibt es im Kapitel D auf Seite 897.

5

ch01-Intro.tex: (#267)

herbert

1

Einführung

LATEX Quelltext

binäre Formatdatei Fonts (Metriken)

Klassendatei Zusatzpakete

⁇TEX-Compiler DVI-Datei

Fonts (Type 1, OpenType, …)

Hilfsdateien

externe Programme Index, Bibliografie, Glossar)

DVI-Treiber b b

PS-Datei

Der Aufbau eines TEX-Systems mit pdfTEX, XƎTEX oder LuaTEX als Compiler, die eine Ausgabe im PDFoder im treiberunabhängigen DVI-Format erlauben.

ghostscript

PDF-Datei

PDF-Datei

PDF-Datei

XƎLATEX

LATEX LuaLATEX

pdfLATEX LuaLATEX XƎLATEX

Abbildung 1.1: Schematischer Ablauf zur Erstellung eines PDF-Dokumentes.

Viele der PSTricks-Pakete weisen einen professionellen Charakter auf, können aber dennoch nicht mit Programmen wie AutoCAD, AutoSketch usw. verglichen werden. Die Anwendung von PSTricks macht prinzipiell nur Sinn, wenn die zu erstellende Grafik eine bestimmte, von Paket zu Paket variierende Komplexität nicht überschreitet. Der Anwender muss selbst entscheiden, wo er PSTricks einsetzen oder nicht einsetzen will.

1.5 Was noch zu sagen ist ... Es wird versucht, zu jedem Abschnitt mindestens ein Beispiel anzugeben. Dies ist jedoch nicht ganz unkritisch, denn häufig sind die Makros, die für ein sinnvolles Beispiel benötigt werden, noch gar nicht behandelt worden. Für solche Fälle wird am Ende eines Kapitels oder Abschnitts eine Querverweisliste angegeben, die nicht nur auf die einzelnen verwendeten Makros, sondern auch auf ergänzende oder weiterführende Pakete verweist. Erwartete Angaben zu den Parametern sind immer in kursiver Schrift zu finden, optionale Parameter sind zusätzlich mit einem grauen Kasten unterlegt. Bei den Eingaben treten folgende, in Tabelle 1.2 dargestellte Fälle auf. Die Verwendung von PSTricks, TEX und Farbe erfolgt nicht immer reibungslos. Um  unnötige Irritationen zu vermeiden, sollte man bei der Verwendung von farbspezifischen

6

ch01-Intro.tex: (#267)

herbert

1.5

Was noch zu sagen ist ...

Tabelle 1.2: Konventionen bei der Eingabe

Beispiel

Bedeutung

Name Parameter Pfeile Text Material

Name eines Parameters bzw. einer Option Feld für Optionen/Parameter Angabe über die Art von Linien- oder Kurvenanfang bzw. Kurvenende beliebiger alphanumerischer Text beliebiges Material, wobei eventuell eine \parbox zu verwenden ist, wenn Zeilenumbrüche auftreten false oder true Zahlenwert ohne Einheit Zahlenwert mit Einheit Zahlenwert mit oder ohne Einheit Zwei Zahlenwerte durch Leerzeichen getrennt Zweiter Zahlenwert optional Winkelangabe, entspricht einem Zahlenwert in Grad Farbname, der durch PSTricks oder durch xcolor bzw. color definiert sein muss Ein mit \newlength definiertes Längenregister Koordinatenpaar (Punkt) 1. Koordinatenpaar (Punkt) von mehreren n-tes Koordinatenpaar (n-ter Punkt) von mehreren

Boolean

Wert Wert Einheit Wert Einheit Wert1 Wert2 Wert1 Wert2 Winkel Farbe Länge x, y x1 , y 1 xn , y n

Makros nur die Syntax des Pakets xcolor bzw. color verwenden und auf die PSTrickseigene verzichten. Dies ist allerdings nur für LATEX-Anwender der Fall, für plainTEX ist ausschließlich die PSTricks-Syntax zu verwenden. Mit dem Paket miniltx können auch plainTEX-Anwender die LATEX-Syntax verwenden. Weitere Informationen dazu findet man in der aktuellen TEX-Installation unter $TEXMF/tex/plain/graphics-pln/.

7

ch01-Intro.tex: (#267)

herbert

1

Einführung

Im(z) 01-05-1

2.0

x

z

1.5 |z|

1.0

=

3

y

σ = 40◦

2.5

3.0

0.5 Re(z) 0

0.5

1.0

1.5

2.0

3.5

2π y y = cos σ

y = sin σ

1

π −1

0

1

2

3

4

5

−1 2π

Im(z)

 √ √  1 1 2 2; 2 2 90◦

z ◦z

45◦

(−1; 0)

z (1; 0)

Re(z)

8

ch01-Intro.tex: (#267)

herbert

6

σ

K a p i t e l

2

Erste Schritte 2.1 Farben. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.2 Parameter mit \psset setzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.3 Maßstäbe und Längen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.4 Koordinaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.5 pspicture–Umgebung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.6 Leerraum (»Whitespace«). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

PSTricks-Pakete werden in der üblichen Weise in ein Dokument eingebunden, wobei Tabelle 2.1 eine Zusammenstellung für die zugrundeliegenden Systeme zeigt.

Syntax

Tabelle 2.1: Laden von PSTricksPaketen für verschiedene TEX-Systefür Plain TEX me.

System

\input pstricks \usepackage [Optionen] {pstricks} \usemodule[pstric ]

für LATEX für ConTEXt

In der Regel sind fast alle PSTricks-Pakete Plain TEX-kompatibel, sodass die entsprechenden LATEX-Stildateien im Prinzip nichts anderes machen als die korrespondierende TEX-Datei zu laden. Eine Ausnahme bildet pstricks.sty, da es insbesondere wegen des Farbmanagements zusätzlich zum Laden von pstricks.tex mehrere Tests durchführt und anschließend einige Modifikationen vornimmt. Es stehen für pstricks.sty folgende Optionen zur Verfügung, wobei alle anderen Optionen an color oder xcolor weitergereicht werden: noxcolor plain

Anstelle von xcolor wird das Paket color geladen, der Vorläufer des xcolor Pakets. Es wird nur ein \input{pstricks} ausgeführt, sämtliche Modifikationen an den Makros zur Handhabung von Farben unterbleiben. Es stehen dann nur die PSTricks-spezifischen Makros zur Definition von Farben zur Verfügung (siehe Abschnitt 2.1 auf der nächsten Seite)

2

Erste Schritte

distiller 97 pdf

Redefiniert die Makros für die Transparenz von Linien und Flächen für die Anwendung von Adobes Distiller. Lädt die Version von 1997, womit ein Großteil aller neuen Funktionen nicht zur Verfügung steht. Lädt automatisch das Paket auto-pst-pdf, sodass ein Dokument mit pdflatex und der zugehörigen Option shell-escape übersetzt werden kann. Eingehende Informationen gibt es im Abschnitt D.2 auf Seite 898.

Es existiert ein pst-all Paket, welches alle so genannten Basispakete von PSTricks lädt, wobei diese Zusammenstellung allerdings historisch bedingt ist und keiner inneren Logik folgt. Andererseits macht es keinen Sinn, diese Liste derart zu erweitern, dass wirklich »all« Pakete geladen werden; es sind mittlerweile zu viele und negative Abhängigkeiten sind nicht immer ausgeschlossen, die eine Fehlersuche erschweren. Tabelle 2.2: Paketreihenfolge in pst-all [ ... ] \ProvidesPackage{pst-all}[2008/01/01 the main pstricks tools] \RequirePackage{pstricks} % important % this loads the xcolor package and pstricks in the right order % and does some modification to the color handling. Look at the % doc for the options. % \RequirePackage{pst-plot} \RequirePackage{pst-node} \RequirePackage{pst-tree} \RequirePackage{pst-grad} \RequirePackage{pst-coil} \RequirePackage{pst-text} \RequirePackage{pst-3d} \RequirePackage{pst-eps} \RequirePackage[tiling]{pst-fill} \RequirePackage{pstricks-add} \RequirePackage{multido} \endinput

Bei größeren Projekten empfiehlt es sich, nicht pst-all zu benutzen, sondern die Pakete einzeln zu laden. Auf diese Weise können Fehler bei einem TEX-Lauf leichter behoben werden, indem gezielt einzelne Pakete nicht geladen werden. Weiteres dazu wird im nächsten Abschnitt behandelt werden.

2.1 Farben TEX kennt bekanntermaßen selbst keine Farben, was in der Vergangenheit zur Entwicklung verschiedener Pakete führte, die nicht unbedingt immer fehlerfrei eingesetzt werden können. PSTricks greift auch hier auf die Möglichkeiten von PS zurück und definiert seine eigenen Farben, je fünf verschiedene Grauwerte und Farben (Tabelle 2.3). Tabelle 2.3: Die vordefinierten Grauwerte Grauwerte und Farben von Farben PSTricks.

black, darkgray, gray, lightgray, white red, green, blue, cyan, magenta, yellow

Diese können ohne jegliches Zusatzpaket innerhalb von PSTricks mit den oben angegebenen Namen als gleichnamiges Makro benutzt werden, da sie in jedem Fall auf PS-Ebene

10

ch02-ErsteSchritte.tex: (#311)

herbert

2.1

Farben

definiert werden (vergleiche dazu Beispiel 02-01-1). Dennoch sollte das Folgende für ein Arbeiten unter LATEX beachtet werden: Die Kurzformen für die Farbsetzung, wie beispielsweise \red, werden zwar nach wie vor von PSTricks unterstützt, sollten aber für LATEX-Anweder durch die Befehle \color ~ beziehungsweise \textcolor ersetzt werden. Neue Farben können durch die folgenden PSTricks-Makros definiert werden: \newgray{anotherGray }{Wert } \newrgbcolor{anotherRGB}{Wert1 Wert2 Wert3 } \newhsbcolor{anotherHSB}{Wert1 Wert2 Wert3 } \newcmykcolor{anotherCMYK }{Wert1 Wert2 Wert3 Wert4 }

Diese Definitionen stehen nicht unbedingt in Einklang mit dem Paket xcolor, sodass pstricks.sty einige Modifikationen vornimmt, um dem LATEX- Benutzer ein reibungsloses Arbeiten mit den Makros von xcolor zu ermöglichen. Um Komplikationen zu vermeiden, sollten unbedingt folgende Punkte beachtet werden: Die Datei pstricks.sty sollte stets vor allen PSTricks-basierten Paketen geladen werden. pstricks.sty selbst lädt bereits pstricks.tex und xcolor beziehungsweise color, sodass für LATEX ein \usepackage{pstricks} ausreicht! Dies ist für TEX-Anwender uninteressant, da sie ohnehin die PSTricks-eigenen Farbdefinitionen verwenden müssen. Das RGB-Farbmodell wird von allen PS-Implementationen bestens unterstützt, HSB und CMYK nicht in allen Level-1-Implementationen von PS, wobei mittlerweile jeder Drucker Level 2 oder auch Level 3 unterstützen sollte. Insbesondere im Zusammenhang mit der Dokumentenklasse prosper, die von seminar abgeleitet ist, gibt es wiederholt Probleme im Zusammenhang mit PSTricks und der ~ Definition von Farben, was primär darauf zurückzuführen ist, dass diese Pakete sich nicht vollständig auf das xcolor bzw. color Paket beziehen, sondern ein eigenes Farbmanagement aufweisen, welches nicht kollisionsfrei zu PSTricks ist (siehe Abschnitt 13.2.6 auf Seite 169). Die Verwendung einer neueren und konfliktfreien Klasse wie beamer1 oder insbesondere dem prosper-Nachfolger powerdot2 ist in jedem Fall die bessere Variante (siehe hierzu auch Kapitel 34.2 auf Seite 813).

02-01-1

Das ist jetzt rot unter Verwendung der PSTricks- \input{pstricks}% kein Farbpaket laden! Syntax, jetzt nicht mehr.

Das ist jetzt {\red rot unter Verwendung der PSTricks-Syntax}, jetzt nicht mehr.

2.1.1 xcolor Zwischen den Paketen xcolor von Uwe Kern und color von David Carlisle existiert ein wesentlicher Unterschied bei der Handhabung der Option dvips, denn color aktiviert grundsätzlich die dvipsnames Option, sobald einer der Treiber dvips, oztex oder xdvi ausgewählt wird. Dies kann zu Problemen führen, wenn man das Dokument mit pdftex übersetzt, welches dann undefinierte Farben reklamiert. Dies ist der Grund warum 1 CTAN:/macros/latex/contrib/beamer/ 2 CTAN:/macros/latex/contrib/powerdot/

11

ch02-ErsteSchritte.tex: (#311)

herbert

2

Erste Schritte

xcolor grundsätzlich vom Anwender eine explizite Angabe der Option dvipsnames

erwartet, wenn die entsprechenden vordefinierten Farben benutzt werden sollen. \usepackage[dvipsnames,prologue]{xcolor }

Tabelle 2.4: Zusammenstellung der Paketoptionen von xcolor.

Option

Bedeutung

natural

(Standard) Benutze alle Farben innerhalb ihres Modells, mit Ausnahme von RGB (konvertiert to rgb), HSB (konvertiert to hsb), und Gray (konvertiert to gray). Konvertiert alle Farben in das rgb-Modell. Konvertiert alle Farben in das cmy-Modell. Konvertiert alle Farben in das cmyk-Modell. Konvertiert alle Farben in das hsb-Modell. Konvertiert alle Farben in das gray-Modell. Konvertiert alle Farben in das RGB-Modell (und danach ins rgbModell). Konvertiert alle Farben in das HTML-Modell (und danach ins rgbModell). Konvertiert alle Farben in das HSB-Modell (und danach ins hsbModell). Konvertiert alle Farben in das Gray-Modell (und danach ins to grayModell). Lädt die vordefinierten DVIPS-Farben. Lädt die vordefinierten SVG-Farben Lädt die vordefinierten Unix/X11-Farben schreibt die Liste der Farbnamen (dvipsnames) in den PS-Header, was für die Dokumentenerstellung via DVIPS wichtig ist. Benutze das ursprüngliche LATEX-Makro. Lädt das colortbl Packet, um farbige Tabellenzeilen zu ermöglichen. Unterstützung des hyperref Packets. (Standard) Gibt eine Meldung bei undefinierten Farben aus. Gibt nur eine Fehlermeldung aus, wenn die undefinierte Farbe benutzt wird und setzt sie dann auf Schwarz.

rgb cmy cmyk hsb gray RGB HTML HSB Gray dvipsnames svgnames x11names prologue kernelfbox table hyperref showerrors hideerrors

Tabelle 2.5: Unterstützte Farbmodelle (L, M, N sind natürliche Zahlen).

Name

Grundfarben

Parameterbereich

rgb

red, green, blue

cmy

cyan, magenta, yellow

cmyk

cyan, magenta, yellow, black

hsb

hue, saturation, brightness

[0, 1]3 [0, 1]3 [0, 1]4 [0, 1]3

12

ch02-ErsteSchritte.tex: (#311)

herbert

Standard

2.1

gray

gray

RGB

Red, Green, Blue

HTML

RRGGBB

HSB

Hue, Saturation, Brightness

Gray

Gray

wave

lambda (nm)

[0, 1] {0, 1, . . . , L}3 {000000, . . . , FFFFFF} {0, 1, . . . , M}3 {0, 1, . . . , N } [363, 814]

Farben

L = 255 M = 240 N = 15

Anwendung vordefinierter Farben Analog zu den Farbdefinitionen von PSTricks gibt es auch für xcolor einige vom Farbmodell unabhängige vordefinierte Farben. Alle Treiber unterstützen logischerweise die Farben black und white sowie bei einer RGB-Unterstützung red, green und blue. Wird das CMYK-Modell unterstützt, dann noch zusätzlich die Farben cyan, magenta und yellow. \color{Name} \textcolor{Name}{Text }

Die erste Form arbeitet prinzipiell wie ein Schalter und definiert eine neue aktuelle Vordergrundfarbe bis entweder ein neuer \color-Befehl kommt oder eine lokale Gruppe beendet wird. Die zweite Form ist immer dann angebracht, wenn man nur kurze Textpassagen in einer anderen Farbe setzen will. Sie ist prinzipiell identisch zur Befehlsfolge {\color{name} . . . Text . . . }. Definition von Farben über numerische Werte Immer dann, wenn vordefinierte Farben nicht ausreichen, kann man Farben über numerische Werte bezogen auf ein bestimmtes Farbmodell definieren. Beide Makros erlauben ein optionales Argument für das Farbmodell, welches dann den Parameter nicht als Namen, sondern durch Komma getrennte Farbwerte erwartet. \color [Modell] {Spezifikation} \textcolor [Modell] {Spezifikation}{Text }

Das Beispiel aus dem vorhergehenden Abschnitt kann dann alternativ auch über die explizite Festlegung der Farbanteile im jeweiligen Modell geschrieben werden.

02-01-2

Nun ist der Text grün und nun ein wenig magenta und jetzt blau und nun wieder grün.

\usepackage[noxcolor]{pstricks}% color statt xcolor Nun ist der Text \color[rgb]{0,1,0} grün und nun \textcolor[cmyk]{0,1,0,0}{ein wenig magenta} und {\color[rgb]{0,0,1}jetzt blau} und nun wieder grün.

Das folgende Beispiel benutzt Farben aus verschiedenen Modellen, sowie einige der erwähnten vordefinierten Farben.

13

ch02-ErsteSchritte.tex: (#311)

herbert

2

Erste Schritte

\usepackage{pstricks}% laedt xcolor

– magenta cmyk und schwarz – vordefiniertes blau grauer Text

02-01-3

-- \textcolor[cmyk]{0,1,0,0}{magenta cmyk} und schwarz\\ -- \color[gray]{0.2}% \textcolor{blue}{vordefiniertes blau} grauer Text

Grundsätzlich gilt zu beachten, dass die Verwendung von Farben in bestimmten Modellen nicht unbedingt dem Austausch von Dokumenten förderlich ist; das Endergebnis in PSoder PDF-Form hängt stark von den verwendeten Treibern ab. Die sichere Variante ist die Definition eigener Farben innerhalb der Präambel und anschließende Anwendung nur über den Farbnamen.

Definieren von Farben Die Farben black, white, red, green, blue, cyan, magenta und yellow sollten von jedem beliebigen Treiber definiert werden, sodass der Anwender sie direkt über ihre Namen benutzen können sollte. In der Regel definieren Pakete noch weitere Farben über die man sich in der entsprechenden Dokumentation informieren kann. Mit xcolor stehen mehrere Makros für weitere Farbdefinitionen zur Verfügung: \providecolor [Typ] {Name}{Modell }{Farbspezifikation} \providecolorset [Typ] {Modell }{Präfix }{Suffix }{Setspezifikation} \definecolor [Typ] {Name}{Modell }{Farbspezifikation} \colorlet{Name} [num Modell] {Farbe} \definecolorset [Typ] {Modell }{Präfix }{Suffix }{Setspezifikation} \definecolorseries{Name}{Basismodell } [Methode] {b-Modell } {b-Spezif.} [s-Modell] {s-Spezif.}

Weiterhin definiert xcolor die in PS als current color bezeichnete aktuelle Farbe durch den Punkt, auf den in derselben Weise zugegriffen werden kann, wie über normale Farbnamen. Im folgenden Beispiel wird mehrere Male hintereinander die Farbe auf 80 % (\color{.!80}) ihres aktuellen Wertes verändert, was letztlich zur Farbe Weiß führen würde. Die folgende \colorbox wiederum benutzt die komplementäre aktuelle Farbe (-.) für den Hintergrund um den Index \iCol lesbar zu gestalten.

1 2 3 4 5 6 7 8 9 10 11

\usepackage{pstricks,multido} 02-01-4

\newcommand\CBox[1]{% \color{.!80}\colorbox{.}{{\color{-.}#1}}} \multido{\iCol=1+1}{11}{\CBox{\strut\large\iCol}}

Im Gegensatz zu Makronamen dürfen Farbnamen ohne weiteres Ziffern enthalten, was insbesondere für Farbnamen wie Grau30 hilfreich sein kann. xcolor erlaubt weitere Zeichen, wovon man allerdings keinen Gebrauch machen sollte, um für andere Pakete oder zukünftige Entwicklungen kompatibel zu bleiben.

14

ch02-ErsteSchritte.tex: (#311)

herbert

2.1

Farben

Die Wirkungsweise der beiden Makros \providecolor und \providecolorseries ist analog zum bekannten LATEX Makro \providecommand . Wenn eine Farbe oder eine Farbserie bereits unter dem angegebenen Namen existiert, erfolgt keine Neudefiniton, womit ein Überschreiben verhindert werden kann. \definecolor{MyOrange}{cmyk}{0,0.42,1,0} \definecolor[named]{Blue}{rgb}{0,0,0.8} \providecolor{MyGrey}{gray}{0.75} \definecolor{MyBlack}{named}{Black} \colorlet{MyRGBO}[rgb]{MyOrange}

Mit der Definition obiger Farben stehen MyOrange, Blue, MyGrey, MyBlack und MyRGBO allgemein zur Verfügung und können zusätzlich zu den vordefinierten benutzt werden, wie im folgenden Beispiel zu sehen ist, welches über die Paketoptionen dvipsnames und prologue die zusätzlichen Farbnamen des dvips Programms verfügbar macht. \colorlet benutzt die vorher im CMYK-Farbmodell definierte Farbe MyOrange als Grundlage. Dazu wird diese in das RGB-Modell umgerechnet und dann als MyRGBO bezeichnet. 02-01-5

\usepackage[dvipsnames,prologue]{xcolor} \definecolor{MyOrange}{cmyk}{0,0.42,1,0} \definecolor[named]{Blue}{rgb}{0,0,0.8} \definecolor{MyGrey}{gray}{0.75} \definecolor{MyBlack}{named}{Black} \colorlet{MyRGBO}[rgb]{MyOrange} \newcommand*\col[1]{\color{#1}\rule{3cm}{5mm}} {\col{MyOrange}}\\{\col{Blue}}\\ {\col{MyGrey}}\\{\col{MyBlack}}\\{\col{MyRGBO}}

Im Zusammenhang mit PSTricks würde man die Optionen erst dem Paket pstricks übergeben, welches dann diese an xcolor weiterreicht, wobei die Option table nur bei farbigen Tabellen notwendig ist, wie beispielsweise in Tabelle 2.4 und 2.5 auf Seite 12. \usepackage[dvipsnames,prologue,table]{pstricks}

Farbserien (colorsets) sind immer dann hilfreich, wenn man Farbverläufe anwenden möchte. xcolor unterstützt die Definition derartiger Serien mit drei Makros, wobei zwei nichts weiter als eine erweiterte Version von \definecolor sind. \definecolorset{rgb}{}{}{red,1,0,0;green,0,1,0;blue,0,0,1} \providecolorset{rgb}{}{H}{red,0.5,0,0;green,0,0.5,0;blue,0,0,0.5}

Das erste Beispiel definiert die drei RGB-Basisfarben und das zweite drei neue Basisfarben mit dem Suffix H : redH , greenH und blueH . \providecolorset hätte man auch durch \definecolorset ersetzen können, denn es existierten noch keine entsprechenden Farbnamen. Umgekehrt wäre das nicht möglich gewesen, denn die drei RGB-Basisfarben red, green und blue sind sowohl durch PSTricks als auch xcolor bereits definiert. \usepackage{xcolor} \definecolorset{rgb}{}{}{red,1,0,0;green,0,1,0;blue,0,0,1} \providecolorset{rgb}{}{H}{red,0.5,0,0;green,0,0.5,0;blue,0,0,0.5} \newcommand*\col[1]{\color{#1}\rule{3cm}{5mm}}

15

ch02-ErsteSchritte.tex: (#311)

herbert

2

Erste Schritte

{\col{red}}\\ {\col{redH}}\\

{\col{green}}\\ {\col{greenH}}\\

{\col{blue}}\\[4pt] {\col{blueH}}

02-01-6

Eine ganze Farbserie lässt sich mit \definecolorseries festlegen, wobei der Anwender sowohl Farbanfang und Farbende als auch die Anzahl der Zwischenschritte vorgeben kann, beispielsweise eine Serie von Schwarz nach Weiß in 200 Schritten: \definecolorseries{testA}{rgb}{last}{black}{white} \resetcolorseries[200]{testA}% defines the series with 200 colors

Mit dem Makro \definecolorseries wird diese Serie »logisch« definiert, während \resetcolorseries dies erst »physikalisch« durchführt, indem es die Zwischenschritte berechnet und alle Teilfarben intern in einer Art Feld definiert. Dabei kann man jederzeit auf einzelne Farben des Feldes zugreifen: \testA!![Index ] \usepackage{xcolor,multido} \definecolorseries{testB}{rgb}{step}[rgb]{% 0.95,0.85,0.55}{0.17,0.47,0.37} \resetcolorseries[200]{testB} \definecolorseries{testA}{rgb}{last}{black}{white} \resetcolorseries[200]{testA}% 200 Farbschritte \linethickness{0.004\linewidth} \multido{\nC=1+1}{200}{\hspace{0.004\linewidth}% \color{testA!![\nC]}\line(0,1){40}}\\[5pt] \multido{\nC=1+1}{200}{\hspace{0.004\linewidth}% \color{testB!![\nC]}\line(0,1){40}}

Wie die Zwischenwerte berechnet werden, hängt von der gewählten Methode ab: . {b-Modell }{b-Spezif.} Angabe der ersten Farbe. . {s-Modell }{s-Spezif.} Berechnung der Zwischenschritte in Abhängigkeit von method: – step, grad: Das optionale Argument ist bedeutungslos und {s-Spezif.} ist ein Vektor, dessen Dimension durch {Basismodell } festgelegt ist, beispielsweise [hsb]{0.1,-0.2,0.3}. – last: Angabe der letzten Farbe, beispielsweise [rgb]{0.1,0.5,0.5}. Wie die Berechnung der Zwischenschritte genau erfolgt, kann der Dokumentation zu xcolor entnommen werden. [41] Die einfachste Methode eine Farbserie zu definieren ergibt sich bei Verwendung der last-Option, wie es auch in den folgenden beiden Beispielen gezeigt wird. Das erste bezieht sich auf das CMYK und das zweite auf das HSB-Modell. 16

ch02-ErsteSchritte.tex: (#311)

herbert

02-01-7

2.1

Farben

\usepackage{xcolor,multido} \definecolorseries{testC}{cmyk}{last}{white}[cmyk]{1,0,0,0} \resetcolorseries[10]{testC} \definecolorseries{testM}{cmyk}{last}{white}[cmyk]{0,1,0,0} \resetcolorseries[10]{testM} \definecolorseries{testY}{cmyk}{last}{white}[cmyk]{0,0,1,0} \resetcolorseries[10]{testY} \definecolorseries{testK}{cmyk}{last}{white}[cmyk]{0,0,0,1} \resetcolorseries[10]{testK} \setlength{\fboxsep}{2mm} \makebox[30mm][l]{cyan (C):}% \multido{\nColr=0+1}{10}{\colorbox{testC!![\nColr]}{\strut0.\nColr}}\\ \makebox[30mm][l]{magenta (M):}% \multido{\nColr=0+1}{10}{\colorbox{testM!![\nColr]}{\strut0.\nColr}}\\ \makebox[30mm][l]{yellow (Y):}% \multido{\nColr=0+1}{10}{\colorbox{testY!![\nColr]}{\strut0.\nColr}}\\ \makebox[30mm][l]{black (K):}% \multido{\nColr=0+1}{10}{\colorbox{testK!![\nColr]}{\strut0.\nColr}}

02-01-8

cyan (C):

0.0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

magenta (M):

0.0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

yellow (Y):

0.0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

black (K):

0.0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

\usepackage{xcolor,multido} \definecolorseries{testH}{hsb}{last}[hsb]{0,1,1}[hsb]{1,1,1} \resetcolorseries[10]{testH} \definecolorseries{testS}{hsb}{last}[hsb]{.1,0,1}[hsb]{.1,1,1} \resetcolorseries[10]{testS} \definecolorseries{testB}{hsb}{last}[hsb]{1,1,0}[hsb]{1,1,1} \resetcolorseries[10]{testB} \setlength{\fboxsep}{2mm} \makebox[30mm][l]{Hue (H):}% \multido{\nColr=0+1}{10}{\colorbox{testH!![\nColr]}{\strut0.\nColr}}\\ \makebox[30mm][l]{Saturation (S):}% \multido{\nColr=0+1}{10}{\colorbox{testS!![\nColr]}{\strut0.\nColr}}\\ \makebox[30mm][l]{Brightness (B):}% \multido{\nColr=0+1}{10}{\colorbox{testB!![\nColr]}{\strut\color{white}0.\nColr}}\\

02-01-9

Hue (H):

0.0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Saturation (S):

0.0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Brightness (B):

0.0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9 17

ch02-ErsteSchritte.tex: (#311)

herbert

2

Erste Schritte



Zwischen der Definition einer Farbserie und einer einzelnen Farbe gibt es einen wesentlichen Unterschied: \definecolor wirkt grundsätzlich lokal zur Gruppe und \definecolorseries grundsätzlich global. Farbspezifikation Der eigentliche Vorteil von xcolor gegenüber dem alten color Paket wird offensichtlich, wenn man die vielfältigen Möglichkeiten der Farbspezifikation bei xcolor betrachtet. . »specification by name«, wobei die aktuelle Farbe den Punkt (.) als »Namen« hat. . »specification by expression« mit der Syntax: PräfixName!Wert1!Name1! . . . !WertN !NameN Suffix Präfix Ist dieses ein Minuszeichen (»−«), dann erfolgt vor Anwendung eine Umwandlung in die Komplementärfarbe. Name Modell- und Farbparameter von Name bilden eine temporäre Farbe \temp. Wert1!Name1 Die neue Farbe ergibt sich aus Wert1 % der Farbe temp und (100-Wert1) % von der Farbe Name1 und wird dann wieder als neue temporäre Farbe \temp gespeichert. Dieser Schritt wird für alle weiteren !Wert!Name wiederholt. Ist ein Suffix definiert, dann ist die temporäre Farbe die zur Farbserie Name korrespondierende. Suffix Kann eine der Formen !!+, !!++, !!+++, usw. annehmen. Die Anzahl der Pluszeichen (+) bezieht sich auf die zugrundeliegende Farbserie. Tabelle 2.6 auf der nächsten Seite zeigt einige Beispiele für Farbausdrücke und ihren äquivalenten Ausdruck als RGB-Code. Die zweite Hälfte der Tabelle zeigt die Anwendung der komplementären Farben, die jeweils zu denen der ersten Hälfte addiert werden. Farbe plus Komplementärfarbe addiert, ergibt bekanntlich Weiß mit dem RGB-Wert »1 1 1«. Wenn nur noch eine Farbe übrig ist, wird die letzte folgendermaßen berechnet: ~c = (1 − p) · ~e + p · (x, y, z)

(2.1)

wobei p der numerische Prozentwert ist, ~e der Einheitsvektor und (x, y, z) das gegebene RGB-Tripel. Für red!75 erhält man dann ~c = (1 − 0.75) ·~e + 0.75 · (1, 0, 0) = (1, 0.25, 0.25), was allgemein als 75 % von red bezeichnet wird. Die dritte Tabellenzeile mit dem Farbausdruck red!75!blue!100 wird zu einem Farbvektor aus der Addition von ~c = 0.75(1, 0, 0) + (1 − 0.75)(0, 0, 1) = (0.75, 0, 0.25). Oder mit anderen Worten: 75 % von red und 25 % von blue. Ein Wert von 100 ändert nicht die Farbe, denn daraus folgt die Vektoraddition ~c = 1 · (x1 , y1 , z1 ) + 0 · (x2 , y2 , z2 ) = (x1 , y1 , z1 ). Zum besseren Verständnis soll noch einmal ausführlich die Farbberechnung der vierten Zeile aus Tabelle 2.6 gezeigt werden.

(red!75!blue) = 0.75(1, 0, 0) + (1 − 0.75)(0, 0, 1) = 0.75, 0, 0.25 = ~ctemp

(0.75, 0, 0.25)!40 = (1 − 0.4)~e + 0.4 · (0.75, 0, 0.25)

(2.2) (2.3) (2.4)

= 0.6~e + (0.3, 0, 0.1)

(2.5)

= (0.9, 0.6, 0.7) = ~c

(2.6)

18

ch02-ErsteSchritte.tex: (#311)

herbert

2.1

Farbausdruck

Farben

Tabelle 2.6: Farbausdrücke und ihr entsprechendes RGB-Tripel.

RGB-Tripel

red

1

0

0

red!75

1

0.25

0.25

red!75!blue!100

0.75

0

0.25

red!75!blue!40

0.9

0.6

0.7

red!75!blue!40!yellow!50

0.95

0.8

0.55

-red

0

1

1

-red!75

0

0.75

0.75

-red!75!blue!100

0.25

1

0.75

-red!75!blue!40

0.1

0.4

0.3

-red!75!blue!40!yellow!50

0.05

0.2

0.45

Das folgende Beispiel zeigt eine Anwendung der Farbausdrücke innerhalb von PSTricks und Tabelle 2.7 zeigt weitere Beispiele bei Anwendung des \fcolorbox Makros, beispielsweise für die letzte Zeile: \fcolorbox{black}{-red!75!green!50!blue!25!gray}{\phantom{aa}} \usepackage{pstricks} 02-01-10

PSTPSTPST

\psframebox[linecolor={red!70!green}, fillcolor=yellow!90!cyan, fillstyle=solid, doubleline=true,doublesep=5pt,framesep=10pt, doublecolor=-yellow!90!cyan]{% \Large PST\textcolor{% red!72.75}{PST}\color{-green}PST}

Tabelle 2.7: Beispiele für Farbausdrücke. red red!75 red!75!green red!75!green!50 red!75!green!50!blue red!75!green!50!blue!25 red!75!green!50!blue!25!gray

-red -red! -red!75!green -red!75!green!50 -red!75!green!50!blue -red!75!green!50!blue!25 -red!75!green!50!blue!25!gray

Zusätzlich zu den »normalen« Farbausdrücken, kennt xcolor noch die »erweiterten« Farbausdrücke, die sich an einer Farbmischung orientieren: core model,suml:expr1,fac1;expr2,fac2; . . . ;exprN ,facN Jede Farbe in dem Ausdruck enthält einen Faktor, der die Gewichtung der Farbe darstellt. Für eine derartige erweiterte Farbdefinition wird jede Farbe k in das Basismodell

19

ch02-ErsteSchritte.tex: (#311)

herbert

2

Erste Schritte

umgerechnet und danach mit dem Faktor multipliziert: deci , n P faci

mit

i ∈ [1; n]

(2.7)

i=0

Tabelle 2.8 zeigt ähnlich zu Tabelle 2.7 einige Beispiele zu den möglichen Farbausdrücken. Tabelle 2.8: Beispiele für erweiterte Farbausdrücke. red rgb:red,1;white,2 rgb:red,5;green,2;yellow,10 rgb,11:red,5;green,2;cyan,1

-red cmyk:red,2;white,2 cmyk:red,5;green,2;yellow,10 cmyk,11:red,5;cyan,2;cyan,1

Anwendung vordefinierter Farben (»named colors«) Die so genannten »named colors«, die der zugrundeliegende Farbtreiber, beispielsweise dvips zur Verfügung stellt, erlauben eine vereinfachte Anwendung bei der Neudefinition von Farben: \color[named ]{SpringGreen} wählt die vordefinierte Farbe SpringGreen. Alternativ kann auch eine neue Farbe mit gleicher Eigenschaft definiert werden; dann braucht die Option named nicht jedes Mal angegeben zu werden. Formal wird nichts anderes als ein Aliasname für diese Farbe erzeugt, beispielsweise: \definecolor{MyGreen}{named}{SpringGreen}

Danach kann einfach \color{MyGreen} verwendet werden. Sämtliche »named colors« können über die Paketoption angefordert werden, womit automatisch vom Paket entsprechende Farben definiert werden. Allerdings muss dem xcolor-Paket noch gesagt werden, dass es die so genannte Headerdatei xcolor.pro mit in die PS-Ausgabe schreiben soll, falls man mit dvips arbeitet. Dies kann über die Paketoption prologue erreicht werden. Eine Zusammenstellung der verfügbaren Farbnamen für das dvipsnames- als auch das svgnames-Farbmodell zeigen die Tabellen 35.5 und 35.6 auf Seite 820. Farben in Boxen Farbdefinitionen, die innerhalb einer \savebox erfolgen, werden grundsätzlich beim Schreiben in die Box ebenfalls in dieser gespeichert und sind somit lokal und können nicht mehr von außen überschrieben werden. \usepackage{xcolor} \newsavebox{\X} \sbox{\X}{[Schwarz] und \color[cmyk]{0,0.6,0.8,0}[Orange]} Start mit \usebox{\X}, und zurück zu Schwarz.\\ \color{green}Start mit Grün, siehe \usebox{\X} und wieder Grün.

Start mit [Schwarz] und [Orange], und zurück zu Schwarz. Start mit Grün, siehe [Schwarz] und [Orange] und wieder Grün.

20

ch02-ErsteSchritte.tex: (#311)

herbert

02-01-11

2.1

Farben

Es kommt immer wieder zu Problemen, wenn derartige Boxen mit Plain TEX weiterverarbeitet werden. Man befindet sich immer auf der sicheren Seite, wenn ausschließlich LATEX-Makros verwendet werden. Die Probleme werden eingehend in [73] und [65] besprochen.

2.1.2 Seitenhintergrundfarbe \pagecolor{Name}

Die Hintergrundfarbe der gesamten Seite kann mit \pagecolor verändert werden, wobei dieselbe Syntax wie bei \color verwendet wird. Sowohl die aktuelle als auch alle folgenden Seiten werden auf die angegebene Hintergrundfarbe gesetzt, wobei diese Definition grundsätzlich global wirkt und somit innerhalb einer minipage oder Gruppe keinen Sinn macht.

2.1.3 Boxhintergrundfarbe Analog zum bekannten Makro \fbox existieren zwei Makros zum Setzen der Hintergrundfarbe von Boxen, wobei \fcolorbox zusätzlich das Setzen der Rahmenfarbe ermöglicht. \colorbox{Hintergrundfarbe}{Text } \fcolorbox{Rahmenfarbe}{Hintergrundfarbe}{Text }

\usepackage{xcolor} \definecolor{Light}{gray}{.80}

\definecolor{Dark}{gray}{.20}

\colorbox{red}{Schwarz auf Rot}\hfill% \fcolorbox{red}{cyan}{Black -- Text, cyan -- Hintergrund, red -- Rahmen}\\ \colorbox{Light}{\textcolor{Dark}{Heller Hintergrund}}\hfill% \fcolorbox{red}{cyan}{\color{white}White -- Text, cyan -- Hintergrund, red -- Rahmen}\\ \colorbox{Dark}{\textcolor{white}{Dunkler Hintergrund}}

02-01-12

Schwarz auf Rot

Black – Text, cyan – Hintergrund, red – Rahmen

Heller Hintergrund

White – Text, cyan – Hintergrund, red – Rahmen

Dunkler Hintergrund

Die weiteren Beispiele zeigen die Handhabung der \fbox-Parameter \fboxrule und \fboxsep, welche zum einen die Liniendicke und zum anderen den Abstand zwischen innerem Box-Text und Rahmen festlegen.

21

ch02-ErsteSchritte.tex: (#311)

herbert

2

Erste Schritte

\usepackage{xcolor} \setlength{\fboxsep}{10pt}\setlength{\fboxrule}{6pt} \colorbox{yellow}{Spaß mit PSTricks}\quad \fcolorbox{red}{yellow}{Spaß mit PSTricks}\\[5pt] \setlength{\fboxrule}{1pt}\colorbox{green}{Spaß mit PSTricks}\quad \fcolorbox{red}{green}{Spaß mit PSTricks}

02-01-13

Spaß mit PSTricks

Spaß mit PSTricks

Spaß mit PSTricks

Spaß mit PSTricks

2.1.4 Farbwerte bestimmen Mithilfe des xcolor-Pakets lassen sich auf einfache Art und Weise Farbwerte oder auch Farbserien bestimmen (Abschnitt 2.1.1). Möchte man beispielsweise eine Farbe analog zu einer gegebenen HTML-Seite definieren, so kann dies mit dem gleichnamigen Modell geschehen, wobei man sich die entsprechenden Werte in einem anderen Modell mithilfe von \convertcolorspec transformieren und ausgeben lassen kann. HTML-Farbe 006666 rgb : 0,0.4,0.4 cmyk: 0.4,0,0,0.6 hsb : 0.5,1,0.4

\usepackage{xcolor} 02-01-14

\definecolor{HTMLFarbe}{HTML}{006666}% #006666 \ttfamily{\color{HTMLFarbe}HTML-Farbe 006666}\\ rgb : \convertcolorspec{HTML}{006666}{rgb}\RGBFarbe \RGBFarbe\\ cmyk: \convertcolorspec{HTML}{006666}{cmyk}\RGBFarbe\RGBFarbe\\ hsb : \convertcolorspec{HTML}{006666}{hsb}\RGBFarbe \RGBFarbe

2.1.5 xcolor und PSTricks Für die Anwendung von xcolor innerhalb von PSTricks gibt es einige Besonderheiten. Die Farbfestlegung über das optionale Argument eines Makros erfordert ein Einschließen der Farbwerte in Klammern, wenn das Farbmodell zusätzlich festgelegt wird, was im dritten Beispiel gezeigt wird. Bei fehlenden geschweiften Klammern wird das Argument nicht korrekt eingelesen und es kommt zu einer Fehlermeldung. \psset{linecolor=green!50} \psset{linecolor={[rgb]{0.5,1,0.5}}} % Klammerung beachten! \psframebox[linecolor={[rgb]{0.5,1,0.5}}]{foo}

Zusätzlich zu den in Tabelle 2.5 auf Seite 12 festgelegten Farbmodellen, existiert noch das ausschließlich PSTricks-spezifische ps, welches im eigentlichen Sinne kein Farbmodell ist, sondern die Farbwerte unbearbeitet lässt und einfach nach PS durchreicht. Dadurch lassen sich die Farbwerte auf der PS-Seite manipulieren, bevor sie angewendet werden.

22

ch02-ErsteSchritte.tex: (#311)

herbert

2.2

Parameter mit \psset setzen

\definecolor [ps] {Name}{Basismodell }{PS Code}

Die Angabe des Basismodells nimmt direkt Bezug auf den unter PS definierten Befehl wie setrgbcolor. Wird beispielsweise eine »Farbe« foo definiert als \definecolor[ps]{foo}{cmyk }{bar }

so wird bei einem \psline[linecolor=foo](x3 , y3 ) von xcolor nur das Argument mit dem entsprechenden PS-Befehl durchgereicht: bar setcmykcolor. Es obliegt dem Anwender, dass er vorher bar auf der PS-Seite definiert hat. \usepackage{pstricks} \newcount\WL \unitlength.75pt \def\WaveToPS#1{% \definecolor{tmp}{wave}{#1}\extractcolorspec{tmp}\tmp \expandafter\convertcolorspec\tmp{rgb}\tmp \expandafter\WaveToPSi\tmp,} \def\WaveToPSi#1,#2,#3,{\pstVerb{/Red {#1} def /Green {#2} def /Blue {#3} def}} \pstVerb{/Corr {dup 0 gt {Gamma exp} if } def } \definecolor[ps]{lambda}{rgb}{Red Corr Green Corr Blue Corr} \begin{picture}(510,70)(310,-10)\sffamily\tiny \linethickness{1.25\unitlength}\WL=360 \pstVerb{/Gamma .8 def}\multiput(320,0)(1,0){456}{% \WaveToPS{\the\WL}{\color{lambda}\line(0,1){50}}\global\advance\WL1}% \linethickness{0.25\unitlength}\WL=360 \multiput(320,0)(20,0){23}{% \picture(0,0) \line(0,-1){5}\multiput(5,0)(5,0){3}{\line(0,-1){2.5}}% \put(0,-10){\makebox(0,0){\the\WL}}\global\advance\WL20 \endpicture}% \end{picture}

02-01-15

360

380

400

420

440

460

480

500

520

540

560

580

600

620

640

660

680

700

720

740

760

780

800

2.2 Parameter mit \psset setzen PSTricks macht zur Festlegung der Parameter bzw. Optionen intensiven Gebrauch vom »key-value«-Interface (siehe Abschnitt 13.6 auf Seite 179), was für den Anwender angenehme Erleichterungen bringt, denn er kann alle Einstellungen auch global mit dem \psset-Makro ändern. Die Syntax ist relativ einfach: \psset [Paket] {Name1=Wert1,Name2=Wert2, . . . }

Die optionale Angabe des Paketes ist nur dann zwingend, wenn verschiedene Pakete eine Option mit demselben Namen aber unterschiedlicher Bedeutung definieren. Im

23

ch02-ErsteSchritte.tex: (#311)

herbert

2

Erste Schritte

Allgemeinen sind die Paketautoren bemüht, Parameternamen so zu wählen, dass sie nicht gleichzeitig in anderen Paketen mit einer anderen Bedeutung verwendet werden. Dennoch muss sich der Anwender darum kümmern, ob dies eventuell der Fall sein könnte, wenn Fehler in einem Dokument auftreten, die nicht lösbar erscheinen. Alternativ können diese Parameter auch über das optionale Argument in der für LATEX üblichen Weise übergeben werden, hier exemplarisch für \psline gezeigt: \psline [Optionen] ( . . . )( . . . )

. Parameter, die über das optionale Argument eines Makros übergeben werden, bleiben lokal, sind aber für tiefer liegende Ebenen global. . Parameter, die mit \psset gesetzt werden, sind global innerhalb der Gruppe und tiefer liegenden Ebenen. . Durch eine Gruppenbildung kann man auch mit \psset gesetzte Variablen lokal halten, womit die folgenden beiden Anweisungen identisch sind: \psline[linewidth=5pt](3,3) {\psset{linewidth=5pt}\psline(3,3)} . Historisch bedingt kennt PSTricks eine weitere Möglichkeit, Optionen anzugeben,

nämlich mit den geschweiften Klammern: \psline [Optionen] {Pfeilart } ( . . . )( . . . )

Dies trägt nicht immer zur Übersichtlichkeit bei, zumal die Angabe der Pfeilart auch über Angaben in den eckigen Klammern oder \psset erfolgen kann. Bis auf die Makros, deren Name mit \q beginnt, verfügen fast alle über eine Sternvariante, die prinzipiell einer inversen Darstellung des jeweiligen Objekts entspricht. Das Objekt wird mit der aktuellen Linienfarbe (linecolor) gefüllt, wobei folgende in Tabelle 2.9 zusammengefasste Optionen gesetzt werden: Tabelle 2.9: Auswirkungen der Sternoption bei Makros auf an- linewidth dere Optionen, beispielsweise \psframe*. fillcolor fillstyle linestyle

0pt \pslinecolor solid none

Die Existenz einer Sternversion beruht ausschließlich auf softwaretechnischen Kriterien, die völlig unabhängig von der Sinnhaftigkeit sind. So existieren von mehreren Makros Sternversionen, die faktisch bedeutungslos sind, beispielsweise \psline*.

2.3 Maßstäbe und Längen 2.3.1 Längen Der voreingestellte Maßstab beträgt 1cm und kann getrennt für die x- und y-Richtung mit \psset oder über die jeweilige Makrooption auch lokal verändert werden. Eine Zusammenstellung zeigt Tabelle 2.10. Der Vorteil von unit ist, dass damit auf einfache Weise eine Skalierung der gesamten pspicture-Umgebung erfolgen kann.

24

ch02-ErsteSchritte.tex: (#311)

herbert

2.3

Tabelle 2.10: Längeneinheiten Optionsname und ihre Registernamen in unit PSTricks. xunit yunit runit

Maßstäbe und Längen

Bedeutung

Voreinstellung

Längenregister

alle zusammen x-Achse y-Achse Radius (Bogenmaß)

1 cm 1 cm 1 cm 1 cm

\psunit \psxunit \psyunit \psrunit

Die Anweisung \psset{xunit=1cm, yunit=1cm, runit=1cm} ist daher per Definition iden- ~ Längeneinheit tisch zu \psset{unit=1cm} und umgekehrt entsprechend.3 Wird eine Längeneinheit vor Beginn der pspicture-Umgebung verändert, so beziehen sich auch die Koordinaten von pspicture auf diesen geänderten Maßstab! Im folgenden Beispiel ergibt sich dasselbe Ergebnis, obwohl völlig unterschiedliche Werte für die pspicture-Umgebung genommen wurden. Bei dimensionslosen Angaben ist darauf zu achten, dass sich die Werte nur dann auf die Vorgabe cm beziehen, wenn nicht zwischenzeitlich etwas anderes vereinbart wurde. Die zweite Variante hat den Vorteil, dass die Angaben für die pspicture-Umgebung und die folgenden Makros sich auf dieselben Einheiten beziehen. \usepackage{pstricks} 02-03-1

\psframebox[framesep=0pt,linestyle=dotted]{% \begin{pspicture}(2,1)% cm ist Vorgabe \psset{xunit=0.5mm,yunit=2mm} \psline{->}(40,5)\psline{->}(0,1cm)(40,0) \end{pspicture}}\\[20pt] \psset{xunit=0.5mm,yunit=2mm}% ändert die Vorgabe! \psframebox[framesep=0pt,linestyle=dotted]{% \begin{pspicture}(40,5)% Vorgabe für x und y unterschiedlich! \psline{->}(40,5)\psline{->}(0,1cm)(40,0) \end{pspicture}}

2.3.2 Winkel \degrees \degrees[Wert für Vollkreis] \radian

% identisch mit \degrees[360] % identisch mit \degrees[6.28319]

Die standardmäßige Vorgabe von 360 Grad für einen Vollkreis kann ungünstig sein, wenn man ein Tortendiagramm erstellen will, bei dem die Angaben in Prozent vorliegen. Für diesen Fall kann man die Winkeleinheit von 360 Grad auf 100 Grad ändern und ohne jegliche Umrechnung der prozentualen Werte die entsprechenden Kreisausschnitte zeichnen. Dies wird unter anderem auch für das Makro \psChart aus dem pstricks-add-Paket ausgenutzt (vergleiche Abschnitt 29.1.2 auf Seite 625). Für die Einstellung des Bogenmaßes existiert die Abkürzung \radian. 3 Die Einheit cm wurde hier willkürlich gewählt, es hätte auch jede andere zulässige sein können.

25

ch02-ErsteSchritte.tex: (#311)

herbert

2

Erste Schritte

4

5 6 7 8

b

b

3 b

b

\usepackage{pstricks}

2

b

02-03-2

b b b b b

9

b

b

10 11

\begin{pspicture}(-1.2,-1.2)(1.2,1.2) \degrees[14] \psforeach{\iA}{1,2,..,14}{% \psdot[dotscale=2](1;\iA)% \uput{6pt}[\iA](1;\iA){\iA}} \end{pspicture}

1 b

b

14 13

12

2.3.3 Erweiterungen PSTricks stellt die folgenden Makros bereit, mit denen Längenregister geändert werden

können. Der Vorteil gegenüber (LA)TEX ist, dass man sowohl dimensionslose als auch dimensionsbehaftete Werte eingeben kann, was grundsätzlich immer für PSTricks möglich ist. Fehlt die explizite Angabe einer Dimension, so nimmt PSTricks den aktuellen Maßstab, wobei die Einheit cm vordefiniert ist. \pssetlength{Längenregister }{Wert Einheit } \psaddtolength{Längenregister }{Wert Einheit }

2.4 Koordinaten Koordinaten treten fast ausnahmslos in Paaren (x, y ) auf und werden lediglich bei Verwendung der Pakete, die drei Dimensionen unterstützen, zu einem Tripel (x, y, z) erweitert. Ein Koordinatenpaar besteht in der Regel aus zwei Zahlenwerten, deren Einheit sich aus dem aktuellen Maßstab ergibt. Darüber hinaus kann jedoch auch eine explizite Angabe von zulässigen Einheiten erfolgen: \psline(0.1in,1)(3mm,300pt)

In diesem Beispiel wird im ersten Koordinatenpaar der x-Wert auf Inch und der y-Wert auf cm bezogen (soweit nichts anderes vereinbart wurde) und das zweite auf die dort angegebenen Einheiten. Diese »normale« Angabe von Koordinaten wird standardmäßig durch den Schalter \SpecialCoor erweitert und durch \NormalCoor zurückgesetzt. Dieser Schalter hat nur noch mehr oder weniger historische Bedeutung, denn durch die Leistungsfähigkeit der heutigen Hardware erscheint der Zeitaufwand beim Prüfen von speziellen Koordinaten mittlerweile als unerheblich. Beispiele zu den hier angegebenen Koordinatenformen findet man im Kapitel 12 auf Seite 155. \SpecialCoor % aktiviert spezielle Koordinatenformen (Vorgabe) \NormalCoor % nur (x,y) Zahlenpaare sind zulässig

2.5 pspicture–Umgebung \usepackage{pstricks} In der Regel wird man seine PSTricks-Grafik in einer eigenen Box darstellen und nicht unbedingt über den laufenden Text schreiben wollen, was grundsätzlich möglich ist und

26

ch02-ErsteSchritte.tex: (#311)

herbert

2.5

pspicture–Umgebung

jetzt hier rein exemplarisch anhand der gestrichelten Linie gezeigt wird, die einfach mitten im Text erscheint. \psline[linestyle=dashed,linecolor=red]{|-|}(0,1.5)

02-05-1

In der Regel wird man seine PSTricks-Grafik in einer eigenen Box darstellen und nicht unbedingt über den laufenden Text schreiben wollen, was grundsätzlich möglich ist und jetzt hier rein exemplarisch anhand der gestrichelten Linie gezeigt wird, die einfach mitten im Text erscheint.

Soll das Überschreiben vermieden werden, so muss der notwendige Platz reserviert werden, wozu PSTricks die pspicture-Umgebung mit folgender Syntax bereitstellt:

\pspicture * [Optionen] (xMin,yMin)(xMax,yMax ) . . . \endpspicture \pspicture * [Optionen] (xMax,yMax ) . . . \endpspicture \begin{pspicture * } [Optionen] (xMin,yMin)(xMax,yMax ) . . . \end{pspicture * } \begin{pspicture * } [Optionen] (xMax,yMax ) . . . \end{pspicture * }

\usepackage{pstricks,pst-plot} \raggedright Die reservierte Box ist per Definition mit ihrer unteren Seite auf der Grundlinie der Zeile angeordnet, was man hier leicht an dieser \psframebox[framesep=0]{% \begin{pspicture}(-1,-0.5)(1.5,1) \psaxes[labels=none]{->}(0,0)(-1,-0.5)(1.5,1) \end{pspicture}} erkennen kann, deren \emph{interner} Ursprung jedoch ganz woanders liegen kann, auch außerhalb der Box. In diesem Beispiel bei \Largrfix{1,0.5}, gemessenen von der linken unteren Ecke der Box.

02-05-2

Die reservierte Box ist per Definition mit ihrer unteren Seite auf der Grundlinie der

Zeile angeordnet, was man hier leicht an dieser erkennen kann, deren interner Ursprung jedoch ganz woanders liegen kann, auch außerhalb der Box. In diesem Beispiel bei (1,0.5), gemessenen von der linken unteren Ecke der Box.

Der Rahmen und die Achsen sind hier zusätzlich gezeichnet worden, sie haben prinzipiell nichts mit der pspicture-Umgebung zu tun (\psframebox⇒ Abschnitt 10.2.1 auf Seite 127, \psaxes⇒ Abschnitt 14.1 auf Seite 184). Es ist offensichtlich, dass der Einsatz von pspicture in der Regel als eigenständiger Absatz erfolgen wird, denn innerhalb einer Zeile macht sich dies durch einen ungünstigen Zeilenabstand bemerkbar. Eine durch die pspicture-Umgebung festgelegte Box hat per Definition keine Tiefe und ist prinzipiell nichts anderes als ein Platzhalter. Es obliegt einzig und allein dem Anwender, dafür Sorge zu tragen, dass der durch die Koordinaten angeforderte Platz auch die Grafik aufnehmen kann. Wendet man obiges Beispiel auf falsche Koordinatenwerte an, so ist der reservierte Platz entweder zu klein (Grafik liegt partiell über dem Text) oder zu groß (es ensteht

27

ch02-ErsteSchritte.tex: (#311)

herbert

2

Erste Schritte

unnötiger weißer Rand). Ersteres ist im Folgenden der Fall, denn der angeforderte Platz der Größe (-1,-0.5)(1.5,1) ist zu viel klein für das Koordinatenkreuz (-1,-1)(2,2). \usepackage{pstricks,pst-plot} \raggedright Die reservierte Box ist per Definition mit ihrer unteren Seite auf der Grundlinie der Zeile angeordnet, was man hier leicht an dieser \psframebox[framesep=0]{% \begin{pspicture}(-1,-0.5)(1.5,1) \psaxes[labels=none]{->}(0,0)(-1,-1)(2,2) \end{pspicture}} erkennen kann, deren \emph{interner} Ursprung jedoch ganz woanders liegen kann, auch außerhalb der Box. In diesem Beispiel bei \Largrfix{1,0.5}, gemessenen von der linken unteren Ecke der Box.

02-05-3

Die reservierte Box ist per Definition mit ihrer unteren Seite auf der Grundlinie der

Zeile angeordnet, was man hier leicht an dieser erkennen kann, deren interner Ursprung jedoch ganz woanders liegen kann, auch außerhalb der Box. In diesem Beispiel bei (1,0.5), gemessenen von der linken unteren Ecke der Box.

. Wird nur ein Zahlenpaar angegeben, erfolgt automatisch eine Ergänzung zu (0,0)(xMax,yMax). PSTricks überprüft nicht, ob die Kombination der einzelnen Werte sinnvoll ist oder nicht. . Wird keine Längeneinheit angegeben, so bezieht sich die Angabe entweder auf cm oder den letzten mit \psset{[x|y]unit=Wert } gesetzten Wert, wobei für [x|y]unit unterschiedliche Werte möglich sind. . Die Koordinaten geben nur den für TEX sichtbaren reservierten Platz an; sie haben sonst keine Auswirkung auf die Ausgabe, die auch hier außerhalb dieses Platzes liegen kann. . Die Sternversion löscht alles außerhalb der durch die Koordinaten vorgegebenen Grenzen (Clipping) und benutzt dazu \pstVerb und \pstverbscale (siehe auch Abschnitt 13.2.5 auf Seite 166) Insbesondere der letzte Fall läßt sich vorteilhaft bei der Berechnung und Darstellung mathematischer Funktionen anwenden, da man in diesen Fällen dann nicht genaue Kenntnis über die maximal zu erwartenden Werte haben muss. Die Koordinaten der pspicture-Umgebung haben für TEX und PS eine unterschiedliche  Bedeutung; für TEX legen sie nur die Größe der Box fest, wobei die linke, untere Ecke der Box auf der Basislinie liegt. Für PS kennzeichnen die Koordinaten, wo der Koordinatenursprung liegt, ausgehend vom linken, unteren Eckpunkt. Dabei gilt es zu beachten, dass es keine »Kommunikation« zwischen TEX und PS gibt. Der Anwender muss dafür Sorge tragen, dass PS sämtliche Informationen bekommt, um die Grafik im Sinne des Anwenders zu erstellen.

28

ch02-ErsteSchritte.tex: (#311)

herbert

2.5

pspicture–Umgebung

PS orientiert sich ausnahmslos am aktuellen Punkt, der gleichzeitig dem Koordinatenursprung entspricht, wenn man auf die pspicture-Umgebung verzichtet. Daher bleibt im folgenden Beispiel auch das Makro \psframebox ohne Wirkung, denn es bezieht sich auf die TEX-Box, die ohne eine Platzreservierung sowohl in der Breite als auch der Höhe gleich Null ist. \usepackage{pstricks,pst-plot} \raggedright Ohne einen reservierten Platz durch eine entsprechende \TeX-Box ist per Definition der aktuelle Punkt der Koordinatenursprung für PostScript und es wird komplett über den Text gezeichnet $\rightarrow$ \psframebox[framesep=0]{\psaxes[labels=none]{->}(0,0)(-1,-1)(2,2)% \psplot[linewidth=1.5pt,linecolor=black!60]{-1}{1.5}{x dup mul 0.5 sub}} denn PostScript weiß nichts von \TeX, ob dort Platz reserviert wurde oder nicht. Der aktuelle Punkt wird daher auch von PostScript nicht verändert; \TeX\ schreibt einfach weiter \ldots Dieses "‘Übermalen"’ kann man aber für sogenannte Overlays sinnvoll nutzen.

02-05-4

Ohne einen reservierten Platz durch eine entsprechende TEX-Box ist per Definition der aktuelle Punkt der Koordinatenursprung für PostScript und es wird komplett über den Text gezeichnet → denn PostScript weiß nichts von TEX, ob dort Platz reserviert wurde oder nicht. Der aktuelle Punkt wird daher auch von PostScript nicht verändert; TEX schreibt einfach weiter ...Dieses „Übermalen“ kann man aber für sogenannte Overlays sinnvoll nutzen.

2.5.1 Optionen Tabelle 2.11 zeigt die beiden Optionen, die für die pspicture-Umgebung zur Verfügung stehen. Name

Bedeutung

Voreinstellung Tabelle 2.11: Spezielle

showgrid shift

zeichne Koordinatengitter absolute vertikale Verschiebung

false

Optionen der Umgebung pspicture.

0pt

Beide Optionen stehen nur für PSTricks-Versionen ab 1.12 (13.10.2005) zur Verfügung. ~ Syntax Ein optionales Argument ausschließlich für die vertikale Verschiebung war dagegen schon immer möglich, allerdings mit anderer Syntax und auch anderer Auswirkung, was häufig zu Missverständnissen führte. Mit der Änderung wird nun die allgemein übliche Syntax der optionalen Parameter angewendet. showgrid

Bei grafischen Abbildungen wird sehr häufig ein Koordinatengitter gezeichnet, was über das Makro \psgrid möglich ist (Abschnitt 3.1). Intern ist dafür in pstricks bereits ein Stil gridstyle definiert:

29

ch02-ErsteSchritte.tex: (#311)

herbert

2

Erste Schritte

\newpsstyle{gridstyle}{subgriddiv=0,gridcolor=lightgray,griddots=10 }

Eine Beschreibung des Makros \newpsstyle findet man im Abschnitt 11.1 und für die einzelnen Optionen in Abschnitt 3.1. Diese Vorgabe lässt sich jederzeit überschreiben, sodass man das Aussehen des Koordinatengitters an eigene Wünsche anpassen kann. 1

\usepackage{pstricks}

0

\begin{pspicture}[showgrid=true](-1,0)(2,1) \end{pspicture}

02-05-5

-1

0

1

2

\usepackage{pstricks}

1

02-05-6

0 -1

0

1

2

\newpsstyle{gridstyle}{% subgriddiv=2,subgridcolor=lightgray} \begin{pspicture}[showgrid=true](-1,0)(2,1) \end{pspicture}

1

\usepackage{pstricks}

0

\newpsstyle{gridstyle}{} \begin{pspicture}[showgrid=true](-1,0)(2,1) \end{pspicture}

02-05-7

-1

0

1

2

\usepackage{pstricks} 02-05-8

\begin{pspicture}(-1,0)(2,1) \end{pspicture}% EPS ohne Bounding Box

Obiges Beispiel mit der leeren Ausgabe führt in der Regel zu einer falschen BoundingBox, da bei der Anwendung von DVIPS oder anderen Programmen grundsätzlich falsche Werte ermittelt werden; die Programme haben aufgrund der »nicht vorhandenen« Abbildungsgröße keine Anhaltspunkte für die Bestimmung. shift

Die Option shift bezeichnet den vertikalen Offset bezogen auf die Text-Basislinie (baseline), die auch der unteren Linie der gesamten pspicture-Umgebung entspricht. Der voreingestellte Wert ist 0 pt und −0.5 cm würde die Box vertikal um 0.5 cm nach unten verschieben, was sich leicht am angegebenen Beispiel nachvollziehen lässt. Absolut gesehen bleibt die Basislinie natürlich auch nicht auf derselben Höhe, denn die Zeilenhöhe muss innerhalb der Seite ebenfalls angepasst werden. Die Option entspricht prinzipiell dem LATEX-Makro \raisebox, was auch in dem letzten Beispiel dieses Abschnitts zu sehen ist. shift ist nur für die äußerste pspicture-Umgebung relevant, da geschachtelte Umgebungen bereits durch den \rput-Befehl beliebig verschoben werden können.

30

ch02-ErsteSchritte.tex: (#311)

herbert

2.5

pspicture–Umgebung

\usepackage{pstricks} \textcolor{red}{\rule{5mm}{1pt}}% \begin{pspicture}[shift=0.5cm](-0.6,-0.5)(0.6,0.75) \psframe[linecolor=blue](-0.5,-0.5)(0.6,0.75)\rput(0,0){0.5cm} \end{pspicture}\textcolor{red}{\rule{10mm}{1pt}}% \begin{pspicture}(-0.6,-0.5)(0.6,0.75) \psframe[linecolor=blue](-0.6,-0.5)(0.6,0.75)\rput(0,0){ohne} \end{pspicture}\textcolor{red}{\rule{10mm}{1pt}}% \begin{pspicture}[shift=-0.5cm](-0.6,-0.5)(0.6,0.75) \psframe[linecolor=blue](-0.6,-0.5)(0.6,0.75)\rput(0,0){-0.5cm} \end{pspicture}\textcolor{red}{\rule{10mm}{1pt}}% \begin{pspicture}[shift=*](-0.6,-0.5)(0.6,0.75) \psframe[linecolor=blue](-0.6,-0.5)(0.6,0.75)\rput(0,0){*} \end{pspicture}\textcolor{red}{\rule{10mm}{1pt}}

02-05-9

0.5cm ohne -0.5cm

*

Mit der Angabe von shift=* erfolgt eine vertikale Zentrierung der pspictureUmgebung, was einer vertikalen Verschiebung nach oben oder unten um die Hälfte der Boxhöhe entspricht. Mit dieser Option kann man das alte Verhalten von PSTricks erreichen. Um eine PSTricks-Box mit ihrer internen Nulllinie auf die gleiche Höhe wie die Baseline zu bekommen, wird einfach eine Verschiebung nach unten um den ersten y-Wert der Boxgröße vorgenommen. Dabei kann das Makro \psyunit gute Dienste leisten, da man sich dann nicht um die aktuell gültige Einheit kümmern muss. Der erste Pfeil liegt 0,3 Einheiten über der Basislinie, der zweite aufgrund der Option [shift=-0.3\psyunit] auf dieser. Alternativ hätte man auch shift=* benutzen können. \usepackage{pstricks} \rule{1cm}{.1pt}gjg\pspicture(-.25,-.3)(.25,.25) \psline{}(-.25,0)(.25,0) \endpspicture gjg\rule{1cm}{.1pt}gjg% \pspicture[shift=-0.3\psyunit](-.25,-.3)(.25,.25)\psline{}(-.25,0)(.25,0) \endpspicture gjg\rule{1cm}{.1pt}

02-05-10

gjg

gjg

gjg

gjg

Zu beachten ist, dass bei Verwendung von \fbox die Basislinie immer erhalten bleibt, sodass der Rahmen im Gegensatz zu einer Anwendung mit \raisebox unerwünschte Maße annimmt (vergleiche Beispiel 02-05-11 auf der nächsten Seite). Wird für die shiftOption keine Einheit angegeben, so wird die aktuell gültige genommen, was in der ~ shift Regel cm sind. Im folgenden Beispiel ist diese Tatsache deutlich bei den rechten beiden

31

ch02-ErsteSchritte.tex: (#311)

herbert

2

Erste Schritte

Rechtecken zu sehen. Soll eine pspicture durch Anwendung von \fbox mit einem Rahmen versehen werden, so sollte man bei einer notwendigen Verschiebung anstelle der Option shift besser \raisebox anwenden. Dann bekommt die Box eine »positive« Tiefe, wodurch der Rahmen dann ebenfalls mit verschoben wird, was ganz rechts im folgenden Beispiel deutlich zu sehen ist. \usepackage{pstricks,array} \psset{gridlabels=7pt}% Standardwert L\_\_\fbox{\begin{pspicture}(-1,-1)(1,1) \psgrid \end{pspicture}}\_\_% \fbox{\begin{pspicture}[shift=*](-1,-1)(1,1) \psgrid \end{pspicture}}\_\_% \fbox{\begin{pspicture}[shift=-2cm](-1,-1)(1,1) \psgrid \end{pspicture}}\_\_% \fbox{\begin{pspicture}[shift=1.5](-1,-1)(1,1) \psgrid \end{pspicture}}\_\_% \raisebox{0.5\height}{\fbox{\begin{pspicture}(-1,-1)(1,1) \psgrid \end{pspicture}}}\_\_R \par\medskip \begin{tabular}{@{L\_\_} *5{>{\ttfamily}p{\dimexpr2cm+2\fboxsep+2\fboxrule}@{\_\_}}@{R}} & shift=* & shift=-2cm & shift=1.5 & \textbackslash raisebox \end{tabular} 1

02-05-11 1 0 0

1 -1 -1

1

0

0

1 -1 -1

1 __

0 __

-1 L__ -1

0

__

__

0

1

__R

1 -1 -1

0

0 1 -1 -1

L__

__shift=*

0

1

__shift=-2cm __shift=1.5 __\raisebox __R

2.6 Leerraum (»Whitespace«) Innerhalb einer pspicture-Umgebung wird jeder Leerraum zwischen PSTricksObjekten entfernt. Außerhalb dieser Umgebung wird jedes Objekt wie ein einzelnes Zeichen behandelt, sodass zusätzlicher Leerraum nicht entfernt wird. Dies kann manchmal unerwünscht sein, beispielsweise innerhalb einer LATEX-Umgebung picture. In solchen Fällen kann mit \KillGlue und \DontKillGlue Leerraum ignoriert oder berücksichtigt werden (siehe dazu Abschnitt 13.2.2 auf Seite 165).

32

ch02-ErsteSchritte.tex: (#311)

herbert

K a p i t e l

3

Koordinatensystem 3.1 Grids. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 3.2 Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.3 Makros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.4 Spezialfälle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

Grundsätzlich liegt durch PS bedingt ein kartesisches Koordinatensystem zugrunde. Dabei kann man den Ursprung, der durch die Wahl der pspicture-Umgebung festgelegt wurde, für jede Anwendung beliebig lokal verschieben. Weiterhin lassen sich auch beide Achsen vertauschen, was beim Plotten von Funktionen von Interesse ist, wenn das Berechnen der Umkehrfunktion leichter möglich ist (siehe Beispiel auf der nächsten Seite). Tabelle 3.1 zeigt die Syntax dieser Optionen, welche grundsätzlich bei allen Makros anwendbar sind, sich jedoch ausschließlich auf das zugrundeliegende Koordinatensystem beziehen. Name

Werte

Vorgabe

origin

{xWert Einheit , yWert Einheit } Boolean

false

swapaxes

Tabelle 3.1: Parameter für das Koordinatensystem.

{0pt,0pt }

Erst ab einer PSTricks-Version > 1.12 wird die origin-Option in der hier angegebenen ~ Weise angewendet. Bei vorhergehenden Versionen erfolgte keine korrekte Zuordnung der Parameterwerte. Weiterhin wirkt diese Option nur bei Makros, die als PSTricksObjekte1 definiert wurden, beispielsweise \psdot. Im folgenden Beispiel ist dies auch daran zu erkennen, dass die Koordinatenbeschriftung nicht mit verschoben wird; diese erfolgt auf TEX-Ebene und ist schon deswegen von der Verschiebung ausgenommen! 1 Unter einem PSTricks-Objekt wird jedes Makro verstanden, welches intern über das Makro \pst@object definiert wird.

3

Koordinatensystem

Das folgende Beispiel zeichnet zum einen die durch die Koordinaten der pspictureUmgebung festgelegten Koordinatenachsen und eine Parabel y = (x +0.5)2 −0.5 (jeweils durchgezogene Linien) und zum anderen beide Makros noch einmal mit der zusätzlichen Option origin={0.25,-0.5}, aber ohne Änderung der anderen Werte (jeweils gestrichelte Linien). Bezogen auf das Hauptkoordinatensystem verschiebt sich der Ursprung des gestrichelten Systems von (0; 0) nach (0.25; −0.5). \usepackage{pst-plot} 03-00-1

\begin{pspicture}(-1,-1)(2,2) \psaxes{->}(0,0)(-1,-1)(2,2) \psparabola[linewidth=1.5pt](1,2)(-0.5,-0.5) \psset{linestyle=dashed} \psparabola[origin={0.25,-0.5}](1,2)(-0.5,-0.5) \psaxes[origin={0.25,-0.5}, linewidth=0.2pt]{->}(0,0)(-1,-1)(2,2) \end{pspicture}

1

−1

1 −1

Prinzipielle Bedeutung kommt hier nur der Option swapaxes zu, denn PS verfügt lediglich über eine trigonometrische Umkehrfunktion, den Arcus Tangens (atan). Alle anderen Umkehrfunktionen müssen über den Tangens definiert werden. Im folgenden Beispiel wird dagegen die swapaxes-Option benutzt, um auf einfache Weise die Funktion y = arccos x darzustellen, indem einfach die Kosinus-Funktion mit vertauschten Achsen gezeichnet wird. Dadurch braucht man keine mathematischen Umrechnungen vorzunehmen; es ist lediglich auf das vorzugebende Intervall zu achten. Das relativ neue PSTricks-Paket pst-math2 bietet Unterstützung für mathematische Funktionen, für die in PS keine direkte Entsprechung existiert. [38] \usepackage{pst-plot}

y

03-00-2

f (x) = arccosx

2 b

b b b

1

b b b b b bbbbbbbbbb bbb

0.5 1.0 bbbb

−1.0 −0.5 −1

bbb

bbb

bbb

bb

bb

bb bb b bb bb bb b bb bb bb bb b bb b bb b bb b

bb bb b

bb

−2 b

bb

bb bb bb b bb b bb bbb bbb b bb bbbb bbbbb bbbbbbb

−3

x

\psset{xunit=1.5,yunit=0.75,plotpoints=200, plotstyle=dots} \begin{pspicture}(-1.1,-3.5)(1.2,3.1) \psaxes[Dx=0.5]{->}(0,0)(-1,-3.5)(1.2,3)% [$x$,0][$y$,0] \rput[l](0.2,2){$f(x)=\arccos x$} \psset{yunit=1.5cm,xunit=.75cm,swapaxes=true} \psplot[linecolor=red]{-3.1415}{0}% {x RadtoDeg cos} \psplot[plotstyle=dots,plotpoints=10]% {0}{1.5707}{x RadtoDeg cos} \end{pspicture}

3.1 Grids PSTricks bietet eine Vielzahl an Möglichkeiten, um verschiedenste kartesische Koor-

dinatenraster zu erstellen. Daraus folgt dann aber gleich eine relativ große Zahl an 2 Siehe auch Abschnitt 27.1 auf Seite 559.

34

ch03-KOSystem.tex: (#311)

herbert

3.2

Parameter

Parametern, die man entsprechend einstellen kann. Weitere Möglichkeiten enthält das Paket pst-plot, insbesondere was logarithmische Achseneinteilungen und dezimale Beschriftungen betrifft. Das Erstellen der Gitter kann automatisiert werden, falls alle Abbildungen bezüglich des Gitters identisch sind. Die Funktionsweise der Option showgrid wurde bereits in Abschnitt 2.5.1 auf Seite 29 erläutert. Man erhält damit dasselbe Verhalten, wenn die im Folgenden gezeigten Optionen jeweils als neuer Gitterstil definiert werden; \psset wird faktisch nur durch \newpsstyle{gridstyle} ersetzt.

3.2 Parameter Tabelle 3.2 zeigt sämtliche Parameter, die in direktem Zusammenhang mit \psgrid stehen. In den folgenden Beispielen wird immer von der Grundeinstellung aller Parameter Name

Werte

Vorgabe Tabelle 3.2: Zusammenfassung aller Parame-

gridwidth

Wert Einheit Farbe Wert Wert Einheit Farbe Wert Wert Einheit Farbe Wert

0.8pt

gridcolor griddots gridlabels gridlabelcolor subgriddiv subgridwidth subgridcolor subgriddots

ter für \psgrid.

black 0 10pt black 5 0.4pt gray 0

ausgegangen, weshalb auch die Label in der Regel optisch zu groß erscheinen, da aus Platzgründen hier nur kleine Gitter verwendet werden.

3.2.1 gridwidth gridwidth bestimmt die Dicke der Haupt-Gitterlinien und sollte eher zu klein als zu groß gewählt werden, dabei jedoch dicker als die Unterlinien (subgridwidth).

2

2

1

1

\usepackage{pstricks}

03-02-1

0

0 0

1

2

0

1

2

\begin{pspicture}(2,2) \psgrid% Standarddicke ist 0.8pt \end{pspicture}\qquad \begin{pspicture}(2,2) \psgrid[gridwidth=0.1pt] \end{pspicture}

3.2.2 gridcolor gridcolor bestimmt die Farbe der Haupt-Gitterlinien und kann zur Hervorhebung

benutzt werden.

35

ch03-KOSystem.tex: (#311)

herbert

3

Koordinatensystem

2

\usepackage{pstricks}

1

\begin{pspicture}(2,2) \psgrid[gridcolor=blue] \end{pspicture}

03-02-2

0 0

1

2

3.2.3 griddots griddots bestimmt die Zahl der Punkte (dots) pro Einheit, wenn statt der durchgehenden Linie eine gepunktete Haupt-Gitterlinie gezeichnet werden soll. Dies ist insbesondere dann von Interesse, wenn das Gitter an sich etwas mehr in den Hintergrund treten soll. Zu beachten ist, dass die Punkte nur zu sehen sind, wenn subgriddiv auf Null oder Eins gesetzt wird, ansonsten würden die Punkte durch die Linien des subgrid-Netzes überdeckt werden.

2

\usepackage{pstricks}

1

\begin{pspicture}(2,2) \psgrid[griddots=5,subgriddiv=0] \end{pspicture}

03-02-3

0 0

1

2

3.2.4 gridlabels gridlabels bestimmt die Schriftgröße der Label. \usepackage{pstricks}

2

03-02-4

\begin{pspicture}(2,2) \psgrid[gridlabels=5pt] \end{pspicture}

1

0 0

1

2

3.2.5 gridfont Im Gegensatz zu den Labels von \psaxes, die auf TEX-Ebene geschrieben werden, erfolgt dies für das Koordinatengitter auf PS-Ebene. Dies hat zur Folge, dass nur die PS-Fonts für die Label benutzt werden können. Standardmäßig ist dies die Schrift Helvetica, welche über die Option gridfont geändert werden kann, wobei normalerweise nur die folgenden PS-Fonts möglich sind: Helvetica (Vorgabe) – Helvetica-Narrow – Times-Roman – Courier – AvantGard-Demi – NewCenturySchlbk – Palatino-Roman – Bookman-Demi – Dingbats – Symbol

36

ch03-KOSystem.tex: (#311)

herbert

3.2

Parameter

\usepackage{pstricks} \begin{pspicture}[showgrid=true](3,2)\end{pspicture}\qquad \begin{pspicture}(3,2)\psgrid[gridfont=AvantGard-Demi]\end{pspicture}\qquad \begin{pspicture}(3,2)\psgrid[style=gridstyle,gridfont=Dingbats]\end{pspicture}

2

2



1

1



03-02-5

0

0 0

1

2

3



0

1

2

3









Zu beachten ist, dass die Namen der PostScript-Fonts je nach TEX-Installation abweichen ~ können, beispielsweise ZapfDingbats statt Dingbats.

3.2.6 gridlabelcolor gridlabelcolor bestimmt die Schriftfarbe der Label.

2

\usepackage{pstricks,pst-plot}

1

\begin{pspicture}(2,2) \psgrid[gridlabelcolor=cyan] \end{pspicture}

03-02-6

0 0

1

2

3.2.7 subgriddiv subgriddiv bestimmt die Zahl der Unterteilungen zwischen zwei ganzen Zahlen. Für

große Maßstäbe kann es angebracht sein, weitaus mehr Unterteilungen zuzulassen. Die Angaben subgriddiv=0 und subgriddiv=1 sind identisch und führen beide dazu, dass keine weiteren Linien gezeichnet werden. \usepackage{pstricks} 03-02-7

0.1

0.2

\psset{unit=10} \begin{pspicture}(0.2,0.2) \psgrid[gridlabels=0pt,subgriddiv=40] \uput[-90](0.1,0){0.1} \uput[-90](0.2,0){0.2} \end{pspicture}

Für die Berechnung der Unterteilungen wird auf die Werte von xunit und yunit zurückgegriffen. Hierbei kann es zu massiven Problemen kommen, wenn man eine sehr kleine Einheit definiert hat und dann \psgrid mit absoluten Koordinaten aufruft, beispielsweise \psgrid(10cm,10cm). Bei einem Maßstab von 1pt kommt es hier zu Schwierigkeiten,

37

ch03-KOSystem.tex: (#311)

herbert

3

Koordinatensystem

denn 1 pt bestimmt den Abstand einer Hauptteilung, sodass es davon in diesem Beispiel mit \psgrid(10cm,10cm) ungefähr 280 gibt und zusätzlich ungefähr 1400 UnterteilunMaßstab  gen. Je nach Version von PSTricks ist die maximale Zahl an Unterteilungen begrenzt, in beachten der derzeitigen Version auf 500. Das Problem kann behoben werden, indem man lokal auf einen anderen Maßstab umschaltet: \psgrid[unit=1cm](10cm,10cm). unit lokal

ändern

Im folgenden Beispiel 03-02-8 werden beide Fälle gegenübergestellt. Die Festlegung der Grundeinheit durch unit=1pt ist ein durchaus typischer Fall, wenn es darum geht, gegebene Grafiken zu beschriften, bei denen Angaben bereits in pt vorliegen. Durch \begin{pspicture}(50,50) wird daher eine Box der Größe 50 pt×50 pt reserviert. Erstellt man jetzt für diese ein Koordinatengitter mit einer zusätzlichen Unterteilung von subgriddiv=2, so ergibt sich faktisch ein schwarzes Feld. Pro Haupteinheit von 1 pt≈0,35 mm werden insgesamt drei Linien gezeichnet, was zu dem beschriebenen Effekt führt. Schaltet man jetzt lokal auf eine andere Einheit um, indem \psgrid über das optionale Argument unit=10pt vorgegeben wird, so beträgt die Haupteinheit jetzt 10 pt≈3,5 mm. Die Koordinaten müssen dann ebenfalls entsprechend korrigiert werden, 1 indem sie nur noch 10 der ursprünglichen Werte betragen oder alternativ mit der Einheit pt angegeben werden. \usepackage{pstricks} 03-02-8

\psset{unit=1pt}% Sehr kleine Grundeinheit \begin{pspicture}(50,50)% 50 Haupteinteilungen \psgrid[gridlabels=0pt,subgriddiv=2] \end{pspicture}\par\bigskip \begin{pspicture}(50,50) \psgrid[unit=10pt,% andere Einheit für psgrid gridlabels=0pt,subgriddiv=2](5,5) \end{pspicture}\quad \begin{pspicture}(50,50) \psgrid[unit=10pt,% andere Einheit für psgrid gridlabels=0pt,subgriddiv=2](50pt,50pt) \end{pspicture}

3.2.8 subgridwidth subgridwidth bestimmt die Dicke der Unter-Gitterlinien und sollte eher zu klein als zu groß gewählt werden und vor allem kleiner als die übergeordneten Hauptgitterlinien.

2

\usepackage{pstricks}

1

\begin{pspicture}(2,2) \psgrid[subgridwidth=1pt] \end{pspicture}

03-02-9

0 0

1

2

38

ch03-KOSystem.tex: (#311)

herbert

3.3

Makros

3.2.9 subgridcolor subgridcolor bestimmt die Farbe der Unter-Gitterlinien und kann zur Hervorhebung

benutzt werden. Diese sind in dem folgenden Beispiel lediglich als Graustufe wahrnehmbar. \usepackage{pstricks} 03-02-10

\definecolor{orange}{cmyk}{0,0.61,0.87,0} \begin{pspicture}(3,3) \psgrid[subgriddiv=10,gridlabels=0, gridwidth=1pt,gridcolor=orange, subgridwidth=0.1pt,subgridcolor=orange] \end{pspicture}

3.2.10 subgriddots subgriddots bestimmt die Zahl der Punkte (dots) pro Zwischeneinheit, wenn statt der

durchgehenden Linie eine gepunktete Sub-Gitterlinie gezeichnet werden soll. Dies ist insbesondere dann von Interesse, wenn das Gitter an sich etwas mehr in den Hintergrund treten soll. 2

\usepackage{pstricks}

1

\begin{pspicture}(2,2) \psgrid[griddots=10,subgriddots=3] \end{pspicture}

03-02-11

0 0

1

2

3.3 Makros Es existiert nur ein einziges Makro zum Zeichnen eines Gitternetzes. Aufgrund der zahlreichen Optionen ist eine Definition eines eigenen Makros sinnvoll. Dies kann mit dem standardmäßigen \newcommand geschehen \newcommand*\myGrid{\psgrid[subgriddiv=0,griddots=10,gridlabels=7pt]}

oder alternativ über das PSTricks-Makro \newpsobject (siehe auch Abschnitt 11.2 auf Seite 138). Beides wird im folgenden Beispiel gezeigt. 2

2

1

1

\usepackage{pstricks}

03-03-1

0

0

0

1

2

0

1

2

\newcommand*\Grid{\psgrid[subgriddiv=0, griddots=10,gridlabels=7pt]} \newpsobject{psGrid}{psgrid}{subgriddots=5, subgriddiv=2,gridlabels=5pt} \begin{pspicture}(0,-0.2)(2,2)\Grid \end{pspicture} \qquad \begin{pspicture}(0,-0.2)(2,2)\psGrid\end{pspicture}

39

ch03-KOSystem.tex: (#311)

herbert

3

Koordinatensystem

Alternativ kann auch der intern vorgegebene Stil gridstyle überschrieben werden und dann über die showgrid-Option der pspicture-Umgebung automatisch für das Zeichnen eines Gitternetzes verwendet werden (siehe Abschnitt 2.5.1 auf Seite 29). Das \psgrid-Makro ist ein mächtiges Werkzeug zum Zeichnen von Koordinatengittern. Die Syntax ist dagegen sehr einfach: \psgrid [Optionen] \psgrid [Optionen] (x,y ) \psgrid [Optionen] (x1 ,y1 )(x2 ,y2 ) \psgrid [Optionen] (x0 ,y0 )(x1 ,y1 )(x2 ,y2 )

Per Definition wird von einem kartesischen Koordinatensystem ausgegangen. . Ohne jegliche Angabe eines Punktes nimmt \psgrid die durch die pspicture Umgebung festgelegten Koordinaten. Existieren diese nicht, weil \psgrid außerhalb einer pspicture-Umgebung benutzt wird, dann wird ein 10 × 10 Koordinatengitter in dem aktuell gültigen Maßstab angenommen. Wird nur ein Koordinatenpaar angegeben, wird automatisch (0,0) als Ursprung festgelegt. Die Angabe von zwei Koordinatenpaaren legt die linke untere und die rechte obere Ecke des Koordinatengitters fest. Werden drei Koordinatenpaare angegeben, so bezeichnet das erste Paar den Schnittpunkt der Koordinatenachsen und die anderen beiden wieder die linke untere und die rechte obere Ecke des Koordinatengitters. . Die Label werden in der Regel für die horizontale Achse rechts unter und für die vertikale Achse links über den jeweiligen Punkt gesetzt. Wird die Reihenfolge der Koordinaten vertauscht, so wechselt die Beschriftung für die horizontalen Werte auf links darüber und für die vertikalen auf rechts darunter. . Das Makro \psgrid arbeitet nur mit ganzzahligen Werten für die Koordinaten, sodass ohne weitere Manipulation über die Maßstabsfaktoren das Ergebnis nicht immer den Erwartungen entspricht. Im folgenden Beispiel wird der Platz für eine Box von der Breite 3 cm und der Höhe 2,5 cm reserviert. \psgrid benötigt jedoch aufgrund der Rundungen eine Breite von 4 cm und eine Höhe von 2 cm. Dies ist unbedingt zu beachten, um Überschneidungen mit dem Textbereich zu vermeiden. 1

\usepackage{pstricks}

0

\begin{pspicture}[showgrid=true]% (-1.5,-1.25)(1.5,1.25) \end{pspicture}

03-03-2

-1 -2

-1

0

1

2

Die folgende Serie von Beispielen zeigt die verschiedenen Möglichkeiten von \psgrid. Die ständige Wiederholung von \psset{gridlabels=7pt,subgriddiv=2}

hat hier nur erklärenden Charakter, kann in einem realen Dokument natürlich global erfolgen und damit für alle Koordinatensysteme gültig sein.

40

ch03-KOSystem.tex: (#311)

herbert

3.3

Makros

\usepackage{pstricks}

2

03-03-3

\psset{gridlabels=7pt,subgriddiv=2} \begin{pspicture}(-1,-1)(2,2) \psgrid \end{pspicture}

1

0

-1 -1

0

1

2

\usepackage{pstricks}

1

03-03-4

\psset{gridlabels=7pt,subgriddiv=2} \begin{pspicture}(-1,-1)(2,2) \psgrid(2,1) \end{pspicture}

0 0

1

2

\usepackage{pstricks}

2

03-03-5

\psset{gridlabels=7pt,subgriddiv=2} \begin{pspicture}(-1,-.25)(2,2) \psgrid(1,2) \end{pspicture}

1

0 0

0

1

1

\usepackage{pstricks}

2

03-03-6

1

\psset{gridlabels=7pt,subgriddiv=2} \begin{pspicture}(-1,-.25)(2,1.25) \psgrid(2,1)(0,0) \end{pspicture}

0

0

\usepackage{pstricks}

1

03-03-7

2

\psset{gridlabels=7pt,subgriddiv=2} \begin{pspicture}(-1,-.25)(2,2) \psgrid(1,2)(0,0) \end{pspicture}

1

0

\usepackage{pstricks}

2

03-03-8

\psset{gridlabels=7pt,subgriddiv=2} \begin{pspicture}(-1,-1)(2,2) \psgrid(-1,-1)(2,2) \end{pspicture}

1

0

-1 -1

0

1

2

41

ch03-KOSystem.tex: (#311)

herbert

3

Koordinatensystem

\usepackage{pstricks}

2

03-03-9

\psset{gridlabels=7pt,subgriddiv=2} \begin{pspicture}(-1,-1)(2,2) \psgrid(0,0)(-1,-1)(2,2) \end{pspicture}

1

0 -1

0

1

2

-1

\usepackage{pstricks}

2

03-03-10

\psset{gridlabels=7pt,subgriddiv=2} \begin{pspicture}(-1,-1)(2,2) \psgrid(0,0)(2,2)(-1,-1) \end{pspicture}

1 -1

0

1

2

0

-1

3.4 Spezialfälle PSTricks erlaubt neben positiven Einheiten auch negative, was dann zu einem diagonal verschobenen Koordinatenursprung mit negativen Achsen führt:

-2

-1

0

\usepackage{pstricks}

1

03-04-1

1

\psset{subgriddiv=2,unit=-1cm} \begin{pspicture}(-1,-1)(2,2) \psgrid \end{pspicture}

0 -1 -2

Eine Anwendung von \psgrid zusammen mit \psaxes (siehe Abschnitt 14.1 auf Seite 184) ergibt eine doppelte Bezeichnung der Koordinaten, die in der Regel unerwünscht ist. Bei einem der beiden Makros ist dann über eine entsprechende Option die Ausgabe zu unterbinden. 2

\usepackage{pstricks,pst-plot}

1

\begin{pspicture}[showgrid=true](-1,-0.5)(2,2) \psaxes{->}(0,0)(-1,-0.25)(2,2) \end{pspicture}

03-04-2

1

0 -1

−1

0

1

2

1

42

ch03-KOSystem.tex: (#311)

herbert

3.4

Spezialfälle

2

\usepackage{pstricks,pst-plot}

1

\begin{pspicture}[showgrid=true](-1,-0.5)(2,2) \psaxes[labels=none]{->}(0,0)(-1,-0.25)(2,2) \end{pspicture}

03-04-3

0 -1

0

1

2

Besonders zum Überschreiben von existierenden Grafiken3 beziehungsweise Erzeugen von sogenannten Overlays, kann ein Koordinatengitter hilfreich sein, um gezielter bestimmte Positionen in der Abbildung durch Koordinaten festlegen zu können. Hier wird nur die Erzeugung der Gitterüberlagerung sowie die Anwendung unterschiedlicher Maßstäbe für pspicture und \psgrid gezeigt. Ohne die genauen Maße der skalierten Abbildung zu kennen, kann ein Koordinatengitter im cm-Maßstab über die Abbildung gelegt werden. \usepackage{pstricks,graphicx} \newsavebox\IBox

8 03-04-4

\savebox\IBox{% \includegraphics[scale=0.3]{% figures/tiger}} \psset{unit=1pt} \begin{pspicture}(\wd\IBox,\ht\IBox) \rput[lb](0,0){\usebox\IBox} \psgrid[unit=1cm,subgriddiv=5, griddots=0, subgridwidth=0.1pt, subgridcolor=black!15, gridcolor=black!50]% (\wd\IBox,\ht\IBox) \end{pspicture}

7 6 5 4 3 2 1 0 0

1

2

3

4

5

6

Unterschiedliche Einheiten für die Achsen sind möglich: \usepackage{pst-plot} 03-04-5

1

0 0

400

800

1200

1600

\psset{xunit=0.03mm,yunit=15mm} \begin{pspicture}(-0.25,-0.25)(1950,2) \psgrid[subgriddiv=0, griddots=7, gridlabels=0pt, xunit=200](9,2) \psaxes[Dx=400]{->}(1800,2) \end{pspicture}

3 Die Grafik tiger.eps steht allgemein auf CTAN zur Verfügung.

43

ch03-KOSystem.tex: (#311)

herbert

3

Koordinatensystem

10 03-04-6

9 8 7 6 5 4 3 2 1 0 0

1

2

3

4

5

6

7

8

44

ch03-KOSystem.tex: (#311)

herbert

9

10

K a p i t e l

4

Linien und Polygone 4.1 Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 4.2 \psline. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 4.3 \qline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 4.4 \pspolygon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 4.5 \psframe und \psTextFrame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 4.6 \psdiamond . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 4.7 \pstriangle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 4.8 Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

Linien stellen einen Schwerpunkt einer jeden grafischen Software dar und haben auch in PSTricks eine große Bedeutung. Entsprechend umfangreich ist auch die Zahl der möglichen Parameter, die alle in Tabelle 4.1 zusammengefasst sind und im folgenden erläutert werden.

4.1 Parameter Tabelle 4.1 enthält sämtliche Parameter, die im Zusammenhang mit Linien von Interesse sind. Ein Großteil von ihnen kann auch für nicht-linientypische Makros eingesetzt werden, beispielsweise für \pscircle. Tabelle 4.1: Zusammenfassung aller Parameter für Linien und Polygonzüge

Name

Werte

Vorgabe

linewidth

Wert Einheit Farbe none|solid|dotted|dashed Wert Einheit

black solid|symbol

linecolor linestyle symbolStep symbolWidth symbolFont

Wert Einheit PS-Font

0.8pt

20pt 10pt Dingbats

Fortsetzung . . .

4

Linien und Polygone

. . . Fortsetzung Name

Werte

Vorgabe

rotateSymbol startAngle linejoin linecap

Boolean Winkel 0|1|2 0|1|2 Wert Einheit Wert Einheit . . .

false 0 0 0

Wert Einheit Boolean Wert Einheit Farbe outer|inner|middle Pfeiltyp Boolean Wert Einheit Wert relative|absolute Winkel Wert Einheit Farbe Boolean Wert Einheit Winkel Farbe Wert 0|1|2

3pt

dash dotsep doubleline doublesep doublecolor dimen arrows showpoints linearc framearc cornersize gangle border bordercolor shadow shadowsize shadowangle shadowcolor linetype liftpen

5pt 3pt false 1.25\pslinewidth white outer false 0pt 0 relative 0 0pt white false 3pt -45 darkgray 0 0

Im Folgenden wird zu jedem der angegebenen Parameter ein Beispiel angegeben, wobei sich die Reihenfolge an Tabelle 4.1 orientiert. Eine Beschreibung der Parameter zu den Fülloptionen finden sich in Kapitel 7 auf Seite 93.

4.1.1 linewidth Grundsätzlich kann jede beliebige Liniendicke gewählt werden. Sowohl die größte als auch die kleinste Dicke orientieren sich an dem zugrundeliegenden PS-Treiber, über den TEX bzw. PS keinerlei Informationen vorliegen, sodass an dieser Stelle keine Entscheidung über Sinn oder Unsinn der Liniendicke getroffen werden kann. Variable Liniendicken sind nur für Kurvenzüge möglich (⇒ Abschnitt 5.1.4 auf Seite 67). Zu beachten ist in jedem Fall, dass es bei der PDF-Ausgabe auf dem Bildschirm Probleme mit zu dünnen Linien geben kann, denn die Bildschirmauflösung setzt hier Grenzen. Erst der Ausdruck zeigt in der Regel die korrekte Liniendicke.

46

ch04-Linien.tex: (#312)

herbert

4.1

Parameter

\usepackage{pstricks,multido}

3 04-01-1

\begin{pspicture}[showgrid](3,3) \psline[linewidth=0.01pt](0.5,3) \psline[linewidth=5pt,linecolor=red](2,3) \multido{\rA=0.0+0.25}{13}{% \psline[linewidth=\rA pt](3,\rA)} \end{pspicture}

2

1

0 0

1

2

3

4.1.2 linecolor Wie im Abschnitt 2.1 auf Seite 10 erwähnt, kennt PSTricks ohne externe Pakete bereits insgesamt 11 vordefinierte Farben, deren Zahl vom Anwender beliebig erweitert werden kann. \usepackage{pstricks}

3 04-01-2

2

1

0 0

1

2

3

\begin{pspicture}[showgrid, linewidth=1.5pt](3,3) \psline[linecolor=blue](3,1) \psline[linecolor=red](3,2) \psline[linecolor=magenta](3,2.5) \psline[linecolor=yellow](3,3) \definecolor{LColor}{rgb}{0.1,1,0.1} \psline[linecolor=LColor](1,3) \end{pspicture}

4.1.3 linestyle Dem Beispiel kann entnommen werden, dass die erste Linie mit dem Linienstil none nicht gezeichnet wird. Ein derartiges Verhalten ist insbesondere dann interessant, wenn man beispielsweise Flächen ohne eine Randlinie füllen oder Endpunkte (Knoten) einer Linie setzen will, ohne dass diese gezeichnet wird. \usepackage{pstricks}

3 04-01-3

2

1

0 0

1

2

3

\begin{pspicture}[showgrid](3,3) \psset{linewidth=1.5pt} \psline[linestyle=none](3,3)%} \everypsbox{\scriptstyle} \ncline{a}{c} \tlput{r} \ncline{a}{b} \taput{u} \ncline[linestyle=dashed]{c}{d} \tbput{b} \ncline{b}{d} \trput{s}$

s



x b

15.6.3 \nput – Knotenlabel \nput ist prinzipiell identisch zu \uput (⇒ Abschnitt 9.6 auf Seite 122), nur dass es sich

auf einen Knoten bezieht. \nput [Optionen] {Referenzwinkel }{Knotenname}{Material } \nput* [Optionen] {Referenzwinkel }{Knotenname}{Material } \usepackage{pst-node}

A

15-06-6

x z Wurzel

15

y C

\cnode(0.5,0){.25cm}{root} \nput[rot=90]{-90}{root}{Wurzel} \cnode*(3,1){4pt}{A} \nput{130}{A}{A} \cnode*(3,-1){4pt}{C} \nput{-130}{C}{C} \psset{nodesep=3pt,shortput=nab} \ncline{root}{A}^{$x$} \ncline{root}{C}_{$y$} \ncline{A}{C}\ncput*{$z$}

15.6.4 \nlput Das Makro \nlput erlaubt das Setzen eines Knotenlabels absolut zu einem gegebenen Knoten. Alle bisherigen Makros haben dies nur relativ gemacht, sodass \nlput eine sinnvolle Erweiterung darstellt. Intern wird dazu das Makro \psLDNode benutzt (siehe Abschnitt 15.3.14). \nlput arbeitet analog zu \ncput, nur dass die beiden Knoten hier explizit anzugeben sind. \nlput(x0 ,y0 )(x1 ,y1 ){Abstand }{Text }

284

ch16-pstnode.tex: (#312)

herbert

15.7

Spezielles

15.6.5 Veraltete Makros pst-node verfügt über einige veraltete Makros zum Setzen von Labels, die zwar nach wie vor unterstützt werden, aber dennoch nicht mehr benutzt werden sollten. \lput [Referenzwinkel] {Rotation}(x,y ){Material } \Lput{Labelabstand } [Referenzwinkel] {Rotation}(x,y ){Material } \mput [Referenzwinkel] {Material>} \Mput{Labelabstand } [Referenzwinkel] {Material } \aput [Labelabstand] {Drehwinkel }(x,y ){Material } \Aput [Labelabstand] {Material } \bput [Labelabstand] {Drehwinkel }(x,y ){Material } \Bput [Labelabstand] {Material }

15.7 Spezielles In manchen Anwendungsfällen möchte man von einem Knoten mehrere Verbindungen ausgehen bzw. bei diesem ankommen lassen. Mit offset lassen sich auf einfache Weise zwei Verbindungen gleichen Typs »trennen«.

15-07-1

Wort1 nach Wort2 nach Wort3

\usepackage{pst-node} \rnode{A}{Wort1} nach \rnode{B}{Wort2} nach \rnode{C}{Wort3} \psset{angleA=-90,nodesep=3pt, arm=0.4,linearc=0.2} \ncbar[offsetB=4pt]{->}{A}{B} \ncbar[offsetA=4pt]{->}{B}{C}

Zeigen Verbindungen auf zwei Objekte, die eine unterschiedliche große Boxumrandung haben, dann enden die Verbindungen logischerweise nicht auf der selben Höhe. \usepackage{pst-node} 15-07-2

A

a

\begin{pspicture}(-0.5,0)(3,3) \Huge \cnode(1,3){4pt}{A} \rput[B](0,0){\Rnode{B}{A}} \rput[B](2,0){\Rnode{C}{a}} \psset{angleA=90,armA=1,nodesepA=3pt} \nccurve[angleB=-135]{} \ncline{A}{X}\ncline{A}{Y}\ncline{A}{Z}

Z

15.8.3 \psrowhook und \pscolhook Man kann außerhalb von psmatrix festlegen, ob für eine bestimmte Zeile oder Spalte etwas ausgeführt werden soll, bevor die eigentliche Zeile oder Spalte bearbeitet wird. Die Zuordnung zu den einzelnen Zeilen bzw. Spalten erfolgt durch anzuhängende kleine römische Zahlen. \psrowhookZeilennummer { . . . } \pscolhookSpaltennummer { . . . }

Zulässige Makronamen wären daher \psrowhookii oder \pscolhookxi für die zweite Zeile und elfte Spalte. Man muss selbst sicherstellen, dass es auch entsprechend viele Zeilen und Spalten gibt, wobei die Zählung hier wegen der fehlenden römischen Null mit 1 beginnt. A

B

C

a b c 1

2

3

I

II

III

\usepackage{pst-node} \def\psrowhookii{\huge} \def\pscolhookiii{\green} \psmatrix[colsep=0.5cm,rowsep=0.5cm] A & B & C \\ a & b & c \\ 1 & 2 & 3 \\ I & II & \color{blue}III \endpsmatrix

290

ch16-pstnode.tex: (#312)

herbert

15-08-9

15.9

\usepackage{pst-node} \def\psrowhookii{\huge}

A 15-08-10

X

Y B

TEX und PS – eine einseitige Sache

Z

\psmatrix[colsep=1cm] [name=A]A \psspan{3}\\[0pt] [name=X] X & [name=Y] Y & [name=Z] Z\\ & [name=B]B \endpsmatrix \psset{nodesep=3pt,arrows=->} \ncline{A}{X} \ncline{A}{Y} \ncline{A}{Z} \ncline{X}{B} \ncline{Y}{B} \ncline{Z}{B}

15.9 TEX und PS – eine einseitige Sache Das Verhältnis von TEX und PS ist ziemlich einseitig, denn man kann jede Information von TEX nach PS zu jedem Zeitpunkt weitergeben; jede PS-spezifische Information wird einfach als \special in die DVI-Datei geschrieben. Man ist dagegen aber nicht in der Lage, auf einfache Weise irgendeine Information von PS direkt zurückzubekommen, denn der von TEX aus gesehene DVI-Zwischenschritt macht dies unmöglich. Man kann jedoch ebenfalls wieder über Zwischenschritte gehen, indem man PS Informationen in eine Datei schreibt, die bei einem erneuten TEX-Lauf eingelesen wird. Eine Alternative ist die Verwendung von VTEX, womit dann das TEX-Dokument aber nicht mehr auf einem anderen System übersetzt werden kann. VTEX erzeugt direkt eine PDF-Datei und kann über den integrierten »Distiller« gex teilweise Informationen nach Bearbeitung durch PS zurückgeben.

\usepackage{pst-node} Speziell bei der Definition von Knoten mit \verb+\cnode{3pt}{A}+, \cnode*{3pt}{A} deren Koordinaten unbekannt sind, weil sie mitten im Text erscheinen oder das Ergebnis einer Zwischenrechnung sind, möchte man manchmal gerne ihre Koordinaten wissen. Dies ist wie gesagt nicht auf \TeX-Ebene möglich, man kann aber wieder auf die Möglichkeiten von PostScript zurückgreifen. \begin{pspicture}[showgrid](1,1) \Cnode*[radius=0.1](0.5,0.5){B} \makeatletter \psline[arrowscale=2,linestyle=dashed]{->}(B)(! tx@NodeDict begin % node dictionary /N@B load GetCenter /yB ED /xB ED % Mitte von Knoten B /N@A load GetCenter /yA ED /xA ED % Mitte von Knoten A xA xB sub 0.7 mul xB add \pst@number\psxunit div yA yB sub 0.7 mul yB add \pst@number\psyunit div end) % node dictionary \makeatother \end{pspicture}

291

ch16-pstnode.tex: (#312)

herbert

15

pst-node: Knoten und Verbindungen

Speziell bei der Definition von Knoten mit \cnode{3pt}{A}, deren Koordinaten unbekannt sind, weil sie mitten im Text erscheinen oder das Ergebnis einer Zwischenrechnung sind, möchte man manchmal gerne ihre Koordinaten wissen. Dies ist wie gesagt nicht auf TEX-Ebene möglich, man kann aber wieder auf die Möglichkeiten von 1 PostScript zurückgreifen. 0 0

1

Im obigen Beispiel wird eine Linie zu dem am Anfang dieses Absatzes definierten Knotens gezogen, die genau das 0.7-fache des normalen Abstandes zwischen diesen beiden Knoten ist. Wie man erkennen kann, zeigt der Pfeil genau in die Richtung des Knotens A. In dem Beispiel wird das tx@NodeDict-Dictionary verwendet, um auf die entsprechenden Prozeduren zugreifen zu können. ED (Austausch und definiere Variable) entspricht exch def und ist in pstricks.pro definiert. Obwohl es sich um reinen PSCode handelt, muss in obigem Beispiel \psline in \makeatletter . . . \makeatother eingebettet werden, da es sich zu diesem Zeitpunkt noch um TEX-Code handelt, der erst noch einmal expandiert wird, bevor er nach PS weitergereicht wird.

292

ch16-pstnode.tex: (#312)

herbert

15-09-1

K a p i t e l

16

pst-tree: Bäume 16.1 Parameter für Baumknoten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 16.2 Baumknoten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304 16.3 Label . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 16.4 \skiplevel und \skiplevels . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311 16.5 Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312

Die Basispakete pstricks und pst-node verfügen bereits über einige Makros, mit denen sich Rahmen, Kreise, Ovale usw. zeichnen lassen, die dann mit unterschiedlichsten Linien verbunden werden können. Das Paket pst-tree bietet darüber hinaus aber eine weitaus bessere Unterstützung zur Erstellung unterschiedlichster Bäume. Es verwendet selbst pst-node (Kapitel 15 auf Seite 251) und kann damit eine hervorragende Unterstützung für das Erstellen von Bäumen sein. Die grundsätzliche Syntax eines Baumes ist

\pstree [Optionen] {Wurzel }{Nachfolger }

% TEX

\psTree [Optionen] {Wurzel } Nachfolger \endpsTree

% TEX

\begin{psTree} [Optionen] {Wurzel } Nachfolger \end{psTree}

% LATEX

Inhaltlich besteht kein Unterschied zwischen den beiden Makroversionen \pstree ~ Aufbau des Baumes und \psTree bzw. psTree; letztere ist lediglich die »long«-Variante.1 Beide setzen den gesamten Baum in eine Box, deren Grundlinie (Baseline) durch das Zentrum der Wurzel geht. Daraus folgt, dass der Baum nach unten aufgebaut wird. 1 Als »long« definierte Makros dürfen auch Absätze enthalten.

16

pst-tree: Bäume

pstree

Wurzel

pstree

\usepackage{pst-tree} 16-00-1

\psset{showbbox}% pstree\rule{1em}{0.5pt}% \pstree[radius=3pt]{\Toval{Wurzel}}{\TC\TC\TC}% \rule{1em}{0.5pt}pstree

psTree

Wurzel

psTree

\usepackage{pst-tree} 16-00-2

psTree\rule{1em}{0.5pt}% \psset{showbbox}% \begin{psTree}[radius=3pt]{\Toval{Wurzel}} \TC\TC\TC \end{psTree}% \rule{1em}{0.5pt}psTree

Sollte es Schwierigkeiten mit dem vertikalen Zeilenabstand geben, setzt man das \pstree-Makro, beziehungsweise die psTree-Umgebung, entweder in eine pspictureUmgebung oder sorgt mit \vspace für entsprechenden vertikalen Leerraum. Baum und

Baumverbindungen werden im Folgenden als Baumobjekte bezeichnet. Die Wurzel sollte ein einzelnes Baumobjekt sein, während ein Nachfolger beliebig zusammengesetzt sein kann. Unterbäume entstehen im Prinzip rekursiv; ein Nachfolger besteht aus einer neuen Wurzel. Wurzel

neu

\usepackage{pst-tree} 16-00-3

\pstree[radius=3pt]{\Toval{Wurzel}}{% \TC% Nachfolger 1,1 \pstree{\Toval{neu}}{% 1,2 und neue Wurzel \TC\TC}% 2,1 2,2 \TC% 1,3 }%

An obigem Beispiel ist schon leicht zu erkennen, dass bei der Erstellung umfangreicher Bäume unbedingt eine äußere Form anzustreben ist, die die Struktur bzw. den Aufbau des Baumes leicht erkennen lässt. Ansonsten wird es sehr schwierig sein, eventuelle Fehler aufzuspüren.

16.1 Parameter für Baumknoten Tabelle 16.1 zeigt eine Zusammenstellung der speziellen, für pst-tree geltenden Parameter. Für einige Werte kann ein optionaler Stern vorangestellt werden, dessen Bedeutung in den jeweiligen Abschnitten erklärt wird.

294

ch17-psttree.tex: (#312)

herbert

16.1

Tabelle 16.1: Zusammenfassung aller Para- Name meter für pst-tree.

Parameter für Baumknoten

Werte

Vorgabe

Seite

bbd

Wert Einheit

{}

303

bbh

Wert Einheit

{}

303

bbl

Wert Einheit

{}

303

bbr

{}

fansize

Wert Einheit Makro Wert Einheit

303 301 295

levelsep

* Wert Einheit

2cm

showbbox

Boolean * Wert Einheit

false

thislevelsep

{}

299 303 299

thistreefit

Wert Einheit

{}

298

thistreenodesize

Wert Einheit

{}

297

thistreesep

{} tight false D

treenodesize

Wert Einheit loose|tight Boolean D|U|R|L Wert Einheit

-1pt

297 298 296 295 297

treesep

Wert Einheit

0.75cm

297

xbbl

Wert Einheit

0

303

xbbr

Wert Einheit

0

303

xbbh

Wert Einheit

{}

303

xbbd

Wert Einheit

{}

303

edge

treefit treeflip treemode

\ncline 1cm

16.1.1 fansize Bündel von Verzweigungen können symbolisch durch ein Dreieck dargestellt werden, wobei die Grundseite durch fansize vorgegeben werden kann. Das Dreieck kann mit den Parametern nodesep (⇒ Abschnitt 15.2.4 auf Seite 255) und offset (⇒ Abschnitt 15.2.12 auf Seite 258) entsprechend verschoben werden.

16-01-1

Wurzel

Wurzel

\usepackage{pst-tree} \pstree[radius=3pt]{\Toval{Wurzel}}{% \TC \Tfan \TC} \pstree[radius=3pt]{\Toval{Wurzel}}{% \TC \Tfan*[fansize=0.4cm,nodesepA=10pt]% \TC}

16.1.2 treemode Dieser Parameter legt die Richtung des Hauptbaumes oder der Teilbäume fest: (D)own, (L)eft, (R)ight, (U)p.

295

ch17-psttree.tex: (#312)

herbert

16

pst-tree: Bäume

\usepackage{pst-tree} \begin{pspicture}(-0.75,0.25)(0.75,-4.2) \pstree{\pstree[treemode=L]{\Toval{Wurzel}}{\TC*}}{% \pstree[treemode=L]{\Toval{Links}}{\TC\TC}% \pstree{\Toval{neu}}{\TC\TC}% \pstree[treemode=R]{\Toval{Rechts}}{% \TC% \pstree[treemode=U]{\Toval{Rechts}}{\TC*\TC*}% } } \end{pspicture}

Wurzel

Links

neu

16-01-2

Rechts

Rechts

16.1.3 treeflip Normalerweise werden alle Knoten von links nach rechts und von oben nach unten angeordnet. Diese Reihenfolge lässt sich mit dem Parameter treeflip sowohl global als auch lokal ändern. Die Beispiele machen dies deutlich, wo sich die Reihenfolge der Knotenenden lokal umkehrt, denn die Anordnung A-B bleibt erhalten.

Wurzel

1

2 A

B 3

1

2

3

4

4

\usepackage{pst-tree} 16-01-3

\pstree{\Toval{Wurzel}}{% \pstree{\Tcircle{A}}{% \Tcircle{1}\Tcircle{2} \Tcircle{3}\Tcircle{4} }% \pstree[treemode=R]{\Tcircle{B}}{% \Tcircle{1}\Tcircle{2} \Tcircle{3}\Tcircle{4} }}

296

ch17-psttree.tex: (#312)

herbert

16.1

Wurzel

16-01-4

4

3 A

B 2

4

3

2

1

1

Parameter für Baumknoten

\usepackage{pst-tree} \pstree{\Toval{Wurzel}}{% \pstree[treeflip]{\Tcircle{A}}{% \Tcircle{1}\Tcircle{2} \Tcircle{3}\Tcircle{4} }% \pstree[treeflip, treemode=R]{\Tcircle{B}}{% \Tcircle{1}\Tcircle{2} \Tcircle{3}\Tcircle{4} }}

16.1.4 treesep und thistreesep Der Abstand zwischen den Baumknoten kann mit dem Parameter treesep festgelegt werden. Dadurch wird der Gesamtbaum automatisch schmaler bzw. kleiner, was bei größeren Baumstrukturen durchaus angenehm sein kann. \usepackage{pst-tree}

Wurzel

16-01-5

1 2 A

B 3 4

1

2

3

\pstree[treesep=0.2cm]{\Toval{Wurzel}}{% \pstree{\Tcircle{A}}{% \Tcircle{1}\Tcircle{2} \Tcircle{3}\Tcircle{4}}% \pstree[treemode=R]{\Tcircle{B}}{% \Tcircle{1}\Tcircle{2} \Tcircle{3}\Tcircle{4}}% }

4

Mit thistreesep lassen sich die Änderungen auf eine einzige Ebene beschränken. 16-01-6

Wurzel

\usepackage{pst-tree} \pstree[levelsep=1cm, radius=3pt]{\Toval{Wurzel}}{% \pstree[thistreesep=0.2cm]{\TC}{% \TC\TC* \pstree{\TC*}{\TC\TC\TC\TC}% \TC\TC }}

16.1.5 treenodesize und thistreenodesize Befinden sich ungeradzahlig viele Knoten auf einer Ebene, die unterschiedlich breiten Inhalt aufweisen, so ist die mittlere Baumverbindung sehr häufig keine senkrechte Linie, was optisch nicht gerade ansprechend aussieht. Mit dem Parameter treenodesize kann man die Box auf eine feste Breite bzw. für vertikale ausgerichtete Bäume auf eine feste

297

ch17-psttree.tex: (#312)

herbert

16

pst-tree: Bäume

Höhe und Tiefe setzen, sodass die Anordnung symmetrisch wird und daher eine senkrechte Linie entsteht. In Fällen, wo man mit dieser Methode nicht das erwartete Resultat erzielt, kann mit \space (⇒ Abschnitt 16.2.6 auf Seite 306) individuell Zwischenraum, auch negativen einfügen.

Wurzel

1

121

\usepackage{pst-tree}

Wurzel

12321 1

16-01-7

121

12321

\pstree[nodesepB=4pt]{\Toval{Wurzel}}{% \TR{1}\TR{121}\TR{12321}} \pstree[nodesepB=4pt,treenodesize=0.3cm]{% \Toval{Wurzel}}{% \TR{1}\TR{121}\TR{12321}}

Lokale Änderungen, die sich ab der Definition nur auf tiefer liegende Bäume beziehen, kann man mit thistreenodesize einstellen.

\usepackage{pst-tree}

Wurzel

16-01-8

\pstree[levelsep=1cm,radius=3pt]{% \Toval{Wurzel}}{% \pstree[thistreenodesize=0.25cm]{\TC}{% \TC\TC* \pstree{\TC*}{\TC\TC\TC\TC}% \TC\TC} }

16.1.6 treefit und thistreefit PSTricks bestimmt den Abstand zwischen den Endknoten in Abhängigkeit von ihrem Inhalt. Dieser Abstand kann global oder lokal mit dem Parameter treesep fest vorgegeben werden, man kann PSTricks aber auch anweisen, den Abstand grundsätzlich etwas

großzügiger zu bemessen. . Mit treefit=tight (Standard) ist der Minimalabstand zwischen zwei Knoten einer Ebene gleich treesep und wird nur dann nicht eingehalten, wenn Knoteninhalte sich überlappen würden. Mit treefit=loose ist jetzt der Abstand der Senkrechten aller Knoten mindestens gleich treesep. Dadurch können Knoten höher liegender Ebenen weiter auseinander liegen als Knoten tieferer Ebenen. . Liegen alle Knoten auf derselben Ebene, so ist zwischen loose und tight kein Unterschied.

298

ch17-psttree.tex: (#312)

herbert

16.1

16-01-9

Wurzel

Parameter für Baumknoten

\usepackage{pst-tree}

Wurzel

\pstree[treesep=.5,radius=3pt]{% \Toval{Wurzel}}{% \pstree{\TC}{% \TC*\pstree{\TC}{\TC*\TC*\TC*\TC*}% \TC*\TC*}}\quad %% Ende erster Baum \pstree[treesep=0.5,radius=3pt, treefit=loose]{\Toval{Wurzel}}{ \pstree{\TC}{% \TC*\rnode{A}{}% \pstree{\TC}{\TC*\TC*\TC* \rnode{D}{\TC*}}% \TC*\rnode{B}{}% \TC*\rnode{C}{}}} \psset{linestyle=dashed, linewidth=0.2pt,arrows=->} \pcline(A)(A|D)\pcline(B)(B|D) \pcline(C)(C|D)

Lokale Änderungen, bezogen auf einen vorhandenen Unterbaum, kann man mit der Option thistreefit erreichen.

\usepackage{pst-tree} \pstree[levelsep=1cm,radius=3pt]{\Toval{Wurzel}}{% \pstree[thistreefit=loose]{\TC}{% Linker Zweig \TC\TC* \pstree{\TC*}{\TC\TC\TC\TC} \TC\TC} \pstree[thistreefit=tight]{\TC}{% Rechter Zweig \TC\TC* \pstree{\TC*}{\TC\TC\TC\TC} \TC\TC}}

16-01-10

Wurzel

16.1.7 levelsep und thislevelsep Bezeichnet den vertikalen bzw. horizontalen Abstand zweier Ebenen, bezogen auf das jeweilige Zentrum. Wird dem Wert des Parameters ein Stern vorangestellt, so bezieht sich die Angabe auf die Unterkante der aktuellen Box zur Oberkante der Nachfolgerbox, womit der Abstand innerhalb einzelner Level variabel ist.

299

ch17-psttree.tex: (#312)

herbert

16

pst-tree: Bäume

\usepackage{pst-tree}

Wurzel

16-01-11

\pstree[levelsep=1cm,radius=3pt]{\Toval{Wurzel}}{% \pstree{\TC}{% \TC \pstree{\TC*}{\TC\TC\TC\TC}% \TC\TC }}

Insbesondere für horizontal angeordnete Bäume kann damit eine bessere Darstellung erreicht werden. Das folgende Beispiel wurde mit levelsep=3cm erstellt. Durch die unterschiedlich langen Namen kommt es zu ungünstigen Linienlängen. \usepackage{pst-tree} \psset{nodesep=5pt} \pstree[treemode=R,levelsep=3cm]{\rnode{A}{}\Tr{\rnode{A}{}Friedrich Wilhelm}}{% \pstree{\Tr{Friedrich I.}}{\Tr{\rnode{C}{}Friedrich Wilhelm I.} \Tr{Friedrich}} \pstree{\Tr{\rnode{B}{}Albrecht Friedrich}}{\Tr{Wilhelm Heinrich} \Tr{Friedrich}}} \psset{arrowscale=2,linewidth=0.2pt} \pcline[linestyle=dashed](A)(A|0,-1)\pcline[linestyle=dashed](B)(B|0,-1) \pcline[linestyle=dashed](C)(C|0,-1)\pnode(A|0,-0.8){A1}\pnode(B|0,-0.8){A2} \ncline[arrows=]{A1}{A2}\ncput*{\texttt{levelsep}} \pnode(C|0,-0.8){A3}\ncline[arrows=]{A2}{A3}\ncput*{\texttt{levelsep}}

Friedrich Wilhelm I. 16-01-12

Friedrich I. Friedrich Friedrich Wilhelm Wilhelm Heinrich Albrecht Friedrich Friedrich levelsep

levelsep

Mit einer Angabe von \levelsep=1cm lässt sich dies etwas besser gestalten. \usepackage{pst-tree} \pstree[treemode=R,levelsep=*1cm]{\Tr{Friedrich Wilhelm\rnode{A}{}}}{% \pstree{\Tr{Friedrich I.}}{% \Tr{Friedrich Wilhelm I.} \Tr{Friedrich}} \pstree{\Tr{\rnode{B1}{}Albrecht Friedrich\rnode{C}{}}}{% \Tr{\rnode{B2}{}Wilhelm Heinrich} \Tr{Friedrich}}} \psset{arrowscale=2,linewidth=0.2pt} \pcline[linestyle=dashed](A)(A|0,-1) \pcline[linestyle=dashed](B1)(B1|0,-1)

300

ch17-psttree.tex: (#312)

herbert

16.1

Parameter für Baumknoten

\pcline[linestyle=dashed](B2)(B2|0,-1)\pcline[linestyle=dashed](C)(C|0,-1) \pcline{}(A|0,-0.8)(B1|0,-0.8)\ncput*{\footnotesize 1cm} \pcline{}(B2|0,-0.8)(C|0,-0.8)\ncput*{\footnotesize 1cm}

Friedrich Wilhelm I.

16-01-13

Friedrich I. Friedrich Friedrich Wilhelm Wilhelm Heinrich Albrecht Friedrich Friedrich 1cm

1cm

Im Gegensatz zu levelsep kann man mit thislevelsep den Abstand ausschließlich für den tiefer liegenden Baum festlegen.

16-01-14

\usepackage{pst-tree}

Wurzel

\pstree[levelsep=1cm,radius=3pt]{\Toval{Wurzel}}{% \pstree[thislevelsep=2cm]{\TC}{% \TC\TC* \pstree{\TC*}{\TC\TC\TC\TC}% \TC\TC}}

PSTricks benötigt mindestens zwei (LA)TEX-Durchläufe, um den richtigen Abstand zu ~ Zwei LATEX Durchläufe berechnen. Die Werte der Zwischenrechnungen werden in der .aux-Datei (LATEX) oder \jobname.tmp gespeichert.

16.1.8 edge Am Ende einer jeden Definition eines neuen Baumknotens wird \pssucc (successor) auf den Namen des gerade definierten Knotens gesetzt und \pspred (predecessor) auf den Vorgängerknoten. Dies macht es möglich, dass man eine beliebige Linie/Kurve zwischen diesen beiden Knoten erstellen kann, beispielsweise \ncline{\pspred}{\pssucc} PSTricks hat dafür ein eigenes Makro definiert: \psedge{\pspred}{\pssucc}

wobei \psedge identisch zu \ncline ist, solange man dieses Makro nicht umdefiniert, wie im folgenden Beispiel, wo man statt der einfachen Linien eben Kurven haben möchte.

301

ch17-psttree.tex: (#312)

herbert

16

pst-tree: Bäume

Eine derartige Neudefinition wirkt global auf den gesamten Baum. Mit der Option edge lässt sich dies auch lokal bewerkstelligen, indem man als Wert ein zuvor definiertes Makro übergibt, wie ebenfalls im folgenden Beispiel zu sehen. \usepackage{pst-tree} \def\psedge#1#2{% \nccurve[angleA=0,angleB=180]{->}{#1}{#2}} \def\psedgeDash#1#2{% \nccurve[angleA=0,angleB=180,% linestyle=dashed]{->}{#1}{#2}}

1

2 0 3

16-01-15

\pstree[treemode=R,levelsep=3cm]{\Tcircle{0}}{% \Tcircle{1} \Tcircle{2} \Tcircle[edge=\psedgeDash]{3} \Tcircle[edge=\psedgeDash]{4}}

4

Das letzte Beispiel aus Abschnitt 16.1.7 auf Seite 299 lässt sich damit ebenfalls noch besser gestalten, wenn man für die Verbindungen \ncdiagg (⇒ Abschnitt 15.4.4 auf Seite 274) benutzt. \usepackage{pst-tree} \def\edgeCyan#1#2{\ncdiagg[angleA=180,arm=0pt,nodesep=2pt,linecolor=cyan]{#2}{#1}} \def\edgeBlue#1#2{\ncdiagg[angleA=180,arm=0pt,nodesep=2pt,linecolor=blue]{#2}{#1}} \pstree[treemode=R,levelsep=*1cm]{\Tr{Friedrich Wilhelm\rnode{A}{}}}{% \pstree{\Tr[edge=\edgeCyan]{Friedrich I.}}{% \Tr[edge=\edgeCyan]{Friedrich Wilhelm I.} \Tr[edge=\edgeCyan]{Friedrich}} \pstree{\Tr[edge=\edgeBlue]{\rnode{B1}{}Albrecht Friedrich\rnode{C}{}}}{% \Tr[edge=\edgeBlue]{\rnode{B2}{}Wilhelm Heinrich} \Tr[edge=\edgeBlue]{Friedrich}}} \psset{arrowscale=2,linewidth=0.2pt} \pcline[linestyle=dashed](A)(A|0,-2.5) \pcline[linestyle=dashed](B1)(B1|0,-2.5) \pcline[linestyle=dashed](B2)(B2|0,-2.5)\pcline[linestyle=dashed](C)(C|0,-2.5) \psline{}(A|0,-2.3)(B1|0,-2.3) \psline{}(B2|0,-2.3)(C|0,-2.3)

Friedrich Wilhelm I. 16-01-16

Friedrich I. Friedrich Friedrich Wilhelm Wilhelm Heinrich Albrecht Friedrich Friedrich

Möchte man die Makros nicht extra außerhalb von \pstree definieren, so kann man sie auch direkt edge zuweisen. Werden diesen Makros ebenfalls Parameter zugewiesen, so muss die gesamte Definition in {} eingeschlossen werden.

302

ch17-psttree.tex: (#312)

herbert

16.1

Parameter für Baumknoten

\usepackage{pst-tree,amsmath} 16-01-17

o|o _

x

y

\pstree[nodesepB=3pt,arrows=->,levelsep=2cm]{% \Tdia{$\substack{o|o\\\_}$}}{% \TR[edge={\ncbar[angle=180,armB=0.3cm]}]{$x$} \TR{$y$} \TR[edge={\ncbar[armB=0.3cm]}]{$z$}}

z

16.1.9 showbbox Label werden grundsätzlich unabhängig von der jeweiligen Boxgröße gesetzt. Dies bedeutet, dass Label ohne weiteres außerhalb der regulären Box liegen können, womit ein \psframebox ein falsches Ergebnis liefert, wie im folgenden Beispiel gezeigt wird. \usepackage{pst-tree} 16-01-18

links

rechts

\psshadowbox[framearc=0.4]{% \psset{tpos=.6}% \pstree{\Tc{3pt}}{% \TC*^{links} \TC*_{rechts}}% }

Mit showbbox=true kann man sich die aktuelle Boxumrandung anzeigen lassen, um dann mit den Boxoptionen korrekte Maße zu erreichen. Dies wird im folgenden Abschnitt am gleichen Beispiel gezeigt.

16.1.10 bb? und xbb? In einigen der vorhergehenden Beispiele war es manchmal schwierig, die Größe der Bounding Box korrekt vorzugeben. pst-tree stellt insgesamt acht Parameter bereit, mit denen die umgebende Box des Knotens beeinflusst werden kann. \bb? \xbb?

Die Bounding-Box wird auf die angegebenen Werte gesetzt. Die Bounding-Box wird um die angegebenen Werte erhöht bzw. verkleinert. \usepackage{pst-tree}

16-01-19

links

rechts

\psset{tpos=.6,showbbox}% \pstree{\Tc{3pt}}{% \TC*^{links} \TC*_{rechts}}

\usepackage{pst-tree} 16-01-20

links

rechts

\psset{tpos=.6,showbbox}% \pstree[xbbl=15pt,xbbr=20pt]{\Tc{3pt}}{% \TC*^{links} \TC*_{rechts}}

303

ch17-psttree.tex: (#312)

herbert

16

pst-tree: Bäume

Mit der Korrektur der umgebenden Box kann man jetzt erfolgreich auch beispielsweise \psshadowbox nutzen. \usepackage{pst-tree} 16-01-21

links

\psshadowbox[fillcolor={[rgb]{1,1,0.8}}, fillstyle=solid,framearc=0.4]{% \psset{tpos=.6}% \pstree[xbbl=15pt,xbbr=20pt]{\Tc{3pt}}{% \TC*^{links} \TC*_{rechts}% }}

rechts

16.2 Baumknoten Für die meisten in Kapitel 15 auf Seite 251 behandelten Knotenmakros gibt es hier Entsprechungen, die in Tabelle 16.2 zusammengefasst sind. Für alle dort angegebenen existiert ebenfalls eine Sternvariante. Bis auf die im Folgenden beschriebenen Unterschiede ist ihr Verhalten identisch, sodass hier nicht weiter darauf eingegangen werden muss. . Für sämtliche Baumknoten existiert ein optionales Argument, selbst wenn die Originaldefinition aus Kapitel 15 auf Seite 251 keines zulässt. . Baumknoten haben kein Argument für einen Knotennamen. . Baumknoten werden grundsätzlich automatisch positioniert, Koordinaten können nicht vorgegeben werden. . Referenzpunkte für \Tr sind über den Parameter ref zu setzen. . Für alle in Tabelle 16.2 angegebenen Makros existiert ebenfalls eine Sternvariante. Tabelle 16.2: Aus Kapitel 15 abgeleitete Name Baumknoten.

Langform

\Tp [Optionen]

\pnode

\Tc [Optionen] {Wert Einheit }

\cnode

\TC [Optionen]

\Cnode

\Tf [Optionen]

\fnode

\Tdot [Optionen]

\dotnode

\Tr [Optionen] {Material }

\rnode

\TR [Optionen] {Material }

\Rnode

\Tcircle [Optionen] {Material }

\circlenode

\TCircle [Optionen] {Material }

\Circlenode

\Toval [Optionen] {Material }

\ovalnode

\Tdia [Optionen] {Material }

\dianode

\Ttri [Optionen] {Material }

\trinode

304

ch17-psttree.tex: (#312)

herbert

16.2

16-02-1

Baumknoten

\Tdot b

\Tcircle

\TCircle

\Toval

\Ttri

\Tdia

Tree node

\Tn \Tp

\Tr \Tf

\TC

\Tc

\TR

Abbildung 16.1: Zusammenstellung der verschiedenen Baumknoten

16.2.1 \TR und \Tr In der Abbildung 16.1 wird der Unterschied zwischen den beiden Knotenvarianten nicht unbedingt deutlich, sodass er hier noch einmal behandelt werden soll. Im Abschnitt 15.3.2 auf Seite 264 wurde auf der reinen Knotenebene der Unterschied von \rnode zu \Rnode herausgestellt, der Knotenmittelpunkt ist bei \rnode der geometrische Mittelpunkt der Box und bei \Rnode der Mittelpunkt der Baseline innerhalb der Box. Insbesondere bei vertikalen Baumstrukturen ist es besser, wenn Text horizontal betrachtet auf derselben Basislinie liegt. In solchen Fällen macht dann nur die Anwendung von \TR Sinn. \usepackage{pst-tree} \pstree[linewidth=0.2pt,nodesepB=3pt]{\TC*}{% \Tr{a\rlap{\rule{3cm}{0.4pt}}}\Tr{$\hat{X}$}\Tr{b}\Tr{x}} \qquad \pstree[linewidth=0.2pt,nodesepB=3pt]{\TC*}{% \TR{a\rlap{\rule{3cm}{0.4pt}}}\TR{$\hat{X}$}\TR{b}\TR{x}}

16-02-2

a



b

x

a



b

x

16.2.2 \Tn – Nullknoten Immer dann, wenn man sich den Platz für einen zukünftigen Knoten freihalten oder ganz einfach eine Gruppe von Knoten gegenüber anderen absetzen will, bietet sich der Einsatz des Nullknotens an, der nichts weiter macht, als eben den zu Platz belegen. Diesem Knoten kann man dennoch beliebiges Material, beispielweise einen Text folgen lassen, der dann an an das Ende der nicht sichtbaren Linie gesetzt wird.

305

ch17-psttree.tex: (#312)

herbert

16

pst-tree: Bäume

\usepackage{pst-tree} 16-02-3

1

a

\pstree[linewidth=0.2pt,nodesepB=3pt]{\TC*}{% \TR{1} \Tn \TR{a} \Tn b}%

b

16.2.3 \Tfan Ein weiterer spezieller Knoten ist \Tfan, den man beispielsweise als symbolische Baumfortsetzung einsetzen kann, wenn die Baumstruktur zu weit gefächert wäre. \Tfan hat kein Argument, auch wenn im folgenden Beispiel dies so erscheinen mag; die Klammern dienen nur der Abgrenzung. \uput bezieht sich auf den aktuellen Punkt, der nach \Tfan auf (0,0) gesetzt wird. \usepackage{pst-tree} 16-02-4

\pstree[treesep=0.2cm,linewidth=0.2pt,% radius=3pt]{\TC}{% \Tfan*{\uput[-90](0,0){Links}} \pstree[linestyle=dashed]{\Toval{Mitte}}{% \TC*\TC*\TC*\TC*\TC*\TC*\TC*\TC*\TC*\TC*} \Tfan[linestyle=dashed]{\uput[-90](0,0){Rechts}} }

Mitte Links

Rechts

16.2.4 \pssucc \pssucc enthält jeweils nach der Definition eines Baumknotens den internen Namen

dieses neuen Knotens.

16.2.5 \pspred \pspred enthält jeweils nach der Definition eines Baumknotens den internen Namen

des auf diesen Knoten weisenden Vorgängers.

16.2.6 \tspace Für spezielle Fälle, in denen die vorstehend beschriebenen Methoden nicht zum Ziel führen, kann man mit \tspace individuellen Zwischenraum einfügen. \tspace{Wert Einheit }

306

ch17-psttree.tex: (#312)

herbert

16.3

\usepackage{pst-tree}

Wurzel

16-02-5

1

121

Label

12321

\begin{pspicture}(0,0.25)(0.5,-2) \pstree[nodesepB=4pt]{\Toval{Wurzel}}{% \TR{1} \tspace{10pt} \TR{121} \TR{12321}} \end{pspicture}

16.2.7 \psedge Auf \psedge wurde bereits in Abschnitt 16.1.8 auf Seite 301 hingewiesen, wo sich auch entsprechende Beispiele finden. Hier soll nur noch einmal der Vollständigkeit halber die Syntax angegeben werden. \psedge{KnotenA}{KnotenB}{Verbindungsmakro} \psedge kann auch als leer definiert werden, wenn keine Verbindungslinien erwünscht sind: \def\psedge#1#2{}. Die beiden Knoten #1 und #2 sind prinzipiell durch \pssucc und \pspred vorgegeben.

16.3 Label Unmittelbar nach einer Neudefinition eines Knotens (Ausnahme Wurzel) wird die Verbindungslinie vom Vorgänger zu diesem aktuellen Knoten erstellt. Da intern die Makros aus pst-node benutzt werden, sind nach dem Erstellen dieser Verbindung die Koordinaten der beiden Knoten \pssucc und \pspred nach wie vor gespeichert, sodass die aus Kapitel 15 auf Seite 251 bekannten Labelmakros benutzt werden können. Insbesondere mit den \t?put-Varianten konnte man auf einfache Weise vertikal oder horizontal angeordnete Label erstellen. \usepackage{pst-tree} \psset{tpos=.6}% 60% vom Anfang \pstree[treemode=R,thistreesep=0.75cm,thislevelsep=3cm,radius=2pt]{\Tc{3pt}}{% \pstree[treemode=U,xbbr=20pt]{\Tc{3pt}^{oben}}{% \TC*^{links} \TC*_{rechts}} \TC*\ncput*{mitte} \TC*_{unten}} \qquad \pstree[treemode=R,thistreesep=0.75cm,nrot=:U,shortput=nab, thislevelsep=3cm,radius=2pt]{\Tc{3pt}}{% \pstree[treemode=U,xbbr=20pt]{\Tc{3pt}^{oben}}{% \TC*^{links} \TC*_{rechts}} \TC*\ncput*{mitte} \TC*_{unten}}

307

ch17-psttree.tex: (#312)

herbert

pst-tree: Bäume

rechts

oben

links

links

rechts

16-03-1

oben mitte

mitte

unte n

unten

Ebenso steht das Makro \nput (siehe Abschnitt 15.6.3 auf Seite 284) zur Verfügung, welches sich auf einen einzelnen Knoten bezieht, was hier dann immer \pssucc wäre. Weiterhin definiert pst-tree noch spezielle Optionen: ˜ [Optionen] {Material } ˜* [Optionen] {Material }

Sie entsprechen im Wesentlichen dem \nput, nur hier ausschließlich für Baumverbindungen gedacht. Dabei kann diese Kurzform ohne weiteres in Kombination mit anderen Kurz- oder Langformen auftreten, sodass man in einem Schritt zwei Label setzen kann. ˜ Es gilt dabei nur Folgendes zu beachten: Wird die ˜-Variante in Kombination mit anderen Labelmakros eingesetzt, so muss das Zeichen ˜ zwingend als erstes nach dem Knotenmakro folgen. Das folgende Beispiel zeigt faktisch jede mögliche Kombination an Labeln.

A

B2

recht s

B1

links

16

oben

B

mitte

C

unte n

D links

s recht

D1

D2

\usepackage{pst-tree} 16-03-2

\psset{tpos=.6}% 60% vom Anfang \psframebox[fillstyle=solid, fillcolor=black!15]{% \pstree[treemode=R,thistreesep=0.7cm, shortput=nab,nrot=:U, thislevelsep=3cm, radius=2pt]{\Tc{3pt}~{A}}{% \pstree[treemode=U,xbbr=20pt]{% \Tc{3pt}~{B}^{oben}}{% \TC~*{B1}^{links} \TC*~*{B2}_{rechts}} \TC~*{C}\ncput*{mitte} \pstree[treemode=D,xbbr=20pt]{% \Tc{3pt}~{D}_{unten}}{% \TC~*{D1}_{links} \TC*~{D2}^*{rechts}} }}

Die verwendeten Parameter des Beispiels sind:

308

ch17-psttree.tex: (#312)

herbert

16.3

shortput=nab nrot=:U ˜{B}ˆ{oben}

Label

Anweisung, dass die Kurzformen durch die \n?put-Langformen ersetzt werden sollen. Sämtliche Label sollen parallel zur Linie erscheinen. Der Knoten erhält als Label »B« und die vom Vorgänger kommende Verbindung über dieser Linie das Label »oben«.

16.3.1 \MakeShortTnput Analog zu den Abschnitten 15.2.18 auf Seite 261 und 15.2.18 auf Seite 262 kann man auch für das pst-tree spezielle Makro »˜« ein anderes Zeichen, einen längeren Namen oder auch ein Makro definieren. \MakeShortTnput{Zeichen/Makro}

Eine zulässige Definition wäre beispielsweise \MakeShortTnput{\tnput}, wenn man den Problemen, die auch für das »˜« bestehen, aus dem Weg gehen will.

16.3.2 Label Parameter Name

Werte

Vorgabe

tnpos

l|r|a|b Wert Einheit

{}

tnsep tnheight

Wert Einheit

\ht\strutbox

tndepth

Wert Einheit Zahl

\dp\strutbox

tnyref

Tabelle 16.3: Zusammenfassung aller LabelParameter.

{}

{}

tnpos

Mit dieser Option lassen sich die Label beliebig anordnen. Die Abkürzungen stehen für »(l)eft, (r)ight, (a)bove, (b)elow«. \usepackage{pst-tree} 16-03-3

oben links

rechts unten

\pstree[treesep=0.3cm]{\Tc{3pt}}{% \TC*~[tnpos=a]{oben} \TC*~[tnpos=l]{links} \TC*~[tnpos=r]{rechts} \TC*~[tnpos=b]{unten}}

tnsep

Im Normalfall nimmt PSTricks für den Abstand des Labels zur Box labelsep. Wird tnsep auf einen beliebigen Wert gesetzt, so wird dieser genommen. Ist er zudem negativ, so wird der Abstand vom Knotenzentrum aus und nicht vom Knotenrand gemessen.

309

ch17-psttree.tex: (#312)

herbert

16

pst-tree: Bäume

\usepackage{pst-tree} 16-03-4

\pstree[treesep=0.3cm]{\Tc{3pt}}{% \TC~{unten} \TC~[tnsep=3pt]{unten} \TC~[tnsep=-3pt]{unten}}

unten unten unten

tnheight und tndepth

Label sind horizontal betrachtet immer auf dieselbe Baseline bezogen. In manchen Anwendungsfällen kann es jedoch erwünscht sein, die Ausrichtung an den Knoten vorzunehmen. Für diesen Fall kann man mit tnheight=0pt dafür sorgen, dass die Labelboxen faktisch keine Höhe, sondern nur noch eine Tiefe aufweisen, sodass alle Label gleich weit von den Knoten entfernt angeordnet sind. Gleiches gilt für die Option tndepth, wenn der Baum horizontal angeordnet ist. \usepackage{pst-tree} 16-03-5

Xx_ g a

\Huge \pstree[treesep=0.3cm, radius=3pt]{\Tc{3pt}}{% \TC~{X} \TC~{x} \TC~{\_} \TC~{\tiny a} \TC~{g} }

\usepackage{pst-tree} 16-03-6

_ g Xx a

\Huge \pstree[treesep=0.3cm,radius=3pt, tnheight=0pt]{\Tc{3pt}}{% \TC~{X} \TC~{x} \TC~{\_} \TC~{\tiny a} \TC~{g} }

tnyref

Wenn diese Option leer ist, was dem Ausdruck {} entspricht, dann wird für die vertikale Positionierung des Labels der Parameter vref benutzt (siehe dazu Abschnitt 15.2.1 auf Seite 254). Hierbei bezeichnet vref den vertikalen Abstand von der Basislinie bis zur Oberkante der umgebenden Box. Mit 0 }(4,3) \pszigzag[linecolor=red, coilheight=0.2](3,4)(3,1) \pszigzag[doubleline=true, linecolor=cyan,coilheight=0.75](0,4)(3,0) \end{pspicture}

19.3 Knotenverbindungen Voraussetzung für diese Makros ist das Laden von pst-node (⇒ Abschnitt 15 auf Seite 251), was standardmäßig nicht über das Paket selbst erfolgt. Danach stehen dann folgende Knotenverbindungen zur Verfügung, die in Anlehnung an die bekannten Makros aus pst-node ebenfalls mit \nc oder \pc beginnen:

334

ch20-pstcoil.tex: (#312)

herbert

19.3

Knotenverbindungen

\nccoil * [Optionen] {Pfeile} {KnotenA}{KnotenB} \nczigzag * [Optionen] {Pfeile} {KnotenA}{KnotenB} \pccoil * [Optionen] {Pfeile} (KnotenA)(KnotenB) \pczigzag * [Optionen] {Pfeile} (KnotenA)(KnotenB) \ncsin * [Optionen] {Pfeile} {KnotenA}{KnotenB} \pcsin * [Optionen] {Pfeile} (KnotenA)(KnotenB) \usepackage{pst-node,pst-coil} 19-03-1

\begin{pspicture}(4,3) \pnode(0.5,0.5){A} \pnode(3.5,2.5){B} \ncsin{}{A}{B} \end{pspicture}

\usepackage{pst-node,pst-coil} 19-03-2

\begin{pspicture}(5,2) \pnode(0,1){A} \pnode(5,1){B} \ncsin[amplitude=0.5,periods=30, coilarm=5pt, function=dup 0.1 mul sin exch sin add]{A}{B} \end{pspicture}

Diese Verbindungen verhalten sich völlig analog zu den in Kapitel 15.4 auf Seite 271 und Kapitel 15.5 auf Seite 280 behandelten, sodass hier keine weiteren Erklärungen notwendig sind. \usepackage{pstricks,pst-coil,pst-node} 19-03-3

\begin{pspicture}(4,3) \cnode(0.5,0.5){0.5}{A}\cnode[fillstyle=solid, fillcolor=lightgray](3.5,2.5){0.5}{B} \nccoil[coilwidth=0.4,coilaspect=35,% coilheight=0.5]{}{A}{B} \end{pspicture}

\usepackage{pst-coil,pst-node} 19-03-4

\begin{pspicture}(4,3) \cnode*(0.5,0.5){0.5}{A}\cnode*(3.5,2.5){0.5}{B} \pccoil[coilwidth=0.4,coilaspect=35, coilheight=0.5,linecolor=white]{}(A)(B) \nccoil[coilwidth=0.4,coilaspect=35, coilheight=0.5]{A}{B} \end{pspicture}

335

ch20-pstcoil.tex: (#312)

herbert

19

pst-coil: Spulen, Federn und Zickzacklinien

x=0 19-03-5 b

x0

f

Abbildung 19.1: Anwendung des \pscoil-Makros (Eugene Ressler)

19-03-6

Abbildung 19.2: »Spielereien«

336

ch20-pstcoil.tex: (#312)

herbert

K a p i t e l

20

pst-eps: Exportieren von PSTricks-Umgebungen 20.1 TeXtoEPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338 20.2 \PSTtoEPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338 20.3 Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339 20.4 Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340

Es ist prinzipiell relativ einfach, einzelne PSTricks-Grafiken als PS-Datei zu speichern. Allerdings ist es bei dem in der Literatur angegeben Weg über dvips nicht immer sicher, dass es zu einem Erfolg kommt. Wichtig ist im Prinzip nur, dass man . . . .

einen Rahmen mit \fbox um das PSTricks-Objekt legt, dabei die Rahmenfarbe mit \color{white} unsichtbar macht, \fboxsep auf 0 pt setzt, um keinen zusätzlichen Abstand zu bekommen, \pagestyle{empty } wählt, um die Seitenzahl zu unterdrücken.

Nun kann man mit dvips spirale.dvi -E -o spirale.eps

eine EPS-Datei erzeugen, die zum einen die korrekte Bounding-Box aufweist (für Abbildung 20.1 %%BoundingBox: 148 456 364 668) und zum anderen ohne Probleme anschließend als normale Grafik im Dokument eingefügt werden kann. Abbildung 20.1 zeigt eine derartig erstellte Grafik. Bei dieser Methode ist man gezwungen, mit \fbox zu arbeiten, da dvips sonst nicht in der Lage ist, eine korrekte Bounding-Box zu bestimmen, denn dvips beachtet keine grafischen Elemente als Begrenzungen. Dazu konvertiere man einfach obiges Beispiel ohne die Anwendung von \fbox. Da \fbox als Textelement eine eindeutige Begrenzung auf Textebene darstellt, bereitet es dvips kein Problem, die Bounding-Box eindeutig festzulegen. Für einzelne zu konvertierende Grafiken ist diese Methode sicher sehr

20

pst-eps: Exportieren von PSTricks-Umgebungen

20-00-1

Abbildung 20.1: Mit der »-E«- Option erzeugte EPS-Datei

effizient, für eine größere Anzahl jedoch sehr zeitaufwendig. Hier versucht das Paket pst-eps anzusetzen, um diesen Vorgang zu automatisieren.

20.1 TeXtoEPS Dieses Makro hat die Aufgabe den oben gezeigten Trick mit \fbox überflüssig zu machen, somit dvips eine Möglichkeit zu geben, die Bounding-Box korrekt zu ermitteln. \TeXtoEPS . . . \endTeXtoEPS

% TEX

\begin{TeXtoEPS} . . . \end{TeXtoEPS}

% LATEX

Das Beispiel 20-00-1 wird noch einmal aufgegriffen, jetzt jedoch mit Anwendung der Umgebung TeXtoEPS. \usepackage{pst-plot,pst-eps} 20-01-1

\begin{TeXtoEPS} \begin{pspicture}(-2,-2)(2,2) \parametricplot[plotpoints=1000]{0}{2000}{ t dup cos 1000 div mul t dup sin 1000 div mul} \end{pspicture} \end{TeXtoEPS}

Wieder wird die DVI-Datei mit dvips wie oben beschrieben konvertiert, wobei sich diesmal eine korrekte Bounding-Box ergibt: %%BoundingBox: 71 509 286 721, die nur in den absoluten, nicht jedoch in den relativen Werten von den oben angegebenen abweicht.

20.2 \PSTtoEPS Mit \PSTtoEPS lässt sich die pspicture-Umgebung gleich in einer externen Datei speichern.

338

ch21-psteps.tex: (#186)

herbert

20.3

Parameter

\PSTtoEPS [Optionen] {Dateiname}{Grafikobjekt }

Mit diesem Makro ergibt sich wieder das Problem, dass die Bounding-Box nicht korrekt bestimmt werden kann. Über entsprechende Parameter (Tabelle 20.1) lässt sie sich vorgeben. Die Datei wird sofort erstellt, sodass sie unmittelbar danach als EPS-Datei eingelesen werden kann, so wie im folgenden Beispiel. \usepackage{pst-plot,pst-eps,graphicx}

3

20-02-1 2

\PSTtoEPS[bbllx=-0.5,bblly=-0.5,bburx=5.3,bbury=3.4, checkfile=false,headers=all,makeeps=all]{rahmen.eps}{% \psgrid[subgriddiv=0](5,3) \psframe[linecolor=blue,linewidth=0.1](1,1)(4,2)} \includegraphics[scale=0.5]{rahmen}

1 0 0

1

2

3

4

5

Name

Werte

Vorgabe

bbllx

Wert Einheit

0pt

bblly

Wert Einheit

0pt

bburx

Wert Einheit

0pt

bburx

Wert Einheit none|new|all|all* Boolean Dateiname none|all|user {x0 ,y0 } {x,y } Wert Wert1 Wert2

0pt

makeeps checkfile headerfile headers GraphicsRef Translation Rotation Scale

Tabelle 20.1: Zusammenfassung aller möglichen Parameter für pst-eps.

new true

{} none

{} {} {} {}

20.3 Parameter Tabelle 20.1 zeigt eine Zusammenstellung der speziellen für pst-eps geltenden Parameter. Diese sollen hier nicht im einzelnen behandelt werden, da das Paket pst-eps mittlerweile durch andere Möglichkeiten ersetzt werden kann. (⇒ Abschnitt D auf Seite 897) Eine praktische Anwendung für pst-eps ergibt sich, wenn die Berechnung einzelner Objekte intensive Rechenzeit erfordert, beispielsweise dreidimensionale Objekte, wie Zylinder oder Kugeln. Statt bei jeder Übersetzung des Dokumentes diese Berechnungen erneut durchzuführen, könnte man gleich beim ersten Mal die Grafik als EPS-Datei exportieren und beim folgenden LATEX-Lauf nur noch einlesen.

339

ch21-psteps.tex: (#186)

herbert

20

pst-eps: Exportieren von PSTricks-Umgebungen

20.4 Beispiel Die folgende Abbildung wurde während des Übersetzungslaufes erzeugt und sofort danach mit \includegraphics hier eingefügt. \usepackage{pst-plot,pst-eps,graphicx,multido} \def\particle#1#2{\pscircle[fillstyle=solid,fillcolor=black](#1,#2){2pt} %particle \pscircle[linestyle=dotted,dotsep=1.5pt,linewidth=0.5pt,linecolor=gray](#1,#2){6pt}} \PSTtoEPS[bbllx=-1cm,bblly=-0.5cm,bburx=7cm,bbury=7cm]{images/image1.eps}{% \begin{pspicture}(-1,-0.5)(7,7) \psset{linewidth=2pt} \psframe[linecolor=white](-1,-0.5)(7,7) \psgrid[subgriddiv=0,griddots=10,gridlabels=0,gridcolor=lightgray](0,0)(6,6)%grid \psline[linewidth=1.5pt]{-}(-1,6)(7,6) %boundary \psdots[dotscale=1,dotstyle=o,fillstyle=solid,fillcolor=red](3,6.5) %photon \psline[linewidth=0.5pt]{->}(3,6.5)(3,5.5) %direction \multido{\ia=0+1}{7}{\multido{\ib=0+1}{7}{\particle{\ia}{\ib}}} \end{pspicture}} \begin{figure}[htb] \centering \fbox{\includegraphics[scale=0.8]{images/image1}} \caption{Bilderzeugung "‘on the fly"’} \end{figure}

20-04-1 bc

Figure 1: Bilderzeugung "‘on the fly"’

340

ch21-psteps.tex: (#186)

herbert

K a p i t e l

21

pst-grad und pst-slpe:

Farbverläufe und Schatten 21.1 pst-grad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341 21.2 pst-slpe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344 21.3 pst-blur: Verschwommene Schatten . . . . . . . . . . . . . . . . . . . . . . . . 352

pst-grad ist ebenfalls eines der älteren und kleineren Pakete. Es stellt nur einen Füllstil

zur Verfügung, der wie in Kapitel 7 auf Seite 93 beschrieben, anzuwenden ist. Grundsätzlich ließe sich ein Farbverlauf auch mit den bereits von PSTricks bekannten Makros erstellen, dennoch bietet die Anwendung von pst-grad Vorteile, da man sich nicht um die Berechnungen der Zwischenfarbwerte kümmern muss. Unterstützt werden die Farbmodelle HSB und RGB. Das Paket pst-slpe füllt die Lücke, die durch pst-grad nicht ausgefüllt wird. Dazu gehören zum einen kreisförmige Farbverläufe und zum anderen mehrere, frei zu definierende Farben bei einem Verlauf zu nutzen. Zusätzlich unterstützt pst-slpe auch lineare Farbverläufe, sodass man grundsätzlich kein weiteres Paket laden muss.

21.1 pst-grad Die Farben für gradbegin und gradend sollten als RGB-Farbe definiert werden, da eine ~ RGB-Farben einwandfreie Funktion für CMYK oder Graustufen nicht unbedingt gewährleistet ist. ConTEXt Anwender ändern die Farbe mit \definecolor[gradbegin][r=0,g=0,b=1].

21.1.1 Parameter Tabelle 21.1 zeigt eine Zusammenstellung der speziellen, für pst-grad geltenden Parameter. Alle Parameter stehen nur zur Verfügung, wenn als Füllstil gradient verwendet Füllstil wird: fillstyle=gradient

21

pst-grad und pst-slpe: Farbverläufe und Schatten

Name

Werte

Vorgabe

gradbegin gradend gradlines gradmidpoint gradangle gradientHSB GradientCircle GradientScale GradientPos

Farbe Farbe Wert Wert Winkel Boolean Boolean Wert (x,y )

gradbegin gradend

Tabelle 21.1: Zusammenfassung aller Parameter für pst-grad.

500 0.9 0 false false

1.0 (0,0)

gradbegin

Bezeichnet sowohl den Parameter als auch den Namen der Anfangsfarbe, was hier etwas verwirrend ist. Die interne Definition folgt wieder der PSTricks-Syntax, sollte jedoch für reine LATEX-Anwender nicht benutzt werden. Die color/xcolor-Syntax ist hier zu bevorzugen (siehe Abschnitt 2.1 auf Seite 10). \newrgbcolor{gradbegin}{0 .1 .95} % interne Vorgabe

Somit kann man diese Anfangsfarbe zum einen über eine Neudefinition dieser Farbe oder durch Zuweisung über den Parameter geändert werden. \newrgbcolor{gradbegin}{0 0 1} % veraltete TeX-Syntax \definecolor{gradbegin}{rgb}{0, 0, 1} % benötigt color/xcolor Paket \psset{gradbegin=blue} \usepackage{pstricks,pst-grad} 21-01-1

\begin{pspicture}(5,2.25) \psframe[fillstyle=gradient,gradbegin=white](5,1) \definecolor{gradbegin}{rgb}{0, 1, 1} \psframe[fillstyle=gradient](0,1.25)(5,2.25) \end{pspicture}

gradend

Dieser Parameter ist nicht das Gegenstück zu gradbegin, denn es ist die Farbe, die am relativen Punkt gridmidpoint erreicht wird. In jedem Fall ist sie wieder wie gradbegin doppeldeutig. \newrgbcolor{gradend}{0 1 1} % Vorgabe

Eine Änderung kann wieder unterschiedlich erfolgen. \newrgbcolor{gradend}{1 0 0 } % veraltete TeX-Syntax \definecolor{gradend}{rgb}{1, 0, 0 } % benötigt color/xcolor Paket \psset{gradend=red}

342

ch22-pstgrad.tex: (#306)

herbert

21.1 pst-grad

\usepackage{pstricks,pst-grad} 21-01-2

\begin{pspicture}(5,2.25) \psframe[fillstyle=gradient, gradend=white](5,1) \definecolor{gradend}{rgb}{1, 0, 0} \psframe[fillstyle=gradient](0,1.25)(5,2.25) \end{pspicture}

gradlines

Ein Farbverlauf ist nichts anderes als ein Aneinanderreihen von farbigen Linien. Deren Dicke ist letztlich nur von der Auflösung des Bildschirms bzw. Druckers abhängig. Da dies jedoch sehr anwenderspezifisch ist, lässt pst-grad jede Anzahl an Linien zu, deren Zahl über gradlines geändert werden kann. \usepackage{pstricks,pst-grad} 21-01-3

\begin{pspicture}(5,3.5) \psset{fillstyle=gradient,linestyle=none} \psframe[gradlines=5](5,1) \psframe(0,1.25)(5,2.25) \psframe[gradlines=1000](0,2.5)(5,3.5) \end{pspicture}

gradmidpoint

Bezeichnet den relativen Punkt, bei dem die Farbe gradend erreicht wird. Danach geht es in umgekehrter Reihenfolge weiter.

\usepackage{pstricks,pst-grad} 21-01-4

\begin{pspicture}(5,3.5) \psset{fillstyle=gradient,linestyle=none} \psframe[gradmidpoint=0](5,1) \psframe[gradmidpoint=0.5](0,1.25)(5,2.25) \psframe[gradmidpoint=1](0,2.5)(5,3.5) \end{pspicture}

gradangle gradangle legt den Steigungswinkel der Geraden fest.

343

ch22-pstgrad.tex: (#306)

herbert

21

pst-grad und pst-slpe: Farbverläufe und Schatten

\usepackage{pstricks,pst-grad} 21-01-5

\begin{pspicture}(5,3.5) \psset{fillstyle=gradient,linestyle=none, gradmidpoint=0.5} \psframe[gradangle=0](5,1) \psframe[gradangle=45](0,1.25)(5,2.25) \psframe[gradangle=90](0,2.5)(5,3.5) \end{pspicture}

gradientHSB gradientHSB veranlasst die Verwendung des HSB-Farbschemas, falls diese boolsche Variable auf true gesetzt wird. \usepackage{pstricks,pst-grad} 21-01-6

\begin{pspicture}(5,2.25) \psset{gradientHSB=true,gradmidpoint=1} \psframe[fillstyle=gradient,gradend=white](5,1) \newrgbcolor{gradend}{1 0 0} \psframe[fillstyle=gradient](0,1.25)(5,2.25) \end{pspicture}

GradientCircle, GradientScale und GradientPos

Mit der Option GradientCircle lassen sich kreisförmige Farbverläufe erstellen, deren Radius mit GradientScale und Mittelpunkt mit GradientPos beeinflusst werden kann. Die Angabe der Koordinaten bezieht sich auf das zugrundeliegende Koordinatensystem, welches in der Regel durch die pspicture Umgebung gegeben ist. \usepackage{pstricks,pst-grad} 21-01-7

\begin{pspicture}(5,3.5) \psset{fillstyle=gradient,linestyle=none} \psframe[GradientCircle=true](5,1)% \psframe[GradientCircle=true, GradientScale=3](0,1.25)(5,2.25)% \psframe[GradientCircle=true,GradientScale=2,% GradientPos={(4,3.5)}](0,2.5)(5,3.5)% \end{pspicture}

21.2 pst-slpe 21.2.1 Füllstile Tabelle 21.2 zeigt eine Aufstellung aller verfügbaren neuen Füllstile, die grundsätzlich über den Parameter fillstyle (⇒ Abschnitt 7.1.2 auf Seite 94) zuzuweisen sind, beispielsweise fillstyle=slope. Bei linearer Interpolation erfolgt die Farbänderung von

344

ch22-pstgrad.tex: (#306)

herbert

21.2 pst-slpe

beispielsweise Rot (1, 0, 0) nach Grün (0, 1, 0) linear mit (1−dz, 0, 0) und (0, dz, 0), wobei dz die Schrittweite (0 < dz < 1) bezeichnet. In vielen Fällen genügt dieser Übergang den Ansprüchen, doch erscheint es manchmal sinnvoller, nicht linear zu interpolieren, sondern über Zwischenfarben zu gehen. In diesem Beispiel über Gelb (1, 1, 0) und Braun (0.5, 0.5, 0). Diese Methode wird grundsätzlich dann angewendet, wenn die Pluralform des Füllstils gewählt wird (siehe Tabelle 21.2). Name

Erklärung

slope slopes ccslope ccslopes radslope radslopes

lineare Interpolation zusätzlich mit Zwischenfarben kreisförmig mit linearer Interpolation zusätzlich mit Zwischenfarben radial mit linearer Interpolation zusätzlich mit Zwischenfarben

Tabelle 21.2: Zusammenfassung aller durch pst-slpe definierten neuen Füllstile.

slope und slopes

Der Füllstil slope entspricht vollständig dem Stil gradient des Pakets pst-grad (⇒ Abschnitt 21.1 auf Seite 341), während slopes nur von pst-slpe unterstützt wird. \usepackage{pstricks,pst-slpe} 21-02-1

\begin{pspicture}(5,3.5) \psframe[fillstyle=slope](5,1.5) \psframe[fillstyle=slopes](0,2)(5,3.5) \end{pspicture}

ccslope und ccslopes

Die Füllstile ermöglichen kreisförmige Farbverläufe. \usepackage{pstricks,pst-slpe} 21-02-2

\begin{pspicture}(5.5,2.5) \psframe[fillstyle=ccslope](2.5,2.5) \psframe[fillstyle=ccslopes](3,0)(5.5,2.5) \end{pspicture}

radslope und radslopes

Die Füllstile ermöglichen radiale Farbverläufe.

345

ch22-pstgrad.tex: (#306)

herbert

21

pst-grad und pst-slpe: Farbverläufe und Schatten

\usepackage{pstricks,pst-slpe} 21-02-3

\begin{pspicture}(5.5,2.5) \psframe[fillstyle=radslope](2.5,2.5) \psframe[fillstyle=radslopes](3,0)(5.5,2.5) \end{pspicture}

21.2.2 Parameter Tabelle 21.3 zeigt eine Aufstellung aller verfügbaren Parameter. Zu beachten ist, dass die im folgenden angegeben Farbsetzungen der PSTricks-Syntax folgen, wie sie im Paket selbst festgelegt sind. Für LATEX-Anwender sollte unbedingt die color/xcolor-eigene Syntax angewendet werden (siehe Abschnitt 2.1 auf Seite 10). Tabelle 21.3: Zusammenfassung aller Para- Name meter für pst-slpe.

Werte

Vorgabe

slopebegin slopeend slopecolors

Farbe Farbe Farbliste

slopesteps slopecenter slopeangle

Wert xy Winkel Wert Einheit Boolean Wert Wert

slopebegin slopeend 0.0 1 0 0 0.4 0 1 0 0.8 0 0 1 1.0 0 1 0 100 0.5 0.5 0

sloperadius fading startfading endfading

0 false 0 1

slopebegin slopebegin bezeichnet sowohl den Parameter als auch den Namen der Anfangsfarbe, was hier etwas verwirrend ist. \newrgbcolor{slopebegin}{0.9 1 0 } % interne Vorgabe

Somit kann man diese Anfangsfarbe über eine Neudefinition dieser Farbe oder durch Zuweisung über den Parameter ändern. \newrgbcolor{slopebegin}{0 0 1} % veraltete TEX-Syntax \definecolor{slopebegin}{rgb}{0, 0, 1} % benötigt color/xcolor-Paket \psset{slopebegin=blue}

346

ch22-pstgrad.tex: (#306)

herbert

21.2 pst-slpe

\usepackage{pstricks,pst-slpe} 21-02-4

\begin{pspicture}(5,3.5) \psframe[fillstyle=slope, slopebegin=white](5,1.5) \definecolor{slopebegin}{rgb}{0,1,1} \psframe[fillstyle=slopes](0,2)(5,3.5) \end{pspicture}

slopeend slopeend ist nicht das Gegenstück zu slopebegin, denn es ist die Farbe, die am Ende erreicht wird. In jedem Fall ist sie wieder wie slopebegin doppeldeutig. \newrgbcolor{slopeend}{1 0 0 } % Vorgabe

Eine Änderung kann wieder unterschiedlich erfolgen. \newrgbcolor{slopeend}{1 0 0 } % veraltete TEX-Syntax \definecolor{slopeend}{rgb}{1,0,0 } % benötigt color/xcolor Paket \psset{slopebegin=red} \usepackage{pstricks,pst-slpe} 21-02-5

\begin{pspicture}(5,3.5) \psframe[fillstyle=slope, slopeend=white](5,1.5) \definecolor{slopeend}{rgb}{1,0,0} \psframe[fillstyle=slopes](0,2)(5,3.5) \end{pspicture}

slopecolors slopecolors definiert die Farbliste bei nicht-linearer Verteilung mittels slopebegin und slopeend. slopecolors wird immer dann angewendet, wenn die Plural-Fülloption aus

Tabelle 21.2 gewählt wurde. Die Farbliste setzt sich zusammen aus einer eindimensionalen Koordinate und der zugehörigen Farbe. Die Liste wird abgeschlossen mit der Anzahl der Stützpunkte (Farben). \usepackage{pstricks,pst-plot,pst-slpe} \begin{pspicture}(0,-0.25)(\linewidth,0.75cm) \psaxes[axesstyle=frame,tickstyle=bottom](\linewidth,0.5cm) \psframe[fillstyle=slopes](\linewidth,0.5cm) \end{pspicture}

21-02-6

0

1

2

3

4

5

6

347

ch22-pstgrad.tex: (#306)

herbert

21

pst-grad und pst-slpe: Farbverläufe und Schatten

Obiges Beispiel zeigt den vorgegebenen Verlauf, der einen Regenbogen darstellt. 0.0 0.4 0.8 1.0 4

1 0 0 1

0 1 0 0

0 0 1 1

% % % % %

Startfarbe Rot Zwischenfarbe bei 40% gleich Grün Zwischenfarbe bei 80% gleich Blau Endfarbe Violett Anzahl der Stufen

Die vier Stützpunkte werden auf die komplette x-Breite des zu füllenden Bereiches bezogen und gegebenenfalls angepasst. Für obiges Beispiel kann man direkt die x-Achse als Maßstab für die Farbpunkte wählen.

\usepackage{pstricks,pst-plot,pst-slpe} \begin{pspicture}(0,-0.25)(\linewidth,0.75cm) \psset{slopecolors= 0.0 1.0 1.0 0.9 8.5 0.5 1.0 0.5 12.5 0.0 0.5 0.5 3} \psaxes[axesstyle=frame,tickstyle=bottom](\linewidth,0.5cm) \psframe[fillstyle=slopes](\linewidth,0.5cm) \end{pspicture}

21-02-7

0

1

2

3

4

5

6

slopesteps

Ein Farbverlauf ist nichts anderes als ein Aneinanderreihen von farbigen Linien. Deren Dicke ist letztlich nur von der Auflösung des Bildschirmes bzw. Druckers abhängig. Da dies jedoch sehr anwenderspezifisch ist, lässt pst-slpe jede Anzahl von Schritten zu, die über slopesteps geändert werden können. \usepackage{pstricks,pst-slpe} 21-02-8

\begin{pspicture}(5,4) \psset{fillstyle=slope,linestyle=none} \psframe[slopesteps=5](5,1) \psframe(0,1.5)(5,2.5) \psframe[slopesteps=1000](0,3)(5,4) \end{pspicture}

slopeangle slopeangle legt den Steigungswinkel der Geraden fest. Bei dem Füllstil radslope[s] wird entsprechend rotiert und bei ccslope[s] ist dieser Parameter wirkungslos.

348

ch22-pstgrad.tex: (#306)

herbert

21.2 pst-slpe

\usepackage{pstricks,pst-slpe} 21-02-9

\begin{pspicture}(5,4) \psset{fillstyle=slopes,linestyle=none} \psframe[slopeangle=0](5,1) \psframe[fillstyle=radslopes, slopeangle=45](0,1.5)(5,2.5) \psframe[slopeangle=90](0,3)(5,4) \end{pspicture}

slopecenter slopecenter legt das Zentrum für die Füllstile radslope[s] und ccslope[s] fest. Die

Koordinatenangaben beziehen sich relativ auf die aktuelle Bounding-Box. Um sicherzustellen, dass diese eindeutig definiert ist, empfiehlt es sich, \pscustom (siehe Abschnitt 11) zu benutzen. In beiden folgenden Beispielen wird das Zentrum auf 60 % der Breite und 25 % der Höhe gesetzt. \usepackage{pstricks,pst-slpe}

5 21-02-10

\begin{pspicture}[showgrid](5,5) \pscustom[fillstyle=ccslopes, slopecenter={0.6 0.25}]{% \pscircle(2.5,2.5){2.5}} \end{pspicture}

4

3

2

1

0 0

1

2

3

4

5

\usepackage{pstricks,pst-slpe} 21-02-11

\begin{pspicture}(5,4) \pscustom[fillstyle=radslope, linestyle=none,slopecenter=0.6 0.25]{% \psline(0,0)(1,3)(2,2)(3,4)(5,1)(0,0)} \end{pspicture}

sloperadius

Grundsätzlich wird der Farbverlauf bei kreisförmigem bzw. radialem Verlauf ausgehend vom Zentrum erstellt, beginnend mit der ersten Farbe bis zum Rand der Bounding-Box und endend mit der letzten Farbe, sodass der gesamte Bereich gefüllt wird. Dies kann mit

349

ch22-pstgrad.tex: (#306)

herbert

21

pst-grad und pst-slpe: Farbverläufe und Schatten

dem Parameter sloperadius beeinflussen. Dieser gibt den relativen maximalen Radius vor. \usepackage{pstricks,pst-slpe} 21-02-12

\begin{pspicture}(5,5) \pscustom[fillstyle=ccslopes, slopecenter={0.6 0.25}, sloperadius=3cm]{% \pscircle(2.5,2.5){2.5}} \end{pspicture}

\usepackage{pstricks,pst-slpe}

5

21-02-13

\begin{pspicture}[showgrid](5,5) \pscustom[fillstyle=ccslopes, slopecenter={1 0.5}, sloperadius=4cm]{% \pscircle(2.5,2.5){2.5}} \end{pspicture}

4

3

2

1

0 0

1

2

3

4

5

\usepackage{pstricks,pst-slpe}

4

21-02-14

\begin{pspicture}[showgrid](5,4) \pscustom[fillstyle=radslope, linestyle=none,slopecenter=0.6 0.25, sloperadius=2cm]{% \psline(0,0)(1,3)(2,2)(3,4)(5,1)(0,0)} \end{pspicture}

3

2

1

0 0

1

2

3

4

5

fading, startfading und endfading

ab Version 1.3

Mit dem so genannten »fade out« kann eine Transparenz variabel gestaltet werden. Dies kann hier sowohl linear als auch radial geschehen. Aktiviert wird dieser Effekt durch fading=true, wobei der Start- und Endwert für die Transparenz durch startfading und endfading festzulegen sind. Die Standardeinstellung ist 0 und 1, was in der Ausgabe keiner und totaler Transparenz entspricht.

350

ch22-pstgrad.tex: (#306)

herbert

21.2 pst-slpe

\usepackage{pstricks,pst-slpe} 21-02-15

\begin{pspicture}(5,3.5) \psframe*[linecolor=black!40](-.5,.5)(6,3) \psframe[fillstyle=slope,fading, slopebegin=white](5,1.5) \definecolor{slopebegin}{rgb}{0,1,1} \psframe[fading, fillstyle=slopes](0,2)(5,3.5) \end{pspicture}

\usepackage{pstricks,pst-slpe} \LARGE\psset{fading,endfading=0.75,linecolor=black!40} \begin{tabular}{cc} \psframe*(-0.3,-0.25)(3.5,20pt)\psframebox[fillstyle=slope]{\st{slope}} &\qquad \psframe*(-0.3,-0.25)(3.5,20pt)\psframebox[fillstyle=slopes]{\st{slopes}} \\[3ex] \psframe*(-0.3,-0.25)(3.5,20pt)\psframebox[fillstyle=ccslope]{\st{ccslope}} &\qquad \psframe*(-0.3,-0.25)(3.5,20pt)\psframebox[fillstyle=ccslopes]{\st{ccslopes}} \\[3ex] \psframe*(-0.3,-0.25)(3.5,20pt)\psframebox[fillstyle=radslope]{\st{radslope}} &\qquad \psframe*(-0.3,-0.25)(3.5,20pt)\psframebox[fillstyle=radslopes]{\st{radslopes}} \\[3ex] \end{tabular}

21-02-16

slope

slopes

ccslope

ccslopes

radslope

radslopes

21.2.3 Makros Das Paket stellt vorrangig für die itemize-Ungebung in Präsentationen das Makro \psBall bereit, welches farbige Kugeln mit einem 3D-Effekt ermöglicht. \psBall [Optionen] {Farbe}{Radius} \psBall [Optionen] (x,y ){Farbe}{Radius}

351

ch22-pstgrad.tex: (#306)

herbert

21

pst-grad und pst-slpe: Farbverläufe und Schatten

\usepackage{pst-slpe} 21-02-17

\begin{pspicture}(-0.5,-0.5)(5,0.5) \psBall{black}{2ex} \psBall(1,0){blue}{3ex} \psBall(2.5,0){red}{4ex} \psBall(4,0){green!50!blue!60}{5ex} \end{pspicture}

Grundsätzlich muss das Makro nicht innerhalb einer pspicture-Umgebung angewendet werden. Es ist allerdings zu beachten, dass es selbst in einer Box der Größe 0pt gesetzt wird und bei fehlenden Koordinatenangaben symmetrisch zum aktuellen Punkt ausgegeben wird. Die vordefinierten Parameter sloperadius=0.075Radius fillstyle=ccslope slopebegin=white slopeend=Farbe slopecenter=0.4 0.6 linestyle=none

können in der üblichen Weise überschrieben werden, um andere Effekte zu erreichen. \usepackage{pst-slpe} 21-02-18

\begin{pspicture}(-0.5,-0.5)(5,0.5) \psBall{black}{2ex} \psBall[sloperadius=10pt](1,0){blue}{3ex} \psBall(2.5,0){red}{4ex} \psBall[slopebegin=red](4,0){green!50!blue!60}{5ex} \end{pspicture}

21.3 pst-blur: Verschwommene Schatten In Abschnitt 4.1.16 auf Seite 57 und Kapitel 22.1 auf Seite 358 wurden bereits verschiedene Möglichkeiten der Erstellung eines Schattens angegeben. In allen Fällen wurde dabei ausschließlich eine einzige Schattenfarbe verwendet. Das Paket pst-blur von Martin Giese unterstützt dagegen die Erstellung von verschwommenen Schatten, was einen erheblich besseren Eindruck macht. [20] Voraussetzung ist eine geschlossene Fläche, also zum Beispiel keine offenen Linienzüge. Wie derartige Schatten von pst-blur gebildet werden, wird in Abschnitt 11.3.15 auf Seite 148 behandelt.

21.3.1 Parameter Tabelle 21.4 zeigt eine Zusammenstellung der speziellen, für pst-blur geltenden Parameter und Abbildung 21.1 die Zuordnung. Einige der von pst-blur verwendeten Parameter sind identisch zu den in Abschnitt 4.1.16 auf Seite 57 beschriebenen, sodass hier nicht weiter darauf eingegangen werden muss.

352

ch22-pstgrad.tex: (#306)

herbert

21.3 pst-blur: Verschwommene Schatten

shadowcolor

21-03-1

blurbg

shadowangle

shadowsize

blurradius

Abbildung 21.1: Parameter für verschwommene Schatten (Martin Giese) Tabelle 21.4: Zusammenfassung aller Parameter für Name pst-blur

blur blurradius blursteps blurbg

Werte

Vorgabe

Boolean Wert Einheit Wert Farbe

false 1.5pt 20 white

blur blur=true ist Voraussetzung für die Aktivierung des Paketes. Anderenfalls erfolgt die

normale Schattenbildung, wie in Abschnitt 4.1.16 ausführlich beschrieben. Voraussetzung ist jedoch, dass shadow=true gilt, anderfalls ist wiederum blur ohne jede Wirkung (siehe folgende Beispiele).

blurradius

Wie in Abbildung 21.1 dargestellt, bezeichnet blurradius den Radius der abgerundeten Ecken, bzw. den daraus folgenden Bereich des verschwimmenden Schattens. Wie man dem Beispiel entnehmen kann, hängen shadowsize (siehe Abschnitt 4.1.16) und blurradius zusammen, denn der optische Eindruck kehrt sich ins Negative, wenn blurradius größer wird als shadowsize. \usepackage{pst-blur} 21-03-2

\begin{pspicture}(4,4.25) \psset{shadow=true,blur=true,shadowsize=10pt, linecolor=lightgray} \psframe(3.5,1) \psframe[blurradius=5pt](0,1.5)(3.5,2.5) \psframe[blurradius=10pt](0,3.25)(3.5,4.25) \end{pspicture}

353

ch22-pstgrad.tex: (#306)

herbert

21

pst-grad und pst-slpe: Farbverläufe und Schatten

blursteps

Dieser Parameter gibt an, in wie viel verschiedene Stufen die Schattenfarbe unterteilt wird, beginnend mit shadowcolor, endend bei blurbg. Je größer die Zahl der Zwischenschritte ist, desto länger die Rechenzeit. \usepackage{pstricks,pst-blur} 21-03-3

\begin{pspicture}(4,4.25) \psset{shadow=true,blur=true,shadowsize=15pt, blurradius=10pt,linecolor=lightgray} \psframe(3.5,1) \psframe[blursteps=5](0,1.5)(3.5,2.5) \psframe[blursteps=50](0,3.25)(3.5,4.25) \end{pspicture}

blurbg blurbg bezeichnet die Hintergrundfarbe, womit die auslaufende Schattenfarbe gemeint ist, der von shadowcolor nach blurbg geht. Grundsätzlich kann man hierfür jede belie-

bige Farbe nehmen, nur bekommt man dann einen gänzlich anderen Schatteneffekt. \usepackage{pst-blur} \begin{pspicture}(8,2) \psset{shadow=true,blur=true,shadowsize=10pt, blurradius=5pt,linestyle=none,linecolor=lightgray} \psframe[shadow=false](2,2)\pscircle[linestyle=solid](0.8,1.2){0.75} \psframe*[shadow=false](4,0)(6,2) \pscircle[linestyle=solid,fillcolor=yellow,blurbg=lightgray](4.8,1.2){0.75} \psframe*[linecolor=red,shadow=false](2,0)(4,2) \pscircle[linestyle=solid,fillcolor=blue,blurbg=red](2.8,1.2){0.75} \psframe*[linecolor=cyan,shadow=false](6,0)(8,2) \pscircle[linestyle=solid,fillcolor=magenta,blurbg=cyan](6.8,1.2){0.75} \end{pspicture}

21-03-4

21.3.2 \psblurbox Das folgende Beispiel zeigt die unterschiedlichen Auswirkungen der verschiedenen Boxen mit einem Schatten.

354

ch22-pstgrad.tex: (#306)

herbert

21.3 pst-blur: Verschwommene Schatten

\usepackage{pst-blur} Wenn man in einem normalen Text die standardmäßige \psframebox[shadow,blur]{% \texttt{\textbackslash psframebox}} mit der Option \texttt{blur} benutzt, so gibt dies in der Regel ein schlechtes Ergebnis, da \TeX{} nicht berücksichtigt, dass aufgrund des Schattens eigentlich eine einmalige Vergrößerung des Zeilenabstandes notwendig wäre. Etwas anders sieht das Ergebnis mit der \psshadowbox[blur]{% \texttt{\textbackslash psshadowbox}} aus, auch wenn es immer noch unbefriedigend ist; bei Anwendung der Option \texttt{blur} wird der \texttt{blurradius} nicht berücksichtigt. \psblurbox{\texttt{\textbackslash psblurbox}} sorgt hingegen dafür, dass auch hier eine korrekte Zeilenschaltung erfolgt. Für dieses Makro kann der Schattenwinkel allerdings nicht verändert werden, er ist konstant auf \texttt{shadowangle=45} gesetzt.

21-03-5

Wenn man in einem normalen Text die standardmäßige \psframebox mit der Option blur benutzt, so gibt dies in der Regel ein schlechtes Ergebnis, da TEX nicht berücksichtigt, dass aufgrund des Schattens eigentlich eine einmalige Vergrößerung des Zeilenabstandes notwendig wäre. Etwas anders sieht das Ergebnis mit der \psshadowbox aus, auch wenn es immer noch unbefriedigend ist; bei Anwendung der Option blur wird der blurradius nicht berücksichtigt. \psblurbox sorgt hingegen dafür, dass auch hier eine korrekte Zeilenschaltung erfolgt. Für dieses Makro kann der Schattenwinkel allerdings nicht verändert werden, er ist konstant auf shadowangle=45 gesetzt.

\psblurbox [Optionen] {Material }

Über Sinn oder Unsinn derartiger Boxen im laufenden Text soll hier nicht weiter diskutiert werden.

21-03-6

\usepackage{pstricks,pst-blur,amsmath}

F(x) =

Z

f (x)dx

F(x) =

Z

f (x)dx

x1 = x0 −

F(x0 ) ≥ x0 F ′ (x0 )

(1)

\psset{linestyle=none} \psblurbox{\parbox{0.9\linewidth}{% \[F(x)=\int f(x)dx\]}} \\[10pt] \psblurbox[blurbg=red]{% \parbox{0.9\linewidth}{% \[F(x)=\int f(x)dx\]}} \\[12pt] \psblurbox[blurbg=blue!30!red!80, blurradius=5pt]{% \parbox{0.9\linewidth}{% \begin{align} x_1 &= x_0-\frac{F(x_0)}% {F^\prime(x_0)}\ge x_0 \end{align}}}

355

ch22-pstgrad.tex: (#306)

herbert

21

pst-grad und pst-slpe: Farbverläufe und Schatten

21-03-7

Abbildung 21.2: Schattenspiele . . .

356

ch22-pstgrad.tex: (#306)

herbert

K a p i t e l

22

Dreidimensionale Abbildungen 22.1 pst-3d: Schatten, Kippen und dreidimensionale Darstellungen . . . . . . . 358 22.2 pst-ob3d: Einfache, dreidimensionale Objekte . . . . . . . . . . . . . . . . . . 370 22.3 pst-gr3d: Dreidimensionale Gitter. . . . . . . . . . . . . . . . . . . . . . . . . . 372 22.4 pst-fr3d: Button mit 3D-Effekt . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379 22.5 pst-3dplot: 3D-Parallelprojektionen von Funktionen und Daten . . . . . 382 22.6 pst-solides3d: 3D-Ansichten. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415 22.7 pst-mirror: Projektionen auf einem Kugelspiegel . . . . . . . . . . . . . . . 469 22.8 pst-platon: Die platonischen Körper . . . . . . . . . . . . . . . . . . . . . . . . 476

PSTricks stellt mehrere Pakete für dreidimensionale Abbildungen und mathematische

Funktionen mit zwei Variablen zur Verfügung. Paket

Inhalt

pst-3d pst-3dplot pst-fr3d pst-gr3d pst-light3d pst-map3dII pst-ob3d pst-solides3d pst-mirror

3D-Operationen Parallele Projektion 3D-Boxen 3D-Gitter 3D-Lichteffekte 3D-Geografische Projektionen Einfache 3D-Objekte 3D-Zentralprojektionen Projektionen auf dem Kugelspiegel

Tabelle 22.1: Zusammenstellung aller aktuellen 3D-Pakete.

Das Basispaket pstricks verfügt bereits über einige Makros, mit denen sich dreidimensionale Effekte erzielen lassen. Es existieren jedoch mehrere Pakete, die das Erstellen

22

Dreidimensionale Abbildungen

von dreidimensionalen Objekten oder Funktionen unterstützen. Eine Zusammenstellung zeigt Tabelle 22.1. Hierbei überlappen sich schon einmal mehrere der Pakete, da parallele Entwicklungen in der TEX-Welt nun einmal nichts Ungewöhnliches ist.

22.1 pst-3d: Schatten, Kippen und dreidimensionale Darstellungen Obwohl pst-3d eines der älteren Pakete ist, soll es dennoch behandelt werden, da es auch die Vorstufe der 3D-Darstellungen enthält, nämlich Schattenbildung und Kippen.

22.1.1 Schattenwurf pst-3d definiert das Makro \psshadow für eine Schattenbildung. Als Parameter stehen

die in Tabelle 22.2 angegebenen Parameter neben all den bereits definierten zur Verfügung, so sie eine Bedeutung für das Material haben, für das ein Schattenwurf erfolgen soll. Dieses kann mit allem, was textähnlichen Charakter hat, erfolgen: Text, Linien und mathematische Ausdrücke im Inlinemodus. \psshadow [Optionen] {Material }

Schatten ff (x) (x) = = xx22

\usepackage{pst-3d} 22-01-1

\psset{Tshadowcolor=black!25} \psshadow[]{\Huge Schatten}\\[10pt] \psshadow{\Huge $f(x)=x^2$}\\[15pt] \psshadow[Tshadowsize=2.5]{% \rule{2cm}{10pt}}\\

Parameter Tabelle 22.2 zeigt eine Zusammenstellung der verwendeten Parameter. Tabelle 22.2: Zusammenfassung aller shadow- Name Parameter. Tshadowangle Tshadowcolor Tshadowsize

Tshadowangle

Werte

Vorgabe

Winkel Farbe Wert

60 lightgray 1

Die Option Tshadowangle bezeichnet den Winkel, den der Schatten, bezogen auf die Senkrechte zur Papierebene, wirft. Der Winkel von 90° entspricht somit der Schrift selbst. Negative Winkel bewirken, dass der Schatten aus der Papierebene heraustritt. Winkelwerte von 0° und 180° sind grundsätzlich nicht erlaubt.

358

ch23-pst3d.tex: (#312)

herbert

22.1 pst-3d: Schatten, Kippen und dreidimensionale Darstellungen

\usepackage{pst-3d} \psset{Tshadowcolor=black!60} {\huge\psshadow{Schatten} \psshadow[Tshadowangle=30]{Schatten} \psshadow[Tshadowangle=70]{Schatten} \psshadow[Tshadowangle=-30]{Schatten}}

22-01-2

Schatten Schatten Schatten Schatten Tshadowcolor

Die Option Tshadowcolor bezeichnet die Schattenfarbe.

\usepackage{pst-3d} {\huge\psshadow{Schatten} \psshadow[Tshadowcolor=red]{Schatten} \psshadow[Tshadowcolor=green]{Schatten} \psshadow[Tshadowcolor=blue]{Schatten}}

22-01-3

Schatten Schatten Schatten Schatten Tshadowsize

Die Option Tshadowsize bestimmt als Skalierungsfaktor die Größe des

Schattens. \usepackage{pst-3d} {\huge\psshadow{Schatten} \psshadow[Tshadowsize=-2]{Schatten} \psshadow[Tshadowsize=2]{Schatten} \psshadow[Tshadowsize=3.5]{Schatten}}

22-01-4

Schatten Schatten

Schatten

Schatten Schatten Schatten Schatten

22.1.2 Kippen Mit dem Kippen (tilting) von Objekten kann man perspektivische Ansichten dreidimensionaler Objekte simulieren. pst-3d definiert dazu zwei Makros. \pstilt [Optionen] {Winkel }{Material } \psTilt [Optionen] {Winkel }{Material }

Abbildung 22.1 auf der nächsten Seite zeigt den Unterschied zwischen diesen beiden Makros. Grundsätzlich lässt sich alles als Argument an diese beiden Makros übergeben und somit kippen. Bei vertikalem Material, wie abgesetzten Formeln, muss man eventuell

359

ch23-pst3d.tex: (#312)

herbert

Dreidimensionale Abbildungen

das Argument vorher in eine \parbox packen (vergleiche Beispiel). Winkelwerte von 0◦ und 180◦ sind nicht erlaubt. \psTilt{30}{\Bar} \pstilt{30}{\Bar}

\Bar

2 cm

30° 0

22-01-5

4cm

2cm

22

1

2

3

4

5

6

7

30° 8

9

Abbildung 22.1: Demonstration des Unterschiedes zwischen \pstilt und \psTilt

\pstilt \pstilt kippt Objekte derart, dass ihre ursprüngliche Höhe als neue Länge des gekippten

Objekts erscheint, womit das Objekt kleiner wird. Die Hypotenuse des Dreiecks aus Fußpunkt, Höhe und Lot entspricht jetzt der alten Höhe (siehe Abbildung 22.1). Hierbei wird die Länge von der Mitte der Fußseite aus gerechnet. \usepackage{pst-3d,multido} 22-01-6

\newpsstyle{TransparencyCyan}{% fillstyle=vlines,hatchwidth=0.1\pslinewidth, hatchcolor=cyan,hatchsep=1.5\pslinewidth} \begin{pspicture}(2,4) \rput[lb](0,0){\pstilt{45}{% \psframe[linestyle=dashed, fillstyle=solid,fillcolor=red](2,4)}} \psframe[style=TransparencyCyan](0,0)(2,4) \end{pspicture} \usepackage{pst-3d,multido} 22-01-7

\def\Bar{\psframe(0,0)(0.25,2)} \begin{pspicture}(5,2) \multido{\nA=15+15}{11}{\rput(2.5,0){\pstilt{\nA}{\Bar}}} \end{pspicture}

Z∞

f (x) = 1

x

1 dx = 1

\usepackage{pst-3d} 22-01-8

\pstilt{60}{\parbox{0.5\linewidth}{% \[f(x)=\int_1^{\infty}\frac{1}{x}\,dx=1\]}} \usepackage{pst-3d,pst-plot}

2

22-01-9

\pstilt{60}{\begin{pspicture}(-0.5,-0.5)(2,2) \psaxes[axesstyle=frame](2,2) \end{pspicture}}

1 0 0

1

2

360

ch23-pst3d.tex: (#312)

herbert

22.1 pst-3d: Schatten, Kippen und dreidimensionale Darstellungen

\usepackage{pst-3d,graphicx} 22-01-10

\pstilt{-30}{\includegraphics[scale=0.5]{rose}}

\psTilt \psTilt kippt Objekte derart, dass ihre ursprüngliche Höhe erhalten bleibt, sodass das

Objekt theoretisch unendlich lang werden kann (siehe Abbildung 22.1). \usepackage{pst-3d,multido} 22-01-11

\newpsstyle{TransparencyCyan}{% fillstyle=vlines,hatchcolor=cyan, hatchwidth=0.1\pslinewidth, hatchsep=1.5\pslinewidth} \begin{pspicture}(2,4) \rput[lb](0,0){\psTilt{45}{% \psframe[linestyle=dashed, fillstyle=solid,fillcolor=red](2,4)}} \psframe[style=TransparencyCyan](0,0)(2,4) \end{pspicture}

\usepackage{pst-3d,multido} \def\Bar{\psframe(0,0)(0.25,2)} \begin{pspicture*}(\linewidth,2) \multido{\nA=10+10}{17}{\rput(0.5\linewidth,0){\psTilt{\nA}{\Bar}}} \end{pspicture*}

22-01-12

Z∞

f (x) =

22-01-13

1

x

1 dx = 1

\usepackage{pst-3d,multido} \psTilt{60}{\parbox{0.5\linewidth}{% \[f(x)=\int_1^{\infty}\frac{1}{x}\,dx=1\]}}

\usepackage{pst-3d,pst-plot}

2 22-01-14

\psTilt{60}{% \begin{pspicture}(-0.5,-0.5)(2,2) \psaxes[axesstyle=frame](2,2) \end{pspicture}}

1 0 0

1

2

361

ch23-pst3d.tex: (#312)

herbert

Dreidimensionale Abbildungen

\usepackage{pst-3d,graphicx} 22-01-15

\psTilt{-30}{\includegraphics[scale=0.5]{rose}}

Anwendungsbeispiel für \pstilt und \psTilt

col um n1 col um n2 col um n3

Mit dem Paket rotating werden entsprechende Makros zum Drehen von Text zur Verfügung gestellt, um beispielsweise schräge Tabellenüberschriften zu erreichen. Schwieriger ist es, wenn diese mit einem Rahmen zu versehen sind. Mit \pstilt oder \psTilt ist dies kein Problem. Das unten angegebene Beispiel zeigt eine Anwendung mit beiden Makros.

1 4

2 5

3 6

co lum n1 co lum n2 co lum n3

22

1 4

2 5

3 6

\usepackage{pst-3d} 22-01-16

\begin{tabular}{l} \pstilt{60}{% \begin{tabular}{|p{1em}|p{1em}|p{1em}|}\hline \psrotateleft{column 1\ } & \psrotateleft{column 2\ } & \psrotateleft{column 3\ } \end{tabular}}\\ \begin{tabular}{|p{1em}|p{1em}|p{1em}|}\hline 1 & 2 & 3 \\\hline 4 & 5 & 6 \\\hline \end{tabular} \end{tabular}

\usepackage{pst-3d} 22-01-17

\begin{tabular}{l} \psTilt{60}{% \begin{tabular}{|p{1em}|p{1em}|p{1em}|}\hline \psrotateleft{column 1\ } & \psrotateleft{column 2\ } & \psrotateleft{column 3\ } \end{tabular}}\\\hspace*{-1.4em} \begin{tabular}{|p{1em}|p{1em}|p{1em}|}\hline 1 & 2 & 3 \\\hline 4 & 5 & 6 \\\hline \end{tabular} \end{tabular}

22.1.3 Dreidimensionale Darstellungen pst-3d unterstützt nur Parallelprojektionen, sodass geometrische Objekte wie Kugeln oder Zylinder nur eingeschränkt dargestellt werden können. Obwohl pst-3d im Prinzip

nur ein einziges Makro für die 3D-Projektion definiert, ist das Paket dennoch sehr effizient in der Anwendung und wird auch als Grundlage für andere Pakete benutzt. [82]

362

ch23-pst3d.tex: (#312)

herbert

22.1 pst-3d: Schatten, Kippen und dreidimensionale Darstellungen

\ThreeDput pst-3d definiert nur dieses eine Makro, mit dem aber letztlich jede beliebige Darstellung von linien- oder flächenförmigen Objekten im dreidimensionalen Raum möglich ist. \ThreeDput [Optionen] {Material } \ThreeDput [Optionen] (x, y, z){Material }

Ohne Angabe von Koordinaten wird grundsätzlich (0, 0, 0) als Koordinatenursprung angenommen. Unter »Material« wird grundsätzlich alles verstanden, was in eine Box gesetzt werden darf. Handelt es sich im TEX-Sinne um vertikales Material, so ist dieses vorher in eine \parbox oder eine minipage zu packen. Zur Vereinfachung der angegebenen Quelltexte wird im Folgenden das Makro \DreiDKOSystem verwendet, welches die Koordinatenachsen mit dem Gitter zeichnet und im Folgenden dann nicht mehr angegeben wird. Die Koordinaten von \ThreeDput

beziehen sich auf den Koordinatenursprung des Objektes, welches nicht notwendigerweise auch das sichtbare, geometrische Zentrum sein muss. \psframe(2,2)% \psframe(-1,-1)(1,1)% Beliebiger Text%

Ursprung unten links (0,0) Ursprung in der Mitte (0,0) Ursprung in der Mitte der Baseline

Im folgenden Beispiel ist das kleinere Quadrat mit seinem Zentrum (0, 0) genau auf die Koordinaten (4, 4, 0) gesetzt worden. \usepackage{pst-3d,multido} 22-01-18

z55 z 4 4

O

3 3

be n y

4

M

te it3

1 1

y5

2

3

2

1

00 1

1

b

n te n

1

U

0 0

0 0

4

5

2 2

2

2 3

3 4

x5

5

4 x

\begin{pspicture}(0,-0.75)(5,4.5) \psset{viewpoint=1 -1 0.75} \DreiDKOSystem[subgriddiv=0,gridcolor=black!50]{5} \ThreeDput{\psframe*[linecolor=gray!20](3,3)} \ThreeDput(1.5,1.5,0){\Huge Unten} \ThreeDput(0,0,1.5){\psframe*[linecolor=gray!25](3,3)} \ThreeDput(1.5,1.5,1.5){\Huge Mitte} \ThreeDput(0,0,3){\psframe*[linecolor=gray!15](3,3)} \ThreeDput(1.5,1.5,3){\Huge Oben} {\psset{subgriddiv=0,gridcolor=black!50}\xzEbene{5}} \ThreeDput(4,4,0){% \psframe*[linecolor=gray!5](-1,-1)(1,1)} \ThreeDput(4,4,0){\psdot[dotscale=3]} \end{pspicture}

363

ch23-pst3d.tex: (#312)

herbert

Dreidimensionale Abbildungen

\usepackage{pst-3d,multido} \begin{pspicture}(-4.5,-3)(3,4.75) \psset{viewpoint=1 1.5 0.8} \DreiDKOSystem[gridlabels=0pt,subgriddiv=0,gridcolor=black!50]{5} \ThreeDput[normal=0 0 1]{% xy-Ebene \psline[linewidth=3pt,linecolor=blue]{->}(4,4)(4,5.5) \uput[90](4,5.5){\psrotateleft{\textcolor{blue}{$\vec{n}_A$}}}} \ThreeDput[normal=0 -1 0]{% xz-Ebene \psline[linewidth=3pt,linecolor=green]{->}(4,0)(5.5,0) \uput[90](5.5,0){\psscalebox{-1 1}{\textcolor{green}{$\vec{n}_B$}}}} \ThreeDput[normal=1 0 0]{% yz-Ebene \psline[linewidth=3pt,linecolor=red]{->}(0,4)(0,5.5) \uput[0](0,5.5){$\vec{n}_{oben}$}} % Würfel und Achsen \ThreeDput[normal=0 0 1](0,0,4){\psframe*[linecolor=gray!25](4,4) \rput(2,2){\Huge\textbf{OBEN}}} \ThreeDput[normal=0 1 0](4,4,0){\psframe*[linecolor=gray!5](4,4) \rput(2,2){\Huge\textbf{Seite A}}} \ThreeDput[normal=1 0 0](4,0,0){\psframe*[linecolor=gray!15](4,4) \rput(2,2){\Huge\textbf{Seite B}}} % Die kleinen Achsen \ThreeDput[normal=0 0 1](0,0,4){\psline(4,0)\uput[90](3,0){X$_{oben}$} \psline(0,4)\uput[0](0,3){Y$_{oben}$}} \ThreeDput[normal=0 1 0](4,4,0){\psline(4,0)\uput[90](3,0){X$_{A}$} \psline(0,4)\uput[0](0,3){Y$_{A}$}} \ThreeDput[normal=1 0 0](4,0,0){\psline(4,0)\uput[90](3,0){X$_{B}$} \psline(0,4)\uput[0](0,3){Y$_{B}$}} \end{pspicture}

n~o

ben

22-01-19

Y oben

N OBE

X oben

22

YB

Sei t

eB

YA

Sei te

A

n~B XA

XB

n~ A

Das Makro \ThreeDput lässt sich vielfältig anwenden; man kann mit Angabe des Normalenvektors n ~ und eines Punktes P(x, y, z) der Geraden und/oder Ebene eindeutig die

364

ch23-pst3d.tex: (#312)

herbert

22.1 pst-3d: Schatten, Kippen und dreidimensionale Darstellungen

Lage im Raum bestimmen. Flächen kann man mit unterschiedlichen Helligkeitsstufen versehen, um so den räumlichen Eindruck zu verstärken. 3D-Parameter Tabelle 22.3 zeigt eine Zusammenstellung der Parameter, mit denen die 3D-Darstellungen beeinflusst werden können. Name

Werte

Vorgabe Tabelle 22.3: Zusammenfassung aller 3D-

viewpoint viewangle normal embedangle

Wertx Werty Wertz Winkel Wertx Werty Wertz Winkel

1 -1 1 0 0 0 1 0

Parameter.

viewpoint Die Blickrichtung auf das 3D-Objekt beeinflusst wesentlich die Darstellung. Mit viewpoint legt man die (x,y,z )-Koordinaten fest, die den Vektor der Blickrichtung

bezeichnen. Aufgrund der Parallelprojektion spielt die Länge dieses Vektors keine Rolle, sodass (1 0.5 1.5 ) und (2 1 3) gleiche Darstellungen ergeben. Abbildung 22.2 zeigt, wie jemand eine derartige Darstellung betrachten würde, wobei die Abbildung selbst in diesem Fall natürlich von einem anderen Punkt aus betrachtet wird, sonst hätte man direkt auf den Vektor sehen müssen. 22-01-20

z 1.5

3D-D arste llu

ngen

pst-3d 0 1

0.5

x

y

Abbildung 22.2: Festlegung des viewpoints

Für Abbildung 22.2 wurde ein Betrachtungpunkt von viewpoint=3 5 2 definiert. Möchte man sich das Ganze beispielsweise von der y-Achse aus größerer Höhe betrachten, so könnte man viewpoint=1 1 3 wählen. Der Betrachter ist vom Zentrum (Ursprung) eine Einheit in x− und y-Richtung und drei Einheiten in z-Richtung gegangen und betrachtet sich alles von dort aus.

365

ch23-pst3d.tex: (#312)

herbert

Dreidimensionale Abbildungen

Der viewpoint muss grundsätzlich mit Werten ungleich Null definiert werden, da es ansonsten zu einer Division durch Null kommt. Angaben von 0.001 für eine Koordinate sind schon ausreichend, um zum einen der Division durch Null zu entgehen und zum anderen eine Koordinate bei der Betrachtung auszublenden.

Ein guter Wert für einen Betrachtungspunkt der dreidimensionalen Abbildungen wäre zum Beispiel viewpoint=1 1 0.5, was einer horizontalen Drehung um 45 ° und einer vertikalen um ca. 20◦ entspricht. Ein anderer sinnvoller Punkt ist auch viewpoint=1.5 1 0.5, was nun einer horizontalen Drehung um 33◦ bei gleicher vertikaler Drehung entspricht. Beides ist in den folgenden beiden Beispielen zu sehen.

\usepackage{pst-3d,multido}

\begin{pspicture}(-3,-1.75)(3,4) \psset{unit=0.75,viewpoint=1 1 0.5} \DreiDKOSystem[subgriddiv=0,gridcolor=black!40]{5} \end{pspicture}\hfill \begin{pspicture}(-3,-1.75)(2.2,3.5) \psset{unit=0.75,viewpoint=1 1.5 0.5,gridlabels=6pt} \DreiDKOSystem[subgriddiv=0,gridcolor=black!40]{5} \end{pspicture}

z5 5z

z5 5 z

4 4

4 4

3 3

3 3

2 2

2 2

1 1

1 1

1

2

3

4

y5

2

2

4

1 3

3

3

0 4

4

0

x5

5

4 yx 5

0 0 0 0

1

5

1

y5

x

3

4

2

3

1

2

3

1

1

1 2

4

4 5x

3

2

0

0

0 0 0 0

22-01-21

2

22

y5

viewangle Zusätzlich zum viewpoint kann man alles noch einmal um einen Winkel viewangle rotieren lassen. Dies ließe sich auch noch auf andere Weise erreichen, beispielsweise mit \rotatebox, bietet aber hier einige Vorteile. Da man bei den so ge-

nannten »Drahtmodellen« schnell den Überblick bezüglich Oben/Unten verliert, wurde in den Beispielen ein Rechteck in die xy-Ebene gelegt.

366

ch23-pst3d.tex: (#312)

herbert

22.1 pst-3d: Schatten, Kippen und dreidimensionale Darstellungen

\usepackage{pst-3d}

z5 5z 4 4

22-01-22

\begin{pspicture}(-3,-2.25)(-3,3.25) \psset{unit=0.7,viewpoint=1 1 0.5, viewangle=20} \DreiDKOSystem[subgriddiv=0, gridcolor=black!40]{5} \ThreeDput(0,0,0){% \psframe*[linecolor=gray!20](4,4)} \ThreeDput(2,2,0){\Huge Unten} \end{pspicture}

3 3 2 2 1 1 0 0

4 x5

Unten

3

4

y5

5y

2

3

3

1

4

0 0

1

1

2

2

1

2

0

3

0

5x 4

\usepackage{pst-3d}

5z 5 z 44

22-01-23

33 22 11 4

y5

2

3

3 4 y5 0 1 2 0

U

0 1

n te n

0

1

00 1

2

2

\begin{pspicture}(-4,-2.25)(2.25,2.75) \psset{unit=0.7,viewpoint=1 1.5 0.5, viewangle=-30} \DreiDKOSystem[subgriddiv=0, gridcolor=black!40]{5} \ThreeDput(0,0,0){% \psframe*[linecolor=gray!20](4,4)} \ThreeDput(2,2,0){\Huge Unten} \end{pspicture}

3

3 4

x

4

5

5x

normal

normal bezeichnet die Richtung des Normalenvektors, der senkrecht auf einer zugehörigen Fläche steht. Damit liegt durch den Normalenvektor eindeutig fest, wie ein Objekt im dreidimensionalen Raum liegt.

\usepackage{pst-3d} \begin{pspicture}(-4,-1.5)(3,5) \psset{viewpoint=1 1.5 0.5} \DreiDKOSystem[subgriddiv=0,gridcolor=black!40]{5} \ThreeDput(0,0,0){\psframe*[linecolor=gray!20](4,4)} \ThreeDput(2,2,0){\huge\psrotatedown{xy-Ebene}} \ThreeDput[normal=0 -1 0](0,0,0){\psframe*[linecolor=gray!15](4,4)} \ThreeDput[normal=0 1 0](2,0,2){\huge xz-Ebene} \ThreeDput[normal=1 0 0](0,0,0){\psframe*[linecolor=gray!10](4,4)} \ThreeDput[normal=1 0 0](0,2,2){\huge yz-Ebene} \ThreeDput[normal=0 0 1](0,0,0){\psline{->}(0,0)(0,5)\psline{->}(0,0)(5,0)}% xy \ThreeDput[normal=0 1 0](0,0,0){\psline{->}(0,0)(0,5)}% xz \end{pspicture}

367

ch23-pst3d.tex: (#312)

herbert

Dreidimensionale Abbildungen

z5 5z

22-01-24

4 4 3 3 2 2

yz-Eb ene 1 1 2

3

5 y

1 ene1 xy-Eb

4

1

2

2

3

3

3

0

4

4

0

x5

5x

0 0 0 0

1

e xz-Eben

2

22

4 y 5

Ohne eine Zuordnung durch den Normalenvektor hätte obiges Beispiel nicht so einfach erstellt werden können. Betrachten wir zum besseren Verständnis den Code schrittweise. \psset{viewpoint=1 1.5 0.5} der viewpoint wird auf den Punkt P (1, 1.5, 0.5) gesetzt. \DreiDKOSystem{5}

zuerst wird das Koordinatensystem mit dem Gitternetz gezeichnet, sodass Achsen und Gitter auf den Flächen sichtbar bleiben, was eine bessere optische Zuordnung ermöglicht. \ThreeDput(0,0,0){\psframe*[linecolor=gray!20](4,4)}

setzt ein Quadrat der Seitenlänge vier mit der unteren linken Kante in den Koordinatenursprung. Da hier kein Normalenvektor angegeben wurde, wird der Standardwert n ~ = (0, 0, 1) genommen, womit die Fläche im ersten Quadranten der xy-Ebene angeordnet wird. \ThreeDput(2,2,0){\huge\psrotatedown{xy-Ebene}}

setzt mittig zum Punkt (2, 2, 0) den um 180° gedrehten Text in die xy-Ebene. \ThreeDput[normal=0 -1 0](0,0,0){\psframe*[linecolor=gray!15](4,4)} setzt ein Quadrat der Seitenlänge vier mit der unteren linken Kante in den Koordinatenursprung. Da der Normalenvektor aber die »negative« y-Achse ist, wird das Quadrat im ersten Quadranten der xz-Ebene angeordnet. Mit normal=0 1 0 wäre es der zweite Quadrant gewesen.

\ThreeDput[normal=0 1 0](2,0,2){\huge xz-Ebene}

setzt mittig zum Punkt (2, 0, 2) den Text in die xz-Ebene. Weil die xz-Ebene vom Beobachtungspunkt aus gesehen, von hinten betrachtet wird, muss der Normalenvektor der Fläche umgedreht werden, ansonsten wäre der Schriftzug von »hinten« zu lesen.

\ThreeDput[normal=1 0 0](0,0,0){\psframe*[linecolor=gray!10](4,4)}

setzt ein Quadrat der Seitenlänge vier mit der unteren linken Kante in den Koordinatenursprung. Der Normalenvektor ist die »positive« x-Achse, daher wird das Quadrat im 1. Quadranten der yz-Ebene angeordnet. \ThreeDput[normal=1 0 0](0,2,2){\huge yz-Ebene}

368

ch23-pst3dTAB1.tex: (#110)

herbert

22.1 pst-3d: Schatten, Kippen und dreidimensionale Darstellungen

setzt mittig zum Punkt (0, 2, 2) den Text in die yz-Ebene. Da der Text auf der »postiven« Seite der Fläche geschrieben wird, bleibt der Normalenvektor derselbe. \ThreeDput[normal=0 0 1](0,0,0)

die Koordinatenachsen sind durch die drei Flächen überschrieben worden und werden jetzt noch einmal neu gezeichnet, zuerst die xy-Achsen. \ThreeDput[normal=0 1 0](0,0,0) und jetzt wird noch die z-Achse gezeichnet.

embedangle

Mit viewangle konnte man eine Rotation senkrecht zur Betrachterebene vornehmen. Mit embedangle kann man eine Rotation senkrecht zum Normalenvektor durchführen. Die Winkelzählung erfolgt im mathematischen Sinne, also linksherum.

\usepackage{pst-3d} \def\tBlack#1#2{\psframe[style=#2](2,2)% \rput(1,1){\textcolor{#1}{\textbf{PSTricks}}}} \newpsstyle{SolidYellow}{fillstyle=solid,fillcolor=yellow}% Text \newpsstyle{TransparencyRed}{fillstyle=vlines,hatchcolor=red, hatchwidth=0.1\pslinewidth,hatchsep=1\pslinewidth}% Text \newpsstyle{TransparencyBlue}{fillstyle=vlines,hatchcolor=gray!25, hatchwidth=0.1\pslinewidth,hatchsep=1\pslinewidth} \begin{pspicture}(-1.2,-2)(4.8,3.7) \ThreeDput{\psgrid[subgriddiv=0](-2,0)(4,3)} % embedangle=0 \ThreeDput(-1,0,0){\tBlack{black}{SolidYellow}} \ThreeDput(2,0,0){\tBlack{black}{SolidYellow}} \ThreeDput[embedangle=50](-1,0,0){\tBlack{gray}{TransparencyRed}} \ThreeDput[embedangle=50](2,0,0){\tBlack{gray}{TransparencyBlue}} % Die Normalenvektoren \ThreeDput[normal=0 1 0](-1,0,0){\psline[linewidth=0.1,linecolor=red](0,4)} \ThreeDput[normal=0 1 0](2,0,0){\psline[linewidth=0.1,linecolor=blue](0,4)} \end{pspicture} % \psset{viewpoint=1 1 100} \begin{pspicture}(-2.5,-4.75)(2.8,1.6) \ThreeDput{\psgrid[subgriddiv=0](-2,0)(4,3)} % embedangle=0 \ThreeDput(-1,0,0){\tBlack{black}{SolidYellow}} \ThreeDput(2,0,0){\tBlack{black}{SolidYellow}} \ThreeDput[embedangle=50](-1,0,0){\tBlack{gray}{TransparencyRed}} \ThreeDput[embedangle=50](2,0,0){\tBlack{gray}{TransparencyBlue}} % Die Normalenvektoren \ThreeDput[normal=0 1 0](-1,0,0){\psline[linewidth=0.1,linecolor=red](0,4)} \ThreeDput[normal=0 1 0](2,0,0){\psline[linewidth=0.1,linecolor=blue](0,4)} \end{pspicture}

369

ch23-pst3d.tex: (#312)

herbert

22

Dreidimensionale Abbildungen

0

-2

22-01-25

1

-1

2

P

3

S T ric ks

PSTricks

0 1

3 2

2

1 P

P

c ri ST 0

S T ric ks

4

ks

-1

PSTricks

PSTricks

3

0 -2

PSTricks

P

1

c ri ST ks

2 3

4

22.2 pst-ob3d: Einfache, dreidimensionale Objekte pst-ob3d stellt zwar nur Makros für einfache, dreidimensionale Objekte bereit, die aber dennoch Sinn machen, wenn man nicht auf die erweiterten Pakete wie pst-solides3d oder pst-3dplot zurückgreifen will.

22.2.1 Parameter Tabelle 22.4 zeigt eine Zusammenstellung der speziellen, für pst-ob3d geltenden Parameter. Tabelle 22.4: Zusammenfassung aller Parameter Name für pst-ob3d. PstDebug OnlyVisibleFaces RandomFaces Corners CornersColor CornersLength

Werte

Vorgabe

Wert Boolean Boolean Boolean Farbe Wert

0 false false false black 0.15

PstDebug PstDebug ermöglicht eine Markierung der Seitenflächen, um auf diese Weise einen

besseren Überblick über die Lage des Quaders beziehungsweise Würfels im Raum zu erhalten. b

\usepackage{pstricks,pst-ob3d} 22-02-1

b b

F

F

D

b

b

E A b

B C

A

B b

\begin{pspicture}(4,1.25) \rput(-.25,-0.3){\PstCube[PstDebug=1]{1}{2}{1}} \rput(3,0){\PstDie[PstDebug=1]} \end{pspicture}

370

ch23-pstob3d.tex: (#276)

herbert

22.2 pst-ob3d: Einfache, dreidimensionale Objekte

OnlyVisibleFaces OnlyVisibleFaces bezieht sich auf die Sichtbarkeit der Kanten. \usepackage{pstricks,pst-ob3d} 22-02-2

\begin{pspicture}(4,1.25) \rput(1,0){\PstCube{1}{1}{1}} \rput(3,0){% \PstCube[OnlyVisibleFaces=true]{1}{1}{1}} \end{pspicture}

Corners, CornersColor und CornersLength Corners bestimmt die Art der Ecken eines Quaders.

\usepackage{pstricks,pst-ob3d} \begin{pspicture}(10,1.25) \rput(1,0){\PstCube{1}{1}{1}} \rput(3,0){\PstCube[OnlyVisibleFaces=true,Corners=true]{1}{1}{1}} \rput(5,0){\PstCube[Corners=true,CornersColor=blue, fillstyle=solid,fillcolor=cyan,viewpoint=1 2 1]{1}{1}{1}} \rput(7,0){\PstCube[Corners=true,CornersLength=0.1, fillstyle=solid,fillcolor=cyan,viewpoint=2 1 1]{1}{1}{1}} \rput(9,0.2){\PstCube[Corners=true,fillstyle=solid,fillcolor=cyan, viewpoint=2 1 1]{1}{1}{1}} \end{pspicture}

22-02-3

22.2.2 Makros Es existieren nur die beiden folgenden Makros: \PstCube{x-Länge}{y-Länge}{z-Länge} \PstDie [Optionen]

Es existiert also nur der Einheitswürfel, andere Längen können über den lokalen optionalen Parameter unit eingestellt werden. \usepackage{pstricks,pst-ob3d}

371

ch23-pstob3d.tex: (#276)

herbert

22

Dreidimensionale Abbildungen

\begin{pspicture}(-1,-0.5)(\linewidth,1.7) \psset{fillstyle=solid,fillcolor=yellow,RandomFaces=true} \rput(0,0){\PstDie[viewpoint=1 -5 1]}\rput(1.5,0){\PstDie[viewpoint=1 -3 1]} \rput(3,-0.5){\PstDie[unit=1.5,dotscale=2,viewpoint=1 -1 1]} \rput(4.5,0){\PstDie[viewpoint=1 -0.3 1]}\rput(6,0){\PstDie[viewpoint=1 0.3 1]} \rput(7.5,0){\PstCube[viewpoint=1 1 1,fillcolor=magenta]{2}{1}{1}} \rput(9,0){\PstCube[viewpoint=1 3 3,fillcolor=cyan]{2}{1}{1}} \end{pspicture}

22-02-4 b

b b

b b

b

b b b

b

b

b

b b

b b

b

b

b

b

b

b

b

b

b b

b

b

b b

b

b

b b

b

b

b

b b

b

b

b b

b b

b b

b

b

b b

b

22.3 pst-gr3d: Dreidimensionale Gitter Das Paket pst-gr3d baut im Wesentlichen auf pst-3d auf, vereinfacht aber die Handhabung erheblich. Dreidimensionale Gittermodelle treten sehr häufig in Anwendungen auf, sodass dieses Paket eine echte Hilfe sein kann, obwohl man mit den meisten der anderen 3D-Pakete gleiches erreichen könnte, jedoch nicht in dieser für Gitter optimierten Form.[24] Das Paket benutzt ausschließlich \ThreeDput aus pst-3d (⇒ Abschnitt 22.1.3 auf Seite 363), sowie \psgrid aus dem Basispaket pstricks (⇒ Abschnitt 3.1 auf Seite 34).

22.3.1 Parameter Als Parameter stehen die in Tabelle 22.5 angegebenen Parameter neben den bereits in Abschnitt 22.1.3 auf Seite 363 definierten zur Verfügung. Tabelle 22.5: Zusammenfassung aller Parameter Name für pst-gr3d. PstDebug PstPicture GridThreeDXUnit GridThreeDYUnit GridThreeDZUnit GridThreeDXPos GridThreeDYPos GridThreeDZPos GridThreeNodes

372

ch23-pstgr3d.tex: (#275)

herbert

Werte

Vorgabe

0|1 Boolean Wert Wert Wert Wert Wert Wert Boolean

0 true 1 1 1 0 0 0 false

22.3 pst-gr3d: Dreidimensionale Gitter

PstDebug PstDebug kann auf den Wert 1 gesetzt werden, um die zugehörige Bounding-Box anzei-

gen zu lassen, falls es Probleme mit dem Positionieren gibt. \usepackage{pstricks,pst-gr3d} 22-03-1

\PstGridThreeD(3,1,1)

\usepackage{pstricks,pst-gr3d} 22-03-2

\psset{PstDebug=1} \PstGridThreeD(3,1,1)

Zu beachten ist unbedingt, dass das Paket pst-fill (⇒ Abschnitt 18.1.7 auf Seite 323) ebenfalls diese Option definiert und es zu Überschneidungen kommt, wenn man beide Pakete zusammen benutzt und nicht pst-fill vor pst-gr3d lädt. Nur bei dieser Reihenfolge funktioniert diese Option wie erwartet. PstPicture

Die boolsche Variable PstPicture legt fest, ob das zu erstellende Gitter in eine pspicture-Umgebung eingefügt werden soll oder nicht. Der Standardwert ist auf true gesetzt, um den notwendigen Platz zu reservieren. Dies kann aber ungünstig sein, wenn man einen anderen viewpoint (⇒ Abschnitt 22.1.3 auf Seite 365) als den vordefinierten benutzt, denn dann hat die Grafik durch die veränderte Betrachtungsrichtung eine andere Größe, die nicht mehr zur intern festgelegten der pspicture-Umgebung passt. \usepackage{pstricks,pst-gr3d} 22-03-3

X\rule{20pt}{0.5pt}\PstGridThreeD(3,1,1)% \rule{20pt}{0.5pt}X

X

X

\usepackage{pstricks,pst-gr3d} 22-03-4

X

X

X\rule{20pt}{0.5pt}% \PstGridThreeD[PstPicture=false](3,1,1)% \rule{20pt}{0.5pt}X

373

ch23-pstgr3d.tex: (#275)

herbert

22

Dreidimensionale Abbildungen

Wie man dem ersten Beispiel entnehmen kann, ist die intern festgelegte Größe der pspicture-Umgebung nicht optimiert, denn dann hätte die Linie, die der Basislinie entspricht, nicht innerhalb der Grafik beginnen dürfen. Im zweiten Beispiel ist es korrekt, dass beide Linien komplett in der Grafik liegen, denn es wird keine pspictureUmgebung erstellt, die entsprechenden Platz freihält. GridThreeDXUnit, GridThreeDYUnit, GridThreeDZUnit

Diese Parameter bezeichnen den Skalierungsfaktor für die drei Dimensionen, wobei dieser Faktor ein ganzzahlig Vielfaches sein muss; Dezimalzahlen sind daher nicht möglich. \usepackage{pstricks,pst-gr3d} 22-03-5

\psset{griddots=0} \PstGridThreeD(1,1,1)\hspace{20pt} \PstGridThreeD[GridThreeDXUnit=2](1,1,1) \par \PstGridThreeD[GridThreeDXUnit=2, GridThreeDYUnit=2](1,1,1)\hspace{25pt} \PstGridThreeD[GridThreeDXUnit=2, GridThreeDYUnit=2, GridThreeDZUnit=2](1,1,1)

GridThreeDXPos, GridThreeDYPos, GridThreeDZPos

Diese drei Parameter verschieben den Eckpunkt des Koordinatengitters, der normalerweise in (0, 0, 0) liegt, um die angegebenen Einheiten, wobei diese ein ganzzahlig Vielfaches sein müssen. Dezimalzahlen sind daher nicht möglich, aber sehr wohl negative ganze Zahlen. Im Beispiel ist der Quader um zwei Einheiten in die x-Richtung, eine Einheit in die y-Richtung und drei Einheiten in die z-Richtung verschoben worden. Der größte Teil des Quellcodes ist hier überflüssig, denn er dient nur dazu, den Vorgang anschaulicher zu machen. \PstGridThreeDHookEnd wird weiter unten noch behandelt werden. Die Festlegung von PstPicture=false im Beispiel-Quellcodes ist hier wichtig, denn sonst würde dieses in eine neue pspicture-Umgebung gesetzt werden, womit unweigerlich ein Offset des Quaders verbunden ist, da die Koordinatenursprünge dann nicht mehr identisch wären. \usepackage{pst-gr3d}\psset{GridThreeDNodes=true,arrowscale=2} 22-03-6

\def\PstGridThreeDHookEnd{% \ThreeDput(0,0,0){\rnode{A}{}}\ThreeDput(2,1,3){\rnode{B}{}}% \pcline[linestyle=dashed]{*->}(A)(B)% \PstGridThreeD[PstPicture=false,gridcolor=black,GridThreeDXPos=0, GridThreeDYPos=0,GridThreeDZPos=0](1,1,1)} \PstGridThreeD[linecolor=red,gridcolor=red,GridThreeDXPos=2, GridThreeDYPos=1,GridThreeDZPos=3](1,1,1)

374

ch23-pstgr3d.tex: (#275)

herbert

22.3 pst-gr3d: Dreidimensionale Gitter

GridThreeDNodes

Diese boolsche Variable legt fest, ob alle Gitterpunkte mit einem Knotenname versehen werden sollen. Standardmäßig ist diese Option auf false gesetzt, da der Speicherbedarf bei großen Gitternetzen nicht unerheblich ist. Die Knotenbezeichnung erfolgt in Matrixform: Gr3dNodexyz Der Name Gr3dNode wird von einer dreistelligen Zahl gefolgt, die den Koordinaten entspricht, beispielsweise ist dann Gr3dNode132 der Knoten den man erreicht, wenn man eine Einheit in x-, drei Einheiten in y- und zwei Einheiten in z-Richtung geht. Wie man dem Beispiel entnehmen kann, stehen die Knotennamen auch nach der Anwendung des Makros \PstGridThreeD zur Verfügung. Zu beachten ist, dass sie grundsätzlich global sind und durch wiederholte Anwendung von \PstGridThreeD überschrieben werden. Mit diesen definierten Knoten lassen sich nun vielfältige Dinge machen, beispielsweise beliebige Knotenverbindungen erstellen (siehe Beispiel). \usepackage{pstricks,pst-gr3d,pst-node,multido} \PstGridThreeD[GridThreeDNodes=true,unit=2.5](2,3,2) \multido{\ix=0+1}{3}{\multido{\iy=0+1}{4}{\multido{\iz=0+1}{3}{% \rput*(Gr3dNode\ix\iy\iz){\footnotesize $\ix\iy\iz$}}}} \psset{linecolor=blue,linestyle=dashed,linewidth=0.3pt,arrowscale=2,nodesep=8pt} \pcline{->}(Gr3dNode000)(Gr3dNode202)\pccurve{->}(Gr3dNode000)(Gr3dNode232) 032 22-03-7

022 012

132

002

122 031

112 021

102 011 001

222 131

212 121

202

030

111 020

101 010 000

232

231

221 130

211 120

201 110

230

100

220 210 200

375

ch23-pstgr3d.tex: (#275)

herbert

22

Dreidimensionale Abbildungen

22.3.2 Makros \PstGridThreeD

Im folgenden wird für die Gitter jeweils ein viewpoint=1.2 -0.6 0.8 verwendet, was jedoch keine EInschränkung darstellt, denn er kann jederzeit wieder geändert werden. \PstGridThreeD erwartet mindestens die Abgaben zu xyz. \PstGridThreeD [Optionen] (x, y, z)

Dieses Makro macht letztlich nichts anderes, als mithilfe von \multido mehrmals \ThreeDput{\psgrid} aufzurufen, um die Gitternetze zu zeichnen. Daraus folgt, dass man die Form des Gitters nicht mit den Optionen für Linien ändern kann, sondern mit den in Tabelle 3.2 auf Seite 35 zusammengefassten Optionen für \psgrid. \usepackage{pstricks,pst-gr3d} 22-03-8

\PstGridThreeD(1,1,1)\qquad \PstGridThreeD[griddots=0](1,2,1)

\usepackage{pstricks,pst-gr3d} 22-03-9

\PstGridThreeD[gridcolor=cyan,griddots=0](1,2,1)\qquad \PstGridThreeD[griddots=0,gridwidth=2pt](1,2,2)

\PstGridThreeDHookEnd

Durch die Verknüpfung der verschiedenen Makros, bei denen \psgrid am Ende stand, hatte man nur wenig Möglichkieten, direkt einzugreifen. Insbesondere dann, wenn alles noch in eine pspicture-Umgebung eingebettet wurde. Hier versucht \PstGridThreeDHookEnd anzusetzen, denn dieses Makro wird vor dem Ende der pspicture-Umgebung aufgerufen. Zuerst ist es als leeres Makro definiert. \PstGridThreeDHookEnd{}

Als Anwender kann man dieses Makro jetzt neu definieren und faktisch alles damit machen. Möchte man beispielsweise in einem erstellten Gitter einen bestimmten Bereich farbig hervorheben, so kann man diesen über \PstGridThreeDHookEnd noch einmal mit einer anderen Farbe neu zeichnen lassen. Wichtig ist dabei wieder die Option PstPicture auf false zu setzen, um keine neue pspicture-Umgebung zu öffnen.

376

ch23-pstgr3d.tex: (#275)

herbert

22.3 pst-gr3d: Dreidimensionale Gitter

\usepackage{pstricks,pst-gr3d,pst-node,multido} 22-03-10

\def\PstGridThreeDHookEnd{% \PstGridThreeD[PstPicture=false,griddots=0, gridcolor=red,gridwidth=2pt, GridThreeDYPos=1,GridThreeDZPos=2](1,1,1)}% \PstGridThreeD(1,2,3)

\PstGridThreeDHookXFace, \PstGridThreeDHookYFace und \PstGridThreeDHookZFace

Im Gegensatz zu \PstGridThreeDHookEnd werden diese Makros aufgerufen, wenn die jeweilige Koordinate gezeichnet wird. Damit kann man individuell in den Aufbau des Gitters eingreifen. Alle drei Makros sind als leer definiert und können beliebig neu definiert werden. \PstGridThreeDHookXFace{} \PstGridThreeDHookYFace{} \PstGridThreeDHookZFace{} \usepackage{pstricks,pst-gr3d} 22-03-11

\def\PstGridThreeDHookXFace{% \ifnum\multidocount=1 \psframe*[linecolor=cyan](3,2)\fi} \def\PstGridThreeDHookYFace{% \psset{griddots=0}} \PstGridThreeD(1,3,2) \def\PstGridThreeDHookXFace{}~ \def\PstGridThreeDHookYFace{% \ifnum\multidocount=2 \psframe*[linecolor=yellow](-3,0)(0,2)\fi} \PstGridThreeD(3,1,2)

\PstGridThreeDHookNode

Dieses Makro wird nach der Definition des Knotens aufgerufen und ist ebenfalls als leer definiert. \PstGridThreeDHookNode{} \PstGridThreeDNodeProcessor{Farbe}

Möchte man alle Knoten mit einem kleinen Kreis zeichnen, so kann man das intern definierte Makro \PstGridThreeDNodeProcessor verwenden, welches genau dies macht.

377

ch23-pstgr3d.tex: (#275)

herbert

22

Dreidimensionale Abbildungen

✌ ✌ ✌ ✌ ✌ ✌ ✌ ✌ ✌ ✌ ✌ ✌ ✌ ✌ ✌ ✌ ✌ ✌ ✌ ✌ ✌ ✌ ✌ ✌

\usepackage{pstricks,pst-gr3d,pifont} 22-03-12

{\def\PstGridThreeDHookNode{% \PstGridThreeDNodeProcessor{red}} \PstGridThreeD(1,3,2)}\quad \def\PstGridThreeDHookNode{% \psscalebox{2}{\ding{44}}} \PstGridThreeD(1,3,2)

\usepackage{pst-gr3d}

\def\PstGridThreeDHookEnd{{\psset{PstPicture=false,gridwidth=0.1} {\def\PstGridThreeDHookNode{\PstGridThreeDNodeProcessor{blue}} \PstGridThreeD[gridcolor=blue,GridThreeDZPos=3](0,7,0)} {\def\PstGridThreeDHookNode{\PstGridThreeDNodeProcessor{red}} \PstGridThreeD[gridcolor=red,GridThreeDXPos=1,GridThreeDZPos=1](0,3,1)} {\def\PstGridThreeDHookNode{\PstGridThreeDNodeProcessor{green}} \PstGridThreeD[gridcolor=green,GridThreeDYPos=6](1,1,1)}}} \PstGridThreeD[gridwidth=0.04,GridThreeDNodes=true](1,7,3) \rput([Rx=0.15,angle=140]Gr3dNode033){\psline[linecolor=blue]{](0,0,0)(1,10,50)} \def\oAB{\pstThreeDEllipse[beginAngle=58,endAngle=90](0,0,0)(1,140,40)(1,10,50)} \begin{pspicture}(-4.8,-1.75)(4.8,3.75) \psset{unit=4cm,drawCoor,beginAngle=90,endAngle=180,linestyle=dotted} \pstThreeDCoor[drawing, linewidth=1pt,linecolor=black,% linestyle=solid,xMin=0,xMax=1.1, yMin=0,yMax=1.1, zMin=0,zMax=1.1] \pstThreeDEllipse(0,0,0)(-1,0,0)(0,1,0) \pstThreeDEllipse(0,0,0)(-1,0,0)(0,0,1) \pstThreeDEllipse[beginAngle=0,endAngle=90](0,0,0)(0,0,1)(0,1,0) \psset{SphericalCoor,linestyle=solid} \pstThreeDDot[dotstyle=none](1,10,50) \pstThreeDDot[dotstyle=none](1,60,70) \pscustom[fillstyle=crosshatch,linestyle=none]{\oB\oAB\oA} \oA \oB \oAB \pstThreeDPut[origin=lb](1.1,60,70){$\vec\Omega_1$} \pstThreeDPut[origin=rb](1.2,10,50){$\vec\Omega_2$} \pstThreeDPut[origin=lb](1,10,65){$\gamma_{12}$} \end{pspicture} z 22-05-24

~1 Ω γ12 ~2 Ω

x

y

RotX, RotY und RotZ

Diese Rotationsparameter geben den Winkel an, um den das dreidimensionale Objekt jeweils rotiert werden soll, wobei sich X|Y|Z auf die Achse beziehen. Die standardmäßige Reihenfolge entspricht der alphabetischen Anordnung X|Y|Z, kann aber über den Parameter RotSequence verändert werden. \usepackage{pstricks,pst-3dplot} \begin{pspicture}(-2,-1.5)(2,2) \pstThreeDCoor[xMin=0,xMax=2,yMax=2,zMax=2] \pstThreeDBox(0,0,0)(.5,0,0)(0,1,0)(0,0,1.5) \pstThreeDBox[RotX=90,linecolor=red](0,0,0)(.5,0,0)(0,1,0)(0,0,1.5) \pstThreeDBox[RotX=90,RotY=90,linecolor=green](0,0,0)(.5,0,0)(0,1,0)(0,0,1.5) \pstThreeDBox[RotX=90,RotY=90,RotZ=90,linecolor=blue](0,0,0)(.5,0,0)(0,1,0)(0,0,1.5) \end{pspicture}

395

ch23-pst3dplot.tex: (#277)

herbert

22

Dreidimensionale Abbildungen

z 22-05-25

y

x

RotSequence

Standardmäßig wird in der Reihenfolge x-y-z um die Achsen gedreht, wobei die Gesamtrotation nicht kommutativ ist, sodass mit einer Änderung der Rotationssequenz ein anderes Ergebnis erreicht werden kann. Es sind alle sechs Kombinationen möglich: xyz|xzy|zxy|zyx|yxz|yzx.

\usepackage{pst-3dplot,pst-grad} \psset{unit=1.5,linewidth=1.5pt} \begin{pspicture}(-2,-1.75)(2,2) \pstThreeDCoor[xMin=0,xMax=2,yMin=0,yMax=2,zMin=0,zMax=2] \pstThreeDBox[RotX=90,RotY=90,RotZ=90,linecolor=red](0,0,0)(.5,0,0)(0,1,0)(0,0,1.5) \pstThreeDBox[RotSequence=xzy,RotX=90,RotY=90,RotZ=90, linecolor=yellow](0,0,0)(.5,0,0)(0,1,0)(0,0,1.5) \pstThreeDBox[RotSequence=zyx,RotX=90,RotY=90,RotZ=90, linecolor=green](0,0,0)(.5,0,0)(0,1,0)(0,0,1.5) \pstThreeDBox[RotSequence=zxy,RotX=90,RotY=90,RotZ=90, linecolor=blue](0,0,0)(.5,0,0)(0,1,0)(0,0,1.5) \pstThreeDBox[RotSequence=yxz,RotX=90,RotY=90,RotZ=90, linecolor=cyan](0,0,0)(.5,0,0)(0,1,0)(0,0,1.5) \pstThreeDBox[RotSequence=yzx,RotX=90,RotY=90,RotZ=90, linecolor=magenta](0,0,0)(.5,0,0)(0,1,0)(0,0,1.5) \pstThreeDBox[fillstyle=gradient,RotX=0](0,0,0)(.5,0,0)(0,1,0)(0,0,1.5) \end{pspicture}%

z 22-05-26

x

y

396

ch23-pst3dplot.tex: (#277)

herbert

22.5 pst-3dplot: 3D-Parallelprojektionen von Funktionen und Daten

eulerRotation

Normalerweise erfolgt eine Rotation um die drei Achsen des dreidimensionalen Ausgangs-Koordinatensystems. Mit der Option eulerRotation=true kann die Rotation derartig beeinflusst werden, dass bei jeder Rotation um eine der Achsen das Koordinatensystem ebenfalls mit rotiert wird, sodass eine neue Anordnung der Achsen entsteht und sich die nächste Rotation dann darauf bezieht. \usepackage{pstricks,pst-3dplot,pst-grad}

z 22-05-27

x y

\psset{unit=1.5,linewidth=1.5pt} \begin{pspicture}(-2,-1.75)(2,2)% \psset{Alpha=30} \pstThreeDCoor[xMin=0,xMax=2,yMin=0, yMax=2,zMin=0,zMax=2]% \pstThreeDBox(0,0,0)(.5,0,0)(0,1,0)(0,0,1.5) \pstThreeDBox[RotX=90,RotZ=90,RotSequence=zxy, linecolor=red](0,0,0)(.5,0,0)(0,1,0)(0,0,1.5) \end{pspicture}

\usepackage{pstricks,pst-3dplot,pst-grad}

z 22-05-28

x y

\psset{unit=1.5,linewidth=1.5pt} \begin{pspicture}(-2,-1.75)(2,2) \psset{Alpha=30} \pstThreeDCoor[xMin=0,xMax=2,yMin=0, yMax=2,zMin=0,zMax=2] \pstThreeDBox(0,0,0)(.5,0,0)(0,1,0)(0,0,1.5) \pstThreeDBox[RotX=90,RotZ=90,RotSequence=zxy, eulerRotation,linecolor=blue]% (0,0,0)(.5,0,0)(0,1,0)(0,0,1.5) \end{pspicture}

SegmentColor

Die einzelnen Segmente der Kugel oder des Paraboloids können mit einer Farbe versehen werden, wobei diese auf den Körper als Ganzes bezogen wird, auch wenn der Name SegmentColor anderes vermuten lässt. Die Farbe muss im CMYK-Farbmodell vorgegeben werden, da die Füllung auf PS-Ebene Farbmodell erfolgt. Damit das Paket xcolor die Farbe richtig einliest, muss sie in Klammern gesetzt werden: SegmentColor={[cmyk]{c,m,y,k}}. \usepackage{pst-3dplot} \begin{pspicture}(-3,-2)(8,7) \psset{Alpha=60,Beta=20} \pstThreeDCoor[xMax=5,yMax=8,zMax=7] \pstThreeDSphere(4,4,4){2} \pstThreeDDot[drawCoor](4,4,4) \pstThreeDSphere[SegmentColor={[cmyk]{0.1,0.7,0.9,0.3}}](2,7,7){1.5}

397

ch23-pst3dplot.tex: (#277)

herbert

22

Dreidimensionale Abbildungen

\pstThreeDDot[drawCoor](2,7,7) \end{pspicture}

z 22-05-29

b

b

y

x

Die Kugel oder der Paraboloid werden grundsätzlich mit einer Farbe gefüllt. Möchte man dies verhindern, so kann mit SegmentColor={[cmyk]{0,0,0,0}} die Farbe white als Füllfarbe gewählt werden.

xyzLight

Die Option SegmentColor bezieht sich auf eine Lichtquelle, sodass grundsätzlich keine konstante Färbung erfolgt. Mit xyzLight kann der Ort der Lichtquelle angegeben werden, der mit (1, 1, 2) vorbelegt ist.

\usepackage{pstricks,pst-3dplot} \begin{pspicture}(-3,-2)(8,5) \psset{Alpha=60,Beta=20} \pstThreeDCoor[xMax=5,yMax=8,zMax=5] \pstThreeDSphere(4,4,3){2} \pstThreeDDot[drawCoor](4,4,3) \pstThreeDSphere[xyzLight=0 1 0](2,7,5){1.5} \pstThreeDDot[drawCoor](2,7,5) \end{pspicture}

398

ch23-pst3dplot.tex: (#277)

herbert

22.5 pst-3dplot: 3D-Parallelprojektionen von Funktionen und Daten

z 22-05-30

b

b

y

x

increment und Hincrement

Die Option increment gibt die Größe eines Kugel- oder Paraboloidsegments in Grad an und ist mit 10◦ vorbesetzt, sodass insgesamt 36 Segmente gezeichnet werden. \usepackage{pstricks,pst-3dplot} \begin{pspicture}(-3,-1.5)(7.5,3) \psset{Alpha=60,Beta=10} \pstThreeDCoor[xMax=5,yMax=8,zMax=3] \pstThreeDPut(4,4,0){\pstParaboloid[increment=20]{2}{3}} \pstThreeDDot[drawCoor](4,4,0) \pstThreeDPut(2,7,2){\pstParaboloid[increment=6]{1.5}{1.5}} \pstThreeDDot[drawCoor](2,7,2) \end{pspicture}%

z 22-05-31

b

x

y b

Für einen Zylinder kennzeichnet increment die Schrittweite für den Winkel und Hincrement die Schrittweite für die Höhe, mit der Vorgabe von 0.5 Längeneinheiten.

399

ch23-pst3dplot.tex: (#277)

herbert

22

Dreidimensionale Abbildungen

z

\usepackage{pst-3dplot} 22-05-32

\begin{pspicture}(-3,-2)(3,7) \psset{Beta=10} \pstThreeDCoor[zMax=6] \psCylinder[increment=5]{2}{5} \end{pspicture}

y

x

\usepackage{pst-3dplot}

z

22-05-33

y

x

\begin{pspicture}(-3,-2)(3,2) \psset{Beta=10} \pstThreeDCoor[zMax=1] \psCylinder[increment=5, Hincrement=0.1]{2}{0.5} \end{pspicture}

22.5.2 Koordinatenachsen Die Syntax zur Erstellung der Koordinatenachsen ist \pstThreeDCoor [Optionen]

Ohne Angaben von Optionen erhält man das Koordinatenkreuz mit den Standardwerten: xMin=-1,xMax=4,yMin=-1,yMax=4, zMin=-1,zMax=4,Alpha=45,Beta=30 \usepackage{pstricks,pst-3dplot}

z

22-05-34

\psset{unit=0.75} \begin{pspicture}(-3,-1)(3,3.25) \pstThreeDCoor \end{pspicture}

x

y

400

ch23-pst3dplot.tex: (#277)

herbert

22.5 pst-3dplot: 3D-Parallelprojektionen von Funktionen und Daten

\usepackage{pstricks,pst-3dplot}

z 22-05-35

\begin{pspicture}(-2,-1)(1,2) \psset{Alpha=-60,Beta=30} \pstThreeDCoor[linewidth=1.5pt,linecolor=blue, xMax=2,yMax=2,zMax=2] \end{pspicture}

x

y z

y

\begin{pspicture}(-2,-1)(1,2) \psset{Alpha=120,Beta=30} \pstThreeDCoor[linewidth=1.5pt,linecolor=blue, xMin=0,xMax=2,yMin=0,yMax=2,zMin=0,zMax=2] \end{pspicture}

x

x

\usepackage{pstricks,pst-3dplot}

22-05-36

z

\begin{pspicture}(-2,-1)(1,2) \psset{Alpha=-60,Beta=70} \pstThreeDCoor[xMax=2,yMax=2,zMax=2] \end{pspicture}

y

Die Winkel Alpha und Beta beeinflussen die Darstellung aller Makros und sollten daher in jedem Fall global mit \psset gesetzt werden.

Alpha und Beta

Die standardmäßige Darstellung über den Drehwinkel α und den Kippwinkel β ist nur eine der verschiedenen Möglichkeiten zur Anordnung von dreidimensionalen Koordinatensystemen. Das Paket pst-3dplot unterstützt ebenfalls weitere Darstellungen, die jedoch zum jetzigen Zeitpunkt noch experimentellen Charakter haben. Dem Parameter coorType kann durch Zuweisung eines Wertes von 0 . . . 3 die jeweilige Darstellungsvariante mitgeteilt werden. coorType=0 Das Standardverhalten wie bisher beschrieben. coorType=1 Die y–z-Achsen sind orthogonal und der Winkel zwischen der x- und

y-Achse ist durch α gegeben. Der Winkel β ist bedeutungslos. coorType=2 Die y–z-Achsen sind orthogonal und der Winkel zwischen der x- und

√ y-Achse ist 135 Grad und die x-Achse ist um den Wert 1/ 2 verkürzt. Der Winkel α hat nur für eventuelle Label eine Bedeutung und β ist wirkungslos. coorType=3 Die y–z-Achsen sind orthogonal und der Winkel zwischen der x- und √ y-Achse ist 45 Grad und die x-Achse ist um den Wert 1/ 2 verkürzt. Der Winkel α hat nur für eventuelle Label eine Bedeutung und β ist wirkungslos. coorType=4 Wie Typ 2, nur als Trimetrie-Skalierung.

401

ch23-pst3dplot.tex: (#277)

herbert

22

Dreidimensionale Abbildungen

z

\usepackage{pst-3dplot} 22-05-37

\psset{coorType=1} \begin{pspicture}(-2,-1)(3,2.5) \pstThreeDCoor[xMax=2,yMax=2,zMax=2] \end{pspicture}

y

z

\psset{coorType=2} \begin{pspicture}(-2,-1)(3,2.5) \pstThreeDCoor[xMax=2,yMax=2,zMax=2] \end{pspicture}

x

\psset{coorType=3} \begin{pspicture}(-2,-1)(3,2.5) \pstThreeDCoor[xMax=2,yMax=2,zMax=2] \end{pspicture}

y x

\psset{coorType=4} \begin{pspicture}(-2,-1)(3,2.5) \pstThreeDCoor[xMax=2,yMax=2,zMax=2] \end{pspicture}

z

x y

z

y x

22.5.3 Allgemeine Makros \pstThreeDPut

Die Syntax ist ähnlich zum \rput-Makro: \pstThreeDPut [Optionen] (x, y, z){Material }

402

ch23-pst3dplot.tex: (#277)

herbert

22.5 pst-3dplot: 3D-Parallelprojektionen von Funktionen und Daten

\usepackage{pstricks,pst-3dplot}

z 22-05-38 b

TUGboat

\begin{pspicture}(-2,-1)(1,2) \psset{Alpha=-60,Beta=-30} \pstThreeDCoor[linecolor=blue, xMax=2,yMax=2,zMax=2] \pstThreeDPut(1,0.5,2){\red\large TUGboat} \pstThreeDDot[drawCoor](1,0.5,2) \end{pspicture}

y

x

Intern definiert \pstThreeDPut einen zweidimensionalen Knoten temp@pstNode und benutzt dann das \rput-Makro. Daher sind die dreidimensionalen Koordinaten derartiger Knoten nach Definition nicht mehr bekannt.

\pstThreeDNode

Die Syntax ist \pstThreeDNode(x, y, z){Knotenname}

Dadurch, dass (x,y,z ) intern als zweidimensionaler Knoten gespeichert wird, kann dieser nicht als Ersatz für das Koordinatentripel (x,y,z ) im Sinne der speziellen Koordinaten von PSTricks genommen werden (⇒ Abschnitt 12 auf Seite 155). Sind A and B zwei derartig definierte Knoten, dann zeichnet \psline{A}{B} eine Linie von A nach B.

\pstThreeDDot

Die Syntax für einen Punkt ist \pstThreeDDot [Optionen] (x, y, z)

Punkte können einschließlich der Koordinaten (gestrichelte Linien) gezeichnet werden. \usepackage{pstricks,pst-3dplot}

z 22-05-39 b

x b

y

\begin{pspicture}(-2,-1.5)(2,2) \psset{xMin=-2,xMax=2,yMin=-2,yMax=2, zMax=2,Beta=25} \pstThreeDCoor \psset{dotstyle=*,dotscale=2,drawCoor} \pstThreeDDot(-1,1,1)\pstThreeDDot(1.5,-1,-1) \end{pspicture}

403

ch23-pst3dplot.tex: (#277)

herbert

22

Dreidimensionale Abbildungen

\usepackage{pst-3dplot,multido}

z

22-05-40 rs rs rs rs

x rs

rs

y rs

\begin{pspicture}(-4,-2)(3,3.25) \psset{xMin=-3.5,xMax=3.5, yMin=-7,yMax=6,zMin=-2, zMax=2.5,Alpha=20,Beta=15} \pstThreeDCoor \psset{dotstyle=square, dotsize=5pt,linecolor=blue, drawCoor} \multido{\n=-3+1}{7}{% \pstThreeDDot(\n,\n,\n)} \end{pspicture}

\pstThreeDLine

Die Syntax zum Zeichnen einer dreidimensionalen Linie ist: \pstThreeDLine [Optionen] (x1 , y1 , z1 )(x2 , y2 , z2 )

Es sind alle Optionen möglich, die allgemein für Linien existieren. \usepackage{pstricks,pst-3dplot}

z

22-05-41

b

x

y

b

\psset{xMin=-2,xMax=2,yMin=-2,yMax=2,zMax=2} \begin{pspicture}(-2,-2)(2,2.25) \pstThreeDCoor \psset{dotstyle=*,drawCoor} \pstThreeDDot(-1,1,0.5) \pstThreeDDot(1.5,-1,-1) \pstThreeDLine[linewidth=3pt, arrows=->](-1,1,0.5)(1.5,-1,-1) \end{pspicture}

22.5.4 Einfache geometrische Objekte \pstThreeDTriangle

Ein Dreieck ist durch seine drei Eckpunkte gegeben: \pstThreeDTriangle [Optionen] (P1 )(P2 )(P3 )

Hat fillstyle einen anderen Wert als none, dann wird das Dreieck mit der aktuellen Füllfarbe gefüllt, wobei allerdings darauf zu achten ist, dass dadurch alles Dahinter liegende nicht mehr sichtbar ist.

404

ch23-pst3dplot.tex: (#277)

herbert

22.5 pst-3dplot: 3D-Parallelprojektionen von Funktionen und Daten

\usepackage{pstricks,pst-3dplot}

z 22-05-42

\begin{pspicture}(-3,-4)(3,3.25) \pstThreeDCoor[xMin=-4,zMax=3] \pstThreeDTriangle[fillcolor=yellow, fillstyle=solid,linecolor=blue, linewidth=1.5pt]% (5,1,2)(3,4,-1)(-1,-2,2) \pstThreeDTriangle[drawCoor, linecolor=black,linewidth=2pt]% (3,1,-2)(1,4,-1)(-2,2,0) \end{pspicture}

b

y

x

b

b

\pstThreeDSquare

Die Syntax für ein Rechteck ist: \pstThreeDSquare [Optionen] (~ o)(u ~ )(v~) \usepackage{pstricks,pst-3dplot}

z 22-05-43

v~

\begin{pspicture}(-1,-1)(4,4) \pstThreeDCoor[xMin=-4,xMax=1,yMax=2,zMax=4] \psset{arrows=->,arrowsize=0.2, linecolor=blue,linewidth=1.5pt} \pstThreeDLine[linecolor=green](0,0,0)(-2,2,3) \uput[45](1.5,1){$\vec{o}$} \pstThreeDLine(-2,2,3)(2,2,3) \uput[0](3,2){$\vec{u}$} \pstThreeDLine(-2,2,3)(-2,3,3) \uput[180](1,2){$\vec{v}$} \end{pspicture}

u ~ ~o

x y

z

\usepackage{pstricks,pst-3dplot} b

22-05-44

b

b b

x

\begin{pspicture}(-2,-2)(4,3) \pstThreeDCoor[xMin=-3,xMax=3, yMax=4,zMax=3] \psset{fillstyle=solid, drawCoor,dotstyle=*} \pstThreeDSquare% (-2,2,3)(4,0,0)(0,1,0) \end{pspicture}

y

405

ch23-pst3dplot.tex: (#277)

herbert

22

Dreidimensionale Abbildungen

Rechtecke sind nichts anderes als ein geschlossener Polygonzug, welcher im Punkt Po (Stützvektor) beginnt und endet und durch seine beiden Richtungsvektoren bestimmt ist, die hier auch gleichzeitig die Länge der jeweiligen Seite angeben. Die Rechtecke können in der üblichen Art und Weise mit einer Farbe oder einem Muster gefüllt werden.

\pstThreeDBox

Ein Quader baut auf Rechtecken auf und hat daher eine ähnliche Syntax: \pstThreeDBox [Optionen] (~ o)(u ~ )(v~)(w ~)

Neben dem Stützvektor ~o sind die drei Richtungsvektoren u ~ , v~ und w ~ anzugeben, die mit ihrem Betrag gleichzeitig die Kantenlänge festlegen. \usepackage{pstricks,pst-3dplot}

z

22-05-45

\begin{pspicture}(-1,-1)(3,4.25) \psset{Alpha=30,Beta=30} \pstThreeDCoor[xMin=-3,xMax=1,yMax=2] \pstThreeDBox(-1,1,2)(0,0,2)(2,0,0)(0,1,0) \pstThreeDDot[drawCoor](-1,1,2) \psset{arrows=->,arrowsize=0.2} \pstThreeDLine[linecolor=green](0,0,0)(-1,1,2) \uput[0](0.5,0.5){$\vec{o}$} \uput[0](0.9,2.25){$\vec{u}$} \uput[90](0.5,1.25){$\vec{v}$} \uput[45](2,1.){$\vec{w}$} \pstThreeDLine[linecolor=blue](-1,1,2)(-1,1,4) \pstThreeDLine[linecolor=blue](-1,1,2)(1,1,2) \pstThreeDLine[linecolor=blue](-1,1,2)(-1,2,2) \end{pspicture}

u ~ b

v~

w ~ ~o x y

z

\usepackage{pstricks,pst-3dplot} 22-05-46

x

y

\begin{pspicture}(-1,-1)(3,3.25) \pstThreeDCoor[xMin=-3,xMax=1,yMax=2, zMax=2] \pstThreeDBox(-2,0,0)(0,0,1)(2,0,0)(0,1,0) \end{pspicture}

\pstThreeDEllipse und \pstThreeDCircle

Ausgehend von der zweidimensionalen Form lautet die Gleichung einer Ellipse im dreidimensionalen Raum: e : x~ = ~c + cos α · u ~ + sin α · v~,

0 ≤ α ≤ 360°

406

ch23-pst3dplot.tex: (#277)

herbert

(22.1)

22.5 pst-3dplot: 3D-Parallelprojektionen von Funktionen und Daten

worin ~c das Zentrum der Ellipse und u ~ bzw. v~ die senkrecht aufeinander stehenden Vektoren der Halbachsen sein müssen. Es existieren zwei Parameter für das Erstellen eines Ellipsenbogens bzw. Kreisbogens: beginAngle=0 endAngle=360

Ellipsen und Kreise werden mit dem Makro \parametricplotThreeD (siehe Abschnitt 22.5.5 auf Seite 413) erstellt, bei dem die Zahl der Stützpunkte auf 50 gesetzt ist. Für sehr schmale Ellipsen kann dies zu ungünstigen Kurvenverläufen führen, sodass diese Zahl entsprechend zu erhöhen ist. Die Syntax des Ellipsen-Makros ist \pstThreeDEllipse [Optionen] (~ c)(u ~ )(v~)

worin ~c das Zentrum ist und u ~ bzw. v~ die beiden Vektoren der Halbachsen sind, welche in der Notation (x,y,z ) einzugeben sind. \usepackage{pstricks,pst-3dplot}

z 22-05-47

\psset{xMin=-1,xMax=2,yMin=-1,yMax=2,zMin=-1,zMax=2} \begin{pspicture}(-2,-2)(2,2) \pstThreeDCoor \pstThreeDDot[linecolor=red,% drawCoor](1,0.5,0.5)% center \psset{linecolor=blue, linewidth=1.5pt} \pstThreeDEllipse(1,0.5,0.5)(-0.5,1,0.5)(1,-0.5,-1) % settings for an arc \psset{beginAngle=0,endAngle=270,arrows=|-|} \pstThreeDEllipse(1,0.5,0.5)(-0.5,0.5,0.5)(0.5,0.5,-1) \end{pspicture}

b

y

x

u = ~ v = r. Das Makro Der Kreis ist bekanntlich der Spezialfall der Ellipse mit ~ \pstThreeDCircle ist prinzipiell nichts anderes als ein Synonym für \pstThreeDEllipse. In dem folgenden Beispiel ist der Kreis mit 20 Punkten und der Option showpoints gezeichnet worden. \usepackage{pstricks,pst-3dplot}

z 22-05-48

b

b b b

b

b b

b

b b

b

b b

b

b

x

b

b b

b

b

y

\begin{pspicture}(-2,-1)(2,2) \pstThreeDCoor[xMax=2,yMax=2,zMax=2] \psset{plotpoints=20,showpoints} \pstThreeDCircle% (1.6,.6,1.7)(.8,.4,.8)(.8,-.8,-.4) \pstThreeDDot[drawCoor](1.6,.6,1.7) \end{pspicture}

\pstThreeDSphere

Die Syntax für die Erstellung einer Kugel ist relativ einfach, wobei (x, y, z) das Zentrum der Kugel ist:

407

ch23-pst3dplot.tex: (#277)

herbert

22

Dreidimensionale Abbildungen

\pstThreeDSphere [Optionen] (x, y, z){Radius}

\usepackage{pstricks,pst-3dplot} \begin{pspicture}(-5,-5)(3,6) \psset{Alpha=20,Beta=35} \pstThreeDCoor[xMax=5,yMin=-2,yMax=8,zMax=7] \pstThreeDDot[drawCoor](4,4,4)\pstThreeDDot[drawCoor](2,7,7) \pstThreeDDot[drawCoor](2,-2,4)\pstThreeDSphere(4,4,4){2} \pstThreeDSphere[SegmentColor={[cmyk]{0,0,0,0}},linecolor=black](2,7,7){1.5} \pstThreeDSphere[linecolor=black,SegmentColor={[cmyk]{.8,.1,.11,0}}](2,-2,4){1.5} \end{pspicture}

z 22-05-49

b

b

b

x

y

\pstParaboloid

Die Oberfläche des Paraboloids wird analog zur Kugel durch Vierecke berechnet, wodurch eine Flächenfärbung erreicht werden kann. Die Syntax für die Erstellung eines Paraboloids ist: \pstParaboloid[Parameter ]{Höhe}{Radius}

Der Scheitelpunkt des Paraboloids liegt grundsätzlich im Koordinatenursprung, kann jedoch mithilfe des Makros \pstThreeDPut an jede beliebige Stelle verschoben werden. Die beiden Parameter können zwar frei gewählt werden, hängen jedoch voneinander ab, denn der angegebene Radius bezieht sich auf die Höhe und umgekehrt.

408

ch23-pst3dplot.tex: (#277)

herbert

22.5 pst-3dplot: 3D-Parallelprojektionen von Funktionen und Daten

\usepackage{pstricks,pst-3dplot}

z 22-05-50

\begin{pspicture}(-2,-1)(2,5) \pstThreeDCoor[xMax=2,yMax=2, zMin=0,zMax=6,IIIDticks] \pstParaboloid{5}{1}% Höhe 5 und Radius 1 \end{pspicture}

x

y

\usepackage{pstricks,pst-3dplot} \begin{pspicture}(-.5\linewidth,-1)(.5\linewidth,5) \pstParaboloid[showInside=false,SegmentColor={[cmyk]{0.8,0.1,.11,0}}]{3}{5} \pstThreeDCoor[xMax=3,yMax=3,zMax=6,IIIDticks] \end{pspicture} z 22-05-51

x

y

22.5.5 Mathematische Funktionen Es existieren analog zu pst-plot zwei verschiedene Makros zum Erstellen von mathematischen Funktionen, hier in Abhängigkeit von zwei Variablen z = f (x, y). \psplotThreeD

Dieses Makro hat eine andere Syntax als das vergleichbare aus dem Paket pst-plot, wird aber in derselben Weise benutzt: \psplotThreeD [Optionen] (xMin , xMax )(yMin , yMax ){Funktionsterm}

409

ch23-pst3dplot.tex: (#277)

herbert

22

Dreidimensionale Abbildungen

Der Funktionsterm ist wie üblich entweder in PS- oder algebraischer Notation zu erstellen, wobei die einzigen gültigen Variablennamen x und y sind. So steht beispielsweise {x p y dup mul add sqrt} als PS-Notation für den mathematischen Ausdruck x2 + y 2 . In der algebraischen Notation müsste er als sqrt(x^2+y^2) eingegeben werden. Die Option plotpoints ist aufgeteilt in xPlotpoints und yPlotpoints und kann auch entsprechend getrennt gesetzt werden (Tabelle 22.8). Die Option hiddenLine realisiert nur einen rudimentären hidden-line-Algorithmus , indem die Kurve von hinten nach vorne gezeichnet und dabei mit der aktuellen Füllfarbe gefüllt wird. \usepackage{pst-3dplot} \begin{pspicture}(-6,-3)(6,4) \psset{Alpha=45,Beta=15} \psplotThreeD[plotstyle=curve,yPlotpoints=50,xPlotpoints=80, linewidth=0.5pt](-4,4)(-4,4){\func}% \func siehe Präambel \pstThreeDCoor[xMax=5,yMax=5,zMax=3.5] \end{pspicture}

22-05-52

z

y

x

Die Gleichung 22.2 ist durch die folgenden Beispiele dargestellt.   2 2 2 2 x z = 10 x3 + xy 4 − e−(x +y ) + e−((x−1.225) +y ) 5 Tabelle 22.8: Zusätzliche Parameter für die Plot-Makros. Name xPlotpoints yPlotpoints hiddenLine

410

ch23-pst3dplot.tex: (#277)

herbert

(22.2)

Typ

Vorgabe

Wert Wert Boolean

25 25 false

22.5 pst-3dplot: 3D-Parallelprojektionen von Funktionen und Daten

\usepackage{pstricks,pst-3dplot} \begin{pspicture}(-6,-3)(6,4) \psset{Alpha=45,Beta=15} \psplotThreeD[plotstyle=curve,yPlotpoints=50,xPlotpoints=80, linewidth=0.5pt,hiddenLine](-4,4)(-4,4){\func} \pstThreeDCoor[xMax=5,yMax=5,zMax=3.5] \end{pspicture}

22-05-53

z

y

x

Die Funktion wird prinzipiell durch zwei Schleifen bestimmt: for (float y=yMin; y}(0,0,0)(7.5,11.25,10) \psset{solidmemory,action=none} \psSolid[object=cube,a=4,name=A1](0,0,0) \psSolid[object=plan,definition=solidface,args=A1 0,name=P0] \psset{fontsize=100} \psProjection[object=texte,linecolor=red,text=A,plan=P0]

433

ch23-pstsolides3d.tex: (#279)

herbert

22

Dreidimensionale Abbildungen

\psSolid[object=cube,a=4,RotX=-30,RotY=60,RotZ=-60,name=A2](7.5,11.25,10) \psSolid[object=plan,definition=solidface,args=A2 0,name=P’0] \psProjection[object=texte,text=A,plan=P’0] \axesIIID(2,2,2)(10,12,8) \end{pspicture}

z 22-06-54

A

y b

A′ x

22.6.7 Projektionen mit \psProjection Das Makro erlaubt Projektionen von zweidimensionalen Objekten in einer beliebigen dreidimensionalen Ebene, die jeweils zuvor durch das Makro \psSolid festgelegt werden muss. \psProjection [Optionen] (x, y )

Tabelle 22.11: Zusammenfassung wichtiger Parameter für pst-solides3d

Name

Werte

object args pos

Objektname Wert Wert ul|cl|bl|dl| ur|cr|br|dr uc|cc|bc|dc| ur|cr|br|dr Boolean x0 x1 y 0 y 1 Wert Funktion

planmarks base fontsize function

Vorgabe

bl

false -3 3 -2 2 –

Name

Werte

definition

Objektname

text name plan path showBase range resolution transform

String String Object PS code Boolean x0 x1 y 0 y 1 Wert PS code

434

ch23-pstsolides3d.tex: (#279)

herbert

Vorgabe

– – -3 3 -2 2 –

22.6 pst-solides3d: 3D-Ansichten

Die Ebene wird durch ihre Gleichung r · x + s · y + t · z + b = 0 festgelegt. Im folgenden Beispiel zeigt der Normalenvektor in die x-Richtung (1 0 0) und die Ebene geht durch den Ursprung, da die vierte Variable gleich Null ist. Dies entspricht der Gleichung x = 0. Zusätzlich wird die Ebene um 90 Grad gedreht. Die Ebene bekommt den willkürlich festgelegten Objektnamen Ebene, auf den dann mit \psProjection Bezug genommen werden kann. \usepackage{pst-solides3d}

z 22-06-55

y

x

\begin{pspicture}(-3,-3)(4,3.5)% \psset{viewpoint=50 30 15,Decran=60, solidmemory} \psSolid[object=plan,definition=equation, args={[1 0 0 0] 90},name=Ebene,planmarks,showBase] \psset{plan=Ebene} \psProjection[object=point,args=-2 1,text=A,pos=ur] \psProjection[object=point,text=B,pos=ur](2,1) \axesIIID(3,3,3) \end{pspicture}

Bei der Projektion von Vektoren stehen verschiedene Werte für den Parameter definition zur Verfügung: −−→ definition=vecteur: Der Vektor AB benötigt zwei Argumente args=A B. definition=orthovecteur: Der orthogonale Vektor zu u ~ gleicher Länge benötigt ein Argument args=u. u k−1 u ~ , falls u ~ , ~0 und ~0 benötigt ein definition=normalize: Der Normalenvektor k~ Argument args=u. definition=addv: Die Vektoraddition u ~ + v~ benötigt zwei Argumente args=u v. definition=subv: Die Vektorsubtraktion u ~ − v~ benötigt zwei Argumente args=u v. definition=mulv: Die skalare Vektormultiplikation c · u ~ benötigt zwei Argumente args=u c. \usepackage{pst-solides3d}

z 22-06-56

y x

\begin{pspicture}(-3,-3)(4,3.5)% \psset{viewpoint=50 30 15,Decran=60, solidmemory} \psSolid[object=plan,definition=equation, args={[1 0 0 0] 90},planmarks,name=Ebene] \psset{plan=Ebene} \psProjection[object=point,args=-2 0.75, name=A,text=A,pos=dl] \psProjection[object=vecteur,linecolor=red, args=1 1,name=U](1,0) \psProjection[object=vecteur,args=U, linecolor=blue](A) \axesIIID(4,2,2)(5,4,3) \end{pspicture}

435

ch23-pstsolides3d.tex: (#279)

herbert

22

Dreidimensionale Abbildungen

\usepackage{pst-solides3d} 22-06-57

\psset{viewpoint=50 -20 30 rtp2xyz,Decran=50} \begin{pspicture}(-1,0)(3,3) \psSolid[object=vecteur,args=0 0 2, transform={2 mulv3d},linecolor=black,linestyle=dashed] \psSolid[object=vecteur,args=2 0 0,linecolor=orange] \psSolid[object=vecteur,args=0 2 0,linecolor=blue] \psSolid[object=vecteur,args=2 2 4] \psSolid[object=line,linestyle=dashed, args= 2 2 4 2 2 0 0 2 0] \psSolid[object=line,linecolor=magenta,args=2 2 0 2 0 0] \end{pspicture}

Bei der Projektion von Geraden stehen verschiedene Werte für den Parameter definition zur Verfügung, die sich auf die üblichen Definitionen einer Gerade beziehen. definition=horizontale: Eine horizontale Linie mit y = b durch args=b. definition=verticale: Eine vertikale Linie x = a durch args=a. definition=paral: Eine zu d = f (x) parallele Linie, die durch den Punkt A geht, durch args=d A. Die Linie d muss als Objekt vorher definiert worden sein. definition=perp: Eine zu d = f (x) rechtwinklige Linie, die durch den Punkt A geht, durch args=d A. Die Linie d muss als Objekt vorher definiert worden sein. definition=mediatrice: Eine senkrechte Gerade durch die Mitte eines Intervalls [AB] durch args=A B. € durch args=A B C. definition=bissectrice: Eine Winkelhalbierende zu ABC definition=axesymdroite: Eine symmetrische Linie zu d bezogen auf die Symmetrieachse D durch args=d D. definition=rotatedroite: Eine um den Punkt I um den Winkel r (in Grad) rotierte Linie d durch args=d I r. definition=translatedroite: Eine um den Vektor u ~ verschobene Linie d durch args=d u. \usepackage{pst-solides3d} 22-06-58

\begin{pspicture}(-3,-3)(4,3.5)% \psset{viewpoint=50 30 15,Decran=60,solidmemory} \psSolid[object=plan,definition=equation, args={[1 0 0 0] 90},planmarks,name=Ebene] \psset{plan=Ebene} \psProjection[object=point,name=A,text=A,pos=ur](-2,1.25) \psProjection[object=point,name=B,text=B,pos=ur](1,.75) \psProjection[object=droite,linecolor=blue, args=0 0 1 .5,name=c]% vier Koordinaten \psProjection[object=droite,linecolor=red, args=A B,name=d]% Angabe zweier Punkte \psProjection[object=droite,linecolor=blue, linestyle=dashed,definition=perp,args=c A] \psProjection[object=droite,linecolor=red, linestyle=dashed,definition=axesymdroite,args=d c] \end{pspicture}

436

ch23-pstsolides3d.tex: (#279)

herbert

22.6 pst-solides3d: 3D-Ansichten

Der einzige Unterschied zwischen Geraden und Linien ist die Tatsache, dass Linien grundsätzlich durch beliebig viele Punkte beschrieben werden. Dem Objekttyp line sind daher über das Argument die Koordinaten der Punkte oder die Punktnamen mitzuteilen: args=A0 A1 . . . An Gleiches gilt für das Objekt polygone, welches im Gegensatz zum Linienzug grundsätzlich am Ende geschlossen wird. Dazu wird der letzte Punkt durch eine direkte Linie mit dem ersten Punkt verbunden. Für das Polygon existieren die folgenden Definitionen, die teilweise auch auf das Objekt line angewendet werden können. definition=translatepol: Ein um den Vektor u ~ verschobenes Polygon pol durch args=pol u. definition=rotatepol: Ein um den Punkt I um den Winkel α (in Grad) rotiertes Polygon durch args=pol I α. definition=hompol: Ein mit dem Streckzentrum I um den Wert α gestrecktes Polygon durch args=pol I α. definition=sympol: Ein zum Punkt I symmetrisches Polygon durch args=pol I. definition=axesympol: Ein symmetrisches Polygon bezogen auf die Symmetrieachse D durch args=pol D. \usepackage{pst-solides3d}

z 22-06-59

y x

\begin{pspicture}(-3,-3)(4,3.5)% \psset{lightsrc=50 20 20,Decran=60, viewpoint=50 30 15,solidmemory} \psSolid[object=plan,definition=equation, name=Ebene,args={[1 0 0 0] 90}, base=-3.2 3.2 -2.2 2.2,planmarks] \psset{plan=Ebene} \psSolid[object=plan,args=Ebene,plangrid, linecolor=gray!40,action=none] \psProjection[object=line, args=-1 0 -3 1 1 2,name=P] \psProjection[object=line,args=P -1 0 -45, definition=rotatepol,linecolor=blue] \psProjection[object=line,linestyle=dashed, definition={2 -2 addv} papply,args=P] \axesIIID(6,4,3) \end{pspicture}

\usepackage{pst-solides3d} \begin{pspicture}(-3,-3)(4,3.5)% \psset{lightsrc=50 20 20,Decran=60,viewpoint=50 30 15,solidmemory} \psSolid[object=plan,definition=equation,args={[1 0 0 0] 90},name=Ebene, base=-3.2 3.2 -2.2 2.2,planmarks] \psset{plan=Ebene} \psSolid[object=plan,args=Ebene,plangrid,linecolor=gray!40,action=none] \psProjection[object=polygone,args=-1 0 -3 1 0 2,name=P] \psProjection[object=polygone,args=P -1 0 -45,definition=rotatepol,linecolor=blue] \psProjection[object=polygone,fillstyle=hlines,hatchcolor=yellow,linestyle=dashed,

437

ch23-pstsolides3d.tex: (#279)

herbert

22

Dreidimensionale Abbildungen

definition={2 -2 addv} papply,args=P] \axesIIID(4,2,2)(5,4,3) \end{pspicture}

z 22-06-60

y x

Bei der Projektion von Kreisen oder Kreisbögen stehen zwei verschiedene Werte für den Parameter definition zur Verfügung. definition=ABcercle: Ein Kreis durch die drei Punkte A, B und C durch args=A B C. definition=diamcercle: Ein Kreis mit dem Durchmesser AB durch args=A B. \usepackage{pst-solides3d} 22-06-61

\begin{pspicture}(-3,-3)(4,3.5)% \psset{viewpoint=50 30 15,Decran=60,solidmemory} \psSolid[object=plan,definition=equation, args={[1 0 0 0] 90},planmarks,name=Ebene] \psset{plan=Ebene} \psProjection[object=point,name=A,text=A,pos=ur](-2,1.25) \psProjection[object=cercle,args=A 1,range=180 360] \psProjection[object=cercle,args=1 1 .5,linecolor=blue] \psProjection[object=point,name=a,text=A,pos=ul](0,0) \psProjection[object=point,name=b,text=B,pos=ur](1.5,-1.5) \psProjection[object=point,name=c,text=C,pos=ul](0,-1.5) \psProjection[object=cercle,args=a b c, definition=ABcercle,linestyle=dashed, fillstyle=solid,fillcolor=green!35] \end{pspicture}

Rechte Winkel lassen sich einfach mit dem Objekttyp rightangle markieren, welcher drei Punkte als Parameter erwartet. \usepackage{pst-solides3d} \begin{pspicture}(-3,-2.5)(3.5,2.5)% \psset{lightsrc=viewpoint,viewpoint=50 30 15,Decran=40,solidmemory,fontsize=15} \psSolid[object=plan,definition=equation,args={[1 0 1 0] 90},base=-4 4 -3 3,

438

ch23-pstsolides3d.tex: (#279)

herbert

22.6 pst-solides3d: 3D-Ansichten

fillcolor=white,linecolor=gray!30,planmarks,name=Ebene] \psset{plan=Ebene,visibility=false} \psProjection[object=droite,definition=horizontale,args=-1,name=d]% Gerade d \psProjection[object=point,args=-2 1,name=M,text=M,pos=ul] \psProjection[object=point,definition=orthoproj,args=M d,name=H,text=H,pos=dr] \psProjection[object=point,definition=xdpoint,args=2 d,name=H’,action=none, text=d,pos=ur]% H’ festlegen \psProjection[object=line,args=M H] \psProjection[object=rightangle,args=M H H’]% rechten Winkel markieren \axesIIID(8,5,3) \end{pspicture}

z 22-06-62

y x

Die Projektion von Funktionen erfolgt über die Definition der Funktion mit dem Makro \defFunction. Über das optionale Argument kann festgelegt werden, ob die Beschrei-

bung der Funktion in algebraischer oder PS-Notation (Standard) erfolgt. Für die Variable t kann auch jeder beliebige andere Buchstabe eingesetzt werden, der allerdings dem durch den ersten Parameter deklarierten entsprechen muss.

\defFunction [Optionen] {Funktionsname}(x){f (x)}{}{} \defFunction [Optionen] {Funktionsname}(t ){x(t)}{y(t)}{} \defFunction [Optionen] {Funktionsname}(t ){x(t)}{y(t)}{z(t)}

\usepackage{pst-solides3d} \begin{pspicture}[lightsrc=50 20 20,viewpoint=50 30 15,Decran=60, solidmemory](-3,-3)(4,3.5) \defFunction[algebraic]{1_sin}(x){2*sin(1/x)}{}{} \psSolid[object=plan,definition=equation,args={[1 0 0 0] 90},base=-3.2 3.2 -2.2 2.2, planmarks,showBase,name=Ebene] \psset{plan=Ebene} \psSolid[object=plan,args=Ebene,linecolor=gray!40,plangrid,action=none] \psProjection[object=courbe,linecolor=red,range=-3 3,resolution=720,function=1_sin] \axesIIID(4,2,2)(5,4,3) \end{pspicture}

439

ch23-pstsolides3d.tex: (#279)

herbert

22

Dreidimensionale Abbildungen

z 22-06-63

y x

\usepackage{pst-solides3d} \begin{pspicture}[lightsrc=50 20 20,viewpoint=50 30 15,Decran=60, solidmemory](-3,-3)(4,3.5) \defFunction[algebraic]{F}(t){2*sin(0.57735*t)}{2*sin(0.707*t)}{} \psSolid[object=plan,definition=equation,args={[1 0 1 0] 90},base=-3.2 3.2 -3 3, planmarks,name=Ebene] \psset{plan=Ebene} \psSolid[object=plan,args=Ebene,linecolor=gray!40,plangrid,action=none] \psProjection[object=courbeR2,range=-25.12 25.12,resolution=720,normal=1 1 2, linecolor=red,function=F] \axesIIID(7,4,3) \end{pspicture}

z 22-06-64

y x

In einigen Beispielen wurde bereits die Position von Textelementen (Buchstaben) mit dem Makro \psProjection gezeigt. Diese können leicht auf längeren Text übertragen werden. \usepackage{pst-solides3d}

440

ch23-pstsolides3d.tex: (#279)

herbert

22.6 pst-solides3d: 3D-Ansichten

\begin{pspicture}(-3,-3)(4,3.5)% \psset{lightsrc=50 20 20,Decran=60,viewpoint=50 30 15,solidmemory} \psSolid[object=plan,definition=equation,args={[1 0 1 0] 90},planmarks, base=-3.2 3.2 -2.5 2.5,name=Ebene] \psset{plan=Ebene} \psSolid[object=plan,args=Ebene,plangrid,linecolor=gray!40,action=none] \psProjection[object=texte,fontsize=50,linecolor=cyan,text=Jana](0,1) \psProjection[object=texte,fontsize=50,text=PSTricks,phi=180](0,-1) \end{pspicture}

22-06-65

\usepackage{pst-solides3d}

z 22-06-66

y

x

\begin{pspicture}(-3,-4)(4,5) \psset{unit=0.5,fontsize=150,Decran=50, viewpoint=50 20 30 rtp2xyz,solidmemory} \psSolid[object=cube,a=8,action=draw,name=A] \psSolid[object=plan,action=none, definition=solidface,args=A 0,name=P0] \psProjection[object=texte,text=0, plan=P0,linecolor=cyan] \psSolid[object=plan,action=none, definition=solidface,args=A 1,name=P1] \psProjection[object=texte,text=1, plan=P1,phi=180,linecolor=cyan] \psSolid[object=plan,action=none, definition=solidface,args=A 4,name=P4] \psProjection[object=texte,text=4, plan=P4,phi=-90,linecolor=cyan] \axesIIID[showOrigin=false](4,4,4)(9,6,7) \end{pspicture}

22.6.8 Darstellung mathematischer Funktionen mit \psSurface Die Beispiele 22-06-36, 22-06-37 und 22-06-35 auf Seite 425 haben bereits gezeigt, wie man mit dem Makro \psSolid zwei- oder dreidimensionale Funktionen berechnen und darstellen kann. Das Makro \psSurface bringt keine erweiterten Funktionen, erleichtert jedoch die Anwendung für den Sonderfall der Funktionsdarstellung.

441

ch23-pstsolides3d.tex: (#279)

herbert

22

Dreidimensionale Abbildungen

\psSurface [Optionen] (x0 , x1 )(y0 , y1 ){Funktion z = f (x, y)}

Die Funktion muss standardmäßig in der PS-Notation der alternativ mit der Option algebraic in algebraischer Notation eingegeben werden. Sinnvolle Optionen für das Makro sind in der Tabelle 22.12 zusammengestellt, weitere in der Tabelle 22.13 auf Seite 445. Optionen für das Koordinatengitter findet man in Tabelle 22.10 auf Seite 430. Tabelle 22.12: Zusammen- Name fassung sinnvoller Paramealgebraic ter für \psSurface.

Werte

Vorgabe

Boolean

false

ngrid

n0 n1



grid

Boolean

true

axesboxed

Boolean

false

z

Bedeutung Gleichungsnotation dx und dy, wenn < 0 Nx und Ny , wenn > 0 Gitterlinien Koordinatenachsen

\usepackage{pst-solides3d} 22-06-67

1 0 −1 −4

−3

−2 x −1 0

1

1 2

−4 −3 −2 −1 y 0

\psset{viewpoint=50 40 30 rtp2xyz, Decran=30,lightsrc=viewpoint} \begin{pspicture}(-6,-2)(7,4) \psSurface[ngrid=.25 .25,incolor=yellow, linewidth=0.01,axesboxed,algebraic, hue=0 1,Zmin=-1,Zmax=1](-4,-4)(4,4)% {sin((x^2+y^2)/3)} \end{pspicture}

2 3

3 4 4

z

\usepackage{pst-solides3d} 22-06-68

1 0 −1 −4

−3

−2 x −1 0

1

1 2

−4 −3 −2 −1 y 0

\psset{lightsrc=30 30 25, viewpoint=50 40 30 rtp2xyz,Decran=30} \begin{pspicture}(-6,-2)(7,4) \psSurface[fillcolor=red!50,ngrid=25 25, incolor=yellow,linewidth=0.01,grid, axesboxed,hue=0 1,Zmin=-1,Zmax=1]% (-4,-4)(4,4){ y dup mul x dup mul add 3 div RadtoDeg sin } \end{pspicture}

2 3

3 4 4

442

ch23-pstsolides3d.tex: (#279)

herbert

22.6 pst-solides3d: 3D-Ansichten

z

\usepackage{pst-solides3d}

22-06-69

1 0 −1 −4

−3

−2 x −1 0

1

1 2

−4 −3 −2 −1 y 0

2 3

3 4 4

\psset{lightsrc=30 30 25, viewpoint=50 40 30 rtp2xyz,Decran=30} \begin{pspicture}(-6,-2)(7,4) \psSurface[fillcolor=red!50,ngrid=25 25, intersectionplan={[0 0 1 -0.5]}, intersectioncolor=(noir),grid, intersectionlinewidth=2,Zmin=-1, Zmax=1,intersectiontype=0, incolor=yellow,linewidth=0.01, axesboxed,hue=0 1,](-4,-4)(4,4)% { y dup mul x dup mul add 3 div RadtoDeg sin } \end{pspicture}

z

\usepackage{pst-solides3d}

22-06-70

\psset{lightsrc=30 -10 10, viewpoint=50 20 30 rtp2xyz, Decran=30} −5 \begin{pspicture}(-2,-2)(4,4) −4 −3 \psSurface[ngrid=.2 .2,algebraic, axesboxed,Zmin=-1,Zmax=1, −2 y −1 linewidth=0.01,spotX=r,spotY=d, 0 spotZ=l,hue=0 1]% 1 2 (-5,-5)(5,5){ sin((x^2+y^2)/3) } 3 \end{pspicture}

1 0 −1 −5 −4 −3 −2 −1 0 x

1

2

3

4

4 5 5

\usepackage{pst-solides3d}

z 22-06-71

10 8 6 4 2 0 −2 −12

−8

−4

x

0

\psset{lightsrc=30 -10 10, viewpoint=50 20 20 rtp2xyz,Decran=10} \begin{pspicture}(-4,-2)(4,4) \psSurface[ngrid=0.4 0.4,algebraic, axesboxed,Zmin=-2,Zmax=10,grid=false, ticklength=0.5,stepX=4,stepY=4,stepZ=2, −12 −8 hue=0 1](-13,-13)(13,13)% −4y 0 {10*sin(sqrt((x^2+y^2)))/(sqrt(x^2+y^2))} 4 \end{pspicture}

4

8

12

8 12

443

ch23-pstsolides3d.tex: (#279)

herbert

22

Dreidimensionale Abbildungen

\usepackage{pst-solides3d}

z

22-06-72

4 3 2 1 0 −1 −2 x −3 −4 −4−3 −2−1

\psset{lightsrc=30 30 25, viewpoint=50 40 20 rtp2xyz,Decran=20} \begin{pspicture}(-6,-8)(7,8) \psSurface[ngrid=.25 .25,inouthue=1 0 0.5 1, linewidth=0.01,axesboxed,algebraic]% (-4,-4)(4,4){ ((y^2)-(x^2))/4 } \end{pspicture}

y

01 2 23 4 43

−4 −3 −1−2 0 1

\usepackage{pst-solides3d} \begin{pspicture}[viewpoint=50 20 20 rtp2xyz,Decran=50](-3,-3)(3,4) \psSurface[algebraic,ngrid=0.2 0.2,incolor=yellow!20,axesboxed,showAxes=false, Zmin=-2,Zmax=2,fillcolor=blue!20](-3,-3)(3,3){2*sin(x)*sin(y)}% \NormalSin{1.57}{0.75}{red}\NormalSin{1.57}{1.57}{blue}% \NormalSin{2}{1.57}{green}\NormalSin{-1.57}{-1.57}{magenta} \end{pspicture}

22-06-73

2 1 0 −1 0

−2 −3

−2

−1

−3 −2 −1

1 0

1

2 2

3 3

22.6.9 Parameter Die Zahl der optionalen Parameter ist sehr groß und man kann dabei leicht den Überblick verlieren. Die folgende Tabelle 22.13 auf der nächsten Seite zeigt eine Zusammenstellung aller Parameter, die für das Makro \psSolid relevant sind. Die Spalten [object=...] und [definition=...] weisen dabei auf zusätzliche notwendige Angaben hin. Sind alternative Eingaben bei den Parameterwerten möglich, so sind diese als kommaseparierte Liste angegeben.

444

ch23-pstsolides3d.tex: (#279)

herbert

Tabelle 22.13: Zusammenstellung aller Parameter für das Makro \psSolid. Name a

a, b, c

ch23-pstsolides3dTAB2.tex: (#279)

action

affinage affinagecoeff

affinagerm

[object=...]

Wert Wert

Vorgabe 2

octahedron, dodecahedron, icosahedron

Kantenlängen eines Quaders parallelepiped Festlegung des Zeichenalgorithmus: durchsichtig, farbig mit gestrichelt verdeckten Linien oder farbig ohne verdeckte Linien und Flächen oder interne Daten in externe Dateien schreiben. Legt die Polygonflächen fest, die nicht gefüllt werden (Löcher). Der Koeffizient für die relative Größe der einzelnen Öffnungen (Löcher). Das mittlere Element standardmäßig entfernen Die Argumentliste für verschiede- plan ne Objekte. plan

plan args

[definition=...]

cube, tetrahedron,

draw**

all, i0 i1 ... in 0.8

Wert

true

Boolean equation

[a b c d], [a b c d]α

normalpoint

x0 y0 z0 x0 y0 z0 x0 y0 z0 x0 y0 z0 Si x y z, P x1 y1 z1

solidface

point point

4

Wert none, draw, draw, draw** writeobj, writeoff , writesolid

addv3d

[a b c], [a b c α], [ux uy uz a b c], [ux uy uz a b c α]

x2 y2 z2 , u v Fortsetzung . . .

445

22.6 pst-solides3d: 3D-Ansichten

herbert

args

Bedeutung Kantenlänge eines Würfels oder Radius der umgebenden Kugel eines regulären Polyeders.

22

Name

Bedeutung

[object=...]

[definition=...]

point

barycentre3d

point point point

ch23-pstsolides3dTAB2.tex: (#279)

point point point point point point point point point point point args

vecteur

herbert args axe

vecteur3d

Lage der Symmetrieachse für Zylinder, Prisma und Band.

cylindre

Wert Vorgabe [A iA B iB ] hompoint3d P Ak isobarycentre3d [A0 A1 ... An ] milieu3d AB mulv3d x y z k, u k normalize3d x y z, u orthoprojplane3d P A v rotateOpoint3d P αx αy αz scaleOpoint3d x y z kx ky kz , kx ky kz solidcentreface S i solidgetsommet Si subv3d x1 y1 z1 x2 y2 z2 , u v sympoint3d P A translatepoint3d P v vectprod3d x1 y1 z1 x2 y2 z2 , u v x y z, ,x1 y1 z1 x2 y2 z2 addv3d ,x1 y1 z1 x2 y2 z2 subv3d x y z k mulv3d, x y z normalize3d, x1 y1 z1 x2 y2 z2 vectprod3d xA yA zA xB yB zB , A B xyz 0 0 1

prisme ruban

Fortsetzung . . .

Dreidimensionale Abbildungen

446 ... Fortsetzung

... Fortsetzung

Name axesboxed

base

ch23-pstsolides3dTAB2.tex: (#279)

Bedeutung [object=...] xyz-Achseneinteilung des umgebenden Quaders einer dreidimensionalen Funktion. Die Basis einer zweidimensiona- face, prisme, ruban len (Grund-)Fläche. fusion grille surfaceparametree

biface chanfrein chanfreincoeff deactivatecolor decal

herbert

dualreg

faces

Wert Boolean

x1 y 1 x2 y 2 . . . xn y n

Vorgabe false

-1 -1 1 -1 0 1

S1 S2 x0 x1 y 0 y 1 umin umax vmin vmax Boolean

true

Boolean

true

Wert

0.2

Boolean Wert

false

Boolean

false

-2

0 ]... [i1 . . . in ][i10 . . . im

Fortsetzung . . . 3 Siehe vierte Spalte dieser Tabelle. 4 Siehe dazu auch http://www.platonicsolids.info.

447

22.6 pst-solides3d: 3D-Ansichten

definition

face Definition einer Fläche mit Vorder- und Rückseite. Symmetrisches Abflachen der Ecken (Abfasen). Relativer Wert für das Symmetrische Abflachen der Ecken. Keine Farbe verwenden Der Startwert für das interne Sortieren der Eckpunkte. Objektabhängige Festlegung der Definition3 Verbindung der Mittelpunkte be- geode nachbarter Flächen (Dualkörper erzeugen).4 Festlegung der Flächen eines neu new definierten Körpers

[definition=...]

22

Name fcol fcolor

ch23-pstsolides3dTAB2.tex: (#279)

file fillcolor function grid h

Bedeutung Festlegung der Farbe einzelner Flächen Farbfestlegung der Farbe bei gesetztem Parameter affinagerm Für action=writesolid die Angabe des Dateityps Die standardmäßige Füllfarbe. Angabe des definierten PSFunktionsnamens Zeichnen der Polygonlinien Höhe bestimmter Objekte

[object=...]

[definition=...]

Wert i0 (Farbe0 ) i1 (Farbe1 ) . . .

Vorgabe

Farbe datfile, objfile, offfile

Name

cone, courbe, courbeR2,

Farbe name

cylindre, surfaceparametree cone, cylindre

herbert

Boolean Wert

true

Boolean

false

h0 h1 , h0 h1 s b, h0 s0 b0 h1 s1 b1 (hsb), r0 g0 b0 r1 g1 b1 , c0 m0 y0 k0 c1 m1 y1 k1 , (Farbe1 ) (Farbe2 ) Farbe

green

6

prisme, tronccone hollow

Angabe, ob eine Fläche »durchsichtig« wirken soll.

hue

Angabe eines Farbverlaufs für die äußere Flächenfüllung.

incolor

Die standardmäßige Füllfarbe für das Innere des Körpers. Angabe eines Farbverlaufs für das Innere eines Körpers. Angabe eines Farbverlaufs für das äußere und innere eines Körpers.

inhue inouthue

cone, cylindre, prisme, tronccone

siehe hue siehe hue

Fortsetzung . . .

Dreidimensionale Abbildungen

448 ... Fortsetzung

... Fortsetzung

Name

Bedeutung

[object=...]

intersectioncolor Farbe der Schnittlinie zwischen

ch23-pstsolides3dTAB2.tex: (#279)

Ebene und Körper, wobei für jede entstehende Schnittlinie eine Farbe vergeben werden kann. intersectionlinewidth Analog für die Liniendicke intersectionplan Festlegung der Schnittebene(n)

labelsep lightintensity lightsrc

load

herbert

name ngrid

cone, conecreux,

Wert (Farbe1 ) . . . (Farben )

w1 . . . wn Name(n), [a1 b1 c1 d1 ] ... [an bn cn dn ] Wert [Einheit] Wert viewpoint, x y z

Vorgabe (rouge)

1

10pt 2 20 30 50

Name 0,1,2,3,4

0

String n1 n1 n2

cylindre, cylindrecreux, tore, tronccone, troncconecreux

Fortsetzung . . . 449

22.6 pst-solides3d: 3D-Ansichten

mode

Abstand der Achsennamen vom Achsenendpunkt Intensität der Lichtquelle Koordinaten der Lichtquelle, wobei ein leeres Argument die Lichtquelle deaktiviert. Laden eines gespeicherten Objek- load tes Einteilung des Polygongitters (0–grob; 4–fein) Festlegung eines Objektnamens Polygongitter cube, prisme, prismecreux

[definition=...]

22

Name

Bedeutung

[object=...]

[definition=...]

grille, surface, surface*,

Wert n1 , n1 n2

Vorgabe

surfaceparametree num opacity

ch23-pstsolides3dTAB2.tex: (#279)

origine phi plangrid plangrid plansection plansepare RotX, RotY, RotZ r

herbert

r0

Nummerierung der Eckpunkte Transparenz für die Füllfarbe (0–total; 1–keine) Ursprung der Ebene Allgemeine Winkelangabe bei einer Kugel für ein Segment Angabe eines Gitters für die Ebene Angabe einer Achseneinteilung für die Ebene Liste der Gleichungen für die Schnittebenen Gleichung der Ebene, die einen Körper in zwei Hälften teilt.5 Rotationswinkel Radius einer Funktions»Schlange« Innenradius eines Objektes

all,i0 . . . in 0...1

1

x0 y0 z0 Winkel

0 0 0

plan

Boolean

false

plan

Boolean

false

plan

0

[a1 b1 c1 d1 ] . . . [an bn cn dn ] [a1 b1 c1 d1 ] 0

courbe

Winkel Wert

tore, tronccone,

Wert

1.5

Wert

4

2

troncconecreux r1

Außenradius eines Objektes

tore, tronccone, troncconecreux

range

Wertebereich einer Funktion

cercle, courbe, courbeR2

tmin tmax

-5 5

Fortsetzung . . . 5 Um auf die Hälften zugreifen zu können, muss ein Objektname vergeben werden (name= . . . ), der dann um die Suffixe 0 und 1 erweitert wird

Dreidimensionale Abbildungen

450 ... Fortsetzung

... Fortsetzung

Name resolution rm section

ch23-pstsolides3d.tex: (#279)

show showBase sommets theta transform

herbert

trunccoeff viewpoint visibility

[object=...]

[definition=...]

courbe, courbeR2, ruban

Wert n

Vorgabe 36

i0 . . . in anneau

x1 y 1 . . . xn y n

all, i0 . . . in Boolean new

6 Auf dem PS-Stack werden lediglich 2n Werte erwartet, sodass auch Zwischenrechnungen möglich sind.

x1 y1 z1 . . . xn yn zn Winkel

false

0

PS code, Funktionsname all, i0 . . . in Wert x y z, r θ φ rtp2xyz Boolean

0.2 10 10 10 true

451

22.6 pst-solides3d: 3D-Ansichten

trunc

Bedeutung Anzahl der Stützstellen für die Funktion Angabe über die zu nicht zu füllenden Polygonflächen Die Koordinaten der Eckpunkte für den Querschnitt eines Ringkörpers.6 Ausgabe der internen Flächennummern der Polygonzüge Zeichnen der Einheitsvektoren ex , ey und ez Die Liste der Eckpunkte Allgemeine Winkelangabe bei einer Kugel Transformationsgleichungen für die Eckpunkte eines Körpers Liste der Eckpunkte, die »abgeschnitten« werden sollen. Relativer Wert für das »Abschneiden« Angabe des Beobachtungspunktes Sichtbarkeit eines Textes, der einer nicht-sichtbaren Fläche zugeordnet ist.

22

Dreidimensionale Abbildungen

22.6.10 Aktionen Der Parameter action bestimmt, wie mit dem Objekt intern verfahren werden soll. action kann einen der folgenden Werte annehmen: none draw draw* draw** writesolid

writeobj writeoff

Das Objekt verbleibt lediglich im Speicher, es erfolgt keine Ausgabe. Das Objekt wird in Form eines Drahtmodells ausgegeben, wobei die theoretisch nichtsichtbaren Linien gestrichelt gezeichnet werden. Entspricht faktisch der Option ohne Stern, nur dass die Flächen mit der angegeben Farbe gefüllt werden. Verdeckte Flächen werden jetzt berücksichtigt, ebenso wie die Daten einer vorhandenen Lichtquelle, sodass Schattenwirkungen erfolgen. Erstellt die folgenden Dateien: . -sommets.dat → Liste der Eckpunkte . -faces.dat → Liste der Polygonflächen . -couleurs.dat → Liste der Flächenfarben . -io.dat → Die Grenzen der der Flächen für Innen und Außen Externe Daten im .obj-Dateiformat schreiben7 Externe Daten im .off-Dateiformat schreiben8

\usepackage{pst-solides3d} \psset{Decran=6,lightsrc=15 -10 30,viewpoint=10 5 5} \begin{pspicture}(-2,-2)(2,3)\psSolid[object=cube,action=draw]\end{pspicture} \begin{pspicture}(-2,-2)(2,3) \psSolid[object=cube,action=draw*,fillcolor=red!20] \end{pspicture} \begin{pspicture}(-2,-2)(2,3) \psSolid[object=cube,action=draw**,fillcolor=red!20] \end{pspicture}

22-06-74

22.6.11 Gitter In der Regel wird man die Zahl der zu bestimmenden Polygonflächen durch die Option ngrid vorgeben wollen. Für die Objekte cube, tore, sphere, cylindre, cylindrecreux, cone, tronccone, troncconecreux, conecreux, calottesphere und 7 siehe dazu auch http://local.wasp.uwa.edu.au/~pbourke/dataformats/obj/. 8 siehe dazu auch http://local.wasp.uwa.edu.au/~pbourke/dataformats/oogl/#OFF.

452

ch23-pstsolides3d.tex: (#279)

herbert

22.6 pst-solides3d: 3D-Ansichten

calottespherecreuse kann man durch Vorgabe eines Modus diese Eingabe verein-

fachen. Zulässig sind nur Werte von 0 . . . 4, wobei die Vorgabe gleich 2 ist. Mit größer werdender Zahl wird das Gitternetz feiner. \usepackage{pst-solides3d} \psset{lightsrc=10 5 0,viewpoint=50 20 -40 rtp2xyz,Decran=13,incolor=white, fillcolor=magenta!50,r0=5,r1=2,h=5,object=troncconecreux} \begin{pspicture}(-1.4,-1.5)(1.4,1.5)\psSolid[mode=0]\end{pspicture} \begin{pspicture}(-1.4,-1.5)(1.4,1.5)\psSolid[mode=1]\end{pspicture} \begin{pspicture}(-1.4,-1.5)(1.4,1.5)\psSolid[mode=2]\end{pspicture} \begin{pspicture}(-1.4,-1.5)(1.4,1.5)\psSolid[mode=3]\end{pspicture} \begin{pspicture}(-1.4,-1.5)(1.4,1.5)\psSolid[mode=4]\end{pspicture}

22-06-75

22.6.12 Farben Die Farbverläufe der einzelnen Polygonzüge kann durch die Optionen hue, inhue und inouthue gesteuert werden. Als Parameter werden 2, 4 oder 7 Werte erwartet, wobei im einfachsten Fall zwei Angaben zum H-Wert des HSB-Farbmodells gemacht werden: hue=h0 h1 , mit 0 ≤ h0 < h1 ≤ 1. \usepackage{pst-solides3d} \psset{viewpoint=50 50 20 rtp2xyz,Decran=20,linewidth=0.01} \begin{pspicture}(-2.25,-1.5)(2.5,1) \psSolid[object=grille,base=-3 5 -3 3,hue=0 1] \end{pspicture} \begin{pspicture}(-2.25,-1.5)(2.5,1) \psSolid[object=grille, base=-3 5 -3 3,hue=0 0.3] \end{pspicture} \begin{pspicture}(-2.25,-1.5)(2.5,1) \psSolid[object=grille,base=-3 5 -3 3,hue=0.5 0.6] \end{pspicture}

22-06-76

Bei vier Angaben hue=h0 h1 s b werden die ersten beiden wie oben beschrieben angewendet, während s den festen Wert für die Sättigung und b den für die Schärfe kennzeichnet.

453

ch23-pstsolides3d.tex: (#279)

herbert

22

Dreidimensionale Abbildungen

\usepackage{pst-solides3d} \psset{viewpoint=50 50 20 rtp2xyz,Decran=20,linewidth=0.01} \begin{pspicture}(-2.25,-1.5)(2.5,1) \psSolid[object=grille,base=-3 5 -3 3,hue=0 1 0.8 0.7] \end{pspicture} \begin{pspicture}(-2.25,-1.5)(2.5,1) \psSolid[object=grille, base=-3 5 -3 3,hue=0 1 0.5 1] \end{pspicture} \begin{pspicture}(-2.25,-1.5)(2.5,1) \psSolid[object=grille, base=-3 5 -3 3,hue=0.3 0.6 0.5 0.7] \end{pspicture}

22-06-77

Bei der Angabe von sechs Parametern ist zusätzlich das Farbmodell (hsb) anzugeben, da die Werte jeweils Minimum und Maximum für HSB oder RGB darstellen können, wobei RGB Standard ist: hue=h0 s0 b0 h1 s1 b1 (hsb) oder alternativ hue=r0 g0 b0 r1 g1 b1 . Bei acht Parametern wird dagegen automatisch CMYK angenommen: hue=c0 m0 y0 k0 c1 m1 y1 k1 . \usepackage{pst-solides3d} \psset{viewpoint=50 50 20 rtp2xyz,Decran=20,linewidth=0.01} \begin{pspicture}(-2.25,-1.5)(2.5,1) \psSolid[object=grille,base=-3 5 -3 3,hue=0 0.8 1 1 1 0.7 (hsb)] \end{pspicture} \begin{pspicture}(-2.25,-1.5)(2.5,1) \psSolid[object=grille, base=-3 5 -3 3,hue=1 0 0 0 0 1] \end{pspicture} \begin{pspicture}(-2.25,-1.5)(2.5,1) \psSolid[object=grille, base=-3 5 -3 3,hue=1 0 0 0 0 0 1 0] \end{pspicture}

22-06-78

Die letzte mögliche Variante ist die explizite Vorgabe zweier Farbnamen, die in runde Klammern zu setzen sind und selbstverständlich vorher durch das System oder den Benutzer definiert sein müssen: hue=(Farbe1) (Farbe2). Es können sowohl die Standardfarben (vlg. Abschnitt 2.3 auf Seite 10) als auch sämtliche durch die PSTricks-Paketoption dvipsnames oder svgnames angeforderten Farbnamen benutzt werden. Zusätzlich können den internen Farboptionen color1, color2, color3 und color4 eigene Farben über Zahlenwerte zugewiesen werden. Dabei ist eine xcolor-Notation zulässig. Mit der Option deactivatecolor kann das Füllen der Polygonzüge unterbunden werden.

454

ch23-pstsolides3d.tex: (#279)

herbert

22.6 pst-solides3d: 3D-Ansichten

\usepackage[dvipsnames,svgnames]{pstricks} \usepackage{pst-solides3d} \psset{viewpoint=50 50 20 rtp2xyz,Decran=20,linewidth=0.01} \begin{pspicture}(-2.5,-1.5)(2.5,1) \psSolid[object=grille,base=-3 5 -3 3,hue=(Yellow) (CadetBlue)] \end{pspicture} \begin{pspicture}(-2.5,-1.5)(2.5,1) \psSolid[object=grille,base=-3 5 -3 3,color1=red!50,color2=green!20, hue=(color1) (color2)] \end{pspicture} \begin{pspicture}(-2.5,-1.5)(2.5,1) \psSolid[object=grille,base=-3 5 -3 3,hue=(Yellow) (CadetBlue),deactivatecolor] \end{pspicture}

22-06-79

\usepackage{pst-solides3d} 22-06-80

z

4 3 2 1 0 −1 −2 −3 x −4 −4−3 −2 −1

y

0

1

2

2 3

3

1

0

−4 −3 −2 −1

\psset{lightsrc=45 15 20, viewpoint=50 20 20 rtp2xyz, Decran=25} \begin{pspicture}(-2,-1.5)(2,2) \psSolid[object=cube,a=3,ngrid=3, hollow,inouthue=0 1 0.5 1, rm=36 1 44 {} for] \end{pspicture}\\ \psscalebox{0.8}{% \psset{lightsrc=30 30 25, viewpoint=50 40 30 rtp2xyz} \begin{pspicture}(-3,-3)(3,3) \psSurface[ngrid=.25 .25, inouthue=1 0 0.5 1, linewidth=0.01, axesboxed,algebraic](-4,-4)(4,4){% ((y^2)-(x^2))/4} \end{pspicture}}

4 4

\usepackage{pst-solides3d} \begin{pspicture}(-7,-7)(10,12) \psset[pst-solides3d]{viewpoint=20 5 10,Decran=30,lightsrc=20 10 5} \psSolid[object=grille,base=-2 2 -2 2,linecolor=white](0,0,-2) \defFunction{cone}(u,v){u v Cos mul}{u v Sin mul}{u} \psSolid[object=surfaceparametree,base=-2 2 0 2 pi mul, inhue=0.8 0.2,hue=0.8 0.2, function=cone,linewidth=0.01,ngrid=25 40] \gridIIID[Zmin=-2,Zmax=2](-2,2)(-2,2)[3,0.5,1] \end{pspicture}

455

ch23-pstsolides3d.tex: (#279)

herbert

22

Dreidimensionale Abbildungen

z 22-06-81

2

1 y 0 −2

−1

−1 0

−2 −2

x −1

1 0

1

2 2

22.6.13 Löschen von Teilflächen Mit der Option affinage kann bei Objekten mit mehr als einer Fläche ein Blick in das Innere erreicht werden, wobei affinagecoeff den relativen Grad der Öffnung angibt. Notwendig ist allerdings, dass das Innere durch incolor mit einer anderen Farbe versehen wird. \usepackage{pst-solides3d} \psset{Decran=6,viewpoint=10 5 5} \begin{pspicture}(-2,-2)(2,3) \psSolid[object=cube,action=draw**,numfaces=all,fontsize=80,fillcolor=green!20, incolor=blue!30] \end{pspicture} \begin{pspicture}(-2,-2)(2,3) \psSolid[object=cube,action=draw**,affinage=4,fillcolor=green!20, incolor=blue!30,hollow] \end{pspicture} \begin{pspicture}(-2,-2)(2,3) \psSolid[object=cube,action=draw**,affinage=4,affinagecoeff=1,fillcolor=green!20, incolor=blue!30,hollow] \end{pspicture}

22-06-82

456

ch23-pstsolides3d.tex: (#279)

herbert

22.6 pst-solides3d: 3D-Ansichten

\usepackage{pst-solides3d} \psset{Decran=8,viewpoint=10 5 5} \begin{pspicture}(-2,-2)(2,3) \psSolid[object=cube,action=draw**,a=3,ngrid=3,numfaces=all,fontsize=10, fillcolor=green!20,incolor=blue!30] \end{pspicture} \begin{pspicture}(-2,-2)(2,3) \psSolid[object=cube,action=draw**,a=3,ngrid=3,affinage=39 40 41,fillcolor=green!20, incolor=blue!30,hollow] \end{pspicture} \begin{pspicture}(-2,-2)(2,3) \psSolid[object=cube,action=draw**,a=3,ngrid=3,affinage=39 40 41,affinagecoeff=1, fillcolor=green!20,incolor=blue!30,hollow] \end{pspicture}

22-06-83

Einzelne Teilflächen können ebenfalls über die Option rm ausgeblendet werden, wobei dann in der Regel eine weiße Fläche die Folge ist, da eventuell dahinter liegende Flächen wegen der formalen »Unsichtbarkeit« nicht gezeichnet wurden. Im Gegensatz zu affinage wird immer die komplette Teilfläche entfernt. Zu beachten ist allerdings, dass sich die Zählung der Teiloberflächen nur auf die sichtbaren Flächen bezieht und sich diese daher ändern kann, wenn bestimmte, sonst sichtbare Teilflächen, ausgeblendet werden. Mit der Option hollow kann bei Objekten mit mehr als einer Fläche ein Blick in das Innere erreicht werden, indem der Option action nicht standardmäßig draw** zugeordnet wird, sondern draw* (siehe auch Tabelle 22.12 auf Seite 442). Notwendig ist allerdings, dass das Innere durch incolor oder inouthue mit einer anderen Farbe versehen wird. Die Nummerierung der Teilflächen sollte dann abgeschaltet werden, da mit hollow auch die sonst nicht sichtbaren Flächen nummeriert werden, was sehr unübersichtlich werden kann. \usepackage{pst-solides3d} \psset{Decran=15,viewpoint=10 -15 5} \begin{pspicture}(-2,-1)(1.5,1) \psSolid[object=cube,a=3,ngrid=3,inouthue=0 1 0.25 1,numfaces=all] \end{pspicture} \begin{pspicture}(-2,-1)(1.5,1) \psSolid[object=cube,a=3,ngrid=3,inouthue=0 1 0.25 1,numfaces=all,rm= 27 1 35 {} for] \end{pspicture} \begin{pspicture}(-2,-1)(1.5,1) \psSolid[object=cube,a=3,ngrid=3,hollow,inouthue=0 1 0.25 1,

457

ch23-pstsolides3d.tex: (#279)

herbert

22

Dreidimensionale Abbildungen

rm= 27 28 29 30 31 32 33 34 35] \end{pspicture}

22-06-84

Die Option rm erwartet eine Liste von Flächennummern, die bei längeren Sequenzen auch durch einen entsprechenden PS-code ersetzt werden kann. So hätte man obige Liste auch durch rm=27 1 35 {} for oder durch rm=9 {27} repeat ersetzen können. Die Reihenfolge der Elemente spielt keine Rolle, da sie intern absteigend sortiert werden, bevor die entsprechenden Teilflächen gelöscht werden. Somit sind die folgende Angaben äquivalent: rm=27 rm=35 rm=35 rm=27 rm=27 rm= 9

28 29 30 31 32 33 34 35 -1 27 {} for 34 33 32 31 30 29 28 27 1 35 {} for 27 27 27 27 27 27 27 27 {27} repeat

22.6.14 Kanten abflachen Alle Kanten eines Körpers können über die Option chanfrein symmetrisch zum Körperzentrum »abgeschnitten« werden, sodass aus einer Kante zwei folgen, und damit eine zusätzliche Fläche entsteht. Der abgeschnittene Anteil wird relativ durch chanfreincoeff festgelegt (0 . . . 1).

\usepackage{pst-solides3d} \psset{Decran=20,lightsrc=10 0 10,viewpoint=50 -20 30 rtp2xyz} \begin{pspicture}(-2,-2)(2,2) \psSolid[object=cube,a=5,fillcolor=red!30] \end{pspicture} \begin{pspicture}(-2,-2)(2,2) \psSolid[object=cube,a=5,fillcolor=red!30,chanfrein,chanfreincoeff=0.6] \end{pspicture} \begin{pspicture}(-2,-2)(2,2) \psSolid[object=dodecahedron,a=5,fillcolor=cyan!30,chanfrein,chanfreincoeff=.7] \end{pspicture}

458

ch23-pstsolides3d.tex: (#279)

herbert

22.6 pst-solides3d: 3D-Ansichten

22-06-85

22.6.15 Transformationen Im Abschnitt 22.6.6 auf Seite 433 und im Beispiel 22-06-57 auf Seite 436 wurde bereits auf Transformationen beziehungsweise die Anwendung der Option transform hingewiesen. Hier soll diese Option noch einmal eingehender behandelt werden. Im folgenden Beispiel ist der »gelbe« (rechte) Würfel das Original mit dem Mittelpunkt P (−2, 0, 0). Der kleine Würfel entstand aus dem großen durch Verschiebung des Mittelpunkts nach P (−1, 0, 3) und skalare Multiplikation der Vektoren der Eckpunkte mit dem Faktor 0.5. Das Drahtmodell des Würfels hat seinen ursprünglichen Mittelpunkt in P (−2, 0, 0) und wurde danach um den Vektor V (3, −2, 0) verschoben. Bei der Definition der Transformation ist davon auszugehen, dass auf dem Stack der aktuelle Wert des dreidimensionalen Punktes liegt, also x, y und z. Folgerichtig müssen nach den PS-Operationen ebenfalls wieder drei Werte in derselben Reihenfolge auf dem Stack liegen. \usepackage{pst-solides3d} \psset{viewpoint=20 60 20 rtp2xyz,lightsrc=10 15 7,Decran=20} \begin{pspicture}(-5,-5)(6,5) \psSolid[object=grille,base=-3 3 -3 3,fillcolor=red!50] \axesIIID(4,4,3) \psSolid[object=cube,fillcolor=yellow!50,a=2,ngrid=3](-2,0,0) \psSolid[object=cube,fillcolor=green!50,a=2,transform={ 0.5 mulv3d },ngrid=3](-1,0,3) \psSolid[object=cube,transform={ 3 -2 0 addv3d },action=draw,a=2,ngrid=3](-2,0,0) \end{pspicture}

z 22-06-86

x y

459

ch23-pstsolides3d.tex: (#279)

herbert

22

Dreidimensionale Abbildungen

Für die Vektoroperationen stehen sämtliche PS-Funktionen zur Verfügung, wobei hier nur einige der internen Funktionen genannt werden sollen: addv3d, mulv3d, scaleOpoint3d und rotateOpoint3d. Weitere sind in der Dokumentation zur Prologdatei pst-solides3d.pro erklärt. \usepackage{pst-solides3d} \psset{viewpoint=20 60 20 rtp2xyz,lightsrc=10 15 7,Decran=20} \begin{pspicture}(-5,-5)(6,5) \psSolid[object=grille,base=-3 3 -3 3,fillcolor=red!50] \axesIIID(4,4,3) \psSolid[object=cube,a=2,ngrid=3,fillcolor=yellow!50](-2,0,0) \psSolid[object=cube,a=2,ngrid=3,transform={.75 3 .5 scaleOpoint3d}](2,0,1) \psSolid[object=cube,a=2,ngrid=3,transform={ 3 -2 0 addv3d },action=draw](-2,0,0) \end{pspicture}

z 22-06-87

x y

Mithilfe des Makros \pstVerb kann auch eine eigene PS-Funktion definiert werden, auf die dann bei der Transformation Bezug genommen werden kann. Auf diese Weise sind dann Verformungen, beispielsweise eine Torsion, eines Körpers zu erreichen. \usepackage{pst-solides3d} 22-06-88

\psset{viewpoint=20 60 20 rtp2xyz, lightsrc=10 15 7,Decran=20} \pstVerb{ /verform { 4 dict begin % lokal halten /M defpoint3d % als Vektor speichern /a .5 def /b 1 a 3 sqrt mul sub def /k M norme3d a mul b add def M k mulv3d end } def }% \begin{pspicture}(-3,-4)(3,3) \psset{linewidth=.02,linecolor=gray} \psSolid[object=cube,a=3,ngrid=9, transform=verform]% \end{pspicture}

460

ch23-pstsolides3d.tex: (#279)

herbert

22.6 pst-solides3d: 3D-Ansichten

Im folgenden Beispiel hat man zuerst ein Prisma der Höhe 10 und der Seitenlänge 1. Die Seiten sind in Gittern zu je 20 × 2 eingeteilt. Die PS-Funktion torsion speichert zuerst den aktuellen Punkt in M, um danach die Koordinaten wieder aufzurufen und nur die z-Koordinate zu speichern. Dann wird der aktuelle Punkt wieder auf den Stack gelegt, danach kommen die Winkelwerte 0 0 und z · 18, die dann für die Rotation um die z-Achse benutzt werden. Da z maximal den Wert 10 annimmt, beträgt die Torsion des Prismas daher insgesamt 180 Grad.

\usepackage{pst-solides3d} \psset{viewpoint=50 50 20 rtp2xyz,lightsrc=25 37 17,Decran=30} \begin{pspicture}(-1.5,-1)(1.5,6) \psSolid[object=grille,base=-2 2 -2 2,ngrid=8] \psSolid[object=prisme,h=10,ngrid=20 2,hue=0 1 0.4 5, base=.5 0 .5 .5 0 .5 -.5 .5 -.5 0 -.5 -.5 0 -.5 .5 -.5] \end{pspicture}\qquad \begin{pspicture}(-1.5,-1)(1.5,6) \psSolid[object=grille,base=-2 2 -2 2,ngrid=8] \pstVerb{ /torsion { % x y z liegt auf dem Stack 2 dict begin % alles lokal halten /M defpoint3d % x- y- z-Koordinaten speichern M % x y z wieder auf den Stack legen /z exch def % z Koordinate speichern pop pop % x y löschen M % x y z auf den Stack legen 0 0 z 18 mul % weitere 0 0 18*z auf den Stack rotateOpoint3d % Punkt rotieren end } def }% \psSolid[object=prisme,h=10,ngrid=20 2,transform=torsion,hue=0 1 0.4 5, base=.5 0 .5 .5 0 .5 -.5 .5 -.5 0 -.5 -.5 0 -.5 .5 -.5] \end{pspicture}

22-06-89

461

ch23-pstsolides3d.tex: (#279)

herbert

22

Dreidimensionale Abbildungen

22.6.16 Definition neuer Objekte Im folgenden Beispiel wird eine spezielle Grundfläche durch Kombination eines Linienzuges und einer Funktion erzeugt. Entscheiden ist hierbei, dass ein geschlossener Linienzug für die einhüllende Kurve der Grundfläche entsteht. Die Ansicht der Grundseite erreicht man durch einfache Drehung um die x-Achse mit RotX=90.

\usepackage{pst-solides3d} \psset{lightsrc=10 20 30,viewpoint=50 60 25 rtp2xyz,Decran=25} \begin{pspicture}(-5,-2)(3,4) \defFunction{G}(t){ t cos 2 mul }{ t sin 2 mul }{} \psSolid[object=grille,base=-6 6 -4 4,action=draw,linecolor=black!20] \psSolid[object=prisme,h=8,fillcolor=yellow!20,RotX=90,hollow,% zeige Innenteil ngrid=8,incolor=red!30,resolution=19,% für courbeR2+ base=2 0 3 0 3 3 -3 3 -3 0 -2 0 % x y ... 180 0 {G} CourbeR2+](0,4,0) \axesIIID[showOrigin=false](3,1.5,3)(5.5,5,5.5) \psSolid[object=grille,base=-3 3 0 3,RotX=90,action=draw](0,4,0) \end{pspicture}

z 22-06-90

x y

\usepackage{pst-solides3d} \begin{pspicture}(-7,-2)(7,4) \psset{lightsrc=80 30 30,viewpoint=1000 60 20 rtp2xyz,Decran=1000} \psset{solidmemory} \defFunction[algebraic]{Func}(t){2+2*cos(t)}{2*tan(t/2)}{2*sin(t)} \defFunction[algebraic]{Func’}(t){-2*sin(t)}{2*(1+tan(1/2*t)^2)}{2*cos(t)} \psSolid[object=courbe,range=-2.8 2.6,ngrid=72 12,function=Func,name=H1, hue=0 1 0.7 1,action=none,r=1] \psSolid[object=cylindrecreux,h=20,r=1,RotX=90,incolor=green!30,action=none,name=C1, ngrid=36 36](2,10,0) \psSolid[object=fusion,base=H1 C1] \composeSolid \end{pspicture}

462

ch23-pstsolides3d.tex: (#279)

herbert

22.6 pst-solides3d: 3D-Ansichten

22-06-91

Neben den standardmäßigen Objekten, die in Abschnitt 22.6.1 auf Seite 420 zusammengestellt sind, kann man sich neue Objekte erzeugen durch Festlegung der Eckpunkte und der daraus resultierenden Teilflächen oder alternativ bei Prismen durch Festlegung der Grundfläche. Der Option object wird dabei der Wert new zugewiesen. Die Eckpunkte sind über das optionale Argument sommets und die Teilflächen über faces festzulegen. Die Grundfläche der Prismen kann auch durch zweidimensionale Funktionen erfolgen, wozu der PS-Funktion CourbeR2+ die mit \defFunction definierte Funktion zu übergeben ist. Drahtmodelle werden über die Definition der Eckpunkte und Flächen vorgenommen. Hierbei muss PS mitgeteilt werden, wie die Fläche im Raum bezüglich vorne/hinten liegt. Dies ergibt sich aus dem Drehsinn beziehungsweise aus dem Richtungsvektor der Fläche. Mit der »rechten-Hand-Regel« lässt sich dies einfach festlegen; der Daumen stellt den Richtungsvektor der vorne/außen liegenden Fläche dar und die Finger geben dann die Drehrichtung vor. Dies lässt sich leicht an einem Viereck zeigen.

\usepackage{pst-solides3d} \psset{viewpoint=50 20 25 rtp2xyz,Decran=35} \begin{pspicture}(-2.2,-1.5)(2,2) \psSolid[object=new,action=draw, sommets=-2 -2 0 -2 2 0 2 2 0 2 -2 0,faces={[0 3 2 1]},num=all,show=all] \axesIIID(2,2,0)(3.5,3,2) \end{pspicture} \begin{pspicture}(-2.2,-1.5)(2,2) \psSolid[object=new,fillcolor=red!30,incolor=blue!50, sommets=-2 -2 0 -2 2 0 2 2 0 2 -2 0,faces={[0 3 2 1]}] \axesIIID(2,2,0)(3.5,3,2) \end{pspicture}

463

ch23-pstsolides3d.tex: (#279)

herbert

22

Dreidimensionale Abbildungen

\begin{pspicture}(-2.2,-1.5)(2,2) \psSolid[object=new,fillcolor=red!30,incolor=blue!50, sommets=-2 -2 0 -2 2 0 2 2 0 2 -2 0,faces={[0 1 2 3]},hollow] \axesIIID(2,2,0)(3.5,3,2) \end{pspicture}

z

z

z 22-06-92

y x

y x

y x

Die linke Abbildung in dem obigen Beispiel zeigt die interne Nummerierung der Punkte. Die mittlere Abbildung definiert die Fläche durch faces={[0 3 2 1]}, sodass der Daumen der Rechten Hand dem Betrachter entgegenkommt.9 Die z-Achse ist somit gleich dem Richtungsvektor und die sichtbare Fläche entspricht »außen«, sodass sie nach Vorgabe mit fillcolor=red!30 gefüllt wird. Im rechten Beispiel wurde der Drehsinn des Rechtecks geändert; [0 1 2 3] ist jetzt entgegengesetzt orientiert, der Richtungsvektor ist daher entgegengesetzt zur z-Achse. Die nun sichtbare Fläche entspricht daher »innen« und wird mit incolor=blue!20 gefüllt, allerdings nur unter der Voraussetzung, dass innen liegende Flächen durch die Option hollow sichtbar gemacht werden. \usepackage{pst-solides3d} \psset{viewpoint=50 20 30 rtp2xyz,Decran=30} \begin{pspicture}(-3,-1.5)(3,3.5) \psSolid[object=new,action=draw,sommets= 2 4 3 -2 4 3 -2 -4 3 2 -4 3 2 4 0 -2 4 0 -2 -4 0 2 -4 0 0 4 5 0 -4 5 1 0 3.5 1 -1 3.5 1 0 6 1 -1 6 0 0 4.5 0 -1 4.5 0 0 6 0 -1 6 2 0 0 2 0 2 2 1 2 2 1 0, faces={[0 4 5 1][0 1 2 3][7 6 5 4][0 3 7 18 19 20 21 4][3 9 2][1 8 0][8 9 3 0] [9 8 1 2][6 7 3 2][2 1 5 6][10 12 13 11][11 15 17 13][12 13 17 16][12 10 14 16] [14 16 17 15][18 21 20 19]},num=all,show=all,numfaces=all] \axesIIID[showOrigin=false](2,4,5)(5,5,7) \end{pspicture} \begin{pspicture}(-3,-1.5)(3,3.5) \psSolid[object=new,action=draw**,sommets= 2 4 3 -2 4 3 -2 -4 3 2 -4 3 2 4 0 -2 4 0 -2 -4 0 2 -4 0 0 4 5 0 -4 5 1 0 3.5 1 -1 3.5 1 0 6 1 -1 6 0 0 4.5 0 -1 4.5 0 0 6 0 -1 6 2 0 0 2 0 2 2 1 2 2 1 0, faces={[0 4 5 1][0 1 2 3][7 6 5 4][0 3 7 18 19 20 21 4][3 9 2][1 8 0][8 9 3 0] [9 8 1 2][6 7 3 2][2 1 5 6][10 12 13 11][11 15 17 13][12 13 17 16][12 10 14 16] [14 16 17 15][18 21 20 19]},fillcolor=black!10,incolor=blue!30, fcol=24 (Goldenrod) 6 (Apricot),rm=15,hollow] \axesIIID[showOrigin=false](2,4,5)(5,5,7) \end{pspicture} 9 Die geschweiften Klammern bei {[0 3 2 1]} sind wichtig, um die darin enthaltenen eckigen Klammern zu schützen; die rechte würde sonst als das Ende der Optionen von \psSolid interpretiert werden, was dann einen Fehler zur Folge hätte.

464

ch23-pstsolides3d.tex: (#279)

herbert

22.6 pst-solides3d: 3D-Ansichten

z

z

22-06-93

y x

y x

22.6.17 Komplexe Objekte In allen bisherigen Beispielen wurde alle Objekte der Reihe nach gesetzt und verdeckten dadurch eventuell andere Objekte. Dabei spielte das Prinzip der verdeckten Linien beziehungsweise Flächen keine Rolle. pst-solides3d kann dies bei entsprechender Vorgabe jedoch berücksichtigen. Mit der Option solidmemory wird erreicht, dass alle Objekte gesammelt werden, bis sie am Ende mit dem Makro \coposeSolid ausgegeben werden.10 Dazu wird es im Allgemeinen notwendig sein, allen »gesammelten« Objekten action=none und mit name= . . . einen Objektnamen zuzuweisen. Betrachten wir das folgende Beispiel, bei dem ein Zylinder in einem Ring steckt. Sowohl Ring als auch Zylinder verdecken gegenseitig einige Teilflächen. Um dies sichtbar zu machen, müssen erst alle Teilflächen beider Objekte gespeichert werden, bevor am Ende eine Kombination der beiden ausgegeben wird. \usepackage{pst-solides3d} 22-06-94

\begin{pspicture}[solidmemory,Decran=10](-6,-5)(6,4) \psSolid[object=anneau,h=6,hue=0 1 0.2 0.9, R=4,r=3,h=1,action=none,name=Ring](0,0,-1) \psSolid[object=cylindre,h=8,fillcolor=blue!20, r=1.5,ngrid=4 16,action=none,name=Zylinder](0,0,-6) \psSolid[object=fusion,action=draw**, base=Ring Zylinder] \end{pspicture}

Hierbei spielt die Reihenfolge der Objekte keine Rolle, da sie ohnehin intern mit ihren Teilflächen derart sortiert werden, dass verdeckte Flächen beziehungsweise Linien nicht gezeichnet werden. Die Objekte werden in der üblichen Weise erstellt, jedoch mit der Option action=none, sodass keine Ausgabe erfolgt, der erstellte PS-Code jedoch weiterhin intern zur Verfügung steht. Dies kann über die willkürlich gewählten Namen 10 Intern werden sie der Kontrolle von PSTricks entzogen, sodass über den Objektnamen jederzeit auf die Objekte zugegriffen werden kann.

465

ch23-pstsolides3d.tex: (#279)

herbert

22

Dreidimensionale Abbildungen

Ring und Zylinder erfolgen. Das letzte erstellte Object fusion bekommt die Namen über die Option base zugewiesen, wodurch intern die beschriebene Sortierung aller Teilflächen mit anschließender Ausgabe erfolgen kann, denn jetzt wird der Option action die Aktion draw** zugewiesen. Die Ebene im Titelbild der fünften Auflage wurde als Trennfläche für die beiden Zylinder benutzt. Über die Option plansepare kann eine Trennebene angegeben werden, die dann den Gesamtkörper in zwei Teilkörper zerlegt, wobei an einen gegebenen Namen 0 und 1 angehängt wird. Im folgenden Beispiel werden also zylinder1 und zylinder2 zerlegt in zylinder10 und zylinder11, beziehungsweise zylinder20 und zylinder21. Auf diese kann dann in der üblichen Weise zurückgegriffen werden. \usepackage{pst-solides3d} \begin{pspicture}[solidmemory](-8,-5)(7,5) \psset{lightsrc=50 -50 50,viewpoint=100 -30 40,Decran=100} \psSolid[object=plantype,definition=equation,args={[0 0 1 0] 90}, base=-6 6 -7 6,ngrid=9 13,name=monplan] \defFunction[algebraic]{Cyl1}(t){2*cos(t)}{-6}{2*sin(t)} \defFunction[algebraic]{Cyl2}(t){-6}{2*cos(t)}{2*sin(t)} \psSolid[object=cylindre,range=0 6.28,h=12,function=Cyl1,axe=0 1 0, incolor=black!30,fillcolor=black!10,ngrid=18 18, plansepare=monplan,name=zylinder1,action=none] \psSolid[object=cylindre,range=6.28 0,h=12,function=Cyl2,axe=1 0 0, incolor=black!10,fillcolor=black!30, plansepare=monplan,ngrid=18 18,name=zylinder2,action=none] \psSolid[object=fusion,base=zylinder11 zylinder21]% untere Haelften \psSolid[object=plan,args=monplan] % Ebene \psSolid[object=fusion,base=zylinder10 zylinder20]% obere Haelften \psProjection[object=texte,plan=monplan,linecolor={[cmyk]{0.4,0.6,1,0.2}}, text=PSTricks mit pst-solides3d,fontsize=20,pos=cc](0,-6.5) \axesIIID[linewidth=1pt,labelsep=10pt,showOrigin=false](2,6.7,2)(11,8,5) \end{pspicture}

z 22-06-95

y

x

466

ch23-pstsolides3d.tex: (#279)

herbert

22.6 pst-solides3d: 3D-Ansichten

Im folgenden Beispiel wird der senkrechte Zylinder vom Radius 2√LE und√ der Höhe 6 LE (Angabe jeweils in Längeneinheiten) durch die Ebene 22 x~ + 22 ~z = 0 (plansepare={[0.707 0 0.707 0]})11 in zwei Hälften Zylinder0 und Zylinder1 geteilt, wobei der Name Zylinder willkürlich gewählt wurde. Die y-Achse liegt aufgrund der Definition in der Ebene und der Winkel zwischen der Ebene und den anderen beiden Achsen beträgt jeweils 45 Grad. Der Gesamtzylinder liegt mit seinem Mittelpunkt im Koordinatenursprung und wird durch die Angabe action=none nicht gezeichnet. Die beiden Hälften werden durch object=load und der entsprechenden Zuordnung mit load= . . . geladen. Die obere Hälfte, intern als Zylinder0 bezeichnet wird zusätzlich um 90 Grad um die eigene z-Achse gedreht und in y-Richtung um 4 LE versetzt angeordnet. Die untere Hälfte, intern als Zylinder1 bezeichnet, verbleibt an der ursprünglichen Stelle. \usepackage{pst-solides3d} \begin{pspicture}[solidmemory](-4,-5)(7,4) \psset{viewpoint=50 -40 10 rtp2xyz,Decran=50,linecolor=darkgray,lightsrc=viewpoint} \psSolid[object=grille,action=draw,base=-3 5 -3 5,linecolor=red](0,0,-3) \psSolid[object=cylindre,r=2,h=6,ngrid=6 24,plansepare={[0.707 0 0.707 0]}, name=Zylinder,action=none](0,0,-3) \psSolid[object=load,load=Zylinder1,fillcolor={[rgb]{0.7 1 0.7}}, fcol=0 (1 1 0.7 setrgbcolor)] \psSolid[object=load,load=Zylinder0,RotZ=90,fillcolor={[rgb]{0.7 1 0.7}}, fcol=0 (1 1 0.7 setrgbcolor)](0,4,0) \psSolid[object=plan,action=draw,definition=equation, args={[0.707 0 0.707 0] 90},base=-2 2 -3 3,planmarks] \psSolid[object=line,args=0 0 0 0 4 0]% erste Haelfte y-Achse \axesIIID[showOrigin=false](0,6.8,0)(3.5,8,3.5) \end{pspicture}

z 22-06-96

y

x

11 Die Angabe muss zwingend in geschweifte Klammern gesetzt werden, um die umgebenden Klammern nicht zu beeinflussen.

467

ch23-pstsolides3d.tex: (#279)

herbert

22

Dreidimensionale Abbildungen

name

Beim Zusammensetzen von Ebenen ist zu beachten, dass intern die Namensvergabe durch name gesondert behandelt wird. Da Ebenen sowohl für die Projektion als auch andere Dinge benutzt werden können, bei denen nicht unbedingt ein Polygongitter erwünscht ist, gibt es die Namenserweiterung _s. Und nur bei dieser wird das Polygongitter berücksichtigt, sodass auch Ebenen mit object=fuse überlagert werden können. Anderenfalls gibt es einen Fehler. Im folgenden Beispiel werden für das Zusammensetzen der Ebenen E1_s E2_s E3_s berücksichtigt, wohingegen für die Projektion des Textes die ursprünglichen Namen E1 E2 E3 relevant sind.

\usepackage{pst-solides3d} \begin{pspicture}(-3,-1.5)(3,5.5) \psset{unit=0.5,lightsrc=40 50 50,viewpoint=18 65 30 rtp2xyz,solidmemory, linewidth=.2pt} \psSolid[object=plan,definition=equation,args={[1 0 0.15 0] 90},base=-2 2 -0.5 4, fillcolor=blue!20,name=E1,ngrid=30 30,action=none] \psSolid[object=plan,definition=equation,args={[1 1 0 0]},base=-2 2 -0.5 3.5, fillcolor=green!20,name=E2,ngrid=20 20,action=none](0,0,3) \psSolid[object=plan,definition=equation,args={[0 1 0 0] 180},base=-2 2 -0.5 3.5, fillcolor=red!20,name=E3,ngrid=20 20,action=none] \psSolid[object=fusion,base=E1_s E2_s E3_s] \psProjection[object=texte,fontsize=50,text=Ja,plan=E3](-1,2) \psProjection[object=texte,fontsize=50,text=n,plan=E1](1,2) \psProjection[object=texte,fontsize=50,text=a,plan=E2,phi=180](-1.7,1.4) \end{pspicture}

22-06-97

468

ch23-pstmirror.tex: (#280)

herbert

22.7 pst-mirror: Projektionen auf einem Kugelspiegel

22.7 pst-mirror: Projektionen auf einem Kugelspiegel Das Paket pst-mirror von Manuel Luque und dem Autor erlaubt beliebige 3DProjektionen auf einem sphärischen Spiegel. Die vorrangige Anwendung liegt eher im theoretischen Bereich, wenn einem auch derartige konvexe Spiegel sehr häufig an unübersichtlichen Ausfahrten oder unübersichtlichen Räumen begegnen.

22.7.1 Parameter Tabelle 22.14 zeigt eine Zusammenstellung der speziellen, für pst-ob3d geltenden Parameter. Der Spiegel wird standardmäßig durch eine gestrichelte Kreislinie angedeutet und kann über die Option Sphere=false unterdrückt werden. Ebenen werden über die vier Parameter Xmin, Xmax, Ymin und Ymax in ihrer Größe und durch normale in ihrer Richtung festgelegt. Der Bezugspunkt für die einzelnen Flächen/Körper kann durch die Parameter Xorigine, Yorigine und Zorigine verändert werden. Tabelle 22.14: Zusammenstellung der verfügbaren Optionen für pst-mirror.

Name

Wert

Vorgabe

visibility isolatin Sphere Xmin Xmax Ymin Ymax pas scale distance Rayon grille normale

Boolean Boolean Boolean Wert Wert Wert Wert Wert Wert Wert Wert Wert Wert Wert

true true true -50 50 -50 50 1 1 30 10 10 0 0

Xorigine Yorigine Zorigine RotX RotY RotZ A B C CX CY CZ Rtetraedre

Wert Wert Wert Wert Wert Wert Wert Wert Wert Wert Wert Wert Wert

30 0 0 0 0 0 10 10 10 0 0 0 5

Bedeutung Textkodierung Kugel durch Kreis andeuten Minimale x-Größe einer Ebene Maximale x-Größe einer Ebene Minimale y-Größe einer Ebene Maximale y-Größe einer Ebene Skalierungsfaktor Radius des Spiegels in cm Gitter einer Ebene anzeigen Normalenrichtung durch die Winkelangaben θ und φ x-Wert des Ursprungs y-Wert des Ursprungs z-Wert des Ursprungs Rotation um die x-Achse Rotation um die y-Achse Rotation um die z-Achse Quaderseite Quaderseite Quaderseite Quader-Mittelpunkt Quader-Mittelpunkt Quader-Mittelpunkt Tetraederradius Fortsetzung . . .

469

ch23-pstmirrorTAB0.tex: (#232)

herbert

22

Dreidimensionale Abbildungen

. . . Fortsetzung Name

Wert

Vorgabe

ColorFaceA ColorFaceB ColorFaceC ColorFaceD ColorFaceE fracHcone

Farbe Farbe Farbe Farbe Farbe Wert

magenta red blue cyan yellow 1

Hpyramide PSfont fontscale

Wert PS-Schrift Wert Wert Einheit

5 Times-Roman 1 -0.5

relative Höhe eines Pyramidenstumpfes Höhe iener Pyramide PostScript-Font Relative Fontgröße x-Labelabstand

Wert Einheit Wert Wert Tripel

-0.5

y-Labelabstand

0 0 0 0 0

Verschiebung

xlabelsep ylabelsep xO yO translation

Bedeutung

\usepackage{pst-mirror,multido} \begin{pspicture}[Sphere=false](-5,-4)(5,5) \psset{Xorigine=40} % hintere Ebene \pstSphereFrame[fillstyle=solid,fillcolor=OrangePale](-70,-50)(70,10) \pstSphereGrid[linecolor=blue,linewidth=0.2mm,grille=10, Ymin=-50,Ymax=10,Xmax=70,Xmin=-70](40,0,0) \psset{normale=0 90,Xorigine=40,Yorigine=0,Zorigine=-10} % untere Ebene \pstSphereFrame[fillstyle=solid,fillcolor=cyan,opacity=0.5](-70,-30)(70,0) \pstSphereGrid[linecolor=blue,linewidth=0.2mm,grille=10, Ymin=-30,Ymax=0,Xmax=70,Xmin=-70](40,0,-10) \psset{normale=90 0,Xorigine=40,Yorigine=70,Zorigine=-10} % Linke Ebene \pstSphereFrame[fillstyle=solid,fillcolor=yellow](0,0)(-30,-60) \pstSphereGrid[linecolor=blue,linewidth=0.05mm,grille=10, Ymin=-60,Ymax=0,Xmin=-30,Xmax=0](40,70,-10) \psset{normale=90 0,Xorigine=40,Yorigine=-70,Zorigine=-10} % Rechte Ebene \pstSphereFrame[fillstyle=solid,fillcolor=yellow](0,0)(-30,-60) \pstSphereGrid[linecolor=blue,linewidth=0.05mm,grille=10, Ymin=-60,Ymax=0,Xmin=-30,Xmax=0](40,-70,-10) \multido{\iY=-70+10}{15}{\pstSpherePoint(40,\iY,0){A}% \uput[90](A){\small\red\iY}} \multido{\iX=10+10}{4}{\pstSpherePoint(\iX,0,-10){A}% \uput[-45](A){\small\blue\iX}} \multido{\iZ=-10+10}{7}{\pstSpherePoint(40,0,\iZ){A}% \uput[135](A){\small\green\iZ}} \end{pspicture}

470

ch23-pstmirror.tex: (#280)

herbert

22.7 pst-mirror: Projektionen auf einem Kugelspiegel

50 22-07-1

40 30 20 10

7060 50 40

30

20

10

00

-10

-20

-30 -40 -50-60-70

-10 40 30 20

10

22.7.2 Makros Die einfachsten Makros sind: \pstSpherePoint [Optionen] (x, y, z){Name} \pstSphereLine [Optionen] (x0 , y0 , z0 ) . . . (xn , yn , zn ) \pstSpherePolygon [Optionen] (x0 , y0 , z0 ) . . . (xn , yn , zn ) \pstSphereCircle [Optionen] {Radius} \pstSphereArc [Optionen] {Radius}{Anfangswinkel }{Endwinkel }

\usepackage{pst-mirror,multido} \begin{pspicture}(-5,-4)(5,5) \Hintergrund% siehe Beispiel oben \pstSpherePoint(40,0,40){A} \pstSpherePoint(10,-40,-10){B} \pstSpherePoint(10,40,-10){C} \psdots[dotsize=1mm,linecolor=green](A)(B)(C) \pstSphereLine[linecolor=red,linewidth=2pt](10,40,-10)(40,0,40)(10,-40,-10) \pstSpherePolygon[linecolor=blue,linewidth=2pt,fillcolor=red!50,fillstyle=solid, opacity=0.4](14,25,-8)(25,0,35)(14,-25,-8)(25,0,-35) \psset{Xorigine=40}%,Yorigine=0,Zorigine=0,normale=0 0}% \multido{\iYorig=-65+10}{14}{\psset{Yorigine=\iYorig,Zorigine=15} \pstSphereCircle[linecolor=red]{5}} \multido{\iYorig=-65+10}{14}{\psset{Yorigine=\iYorig,Zorigine=50}% \pstSphereArc[linecolor=blue,linewidth=2pt,fillstyle=solid, fillcolor=OrangePale]{5}{180}{360}} \end{pspicture}

471

ch23-pstmirror.tex: (#280)

herbert

22

Dreidimensionale Abbildungen

22-07-2

50 40 b

30 20 10

7060 50 40

30

20

10

00

-10

-20

-30 -40 -50-60-70

-10 40 30 b

b

20

10

Bei \pstSpherePolygon ist zu beachten, dass der Pfad durch eine gerade Linie im zweidimensionalen System geschlossen wird, falls Anfangs- und Endpunkt nicht identisch sind. Dies ist deutlich in obigem Beispiel zu sehen. Einfache Flächen und Körper lassen sich mit den folgenden Makros darstellen: \pstSphereFrame [Optionen] (x0 , y0 )(x1 , y1 ) \pstSphereGrid [Optionen] (x, y, z) \pstMirrorSphere [Optionen] (Radius) \pstSphereCube [Optionen] \pstSphereDie [Optionen]

Die Körper können durch Vorgabe von CX, CY und CZ beliebig verschoben und durch Vorgabe von RotX, RotY und RotZ beliebig rotiert werden.

\usepackage{pst-mirror,pst-grad,multido} \begin{pspicture}(-5,-4)(5,5) \Hintergrund% siehe Beispiel oben \psset{fillstyle=solid,fillcolor=blue!30,linecolor=red,A=2.5,B=5,C=A} \pstSphereCube[CX=15,CY=0,CZ=-5] \pstSphereCube[CX=15,CY=-10,CZ=7,RotZ=30] \pstSphereCube[CX=15,CY=10,CZ=7,RotX=60] \pstSphereDie[B=2.5,CX=10,CY=10] \pstSphereDie[A=5,B=A,C=A,fillcolor=cyan!50,CX=25,CZ=5,CY=-5,RotZ=45,RotY=20,RotX=-60] \end{pspicture}

472

ch23-pstmirror.tex: (#280)

herbert

22.7 pst-mirror: Projektionen auf einem Kugelspiegel

50 40

22-07-3

30 20 10

7060 50 40

30

20

10

00

-10

-20

-30 -40 -50-60-70

-10 40 30 20

10

\usepackage{pst-mirror,pst-grad,multido} \begin{pspicture}(-5,-4)(5,5) \Hintergrund% siehe Beispiel oben \multido{\iCY=-65+10,\iRotX=0+20}{7}{% \psset{CY=\iCY,CZ=-5,CX=15,RotX=\iRotX,fillstyle=gradient,gradbegin=white,gradend=red, gradmidpoint=0.2,linecolor=magenta,linewidth=0.05mm} \ifnum\multidocount=7 \psset{CZ=0}\fi\ifnum\multidocount=3 \psset{CZ=20,opacity=0.3}\fi \pstMirrorSphere{5}} \multido{\iCY=65+-10,\iRotX=0+15}{7}{% \psset{CY=\iCY,CZ=-5,CX=15,RotX=\iRotX,fillstyle=gradient,gradbegin=white,gradend=red, gradmidpoint=0.2,linecolor=magenta,linewidth=0.05mm} \ifnum\multidocount=6 \psset{CZ=10}\fi\ifnum\multidocount=3 \psset{CZ=20,CY=5}\fi \pstMirrorSphere{5}} \end{pspicture}

22-07-4

50 40 30 20 10

7060 50 40

30

20

10

00

-10

-20

-30 -40 -50-60-70

-10 40 30 20

10

Die weiteren Makros für Körper sind in einem abschließenden und sehr aufwändigen Beispiel zusammengefasst.

473

ch23-pstmirror.tex: (#280)

herbert

22

Dreidimensionale Abbildungen

\pstSphereCylinder [Optionen] {Radius}{Höhe} \pstSphereCone{Radius}{Höhe} \pstSpherePyramide [Optionen]

\pstSphereTetraedre

\usepackage{pst-mirror,pst-grad,multido} \begin{pspicture}(-8,-8)(8,8) \pstSphereFrame[normale=0 90,Xorigine=50,Yorigine=0,Zorigine=-20,fillstyle=solid, fillcolor=OrangePale](-70,-50)(70,50) \pstSphereGrid[normale=0 90,linecolor=blue,linewidth=0.2mm,grille=10, Ymin=-50,Ymax=50,Xmax=70,Xmin=-70](50,0,-20) {\psset{fillstyle=solid,fillstyle=solid,fillcolor=GrisClair,A=5,B=A,C=A} \multido{\iX=95+-20}{4}{% \multido{\iZ=55+-10}{6}{\psset{CX=\iX,CZ=\iZ,CY=45}\pstSphereCube} \multido{\iZ=-15+10}{2}{\psset{CX=\iX,CZ=\iZ,CY=45}\pstSphereCube} \multido{\iZ=55+-10}{6}{\psset{CX=\iX,CZ=\iZ,CY=-45}\pstSphereCube} \multido{\iZ=-15+10}{2}{\psset{CX=\iX,CZ=\iZ,CY=-45}\pstSphereCube} \multido{\iY=35+-10}{4}{\psset{CX=\iX,CZ=55,CY=\iY}\pstSphereCube} \multido{\iY=-35+10}{4}{\psset{CX=\iX,CZ=55,CY=\iY}\pstSphereCube}}} \multido{\iZ=-15+10,\iRotZ=20+45}{2}{\psset{fillstyle=solid,fillstyle=gradient, fillcolor=GrisClair,A=5,B=A,C=A,CX=5,CY=-65,CZ=\iZ,RotZ=\iRotZ}\pstSphereCube} \multido{\iZ=-15+10}{2}{\psset{fillstyle=solid,fillstyle=solid,fillcolor=GrisClair, A=5,B=A,C=A,CX=15,CY=45,CZ=\iZ}\pstSphereCube\psset{CY=-45}\pstSphereCube} \multido{\iZ=15+-10,\iRotZ=30+30}{2}{\psset{fillstyle=solid,fillstyle=solid, fillcolor=GrisClair,A=5,B=A,C=A,CX=15,CY=45,CZ=\iZ,RotZ=\iRotZ}\pstSphereCube} \multido{\iZ=25+-10,\iRotZ=30+20}{3}{\psset{fillstyle=solid,fillstyle=solid, fillcolor=GrisClair,A=5,B=A,C=A,CX=15,CY=-45,CZ=\iZ,RotZ=\iRotZ}\pstSphereCube} \multido{\iX=95+-20}{5}{\multido{\iY=-25+10}{6}{\psset{fillstyle=gradient, gradbegin=white,gradend=red,gradmidpoint=0.2,linewidth=0.05mm,CY=\iY,CZ=-20,CX=\iX} \ifnum\iX=15 \ifnum\iY=-15 {\psset{RotY=90,RotZ=-45,CZ=-17.5}\pstSphereCylinder{2.5}{-10}} \else \pstSphereCylinder{2.5}{10}\fi \else\pstSphereCylinder{2.5}{10}\fi}} \multido{\iY=25+-10,\iRotY=0+60}{6}{\psset{fillstyle=solid,linewidth=0.05mm, CX=55,CY=\iY,CZ=-10,A=2.5,Hpyramide=5}\pstSpherePyramide} \multido{\iY=25+-10,\iRotY=0+60}{6}{% \psset{fillstyle=gradient,gradbegin=white,gradend=red,gradmidpoint=.2, linewidth=0.05mm,CX=35,CY=\iY,CZ=-10}\pstSphereCone{2.5}{2.5}} \multido{\iY=25+-10,\iRotY=0+60}{6}{% \psset{fillstyle=gradient,gradbegin=white,gradend=blue,gradmidpoint=.2, linecolor=cyan,linewidth=0.1mm} \ifnum\iY=-15{\psset{CX=7.5,CY=-5,CZ=-17.5,RotY=\iRotY}\pstMirrorSphere{2.5}} \else {\psset{CX=15,CY=\iY,CZ=-7.5,RotY=\iRotY}\pstMirrorSphere{2.5}}\fi} \psset{CX=2.5,CZ=-10,CY=15,fracHcone=0.5,linecolor=red,fillstyle=gradient, gradbegin=yellow,gradend=red,gradmidpoint=0,linewidth=0.05mm} \pstSphereCone{2.5}{5} {\psset{RotX=0,RotZ=20,RotY=30,CX=2.5,CZ=-10,CY=2.5,fillstyle=solid,linecolor=black, A=2,Hpyramide=3}\pstSpherePyramide} \psset{linecolor=red,CZ=5,A=2.5,B=A,C=A,RotZ=-50,RotX=20,RotY=30,CY=0,CX=20, fillstyle=solid,fillcolor=OrangePale} \pstSphereDie

474

ch23-pstmirror.tex: (#280)

herbert

22.7 pst-mirror: Projektionen auf einem Kugelspiegel

\end{pspicture}

22-07-5

Die Ausgabe von Text ist nur auf PS-Ebene möglich, sodass auch nur die dort vorhandenen Schriften zur Verfügung stehen (siehe Abschnitt 27.2.7 auf Seite 570, wobei die Standardvorgabe gleich Times-Roman ist. Das Makro erwartet die Angabe des dreidimensionalen Bezugspunktes, sowie den Text. \pstSphereText [Optionen] {x,y,z }{Text }

Die Lage des Textes wird durch den Parameter normale, die relative Größe durch fontscale, der Font durch PSfont und die Fontkodierung durch isolatin festgelegt, wobei letzterer Akzente erlaubt, wenn er auf true gesetzt wird. \usepackage{pst-mirror,pst-grad} \newpsstyle{GradWhiteYellow}{fillstyle=gradient,gradbegin=yellow,gradend=yellow!20, linecolor=yellow!50,GradientCircle=true,gradmidpoint=0,GradientPos={(1,1)}} \begin{pspicture}(-8,-10)(8,10) \pscircle[style=GradWhiteYellow]{7.07} \pstSphereGrid[linecolor=red,grille=10,Ymin=-50,Ymax=50,Xmax=80,Xmin=-80, normale=0 0](20,0,0) \pstSphereGrid[linecolor=blue,grille=10,Ymin=-40,Ymax=-20,Xmax=80,Xmin=-80, normale=0 90](40,0,-10) \pstSphereText[fillstyle=solid,fillcolor=red,normale=0 0,fontscale=30, PSfont=Bookman-demibold,yO=0](20,0,10){PSTricks} \pstSphereText[fillstyle=solid,fillcolor=blue,normale=0 90,fontscale=10,

475

ch23-pstmirror.tex: (#280)

herbert

22

Dreidimensionale Abbildungen

PSfont=Helvetica,yO=2.5](10,0,-10){f\string\374r TeX und LaTeX}%\374->ü \end{pspicture}

22-07-6

Da ein PS-Font verwendet werden muss, ist darauf zu achten, dass die Umlaute in der Kodierung ISO-Latin1 einzugeben sind. Alternativ können die entsprechenden Oktalzahlen, wie in obigem Beispiel gezeigt, eingegeben werden.

22.8 pst-platon: Die platonischen Körper Das kleine Paket pst-platon stellt nur Makros für die fünf platonischen Körper Tetraeder, Hexaeder, Oktaeder, Dodekaeder und Ikosaeder zur Verfügung.

22.8.1 Parameter Tabelle 22.15 zeigt eine Zusammenstellung der speziellen, für pst-platon geltenden Parameter, wobei psscale innerhalb des Hauptpaketes pstricks definiert ist. Tabelle 22.15: Zusammen- Name fassung aller Parameter für PstPicture pst-platon. Viewpoint Frame psscale faceName faceNameFont colorType

Werte

Vorgabe

Boolean xyz Boolean Wert Makro Makro A|B

false 1 1 1 true 1 \Alph \huge\sffamily\bfseries A

476

ch23-pstplaton.tex: (#306)

herbert

22.8 pst-platon: Die platonischen Körper

\usepackage{pst-platon} \begin{pspicture}[showgrid=true,PstPicture=false](-1,-2)(10,5) \psTetrahedron \psTetrahedron[PstPicture=true,faceName=\arabic,colorType=B] \rput(2,4){\psTetrahedron[Viewpoint=1 1.2 0.5]} \psset{unit=1.3}\rput(5,3){\psTetrahedron[Frame=false,Viewpoint=-1 0.5 2]} \end{pspicture}

5

22-08-1

B

C

C

4

B

A 3

3

2

2

1

C

0

B

1

A

-1

-2 -1

0

1

2

3

4

5

6

7

8

9

10

Sollen die Körper in eine eigene Umgebung pspicture gesetzt werden, so empfiehlt es sich, PstPicture=false zu setzen und für die Platzierung des Körpers \rput zu benutzen. Ohne pspicture belegen die Körper formal keinen Platz und werden zentriert auf den aktuellen Punkt gesetzt. Anderenfalls verschieben sich alle folgenden Elemente, was deutlich im Beispiel 22-08-1 zu sehen ist. Das erste (linke) Tetrahedron liegt mit seinem Mittelpunkt in (0,0 ), das zweite mit seiner linken unteren Ecke ebenfalls, da es jetzt ohne Anwendung von \rput eine Box mit Breite und Höhe ist und das dritte und vierte Tetrahedron nach rechts verschiebt. Die folgenden Beispiele zeigen jeweils eine Anwendung der in Tabelle 22.15 auf der vorherigen Seite angegebenen Parameter. \usepackage{pst-platon} 22-08-2

A

B

C

C

B

\psTetrahedron \psTetrahedron[Frame=false] A

477

ch23-pstplaton.tex: (#306)

herbert

Dreidimensionale Abbildungen

\usepackage{pst-platon} \psTetrahedron \psTetrahedron[Viewpoint=-1 1 .5] \psTetrahedron[Viewpoint=0.4 -1 .5]

22-08-3

C

B

B

22

D C

A

Mit faceName kann der Bezeichner für die Seitenflächen gewählt werden. Mögliche Makros sind: \Alph (Standard), \alph, \arabic, \Roman und \roman. \usepackage{pst-platon} \psHexahedron \psHexahedron[faceName=\alph] \psHexahedron[faceName=\Roman]

22-08-4

V

e

E

A

B

a

b

I

II

Mit faceNameFont kann man den Font für die Seitenflächen verändern, wobei alle LATEX-Befehle möglich sind. \usepackage{pst-platon} \psHexahedron \psHexahedron[faceNameFont=\Huge] \psHexahedron[faceNameFont=\Huge\sffamily]

22-08-5

B

A

E

E

E

A

B

A

Die Körper können über den Parameter psscale skaliert werden.

478

ch23-pstplaton.tex: (#306)

herbert

B

22.8 pst-platon: Die platonischen Körper

\usepackage{pst-platon} \psOctahedron[Frame=false] \psOctahedron[Frame=false,psscale=2]

22-08-6

D D

B

A

B

A E

E

Die Farben der Seitenflächen können aus den vorgegebenen Typen A oder B gewählt werden, wobei diese intern wie folgt definiert sind: \newcommand\colorTypeA{% \definecolor{ColorA}{cmyk}{0.1,0.1,0.05,0} \definecolor{ColorB}{cmyk}{0.15,0.15,0.05,0} ... } \newcommand\colorTypeB{% \definecolor{ColorA}{cmyk}{0.1,0.2,0.1,0} \definecolor{ColorB}{cmyk}{0.15,0.2,0.15,0} ... }

Neue Farbtypen können in gleicher Weise definiert und über den Parameter colorType=htypei ausgewählt werden.

C

B

22-08-7

A

\usepackage{pst-platon} \newcommand\colorTypeC{% \colorlet{ColorA}{red} \colorlet{ColorB}{green} \colorlet{ColorC}{blue} \definecolor{ColorD}{rgb}{0.55,0.2,0.15}} \psTetrahedron[colorType=C]

479

ch23-pstplaton.tex: (#306)

herbert

22

Dreidimensionale Abbildungen

\usepackage{pst-solides3d} \begin{pspicture}(-5,-5)(7,9) \psset{viewpoint=20 10 10,Decran=40,lightsrc=20 10 5,solidmemory} \defFunction{cone}(u,v){u v Cos mul}{u v Sin mul}{u} \psSolid[object=surfaceparametree,base=-2 2 0 2 pi mul,inhue=0.8 0.2,hue=0.8 0.2, function=cone,linewidth=0.5\pslinewidth,ngrid=25 40,fillcolor=cyan!50, name=XYZ,action=none] \psSolid[object=plan,definition=equation,args={[1 0 0 0]},% plain x=0 fillcolor=blue!30,base=-2 2 -2.5 2.5,ngrid=30 30,action=none,name=Plane] \psSolid[object=fusion,base=XYZ Plane_s] \gridIIID[Zmin=-2,Zmax=2](-2,2)(-2,2) \end{pspicture}

z 22-08-8

2

1

0 y −1

−2

x −2 −2

−1 0

−1

0

1 1 2 2

480

ch23-pstplaton.tex: (#306)

herbert

K a p i t e l

23

pst-circ: Erstellen von

Schaltbildern

23.1 Das Prinzip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481 23.2 Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482 23.3 Die Objekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484 23.4 Logische Bausteine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498

pst-circ ist das erste hier behandelte Paket, welches massiv die in pst-node und PSTricks definierten »low-level«-Objekte nutzt und ausschließlich neue »high-level«-

Objekte definiert. Seit der letzten Auflage sind die Mikrowellen-Symbole hinzugekommen, sodass jetzt auch entsprechende Schaltbilder möglich sind.

23.1 Das Prinzip pst-circ baut im Prinzip auf pst-node auf, indem es zwischen zwei vorgegebene

Bezugspunkte (Knoten) ein grafisches Objekt setzt, wobei die Ausrichtung des Objektes dabei sekundär ist. Wenn keine Notwendigkeit besteht, explizit ein Koordinatenpaar als Knoten zu definieren, kann grundsätzlich auch die normale (x|y)-Form verwendet werden. Die Beschriftung bezieht sich immer auf die horizontale Achse, kann jedoch durch eigene Parameter ebenfalls gedreht werden. \usepackage{pst-circ}

1

23-01-1

R 0

B

A

-1 -2

-1

0

1

2

\begin{pspicture}[showgrid](-2.1,-1)(2.1,1) \pnode(-1.5,0){A}\qdisk(A){3pt}\uput[180](A){A} \pnode(1.5,0){B}\qdisk(B){3pt}\uput[0](B){B} \resistor(A)(B){$R$} \end{pspicture}

23

pst-circ: Erstellen von Schaltbildern

\usepackage{pst-circ}

B

R

23-01-2

\begin{pspicture}(-2.1,-1)(2.1,1) \pnode(-1.5,-0.75){A}\qdisk(A){3pt}\uput[180](A){A} \pnode(1.5,0.75){B}\qdisk(B){3pt}\uput[0](B){B} \resistor(A)(B){$R$} \end{pspicture}

A

23.2 Parameter Es existieren derartig viele Parameter, dass es hier den Rahmen sprengen würde, alle entsprechend mit Beispielen zu behandeln. Deshalb zeigt die Tabelle 23.1 nur eine Zusammenfassung, während im folgenden Text mehrere Beispiele folgen. Tabelle 23.1: Zusammenstellung der verfügbaren Optionen für pst-circ. Name

Wert

Vorgabe

antennastyle couplerstyle dipoleconvention dipolestyle directconvention groundstyle inputarrow intensity intensitylabel intensitylabeloffset intensitycolor intensitylabelcolor

two hybrid receptor normal true ads false false \empty 0.5 black black

intersect labelangle labeloffset LOstyle output OAperfect OAinvert OAiplus

two|three|triangle hybrid|directional Typ Typ Boolean ads|old|triangle Boolean Boolean Text Wert Farbe Farbe Wert Einheit Boolean Wert Wert {}|Crystal top|right|bottom|left Boolean Boolean Boolean

OAipluslabel

Text

OAiminus

Boolean

OAiminuslabel

Text

OAiout OAioutlabel parallel

Boolean Text Boolean

intensitywidth

Bedeutung

Antennensymbol Kopplerstil Motor/Generatorprinzip Dipolstil Stromrichtung Erdungssymbol Peil für Eingabesignal Strompfeil zeichnen Stromlabel Labelabstand Strompfeilfarbe Stromlabelfarbe \pslinewidth Linienbreite false Leiterkreuzung 0 Labeldrehwinkel 0.7 Labelabstand {} Oszillatorstil top Antennensymbol true idealer OP true invertierender OP false positiven Anschluss markieren Label am positiven An\empty schluss false negativen Anschluss markieren \empty Label am negativen Anschluss false Ausgang markieren \empty Label am Ausgang false Parallelschaltung Fortsetzung . . .

482

ch24-pstcircTAB1.tex: (#232)

herbert

23.2

Parameter

. . . Fortsetzung Name

Wert

Vorgabe

parallelarm

Wert

1.5

parallelsep parallelnode

Wert Boolean

primarylabel tension tensionlabel tensionoffset tensionlabeloffset

Text Boolean Text Wert Wert

Bedeutung

logicLabelstyle

Boolean Boolean Boolean Wert Wert Wert Wert Wert Wert Typ Wert Einheit

Leiterlänge vom Abzweig bei der Parallelschaltung 0 zusätzlicher Abstand false Knoten bei der Parallelschaltung erstellen \empty Label (Primärseite) false Spannungspfeil zeichnen \empty Spannungslabel 1 Abstand des Spannungspfeils 1.2 Labelabstand vom Spannungspfeil black Spannungspfeilfarbe black Spannungslabelfarbe \pslinewidth Linienbreite true Transistor mit Kreis false Anschlüsse vertauschen false Basis-Strompfeil false Kollektor-Strompfeil false Emitter-Strompfeil \empty Strompfeillabel \empty Strompfeillabel \empty Strompfeillabel PNP PNP/NPN-Typ \empty Label (Sekundärseite) false Strompfeil false Strompfeil \empty Strompfeillabel \empty Strompfeillabel normal Dreipolstil regelbarer Zwei- oder Dreifalse pol false Anschlusspunkte zeichnen false Anschlussknoten zeichnen false Links-Rechts vertauschen 0.5 Anschlusslänge 1.5 Breite eines Bausteins 2.5 Höhe eines Bausteins 2 Anzahl der Eingänge 2 Anzahl der J-Eingänge 2 Anzahl der K-Eingänge and Typ des Bausteins \small Labelgröße

logicSymbolstyle

Wert Einheit

\large

logicNodestyle

Wert Einheit

\footnotesize Knotengröße

tensioncolor tensionlabelcolor

Farbe Farbe tensionwidth Wert Einheit transistorcircle Boolean transistorinvert Boolean transistoribase Boolean transistoricollector Boolean transistoriemitter Boolean transistoribaselabel Text transistoricollectorlabelText transistoriemitterlabelText transistortype Typ secondarylabel Text transformeriprimary Boolean transformerisecondaryBoolean transformeriprimarylabelText transformerisecondarylabelText tripolestyle Typ variable Boolean logicShowDot logicShowNode logicChangeLR logicWireLength logicWidth logicHeight logicNInput logicJInput logicKInput logicType

Symbolgröße

483

ch24-pstcirc.tex: (#189)

herbert

23

pst-circ: Erstellen von Schaltbildern

23.3 Die Objekte Die folgenden Tabellen 23.2 bis 23.5 zeigen eine Zusammenstellung der möglichen Objekte, wobei sich dies auf die derzeit aktuelle Version 1.39 bezieht. Formal kann folgende Unterscheidung vorgenommen werden: Monopol Dipol Multidipol Tripol Quadrupol

benötigt zwei Knotenpunkte benötigt zwei Knotenpunkte benötigt zwei Knotenpunkte, besteht aber intern aus mehreren verketteten Dipolen. benötigt drei Knotenpunkte benötigt vier Knotenpunkte

In den Tabellen wird zur besseren Übersicht jedes Objekt ohne mögliche Optionen dargestellt, auf die dann im weiteren Verlauf dieses Artikels eingegangen wird. Der Aufruf eines Makros geschieht in der Regel durch \Objektname[Optionen](Knoten1){Label}% \Objektname[Optionen](Knoten1)(Knoten2){Label}% \Objektname[Optionen](Knoten1)(Knoten2)(Knoten3){Label}% \Objektname[Optionen](Knoten1)(Knoten2)(Knoten3)(Knoten4){Label}%



Monopole Dipole Tripole Quadrupole

Das letzte Argument (Bezeichner oder Label) kann auch leer bleiben. Einige der Tripole verfügen nicht über dieses Argument, sodass eine Bezeichnung selbst vorgenommen werden muss.

23.3.1 Monopole Monopole werden vorrangig in der Hochfrequenztechnik als Antennen- oder Oszillatorsymbol verwendet. \newground [Optionen] {Rotation} (Knoten) \antenna [Optionen] {Rotation} (Knoten) \oscillator [Optionen] {Rotation} (Knoten){Text }{Optionen}

Tabelle 23.2: Liste der vordefinierten Schaltsymbole für elektrische Monopole

Bezeichnung

Makroname

Erde

\newground

Antenne

\antenna

Oszillator

\oscillator

Grafik

L1

484

ch24-pstcirc.tex: (#189)

herbert

23.3

Die Objekte

23.3.2 Dipole Dipole, im technischen Sprachgebrauch auch als Zweipole bezeichnet, stellen den größten Anteil an verfügbaren Objekten. Bis auf \wire können alle Dipole mit einem Bezeichner (Label) versehen werden. Tabelle 23.3: Liste der vordefinierten Schaltsymbole für elektrische Dipole

Bezeichnung

Makroname

Batterie

\battery

Spannungsquelle

\Ucc

Stromquelle

\Icc

Widerstand

\resistor

HF-Widerstand

\RFLine

Kapazität

\capacitor

Spule

\coil

Diode

\diode

Zenerdiode

\Zener

LED

\LED

Grafik B

Ucc

Icc

R

R

C

L

D

Z

L

Fortsetzung . . .

485

ch24-pstcirc.tex: (#189)

herbert

23

pst-circ: Erstellen von Schaltbildern

. . . Fortsetzung Bezeichnung

Makroname

Lampe

\lamp

Schalter

\switch

Kabel

\wire

Pfeillinie

\tension

Kreis

\circledipole

Filter

\filter

Isolator

\isolator

Multiplizierer

\freqmult

Grafik l

S

V

c

F

I

f ×N P

Phasenschieber

\phaseshifter

VCO

\vco

Verstärker

\amplifier

V

A

Fortsetzung . . .

486

ch24-pstcirc.tex: (#189)

herbert

23.3

Die Objekte

. . . Fortsetzung Bezeichnung

Makroname

Detektor

\detector

Squid

\SQUID

RelayNOP

\relayNOP

Suppressor

\Suppressor

Arrestor

\Arrestor

Grafik D

D

D

D

D

Alternative Symbole D1

Diode

\newdiode

D2

D1

Zenerdiode

\newZener

D2

Fortsetzung . . .

487

ch24-pstcirc.tex: (#189)

herbert

23

pst-circ: Erstellen von Schaltbildern

. . . Fortsetzung Bezeichnung

Makroname

Grafik D1

\newLED

LED

D2

S1

Idealer Schalter

\newSwitch

S2

Kapazität

C1

\newcapacitor

MCC

M Armatur

\newarmatur

GCC

G VDC

VDC

\vdc

VAC

\vac

VAC

Das Symbol \circledipole kann insbesondere für die Darstellung von Strom- und Spannungsquellen verwendet werden, die abweichend vom Batteriesymbol sind. Mit der Option labeloffset=0 erreicht man, dass das Label genau zentriert eingefügt wird, wie es beispielsweise in Abbildung 23.2 gezeigt wird.

488

ch24-pstcirc.tex: (#189)

herbert

23.3

Die Objekte

23.3.3 Multidipole Multidipole sind prinzipiell nichts weiter als eine lineare Verkettung von Dipolen, was eine Vereinfachung bei der Erstellung sein kann. So könnte man beispielsweise das Ersatzschaltbild einer Spule statt der Definition eines neuen Makros einfach als Multidipol definieren. RL

L

C

\usepackage{pst-circ}

23-03-38

\begin{pspicture}(0,-0.5)(8,1) \pnode(0,0){A} \pnode(8,0){B} \multidipole(A)(B)% \coil{$L$} \resistor{$R_L$} \capacitor{$C$}. %}{StateInAnu}{StateNRSA}\naput[npos=0.3]{} \ncline{->}{StateNRSA}{StateNRI}\naput[npos=0.3]{ajouterArête} \ncline{->}{StateNRI}{StateNRC}\naput[npos=0.3]{graphComplet} \naput{graphComplet} \ncline{->}{StateNRC}{StateROU} \ncput*[npos=0.3]{\umlStack{[ClientPrioritaireSatisfait] DemandeFin}} \ncline{->}{StateROU}{StateOutAnu}% }}} \resizebox{0.9\linewidth}{!}{% \begin{pspicture}(-5,-9.5)(9.5,8)%\psgrid \psset{linearc=0.3,armA=1.2,armB=0.8,arrows=->,arrowscale=2,ncurv=2} \rput(2.4,-0.75){\rnode{StateGlobal}{\StateGlobal}}\umlPutStateIn{6,5}{StateIn} \rput(0,-1){\rnode{StateAnu}{\StateAnu}}\rput(6,-3){\rnode{StateVisu}{\StateVisu}} \rput(6,0){\rnode{StateOut}{\umlStateOut}} \ttfamily\small \ncEXN[offsetA=-0.25,offsetB=-0.5,armA=0.5]{StateVisu}{StateVisu} \ncput*[npos=1.7]{zoomer}

689

ch32-pstuml.tex: (#287)

herbert

31

UML-Diagramme

\ncSW[offsetB=-5]{->}{StateIn}{StateAnu}\naput[npos=1.3]{NewGraphAsked} \ncEN{->}{StateOutAnu}{StateVisu}\nbput[npos=0.9]{/Sauvegarder} \ncline{->}{StateVisu}{StateOut}\ncES[offsetA=3]{->}{StateAnu}{StateOut} \naput[npos=0.99]{\umlStack[umlAlign=l]{\ Annuler\\\ /DemanderConfirmation}} \end{pspicture}% }

état global de l’objet Graphe 31-01-24

GrapheAnnulable

ajouterSommet

retirerSommet

NewGraphAsked

non routé sans arêtes

Annuler /DemanderConfirmation

ajouterArête ajouterArête

retirerArête

non routé incomplet ajouterSommet graphComplet

retirerSommet

graphComplet ajouterRoute

retirerRoute

non routé complet

Visualisable do/superviser() zoomer

[ClientPrioritaireSatisfait] DemandeFin réoptimiser

routé /Sauvegarder

31.2 uml Das Paket uml von Ellef Fange Gjelstad ist inkompatibel zu pst-uml; es verwendet teilweise gleiche Makronamen. Das uml-Paket bietet einen weitaus umfangreicheren Satz an Befehlen und Optionen und daraus folgend eine etwas umständlichere Anwendung als pst-uml. Ähnlich den bekannten Mechanismen der objektorientierten Programmierung, versucht uml den gleichen Weg zu gehen. Die entsprechenden »Vererbungsmechanismen« zeigt die folgende Abbildung, die gleichzeitig einen ersten Überblick über die Handhabung der Makros gibt.

690

ch32-pstuml.tex: (#287)

herbert

31.2

uml

Jede Box korrespondiert zu einem LATEX-Befehl, hier \umlDrawable oder \umlElement. Jedes Attribut korrespondiert zu einer LATEX-Variablen (\umlReference) oder ist selbst eine Referenz.

Drawable

31-02-1

-commentimport : color type : Stringquasi-static [named options] Contents

Element -commentreference stereotype subof abstract : bool importedFrom comment [named options] Contents

Box

Stretchbox name - graphicalName [named options] Name Contents Size according to contents

pos[XY ] : position posDelta[XY ] : position refpoint box = true size[XY] : length grayness : real 0–1 fillcolorCommand : colorName = umlFillColor border : length borderLine = solid outerBorder : length innerBorder : length

Diagram box = always true Size given contents placed according to size

Package

Hier wird bei der Beschreibung nicht die objektorientierte Vorgehensweise gewählt, sondern die eher praktische, die in der Regel mit dem Makro \umlDiagram beginnt, welches die Aufgabe der pspicture-Umgebung übernimmt, den notwendigen Platz im Dokument zu reservieren. \umlDiagram [Optionen] {Inhalt } \umlDiagram ist daher nichts andres als eine \umlBox und erbt infolgedessen auch alle

Optionen. Als Inhalt kann dem Makro faktisch alles übergeben werden. \usepackage{uml} 31-02-2

INHALT

\umlDiagram{INHALT}\\ \umlDiagram[sizeX=3cm, sizeY=1cm]{\Large INHALT}

INHALT

691

ch32-pstuml.tex: (#287)

herbert

31

UML-Diagramme

\usepackage{uml} 31-02-3

\umlDiagram[sizeX=5cm, sizeY=3cm]{\umlClass[refpoint=bl, pos={3,3}]{Klasse}{}{}}

Klasse

Um in einem Diagramm später Objekte an bestimmten Stellen platzieren zu können, wird dem Diagramm ein Label zugeordnet (im Beispiel ref=Dia), auf dass dann andere Makros mit der pos-Option Bezug nehmen.

Klasse1

\usepackage{uml}

Klasse2

31-02-4

\umlDiagram[ref=Dia,sizeX=4cm, sizeY=2cm,innerBorder=5mm]{} \umlClass[pos=\umlTop{Dia}, refpoint=rt]{Klasse1}{}{} \umlClass[pos=\umlRightSep{Klasse1}, refpoint=lC]{Klasse2}{}{} \umlClass[pos=\umlBottomSep{Klasse2}, refpoint=rt]{LetzteKlasse}{}{}

LetzteKlasse

In dem Beispiel bezieht sich die erste Klasse auf die Position pos=\umlTop{Dia}, was der oberen Kante der umgebenden Box entspricht. Gleichzeitig wird durch den Klassennamen ein Label erzeugt, auf den sich jetzt die zweite Klasse beziehen kann: pos=\umlBottomSep{Klasse1}. Damit lassen sich innerhalb der Diagramm-Umgebung alle weiteren Boxen beliebig anordnen. Das Makro \umlBox ermöglicht das Erstellen von Boxen mit verschiedenen Optionen, welche in Tabelle 31.4 zusammengestellt sind. \umlBox [Optionen] {Inhalt } \umlStretchBox [Optionen] {Name}{Inhalt }

Tabelle 31.4: Zusammenstellung der Boxoptionen.

Name pos

posX posY posDelta posDeltaX posDeltaY

Standard (0,0 )

0 0 (0,0)

0 0

Bedeutung Setzt die Position, normalerweise durch posX und posY bestimmt. Auch Knoten- bzw. Klassennamen sind möglich. Horizontale Position. Vertikale Position. Relative Verschiebung. Relative horizontale Verschiebung. Relative vertikale Verschiebung. Fortsetzung . . .

692

ch32-pstumlTAB1.tex: (#77)

herbert

31.2

uml

. . . Fortsetzung Name

Standard

refpoint grayness border borderLine

Referenzpunkt: l, r, t, b oder B und sinnvolle Kombinationen. Der Hintergrund der Box Linienbreite der Umrandung Linienstil der Umrandung. Es gelten die Möglichkeiten von PSTricks (siehe Abschnitt 4.1.3 auf Seite 47). Der innere Rand der Box Boxbreite. Boxhöhe.

1 0.4pt solid

innerBorder sizeX sizeY

0pt

\usepackage{uml}

Box1

31-02-5

Box3

Bedeutung

\umlDiagram[ref=Dia,sizeX=3cm,sizeY=2cm]{} \umlBox[pos=\umlTop{Dia},refpoint=t]{\Large Box1} \umlBox[pos=\umlRight{Dia},refpoint=rC]{\Large Box2} \umlBox[pos=\umlLeft{Dia},refpoint=lC]{\Large Box3} \umlBox[pos=\umlBottom{Dia},refpoint=b]{\Large Box4}

Box2

Box4

Ein Spezialfall der »normalen« Box ist die so genannte \umlStretchBox, die ihre Größe an ihrem Inhalt ausrichtet und mit einem Namen versehen werden kann, der gleichzeitig referenziert werden kann. Er sollte daher die Konventionen von Knotennamen einhalten (siehe Abschnitt 15.1 auf Seite 252). \umlClassifier ist selbst eine \umlStretchBox welche in der objektorientierten Sprache eine Instanz sein kann. Weiterhin ist \umlClassifier die Superklasse zu \umlClass und

typischweise unterteilt in compartments. \umlCompartment [Optionen] {Inhalt } \umlCompartmentline [Optionen] {Inhalt }

31-02-6

\usepackage{uml}

Name Zeile 1 Zeile 2 Compartment Linie

\umlClassifier[box=]{Name}{% \umlCompartment{Zeile 1\\} \umlCompartment{Zeile 2\\} \umlCompartment{% \umlCompartmentline{Compartment Linie}}}

Das Makro \umlClass bezeichnet allgemein eine Klasse und hat die Syntax: \umlClass [Optionen] {Name}{Variablen}{Methoden}

Das folgende Beispiel zeigt die Funktionsweise dieses doch sehr komplexen Makros.

693

ch32-pstuml.tex: (#287)

herbert

31

UML-Diagramme

«Man»

American Man From: America A man from America # State : State # Favourite burger = MacDow Watch TV() - Vote(Party party) : int

\usepackage{uml} 31-02-7

\umlClass[reference=AmericanMan, stereotype=Man,importedFrom=America, comment=A man from America]{American Man} {\umlAttribute[visibility=\#,type=State]{State} \umlAttribute[visibility=\#, default=MacDow]{Favourite burger}} {\umlMethod[visibility=]{Watch TV}{} \umlMethod[visibility=-, returntype=int]{Vote}{Party party}}

\umlMethod [Optionen] {Name}{Argumente} \umlAttribut [Optionen] {Name}

\umlArgument [Optionen] {Name}

Das Makro \umlSchema dient nur der einfacheren Erstellung, denn es hat keine Entsprechung in UML. Prinzipiell beschreibt es eine Klasse, nur dass es weitere Parameter erwartet.

\umlSchema [Optionen] {Name}{Attribute}{Methoden} {Argumente}{Constraints}{Structure}

Dies sind neben dem optionalen noch weitere sechs verpflichtende Parameter, die aber leer bleiben können und dann in der TEX-üblichen Notation angegeben werden. Ein Beispiel soll die Möglichkeiten zeigen:

\usepackage{uml} \umlSchema[box=]{Stack}{ %Attributes \umlAttribute[visibility=-,type=\emph{type},default=null,]{firstNode} }{% Methods \umlMethod[visibility]{push}{\emph{type} x} \umlMethod[visibility,type=\emph{type}]{pop}{} }{% Arguments \umlArgument[type=Metaclass]{type} }{% Constraints \umlCompartmentline{S:Stack = S.push(x).pop()} }{% Structure \umlDiagram[innerBorder=2mm,sizeX=11em,sizeY=5em,ref=StackDiagram, outerBorder=2mm]{% \umlClass[pos={.5,.5}, ref=stackNode]{Node}{ \umlAttribute[visibility=\#,type=\emph{type}]{data}}{} \umlRelation[angleA=20,angleB=-20,armA=1em,armB=1em]{stackNode}{stackNode}{% \umlLabelA[height=-1ex,fraction=1.5]{stackNode}{1} \umlLabelB[height=-5ex,fraction=1.5]{stackNode}{1}} }% End of diagram }% End of Structure/Stack

694

ch32-pstuml.tex: (#287)

herbert

31.2

uml

Stack

31-02-8

- firstNode : type = null + push(type x) + pop() : type type : Metaclass S:Stack = S.push(x).pop()

Node

1

# data : type

1

Als letztes sollen noch die Verbindungsmöglichkeiten gezeigt werden, die hier grundsätzlich als \umlRelation für reine Linien mit den möglichen PSTricks-Stilen bezeichnet werden oder als Verbindungen im Sinne der UML mit speziellen Symbolen.

\umlRelation [Optionen] {KnotenA}{KnotenB}{Label }

Für die Anordnung eines Labels existieren zum einen mehrere Optionen und auch spezielle Makros, auf die hier jedoch nicht weiter eingegangen werden soll; sie sind hinreichend in der Dokumentation des Paketes beschrieben.

\usepackage{uml} \umlDiagram[box=,sizeX=5cm,sizeY=5cm,ref=relation]{% \umlClass[pos=\umlBottomLeft{relation},posDelta={1,1},refpoint=bl, reference=A]{Class A}{}{} \umlClass[pos=\umlTopRight{relation},posDelta={-1,-1},refpoint=tr, reference=B]{Class B}{}{} \umlRelation{A}{B}{\umlLabelA{AB}{*}\umlLabelB{AB}{1}} \umlLabel[fraction=0.5,offset=0]{AB}{Mitte} \umlSubclass[ref=ABsub,angleA=0,armA=5,armAngleA=0,angleB=300,nodesep=1ex]{A}{B} \umlComposition[% reference=ABComp, % Marke angleA=120, % Startpunkt bei A arm=3, % Mittlere Linie armAngleA=80, % Winkel des Arms A angleB=180, % Startpunkt bei B armAngleB=190 % Winkel des Arms B ]{A}{B} % obere Linie \umlNavigabilityA{ABComp}}% Pfeil an A

695

ch32-pstuml.tex: (#287)

herbert

31

UML-Diagramme

31-02-9

Class B

Mitte

1

*

Class A

Die speziellen Verbindungen unterscheiden sich in der Syntax nur durch das Fehlen des letzten Arguments von \umlRelation und sind sämtlichst in der folgenden Tabelle dargestellt. Das Paket uml definiert noch weitere Verbindungstypen (Relations of relations), die hier jedoch nicht weiter behandelt werden sollen. \umlSubclass [Optionen] {SubclassA}{SubclassB} \umlInner [Optionen] {InnerA}{InnerB} \umlInstance [Optionen] {InstanceA}{InstanceB} \umlAggregation [Optionen] {AggregationA}{AggregationB} \umlComposition [Optionen] {CompositionA}{CompositionB} \umlApplication [Optionen] {ApplicationA}{ApplicationB}

Das Makro \umlPackage hat keine Entsprechung in der UML-Notation, es dient lediglich der Übersichtlich bei der Erstellung umfangreicher UML-Abbildungen. \umlPackage ist formal eine \umlBox und erbt daher alle entsprechenden Eigenschaften. \umlPackage [Optionen] {Name}{Inhalt }

\usepackage{uml} \umlPackage[box=,subof=subof,stereotype=stereo,importedFrom=importedFrom, comment=Kommentar]{Package}{% \umlDiagram[sizeX=7cm,sizeY=4cm,box=,ref=pack]{% \umlClass[pos=\umlBottomLeft{pack},posDelta={2ex,2ex},refpoint=bl]{Buch}{}{} \umlClass[pos=\umlTopLeft{pack},posDelta={2ex,-2ex},refpoint=tl]{Haus}{}{} \umlClass[pos=\umlTopRight{pack},posDelta={-2ex,-2ex},refpoint=tr]{Person}{}{} \umlClass[pos=\umlBottomRight{pack},posDelta={-2ex,2ex},refpoint=br]{Autor}{}{} \umlAssociation{Buch}{Haus} \umlLabelB[refpoint=l]{BuchHaus}{ist in} \umlAssociation{Buch}{Person}\umlLabelA{BuchPerson}{liest} \umlSubclass{Autor}{Person} \umlAssociation{Buch}{Autor} \umlLabelA[height=.5ex,refpoint=lb]{BuchAutor}{geschrieben} \umlAssociation{Haus}{Person}\umlLabelA{HausPerson}{lebt in} }% Ende von \umlDiagram }% Ende von \umlPackage

696

ch32-pstuml.tex: (#287)

herbert

31.2

uml

«stereo»

31-02-16

Package From: importedFrom Kommentar Sub of: subof lebt in

Haus

Person

ist in liest geschrieben

Buch

Autor

31-02-17

ADT

ADT-example

+ name : String

- firstNode : type = null type : Metaclass

Node

Graph

+ data : type

+ + + +

insert(type x) dijkstra(type x) : type insertEdge(type x) : boolean delete(type x)

Node * *

Edge cost : real

Search Tree + insert(type x) + search(type x) : type + search(type x) : boolean + delete(type x) arity : Integer= 2 sort : type × type → boolean = >

Node

arity 1

697

ch32-pstuml.tex: (#287)

herbert

K a p i t e l

32

Weitere PSTricks-Pakete 32.1 Linguistik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699 32.2 Mathematik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705 32.3 Naturwissenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725 32.4 Informationstechnik. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 780 32.5 Verschiedenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 790

Es würde den Rahmen dieses Buches sprengen, wollte man auch nur ansatzweise alle Pakete ausführlicher behandeln, die es mittlerweile für PSTricks gibt oder die im Zusammenhang damit existieren. Eine mehr oder weniger vollständige Zusammenstellung findet man auf der offiziellen PSTricks-Seite http://PSTricks.tug.org, insbesondere sind dort auch die Bezugsquellen genannt, da leider noch nicht jedes Paket seinen Weg ins CTAN gefunden hat. Diese Zusammenstellung enthält in einer mehr oder weniger kurzen Darstellung die wesentlichen Punkte der bislang nicht behandelten Pakete. Weitere Informationen findet man dann in den speziellen Dokumentationen der einzelnen Pakete.

32.1 Linguistik Die Linguistik arbeitet viel mit symbolischen Darstellungen, für die sich auch die Anwendung von PSTricks sehr gut eignet. Einen allgemeinen Überblick über die Möglichkeiten erhält man durch [69].

32.1.1 rrgtrees – Linguistic Trees Dieses Paket von D.J. Gardner, welches eine Unterstützung für »role and reference grammar for human language« bietet, hat keine gesonderte TEX-Version, kann somit nur unter LATEX angewendet werden. Es benötigt die Standardpakete pst-node und pst-tree.

32

Weitere PSTricks-Pakete

\usepackage{rrgtrees}

Clause

32-01-1

\small \CLAUSE{ \CORE{ \OPR{2}{the} \ARG{\WORD(NP){cat}} \NUC{walked} \AAJ{ \FanEnd{PP}{to the mat} } } }

Core

Nuc

Arg

AAJ

Pred

the

NP

V

PP

cat

walked

to the mat

\usepackage{rrgtrees}

Clause

32-01-2

Core

Arg

Periphery

Nuc

AAJ

Pred

the

NP

V

PP

PP

cat

walked

to the mat

on the floor

\TOP{ \OPR{4}{the} \CLAUSE{ \CORE[COREa]{ \ARG{\WORD(NP){cat}} \NUC{walked} \AAJ{\FanEnd{PP}{to the mat}}}} \rPERIPH[a]{3}{PP}{% \WORD{on the floor}}} \dolinks

Tabelle 32.1: Zusammenstellung der Linien-Makros

Syntax

Erklärung

\CMPL[Name]{text } Auch \rCMPL. Verbindung zum Objekt (Standard: CLAUSE) mit rechtwinkli-

gem Pfeil. \LCMPL[Name]{Länge}{num}{text } Auch \RCMPL.Verbindung zum Objekt (Standard: CLAUSE) mit CMPL zen-

trierter Länge vom Ziel. \lPERIPH[Extn]{num}{word }{tree} Auch \rPERIPH. Verbindung zum Objekt COREExtn mit rechtwinkligem

Pfeil. \LPERIPH[Extn]{Länge}{num}{word }{tree} Auch \RPERIPH. Verbindung zum Objekt COREExtn mit Periphery zentrier-

ter Länge vom Ziel. \lLINK[extra]{name}{name}{word } Auch \rLINK. Verbindung zum Objekt mit rechtwinkligem Pfeil. \LLINK[extra]{Länge}{name}{name}{word } Auch \RLINK. Verbindung zweier Objekte mit zentriertem Text.

700

ch33-Pakete.tex: (#325)

herbert

32.1

Linguistik

Tabelle 32.2: Zusammenstellung der Tree-Makros

Syntax

Erklärung

\TOP{tree}

Definiert einen logischen Baum der Dimension Null ohne die Wurzel zu zeichnen \SENTENCE[Name]{tree} Neue Strukturebene \CLAUSE[Name]{tree} Neue Strukturebene \CORE[Name]{tree} Neue Strukturebene \ARG[Name]{tree} Neue Strukturebene \AAJ[Name]{tree} Neue Strukturebene \PP[Name]{tree} Neue Strukturebene \NP[Name]{tree} Neue Strukturebene \NCORE[Name]{tree} Neue Strukturebene \NNUC[Name]{tree} Neue Strukturebene \OPR[Name]{num}{text } Einfügen von num Ebenen unterhalb des aktuellen Knotens \FanEnd[Name]{num}{word }{text } Triangle/Fan-Ebene (ohne Analyse), mit dem Scheitel beim Wort-Argument End[Name]{text }{tree} Einfachere Version für \WORD (veraltet) \WORD[Name](word ){text }{tree} Erzeugt eine oder zwei neue Ebenen unterhalb des aktuellen Knotens. \NUC[word ]{text }{tree} Ausgezeichneter Nucleus \OP[Name]{word }{tree} Operator Projektionsebene

\usepackage{rrgtrees} \psset{treesep=2ex}

\TOP{\OPR[DEFa]{5}{the} \CLAUSE{\CORE{\CORE[COREa]{ \ARG{\NP{\WORD{cat}{\OP{N}{\OP{\Nuc\subN}{\OP{\Core\subN}{\OP[cat]{\np}}}}}}} \LINK{DEFa}{cat}{DEF} \OPR[might]{2}{\pnode{IF}might} \OPR[not]{2}{not} \NUC{forget}{\OP{V}{\OP{\Nuc}{\OP[forgetcore]{\Core}}}}}% \CMPL[COREb]{3}{to} \CORE[COREb]{ \NUC{eat}{\OP{V}{\OP{\Nuc}{\OP[eatcore]{\Core}}}} \OPR[DEFb]{2}{the} \ARG{\NP{\WORD{rat}{\OP{N}{\OP{\Nuc\subN}{\OP{\Core\subN}{\OP[rat]{\np}}}}} \LINK{DEFb}{rat}{DEF}}}}}} \rPERIPH{4}{ADV}{\WORD{tomorrow}} } \OPJoin{forgetcore}{eatcore}{\OP{\Core}{\OP[a]{\Clause}{% \OP[b]{\Clause}{\OP[c]{\Clause}{\OP[d]{\Clause}}}}}} \LINK{might}{b}{MOD} \LINK{not}{a}{NEG} \LLINK{8em}{IF}{d}{IF} \LINK{IF}{c}{TNS} \dolinks

701

ch33-Pakete.tex: (#325)

herbert

32

Weitere PSTricks-Pakete

Clause 32-01-3

Core

cmpl

Core

Arg

NP

the

Periphery

Core

Nuc

Nuc

Pred

Pred

V

V

might not forget to

cat

eat

Arg

the

NP

ADV

rat

tomorrow

N Nucn

V Nuc

V Nuc

N Nucn

Coren DEF NP

Core

Core

Coren DEF NP

NEG MOD TNS IF

Core Clause Clause Clause Clause

32.1.2 pst-asr – »autosegmental representations« \usepackage{pst-asr} \newpsstyle{dotted}{linestyle=dotted,linewidth=1.2pt,dotsep=1.6pt} \newpsstyle{crossing}{xed=true,xedtype=\xedcirc,style=dotted} \newtier{softpal,ant,dist,nasal} \tiershortcuts \psset{xgap=1.5in,yunit=3em,ts=0 (Pg),sy=1 ([),ph=-1 (Cg),softpal=.3 (Sg),nasal=-.4 ([), ant=-2 ([),dist=-3 ([),tssym=Place,sysym=\textrm{[+cons]},everyph=Coronal} \DefList{\softpalA{2.5},\antoffset{-.22},\distoffset{.36}} \quad \asr \1{}\1{}\1{}| \@(\softpalA,softpal){Soft Palate} \-(2,sy) % softpal features \@(\softpalA,nasal){\textrm{[+nas]}} \-(\softpalA,softpal) % ant features \@(\antoffset,ant){\textrm{[-ant]}} \-(0,ph) \-[style=crossing](2,ph) \@[1](\antoffset,ant){\textrm{[$\alpha$ ant]}} \-(1,ph) \@[2](\antoffset,ant){\textrm{[-ant]}} \-(2,ph) % dist features \@(\distoffset,dist){\textrm{[-dist]}} \-(0,ph) \-[style=crossing](2,ph) \@[1](\distoffset,dist){\textrm{[$\beta$ dist]}} \-(1,ph) \@[2](\distoffset,dist){\textrm{[+dist]}} \-(2,ph) |\endasr

702

ch33-Pakete.tex: (#325)

herbert

32.1

[+cons]

[+cons]

Linguistik

[+cons] 32-01-4

Place

Place

Soft Palate

Place

[+nas] Coronal

Coronal

[-ant]

Coronal

[α ant]

[-ant]

[-dist]

[β dist]

[+dist]

32.1.3 pst-jtree – Linguistic trees Dieses Paket ist wie das vorhergehende von John Frampton und der Nachfolger von pst-jftree. Es bietet allgemeine Unterstützung für linguistische Bäume, ist aber eine reine TEX-Lösung, so dass die Anwendung für LATEX-Benutzer zwar ebenfalls möglich ist, jedoch sehr gewöhnungsbedürftig erscheint. \usepackage{pst-jtree} \jtree[xunit=5em,yunit=2em] \! = {IP} {\triline{sono stati\hfil}} ^[triratio=.95]{FP} :{F$_{\rlap{$\scriptstyle\rm[+strong]$}}$}!a {Voice$_{\rlap{$\scriptstyle\rm Pass$}}$} :{Voice\rlap{$_{\rm Pass}$}}@A2 {$\rm Agr_OP$} :{DP}!b {${\rm Agr_O}’$} :[scaleby=.8 1]{$\rm Agr_O$}@A3 [scaleby=.8 1]{VP} [scaleby=.4 .7]{\rnode{A5}{$t_i$}\hskip1ex \rnode{A6}{$t_m$}}. \!a = {arrestati$_i$}@A1 . \!b = {alcuni uomini$_m$}@A4 . \psset{arrows=->}\nccurve[angleA=225,angleB=-45]{A2}{A1} \nccurve[angleA=200,angleB=-90,ncurv=1.5]{A3}{A2}\nccurve[angleA=-130,angleB=-70]{A5}{A3} \nccurve[angleA=-130,angleB=-70,linestyle=dashed]{A6}{A4} \endjtree

IP 32-01-5

sono stati

FP

F[+strong] arrestatii

VoicePass AgrO P

VoicePass

AgrO ′

DP alcuni uominim

AgrO

VP ti tm

703

ch33-Pakete.tex: (#325)

herbert

32

Weitere PSTricks-Pakete

32.1.4 pst-qtree – Interface für pst-tree Um die Anwendung des Standardpaketes pst-tree zu vereinfachen, hat David Chiang ein einfaches Interface geschaffen, welches für die Befehle dieselbe Syntax verwendet wie das Paket qtree (http://www.ling.upenn.edu/advice/latex/qtree/). Die Funktionsweise unterscheidet sich dennoch nicht wesentlich von den hier bereits angegeben Paketen. \usepackage{pst-qtree} \newcommand{\1}{\ensuremath{’}} \Tree [.TP [.NP \rnode{subj1}subj$_i$ ] [.T\1 [.T T+v$_n$+\rnode{V}V$_j$+Apl$_k$ ] [.{\it v}P \rnode{io}{ }IO$_l$ [.{\it v}\1 \rnode{subj2}t$_i$ [.AplP \rnode{v1}t$_n$ [.Apl\1 \rnode{do}DO$_m$ [.{\it v}\1 \rnode{io1}t$_l$ [.Apl\1 \rnode{apl1}t$_k$ [.VP [.V \rnode{V1}t$_j$ ]\rnode{do1}t$_m$ ]]]]]]]]] \psset{linewidth=0.3pt,arrowsize=4pt,angleA=180,angleB=-90} \nccurve{->}{subj2}{subj1}\nccurve{->}{do1}{do} \nccurve[linestyle=dashed]{->}{io1}{io} \nccurve{->}{V1}{apl1}\nccurve{->}{apl1}{v1}\nccurve{->}{v1}{V}

TP 32-01-6

T′

NP

subji

T

vP

T+vn +Vj +Aplk

v′

IOl ti

AplP Apl′

tn

v′

DOm

Apl′

tl tk

VP

V

tj

704

ch33-Pakete.tex: (#325)

herbert

tm

32.2

Mathematik

\usepackage{pst-qtree}

S 32-01-7

NP

\Tree [.S [.NP [.D the ] [.N cat ] ] [.VP [.V sat ] [.PP [.P on ] [.NP [.D the ] [.N mat ] ] ] ] ]

VP

D

N

V

the

cat

sat

PP

P

NP

on

D

N

the

mat

32.2 Mathematik 32.2.1 infix-RPN – »infix–postfix« Transformation PSTricks baut vollständig auf PS auf, sodass alle Eingaben, die von TEX nach PS wei-

tergereicht werden, im so genannten Postfix-Modus (Umgekehrte Polnische Notation) eingegeben werden müssen. Da dies für einige Anwender ungewohnt ist, kann mithilfe des Pakets infix-RPN von Jean-Côme Charpentier und Christophe Jorssen eine Infix-Notation in eine PS-kompatible Postfix-Notation transformiert werden. Das Paket pstricks stellt zwar eine Option algebraic bereit, die gleiches bewirkt, sich jedoch ausschließlich auf die Plot-Makros bezieht, somit keine Hilfe für andere Makros sein kann (siehe auch Abschnitt 14.3.6 auf Seite 226). \infixtoRPN{Infix Code} \DeclareNewPSOperator{Name}

Das Makro \infixtoRPN speichert sein Ergebnis im Makro \RPN, welches dann weiter verwendet werden kann.

\RPN

\usepackage{infix-RPN,pst-func,multido}

16.0

32-02-1

15 12.25 10

9.0 6.25

5 1.0 0.25 0 0.0 0 1

4.0 2.25 2

3

\psset{yunit=0.25} \begin{pspicture}(-0.25,-2)(5,20) \infixtoRPN{x*x} \multido{\rx=0.0+0.5}{9}{\rput(! /x \rx\space def \RPN\space x exch )% {\psPrintValue{\RPN}}} \psaxes[dy=5,Dy=5]{->}(5,18) \end{pspicture}

4

705

ch33-Pakete.tex: (#325)

herbert

32

Weitere PSTricks-Pakete

Mit \rput werden im obigen Beispiel als reine Demonstration die y-Werte der Normalparabel an die entsprechende Stelle im Koordinatensystem geschrieben. Dazu wird das Makro \psPrintValue benutzt (siehe Abschnitt 27.2.7 auf Seite 570), welches Werte vor der Ausgabe berechnen kann. /x \rx\space def \RPN\space x exch definiert zuerst die Variable \rx aus der \multido Definition als x, da dieser Variablenname durch \infixtoRPN{x*x } vorgegeben ist. Danach wird durch \RPN das Makro in Postfix-Notation eingefügt, hier x x mul.

Danach wird nochmal der x-Wert auf den Stack gelegt und mit dem gerade berechneten Funktionswert vertauscht, sodass jetzt auf dem Stack das geforderte x y Paar liegt. Bei Funktionen, die mehr als einen Parameter erwarten, sind diese kommasepariert anzuwenden (folgendes Beispiel).

x y atan

\usepackage{infix-RPN} 32-02-2

\infixtoRPN{atan(x,y)}\RPN

Weitere Funktionen können mit dem Makro \DeclareNewPSOperator definiert werden. Im folgenden Beispiel wird der in pstricks.pro definierte Operator Div verwendet:

x y Div

\usepackage{infix-RPN} 32-02-3

\DeclareNewPSOperator{Div} \infixtoRPN{Div(x,y)}\RPN

Es existiert noch ein Ergänzungspaket pst-infixplot, welches zwei Makros \psPlot und \psParametricplot zur Verfügung stellt, welche analog zu den Makros von pst-plot arbeiten, jedoch die Funktion in algebraischer Notation (infix) erwarten. Wie bereits erwähnt, lässt sich gleiches mit der Option algebraic erreichen (siehe Abschnitt 14.3.6 auf Seite 226).

32.2.2 pst-fractal – Fraktale Grafiken Durch den Weg über PS lassen sich auch fraktale Grafiken mit PSTricks erstellen, die jedoch im Allgemeinen zu sehr großen PDF-Dateien führen, da insbesondere bei Darstellungen der Julia- oder Mandelbrotmengen jedes Pixel mit seinem Farbwert gespeichert werden muss. Es stehen folgende Makros zur Verfügung:

706

ch33-Pakete.tex: (#325)

herbert

32.2

Mathematik

\psSier [Optionen] (x0 ,y0 )(x1 ,y1 )(x2 ,y2 ) \psSier [Optionen] (x0 ,y0 ){Base}{Recursion} \psfractal [Optionen] (x0 ,y0 ) (x1 ,y1 ) \psPhyllotaxis [Optionen] (x,y ) \psFern [Optionen] (x,y ) \psKochflake [Optionen] (x,y ) \psAppolonius [Optionen] (x,y ) \psPTree [Optionen] (x,y ) \psFArrow [Optionen] (x,y ) {fraction}

Sierpinskidreieck Das Makro erwartet die drei Koordinaten der Eckpunkte des Dreiecks. Es erstellt die Grafik in einer Box der Größe Null, sodass eine Einbettung in eine pspicture-Umgebung sinnvoll ist. Mit der Option plotpoints kann die Zahl der Iterationen festgelegt werden, wobei standardmäßig 200 genommen wird. \usepackage{pst-fractal} \begin{pspicture}(5,5)\psSier[plotpoints=1000](0,0)(2,5)(5,0)\end{pspicture} \begin{pspicture}(5,5) \psSier[linecolor=blue!70,fillcolor=red!40](0,0){5cm}{4} \end{pspicture}

32-02-4

Julia- und Mandelbrotmengen Alle Argumente des Makros sind optional und werden entsprechend mit Standardwerten ersetzt, wenn sie fehlen. \psfractal ist somit identisch zu \psfractal(-1,-1)(1,1). Die Unterscheidung zwischen Julia- oder Mandelbrotmenge erfolgt über das optionale Argument type, welchem der Wert Mandel oder Julia zugeordnet werden kann. Alle weiteren speziellen Parameter sind in Tabelle 32.3 auf der nächsten Seite zusammengefasst.

707

ch33-Pakete.tex: (#325)

herbert

32

Weitere PSTricks-Pakete

Tabelle 32.3: Zusammenfassung der Parameter für \psfractal

Name

Bedeutung

Werte

Vorgabe

type baseColor

Ausgabetyp Die Farbe des konvergenten Bereichs Die physikalische Breite der Darstellung

Julia|Mandel

Julia white

Dito für die Höhe Der reelle Anfangswert der Konstanten c Dito für den imaginären Wert Die Schrittweite für die Iteration Maximalwert, bei der eine Iteration entscheidet, ob die Folge konvergent ist. Wert, bei der eineIteration als divergent angenommen wird.

Wert Einheit Wert Wert Wert Wert

1cm

Wert

100

xWidth yWidth cx cy dIter maxIter maxRadius

Farbe Wert Einheit

1cm 0 0 1 255

\usepackage{pst-fractal} 32-02-5

\psfractal\quad \psfractal[xWidth=4cm,yWidth=4cm, baseColor=white,dIter=20, cx=-1.3](-2,-2)(2,2)

\usepackage{pst-fractal} 32-02-6

\psfractal[type=Mandel,xWidth=6cm, yWidth=4.8cm,baseColor=white, dIter=10](-2,-1.2)(1,1.2)

maxIter bestimmt die maximale Zahl an Iterationen, danach wird die Schleife verlassen. Intern wird der Wert aber noch mit dIter multipliziert, sodass die Schrittweite beliebig

beeinflusst werden kann. \usepackage{pst-fractal} \psset{xWidth=5cm,yWidth=5cm} \psfractal[maxIter=30,cx=-1.3,cy=0](-2,-2)(2,2)\quad \psfractal[maxRadius=30,dIter=30,cx=-1.3,cy=0](-2,-2)(2,2)

708

ch33-Pakete.tex: (#325)

herbert

32.2

Mathematik

32-02-7

Phyllotaxis Fehlen die Angaben über das Zentrum der Phyllotaxis-Abbildung, so wird standardmäßig (0,0) angenommen. Optionale Parameter sind der Winkel angle der inneren Anordnung, die Angabe über die maximale Iterationszahl maxIter und die Konstante c.

\usepackage{pst-fractal} \begin{pspicture}(-2.75,-2.75)(2.75,2.75)\psPhyllotaxis\end{pspicture}\quad \begin{pspicture}(-2.75,-2.75)(2.75,2.75)\psPhyllotaxis[angle=99]\end{pspicture}

32-02-8

\usepackage{pst-fractal} \begin{pspicture}(-3,-3)(3,3)\psPhyllotaxis[c=4,angle=111]\end{pspicture}\quad \begin{pspicture}(-3,-3)(3,3)\psPhyllotaxis[c=6,angle=111,maxIter=100]\end{pspicture}

709

ch33-Pakete.tex: (#325)

herbert

32

Weitere PSTricks-Pakete

32-02-9

Farn Ohne Angabe des Mittelpunktes wird wieder (0,0) angenommen. \usepackage{pst-fractal} 32-02-10

\begin{pspicture}(-1,0)(1,4) \psFern \end{pspicture} \quad \begin{pspicture}(-3,0)(3,11) \psFern[scale=15,maxIter=100000] \end{pspicture}

Kochkurve Bei fehlender Angabe des Startpunktes wird (0,0) angenommen, welches dem unteren linken Punkt der Kochkurve entspricht. Dies ist in den folgenden Abbildungen jeweils durch einen Punkt hervorgehoben, der normalerweise nicht mit ausgegeben wird. Als spezielle optionale Parameter stehen scale, maxIter und angle zur Verfügung. Letzterer bezeichnet den Anfangswinkel, unter dem die Kochkurve beginnt. \usepackage{pst-fractal} 32-02-11

\begin{pspicture}(-2.4,-0.4)(5,5) \psKochflake[scale=10] \psdot[linecolor=red,dotstyle=*](0,0) \end{pspicture}

b

710

ch33-Pakete.tex: (#325)

herbert

32.2

Mathematik

\usepackage{pst-fractal} \begin{pspicture}(-0.4,-0.4)(12,4) \psset{fillcolor=lime,fillstyle=solid} \multido{\iA=0+1,\iB=0+2}{6}{% \psKochflake[angle=-30,scale=3,maxIter=\iA](\iB,2.5)\psdot*(\iB,2.5) \psKochflake[scale=3,maxIter=\iA](\iB,0)\psdot*(\iB,0)} \end{pspicture}

32-02-12

b

b

b

b

b

b

b

b

b

b

b

b

Apolloniuskreise Die Koordinaten des Startpunktes sind wieder optional und werden zu (0,0) ergänzt, falls sie fehlen. Die spezifischen optionalen Parameter sind Radius und Color, mit den Vorgaben 5 cm und false. \usepackage{pst-fractal} 32-02-13

\begin{pspicture}(-5,-5)(5,5) \psAppolonius[Radius=4cm,Color] \end{pspicture}

Bäume (Trees) Es existieren zwei verschiedene Formen, um fraktale »Bäume« zu erstellen, \psPTree und \psFArrow. Beide erwarten als Argument einen Startpunkt, der zu (0,0) ergänzt

711

ch33-Pakete.tex: (#325)

herbert

32

Weitere PSTricks-Pakete

wird, falls er fehlt. Für \psFArrow ist noch das Teilungsverhältnis von erster und zweiter Linie anzugeben. Der Ursprung ist die Mitte der unteren Linie und in den folgenden Abbildungen durch einen Punkt hervorgehoben. Die in Tabelle 32.4 angegeben optionalen Parameter werden von den Makros ausgewertet. Tabelle 32.4: Zusammenfassung der Parameter für \psfractal

Name

Bedeutung

Werte

Vorgabe

xWidth

Die Breite der Basis (erste Linie)

Wert Einheit

1cm

minWidth

Die Mindestbreite der letzten Linie Relativer Faktor für nichtausbalanzierte Bäume Farbige Linien

Wert Einheit 0...1 Boolean

1pt

c Color

0.5 false

\usepackage{pst-fractal} 32-02-14

\begin{pspicture}(-3,0)(3,4) \psPTree\psdot*(0,0) \end{pspicture}

b

\usepackage{pst-fractal} \begin{pspicture}(-1,0)(1,3)\psFArrow{0.5}\end{pspicture}\quad \begin{pspicture}(-2,0)(2,3)\psFArrow{0.6}\end{pspicture}\quad \begin{pspicture*}(-3,0)(3,3.5)\psFArrow[linewidth=3pt]{0.65}\end{pspicture*}

32-02-15

\usepackage{pst-fractal} \begin{pspicture}(-5,-1)(7,8)\psPTree[xWidth=1.75cm,Color=true,c=0.65]\end{pspicture}

712

ch33-Pakete.tex: (#325)

herbert

32.2

Mathematik

32-02-16

32.2.3 pst-poly – Polygone Das Paket von Denis Girou stellt ausschließlich ein Makro zum Zeichnen von Polygonen oder polygonartiger geometrischer Figuren zur Verfügung. \PstPolygon [Optionen]

\PstPolygon* [Optionen]

Der Unterschied zwischen der Sternversion, die das Objekt mit der aktuellen Linienfarbe füllt und der Füllung über die Option fillstyle=solid ist im dritten und vierten Beispiel deutlich zu sehen. Die gültigen Optionen sind in Tabelle 32.5 zusammengestellt. Prinzipiell macht \PstPolygon nichts anderes als die Eckpunkte mit Knoten zu versehen, die dann miteinander verbunden werden können. Die Reihenfolge der Knoten und die Art der Verbindung kann dabei beeinflusst werden, sodass unterschiedlichste geometrische Figuren möglich sind. \usepackage{pst-poly,multido} \multido{\i=3+2}{5}{\PstPolygon[PolyNbSides=\i]\quad}

32-02-17

713

ch33-Pakete.tex: (#325)

herbert

32

Weitere PSTricks-Pakete

Tabelle 32.5: Zusammenstellung der verfügbaren Optionen für pst-poly

Name

Wert

Vorgabe

PstPicture

Boolean

true

PolyRotation PolyNbSides PolyOffset

Winkel Integer Integer

0 5 1

Bedeutung Angabe, ob das Polygon in eine pspictureUmgebung eingebettet wird. Rotationswinkel Zahl der Polygonecken Inkrement für die Schrittweite aufeinanderfolgender Knoten. Standardmäßig werden keine übersprungen.

PolyIntermediatePoint

Wert

{}

PolyCurves

Boolean

false

PolyEpicycloid

Boolean

false

PolyName

String

{}

Position des Zwischenpunktes für die Verbindung zum nächsten Knoten. Das leere Argument führt zur Nichtbeachtung dieser Option. Verbindung als Linie (false) oder Kurve (true). Polygon (false) oder Epicycloid (true). Name, um gleichartige Polygone mit unterschiedlichen Knotenbezeichnungen zu erreichen.

\usepackage{pst-poly,multido} \multido{\i=3+2}{5}{\PstPolygon[PolyOffset=2,PolyNbSides=\i]\quad}

32-02-18

\usepackage{pst-poly,multido} \multido{\i=3+2}{5}{\PstPolygon*[linecolor=cyan,PolyOffset=4,PolyNbSides=\i] }

32-02-19

\usepackage{pst-poly,multido} \multido{\i=5+2}{5}{\PstPolygon[PolyOffset=7,PolyNbSides=\i,% fillcolor=yellow,fillstyle=solid]\quad}

714

ch33-Pakete.tex: (#325)

herbert

32.2

Mathematik

32-02-20

\usepackage{pst-poly,multido} \multido{\i=1+2}{5}{\PstPolygon[PolyOffset=\i,PolyNbSides=5]\quad}

32-02-21

\usepackage{pst-poly,multido} \multido{\i=5+1}{5}{\PstPolygon[PolyCurves,PolyIntermediatePoint=0.1,% PolyNbSides=\i]\quad}

32-02-22

\usepackage{pst-poly,multido} \multido{\i=5+1}{5}{\PstPolygon[PolyCurves,PolyIntermediatePoint=0.2, PolyOffset=2,PolyNbSides=\i]\quad}

32-02-23

\usepackage{pst-poly,multido} \multido{\i=5+2}{5}{\PstPolygon[PolyCurves,PolyIntermediatePoint=0.15, PolyOffset=3,PolyNbSides=\i]\quad}

715

ch33-Pakete.tex: (#325)

herbert

32

Weitere PSTricks -Pakete

32-02-24

\usepackage{pst-poly,multido} \multido{\n=-1.4+0.5}{5}{% \PstPolygon[PolyNbSides=5,PolyOffset=2,PolyIntermediatePoint=\n]\quad}

32-02-25

\usepackage{pst-poly,multido} \multido{\n=-1.4+0.5}{5}{\PstPolygon[PolyNbSides=13,PolyOffset=2,% PolyIntermediatePoint=\n]\quad}

32-02-26

\usepackage{pst-poly,multido} \multido{\n=-1.4+0.5}{5}{% \PstPolygon[PolyNbSides=21,PolyOffset=2,PolyIntermediatePoint=\n]\quad}

32-02-27

716

ch33-Pakete.tex: (#325)

herbert

32.2

Mathematik

\usepackage{pst-poly,multido} \psset{unit=1.4,linewidth=0.001,PolyNbSides=72,PolyEpicycloid} % Epicycloid of factor 1 is cardioid and of factor 2 nephroid \multido{\i=2+1}{3}{\PstPolygon[PolyOffset=\i]\quad}

32-02-28

\usepackage{pst-poly,multido} \psset{unit=1.5,linewidth=0.001,PolyNbSides=72,PolyEpicycloid} \multido{\i=71+1}{3}{\PstPolygon[PolyOffset=\i]\quad}

32-02-29

b

\usepackage{pst-poly}

32-02-30

b b

\providecommand{\PstPolygonNode}{% \psdots[dotsize=0.2,linecolor=cyan](1;\INode)} \PstPentagon[unit=1.5]

b b

\usepackage{pst-poly}

5 32-02-31

2

1

6

4 3

\providecommand{\PstPolygonNode}{% \rput*{*0}(1;\INode){\small\the\multidocount}} \PstHeptagon[unit=1.5,PolyOffset=2]

7

717

ch33-Pakete.tex: (#325)

herbert

32

Weitere PSTricks-Pakete

\usepackage{pst-poly}

F

32-02-32

D

A

B

C

G

\newcounter{Letter} \providecommand{\PstPolygonNode}{% \setcounter{Letter}{\the\multidocount}% \rput*{*0}(1;\INode){\small\Alph{Letter}}} \PstHeptagon[unit=1.75,PolyOffset=3]

E

\usepackage{pst-poly} 32-02-33

\providecommand{\PstPolygonNode}{% \degrees[3] \rput{0.5}(0.5;\INode){% \pspolygon*(0.5;0.5)(0.5;1.5)(0.5;2.5)}} \PstTriangle

bc

\usepackage{pst-poly} 32-02-34

bc

bc

bc

bc bc

\providecommand{\PstPolygonNode}{% \psdots[dotstyle=o,dotsize=0.2](1;\INode) \psline[linecolor=red]{->}(0.9;\INode)} \PstPolygon[unit=1.75,PolyNbSides=8]

bc bc

\usepackage{pst-poly} 32-02-35

\providecommand{\PstPolygonNode}{% \psline[linewidth=0.1mm,doubleline=true, linecolor=green]{}(0;0)(1;\INode)} \PstHexagon[unit=1.5]

\usepackage{pst-poly} 32-02-36

\newbox{\Star}\savebox{\Star}{% \PstStarFive*[unit=0.15,linecolor=red]} \providecommand{\PstPolygonNode}{% \rput{*0}(1;\INode){\usebox{\Star}}} \PstNonagon\qquad \PstDodecagon[linestyle=none]

718

ch33-Pakete.tex: (#325)

herbert

32.2

Mathematik

\usepackage{pst-poly,multido} \psset{PolyNbSides=4} \multido{\nA=0+60}{7}{\pspolygonbox[PolyRotation=\nA,% framesep=2mm,doubleline=true,linecolor=red,doublecolor=blue]{\magenta Text}}

32-02-37

Text

Text

Text

Text

Text

Text

Text

\usepackage{pst-poly,multido} \multido{\nA=3+1}{8}{\pspolygonbox[PolyNbSides=\nA,framesep=10pt,% fillstyle=solid,fillcolor=cyan,linearc=0.2]{Text}}

32-02-38

Text

Text

Text

Text

Text

Text

Text

Text

32.2.4 pst-coxeterp und pst-coxcoor – Reguläre Polytope Beide Pakete sind von Jean-Gabriel Luque und Manuel Luque und sind auf CTAN unter pst-cox zusammengefasst. [43] Sie stellen Makros für eine Bibliothek von regulären Polytopen zur Verfügung und beruhen auf Arbeiten von Harold S. M. Coxeter. Das Paket pst-coxeterp stellt die folgenden Makros bereit: \Polygon [Optionen]

\Simplex [Optionen]

\gammapn [Optionen]

\betapn [Optionen]

\gammaptwo [Optionen] \betaptwo [Optionen]

Die speziellen optionalen Parameter sind in Tabelle 32.6 auf der nächsten Seite zusammengefasst. Die Polygone sind definiert durch die beiden Parameter P und Q, wobei P Q 2 der Mittelpunktswinkel zwischen den ersten beiden Eckpunkten ist. Q \usepackage{pst-coxeterp} \begin{pspicture}(-2,-2)(2,2)\Polygon[P=5,Q=2,drawcenters=false]\end{pspicture} \begin{pspicture}(-2,-2)(2,2)\Simplex[drawvertices=false]\end{pspicture} \begin{pspicture}(-2,-2)(2,2)\gammapn[unit=0.5,P=4,dimension=4,drawedges=false] \end{pspicture}

719

ch33-Pakete.tex: (#325)

herbert

32

Weitere PSTricks-Pakete

Tabelle 32.6: Zusammenstellung der verfügbaren Optionen für pst-coxeter

Name

Wert

Vorgabe

drawedges

Boolean

true

drawvertices

Boolean

true

drawcenters

Boolean

true

P Q

Wert Wert

dimension colorVertices colorCenters styleVertices styleCenters sizeVertices

Wert 3 Farbe green Farbe red Symbol o Symbol * Wert Einheit 0.05

Angabe, ob die Kanten gezeichnet werden sollen. Angabe, ob Eckpunkte gezeichnet werden sollen. Angabe, ob das Zentrum gezeichnet werden soll. Erster Parameter (Zähler) für das Polygon. Zweiter Parameter (Nenner) für das Polygon. Dimension des Polytops Farbe der Eckpunkte Farbe der Mittelpunkte Symbol für die Eckpunkte Symbol für die Mittelpunkte Größe des Symbols

sizeCenters

Wert Einheit

Dito

6 1

0.05

Bedeutung

bc

bc

bc

bc b bc b bc

bc b

bc

bc

bc

b

bc

bc b

b bc bc bc b bc

b bc

b b

bc b bc b

bc bc

b

cbb b bc b

bc

bc

bc

bc

bc

b bc b

b b bc bc b bc bc b b b b b bc bc bcb bcb bc bc b bc b bc bc b bc b b bc b bb b b cb b b cb b b b bc c b c b bc bc b bc bcb b b b bcb b bc bc b b b bb b bcbc bc b bc bc b bc bcb b b b bcb b bc bc bc b b bc bc b b b bc b b bc b bc b b bc b bb bc b bc bc b b bcb b bc bcb bc bc b b b bc bc bcb bc b b b bcb b bc b bc b b bc bc b bc b bc b

bc bcb

b

bc

bc b

bc b b bc b bcb bc b bc bcb b b bc b bcbc b b bc bc cb b bc bb b bc b b bc b bc cb b b cb b bc b b b bc cb cb b b b b cb b b bc bc bc b bc b b bbc b b bc bc b b bc bc bc b bc bb b cb bc b bcbc b b b b bc b bc cbb b bc b bcb bc b b bc

bc

bc b

b bc bc

bc

b

b bc bc b

bc b

bc

bc b

bc b

bc

b

bc b

bc

bc

bc

bc b

b bc bc

bc bc

bc b

b bc

b bc b cb b b

b bc b

b

b bc b bc b bc

bc

bc b bc

b b cb b b bc bc

bc b

bc

bc b

bcb

bc b b

32-02-39

bc

bc b bc

b

b bc b bc

bc

b bc bc

b

bcb

b bc b bc

b b bcb b bc bc

bc

bc

bc b

bcb b bc b

bc

b

bc b

b

b

bc b b b b bc bc b bc bc b bc b bc bc b b cb b bc b bc b bcbc bb b bc bc b b cb b bc bc b bc b b bc bc b b b bc bc bc b b bc b bc bcb b bc b b bc cb bc b bc b bc b b bc b bc

bc

b bc b bc

bc bc b

b bc bc

bc bc

bc b bc

b bc b bc

b

b

b bc

bc b

b bc

bcb

bc bc

b bc

b

bc

bc

bc

bc

\usepackage{pst-coxeterp} \begin{pspicture}(-2,-2)(2,2)\Polygon[P=5,Q=2]\end{pspicture} \begin{pspicture}(-2,-2)(2,2)\Simplex\end{pspicture} \begin{pspicture}(-2,-2)(2,2)\gammapn[unit=0.5,P=4,dimension=4]\end{pspicture} bc

bc

bc

bc b bc

bc

bc

bc

bc

b

bc

b b

bc

b bc

bc b

bc

b bc

b b

bc

bc b bc

bc

bcb b bc b

bc

b

bc

bc

bc

b

b bc b

b

bc b b b b bc bc b bc bc b bc b bc b b bc b bc b bc b bcbc bb bbc bc b bc b b bc bc b bc b b bc bc b b b bc bc bc b b bc b bc bcb b bc b b bc cb bc b bc b bc b b bc b bc

bc b

bc bc

b

bc

b

bc

bc b

b bc b

bc

b bc

bc b bc

b bc b

bc

b bc b bc

bc

b bc bc b bc

b bc

b

b

b

b bc b

bc

bcb b bc b

ch33-Pakete.tex: (#325)

herbert

bc

bc b b bc cb b

b b bcb b bc bc

bc

bc b

b

cbb

b bc b bc

bc bc b b b b b bc bc bcb bcb bc bc b bc b bc bc b bc b b bc b bb b bc b b bc cb b b b b bc bc cb bc b bc bcb b b b bcb b bc bc b b bb b bcbc cb b b bc bc b bc cbb b b b bcb b bc bc bc b b bc bc b b b bc b b bc b bc b b bc b bb bc b bc bc b b bcb b bc bcb bc bc b b b bc bc bcb bc b b b bcb b bc b bc b b bc bc b bc b bc b b bc bc bc bcb bc b b bc b bc bc

bc

720

bc b

b bc

bcb

b bc b bcb

b

bc

bc

bc b bc b bc

cb b

b bc

bc b

bc b

bc b

bc b b bc

bc

bc b

bc

b

bc b

bc

bc

b

bc

b bc bc

bc bc

bc b

b bc

b bc b cb b b

b bc b

b bc

bc bc

bc b

bc

b bc b bc b bc

bc

bc b

b cb b b bc bc

bc b

bc b bc

bc b bc bcb b b bc b bcbc b b bc bc cb b bc bb b bc b b cb b bc cb b b cb b bc b b b bc bc bc b b b b cb bcb b b bc bc bc b b b b b bc bc bc b b bc bc bc b bc bb b cb bc b bcbc b b b b bc b bc cbb b bc b bcb bc b b bc b bc bc bc b bcb b

32-02-40

bc

bc b

bc bc

32.2

Mathematik

\usepackage{pst-coxeterp} \begin{pspicture}(-2,-2)(2,2) \psset{unit=0.5cm,colorCenters=blue,styleCenters=pentagon,sizeCenters=0.2} \gammapn[P=5,dimension=4]\end{pspicture} \begin{pspicture}(-2,-2)(2,2) \psset{unit=0.5cm,colorCenters=magenta,sizeCenters=0.1,styleCenters=triangle} \gammapn[P=5,dimension=4]\end{pspicture}\begin{pspicture}(-2,-2)(2,2) \psset{unit=0.5cm,colorCenters=red,styleCenters=+,sizeCenters=0.2} \gammapn[P=5,dimension=4]\end{pspicture}

bc

bc

bc

bc

bc bc

bc bc

bc bc

bc

bc

qpbc qp

bc

qpbc bc qp bc

bc

qp bc

bc

bc

qp

qp bc bc qp bc

bc bc

bc

bc

bc

bc

qp

bc

bc

bc

bc

bc

bc

bc

qp pq bc pq bc qp bc qp bc qp bc qp bc bc bc bc bc bc bc bc qp bc pq bc pq qp bc pq qp bc qp qp bc qp bc qp bc bc qp bc qp bc bc qp bc qp qp qp bc bc bc qp qpbc qp bc bc bc qp qp qp bc qp bc bc qp bc qp bc bc bc bc c b p q qp bc bc qp bc qp qp qp qp qp bc qp qp bcbc qp qp qp qp bcbc qp qp bc qp qp bc qp qp qp bc qp bc qp bc qp qpbc bc qp qp qp bc qp bc qp bcqp bcqp qpqpbc bc bc bc bc bc qp qp bc bc qp qp bc bc bc bc bc qpqpbc bcqp qpbc qp bc qp bc qp qp qp bc qpbc bc qp bc bc bc qp qp bc qp bcbc bc qp bcbc qpbc qp bc bc qp qp qp bc bc qp qpqp qp bc bc bcbc qp qp bcbc bc qpqp bc bcbc qp qp bcbc bc bc qpqp qp bc bc qp qp qp bc bc qp bcqp bcbc qp bc bcbc qp qp bc qp qp qp bc qpqp qp bc qp qpqp bcbc qp qp bc bc qpqp qp qp bcqp qp bc qp qp bc qp qpbc qp qp qpqp bc bc qp qp bcbc qpqp qp bc qp qpqp bc qp qp qp bc qp qp bc bc bcqp qp qp qp bc bc bc bc qp qp qp bc bc qp bcqpbc bc bc qp qp qp qpbc bc bc bc bc bc bcqp qp bcqp qp qpbc qp bcqp bc bc bc bc bc qpbc qp qp qp bc bc bcbcqp qp bc bc qp qp bc bc bc bc qp qp qp bcqp bc bc qp qp bc bc qp qp bc qp qp bc bc qp qp bc bc qpbc qp qp qp bc bc bc bc qp qp qp bc bc qp bcqpbc bc bc qp qp qp bcqp bc bc bc bc bc qpbc qp bcqp qp qpbc qp qpbc bc bc bc bc bc bcqp qp qp qp bc bc bcbcqp qp bc bc qp qp bc bc bc bc qp qp qp qpbc bc bc qp qp bc qp qp qp bc qpqp qp bc qp qpqp bcbc qp qp bc bc qpqp qp qp bcqp qp bc qp qp bc qp qpbc qp qp qpqp bc bc qp qp bcbc qp qp bc qp qpqp bc qp qp qp bc qp qp bcbc bc qp bcbc qpbc qp bc bc qp qp qp bc bc qp qpqp qp bc bc bcbc qp qp bcbc bc qpqp bc bcbc qp qp bcbc bc bc qpqp qp bc bc qp qp bc bc qp bcqp bcbc qp bc bcbc qp p q p q p q c b c b c b c b bc c b c b qpbc bc qp qp qp bc qp bc qp qpbc qpbc qpqp bc bc bc bc bc qp qp bc bc qp qp bc bc bc bc bc qpqp qpbc qpbc qp bc qp bc qp qp qp bc qpbc qp bc qp bc bc qp bc qp qp bcqp bc qp qp bc qp qp bcbc qp qp bc qp qp bcbc qp qp bc qp qp bc qpbc qp qp bc qp bc bc qp bc qp qp qp bc p q p q bc bc qp qp bc qp qp bc qp qp bc bc qp p q bc bc qpbc bc qp bc qp qp qpbc bc qp bc qp bc qp bc qpbc qp qp bc qp bc qpbc bc bc bc bc bc bc bc qp qp bc qp bc qp bc qp bc qp bc qp bc bc bc bc

32-02-41

bc

bc

bc

bc

bc

bc

bc

bc bc

bc

bc

bc bc bc bc bc

bc

bc bc

qp bc

bc bc

bc

bc

bc

qpbc

bc

bc

bc bc

bc bc

bc

bc

bc

qp qpbc

qp bc bc

qp bc

bc bc

qp

bc

bc

bc ut

bc ut cb bc

bc bc

bc

ut

bc

ut

ut

bc

ut ut

bc

bc ut ut

bc

bc bc

bc ut cb bc bc

bc

bc ut

ut bc bc ut cb ut ut bc bc ut bc

bc ut

bc

bc ut

ut ut

bc bc

ut bc

ut

ut cb bc ut bc

bc bc

ut

bc

qp qp

bc

ut

ut cb bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

ut

bc

bc bc

bc ut

ut bc

ut

bc

bc

ut

bc bc ut bc bc ut bc bc ut bc ut ut bc ut bc tu cb ut bc ut ut bc ut bc bc bc ut ut bc bc ut ut bc bc ut ut bc ut ut bc ut ut bc bc ut bc bc bc ut bc ut ut bc ut ut bc ut bc bc ut bc ut ut ut ut ut bc bc ut ut bc bc ut ut ut ut ut ut bc ut ut bc ut ut bc c b c b c b c b bc bc bc ut ut bc bc ut ut bc bc bc ut ut ut bc ut bc bc ut ut ut ut ut bc bc ut bc t u t u t u bc ut bc ut bc bc ut ut ut ut bc bc bc bc bc ut ut ut ut bc ut ut bc bc ut ut ut ut bc bc ut ut bc utut bc ut ut bc bc ut ut ut ut bc bc bc bc bc bc ut bc ut ut ut ut bc bc bc bc ut bc bc ut ut bc ut bc ut bc ut utut ut ut ut bc bc ut ut bc ut ut bc bc ut ut bc ut ut bc bc ut ut ut utut ut bc bc ut ut bc bc ut ut bc bc ut utbc bc bc bc bc bc bc utbc ut bc bc ut ut bc bc ut ut bc bc ut ut ut ut bc ut ut ut bc bc bc ut ut bc bc bc ut ut ut ut ut ut ut ut ut bc bc bc ut ut bc bc bc ut ut ut c b bc bc ut bc ut ut bc ut bc bc ut ut ut ut bc ut ut ut ut bc bc ut bc ut ut bc ut ut ut bc ut ut ut bc ut ut bc ut ut bc bc bc bc ut ut ut bc bc bc bc ut ut bc ut ut bc ut ut ut bc bc bc ut bc bc ut ut bc bc ut ut bc bc bc bc bc bc ut bc ut bc ut bc ut utut ut ut ut bc bc ut ut bc ut ut bc bc ut ut bc ut ut bc bc ut ut ut utut ut ut ut bc bc bc bc ut bc bc ut ut bc ut ut bc bc ut bc bc ut bc bc ut bc ut ut ut c b t u t u t u t u bc ut ut bc ut bc bc ut ut bc bc ut bc bc ut ut ut ut ut bc bc bc bc bc ut ut ut ut bc ut ut bc ut ut bc bc bc bc ut ut ut ut ut ut ut ut ut bc bc bc ut bc bc bc ut utbc ut bc bc bc bc bc bc bc bc ut bc ut bc bc ut bc ut ut bc ut ut ut ut ut ut bc bc ut ut bc bc ut ut ut ut ut ut t u c b t u t u c b ut bc ut bc bc bc ut ut bc bc ut ut bc bc ut ut bc ut ut bc ut ut bc bc ut bc bc ut ut bc ut bc bc bc ut bc ut bc ut bc ut ut ut bc ut bc ut bc bc ut bc bc ut bc bc bc ut ut bc bc ut ut bc ut bc bc bc bc bc

bc

bc

bc

bc

bc

bc bc

bc

bc

ut

bc

bc

ut bc ut bc cb tu bc bc ut ut ut ut bc ut bc ut ut bc bc bc ut ut ut bc ut bc ut bc ut bc bc ut bc ut bc bc ut bc bc ut ut bc bc ut bc ut ut bc bc ut ut ut ut bc ut bc ut bc ut ut ut bc bc ut bc bc ut bc ut bc bc ut ut bc bc

bc bc ut

ut bc ut

bc bc

bc

ut

ut bc

ut bc

ut

ut

bc bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc cb bc bc

bc

bc

bc

bc bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc bc bc

bc bc

bc

bc

bc

bc

bc

bc

cb bc bc bc

bc

bc

bc

bc

bc bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc bc

bc bc

bc bc bc bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc bc

bc

bc bc

bc

bc

bc

bc

bc

bc bc bc bc

bc bc cb bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc bc

bc

bc

bc

bc bc

bc bc

bc bc

bc

bc

bc

bc cb bc bc

bc

bc bc cb bc bc bc bc bc bc

bc

bc

bc

bc

bc

bc

bc bc

bc bc

bc bc

bc

bc

bc

bc

bc

bc bc

bc bc bc bc cb bc bc bc bc bc bc bc bc bc bc bc bc bc bbc c bc bc bc bc bc bc bc bc bc bc bc bc bc bc bc

bc bc bc

bc

bc bc

bc

bc

bc

bc

bc

bc

bc bc

bc bc

bc bc

bc bc cb

bc

bc bc

bc

bc cb bc bc

bc

bc bc

bc bc cb bc bc cb cb bc bc cb bc bc bc bc bc bc bc bc bc bc bc bc bc bc bc bc bc bc bc bc bc bc bc bc bc bc bc bc bc bc bc bc bc bc bc bc bc bc bc bc bc

bc

bc

bc bc

bc

bc

bc

bc bc

bc bc

bc

bc

bc bc

bc

bc

bc cb bc

bc

bc

bc bc bc cb

bc bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc cb bc bc

bc

bc

bc

bc

bc

bc

bc

bc

bc bc

bc bc

bc

bc

bc

bc bc

bc

bc

bc

bc

bc

bc bc

bc bc tu

ut

bc bc tu bc

ut

bc

bc

ut bc ut

bc

bc bc

ut

bc ut bc bc tu

bc

bc

ut tu ut bc

bc

bc

bc tu bc ut bc

bc tu bc bc ut

bc

bc bc

ut

ut bc

bc

bc

bc

bc

bc tu bc

bc

bc

+++++ ++ ++++ +++++++ ++ +++++ + + + + + + + + +++++ + + + + + +++ + + + ++ + +++++++ +++ + ++++++ +++ + + + ++++ + + + + + + + + + ++ + +++ ++++++ ++++++ ++ ++ + ++++ +++ + + + + + + ++ + + + ++ +++ ++++ + ++ + + + ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ++++++++++ +++ + +++++++ +++++++ ++ ++++++ +++++ + + ++++ ++ ++ + + +++ + + + + + + + + + + + + + + + + ++++++ ++++ + + + + +++++++ bc

bc ut

bc bc

bc

bc

bc

bc

bc ut

bc

bc

bc

bc

bc bc

bc ut

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

Das Paket pst-coxcoor ist prinzipiell eine PostScript-Bibliothek für verfügbare Polytope, die in der Prologdatei pst-coxcoor.pro gespeichert sind und in LATEX über das Makro \CoxeterCoordinates abgerufen werden können. \CoxeterCoordinates [Optionen]

Der einzige neue Parameter ist choice, der in der derzeitigen Version Werte zwischen 1 und 80 annehmen kann; die Bibliothek umfasst genau 80 verschiedene Polytope. choice=9 ergibt das folgende dreidimensionale Hessische Polytop mit 27 Ecken, 72 Seiten und 27 Flächen.. Das komplette Verzeichnis aller Polytope kann man der Dokumentation [43] entnehmen. Hier wird nur ein Auszug angegeben. \usepackage{pst-coxcoor} bc

32-02-42 bc

b bc

bc b

b b b

b b b b

b b bc

b

bc b

b

b

bc b b

b

bc

b

bc

b bc

bc b

b b

b

b b

b

b bc

b

b b b

b

b

b b bc b

b

\begin{pspicture}(-4,-4)(4,4) \psset{unit=1.5cm,linewidth=0.01mm} \CoxeterCoordinates[choice=9] \end{pspicture} bc

b b

b

bc

b b b

b

b b

bc

bc

b b

b b

b

b b

bc

b

b bc

b

b b

bc b

b

bc

b b

b

b b

bc

b bc

bc b

b bc b b

bc

b

bc

721

ch33-Pakete.tex: (#325)

herbert

32

Weitere PSTricks-Pakete

2{3}3

3{3}3

3{3}3

32-02-43

bc bc bc bc bc bc bc b bc

b

b b

b b

b b b b b

bc

bc bc

b bc

b

b bc

bc b

b

bc

bc b

b

bc bc

b b

bc

bc bc

b

bc b

b

b

b

bc bc

b

b b

b

b

b

b bc

bc b

b bc

bc b

bc b

b bc

b

b

b bc

bc b

b

bc bc

b bc

bc

bc bc

b

bc

b

bc bc bc

bc

bc

bc bc

choice = 1

choice = 2

choice = 3

3{ 52 }3

5{ 25 }5

2{ 25 }3

bc

bc bc

bc

bc

bc

bc

bc

bc

bc bc

bc bc

bc bc

b b b

bc bc

b b b b b b b b b b b b b bc b b b b b b b b

bc

bc

bc bc

bc

bc bc bc bc

bc bc

bc

bc bc

bc

b bb

b b b b b b b b b b b b bc b cb b b b b bc b b b bb b b b b b b b b b b b b

b b

bb

b

bc

bc

b

bc bc bc

bc bc

bc

bc

bc bc

bc bc

bc bc

bc bc

bc

bc bc

bc

bc bc

bc bc

b

bc

bb

b

b bc b

b

b b b

bc b

b

b b b bc b b b

bc b bc b bc b bc b b bc

b

b bc

b

b b

bc b

b

b b bc

bc bc bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc

bc bc

bc bc

bc

bc bc

bc

bc

bc

bc

bc bc bc

bc bc

bc

bc bc

bc

bc

bc bc

bc bc

bc bc

bc bc

bc

bc bc

bc bc

bc

bc

bc

bc

bc bc

bc

bc bc

bc

bc bc

bc

bc bc

bc

bc

bc

bc

bc

bc

bc bc

bc

bc

bc

bc

bc bc

bc bc

bc bc

bc

bc bc

bc bc

bc

bc

bc bc

bc

bc bc

bc

bc

bc

bc

bc bc

bc bc

bc bc

bc

bc bc

bc

bc

bc

bc bc

bc

bc

bc

bc

bc bc

bc bc

bc

bc

bc

bc

bc

bc bc

bc

bc

bc

bc

bc bc bc bc bc bc bc bc bc cb bc bc cb bc cb bc cb cb bc b b bb b b b b b b b b b b b b b bb b b b b bb b b b b b b b b b b b b b b bb b b bbbbb bbbb bbbbbbbbbbb bbbb bbbbb bb bb bbb b bb b b b b b b bbb b bbb bb bb b b b b b b b b b b b b b b b b b b b b b b b b b bb b b b b b b b b b b b b b b b bb b b b b b b b b b b b b b b b b b b b b b bb bb bb bb bb b b b b b b b b b b b bbb b b bb bb bb b b bbb b b b b b b b b b b b b bbb b b b b b bb b b b b b b b b b b b b b b b bb b b b bbbbbb bc bc cb bc bc bc bc bc bc bc bc bc bc bc bc bc bc bc bc bc

bc

bc

bc bc

bc bc

bc

bc

bc bc bc

bc

bc bc

bc

bc bc

bc

bc

bc

bc bc

bc

bc

bc

bc

bc bc

bc bc

bc bc

bc

bc

bc bc

bc

bc

bc

bc

bc bc

bc bc

bc bc

bc

bc

bc

bc

bc bc

bc

b

b cb b

bc

bc

bc

b bc

b

b bc

bc

bc

bc

bc

bc

b

b

bb

b b b bc

b

bc

b

b bc

bc

bc

bc bc

bc bc

bc bc

bc

bc

bc

bc bc

b

bb bc

b b bc

b bc

bc

bc

b bb

b

b b

b b b

b bc

bc bc

bc bc

bc

bc bc

bc

bc

bc bc

b bc

b b

bc b bc b bc

b b b b b b

bc b

b

b

b b b b b b

b b

bc b

b

b b

bc b

bc b

b b

bc

b b b

bb

bc b

bc bc

bc

b

b

b b

b

bc

bc

bc

b

bc b b

bc

bc bc

bc bc bc

b bc

bc bc

bc

bc

bc

bc bc bc

bc b

bb

bc b bc b

bc

bc

bc b b

b

bc

bc bc

b

bc b b

bc bc

bc

bc

bc bc

bc

bc bc

bc

bc

bc bc

bc

bc

b b b bc b b bb b b b cb b b b bb b bc b b b b b b b b b b bc b b b b cb b b bc b b b b b b b b b b cb b b b b b b b bc b bc bc bc bc

b

b

b

bc bc

bc

bc bc

bc bc

bc

bc bc bc

bc bc

bc

bc

bc

bc bc

bc

bc bc

bc

bc

bc bc

bc bc

bc bc

bc bc

bc

bc bc

bc bc

bc bc

bc bc

bc bc

bc

bc bc

bc

32-02-44

bc

bc

bc

bc

bc

bc

bc bc

bc

bc

bc

bc

bc

bc bc

bc bc bc

bc

bc bc

bc

bc

bc

choice = 37

choice = 38

choice = 39

2{ 52 }2{5}2{3}2

2{5}2{3}2{ 25 }2

2{5}2{ 25 }2{3}2

bc bc

bc bc bc b b b b b b b b b b b bc b b b b bc b bb b b b b b b bb b b b bb b b bc b b b b b b b b b b b b b b bc b b bc b b b b b b b b b b b b b b b b b bcb bc b b b b b b b b b b b bc b bcb b b b b b b b b bc bc b bb b b b bb b b b b b b b b b b b b b b b b b b b b b b b b b b b b b bc b b b b b b b b b b b b b b bc b bc b b bc b b b b b b b b b b b b b b b b b b b b b b b b b b b b b bc b b b b b b b b b bb b b b b b b b b b b b bc bb b b b bb b b bc b bb b b b bc b b b bb b bc bb b bc b b b b bc b b b b b b b b b b bc b b b b b b b b b bc b b b b b b b bc b b bc b b bb b b b b b b b b b b b b b b b b b b b bb b b b b b bb b b b b b b b b b b b b b b bc b b b b b b b bb b bc b b b b b b b b bb b bb b b b b b b b b b b b b b b b b b b b b b b bc b b b b b bc b b b b b bb b b bc b b b b b b b b b b b b b b b b b b bc b bc bc b b b b b b b b bbc b b b bc b b b b b b b b bc b b b b b b b b b b b b b b bc b b b b bc bb b b b b b b bc b b b b b b b b b bc b b b b b b b b b b b b b b bc b b b b b b b b b b b b b b b b b b b b bc b b b b b b b b b b b b bb bb b b bb bb b b b b b b b b b b bc b b b b b b b b b b b b b b bc b b b b b b bc b b b bb b b b b bc b b b b b b b b bb b b b b b b b b b b b b b b b b bc b b b bc b b b b bb b b b b b b bb b bc bb b b b bb bc b bb b b b b b b b b b b b b b bb bc b bc b bb b b b b b bc b bc b b b b b b bb b b b b b b b b b bb b b bc b b b b bc bb b b b b bb b b b b b b b b b b b b b b b b b b b b b b b b bc b b b b b b b b bb b b b b b b b b b bb b b bc b b b b b b b bb b b b b bb b b b bb bb b b b b b bb bc b b b b bc b b b b b b b b b b b b b b b b b b b b b b b bc b b bc b b b b b b b b b bc b b b b b b b b b b b b b b bc b b b b b bc b b b b b bc b b b b b b b b b b b b b b b b b bc b b b b b bc b b b b b b b b b b b b b b bc b b b b b bc bc b bc b b b b b b bb b b b bc b b b b b b b bc b b b b b bc b b b b b b b b b b b b bb bb b b bb b b b b b b b b b b b bc b bb b b b b b b b bc b b b b b b b b b b b b b b bb b b b b b b b b bb b b b b b b b b b b b b b b b b b b b bc b b b bb b b b bc bc b b b b b bc b b b b b b b b b b b b b bc b b b b b b b bc b b b b b b b b b b bc b bc b b b b b b b b bc b b b b bc b b b b b b b b b b b b b b b bb b bb b bb b b b b b b b b b b b b b b b b bc b b b b b b b bc b b b b b b b b b b b b bc b b bb b b b b b b b bc b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b bc b b b b b b b b b b b b b b bc b b b b bc bc b b b b b b b b b b bc b b b b b b bc b bc b b b b b b bc b bbc b b b b b b b b bc b b b b b b b c b b bb bb b bb b b b b b b bb b b b b bb b b b b b b bb b b b bc b b b b b b b bc bc bcb b b bc bc bc bc

bc

bc

choice = 76

bc b b b b b bb bc b b b b bc bc b b bc b bb b b b b b bc b b b bb b b b bb b bb b b b b b bb b b b b bc b b b b bc bc bc b b cb b b bc b b bc b b b b bb bb b bc bc b b b b b b b b b b b bc b b b b b b bc b b b b b b b b bb b b b b bc b b b b bc b b bb b bc b b b b bc b b b b b b b b b b b b b b b b b b bc b b b bb bcb bb b b b b b bb b b b c b b b bb b b bc b b b b bc b bc bc b b bc b b b b b b b b b bc b b b b b b bc b b b b bc b b b b b b b bc b b bb b b b b b b b b bb b bb b b b b b b b b c b b b b b b b b b b b b bc b b bc bb b b bc b b b b b b b b b bcb b b b bc b b b bc b b b bbc b b b bc b b b b b b b b b b b bc b b c b b b b b bc b b b b bc b b bc b b b b b cb b b b b b bc b b b b b b b b b b c b c b b bb b b b b b b cb b b bc b b b b bb b b b b b b b bc b b bb b b b b b bc b b b b bc b b b b b bb b bbb b b b bc b bc bb b b bc bb bc b b bc b b b b b bb b b b bb b b b b b b b b b bc b b b bc b bb bb bb bc b bbbbb b b b b b b bc b b b b bc b b b bb b b b b b b b cb b bb b b b b b b bc b b b b b b b bc b b b b bc b b bc b b b bc b b b bc b b b b bc b b b b b b bc b b b b b b b b b b b bb b b bc b b b b b b b b bc bc b b b b b b b b bc b b b bcb b b b bc b b bc b b b b b b b b bc b b b b b b b b b b b bc b b b b b b b b b b bc bb bb b b b b b b bb b bc b b b bc b b b b b bc b b b b b b bc b b b b b b b bc b b bc b b b b b b b b bb b b bc b bb bbc bb b b bc bb b b b b b bc b b b bc b b b b b b b b b bc b b b b b b b b b b b bc b b b b bb b b b bc bc b bc b b b b b b b b b b b b b bc b b b b bb b bb bb b b b b b bb b b bc b b b bc bc b b b b b b b b b bc bcb c b b b b bc b bc bc b b b b bc b bb b bb b b b b bb b b b b bb b b b b b b bc b b b b b bb b b b b bc b bc b bc bc b bb b b bb b b b b bc b bc b

bc

bc

bb

bc

32-02-45

bc

b

bc

bc

bc

bc

bb b b b b b b bb bc b b bc b b b b bc b b bc b b b b b b bc b b b b b b b b bb b b b b bc bb b b b b b b bbb b b b b b bc b b bc b bc b b b b b b b b b b bbb b b bc b b b b b b b b b b b b b b b b bc b b b b b b b b b b b b b b b b b b b b b b bc b b b b b b b bc b b b bbb b b b b bbb b b b bb b bc bc b bc b b b b b b bc bb b b b b b b bc b b b b b b bc b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b bb b b b bb b b b b b b b b b b b b b b b b b bb b b b b bc bb b b b bc b b b b bc b bc b b b bc bc b bc bb b b b bc b b b b b b b b b b b b b b b b bc b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b bc bc b b b bb b b bc b b b b b bc b b b bc b b b b b bc b b b b b b b b b b b b b b b b b b b b b b bc b b b b b b b b b b b b b b b bb b b b b b b b b b b bc b b b bc b b b b b b bc b b b b b b b b b bb b b bb b b b b b b b bb b b bb b b b b b b b b b b bc b bb b b b b b b b b b b b b b b b b b b bb b b b b b b b b b b bc b b b bc b b bc b b b b b b b b b b b b b b b b b b bc b b b b b b b bc b b b b b b b b b b b b bc b b b b b b b b b b b bc b b b bc bb b b b b b b b b b bc b b b bc b b b b b b b b b bc b b b b b b b b b b bc b b bb b b b b b b bb b b b b b bb b b b bb b b b b b bb b b b b b b b b b bc b bb b b b b cb bb b b bc b bb b b b b b b b b b bc b b bb b b b cb b b bb bc b b b b b b b b b b bb b bc bb b bb b b b b b b bc b b b b b b b b b b b b bb bb b b b b b bb b b bb b b b bc b b b b b b b b bc b b b bc b b b b b b b b b b b b bb b b b b bc b b b b b b b b bc b b b b b b bc bc b b b b b b b b b b b b b b b b b b b b bc b b b b b b b bc b b b b b b b b b b b b b b b b b b bc b c b b b b b b b b b b b b b b b b b b b b b b bc b b bc b b b b bb b bb b bb b b b b bb b b b b b b b b b b b b b b b b b b b b b b b b b b b b b bc b b b b b b b bb b b b bb b bc b b b b b bb b b b b b b b b b b b b b bc bc b b b b b b b b b b b bc b b b b b bb b b b b b bc b b b b b b b b b b b b b b b b bc bc b bb b b b bc b b b b b b b b b b b b b b b b b b b b b b b bc b b b b b b b b b b b b bb b b cb b b bb b b b b b bc b b b b bc b b b b b b b bc bc b b bc b bc bc b b b b b b b b b b b b b b b b b bc b b b b b b b b b b b b b b b b b b b b b b b b b b b bb b b b b b b b b b b b b b b b c b c b b b b b b b b bc b b b b bc b b b b b b b b b b b b bc b b b b bc b b bb b b b b b bb b b b bbb b b b bc b b b b b bc b b b b b b b b b b b b b b b b b b b b b b b bc b b b b b b bb b b b bc b b b b b b bb b bb b b b bbb b b c b c b b b b bbb b bc b b b b b b b bb b b b b b b b b b b b b b b b b b b bc b bc b b b b bc b b bc b b b b b b bc b b b b b b bc bb b b b b bc bc bc

choice = 77

bc

bc

choice = 78

32.2.5 pst-ode: Lösen von Differentialgleichungssysten Das Paket von Alexander Grahn eignet sich zum Lösen von Ordinary Differential Equations (ODE). Die ermittelten Daten können in einer externen Datendatei abgelegt werden, um sie anschließend weiter zu verarbeiten. Das Paket stellt drei Makros bereit, eines zur Lösung des Gleichungssystems und zwei um Zustände zuspeichern oder zu initialisieren.

722

ch33-Pakete.tex: (#325)

herbert

32.2

Mathematik

\pstODEsolve [Optionen] {Datei}{Format }{t0 }{te }{N }{x0 }{f(t, x)} \pstODEsaveState{state} \pstODEsetOrRestoreState{state}

Das folgende Beispiel zeigt die Lösung des sogenannten Lorenz-Attraktors, dem ein einfaches Gleichungssystem zugrunde liegt: dy = x(β − z) − y dt

dx = α(y − x) dt

dz = xy − γz dt

\usepackage{pst-ode,pst-3dplot} \pstVerb{/alpha 10 def /beta 28 def /gamma 8 3 div def }% \pstODEsolve[algebraic,saveData]{lorenzXYZ}{0 1 2}{0}{25}{2501}{10 10 30}{% alpha*(x[1]-x[0]) | x[0]*(beta-x[2]) - x[1] | x[0]*x[1] - gamma*x[2] } \begin{pspicture}(-6,-2)(6,10) \psset{unit=0.17cm,Alpha=160,Beta=15} \listplotThreeD[linecolor=blue]{lorenzXYZ} \psset{unit=0.425cm,linestyle=dashed} \pstThreeDNode(0,0,0){O} \pstThreeDNode(0,0,5){Z} \pstThreeDNode(5,0,0){X} \pstThreeDNode(0,5,0){Y} \pstThreeDNode(-10,-10,0){A} \pstThreeDNode(-10,-10,20){B}\pstThreeDNode(-10,10,20){C} \pstThreeDNode(-10,10,0){D} \pstThreeDNode(10,-10,0){E} \pstThreeDNode(10,-10,20){F} \pstThreeDNode(10,10,20){G} \pstThreeDNode(10,10,0){H} \pspolygon(A)(B)(C)(D) \pspolygon(E)(F)(G)(H) \psline(A)(E) \psline(B)(F) \psline(D)(H) \psline(C)(G) \psset{linestyle=solid,linecolor=red} \psline{->}(O)(X) \psline{->}(O)(Y) \psline{->}(O)(Z) \end{pspicture}

32-02-46

723

ch33-Pakete.tex: (#325)

herbert

32

Weitere PSTricks-Pakete

32.2.6 pst-intersect: Schnittpunktbestimmung von Kurven und Gleichungen Das Paket von Christoph Bersch eignet sich zur Berechnung der Schnittpunkte von Bézier-Kurven und beliebigen Postscript-Pfaden. Es stellt mehrere Makros bereits, um die Pfade auf PostScript-Ebene zu speichern und zur Bestimmung der Schnittpunkte mit anderen Pfaden zu benutzen. \pssavepath [Optionen] {Name}{Makro} \pssavebezier [Optionen] {Name}(X0 ) . . . (Xn ) \psintersect{KurveA}{KurveB} \pstracecurve [Optionen] {Name} \psGetCurvePoint{curvename}{t } \pstracecurve [Optionen] {Intersection}{Name} \psGetIsectCenter{intersection}{Name}{n} \usepackage{pst-intersect}

5

32-02-47

\begin{pspicture}[showgrid](4,5) \pssavebezier[linecolor=red,linewidth=1.5pt]% {A}(0,0)(0,5)(5,5)(5,1)(1,1.5) \pssavebezier[linecolor=blue,linewidth=1.5pt]% {B}(0,5)(0,0)(5,0)(5,5)(0,2) \psintersect[name=C,showpoints]{A}{B} \uput[150](C1){1}\uput[85](C2){2} \uput[90](C3){3} \uput[-20](C4){4} \end{pspicture}

4

3

2

1

2 b

b b

3

4

b

1

0 0

1

2

3

4

\usepackage{pst-intersect,multido} \begin{pspicture}(10,2.2)\psset{yunit=0.75} \pssavepath{A}{\psplot[plotpoints=200]{0}{10}{x 180 mul sin 1 add 2 mul}} \pssavepath{B}{\psplot[plotpoints=50]{0}{10}{2 x neg 0.5 mul exp 4 mul}} \psintersect[name=C, showpoints]{A}{B} \multido{\i=1+1}{5}{\uput[210](C\i){\i}} \multido{\i=6+2,\ii=7+2}{3}{\uput[225](C\i){\i}\uput[-45](C\ii){\ii}} \end{pspicture}

1

b

32-02-48

2

b

3

b

4

b

5

b b

6

b

7

b b

8

724

ch33-Pakete.tex: (#325)

herbert

9

b

10

b

11

32.3

Naturwissenschaften

32.3 Naturwissenschaften 32.3.1 pst-lens – Optische Effekte Lupeneffekte, wie sie das Paket pst-lens von Denis Girou und Manuel Luque ermöglicht, eignen sich zur besonderen Hervorhebung bestimmter Text- oder Grafikbereiche. Das Paket definiert faktisch nur zwei Makros; bei fehlender Koordinatenangabe wird grundsätzlich (0; 0) angenommen. \PstLens [Optionen] (x,y ) {Objekt }

\PstLensShape{Makro}

Für die folgenden Beispiele wird das willkürlich definierte Makro \Wishes benutzt, während in Tabelle 32.7 die möglichen Parameter zusammengefasst sind. Das Prinzip ist immer das Gleiche; zuerst muss das Objekt, der Text oder die Grafik, normal gesetzt werden, wobei die Orientierung am Punkt (0; 0) mit der Option lb (left bottom) zu empfehlen ist. Danach kann dann das Objekt mit dem Lupeneffekt überschrieben werden. Tabelle 32.7: Zusammenstellung der verfügbaren Optionen für pst-lens

Name

Wert

Vorgabe

LensMagnification Wert LensSize LensRotation

Wert Einheit Winkel

LensHandle

1 1 0

Boolean LensHandleWidth Wert Einheit

true

LensHandleHeight Wert Einheit

2.5

LensStyleHandle LensShadow

Stil Boolean

LensStyleGlass

Stil

2

1

0 0

2016! 1

2

Vergrößerungsfaktor Lupengröße Rotationswinkel, auf Lupe bezogen Lupe mit oder ohne Griff Dicke des Linsengriffs

Länge des Linsengriffs, gemessen vom Zentrum der Linse bis zum Griffende (Vorgabe bezogen auf LensSize=1) LensStyleHandle Stil des Linsengriffs true Linse mit oder ohne Schatteneffekt LensStyleGlass Stil des Linsenglases

\usepackage{pst-lens}

Alles Gute Raphael, für dieses neue Jahr

3 32-03-1

0.2

Bedeutung

3

\def\Wishes{{\rput[lb](0,0){% \Large\begin{minipage}{3cm}\centering \textbf{Alles Gute}\\\textbf{Raphael}, \\f\"ur dieses neue Jahr\\\Huge 2016! \end{minipage}}}} \begin{pspicture}[showgrid=true](3,3.2) \Wishes \end{pspicture}

725

ch33-Pakete.tex: (#325)

herbert

Weitere PSTricks-Pakete

\usepackage{pst-lens}

\begin{pspicture}(0,-1.5)(3,4) \Wishes\PstLens[LensMagnification=2](2,2){\Wishes} \end{pspicture}\hfill \begin{pspicture}(0,-1.5)(3,4) \Wishes\PstLens[LensMagnification=4](1,2.4){\Wishes} \end{pspicture}\hfill \begin{pspicture}(0,-1.5)(3.5,4) \Wishes\PstLens[LensMagnification=0.5](1,1){\Wishes} \PstLens[LensMagnification=-0.5](2.5,3){\Wishes} \end{pspicture}

Alles Gute aphael, Raphael, für dieses dieses neue Jahr neue2016! Jahr

Alles Gute Raphael, für dieses neue Jahr

2016!

Alles Gute Raphael, für dieses neue Jahr

32

Raphael 2016! für2016!dieses Alles Gute Raphael, für dieses neue Jahr

32-03-2

Alles Gute Raphael, Alles Gute für dieses Raphael, für dieses neue neue JahrJahr 2016!

\usepackage{pst-lens} 32-03-3

Alles Gute Raphael, für dieses neue Jahr

2016!

\begin{pspicture}(0,-2.5)(3,3.5) \Wishes \PstLens[LensHandleWidth=0.1]% {\Wishes} \PstLens[LensHandleWidth=4mm]% (2,2){\Wishes} \end{pspicture} % \begin{pspicture}(0,-2)(3,3.5) \Wishes \PstLens[LensHandleHeight=15mm]% {\Wishes} \PstLens[LensHandleHeight=4]% (2,2){\Wishes} \end{pspicture}

726

ch33-Pakete.tex: (#325)

herbert

32.3

32-03-4

Naturwissenschaften

\usepackage{pst-lens}

Alles Gute Raphael, für dieses neue Jahr

\begin{pspicture}(0,-1)(3,3.8) \Wishes \PstLens[LensRotation=80]{\Wishes} \PstLens[LensRotation=-108.5](2,2){\Wishes} \end{pspicture} % \begin{pspicture}(3,3.5) \Wishes \PstLens[LensHandle=false](2,2){\Wishes} \end{pspicture}

Alles Gute Raphael, für dieses neue Jahr

2016!

2016!

Die vordefinierten Stile für den Griff und das Glas der Lupe sind: \newpsstyle{LensStyleHandle}{fillstyle=gradient,gradmidpoint=.5,gradbegin=Brown, gradangle=\PstLens@Rotation,gradend=Salmon,linewidth=.5\pslinewidth,framearc=.6} \newpsstyle{LensStyleGlass}{fillstyle=solid,fillcolor=white,shadow=true, shadowcolor=lightgray,shadowsize=0.15,shadowangle=\PstLens@Rotation}

32-03-5

Alles Gute Raphael, für dieses neue Jahr

2016!

32-03-6

Alles Gute Raphael, für dieses neue Jahr

\usepackage{pst-lens} \begin{pspicture}(0,-2.5)(3,3) \Wishes \newpsstyle{HandleYellow}{linecolor=red, framearc=1,fillstyle=solid,fillcolor=yellow} \PstLens[LensHandleWidth=0.5, LensStyleHandle=HandleYellow](0,0.5){\Wishes} \newpsstyle{HandleCrosshatch}% {fillstyle=crosshatch*,fillcolor=white} \PstLens[LensStyleHandle=HandleCrosshatch]% (2,2){\Wishes} \end{pspicture}

\usepackage{pst-lens} \begin{pspicture}(0,-0.5)(3,3.1) \Wishes \PstLens[LensShadow=false](2,2){\Wishes} \end{pspicture}

2016! 727

ch33-Pakete.tex: (#325)

herbert

32

Weitere PSTricks-Pakete

\usepackage{pst-lens}

Alles Gute Raphael, für dieses neue Jahr

2016! Alles Gute Raphael, Raphael, dieses fürfürdieses neue Jahr

neue Jahr

2016!

Alles Gute Alles Gute Raphael, Raphael, dieses fürfürdieses neue Jahr neue Jahr

2016!

32-03-7

\begin{pspicture}(3,3.5) \Wishes\makeatletter \newpsstyle{DarkShadow}{fillstyle=solid, fillcolor=white,shadow=true, shadowcolor=darkgray,shadowsize=0.2, shadowangle=\PstLens@Rotation} \makeatother \PstLens[LensRotation=230, LensStyleGlass=DarkShadow](2,2){\Wishes} \end{pspicture}

\usepackage{pst-lens} \renewcommand{\PstLensShape}{\psellipse(2,1)}

32-03-8

\psset{LensMagnification=1.5} \begin{pspicture}(0,-1)(4,3.25) \Wishes \PstLens(2,2){\Wishes} \end{pspicture}

\usepackage{pstricks,pst-lens,pst-3d} \renewcommand{\PstLensShape}{\psdiamond(1.5,1)}

32-03-9

\psset{LensMagnification=1.5} \begin{pspicture}(0.8,-1.5)(5.3,3) \pstilt{60}{% \Wishes\PstLens[LensSize=1.5](2,2){\Wishes}} \end{pspicture}

\usepackage{pst-lens,graphicx} \newcommand{\tigerHead}{\rput[lb](0,0){\includegraphics[width=4cm]{tiger}}} \newpsstyle{SimpleGlass}{linestyle=none}\psset{LensStyleGlass=SimpleGlass} \begin{pspicture}(0,0)(4,4.5) \tigerHead \end{pspicture}\hfill \begin{pspicture}(-0.5,0)(3,4.5) \PstLens[LensHandle=false,LensSize=1.8,LensMagnification=2](1.2,2.3){\tigerHead} \end{pspicture}\hfill \newpsstyle{SimpleHandle}{fillstyle=solid,fillcolor=white,framearc=0.5} \psset{LensStyleHandle=SimpleHandle} \begin{pspicture}(0,0)(4,4.5) \tigerHead \PstLens[LensSize=1.5,LensMagnification=4,LensRotation=-45](1.5,2.5){\tigerHead} \end{pspicture}

728

ch33-Pakete.tex: (#325)

herbert

32.3

Naturwissenschaften

32-03-10

\usepackage{pst-lens,url} \begin{pspicture*}(-3,-5)(3,4.5) \Vorwort \PstLens[LensSize=2.5,LensMagnification=2,LensRotation=20](0,1.5){\Vorwort} \end{pspicture*}\hfill \begin{pspicture*}(-3,-5)(3,4.5) \Vorwort \PstLens[LensSize=2,LensMagnification=0.6,LensRotation=-20](0,1.5){\Vorwort} \end{pspicture*}

nicht unbedingt zu erwarten, Es war nicht unbedingt zu erwarten, großeEsdasswarein Aufmerksamkeit „Randgebiet (PSTricks) dass ein „Randgebiet (PSTricks) eines Randgebiets (TEX)“ eine derar- eines Randgebiets (TEX)“ eine derarsodass nach weniger tig große Aufmerksamkeit erregen tig große Aufmerksamkeit erregen wird, nach weniger erste als fünf wird, sodass nach weniger als fünf diesodassgesamte Monaten die gesamte erste Auf lage Monaten die gesamte erste Auf lage vergriffen So wurde zwingend vergriffen war. So wurde zwingend war. war. So wurde eine Neuauf lage notwendig, die eine Neuauf lage notwendig, die sich im Wesentlichen an der ersten sich im Wesentlichen an der ersten Neuauf lage notwendig, Auf lage orientiert, aber dennoch einige Auf lage orientiert, aber dennoch einige Verbesserungen aufweist. So Wesentlichen anwerden Verbesserungen aufweist. So werden einige Makros der nicht eingehend einige Makros der nicht eingehend behandelten Paketeaber durch ein Beispiel behandelten Pakete durch ein Beispiel orientiert, dennoch vorgestellt. Alle Druckfehler wurden, vorgestellt. Alle Druckfehler wurden,

32-03-11

Zur zweiten Auflage

Es war nicht unbedingt zu erwarten, dass ein „Randgebiet (PSTricks) eines Randgebiets (TEX)“ eine derartig große Aufmerksamkeit erregen wird, sodass nach weniger als fünf Monaten die gesamte erste Auf lage vergriffen war. So wurde zwingend eine Neuauf lage notwendig, die sich im Wesentlichen an der ersten Auf lage orientiert, aber dennoch einige Verbesserungen aufweist. So werden einige Makros der nicht eingehend behandelten Pakete durch ein Beispiel vorgestellt. Alle Druckfehler wurden, soweit erkannt, beseitigt. Die Beispiele

soweit erkannt, beseitigt. Die Beispiele des Buches findet man wieder auf CTAN: //graphics/pstricks/doc/voss/. Dank gilt allen Anwendern, die durch kritische oder lobende Rückmeldungen zur Weiterentwicklung des Buches und letztlich PSTricks beigetragen haben und hoffentlich weiter beitragen werden.

soweit erkannt, beseitigt. Die Beispiele des Buches findet man wieder auf CTAN: //graphics/pstricks/doc/voss/. Dank gilt allen Anwendern, die durch kritische oder lobende Rückmeldungen zur Weiterentwicklung des Buches und letztlich PSTricks beigetragen haben und hoffentlich weiter beitragen werden.

729

ch33-Pakete.tex: (#325)

herbert

32

Weitere PSTricks-Pakete

32.3.2 pst-optic– Optische Systeme Das Paket von Manuel Luque und dem Autor dieses Buches verfügt über sehr viele Optionen, die es unmöglich machen, hier alle zitiert zu werden. Die Anwendung des Paketes ist speziell auf die geometrische Optik ausgerichtet, wie sie in der Schule und Universität gelehrt wird. Hier soll nur ein nicht repräsentativer Querschnitt gezeigt werden, die Dokumentation zum Paket kann dann eine weitere Hilfe geben. [44] \usepackage{pst-optic} \psset{unit=0.5} \makeatletter\begin{pspicture}(-1.5,-5.5)(10,5.5) \rput(0,0){\beamLight[drawing=false,mirrorDepth=4.75,mirrorWidth=0.1, mirrorHeight=10,linecolor=lightgray]} \pst@getcoor{Focus}\pst@tempf \psset{linecolor=red} \multido{\n=60+5}{18}{\mirrorCVGRay[linecolor=red,mirrorDepth=4.75, mirrorHeight=10](Focus)(! /XF \pst@tempf pop \pst@number\psxunit div def \n\space cos XF add \n\space sin neg){Endd1} \psOutLine[arrows=->,length=.25](Endd1)(Endd1’’){Endd2} \mirrorCVGRay[linecolor=red,mirrorDepth=4.75,mirrorHeight=10](Focus)(! /XF \pst@tempf pop \pst@number\psxunit div def \n\space cos XF add \n\space sin ){End1} \psOutLine[arrows=->,length=.25](End1)(End1’’){End2}} \end{pspicture} \makeatother

32-03-12

\usepackage{pst-optic} \begin{pspicture}(-7,0.5)(5,5.5) \pnode(-3,1){A}\pnode(1,1){B}\pnode(-1,5){C} \uput[-135](A){A}\uput[-45](B){B}\uput[30](C){C} \pspolygon[fillcolor=lightgray,fillstyle=solid,linecolor=blue](A)(B)(C) \psset{linecolor=red,arrowsize=3pt,arrows=->} \multido{\rA=0.6+0.2,\rB=1.5+0.2}{7}{% \refractionRay(-6,\rA)(-4,\rB)(C)(A){1}{1.5}{END} \arrowLine(-6,\rA)(END){2}\ABinterCD(END)(END’)(C)(B){Out} \arrowLine(END)(Out){1} \refractionRay(END)(Out)(C)(B){1.5}{1}{Q} \psline(Q)(Q’) \psOutLine[length=3](Q)(Q’){End} } \end{pspicture}

730

ch33-Pakete.tex: (#325)

herbert

32.3

Naturwissenschaften

C 32-03-13

B

A

\usepackage{pst-optic} \begin{pspicture*}(-7.5,-3)(7.5,2.5) \rput(0,0){\lens[lensScale=0.6,XO=-4,nameF=F_1,nameA=A_1,nameB=B_1,nameFi=F’_1, nameAi={ },nameBi={},nameO=O_1,focus=1,OA=-2,lensGlass=true, lensWidth=0.5]} \pspolygon[style=rayuresJaunes,linestyle=none](B)(I)(B’)(I’)(B) \Transform \rput(0,0){\lens[lensScale=1.2,XO=2,focus=2,nameA=A’_1,spotA=90,nameB=B’_1, spotB=270,nameO=O_2,nameAi=A’_2,spotAi=270,nameBi=B’_2,spotBi=90,nameF=F_2, nameFi=F’_2,lensTwo=true,lensGlass=true,lensWidth=0.5]} \pspolygon[style=rayuresJaunes,linestyle=none](B)(I)(B’)(I’)(B) \end{pspicture*}

32-03-14

B′2

B1 A′1 |

A1

F1 O1

|

|

F′1

F2

|

O2

F′2

A′2

B′1

\usepackage{pst-optic} \begin{pspicture}(-7.5,-5.5)(7.5,3) \rput(0,0){% \lens[focus=1.5,OA=-2,AB=0.5,XO=-5,lensGlass=true,lensWidth=0.4,yBottom=-4, yTop=4,drawing=false,lensScale=0.4,nameF=F_1,nameFi=F’_1] \psline[linewidth=1pt](xLeft)(xRight)} \pnode(! XO 1){UPlens1} \pnode(! XO -1){DOWNlens1} \Transform

731

ch33-Pakete.tex: (#325)

herbert

32

Weitere PSTricks -Pakete

\rput(0,0){% \lens[focus=2,XO=3,lensGlass=true,lensWidth=0.4,yBottom=-4,yTop=4,drawing=false, nameF=F_2,nameFi=F’_2,spotF=90,spotFi=90]} \psline{->}(A1)(B1)\psline{->}(A’1)(B’1)\uput[270](A1){A}\uput[90](B1){B} \uput[270](B’1){$\mathrm{B_1}$}\uput{0.7}[90](A’1){$\mathrm{A_1}$} {\psset{linecolor=red} \rayInterLens(I11)(B’1){3}{Inter1L2}\rayInterLens(B1)(O1){3}{Inter2L2} \rayInterLens(UPlens1)(B’1){3}{Inter3L2}\rayInterLens(DOWNlens1)(B’1){3}{Inter4L2} \psline(B1)(I11)(B’1)(Inter1L2) \psline(B1)(Inter2L2) \psline(B1)(UPlens1)(Inter3L2) \psline(B1)(DOWNlens1)(Inter4L2) \psset{length=5} \Parallel(B’1)(O)(Inter3L2){B1inftyRigth}\Parallel(B’1)(O)(Inter4L2){B2inftyRigth} \Parallel(B’1)(O)(Inter2L2){B3inftyRigth}\Parallel(B’1)(O)(Inter1L2){B3inftyRigth} {\psset{length=-5,linestyle=dashed} \Parallel(B’1)(O)(Inter3L2){B1inftyLeft}\Parallel(B’1)(O)(Inter4L2){B2inftyLeft} \Parallel(B’1)(O)(Inter2L2){B3inftyLeft}\Parallel(B’1)(O)(Inter1L2){B3inftyLeft} \pcline[nodesep=6](B’1)(O)} \pspolygon[style=rayuresJaunes,linestyle=none](B1)(UPlens1)(Inter3L2)% (B1inftyRigth)(B2inftyRigth)(Inter4L2)(DOWNlens1) \psline(B1)(UPlens1)(Inter3L2)(B1inftyRigth) \psline(B2inftyRigth)(Inter4L2)(DOWNlens1)(B1) } \rput(7,0){\eye} \end{pspicture}

32-03-15

B

A1

A

B1

\usepackage{pst-optic} \begin{pspicture}(-8,-3.5)(7,5) \rput(0,0){% \lens[lensWidth=1,lensGlass=true,lensHeight=6,focus=4,drawing=false,AB=2.5]} { \psset{linewidth=0.5pt,linestyle=dashed,arrowsize=5pt,arrows=||} \psline(-8,0)(4,0)\pcline(-7.75,-3)(0,-3)\lput*{:U}{2f} \pcline(0,-3)(4,-3)\lput*{:U}{f}\pcline(7,0)(7,4)\lput*{:U}{f} \pcline(4,5)(5,5)\lput*{:U}{s}\pcline(5.25,2.3)(5.25,2.8)\lput*{:U}{s} } \uput[90](0,3){\Large L}\uput[45](-7.7,3){\Large B}\uput[45](-7.7,-2){\Large E}

732

ch33-Pakete.tex: (#325)

herbert

32.3

Naturwissenschaften

\uput[270](3,-0.5){\Large D}\uput[-45](4,0){\Large A=F}\uput[270](3,2){\Large S} \uput[90](4,4){\Large Sp}\uput[90](3.5,3.25){\Large B’} \uput[0](6.3,2.25){\Large B’’}\uput[-90](6,1.1){\Large M} \psarc[linewidth=0.5pt](-7.75,2.5){0.5}{-90}{0}\qdisk(-7.55,2.3){1pt} \rput{210}(F’){\mirrorTwo} { \psset{fillstyle=solid,fillcolor=lightgray} \rput{210}(4,2.5){\psframe(-1,0)(1,0.2)} \psframe(-8,-3)(-7.75,3)\psframe(3,4)(3.8,4.2)\psframe(4.2,4)(5,4.2) }{\psset{linewidth=1pt,linecolor=red,arrows=->,arrowsize=5pt} \arrowLine[linecolor=blue,arrowOffset=-0.2](F’)(4,2.5){2} \arrowLine[linecolor=blue,arrowOffset=-0.2](4,2.3)(6,2.3){1}\qdisk(6,2.3){2pt} \psline[linestyle=dashed,arrows=-](F’)(5.1,4) \psline[linestyle=dashed,arrows=-](5,2.8)(6,2.8) \arrowLine(4,4)(F’){3}\arrowLine[linecolor=blue,arrowOffset=-0.2](I)(F’){2} \arrowLine(F’)(I){2}\arrowLine[linecolor=blue,arrowOffset=-0.3](-7.75,2.5)(I){3} \arrowLine(I)(-7.75,2.5){3}} \psframe(5.5,1.1)(6.5,3.5)\multido{\r=1.3+0.2}{12}{\psline(6.1,\r)(6.5,\r)} \end{pspicture}

s 32-03-16

Sp B’

L

s

B

f

B” S M A=F D E 2f

f

\usepackage{pst-optic} \begin{pspicture}(-8,-2)(8,5.75) \pnode(-8,1.5){A}\pnode(8,1.5){B}\uput[45](A){A}\uput[135](B){B}\pnode(0,0){START} \psframe[fillcolor=lightgray,fillstyle=solid,linecolor=blue](-8,-1.5)(B) \psset{linecolor=red,arrowsize=3pt,arrows=->} \multido{\n=20+5}{29}{% \refractionRay(START)(1;\n)(A)(B){1.5}{1}{END} \arrowLine(START)(END){2}\arrowLine(END)(END’){1} \psOutLine[length=3](END)(END’){Q}\arrowLine(END’)(Q){3} } \end{pspicture}

733

ch33-Pakete.tex: (#325)

herbert

32

Weitere PSTricks-Pakete

32-03-17

B

A

\usepackage{pst-optic} \begin{pspicture}(-5,-3)(5,3) \pnodes(-1,-2.5){A}(1,-2.5){B}(1,2.5){C}(-1,2.5){D} \uput[-135](A){A}\uput[-45](B){B}\uput[45](C){C}\uput[135](D){D} \pspolygon[fillcolor=lightgray,fillstyle=solid,linecolor=blue](A)(B)(C)(D) \refractionRay(-3,-3)(-2,-2)(D)(A){1}{1.5}{END}% 1. \psset{linecolor=red,linewidth=2pt,arrowsize=5pt,arrows=->} \arrowLine(-3,-3)(END){2} \ABinterCD(END)(END’)(C)(B){Out} \arrowLine(END)(Out){1} \refractionRay(END)(Out)(C)(B){1.5}{1}{Q} \arrowLine(Q)(Q’){1} \psOutLine[length=2](Q)(Q’){End} \refractionRay(-3,0)(-2,0)(A)(D){1}{1.5}{END}% 2. \psset{linecolor=green,linewidth=2pt,arrowsize=5pt,arrows=->} \arrowLine(-3,0)(END){2} \ABinterCD(END)(END’)(C)(B){Out} \arrowLine(END)(Out){1} \refractionRay(END)(Out)(C)(B){1.5}{1}{Q} \arrowLine(Q)(Q’){1} \psOutLine[length=2](Q)(Q’){End} \refractionRay(-3,3)(-2,2)(D)(A){1}{1.5}{END}% 3. \psset{linecolor=blue,linewidth=2pt,arrowsize=5pt,arrows=->} \arrowLine(-3,3)(END){2} \ABinterCD(END)(END’)(C)(B){Out} \arrowLine(END)(Out){1} \refractionRay(END)(Out)(C)(B){1.5}{1}{Q} \arrowLine(Q)(Q’){1} \psOutLine[length=2](Q)(Q’){End} \end{pspicture}

D

C 32-03-18

A

B

734

ch33-Pakete.tex: (#325)

herbert

32.3

Naturwissenschaften

\usepackage{pst-optic} \begin{pspicture*}(-7,-1)(7,7) \psprism \end{pspicture*}

32-03-19

C1

bc

ρ2

→ − n1

bc

R2 → − u2

− E1 → u1 bc

bc

C2 bc

I1

r1

I2

r2

i2

i1 bc

b D

b A bc

x

\usepackage{pst-optic} \begin{pspicture*}(-7,-1)(7,7) \psprism[notations=false] \end{pspicture*}

32-03-20

bc

I1

r1

r2

I2 i2

i1 bc

b D

b A bc

\usepackage{pst-optic} \begin{pspicture*}(-7,-1)(7,7) \psprism[k=0.5,lambda=400,rayWidth=1.5pt] \end{pspicture*}

735

ch33-Pakete.tex: (#325)

herbert

32

Weitere PSTricks-Pakete

32-03-21 bc

C1 E1 → − u1 bc

R2

→ − n1

bc

ρ2 → − u2

bc

bc

C2 I1

I2

r2

r1

i2

i1 b D bc

b A bc

x

\usepackage{pst-optic} \begin{pspicture*}(-7,-1)(7,7) \psprism[k=0.5,lambda=700,rayWidth=1.5pt] \end{pspicture*}

32-03-22 bc

C1 E1 → − u1 bc

ρ2

→ − n1

R2

bc

→ − u2 bc

bc

C2 I1

r1

I2

r2

i2

i1 bc

b D

b A bc

x

Die Angabe der Wellenlänge hat sowohl Auswirkungen auf die Linienfarbe als auch auf die Brechung des Lichtstrahls. Es existiert auch ein Makro \psprismColor, welches die Farbzerlegung des weißen Lichts zeigt (siehe Beispiel ?? auf Seite ??). Die folgende Abbildung zeigt dies dagegen für einzelne Farbstrahlen, deren unterschiedliche Brechung durch Vorgabe der Brechzahl erfolgte.

736

ch33-Pakete.tex: (#325)

herbert

C 32-03-23

ch33-Pakete.tex: (#325)

A

B

herbert

32.3

737

Naturwissenschaften

\begin{pspicture}(-7,0)(13,6) \pnode(-6,1){A}\pnode(-2,1){B}\pnode(-4,5){C} \uput[-135](A){A}\uput[-45](B){B}\uput[30](C){C} \pnode(12.5,0.5){E1}\pnode(12.5,5.5){E2} \psframe[fillcolor=lightgray,fillstyle=solid](E1)(12.75,5.5) \pspolygon[fillcolor=lightgray,fillstyle=solid,linecolor=blue](A)(B)(C) \psset{linecolor=black,linewidth=2pt,arrowsize=5pt,arrows=->} \pnode(-7,1){P1}\pnode(-6,2){P2} \ABinterCD(P1)(P2)(C)(A){END} \arrowLine(P1)(END){2} % \psset{linecolor=blue,linewidth=0.5pt,arrowsize=2pt} \refractionRay(P1)(P2)(C)(A){1}{1.528}{END} \ABinterCD(END)(END’)(C)(B){Out} \arrowLine(END)(Out){1} \refractionRay(END)(Out)(C)(B){1.528}{1}{Q}\psline(Q)(Q’) \ABinterCD(Q)(Q’)(E1)(E2){END}\arrowLine(Q)(END){4}\qdisk(END){1.5pt} [ ... ]

32

Weitere PSTricks-Pakete

32.3.3 pst-optexp– Experimentelle Optik1 Das Paket pst-optexp von Christoph Bersch ist eine Sammlung von Komponenten zur Erleichterung einer Beschreibung experimenteller optischer Versuchsaufbauten. [9] Historisch nach dem Vorbild pst-circ entwickelt, bietet es ähnliche, angepasste Konzepte zur automatischen Ausrichtung unterschiedlicher Optiken. Das Paket stellt eine Vielzahl an Freistrahl- sowie Faseroptiken zur Verfügung und bietet einfache Möglichkeiten diesen Fundus mit beliebigen eigenen Objekten zu erweitern (siehe Beispiel 32-03-37 auf Seite 743). Bei der Entwicklung wurde viel Wert auf möglichst flexible Einstellung und Konfiguration jeder einzelnen Komponente und ihrer Beschriftung gelegt. Als Freistrahlkomponenten stehen zum einen Zweipole, wie Linsen oder Verzögerungsplättchen, zur Verfügung, welche die prinzipielle Ausbreitungsrichtung des Lichtes nicht verändern. Diese können beliebig zwischen den zwei Bezugsknoten positioniert werden. Des Weiteren gibt es Dreipole, wie Spiegel oder Strahlteiler, die das Licht reflektieren und dementsprechend zum Lichtstrahl ausgerichtet werden. Freistrahlkomponenten können, wie die unterschiedlichen Prismen zeigen, mehrfache interne Brechung und Reflexion aufweisen, deren korrekte Darstellung bei Verbindung zweier Objekte gewährleistet wird (siehe Beispiel 32-03-37 auf Seite 743). Die Faseroptiken bilden die zweite Kategorie optischer Komponenten. Sie setzen sich aus Zwei-, Drei- und Vierpolen zusammen, deren Ausrichtung prinzipiell ähnlich zu der der Freistahlkomponenten vorgenommen wird. Bei allen Komponenten ist der Stil jeder Faser separat einstellbar und kann beispielsweise mit Pfeilen oder unterschiedlichen Krümmungen versehen werden. Gerade im Bereich der optischen Kommunikation werden häufig optische Komponenten durch externe Signale getrieben. Daher ist es bei einige Komponenten möglich, einen zusätzlichen Knoten zu erstellen, der für externe Verbindungen mit elektrischen Geräten verwendet werden kann.

Die Komponenten Eine Komponente wird anhand der Knoten, die bei ihrere Definition angegeben werden – den Referenzknoten – platziert. Im folgenden Beispiel wird eine Linse mittig auf die Verbindungslinie zwischen den Knoten hAi und hBi gesetzt: \usepackage{pst-optexp}

2

32-03-24

B

1Ab

b

0 0

1

2

3

\begin{pspicture}[showgrid](0,-0.3)(3,2.3) \pnodes(0,1){A}(3,1){B} \lens(A)(B) \psdot(A)\uput[90](A){A} \psdot(B)\uput[90](B){B} \end{pspicture}

Diese Positionierung kann anhand von unterschiedlichen Parametern, wie z. B. abspos beinflusst werden.Im folgenden Beispiel wird die Linse =0pt0.5 Einheiten vom Knoten hAi entfernt platziert, die Box sitzt am Ende der Referenzlinie AB. 1 Abschnitt zusammengestellt von Christoph Bersch

738

ch33-Pakete-pst-optexp.tex: (#303)

herbert

32.3

Naturwissenschaften

\usepackage{pst-optexp}

2 32-03-25

1Ab

B b

0 0

1

2

3

\begin{pspicture}[showgrid](0,-0.3)(3,2.3) \pnode(0,1){A}\pnode(1.5,1){B} \lens[abspos=0.5](A)(B) \optbox[position=end](A)(B) \psdot(A)\uput[90](A){A}\psdot(B)\uput[135](B){B} \end{pspicture}

Die Komponenten lassen sich allgemein in zwei Kategorien unterteilen: Faser- und Freistrahlkomponenten. Diese unterscheiden sich in erster Linie bezüglich ihrer Verbindungsmöglichkeiten: Freistrahlkomponenten können sowohl mit Lichtstrahlen als auch mit Fasern verbunden werden, wohingegen Faserkomponenten nur Faserverbindungen erlauben.

Beschriftungen Jede Komponente kann optional eine Beschriftung erhalten, die relativ zur Komponente platziert wird.

\usepackage{pst-optexp}

3

A b

b

M

B

2

C b

1

box

32-03-26

0 0

1

2

3

\begin{pspicture}[showgrid](0,-0.3)(3,3.3) \pnode(0,2.5){A}\pnode(2,2.5){B}\pnode(2,1.5){C} \mirror[labelangle=-45](A)(B)(C){M} \optbox[position=start, labeloffset=0, labelref=relative](C)(B){box} \drawbeam(A){1}{2} \psdot(A)\uput[90](A){A}\psdot(B) \uput[-135](B){B}\psdot(C)\uput[45](C){C} \end{pspicture}

Freistrahl-Verbindungen Freistrahlkomponenten können mit Lichtstrahlen verbunden werden, deren Weg mit Raytracing berechnet werden kann. Da es sich um ein Paket zum Skizzieren experimenteller Aufbauten handelt, werden hier trotz der realistischen Berechnungen viele Möglichkeiten offen gehalten den Strahlengang zu manipulieren. Im einfachsten Fall wird eine einzelne Linie gezeichnet, deren optischer Weg über den Brechungsindex n und das Snelliussche Brechungsgesetz bestimmt wird. Das Beispiel zeigt zwei Strahlen, die mit unterschiedlichen Anfangsbedingungen auf die Linse treffen, der rote Strahl startet mit einem Abstand von =0pt0.2 von der optischen Achse (beampos) und wird entsprechend von der Linse abgelenkt.

739

ch33-Pakete-pst-optexp.tex: (#303)

herbert

32

Weitere PSTricks-Pakete

\usepackage{pst-optexp}

2

32-03-27

B

1b

b

A 0 0

1

2

3

\begin{pspicture}[showgrid](0,-0.3)(3,2.3) \pnode(0,1){A}\pnode(3,1){B} \lens[n=2, lensradius=2 2, lensheight=1.5](A)(B) \drawbeam(A){1}(B) \drawbeam[beampos=0.4, linecolor=red](A){1}(B) \psdot(A)\uput[-90](A){A}\psdot(B)\uput[90](B){B} \end{pspicture}

Die Strahlen können mit beliebigen Strichlierungen und Pfeilen dekoriert werden. \usepackage{pst-optexp}

2

32-03-28

1Ab b

B 0 0

1

2

3

\begin{pspicture}[showgrid](0,-0.3)(3,2.3) \pnode(0,1){A}\pnode(3,1){B} \lens[n=2, lens=2 2 1.5](A)(B) \drawbeam[beamangle=10, ArrowInside=->, arrows=-|, beaminside=false](A){1}(B) \psdot(A)\uput[90](A){A}\psdot(B)\uput[-90](B){B} \end{pspicture}

Ebenfalls können ausgedehnte Strahlen gezeichnet werden deren Randstrahlen mit linestyle etc. und deren Füllung über fillstyle geändert werden können. \usepackage{pst-optexp}

2

32-03-29

B

A

1 b

b

0 0

1

2

3

\begin{pspicture}[showgrid](0,-0.3)(3,2.3) \pnode(0.5,1){A}\pnode(3,1){B} \optbox[position=start, optboxsize=0.5 1](A)(B) \lens[n=2](A)(B) \drawwidebeam[beamwidth=0.2, fillstyle=solid, fillcolor=green!40]{1-2}(B) \psdot(A)\uput[45](A){A}\psdot(B)\uput[135](B){B} \end{pspicture}

Die Strahlen können auch hinter die Komponenten gelegt werden. Dafür müssen alle beteiligten Komponenten und Strahlen in eine optexp-Umgebung gepackt werden (vergleiche das folgende Beispiel mit dem vorangegangenen). \usepackage{pst-optexp}

2

32-03-30

1

0 0

1

2

3

\begin{pspicture}[showgrid](0,-0.3)(3,2.3) \pnode(1.5,1){A}\pnode(3,1){B} \begin{optexp} \optbox[position=start](A)(B) \lens[n=2](A)(B) \drawwidebeam[beamwidth=0.2, fillstyle=solid, fillcolor=green!40]{1}{2}(B) \end{optexp} \end{pspicture}

740

ch33-Pakete-pst-optexp.tex: (#303)

herbert

32.3

Naturwissenschaften

Faserverbindungen Eine andere Möglichkeit, Komponenten zu verbinden, sind Fasern (\drawfiber). Hiermit bestehen weitreichende Möglichkeiten die Fasern automatisch an die Komponentenausrichtung anzupassen. \usepackage{pst-optexp}

3 32-03-31

2

1

0 0

1

2

3

\begin{pspicture}[showgrid](0,-0.3)(3,3.3) \pnode(1,2.5){A}\pnode(2.5,1){B} \psset{optboxsize=1 0.6} \optbox[position=start](A)(B|A) \optbox[position=end](B|A)(B) \drawfiber{1}{2} \drawfiber[linecolor=blue, ncurv=1.2]{1}{2} \end{pspicture}

Üblicherweise werden Fasern mit einer \*nccurve-Verbindung gezeichnet, jede andere Knotenverbindung ist aber ebenfalls möglich (fiberstyle). \usepackage{pst-optexp}

3 32-03-32

2

1

0 0

1

2

3

\begin{pspicture}[showgrid](0,-0.3)(3,3.3) \pnode(1,2.5){A}\pnode(2.5,1){B} \psset{optboxsize=1 0.6} \optbox[position=start](A)(B|A) \optbox[position=end](B|A)(B) \drawfiber[fiberstyle=angle, linearc=0.5]{1}{2} \end{pspicture}

\usepackage{pst-optexp, nicefrac} \begin{pspicture}(10.4,1.7) \pnodes(1.2,1){Start}(9.2,1){CCD} \begin{optexp} \optbox[position=start, label=0, optboxwidth=1.2](Start)(CCD){Laser} \polarization[poltype=perp,abspos=0.5](Start)(CCD) \optretplate[abspos=1](Start)(CCD){$\nicefrac{\lambda}{2}$} \lens[lens=0.4 0.4 0.5,abspos=2](Start)(CCD){$L_1$} \pinhole[phwidth=0.05, abspos=2.35, labelangle=180](Start)(CCD){iris} \lens[abspos=4](Start)(CCD){$L_2$} \optplate[abspos=6,platelinewidth=3\pslinewidth](Start)(CCD){SLM} \optplate[abspos=6.5,labelangle=180](Start)(CCD){PF} \lens[abspos=7](Start)(CCD){$L_3$} \optbox[position=end, label=0, optboxwidth=1.2](Start)(CCD){CCD} \polarization[abspos=6.7, polsize=0.8](Start)(CCD) \addtopsstyle{Beam}{fillstyle=solid, fillcolor=green!40!white, loadbeampoints} \drawwidebeam[beamwidth=0.1, stopinside]{1}{4} \drawwidebeam[beamdiv=-20]{4}{6} \drawwidebeam[stopinside]{6-9} \drawwidebeam[beamdiv=-30]{9-10} \end{optexp} \end{pspicture}

741

ch33-Pakete-pst-optexp.tex: (#303)

herbert

32

Weitere PSTricks-Pakete

PF

iris

32-03-33

Laser

CCD b

λ/ 2

L1

SLM

L2

L3

\usepackage{pst-optexp, nicefrac} \begin{pspicture}(-4.2,-1)(3,3) \pnodes(-2,0){LOut}(0,0){Grat}(4;45){Out}(2.5;70){Mvar} \newpsstyle{Beam}{linewidth=2\pslinewidth, linecolor=red!90!black} \begin{optexp} \optbox[optboxwidth=2.2, labeloffset=0, position=start](LOut)(Grat){diode laser} \mirror[variable, label=0.5](Grat)(Mvar)(Grat){M$_\mathrm{var}$} \optretplate[position=0.3](LOut)(Grat){$\nicefrac{\lambda}{4}$} \optgrating(LOut)(Grat)(Out){grating} \drawbeam[arrows=->]{1}{3}{4}(Out) \drawbeam{2}{4} \end{optexp} \rput[l](-3,2){Littman setup} \end{pspicture}

Mvar

32-03-34

Littman setup

diode laser λ/ 4

grating

\usepackage{pst-optexp} \begin{pspicture}(8.5,1.9) \pnodes(1.4,1.3){Laser}(7.6,1.3){Diode} \optbox[position=start, labeloffset=0](Laser)(Diode){Laser}% \optbox[abspos=4, optboxsize=1 0.6, labeloffset=1, n=3, compname=PC, angle=-10, rotateref=l](Laser)(Diode){Photonic Crystal} \optdetector[dettype=diode](\oenodeOut{PC})(Diode|\oenodeOut{PC}){PD} \nodexn{(\oenodeIn{PC}) + (2;170)}{Angle1} \psline[linestyle=dashed](\oenodeIn{PC})(Angle1) \psarc{}(\oenodeIn{PC}){1.3}{330}{30} \psarc[arcsep=1pt]{}(\oenodeIn{PC}){2}{170}{180} \uput{2.1}[175](\oenodeIn{PC}){\small $\varphi$} \drawbeam{-} \end{pspicture}

742

ch33-Pakete-pst-optexp.tex: (#303)

herbert

32.3

32-03-35

Naturwissenschaften

ϕ

Laser

PD

Photonic Crystal

\usepackage{pst-circ,pst-optexp,pst-func} \begin{pspicture}(6.4,3.2) \addtopsstyle{Fiber}{linecolor=red} \pnode(2.3,2.3){Lin}\pnode([Xnodesep=0.5]Lin){Lout} \pnode([Xnodesep=1.5]Lout){EAMout}\pnode([Xnodesep=1.5]EAMout){Det} \optbox[fiber,labeloffset=-0.2,endbox,compname=L,extnode=b](Lout)(Lin){% \psGauss[yunit=0.03,sigma=0.03]{-0.5}{0.5}} \optbox[fiber,labeloffset=0,optboxwidth=1,compname=EAM,extnode=b](Lout)(EAMout){EAM} \optfiber[labeloffset=0.3](EAMout)(Det){fibre} \optdetector(EAMout)(Det){OSA} \pnode([Xnodesep=-1,offset=-1]LExtNode){Osc} \pnode(LExtNode|Osc){PSin}\pnode(EAMExtNode|Osc){PSout} \oscillator[output=right](Osc){10\,GHz}{} \phaseshifter[labeloffset=-0.7](PSin)(PSout){$\tau$} \wire[arrows=}(E2)(E1) } \end{pspicture}

32-03-78

B

A

771

ch33-Pakete-pst-optexp.tex: (#303)

herbert

32

Weitere PSTricks-Pakete

Insbesondere für den Fall einer Dreilast reduziert sich der Aufwand erheblich, da hier auf das Makro \triload zurückgegriffen werden kann. \usepackage{pst-stru} \begin{pspicture}(-1,-6)(11,3) \psset{arrowsize=0.8mm,arrowinset=0} \triload[K=0.333,P=8,L=7.5] % k=1/3, like example 6 \end{pspicture}

32-03-79

p A B k = 0.333

C

l = 7.5

k·l

l

\usepackage{pst-stru} 32-03-80

p

\begin{pspicture}(-1,-3)(12,4) \psset{arrowsize=0.8mm, arrowinset=0} \triload[K=2.5,P=8,L=2] % k>2 -> Reaction in C downwards \end{pspicture}

A B k = 2.5

C

l =2 k·l

l

772

ch33-Pakete-pst-optexp.tex: (#303)

herbert

32.3

Naturwissenschaften

\usepackage{pst-stru} \begin{pspicture}(-1,-4)(11,3)\psset{arrowsize=0.8mm,arrowinset=0} % Total span is (K+1) times L, say AC=(K+1)*L [K=dimensionless value] \triload[K=1,P=8,L=5]% k=1 -> AB=BC \end{pspicture}

32-03-81

p A B

C

k=1 l =5 k·l

l

\usepackage{pst-stru} \begin{pspicture}(-1,-3)(11,5) \psset{arrowsize=0.8mm,arrowinset=0} \triload[K=2,P=8,L=3] % k=2 -> BM always NEGATIVE in the whole structure \end{pspicture}

32-03-82

p A B

C

k=2 l =3 k·l

l

773

ch33-Pakete-pst-optexp.tex: (#303)

herbert

32

Weitere PSTricks-Pakete

\usepackage{pst-stru} \begin{pspicture}(-1,-4)(9,2) \psset{arrowsize=0.8mm,arrowinset=0} \pnode(0,0){A}\pnode(2,0){B}\pnode(8,0){C}\rput{0}(C){\hinge}\rput{0}(B){\roller} \psline[linecolor=red,fillcolor=yellow,fillstyle=solid](0,0)(8,0)(8,1)(0,0) \multido{\nStart=1.00+0.025}{-37}{% \psArrowCivil[RotArrows=0,length=\nStart,start=\nStart,linecolor=magenta](A)(C){}} \rput(8.3,0.4){\large p}\rput(0,-0.4){\Large A} \rput(2,-1){\Large B}\rput(8.3,-0.6){\Large C} \pcline[offset=0,linecolor=blue]{|-|}(0,-3)(2,-3)\lput*{:U}{\bf $\frac{l}{3}$} \pcline[offset=0,linecolor=blue]{|-|}(2,-3)(8,-3)\lput*{:U}{\bf $l$} \def\MflettAB#1#2#3{#1 #2 div -.125 mul x mul x mul x mul #3 mul neg} \pscustom[linecolor=blue,linewidth=1pt,fillstyle=hlines]{ \psplot[]{0}{2}{\MflettAB{6}{6}{0.15}}\psline[](2,0)(0,0) } \def\TaglioAB#1#2#3{#1 #2 div -.375 mul x mul x mul #3 mul} %AB \pscustom[linecolor=green,linewidth=1pt,fillstyle=crosshatch]{ \psplot[]{0}{2}{\TaglioAB{6}{6}{0.15}}\psline[](2,0)(0,0) } \def\MflettBC#1#2#3{#1 #2 div -.125 mul x mul x mul x mul #1 3.375 div #2 mul x mul add #1 10.125 div #2 mul #2 mul sub #3 mul neg}% BC \pscustom[linecolor=blue,linewidth=1pt,fillstyle=hlines]{ \psplot[]{2}{8}{\MflettBC{6}{6}{0.15}}\psline[](8,0)(2,0) } \def\TaglioBC#1#2#3{#1 #2 div -.375 mul x mul x mul #1 3.375 div #2 mul add #3 mul} \pscustom[linecolor=green,linewidth=1pt,fillstyle=crosshatch]{ \psplot[]{2}{8}{\TaglioBC{6}{6}{0.15}}\psline[](8,0)(2,0)(2,1.4) } \psline[linewidth=1.5pt](0,0)(8,0) % Printing beam AC after diagrams BM/S \rput(3,1.6){\em {\scriptsize Shear diagram (green boundary)}} \rput(3,-1.6){\em {\scriptsize Bending Moment diagram (blue boundary)}} \rput(2,-1.9){\scriptsize [assumed positive downwards]} \rput(5,-1){\bf {\large +}}\rput(2.5,0.6){\bf {\large +}} \rput(7.7,-1.3){\bf {\Large -}} \end{pspicture}

Shear diagram (green boundary)

32-03-83

+

p

A B

+

C -

Bending Moment diagram (blue boundary) [assumed positive downwards]

l 3

l

32.3.12 pst-pad – Haftmodelle Das Paket pst-pad von Patrick Drechsler ist eine Sammlung von PSTricks-Makros um Adhäsions- und Reibungssysteme darzustellen, beispielsweise für die JKR- oder Hertztheorie, Grenzflächenreibung oder elasto-hydrodynamische Reibung. Die Makros

774

ch33-Pakete-pst-optexp.tex: (#303)

herbert

32.3

Naturwissenschaften

erlauben den zwei beteiligten Körpern die Formen planar, kugelförmig oder elastisch zuzuordnen. Zusätzlich kann ein Flüssigkeitsfilm zwischen den Körpern angenommen werden. \PstWallToWall [Optionen] (x,y ) \PstSphereToWall [Optionen] (x,y ) \PstPad [Optionen] (x,y ).

\usepackage{pst-pad} \begin{pspicture}(4,4)\PstWallToWall(2,2)\end{pspicture} \begin{pspicture}(4,4)\PstSphereToWall[fluid=false](2,2)\end{pspicture} \begin{pspicture}(4,4)\PstPad(2,2)\end{pspicture}

32-03-84

Die folgende Abbildung zeigt die Verwendung des Makros \PstPad und einiger Parameter. Neben dem Parameter ist die Standardvorgabe und unter diesem der hier verwendete Wert angegeben. \usepackage[dvipsnames,svgnames]{pstricks} \usepackage{pst-pad,graphicx} \resizebox{0.9\linewidth}{!}{% \begin{pspicture}(-5,-4)(7.5,4) \PstPad[FluidMaxRadius=4,FluidMinRadius=3,FluidHeight=1,FSphereHeight=2, FSphereFillColor=green!20!white,FluidFillColor=blue!10!white,FluidLineWidth=1.5pt, FSphereLineWidth=0.1pt,WallLineWidth=3pt,WallLineColor=blue, FSphereLineColor=magenta,FluidLineColor=green!50!black](0,0) \sffamily\footnotesize% \psset{linecolor=gray, linewidth=0.2pt} %% "Crosshair" for orientation: \psline[linestyle=dashed](-5,0)(5,0) \psline[linestyle=dashed](0,-3)(0,1.5) %% Node definitions: \pnode(0,0){center}\pnode(-4,-2.25){maxradiusLeft}\pnode(0,-2.25){maxradiusRight} \pnode(-3,0){minradiusLeft}\pnode(3,0){minradiusRight} \pnode([nodesep=4.5]center){fluidheightCenter} \pnode([nodesep=4.5,offset=-1]center){fluidheightBottom} \pnode([offset=-1]fluidheightBottom){wallThicknessBottom} \pnode([nodesep=5.2,offset=1]center){fsphereheightBottom} \pnode([offset=1]fsphereheightBottom){fsphereheightTop} %

775

ch33-Pakete-pst-optexp.tex: (#303)

herbert

32

Weitere PSTricks-Pakete

\psset{arrows=||,linewidth=0.8pt,linecolor=red,arrowscale=1.5} \rput[l]([nodesep=.2,offset=.2]center){\textbf{(0,0)}}%% Center: \ncline{minradiusLeft}{center}\nbput{\ParCol{FluidMinRadius}{0.5}{3}} \ncline{maxradiusLeft}{maxradiusRight}\nbput{\ParCol{FluidMaxRadius}{1}{4}} \ncline{fluidheightCenter}{fluidheightBottom}\naput{\ParCol{FluidHeight}{.5}{1}} \ncline{fluidheightBottom}{wallThicknessBottom}\naput{\ParCol{WallThickness}{1}{1}} \ncline{fsphereheightBottom}{fsphereheightTop}\nbput{\ParCol{FSphereHeight/2}{2}{2}} \psline{->}(-.1,2.2)(-.3,1.6) \rput(-.1,2.6){\ParCol{FSphereFillColor}{"lightgray"}{"green!20!white"}} \psline{->}(4,2.2)(2.5,.6) \rput(4,2.6){\ParCol{FluidFillColor}{"yellow"}{"blue!10!white"}} \psline{->}([offset=.5,nodesep=3]minradiusRight)(minradiusRight) \rput[l]([offset=-.1,nodesep=3.2]minradiusRight){\ParCol{FluidLineWidth}{1pt}{1.5pt}} \rput[l]([offset=.8,nodesep=3.2]minradiusRight){% \ParCol{FluidLineColor}{"black"}{"green!50!black"}} \psline{->}(-4.3,2.2)(-3.5,1)\rput(-4.3,2.6){\ParCol{FSphereLineWidth}{1pt}{0.1pt}} \rput(-4.3,3.4){\ParCol{FSphereLineColor}{"black"}{"magenta"}} \psline{->}(1.5,-2.25)(1.5,-1)\rput[t](1.5,-2.5){\ParCol{WallLineWidth}{1pt}{3pt}} \rput[t](1.5,-3.4){\ParCol{WallLineColor}{"black"}{"blue"}} \end{pspicture}}

FSphereLineColor ("black") ("magenta") FSphereLineWidth (1pt) (0.1pt)

32-03-85 FSphereFillColor ("lightgray") ("green!20!white")

FluidFillColor ("yellow") ("blue!10!white") FSphereHeight/2 (2) (2) FluidLineColor ("black") ("green!50!black")

(0,0) FluidMinRadius (0.5) (3)

FluidLineWidth (1pt) (1.5pt) FluidHeight (.5) (1) WallThickness (1) (1)

FluidMaxRadius (1) (4)

WallLineWidth (1pt) (3pt) WallLineColor ("black") ("blue")

32.3.13 pst-solarsystem – Sonnensystem Das Paket pst-solarsystem von Manuel Luque und dem Autor dieses Buches ermöglicht die Ausgabe des Zustands unseres Sonnensystems für ein bestimmtes Datum. Gleiches kann man beispielsweise auf der Webseite http://users.skynet.be/fa274406/ rubriques/live/orbites/orbites.htm vornehmen, jedoch besteht dort außer dem Bildschirmfoto keine Möglichkeit der Ausgabe. Es existiert im Prinzip nur ein Makro:

776

ch33-Pakete-pst-optexp.tex: (#303)

herbert

32.3

Naturwissenschaften

\SolarSystem [Optionen]

Wird dieses Makro ohne Parameter aufgerufen, so wird der Zustand des aktuellen Tages um 12 Uhr Mittags ausgegeben. Über die Parameter Day, Month, Year, Hour, Minute und Second kann ein ganz bestimmtes Datum vorgegeben werden. \usepackage{pst-solarsystem} \SolarSystem[Day=23,Month=11,Year=2016,Hour=9,Minute=10,Second=10] 23/11/2016 32-03-86

90o

Terre

180o

0o

Vénus Mars

Jupiter

γ

Mercure

Saturne

270o Mercure

Venus

Earth

Mars

Jupiter

Saturn

290.85

348.313

60.4158

352.15

185.912

258.516

latitude at o

-6.21021

-3.39371

0.0

-1.56079

1.29792

1.43837

distance at U.A.

0.447852

0.72725

0.987631

1.3858

5.45185

10.0649

longitude at o

Die Ausgabe erfolgt standardmäßig in ein Gitter der Größe 8 × 8 in der aktuell vorliegenden PSTricks-Einheit (normalerweise cm). Die Betrachtung erfolgt standardmäßig von oben und kann durch den Parameter viewpoint variiert werden. Die Vorgabe ist viewpoint=0 0 1, Betrachtung von der z-Achse aus. Die Ausgabe der Wertetabelle kann über den Parameter values unterdrückt werden.

777

ch33-Pakete-pst-optexp.tex: (#303)

herbert

32

Weitere PSTricks-Pakete

\usepackage{pst-solarsystem} \SolarSystem[Day=23,Month=11,Year=2016,Hour=9,Minute=10,Second=10, viewpoint=1 -1 2,values=false] 23/11/2016 32-03-87

o

o

90

0 18

Jupiter

Terre

Mercure Vénus

Mars

Saturne

o 0 γ

27 o

0

32.3.14 pst-perspective Das Paket von Thomas Söll ermöglicht die Transformation von Punkten, um perspektivische Darstellungen zu erreichen, sogenannte Schrägbilder. Dabei kann sowohl der Betrachtungswinkel als auch der Verkürzungsfaktor angegeben werden. \pstransTS [Optionen] (xA , yA ){Name A}{Name A0 } \pstransTSK [Optionen] (xA , yA ){Länge}{Name A}{Name A0 } \pstransTSX [Optionen] (xA , yA ){Name A}{Name A0 }

Mit den ersten beiden Makros werden die einzelnen Punkte senkrecht auf eine Basislinie (Vorgabe base=0) parallel zur x-Achse projiziert und von dort unter einem wählbaren Winkel (Vorgabe phi=45) und verkürzt (Vorgabe vkf=0.5) abgebildet. Auf

778

ch33-Pakete-pst-optexp.tex: (#303)

herbert

32.3

Naturwissenschaften

diesen Punkt kann dann mit dem vergebenen Knotennamen zugegriffen werden. Das Makro \pstransTSK führt zusätzlich eine Verschiebung des gegebenen Punktes durch, wobei diese über den Winkel phi und den Parameter vkf vorgegeben ist. Das Makro \pstransTSX unterscheidet sich von \pstransTS, indem der Punkt zuerst auf eine Linie parallel zur y-Achse projiziert wird (Vorgabe base=0). \usepackage[dvipsnames]{pstricks} \usepackage{pst-perspective,pst-eucl}

5 32-03-88

4

A b

2

r=

3

3

60◦

1b

b

Z

A′

ϕ = 45◦

0 0

1

2

3

\begin{pspicture}[showgrid](3,5) {\psset{base=-1,translineA,translineB, transAcolor=red,transBcolor=blue} \pnodes(0,0){O}(0,1){Z}(4,0|Z){W1} \pstransTS[originT={Z}](3;60){A}{A’}} \pcline[linewidth=1.3pt](0,0|O)(3,0|O) \psdot(A)\uput{4pt}[90]{0}(A){A} \psdot[linecolor=brown](A’) \uput{4pt}[45]{0}(A’){$\text{A}’$} \psdot(Z)\uput{4pt}[225]{0}(Z){$\text{Z}$} \psarc[linestyle=dashed, linecolor=cyan](Z){3}{15}{100} \pcline[linecolor=cyan,linestyle=dashed](Z)(A) \naput[nrot=:U]{$r=3$} \pstMarkAngle[LabelSep=0.8,MarkAngleRadius=1.2, linecolor=cyan,arrows=->]{W1}{Z}{A}{$60^{\circ}$} \pstMarkAngle[LabelSep=1.5,MarkAngleRadius=0.7, linecolor=blue,arrows=->]{3,0}{A|O}{A’}% {$\varphi=45^{\circ}$} \end{pspicture}

\usepackage[dvipsnames]{pstricks} \usepackage{pst-perspective} \begin{pspicture}(10,9) {\psset{translineA,translineB,linecolor=blue,linestyle=dashed,transAcolor=blue, transBcolor=orange,dash=5pt 5pt} \pnode(0,\ba){O}% \ba=Basislinie %------ Eckpunkte des X -------\pstransTS(1,0){A}{A’}\pstransTS(2,0){B}{B’}\pstransTS(4,3){C}{C’} \pstransTS(6,0){D}{D’}\pstransTS(7,0){E}{E’} \pstransTS[transAlinestyle=solid,transAcolor=red,transAlinewidth=2pt](4.5,4){F}{F’} \pstransTS[linestyle=solid,linecolor=green](7,8){G}{G’} \pstransTS[transAcolor=red,transBcolor=black,transBlinewidth=1.4pt](6,8){H}{H’} \pstransTS(4,5){I}{I’}\pstransTS(2,8){J}{J’} \pstransTS[linecolor=red](1,8){K}{K’} \pstransTS(3.5,4){L}{L’}} \pspolygon[fillstyle=solid,fillcolor=cyan!30,opacity=0.3, linecolor=blue](A’)(B’)(C’)(D’)(E’)(F’)(G’)(H’)(I’)(J’)(K’)(L’) \pspolygon[fillstyle=solid,fillcolor=yellow!30,opacity=0.5, linewidth=0.9pt,linecolor=red](A)(B)(C)(D)(E)(F)(G)(H)(I)(J)(K)(L) \pcline[linewidth=1.3pt](0,0|O)(10,0|O) \end{pspicture}

779

ch33-Pakete-pst-optexp.tex: (#303)

herbert

32

Weitere PSTricks -Pakete

32-03-89

32.4 Informationstechnik Die Automatentheorie, als Teilgebiet der Theoretischen Informatik, ist aus der Kybernetik entstanden und bezeichnet das Studium von Modellrechnern (Automaten) und mit den von diesen lösbaren Problemen. Weitere Schlagwörter sind hier die Berechenbarkeitsund Komplexitätstheorie. Bei der praktischen Anwendung, beispielsweise im Compilerbau, ist man auf eine symbolische Darstellung der Zusammenhänge angewiesen. Dazu gehören auch die symbolischen Beziehungen in Datenbank- und Gesellschaftsstrukturen, für die mehrere Pakete existieren.

32.4.1 sfg – Signalflusspläne Dieses Paket von Hanspeter Schmid eignet sich zur Darstellung von Signalflussplänen. Es existiert keine eigenständige Dokumentation für dieses Paket, jedoch findet man eine Beschreibung der Makros am Ende der Paketdatei sfg.sty. \usepackage{sfg} \sfgsetunit{0.5cm} \sfgsetsize{0.12}{0.4}{0.5}{0.3} \sfgsetcompass \begin{picture}(27,4) % branches related to node 2 \put(6,2){\sfgbranch{3}{0}\S{$\frac{1}{R_1}$}} \put(9,2){\sfgbranch{3}{0}\N{\boldmath $Z_2$}} \put(18,2){\sfgcurve{-9}{0}{2}\S{$\frac{1}{R_2}$}} \put(24,2){\sfgcurve{-15}{0}{-2}\N{$sC_1$}} % branches related to node 3 \put(12,2){\sfgbranch{3}{0}\N{$\frac{1}{R_2}$}} \put(15,2){\sfgbranch{3}{0}\N{\boldmath $Z_3$}} \put(0,2){\sfgcurve{6}{0}{2}\N{$1$}}% input, voltage gain, output \put(18,2){\sfgcurve{6}{0}{-2}\S{$\alpha_{\mathrm{V}}$}} \put(24,2){\sfgbranch{3}{0}\S{$1$}} \put(0,2){\sfgtermnode\S{$V_{\mathrm{in}}$}} % nodes \put(3,2){\sfgnode\S{$I_1$}} \put(6,2){\sfgnode\S{$V_1$}}

780

ch33-Pakete-pst-optexp.tex: (#303)

herbert

32.4

Informationstechnik

\put(9,2){\sfgnode\S{$I_2$}} \put(12,2){\sfgnode\S{$V_2$}} \put(15,2){\sfgnode\S{$I_3$}} \put(18,2){\sfgnode\S{$V_3$}} \put(21,2){\sfgnode\S{$I_4$}} \put(24,2){\sfgnode\S{$V_4$}} \put(27,2){\sfgtermnode\S{$V_{\mathrm{out}}$}} \end{picture}

1

32-04-1

sC1 1 R2

Z2 Vin

I1

V1

1 R1

I2

V2

Z3 I3

V3

1 R2

I4

V4

1 Vout

αV

32.4.2 vaucanson-g Das Paket vaucanson-G von Sylvain Lombardy und Jacques Sakarovitch ist ähnlich zum Paket pst-eucl; es werden nur einige Knoten mit physikalischen Koordinaten festgelegt, der Rest ist dann relativ (logisch) zu diesen definiert.

32-04-2

a

\usepackage{vaucanson-g}

p

b

a

r b d

\begin{VCPicture}{(0,-2)(5.5,2)} \State[p]{(0,0)}{A}\State{(2.5,0)}{B} \State[r]{(5.5,0)}{C}\Initial{A} \Final{C}\EdgeL{A}{B}{a}\ArcL{B}{C}{b} \ArcL{C}{B}{b}\LoopN{A}{a}\LoopS{C}{d} \end{VCPicture}

Für die Dokumentenklasse beamer wird eine spezielle Anpassung zur Verfügung gestellt, wobei der auf http://igm.univ-mlv.fr/~lombardy/Vaucanson-G/ angegebene Hinweis, dass man beamer mit der Option xcolor=pst laden sollte, falsch ist; diese Option ist veraltet und wird nicht mehr unterstützt. \usepackage{vaucanson-g} \begin{VCPicture}{(-11,-5)(11,12)} \PlainState\LargeState\ChgStateLabelScale{0.75} \StateIF[p,q]{(-10,-1)}{AB} \StateIF[q,r]{(-6,-1)}{BC} \StateIF[p,r]{(-8,-4.464)}{AC} \VCPut{(-5,-5)}{$\kappa=[2,0,0]$} \StateIF[p]{(8,1.536)}{A} \StateIF[q]{(6,5)}{B} \StateIF[r]{(10,5)}{C} \VCPut{(8,-0.5)}{$\kappa=[1,0,0]$} \StateIF[pq]{(-8,7.536)}{Ab} \StateIF[qr]{(-6,11)}{Bc} \StateIF[pr]{(-10,11)}{Ac} \VCPut{(-2,11)}{$\kappa=[0,1,0]$} \StateIF[p,qr]{(0,-1.464)}{ABc} \StateIF[q,pr]{(-2,2)}{BAc} \StateIF[r,pq]{(2,2)}{CAb} \VCPut{(3,-2)}{$\kappa=[1,1,0]$}\StateVar[pq,pr,qr]{(-8,3)}{AbAcBc} \VCPut{(-8,1)}{$\kappa=[0,3,0]$}\StateIF[pr,qr]{(2,8)}{AcBc} \StateIF[pq,pr]{(0,4.536)}{AbAc}\StateIF[pq,qr]{(-2,8)}{AbBc} \VCPut{(5,9)}{$\kappa=[0,2,0]$} % end physical coors \DimEdge\ChgEdgeLineStyle{dashed} \RstEdgeLineWidth \EdgeR{Ab}{AbAc}{} \EdgeR{Ab}{AbBc}{} \EdgeR{Ac}{AbAc}{} \EdgeR{Ac}{AcBc}{}

781

ch33-Pakete-pst-optexp.tex: (#303)

herbert

32

Weitere PSTricks-Pakete

\EdgeR{Bc}{AbBc}{} \EdgeR{Bc}{AcBc}{} \EdgeR{AbAc}{AbAcBc}{} \EdgeR{AbAc}{A}{} \EdgeR{AbBc}{AbAcBc}{} \EdgeR{AbBc}{B}{} \EdgeR{AcBc}{AbAcBc}{} \EdgeR{AcBc}{C}{} \EdgeR{A}{ABc}{} \EdgeR{B}{BAc}{} \EdgeR{C}{CAb}{} \EdgeR{AbAcBc}{ABc}{} \EdgeR{AbAcBc}{BAc}{} \EdgeR{AbAcBc}{CAb}{} \EdgeR{ABc}{AB}{} \EdgeR{ABc}{AC}{} \EdgeR{BAc}{AB}{} \EdgeR{BAc}{BC}{} \EdgeR{CAb}{AC}{} \EdgeR{CAb}{BC}{} \RstEdge \Initial{Ab}\Final{Ab}\Final[w]{Ac}\Final{Bc}\Initial{AbAc}\Initial{AbBc} \Final[s]{AbBc}\Final{AbAc}\Final{AcBc} \Initial{AbAcBc}\Final{AbAcBc}\Initial{A} \Initial{B}\Final[s]{B}\Final{C}\Initial{ABc}\Initial{BAc}\Initial[s]{CAb} \Final[s]{BAc} \Final{CAb} \Initial{AB} \Initial{AC} \Initial[s]{BC} \Final{BC} \EdgeR{Ab}{Bc}{a,b} \EdgeR{Bc}{Ac}{a} \EdgeR{Ac}{Ab}{a} \EdgeL{AbAc}{AbBc}{a} \EdgeL{AbBc}{AcBc}{a} \EdgeL{AcBc}{AbAc}{a} \LoopN{AbAcBc}{a}\EdgeL{A}{B}{a} \EdgeL{B}{C}{a} \ArcL{A}{C}{b} \ArcL{C}{A}{a} \LoopN{B}{b} \EdgeL{ABc}{BAc}{a} \EdgeL{BAc}{CAb}{a} \EdgeL{CAb}{ABc}{a} \EdgeL{AB}{BC}{a,b} \EdgeL{BC}{AC}{a} \EdgeL{AC}{AB}{a} \end{VCPicture}

a

pr

a

qr

κ = [0, 1, 0]

32-04-3

κ = [0, 2, 0]

a, b a

pq, qr

pr, qr

pq

b

a

a

a

q

a

r

pq, pr

a

pq, pr, qr

a

q, pr

b

a

r, pq p

κ = [0, 3, 0]

a

a

κ = [1, 0, 0]

a, b

p, q

q, r p, qr κ = [1, 1, 0]

a

a p, r

κ = [2, 0, 0]

32.4.3 pst-dbicons – ER-Beziehungen Wolfgang May erstellte dieses Paket für die symbolische Beschreibung von Datenbankmodellen (Entity Relationship). Die so genannten »Entities« werden mithilfe einer Tabelle angeordnet und anschließend durch Knotenverbindungen zueinander in Beziehung gesetzt. Ein sehr komplexes und umfangreiches Diagramm zeigt Beispiel 35-00-7. 782

ch33-Pakete-pst-optexp.tex: (#303)

herbert

32.4

Informationstechnik

\usepackage{pst-node,pst-dbicons} \seticonparams{entity}{shadow=true,fillcolor=black!30,fillstyle=solid} \seticonparams{attribute}{fillcolor=black!10,fillstyle=solid} \seticonparams{relationship}{shadow=true,fillcolor=black!20,fillstyle=solid} \begin{tabular}{cc} \begin{tabular}{c} \entity{tblpbl}[tbl\_pbl]\\[2cm] \entity{tblinst}[tbl\_inst]\\[2cm] \entity{tbldsc}[tbl\_dsc] \\[2cm] \end{tabular}\hspace{6em} \begin{tabular}{c} ~\\[2cm] \entity{tbllvl}[tbl\_lvl]\\[2cm] \entity{tblindx}[tbl\_indx]\\[2cm] \end{tabular} \attributeof{tblpbl}[3em]{0}{pbljrn}[pbl\_jrn]%attributes \attributeof{tblpbl}[3em]{90}{pbloth}[pbl\_oth] \attributeof{tblpbl}[3em]{30}{pblauth}[pbl\_auth] \attributeof{tblpbl}[3em]{150}{pblyr}[pbl\_yr] \attributeof{tblpbl}[3em]{180}[key]{pblid}[pbl\_id] \attributeof{tblinst}[3em]{150}[key]{instprm}[inst\_prm] \attributeof{tblinst}[3em]{180}[key]{instid}[inst\_id] \attributeof{tbldsc}[3em]{180}[key]{dscid}[dsc\_id] \attributeof{tbldsc}[3em]{150}{dscname}[dsc\_name] \attributeof{tbldsc}[3em]{220}{dscval}[dsc\_val] \attributeof{tbldsc}[3em]{270}{dscunit}[dsc\_unit] \attributeof{tbldsc}[3em]{320}{dscoth}[dsc\_oth] \attributeof{tbllvl}[3em]{0}[key]{lvlid}[lvl\_id] \attributeof{tbllvl}[3em]{90}{lvlname}[lvl\_name] \attributeof{tblindx}[3em]{0}[key]{indxid}[indx\_id] \attributeof{tblindx}[3em]{30}{indxname}[indx\_name] \attributeof{tblindx}[3em]{270}{indxrel}[indx\_rel] \relationshipbetween{tblpbl}{tblinst}{1:m}\relationshipbetween{tblinst}{tbldsc}{m:1} \relationshipbetween{tblinst}{tbllvl}{m:1}\relationshipbetween{tbldsc}{tblindx}{1:m} \relationshipbetween{tbllvl}{tblindx}{1:m} \end{tabular}

pbl_oth

32-04-4

pbl_yr pbl_id

pbl_auth tbl_pbl

pbl_jrn lvl_name

1:m inst_prm inst_id

tbl_inst

m:1

tbl_lvl

1:m

m:1

indx_name

dsc_name dsc_id

lvl_id

tbl_dsc

dsc_val

1:m dsc_oth

dsc_unit

tbl_indx

indx_id

indx_rel

783

ch33-Pakete-pst-optexp.tex: (#303)

herbert

32

Weitere PSTricks-Pakete

32.4.4 pst-pdgr: »Pedigrees« Die eigentliche Übersetzung als »Ahnentafel« trifft hier nicht die Bedeutung des Paketes, denn in der Medizin wird hierunter mehr als nur der Zusammenhang zwischen verschiedenen Menschen und Generationen verstanden. [74] In dem Artikel haben die Paketautoren Boris Veytsman und Leila Akhmadeeva eine eingehende Beschreibung des theoretischen Hintergrundes gegeben.

\usepackage{pst-pdgr} \begin{pspicture}(6,6) \psset{belowtextrp=t,armB=1} \rput(2.5,5.5){\pstPerson[male,deceased,belowtext=A:1]{A:1}} \rput(3.5,5.5){\pstPerson[female,deceased,belowtext=A:2]{A:2}} \pstRelationship[descentnode=A:1_2]{A:1}{A:2} \rput(1,3.5){\pstPerson[female,affected,belowtext=B:1]{B:1}} \pstDescent{A:1_2}{B:1} \rput(2,3.5){\pstPerson[male,belowtext=B:2]{B:2}} \pstRelationship[descentnode=B:1_2]{B:1}{B:2} \rput(3.5,3.5){\pstPerson[male,affected,belowtext=B:3]{B:3}} \pstDescent{A:1_2}{B:3} \rput(4.5,3.5){\pstPerson[female,belowtext=B:4]{B:4}} \pstRelationship[descentnode=B:3_4]{B:3}{B:4} \rput(5.5,3.5){\pstPerson[female,affected,deceased,proband,belowtext=B:5]{B:5}} \pstDescent{A:1_2}{B:5} \rput(0.5,1.5){\pstPerson[female,belowtext=C:1]{C:1}}\pstDescent{B:1_2}{C:1} \rput(1.5,1.5){\pstPerson[female,belowtext=C:2]{C:2}}\pstDescent{B:1_2}{C:2} \rput(2.5,1.5){\pstPerson[female,deceased, belowtext=\parbox{2cm}{\centering C:3\\4/52}]{C:3}} \pstDescent{B:1_2}{C:3} \rput(3.5,1.5){\pstPerson[female,affected,belowtext=C:4]{C:4}} \pstDescent{B:3_4}{C:4} \rput(4.5,1.5){\pstPerson[male,insidetext=?,belowtext=C:5]{C:5}} \pstDescent{B:3_4}{C:5} \end{pspicture}

32-04-5

A:1

B:1

C:1

B:2

C:2

C:3 4/52

A:2

B:3

B:4

C:4

? C:5

B:5

784

ch33-PaketeTAB5.tex: (#78)

herbert

32.4

Informationstechnik

Für die Darstellung der einzelnen Zusammenhänge stehen folgende Symbole zur Verfügung: Tabelle 32.15: Symbole des Pakets pst-pdgr

Ausgabe

Befehl

Personenymbole \pstPerson[condition=asymptomatic]{A} \pstPerson[condition=affected, sex=male, evaluated]{A} \pstPerson[obligatory, female]{A}

∗ b

\pstPerson[asymptomatic, male, proband]{A} \pstPerson[condition=obligatory, sex=male, deceased]{A}

b

Jana \pstPerson[sex=female, adopted, condition=affected, abovetext=Jana]{A} \pstPerson[sex=male, condition=affected, belowtext=20 yr, deceased]{A}

28 yr A 1w

\pstPerson[unknown, affected, righttext=1 w ]{A} \pstPerson[sex=male, insidetext=5 ]{A}

5

\pstPerson[sex=female, condition=affected, insidetext=P ]{A}

P

\pstPerson[sex=female, affected, belowtext=SB 2wks, deceased]{A}

SB 2wks

Abtreibungssymbole \pstAbortion[belowtext=male]{A}

male 1w

\pstAbortion[sab, righttext=1w ]{A} \pstAbortion[affected]{A}

Infertilität \pstChildless[belowtext=vasectomy]{A}

vasectomy

\pstChildless[belowtext=anospermia, infertile]{A}

anospermia

32.4.5 pst-gantt: Gantt-Diagramme (Projektplanung) Dieses Paket von Denis Girou stellt eine Umgebung bereit mit der einfache zeitliche Abläufe dargestellt werden können. Die speziellen Parameter sind in Tabelle 32.16 auf der nächsten Seite zusammengestellt.

785

ch33-Pakete-pst-optexp.tex: (#303)

herbert

32

Weitere PSTricks-Pakete

\begin{PstGanttChart} [Optionen] {Vertikale Einheit }{Horizontale Einheit }

. . . \end{PstGanttChart} \PstGanttTask [Optionen] {Start }{Ende}

Tabelle 32.16: Zusammenfassung aller speziellen Parameter für pst-gantt. Name

Werte

Vorgabe

Anmerkungen

PstPicture ChartShowIntervals ChartStartInterval ChartModulo ChartModuloValue TaskStyle ChartUnitIntervalName ChartUnitBasicIntervalName TaskUnitIntervalValue TaskUnitType TaskOutsideLabel TaskInsideLabel TaskOutsideLabelMaxSize

Boolean Boolean Wert Boolean Wert Stil Text Text Wert Text Text Text Wert

true true 1 true 52 TaskStyleDefault Week Day 7 Week

pspicture verwenden Zeitintervalle anzeigen Startwert Modulofunktion verwenden Modulo-Wert (Wochen/Jahr) Stil eines Tasks Chart-Zeiteinheit Chart-Basiseinheit Task-Intervalllänge Task-Einheit y-Achsenlabel Task-Label Boxbreite des Labels

0

\usepackage{pst-gantt} \newpsstyle{Unwichtig}{fillstyle=vlines} \newpsstyle{Wichtig}{fillstyle=solid,fillcolor=red} \begin{PstGanttChart}{5}{7} \PstGanttTask{0}{3}\PstGanttTask{2}{1} \PstGanttTask[TaskStyle=Wichtig,TaskInsideLabel=Wichtig]{2}{5} \PstGanttTask[TaskStyle=Unwichtig]{4}{2}\PstGanttTask{5}{2} \end{PstGanttChart}

32-04-22

Wichtig

\usepackage{pst-gantt} \newpsstyle{Unwichtig}{fillstyle=vlines} \newpsstyle{Wichtig}{fillstyle=solid,fillcolor=red} \begin{PstGanttChart}[yunit=1.5]{5}{7} \PstGanttTask{0}{3}\PstGanttTask{2}{1} \PstGanttTask[TaskStyle=Wichtig,TaskInsideLabel=Wichtig]{2}{5} \PstGanttTask[TaskStyle=Unwichtig]{4}{2} \PstGanttTask{5}{2} \end{PstGanttChart}

786

ch33-Pakete-pst-optexp.tex: (#303)

herbert

32.4

Informationstechnik

32-04-23

Wichtig

\usepackage{pst-gantt} \newpsstyle{Unwichtig}{fillstyle=vlines} \newpsstyle{Wichtig}{fillstyle=solid,fillcolor=red} \begin{PstGanttChart}[unit=2,TaskOutsideLabelMaxSize=1,ChartShowIntervals]{5}{7} \PstGanttTask[TaskOutsideLabel={Task 1}]{0}{3} \PstGanttTask[TaskOutsideLabel={Task 2},TaskUnitType=Day]{15}{3}% 3 Tage ab 15 \PstGanttTask[TaskStyle=Wichtig,TaskOutsideLabel={Task 3}, TaskInsideLabel={\Large\textcolor{white}{\textbf{Wichtig}}}]{2}{5} \PstGanttTask[TaskStyle=Unwichtig,TaskOutsideLabel={Task 4}]{4}{2} \PstGanttTask[TaskOutsideLabel={Task 5}]{5}{2} \end{PstGanttChart}

Week 1

32-04-24

Week 2

Week 3

Week 4

Week 5

Week 6

Week 7

Task 1 Task 2

Wichtig

Task 3 Task 4 Task 5

\usepackage{pst-gantt} \begin{PstGanttChart}[yunit=1.5,ChartUnitIntervalName=KW,ChartUnitBasicIntervalName=KW, ChartModulo,ChartModuloValue=52,TaskUnitIntervalValue=14,TaskUnitType=KW, ChartStartInterval=49,ChartShowIntervals]{4}{8} \PstGanttTask[TaskInsideLabel={Task 1}]{0}{1} \PstGanttTask[TaskInsideLabel={Task 2}]{3}{4} \PstGanttTask[TaskInsideLabel={Task 3}]{2}{2} \PstGanttTask[TaskInsideLabel={Task 4}]{3}{5} \end{PstGanttChart}

787

ch33-Pakete-pst-optexp.tex: (#303)

herbert

32

Weitere PSTricks -Pakete

KW 50

KW 51

KW 52

KW 1

KW 2

KW 3

KW 4

KW 5

32-04-25

Task 1 Task 2 Task 3 Task 4

\usepackage{pst-gantt} \begin{PstGanttChart}[yunit=1.5,ChartUnitIntervalName=Month, TaskUnitIntervalValue=30,TaskUnitType=Month,ChartShowIntervals]{3}{4} \PstGanttTask[TaskInsideLabel={Task 1}]{0}{1} \PstGanttTask[TaskInsideLabel={Task 2},TaskUnitType=Day]{24}{40}% 40 days start at 24 \PstGanttTask[TaskInsideLabel={Task 3}]{2}{2} \end{PstGanttChart}

Month 1

Month 2

Month 3

Month 4

32-04-26

Task 1 Task 2 Task 3

Year 1 Year 2 Year 3 Year 4

\usepackage{pst-gantt}

Task 1

\begin{PstGanttChart}[yunit=1.5, ChartUnitIntervalName=Year, ChartUnitBasicIntervalName= Month,TaskUnitIntervalValue=12, TaskUnitType=Year,ChartShowIntervals]{4}{4} \PstGanttTask[TaskInsideLabel={Task 1}]{0}{1} \PstGanttTask[TaskInsideLabel={Task 2}, TaskUnitType=Month]{6}{24}% 24 Mon. Beg. 6 \PstGanttTask[TaskInsideLabel={Task 3}]{2}{2} \PstGanttTask[TaskInsideLabel={Task 4}]{3}{1} \end{PstGanttChart}

Task 2 Task 3 Task 4

32-04-27

\usepackage{pst-gantt} \definecolor{LightCyan}{rgb}{0.88,1.,1.} \definecolor{Orange}{rgb}{1.,0.65,0.} \definecolor{PaleGreen}{rgb}{0.6,0.98,0.6}\definecolor{Pink}{rgb}{1.,0.75,0.8} \psset{gradmidpoint=0,fillstyle=gradient,gradbegin=LightCyan,gradend=white} \newpsstyle{TaskStyleA}{gradbegin=cyan,gradend=blue} \newpsstyle{TaskStyleB}{gradbegin=red,gradend=Pink} \newpsstyle{TaskStyleC}{gradbegin=yellow,gradend=Orange} \newpsstyle{TaskStyleD}{gradbegin=green,gradend=PaleGreen}

788

ch33-Pakete-pst-optexp.tex: (#303)

herbert

32.4

Informationstechnik

\begin{PstGanttChart}[yunit=2.5,xunit=3.5,ChartUnitIntervalName=Woche, ChartUnitBasicIntervalName=Tag,TaskUnitType=Tag, TaskOutsideLabelMaxSize=14,ChartShowIntervals]{8}{43} \psset{gradangle=90,TaskStyle=TaskStyleA} \PstGanttTask[TaskOutsideLabel={Studie}]{0}{10} \PstGanttTask[TaskOutsideLabel={Lesen}]{6}{7} \PstGanttTask[TaskOutsideLabel={Korrekturen}]{14}{2} \PstGanttTask[TaskOutsideLabel={Vorlage},TaskStyle=TaskStyleB]{17}{1} \psset{TaskStyle=TaskStyleC} \PstGanttTask[TaskOutsideLabel={Anwendung}]{25}{14} \PstGanttTask[TaskOutsideLabel={Tests}]{35}{6} \PstGanttTask[TaskOutsideLabel={Verifikation}]{39}{3} \PstGanttTask[TaskOutsideLabel={Gesetz},TaskStyle=TaskStyleD]{42}{1} \end{PstGanttChart}

Gesetz

Verifikation

Tests

Anwendung

Vorlage

Korrekturen

Lesen

Studie

Woche 1

Woche 2

Woche 3

Woche 4

Woche 5

Woche 6

32-04-28

789

ch33-Pakete-pst-optexp.tex: (#303)

herbert

32

Weitere PSTricks-Pakete

32.5 Verschiedenes 32.5.1 pst-light3d – 3D-Lichteffekte Dieses Paket ist eher im spielerischen Bereich anzusiedeln, wenn es auch Möglichkeiten bietet, die selbst mit speziellen Programmen nicht so einfach zu realisieren sind, was mit dem letzten Beispiel ansatzweise gezeigt wird. Die möglichen Optionen sind in Tabelle 32.17 zusammengefasst und werden bis auf LightThreeDSteps in den folgenden Beispielen angewendet. Es existieren zwei Makros, eines für Text- und eines für Grafikelemente: \PstLightThreeDText [Optionen] {Text } \PstLightThreeDGraphic [Optionen] {Graphikobjekt }

Tabelle 32.17: Zusammenstellung der verfügbaren Optionen für pst-light3d. Name

Wert

LightThreeDXLength

Wert Einheit

0.2

LightThreeDYLength

Wert Einheit

0.3

LightThreeDLength

Wert Einheit

-

LightThreeDSteps Integer LightThreeDAngle Winkel LightThreeDColorPsCommand

PostScript

Vorgabe

Bedeutung Länge des Schattens in x-Richtung. Länge des Schattens in y-Richtung. setzt LightThreeDXLength und LightThreeDYLength auf den gleichen Wert Anzahl der Zwischenschritte Lichteinfallswinkel

40 45 2.5 div setgray

beliebiger PS-Code für das Setzen der Farbe auf PS-Seite.

Zuerst muss man eine entsprechende Schriftgröße definieren, die zudem als Outlinefont vorliegt, da sie sonst nicht mit einer Farbe gefüllt werden kann. \DeclareFixedFont{Makroname}{Encoding}{Name}{series}{shape}{Größe}

Ein mögliches Beispiel wäre daher \DeclareFixedFont{\RM}{T1}{ptm}{m}{n}{2cm}

Ohne jegliche Füllanweisung ergibt sich dann eine »offene« Schrift mit grauer Schattierung. \usepackage{pst-light3d} 32-05-1

\DeclareFixedFont{\RM}{T1}% {ptm}{m}{n}{2cm} \PstLightThreeDText{\RM PSTricks} \usepackage{pst-light3d} 32-05-2

\DeclareFixedFont{\SF}{T1}% {phv}{m}{n}{2cm} \PstLightThreeDText[fillstyle=solid, fillcolor=cyan]{\SF PSTricks}

790

ch33-Pakete-pst-optexp.tex: (#303)

herbert

32.5

Verschiedenes

\usepackage{pst-light3d,pst-grad} 32-05-3

\DeclareFixedFont{\RM}{T1}{ptm}{m}{n}{2.5cm} \psset{linestyle=none,fillstyle=gradient, gradbegin={[rgb]{1,0.84,0}},gradend=blue, gradangle=90,gradmidpoint=0} \PstLightThreeDText{\RM\TeX}

32.5.2 pst-calendar – Verschiedene Kalenderoperationen Dieses Paket ist ebenfalls von Manuel Luque und bietet keine Kalenderoperationen im mathematischen Sinne, sondern erlaubt die Ausgabe von Kalenderblättern. pst-calendar verfügt über spezielle Sprachanpassungen für Englisch (Standard), Französisch und Deutsch, die nur dann über die Paketoption aktiviert werden müssen, wenn nicht schon bei der Dokumentenklasse english, french oder ngerman angefordert wurde. Dies bezieht sich auch auf die Optionen, die in Tabelle 32.18 für ngerman zusammengestellt sind. Es existiert keine spezielle TEX-Version, sodass spezielle Anpassungen nötig werden, wenn nicht mit LATEX gearbeitet wird. Ohne Angabe von Daten wird immer vom aktuellen Tagesdatum ausgegangen und der entsprechende Monat für \psCalendar und die entsprechenden Monate für \psCalDodecaeder ausgegeben. Das einzige Problem sind die Feiertage, die bislang noch ausschließlich auf den französischen Vorgaben aufbauen. Die entsprechenden Code-Sequenzen in dem Paket sind jedoch leicht zu erkennen und entsprechend zu ändern. Die Ausgabe eines kompletten Jahres lässt sich mithilfe des \multido-Makros realisieren und ist auf der Seite 792 zu sehen. \psCalendar [Optionen] \psCalDodecaeder [Optionen]

Tabelle 32.18: Zusammenstellung der verfügbaren Optionen für pst-calendar

Name

Wert Vorgabe

Bedeutung

Jahr Monat MonatT

Integer \number\year 1 . . . 12\number\month 1 . . . 12\number\month

Tag style

1 . . . 31\number\day Monat \number\month

betrachtetes Jahr betrachteter Monat Markierung des aktuellen Tages im angegebenen Monat betrachteter Tag vorne liegender Monat beim Dodekaeder

\usepackage{pst-calendar} \psscalebox{0.5}{\psCalendar} \psscalebox{0.5}{\psCalendar[Jahr=2016,Monat=1]} \psscalebox{0.5}{\psCalendar[Jahr=2016,Tag=23,Monat=2,MonatT=2]}

791

ch33-Pakete-pst-optexp.tex: (#303)

herbert

32

Weitere PSTricks-Pakete

May

January

February 32-05-4

T

F

S

S

4

5

6

7

8

10

11

12

13

14

16

17

18

19

20

23

24

25

26

27

30

31

M

T

W

2

3

9

T

W

T

F

S

1

2

4

5

6

7

8

9

15

11

12

13

14

15

16

17

15

16

17

21

22

18

19

20

21

22

23

24

22

23

24

28

29

25

26

27

28

29

30

31

29

M

1

2016

S

W

F

S

T

3

1

2

3

4

5

6

7

10

8

9

10

11

12

13

14

18

19

20

21

25

26

27

28

2016

T

S

M

2016

\usepackage{pst-calendar} \multido{\iR=1+3}{4}{\multido{\iS=\iR+1}{3}{\psCalendar[Jahr=2016,Monat=\iS]}\\}

January M

T

W

T

February

March

F

S

S

M

T

W

T

F

S

S

1

2

3

1

2

3

4

5

6

7

M

32-05-5

T

W

T

F

S

S

1

2

3

4

5

6

4

5

6

7

8

9

10

8

9

10

11

12

13

14

7

8

9

10

11

12

13

11

12

13

14

15

16

17

15

16

17

18

19

20

21

14

15

16

17

18

19

20

18

19

20

21

22

23

24

22

23

24

25

26

27

28

21

22

23

24

25

26

27

25

26

27

28

29

30

31

29

28

29

30

31

S

2016 April M

T

W

T

2016 May F

S

S

1

2

3

M

T

W

T

2016 June F

S

S

M

T

1

W

T

F

S

1

2

3

4

5

4

5

6

7

8

9

10

2

3

4

5

6

7

8

6

7

8

9

10

11

12

11

12

13

14

15

16

17

9

10

11

12

13

14

15

13

14

15

16

17

18

19

18

19

20

21

22

23

24

24

25

26

25

26

27

28

29

30

S

2016 July M

T

4

5

W

6

T

7

16

17

18

19

20

21

22

20

21

22

23

23

24

25

26

27

28

29

27

28

29

30

30

31

2016 August

2016 September

F

S

S

M

T

W

T

F

S

S

1

2

3

1

2

3

4

5

6

7

M

8

9

10

8

9

10

11

12

13

14

5

T

6

W

7

T

F

S

1

2

3

4

8

9

10

11

11

12

13

14

15

16

17

15

16

17

18

19

20

21

12

13

14

15

16

17

18

18

19

20

21

22

23

24

22

23

24

25

26

27

28

19

20

21

22

23

24

25

25

26

27

28

29

30

31

29

30

31

26

27

28

29

30

S

2016 October M

3

T

W

T

F

7

S

S

1

2

8

9

M

7

2016 December

T

W

T

F

S

S

1

2

3

4

5

6

M

8

9

10

11

12

13

5

T

W

T

F

S

1

2

3

4

8

9

10

11

4

5

10

11

12

13

14

15

16

14

15

16

17

18

19

20

12

13

14

15

16

17

18

17

18

19

20

21

22

23

21

22

23

24

25

26

27

19

20

21

22

23

24

25

24

25

26

27

28

29

30

28

29

30

26

27

28

29

30

31

31

6

2016 November

2016

2016

6

7

2016

792

ch33-Pakete-pst-optexp.tex: (#303)

herbert

32.5

Verschiedenes

Eine weitaus ansprechendere Ausgabe ermöglicht \psCalDodecaeder, welcher die Monate auf den Seiten eines Dodekaeders anordnet. Ohne Angabe irgendeines Monates beziehungsweise Jahres wird grundsätzlich vom Januar des aktuellen Jahres ausgegangen. Mit der Option style=Monat kann man jederzeit einen anderen Monat auf die Vorderseite platzieren.

\usepackage{pst-calendar} \psscalebox{0.2}{\psCalDodecaeder}\hfill \psscalebox{0.2}{\psCalDodecaeder[Jahr=2016,Monat=1]}\hfill \psscalebox{0.2}{\psCalDodecaeder[Jahr=2016,style=April]}

M S 3 S 0 2 1

7 1 9 1 6 4 8 1 2 1 W 5 3 3 7 1 2 0 T 4 2 3 6 1 2 9 M 3 21 2 1 5 0 28 12 2

ly F

JuT

3

S

22

15

8

S 1

4 9 27 16 11 1 0 6 2 18 2 5 2

S 6 S

13 20

5 F

27 26

201 6

31

25 30

25

12

20

21

14

7 S

27

20

13

6 F

26

19

12

2 F 3 0 1 7 1 4

2 1 1 S 4

8 5

1 2 1 1

9 6

2

A

M

5

4 6 1

6 3

e

T

19 0 2 0 3 1 9 T 2

n

18

11 2

9

5 2

u J

ay M

3

2 2 1 8 W 1

11

18 17

24

16

23 22

21

4 1

4

Nov em ber T

2 2 8 1 7 T

24

W

3 0

S

S

F

W

10

29

ug T W ust 2 T

1 S

5

4

17

2 T

28

2

3

10

28

S 5

\usepackage{pst-calendar} \psscalebox{0.15}{\psCalDodecaeder[Jahr=2016,style=Februar]}\hfill \psscalebox{0.2}{\psCalDodecaeder[Jahr=2016,style=Maerz]}\hfill \psscalebox{0.24}{\psCalDodecaeder[Jahr=2016,style=Juli]}

32-05-7

2016 26

28

27

21

20

19

13

12

6

5

T

M

14 7 W

29

30 23

22

16

15

9

8

2

1 T

F

31 25

24 17

18

10

11

3

4

S

S

December S

24

25

26

27

27

28

29

30

31

29

2 S

T

3

W S

T M

May

18

26

ust S Aug F 6 7 T 5 W 14 4 T 13 3 M 12 21 2 11 1 20 10 19 28 9

20

19 12

T

S

M

3 S

17

31

24

12

5

2016

29 28

21 20

27

15 14

1 F

7 13

26

10

30

22

3

23

S

16

9 2 S

8

19

25 18

11 4 S

26

2016

27

19

28

20

12

2016

29

21

13

5

30

22

14 6

31

23

15 7

F

Sep tem ber W

T

2

24

10

9

8 1

17

16

15

7

6

5

30 23

22

21 14

13

29

28

27

26

27

ary

T

6 W

28

31

6 201

T

S S F

25

Janu

30

27

l Apri F

4

3

2

17

25

26

10

24

18

25

22

9

16 8

2016

31

23

15

11

24

1

2016

30

22

4

17

23

25

W

29

T

16

22

24

21

T

1

M

15

21

23

26

M

6

2016

14

20

16

20

19

18

17

14

13

12

11

2016

5

29

13

19

31

2016

11

30

12

10

23

29

6 201

11 18

9

22

201 6

17

21 28

2016

30

7

6

5

10

15

16

27

24

10

8

26

31

29

9

7

25

23

8

S

9

8

6

30

28

29

24

22

22

29

27

15

23

25

21

26

8

28

20

20

28

22

19

19

21

18

17

16

21

18

15

14

13

18

14

15

17

12

7

14

15

11

27

8

14

16

14

6

5

4

20

7

7

21 28

13

13

S

6

27

6

12

12

S

13 20

5

11

18

5

19

4

10

17

F

12

26

3

9

3

16

4 11

S

2

2

24

T

18 25

S

W

1 8

7

1

23

10

F

T

7

6

S

15

3

17 24

201 6

T

M

14

5

S

14

9

13 21

4

1

F

13

W

16 23

20 28

T

2

5

2

8

19 27

4

3

4

T

1

15 22

18 26

W

2016

M

12

20

19

25

26

11 19

26

2016

11

10

9

24

20

27

19

18

2

1

23

T

13

25

17 25

M

February

5

13

12

M

31

16

T W

25

17

9 1

2

r embe S SeptT F 3

11

10

11

4

3

F

4 S

T M

1 S

Octo ber W T

30

29

23 16

15

9

8

7

6

22

21 14

13

12 5

28

27 20

19

18

17

18

10

26

25

24

24

16 8

M

24

S

4

6

5

4

26

19

F

W M

July

6

24

23

3

10

S

25

18

12

5

30

22 30

9

3

30

24

11

23

21 29

8

F

W

17

16

23

17

10

S

ust Aug T T

S

30

28

15

S

rch Ma T T

9

8

7

29

16

S

22

27

14

S

M

March

7

28

10

22

15

F 4

29

20

F

T

S

6

3

2

1

W

S

5

S F T

F

4 12

il Apr

ar y

21

S

9

3

21

29

e

T 2

11

14

2

28

W

10

2016

8

20

Jun

T 1

7

9 17

T

3

No vem b T er

W

1

7

2016

M 6 13

16

2

31

27

15 22

W

30

12

T

1 8

Feb ru

29

19

M

24

23

22 28

T

17

16

15 21 27

26

25

10

9

8 14 20

26

18

2

1 7 13 19

M

3

S F

6 12

11

y

T

5 11

18

uar

W

4

25

Jan T M

793

ch33-Pakete-pst-optexp.tex: (#303)

herbert

29

6 201

31

30

22

27

July F

10

9

3

21

T

15

T

9 1 8

M

24

30

8

29

15

23

29

10

16

7

22

9

30

21 28

23

1

23

27

17

8

16

20

16

25

24

26

W

9

19 26

15

16

15

20

19

18

17

14

13

T

2

18 25

14

11

10

9

8

7

12

M

1 6 M

21 14

7

M

13

4

3

2

2 7 2

28

27 20

13

5 2

6

0

6 2

18

26

30

2016

31

19

23

29

12

28

11

28

14

16

22

17

2

16

12

16

19

11

8 2

11

201 6

22

7 2

10

17

4

2 0 2 7

0 2

12

9

24

13

27

26

25

24

8

16

5

M

6

19 2 6

9 2

1 2

13

7

9

21

20

19

1

6

5

2016

15

14

13

12

18

8

7

6

5 11

17

3

6

15

12

2 5

16

6

0

3

2

5

27

S

7

1

0

T S

2 2

1 4

2

1

4

10

3 2

15 14

S 5

18

4 2

16

8

3

17

9

1

7

W

11

2 4 3

F

F 4

S

6

0

2

10

2

l ri p A T

rc h

F

5

T

T

2016

3

M a

3 10 17

W

13

25

3 S W 2

9 16 2 3

T

20

18

S T 1 8 15 2 2

2 9

S

S

F

T

W

2 5

M 7 14 2 1

2 8

October T

M

6

19

31

31

18 26

24

24

30

25

30

23

29

24

23

22

21 28

2016

23 31

M

29

27

30

M

April

31

20

29

S 6

23

19 26

17

15

19 13 7 2 1 e 6 2 Fr 0 1 4 8 2 2 7 2 S 1 1 5 9 2 3 8 2 S 2 1 6 1 0 4 2 9 2 2 3 3 17 11 0 0 2 1 4 18

28

12

5

30

18 25

16

14

201 6 te m T b

11

T

22

13

6

17

10

W

S

4

29

12

S 7

14

21

28

11

S e p W

T 5 12

16

S F T

F

3

14

10

22

15

S

y Ma

T

2

9

21

3

9

25

31

21

8

28

S

2

30

18

W

1

7 14

13

5

4 S

1 8

M

4

11

20

S

24

Ma rch

T

S

3

10

17

S 3

10

2016

19 12

11

3 F

7

S

S 6

13

20

27

6

5

F

23

S

2

9

16

S 2 17

24

31

27

26

18

17 10

June

T

29

8

15

22

30

9

16

23

12

25

24

9 2 T

W

F

5

12

ary

19

26

Fe bru

T 4

11

18

25

16

W

3

10

17

20

24

4

W

28

7

14

21

y

F 8

15

22

29

19

T

M

1

T 2

9

16

23

T

13

20

27

M

uar

1

7

14

21

28

2016

F

1

T 6

13

20

27

4

16

8

7

M

1

8

15

22

29

12 19 26

6

W 5

12

19

26

26

23

15

14

6

5

Jan

T 4 11 18 25

11

30

22

21

13

T

January M

Dec W emb er T

18

2016 29

28

27 20

M

25

32-05-6

2 S

32

Weitere PSTricks-Pakete

32.5.3 psgo – Setzen von Spielsituationen Für das mehr oder weniger bekannte Spiel go können mit diesem Paket von Victor Bos die unterschiedlichsten Spielstellungen erzeugt werden. Die folgende Tabelle zeigt eine Zusammenstellung der Basismakros. Tabelle 32.19: Marker für leere Positionen und für Steine.

Diagramm

A

psgo-Makro

Beschreibung

Beispiel

\markma

Cross

\markpos{markma}{b}{2}

\marktr

Triangle

\markpos{marktr}{b}{2}

\markcr

Circle

\markpos{markcr}{b}{2}

\marksq

Open square

\markpos{marksq}{b}{2}

\marklb{#1}

Label

\markpos{marklb{A}}{b}{2}

\marksl

Filled square

\markpos{marksl}{b}{2}

\markdd

Hatched lines

\markpos{markdd}{b}{2}

\markma

Cross

\stone[markma]{black}{b}{2} \stone[markma]{white}{c}{3}

\marktr

Triangle

\stone[marktr]{black}{b}{2} \stone[marktr]{white}{c}{3}

\markcr

Circle

\stone[markcr]{black}{b}{2} \stone[markcr]{white}{c}{3}

\marksq

Open square

\stone[marksq]{black}{b}{2} \stone[marksq]{white}{c}{3}

Fortsetzung . . .

794

ch33-PaketeTAB6.tex: (#80)

herbert

32.5

. . . Fortsetzung Diagramm psgo-Makro B

Beschreibung

Beispiel

\marklb{#1}

Label

\stone[\marklb{A}]{black}{b}{2} \stone[\marklb{B}]{white}{c}{3}

\marksl

Filled square

\stone[marksl]{black}{b}{2} \stone[marksl]{white}{c}{3}

\markdd

Hatched lines

\stone[markdd]{black}{b}{2} \stone[markdd]{white}{c}{3}

A

A

Verschiedenes

B

C

D

E

F

G

H

\usepackage{psgo}

J

32-05-22 9

4

9

8

8 1

7

7

6

6

5

5

4

4 0

3

3

2

2 3

1 A

B

C

D

E

F

\psscalebox{0.7}{% \begin{psgoboard}[9] \move{c}{3} \move{g}{7} \pass \move{f}{1} \move{a}{9} \end{psgoboard}}

1 G

H

J

Die beiden hier gezeigten Beispiele zeigen zum einen die ersten fünf Züge eines Spiels und zum anderen sieben aufeinander folgende Züge.

6

\usepackage{psgo}

32-05-23 5 4 3 2 1 C

D

E

F

G

H

J

\psscalebox{0.7}{% \begin{psgopartialboard}[9]{(4,1)(9,6)} \stone{white}{c}{3} \stone{white}{e}{3} \stone{white}{d}{2} \stone{white}{d}{4} \stone{black}{f}{3} \stone{black}{e}{2} \stone{black}{e}{4} \end{psgopartialboard}}

795

ch33-Pakete-pst-optexp.tex: (#303)

herbert

32

Weitere PSTricks-Pakete

A

B

C

D

E

F

G

H

\usepackage{psgo}

J

32-05-24 9

9

8

8

7

\psscalebox{0.7}{% \begin{psgoboard}[9] \move*{c}{3} \move*{g}{7} \pass*% \move*{f}{1} \move*{a}{9} \move{f}{6} \move{e}{6} \pass \move{c}{5}% \end{psgoboard}}

7 1

6

0

6

3

5

5

4

4

3

3

2

2

1

1 A

B

C

D

E

F

G

H

J

32.5.4 pst-knot – Knotenlinien Das Paket baut im Wesentlichen auf der PostScript-Datei psm von Matthias T. Kromann auf und stellt zwei Makros zur Verfügung: \psKnot [Optionen] (x,y ){knot type} \psBorromean [Optionen] (x,y ){Außenadius}{Innenradius}

\usepackage{pst-knot} \psset{linewidth=3pt} \begin{pspicture}[showgrid=true](-2,-2)(12,2) \psKnot[linecolor=red](0,0){0-1} \psKnot[linecolor=red](4,0){3-1} \psKnot[linecolor=blue](8,0){4-1} \end{pspicture}

2

32-05-25 1

0

-1

-2 -2

-1

0

1

2

3

4

5

6

7

8

9

10

11

12

\usepackage{pst-knot} \psset{linewidth=3pt} \begin{pspicture}(-2,-2)(8,2) \psKnot[linecolor=blue](0,0){5-1} \end{pspicture}

\psKnot[linecolor=blue](4,0){5-2}

796

ch33-Pakete-pst-optexp.tex: (#303)

herbert

32.5

Verschiedenes

32-05-26

\usepackage{pst-knot} \psset{linewidth=3pt,linecolor=blue} \begin{pspicture}(-2,-2)(10,2) \psKnot(0,0){6-1} \psKnot(4,0){6-2} \end{pspicture}

\psKnot(8,0){6-3}

32-05-27

\usepackage{pst-knot} \psset{linewidth=3pt} \begin{pspicture}(-2,-2)(10,2) \psKnot[linecolor=red](0,0){7-1} \psKnot[linecolor=blue](4,0){7-2} \psKnot[linecolor=green](8,0){7-3} \end{pspicture}

32-05-28

\usepackage{pst-knot} \psset{linewidth=3pt} \begin{pspicture}(-2,-2)(14,2) \psKnot[linecolor=red](0,0){7-4} \psKnot[linecolor=green](4,0){7-5} \psKnot[linecolor=blue](8,0){7-6} \psKnot[linecolor=blue](12,0){7-7} \end{pspicture}

32-05-29

797

ch33-Pakete-pst-optexp.tex: (#303)

herbert

32

Weitere PSTricks-Pakete

Es existieren drei spezielle optionale Argumente für \psKnot: Mit knotscale kann die Ausgabe in x- und in y-Richtung skaliert werden, wobei bei ausschließlich einer Angabe eine symmetrische Skalierung erfolgt. Die Standardvorgabe ist *. \usepackage{pst-knot} 32-05-30

\begin{pspicture}(-4,-4)(4,4) \psKnot[linewidth=5pt,knotscale=2](0,0){6-1} \end{pspicture}

Der Hintergrund kann mit der Option knotbgcolor beeinflusst werden, wobei die üblichen Werte für xcolor möglich sind. Sinnvoll ist eine Hintergrundfarbe prinzipiell nur, um die Knotenkreuzungen in derselben Farbe wie die Knotenlinien zeichnen zu könne. Im folgenden Beispiel wird die Farbe black!20 zugewiesen. \usepackage{pst-knot} 32-05-31

\begin{pspicture}(-2,-2)(6,2) \psframe[fillcolor=black!20, fillstyle=solid](-1.9,-2)(5.9,2) \psKnot[linewidth=5pt,linecolor=red!50](0,0){7-4} \psKnot[linewidth=5pt,linecolor=red!50, knotbgcolor=black!20](4,0){7-4} \end{pspicture}

Die Linienbreite kann wie üblich durch linewidth kontrolliert werden, wohingegen die Randbreite, welche für die Kreuzungen wichtig ist, durch knotborder festgelegt werden kann. Die interne Vorgabe ist 5\pslinewidth. \usepackage{pst-knot} \begin{pspicture}(-2,-2)(6,2) \psset{linewidth=3pt} \psKnot[linecolor=cyan!60](0,0){6-3} \psKnot[linecolor=red!50,knotborder=5\pslinewidth](4,0){6-3} \end{pspicture}

32-05-32

798

ch33-Pakete-pst-optexp.tex: (#303)

herbert

32.5

Verschiedenes

Mit dem Makro \psBorromean können die sogenannten »Borromean rings« erstellt werden. Obligatorisch anzugeben sind dabei die drei Argumente Mittelpunkt, äußerer und innerer Radius. Die Farbe der drei Ringe kann durch eine kommaseparierte Liste an bmcolor übergeben werden, wobei {red,green,blue} vorgegeben sind. \usepackage{pst-knot} \begin{pspicture}[showgrid=true](-2,-3)(10,4) \psBorromean(0,0){1cm}{1cm} \psBorromean[linewidth=8pt,knotborder=2\pslinewidth, bmcolor={blue,yellow,magenta}](6,0){2cm}{1.5cm} \end{pspicture} 4

32-05-33 3

2

1

0

-1

-2

-3 -2

-1

0

1

2

3

4

5

6

7

8

9

10

32.5.5 pst-thick – »Dicke« Linien Das Paket von Manuel Luque und dem Autor erlaubt das Zeichnen von extrem breiten Linien. \usepackage{pst-thick,pst-slpe,pst-text} \begin{pspicture}(0,-0.5)(20,1.5) \psthick[E=1.2,stylethick=rainbow]{1}{19}{\fonctionSinus{10}{1}} \rput(0,0){\pstextpath[c]{\psparametricplot[linestyle=none]{1}{19}% [ /P 10 def % Periode (10 Einheiten) PS-Precode /A 1 def % Amplitude /O 360 P div def ]{ t O t mul sin A mul }}% {\Huge\texttt{\textbf{ Raphael Voß}}: Wasgenstraße in Berlin}} \end{pspicture}

32-05-34

Ra ph a

el

V o ß:

straße in n e Be sg a rlin W 799

ch33-Pakete-pst-optexp.tex: (#303)

herbert

32

Weitere PSTricks-Pakete

\usepackage{pst-thick,pst-grad} \psset{unit=0.5cm} \begin{pspicture}(-1,-2)(20,3) \psthick[stylethick=serpent,E=1.5]{0}{20}{\fonctionSinus{10}{2}} \multido{\i=0+1}{21}{% \pnode(!/t \i\space def /dt 10 360 div def /E 1.5 def \fonctionSinus{10}{2} /ds dx dup mul dy dup mul add sqrt def /dx dx ds div def /dy dy ds div def /nx E 2 div dy mul neg def % normale x /ny E 2 div dx mul def % normale y /x1 x0 nx add def /y1 y0 ny add def x1 y1 ){A} \psdot(A) \pnode(! /x2 x0 nx sub def /y2 y0 ny sub def x2 y2){B} \psdot(B) \psline(A)(B)} \parametricplot[linestyle=dashed]{0}{20}{ t O t mul sin 2 mul } \end{pspicture}

b

b b

b b b b

b

b b

b b

b

b b

b b

b

b

b b

b

b b b

b

b b

b b

b b

b

b b

32-05-35 b

b

b b

b b

b

\usepackage{pst-thick} \begin{pspicture}(-1,-4)(12,4) \psset{E=2} \psthick{-2.5}{12.5}{\fonctionSinus{10}{2}} \psthick[stylethick=thicklineblue]{-2.5}{12.5}{\fonctionSinus{10}{-2}} \psthick[linestyle=none]{2.5}{7.5}{\fonctionSinus{10}{2}} \psthick[curveonly]{2.5}{7.5}{\fonctionSinus{10}{2}} \end{pspicture}

32-05-36

In folgendem Beispiel muss das Argument vom ersten \pnode in geschweifte Klammern gesetzt werden, damit die Klammern von \Kreis nicht \pnode zugeordnet werden.

800

ch33-Pakete-pst-optexp.tex: (#303)

herbert

32.5

Verschiedenes

\usepackage{pst-thick,multido} \def\Kreis(#1,#2)#3{% (x,y){Radius} /xC #1 def /yC #2 def /x0 t cos #3 mul xC add def /y0 t sin #3 mul yC add def /dx t dt add cos #3 mul xC add x0 sub def /dy t dt add sin #3 mul yC add y0 sub def } \begin{pspicture}(-4,-5)(3,5) \psthick[E=1,linewidth=0.1]{45}{315}{\Kreis(-1,-1){3}} \psthick[curveonly]{-45}{45}{\Kreis(-1,-1){3}} \psdot(-1,-1) \pscircle[linestyle=dashed](-1,-1){3} \multido{\i=-45+10}{10}{\pnode(!{ /t \i\space def /dt 1 def \Kreis(-1,-1){3} /E 1 def /ds dx dup mul dy dup mul add sqrt def /dx dx ds div def /dy dy ds div def /nx E 2 div dy mul neg def % normal x /ny E 2 div dx mul def % normal y x0 nx add y0 ny add }){A} \psdot(A) \pnode(! x0 nx sub y0 ny sub ){B} \psdot(B) \psline(A)(B)} \end{pspicture}

32-05-37 b b b b b b b b b b b b b

b b b b b

b b b

\usepackage{pst-thick,pst-node,multido} \begin{pspicture}(-1,-3)(10,3) \psthick[curveonly,E=2,K=45]{0}{10}{\fonctionSinus{10}{2}} \multido{\i=0+1}{11}{% \pnode(! /t \i\space def /E 2 def /K 45 def /dt 10 360 div def \fonctionSinus{10}{2} /ds dx dup mul dy dup mul add sqrt def /dx dx ds div def /dy dy ds div def /dx’ K cos dx mul K sin dy mul sub def /dy’ K sin dx mul K cos dy mul add def /nx E 2 div dy’ mul neg def % normale x /ny E 2 div dx’ mul def % normale y x0 nx add y0 ny add ){A} \psdot[linecolor=red](A) \pnode(! x0 nx sub y0 ny sub ){B}

801

ch33-Pakete-pst-optexp.tex: (#303)

herbert

32

Weitere PSTricks-Pakete

\psdot[linecolor=red](B) \psdot(!t O t mul sin A mul) \psline(A)(B)} \parametricplot[linestyle=dashed]{0}{10}{ t O t mul sin A mul } \psaxes(0,0)(-1,-3)(10,3) \end{pspicture}

3 b

32-05-38 b b

2 b

b b

b b

b b

1 b b

−1

b b

b b

b

−1 −2

2

3

4

5

b b

b

1

6

7

8

9

10

b

b

b

b b b b b

b

b b

b

−3

802

ch33-Pakete-pst-optexp.tex: (#303)

herbert

b

K a p i t e l

33

Spezielles . . . 33.1 Gouraud-Färbung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 803 33.2 Animationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 805

33.1 Gouraud-Färbung Das Gouraud Shading, erstmals 1971 von Henri Gouraud vorgestellt, wird auch als Intensitätsinterpolations-Shading oder Farbinterpolations-Shading bezeichnet. Es ist ein Verfahren um Polygon-Flächen zu schattieren und wird als Scanline-Rendering-Verfahren ausschließlich auf Raster-Ausgabegeräten wie Laserdruckern verwendet. Ab PS-Level3 wird dieses Verfahren unterstützt und entspricht /ShadingType 4. Das folgende Auszug aus pstricks-add.pro zeigt die Realisation des PS-Teils vom Makro \psGTriangle. Hierin sind nur die Zeilen 9–14 interessant, welche das Array der Daten bilden und die Zeilen 16–21, welche die PS-Funktion aufrufen. \psGTriangle [Optionen] (x1 ,y1 )(x2 ,y2 )(x3 ,y3 ){Farbe1}{Farbe2 }{Farbe3 } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

/GTriangle { gsave /mtrx CM def /colorA ED /colorB ED /colorC ED % save the colors /yA ED /xA ED % save the origin xA yA translate rotate % \psk@gangle /yB ED /xB ED /yC ED /xC ED % save other coordinates /ds [ % save data in a array 0 0 0 colorA aload pop % fd x y xr xg xb 0 xB xA sub yB yA sub colorB aload pop 0 xC xA sub yC yA sub colorC aload pop % 1 xC xB add yB colorA aload pop % for use with 4 points ABCD ] def newpath

33

Spezielles . . .

16 17 18 19 20 21 22 23 24

> shfill closepath mtrx setmatrix grestore} def

% single Gouraud

Als einzelne Anwendung ist diese Makro nicht sonderlich interessant, jedoch kann man es zum Einfärben von Flächen benutzen, die als Polygonzug vorliegen und somit leicht in Dreiecke zerlegt werden können. 

Nicht alle Drucker verfügen über PS-Level3, sodass nicht sichergestellt ist, dass ein Ausdruck erfolgreich ist. Gleiches gilt für den PDF-Betrachter xpdf oder ältere acroreadVersionen, die ebenfalls eine derartige Schattierung nicht darstellen können.

\usepackage{pstricks-add} 33-01-1

\psset{unit=0.5} \begin{pspicture}(0,-1)(10,10) \psGTriangle(0,0)(5,10)(10,0)% {red}{green}{blue} \end{pspicture}

\usepackage{pstricks-add} 33-01-2

\psset{unit=0.5} \begin{pspicture}(0,-1)(10,10) \psGTriangle*(0,0)(9,10)(10,3)% {black}{white!50}{red!50!green!95} \end{pspicture}

804

ch33-Spezial.tex: (#177)

herbert

33.2

Animationen

\usepackage{pstricks-add} 33-01-3

\psset{unit=0.5} \begin{pspicture}(0,-1)(10,10) \psGTriangle*(0,0)(5,10)(10,0)% {red!100!green!84!blue!86} {-red!80!green!100!blue!40} {-red!60!green!30!blue!100} \end{pspicture}

\usepackage{pstricks-add} 33-01-4

\psset{unit=0.5} \begin{pspicture}(0,-1)(10,10) \psGTriangle(0,0)(9,10)(10,3)% {black!10}{black!50}{black!85} \psGTriangle(0,0)(3,7)(9,10)% {black!10}{black!65}{black!50} \pspolygon(0,0)(3,7)(9,10)(10,3) \end{pspicture}

33.2 Animationen Es gibt verschiedene Methoden, um eine animierte PDF- oder Flash-Ausgabe zu erreichen. Prinzipiell stellt eine Animation nichts anderes dar, als den zeitlich gesteuerten Ablauf von einzelnen Seiten. Die einfachste Variante ist das Arbeiten mit einer Präsentationsklasse wie beamer oder powerdot (siehe Kapitel 34 auf Seite 811) und einer größeren Abfolge von Folien. Diese können dann per Hand oder bei Verwendung des Adobe Readers automatisch mit einer vorgegebenen Taktrate angezeigt werden, sodass durchaus der Eindruck einer Animation entsteht. Im Allgemeinen wird aufgrund der Vielzahl an Seiten die Dateigröße erheblich anwachsen. Die bekanntesten drei Verfahren werden im Folgenden kurz vorgestellt, wobei die ersten beiden Methoden eine PDF- und die letzte Methode eine .swf-Datei liefert.

33.2.1 animate Eine gute Variante stellt die Anwendung des Paketes animate von Alexander Grahn dar. Es erlaubt auf relativ einfache Weise das schnelle Ablaufen von Bildsequenzen bei automatischer Einblendung von Button für Start/Stop u. a. Bei der Anwendung

805

ch33-Spezial.tex: (#177)

herbert

33

Spezielles . . .

von PSTricks generierten Animationen wird man in der Regel auf die so genannte Inline-Darstellung zurückgreifen: \begin{animateinline} [Optionen] {Bildrate} \multiframe{Anzahl }{Variablen+Schrittweite}{%

. . . Schleife . . . } \end{animateinline}

Hier ist das \multiframe-Makro vorzuziehen, da es mit dem bei PSTricks sonst üblichen Makro \multido Probleme geben kann. Die Bildrate gibt die mittlere Geschwindigkeit in Bildern je Sekunde vor, die später über die automatisch erzeugten Button verändert werden kann. Die folgende Abbildung entsteht, wenn statt \multiframe die \multido benutzt wird; dann werden alle Teilbilder übereinandergelegt.

33-02-1 7 6 5 4 3 2 1 0 0

1

2

3

4

5

6

7

8

9

10

11

12

13

Die nächste Abbildung verwendet jetzt \multiframe, sodass ein Snapshot zu einer bestimmten Zeit auch nur die aktuelle Position der drei Bälle zeigt. \usepackage{pst-plot,pst-slpe,animate} \newcounter{time}\newpsstyle{magenta40}{fillstyle=solid,fillcolor=magenta!40} \newpsstyle{blue40}{fillstyle=solid,fillcolor=blue!60} \newpsstyle{Blackball}{fillstyle=ccslope,slopebegin=white,slopeend=black, slopecenter={0.6 0.6}} \newpsstyle{Blueball}{fillstyle=ccslope,slopebegin=white,slopeend=blue, slopecenter={0.6 0.6}} \newpsstyle{Redball}{fillstyle=ccslope,slopebegin=white,slopeend=red, slopecenter={0.6 0.6}} % inclined plane \newcommand*\VAngle{45 }% starting angle \newcommand*\VStart{10 }% starting speed in angle direction

806

ch33-Spezial.tex: (#177)

herbert

33.2

Animationen

\newcommand*\VHeight{2 }% starting height \def\Vx{\VStart \VAngle cos mul } \def\Vy{\VStart \VAngle sin mul } \newcommand*\rBall{0.25 }\newcommand*\mass{1 } \def\SvonT#1{ % way as function of time, returns x y \Vx #1 mul \Vy #1 mul % Sx Sy \VHeight add 0.5 9.81 mul #1 dup mul mul sub } \def\OneShot#1{ \psaxes{->}(14,8)\psline[linestyle=dashed](0,\VHeight)(14,\VHeight) \rput(0,\VHeight){\psline[arrowscale=2]{->}(\VStart mm;\VAngle)} \pscircle[style=Blackball](! \SvonT{#1} ){\rBall} \def\VAngle{60 } \rput(0,\VHeight){\psline[arrowscale=2,linecolor=blue]{->}(\VStart mm;\VAngle)} \pscircle[style=Blueball](! \SvonT{#1} ){\rBall}\def\VAngle{75 } \rput(0,\VHeight){\psline[arrowscale=2,linecolor=red]{->}(\VStart mm;\VAngle)} \pscircle[style=Redball](! \SvonT{#1} ){\rBall}} \begin{animateinline}[% width=0.9\linewidth,begin={\begin{pspicture}(-1.75,-1.25)(14.5,8.5)}, end={\end{pspicture}},palindrome,controls,autoplay]{10} \multiframe{49}{nTime=0.0+1.0}{% \OneShot{ \nTime\space 20 div }}% \end{animateinline}

33-02-2

807

ch33-Spezial.tex: (#177)

herbert

33

Spezielles . . .

33.2.2 Das AcroTEX Presentation Bundle Jürgen Gilg hat in [21] gezeigt, wie man mit den Paketen dex AcroTEX-Projektes von Don Paul Story PDF-Animationen erreichen kann. Grundlage ist das auf CTAN1 frei  verfügbare Paket aeb_pro, welches zusammen mit dem kommerziellen Adobe Distiller (mindestens Version 7.0) aus der PostScript-Datei eine animierte PDF erzeugen kann. Der Einsatz von GhostScript im Zusammenhang mit dem aeb_pro-Paket ist hier nicht möglich.

\usepackage[ driver=dvips, web={pro}, % die Layout-Stildatei von AeB eforms, % supports the formfields (push buttons) uselayers]{aeb_pro} \usepackage{pst-3dplot,pstricks-add} \usepackage[nomessages]{fp} \DeclareAnime{graph}{10}{37}%Aufruf der Animation \newcommand*{\voc}{% \animeBld \definecolor{APBoceanblue}{rgb}{0.00,0.20,0.74} \definecolor{APBcoldblue}{rgb}{0.00,0.48,0.73} %Betrachtungswinkel,Linienstärke,Linienfarbe,Ursprung \psset{Beta=20,Alpha=50,linewidth=0.1pt,linecolor=APBcoldblue,origin={0,0,0}}% %zu animierende Figur \parametricplotThreeD[xPlotpoints=100](80,\bi)(0,360){% t cos 2 mul 4 u sin 2 mul add mul t sin 2 mul 4 u sin 2 mul add mul u cos 4 mul} \parametricplotThreeD[yPlotpoints=75](0,360)(80,\bi){% u cos 2 mul 4 t sin 2 mul add mul u sin 2 mul 4 t sin 2 mul add mul t cos 4 mul} \parametricplotThreeD[yPlotpoints=1,linecolor=APBoceanblue, linewidth=2pt](0,360)(80,360){ u cos 2 mul 4 t sin 2 mul add mul u sin 2 mul 4 t sin 2 mul add mul t cos 4 mul }% \eBld}%Ende der zu animierenden Objekte \psset{unit=0.35}% \begin{pspicture}(-2,-8)(2,8) \FPdiv{\myDeltaB}{280}{36}\newcommand*{\bi}{80}% \multido{\i=1+1}{37}{\voc\FPadd{\bi}{\bi}{\myDeltaB}}% Ebenen hintereinander legen \end{pspicture} \backAnimeBtn{24bp}{12bp}\kern1bp% Knöpfe \clearAnimeBtn{24bp}{12bp}\kern1bp% \forwardAnimeBtn{24bp}{12bp} 1 Aktuelle Versionen findet man unter http://www.math.uakron.edu/~dpstory/webeq.html/ oder http://acrotex.net/.

808

ch33-Spezial.tex: (#177)

herbert

33.2

Animationen

33-02-3

Å

n

Æ

33.2.3 Flashanimationen Speziell für die Betrachtung mit einem WEB-Browser bietet sich eine Flashanimation an. Dazu wird eine PDF-Datei erstellt, die pro Seite eine Bildsequenz enthält, was relativ einfach mit dem Makro \multido möglich ist. Die folgende TEX-Datei ist Grundlage für das Beispiel. Hier findet sich jedoch nur die erste Seite der PDF-Datei. \usepackage{pst-solides3d,multido} \psset{lightsrc=75 -63 17,viewpoint=100 -45 10 rtp2xyz,Decran=50,fontsize=50} \multido{\iRotZ=0+10}{36}{% \begin{center} \begin{pspicture*}(-5,-3)(5,4) \psframe(-5,-3)(5,4)\pstVerb{/iRotZ \iRotZ\space def}% \psSolid[object=grille,base=-7 7 -7 7,ngrid=1. 1.,action=draw,linecolor=red](0,0,-3.4) \defFunction[algebraic]{helix}(u,v)% {2*(0.4*cos(v)-1)*cos(u)}{2*(0.4*cos(v)-1)*sin(u)}{0.4*sin(v)+0.3*u} \codejps{ /helice -10 10 0 6.28 [60 0.4] {helix} newsurfaceparametree {0 0 iRotZ rotateOpoint3d} solidtransform {0 -4 0 translatepoint3d} solidtransform dup solidfacesreverse def /helicesym helice dupsolid exch pop {[0 1 0 0] symplan3d} solidtransform dup solidfacesreverse def /solidgrid false def solidlightOn helicesym dup [0 1 0.5 1] solidputhuecolors dup (White) inputcolors drawsolid** .5 setfillopacity [0 1 0 0] eq2plan dup [-7 7 -5 3.4] planputrange dup [14. 8.4] planputngrid newplan

809

ch33-Spezial.tex: (#177)

herbert

33

Spezielles . . .

dup videsolid dup (0.7 0.7 1 setrgbcolor) (0.7 0.7 1 setrgbcolor) inoutputcolors drawsolid** helice dup [0 1 0.5 1] solidputhuecolors dup (White) inputcolors drawsolid** } \end{pspicture*} \end{center}\newpage}

33-02-4

Mithilfe des Perl-Programms popip.pl (http://syracuse-dev.org/svn/syracuse/ trunk/popip) werden die einzelnen Seiten der PDF-Datei in entsprechende .pngDateien gewandelt. popip -T -f 1.5 -b 10 helice.pdf

Das Skript erstellt ein Unterverzeichnis helice, in das sämtliche .png-Dateien gespeichert werden. Für dieses Beispiel sind es genau 36, von helice/image001.png bis helice/image036.png, was genau der Schleifenanzahl des Beispiels entspricht. Je nach der Komplexität der Abbildung kann es sehr lange dauern, bis die einzelnen PDF-Seiten extrahiert werden können. Die einzelnen .png-Abbildungen werden nun mit dem Programm png2swf (http://www.swftools.org/) in eine Flashdatei gewandelt. png2swf -r 9 helice/image*.png -o helice.swf

Das Ergebnis kann unter http://perce.de/PSTricks/helice.swf betrachtet werden.

810

ch33-Spezial.tex: (#177)

herbert

K a p i t e l

34

PSTricks in Präsentationen 34.1 beamer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 811 34.2 powerdot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813

Die vielfältigen Möglichkeiten von PSTricks sollen natürlich auch in Präsentationen angewendet werden können. Mit den Dokumentenklassen powerdot (von Hendri Adriaens und Christopher Ellison) und beamer (von Till Tantau), sind Präsentationen möglich, die heutigen Ansprüchen an Professionalität genügen. Grundsätzlich kann PSTricksspezifischer Code in allen Präsentationsklassen verwendet werden. Wie üblich entfällt dabei die direkte Anwendung von pdfLATEX. Wie man dennoch eine entsprechende PDF-Ausgabe erhält, wird ausführlich im Anhang D auf Seite 897 erläutert.

34.1 beamer Im Gegensatz zu powerdot bietet die beamer-Klasse keinerlei besondere Unterstützung für PSTricks, da es selbst vorrangig für die Arbeit unter pdfTEX von Till Tantau entwickelt wurde. Der Weg über latex→dvips→ps2pdf oder xelatex ist auch mit beamer möglich. beamer hat eine geradezu unzählige Anzahl an Möglichkeiten, was nicht notwendigerweise zur Übersichtlichkeit beiträgt. Der Aufbau der einzelnen Folien ist prinzipiell identisch zu powerdot. Eine kurze Einführung in die Handhabung der einzelnen Makros findet man in [28] und eine längere in [78].

\documentclass[xcolor=table,slidestop, smaller, compress, hyperref={bookmarks=true,colorlinks}]{beamer} \frame[plain]{\setbeamercolor{bodyCol}{fg=white, bg=blue!30}\titlepage} \begin{frame}{Bibliografie}{Externe Lösung -- \BibTeX} \includegraphics[scale=0.75]{images/bibtex-howitworks} \end{frame} \begin{frame}{Bibliografie}{Externe Lösung -- \texttt{biblatex}}

34

PSTricks in Präsentationen

\includegraphics[scale=0.75]{images/biblatex-howitworks} \end{frame}

Bibliografie

Bibliografie

Externe Lösung – BIBTEX

LATEX and Bibliographies — the 5th session

34-01-1

Externe Lösung – biblatex

Quelltext

Bib-Data

.tex

.bib

Bib-Stil

Quelltext

.bst

biblatex

.sty

.tex

pdflatex

Bib-Data

.bst .bib

pdfLATEX

.aux Logdatei

bibtex b

biblatex

b

.aux

BibTEX

.log

Logdatei

.blg

Herbert Voß

.bbl

.bbl

pdflatex pdfLAT

May 14, 2016

EX

.aux

.aux

pdflatex

Logdatei

pdfLATEX

.log

Logdatei .log

.pdf

.pdf

PDF-Datei

PDF-Datei

\documentclass[ ngerman,xcolor=table, slidestop, smaller, compress, hyperref={bookmarks=true,colorlinks} ]{beamer} \begin{frame} \frametitle{\texttt{pst-3dplot}} \begin{pspicture}(-4.5,-6.5)(3,3.25) \transduration{2.5} \psset{Alpha=45,Beta=30,linestyle=dashed,unit=0.8cm} \visible{\pstThreeDCoor[linestyle=solid,xMin=-5,xMax=5,yMin=-4, yMax=5,zMax=5,IIIDticks]} \visible{\pstThreeDEllipse[linecolor=red](0,0,0)(0,\radius,0)(0,0,\radius)} \multido{\iA=15+15,\iB=3+1}{5}{% \visible{\pstThreeDEllipse(\radius \iA\space sin mul,0,0)% (0,\radius \iA\space cos mul,0)(0,0,\radius \iA\space cos mul)}} \visible{\pstThreeDEllipse[linestyle=dotted, SphericalCoor](0,0,0)(\radius,90,\PhiI)(\radius,0,0)} \visible{\pstThreeDEllipse[SphericalCoor, beginAngle=-90,endAngle=90](0,0,0)(\radius,90,\PhiI)(\radius,0,0)} \visible{\pstThreeDEllipse[linestyle=dotted, SphericalCoor](0,0,0)(\radius,90,\PhiII)(\radius,0,0)} \visible{\pstThreeDEllipse[SphericalCoor, beginAngle=-90,endAngle=90](0,0,0)(\radius,90,\PhiII)(\radius,0,0)} \visible{\pscustom[fillstyle=solid,fillcolor=blue]{% \pstThreeDEllipse[SphericalCoor,beginAngle=\PhiI,endAngle=\PhiII]% (0,0,0)(\radius,90,\PhiII)(\radius,0,0) \pstThreeDEllipse[beginAngle=\PhiII, endAngle=\PhiI](\RadIIs,0,0)(0,\RadIIc,0)(0,0,\RadIIc) \pstThreeDEllipse[SphericalCoor,beginAngle=\PhiII,endAngle=\PhiI]% (0,0,0)(\radius,90,\PhiI)(\radius,0,0) \pstThreeDEllipse[beginAngle=\PhiI, endAngle=\PhiII](\RadIs,0,0)(0,\RadIc,0)(0,0,\RadIc)}} \end{pspicture} \end{frame}

812

ch35-Folien.tex: (#318)

herbert

34.2 powerdot

pst-3dplot

pst-3dplot z

pst-3dplot z

Herbert Voß

Herbert Voß

y

x

May 14, 2016

y

x

1/1

May 14, 2016

pst-3dplot

1/1

z

z Herbert Voß

y

y

x

1/1

May 14, 2016

pst-3dplot

1/1

z

May 14, 2016

1/1

pst-3dplot z

z

Herbert Voß

Herbert Voß

y

x

1/1

y

x

pst-3dplot

Herbert Voß

May 14, 2016

1/1

z

May 14, 2016

x

May 14, 2016

pst-3dplot

Herbert Voß

x

y

x

pst-3dplot

Herbert Voß

34-01-2

z

Herbert Voß

y

May 14, 2016

x

1/1

May 14, 2016

y

1/1

34.2 powerdot Der allgemeine Aufbau einer Präsentation unter powerdot ist prinzipiell identisch zu einem normalen Dokument:

\documentclass{powerdot} \maketitle \begin{slide}{A slide} contents of the first slide \end{slide} \section{First section} \begin{slide}{One more slide} contents of the second slide \end{slide} \begin{note}{Personal note} The text of the node. \end{note}

813

ch35-Folien.tex: (#318)

herbert

34

PSTricks in Präsentationen

A slide

One more slide

34-02-1 A slide First section

contents of the first slide

A slide First section One more slide

contents of the second slide

PSTricks for TEX and LATEX Herbert Voß May 14, 2016

2/4

1/4

Dieses Standardlayout wird man in der Regel nicht benutzen wollen, sondern auf einen der mit dem Paket mitgelieferten Stile zurückgreifen. Eine Liste kann man der Dokumentation zum Paket [17] oder [78] entnehmen. Die meisten dieser Stildateien definieren nur die Farbumgebung, einige weitere Dinge wie Fuß- und Kopfzeilen. Das folgende Beispiel zeigt die Anwendung der verschiedenen \onslide Makros, sowie der Notation für anzuzeigende Overlays. Die nächsten vier Abbildungen verwenden die Makros \item und \onslide, um einzelne Teile einer Gleichung auch durch Knotenverbindungen hervorzuheben. Zu sehen sind von der ersten Folie das erste, zweite, vierte und letzte Overlay. Der Aufbau ist relativ einfach: \documentclass[ paper=screen,mode=present,display=slidesnotes, style=ciment,nopagebreaks, fleqn,ngerman ]{powerdot} \begin{wideslide}{Node example} The bindung energy in the droplet model consits of the following parts: \begin{itemize}[type=0] \item the \rnode{b}{surface part,} \item the \rnode{a}{volume part,} \item[]% only dummy \end{itemize} \[E = \onslide{2-}{\rnode[t]{ae}{\psframebox*[fillcolor=darkyellow]{\xstrut a_vA}}+} \onslide{3-}{\rnode[t]{be}{% \psframebox*[fillcolor=lightgray]{\xstrut-a_fA^{2/3}}}+} \onslide{4-}{\rnode[t]{ce}{\psframebox*[fillcolor=green]{% \xstrut-a_c\frac{Z(Z-1)}{A^{1/3}}}}+} \onslide{5-}{\rnode[t]{de}{\psframebox*[fillcolor=cyan]{% \xstrut-a_s\frac{(A-2Z)^2}{A}}}+} \onslide{6-}{\rnode[t]{ee}{\psframebox*[fillcolor=yellow]{\xstrut E_p}}} \] \medskip \psset{linecolor=darkgray,linewidth=0.5pt,linestyle=solid} \begin{itemize}[type=0] \item the \rnode{c}{Coulomb part,} \item the \rnode{d}{symmetry energy,} \item and a \rnode{e}{pair building part.}

814

ch35-Folien.tex: (#318)

herbert

4/4

34.2 powerdot

\end{itemize} \onslide*{2-}{\nccurve[linecolor=darkyellow,angleA=-90,angleB=90]{->}{a}{ae}} \onslide*{3-}{\nccurve[linecolor=lightgray,angleB=45]{->}{b}{be}} \onslide*{4-}{\nccurve[linecolor=green,angleB=-90]{->}{c}{ce}} \onslide*{5-}{\nccurve[linecolor=cyan,angleB=-90]{->}{d}{de}} \onslide*{6-}{\nccurve[linecolor=yellow,angleB=-90]{->}{e}{ee}} \end{wideslide}

Node example

34-02-2

Node example

The bindung energy in the droplet model consits of the following parts:

The bindung energy in the droplet model consits of the following parts: ■

E=

the volume part, E = av A +

Berlin – 1 / 1

Berlin – 1 / 1

Node example

Node example

The bindung energy in the droplet model consits of the following parts: ■ ■

The bindung energy in the droplet model consits of the following parts:

the surface part, the volume part,

■ ■

E = av A + − af A2/3 +

the surface part, the volume part, E = av A + − af A2/3 + − ac



Z(Z−1) A1/3

+

the Coulomb part,

Berlin – 1 / 1

Berlin – 1 / 1

Node example

Node example

The bindung energy in the droplet model consits of the following parts: ■ ■

E = av A + − af A2/3 + − ac ■ ■

The bindung energy in the droplet model consits of the following parts:

the surface part, the volume part,

■ ■ Z(Z−1) A1/3

+ − as

(A−2Z)2 A

the surface part, the volume part, E = av A + − af A2/3 + − ac

+

the Coulomb part, the symmetry energy,

■ ■ ■

Z(Z−1) A1/3

+ − as

(A−2Z)2 A

+ Ep

the Coulomb part, the symmetry energy, and a pair building part.

Berlin – 1 / 1

Berlin – 1 / 1

815

ch35-Folien.tex: (#318)

herbert

K a p i t e l

35

Beispiele

Die im folgenden willkürlich ausgewählten Beispiele sollen nur einen allgemeinen Überblick über das geben, was unter anderem bei Einsatz von Farbe möglich ist.[54] Aus rein drucktechnischen Gründen erscheinen sie bereits an dieser Stelle. Weitere Beispiele findet man zum einen auf der offiziellen Homepage http://PSTricks.tug.org oder auf den sehr umfangreichen privaten Seiten von http://melusine.eu.org/syracuse/ pstricks/. Der Quellcode zu den Beispielen steht wie üblich zum allgemeinen Download bereit: CTAN: /info/examples/PSTricks_7_de. Die Dateinamen beziehen sich dabei auf die in den Abbildungsunterschriften angegebenen und stellen jeweils eigenständige TEXDateien dar, die man mit latex, xelatex oder vlatex bearbeiten kann. Die ebenfalls vorhandenen PDF-Dateien wurden in der Regel mit ps2pdf oder xelatex erzeugt.

35-00-1

Σ Σ Σ Σ Σ ρ ιχ σ Π T ρ χ κ Π Σ ρ ιχ κ σ Σ T ρ ιχ σ Π T ρ χ κ Π Σ ρ ιχ κ σ σ Σ T ιχ κ Σ T ιχ κ Π T ρ κ σ Σ T ιχ κ Π T ρ κ σ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ι χ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ι χ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ Π Π T χκ Π Σ ρ ι Σ ρι T σ Π χ T ρ χ ρ ρ κσ κ Σ ι Π Σ ι σ χ T χ κ Σ ι σ Π ι T σ χ T ρ T ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ T ιχ κ Π T ρ κ σ χ σ Π T ρ χκ Π Σ ρ ι κσ ρ κσ Σ ρ ιχ σ Π Σ T ιχ κ Π Σ T ρ ι κ σ Σ ι Σ Σ ρ Π T σ Π Σ ι χ σ Π χ T ρ ρ κ κ κ Σ ι Π Σ ι σ Π ιχ T σ χ T ρ κ ρ Σ ιχ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ι χ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ χ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ι σ Π Σ ι T σ Π χ T σ ρ χ ρ κ ρ κ Σ Π Σ ι σ Π Σ ι χ T σ χ T ρ Σ ρι Π T Σ ρι T χκ Π Π Tρ κ T χκ Π T χκ Π ρ κσ κ ρ κσ Σ ιχ σ Σ ιχ σ Π Σ T ρ ι χ κ σ Π Σ T ρ ιχ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ι χ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ι χ κ σ Π Σ T κ Π Σ T ρ ι χ κ σ Π Σ T ρ ιχ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ι χ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ι χ κ σ Π Σ κ Π Σ T ρ ι χ κ σ Π Σ T ρ ιχ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ι χ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ι χ κ σ Π Σ Σ ρι Π T Σ ρι Π T Σ ρι T χ T χκ Π ρ κσ κ ρ κσ κ Σ ιχ σ Π Σ ιχ σ σ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ι χ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ι χ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π T Σ ι σ Π T Σ ι T χ σ Π T ρ κ ρ κ κ Σ ιχ Π Σ ιχ σ Π σ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ι χ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ χ T ρ κ ρ κ Σ ι σ Π Σ ι T σ Π χ T σ ρ ρ κ κ κ Σ Π Σ ι σ Π Σ ιχ χ T σ χ T ρ κ ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ι χ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ι χ κ σ Π Σ T ρ ιχ κ σ Π κ Σ ι Π Σ ι T σ Π χ T σ χ ρ κ ρ κ Σ ι σ Π Σ ι χ T σ Π χ T ρ Σ ρι Π T Σ ρι Π Tρ κ T χκ Π T ρ κσ T χκ Π T ρ κσ κ Σ ιχ Σ ιχ σ ρ ιχ κ σ Σ ρ ιχ σ Π Σ T ρ ιχ κ σ Π Σ ρ ιχ κ σ Π Σ T Σ ρ ιχ σ Π T ρ χ κ σ Π Σ ρ ιχ κ σ Π Σ T ιχ κ Π Σ T ρ ι κ σ ΠΣ T ρι κσ ιχ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ι χ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ χ κ σ Π Σ T ρ ιχ κ σ Π ι T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ι χ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ ιχ κ σ Π Σ T ρ χ κ σ Π Σ T ρ ιχ Σ ι Π ι T σ Π T σ ρ κ Π ρ κ ΠΣ ιχ Π ιχ Π

Abbildung 35.1: PSTricks mit dem Symbol-Font.

35

Beispiele

z

z

35-00-2

y

x

y

x

Abbildung 35.2: Kegelschnitte (pst-solides3d). Rs I s 2

35-00-3

GFe Es2

RR I r 2 attr

Pe Ptr =

ω C n e

ωm C n e

Pu

Abbildung 35.3: Energiediagramm eines Asynchronmotors.

35-00-4

z

y

x

Abbildung 35.4: 3D→2D-Projektionen (pst-solides3d).

818

ch50-Beispiele.tex: (#326)

herbert

Beispiele

name

35-00-5

cmyk

color

name

cmyk

GreenYellow

0.15,0,0.69,0

RoyalPurple

0.75,0.90,0,0

Yellow

0,0,1,0

BlueViolet

0.86,0.91,0,0.04

Goldenrod

0,0.10,0.84,0

Periwinkle

0.57,0.55,0,0

Dandelion

0,0.29,0.84,0

CadetBlue

0.62,0.57,0.23,0

Apricot

0,0.32,0.52,0

CornflowerBlue 0.65,0.13,0,0

Peach

0,0.50,0.70,0

MidnightBlue

0.98,0.13,0,0.43

Melon

0,0.46,0.50

NavyBlue

0.94,0.54,0,0

YellowOrange

0,0.42,1,0

RoyalBlue

1,0.50,0,0

Orange

0,0.61,0.87,0

Blue

1,1,0,0

BurntOrange

0,0.51,1,0

Cerulean

0.94,0.11,0,0

Bittersweet

0,0.75,1,0.24

Cyan

1,0,0,0

RedOrange

0,0.77,0.87,0

ProcessBlue

0.96,0,0,0

Mahogany

0,0.85,0.87,0.35

SkyBlue

0.62,0,0.12,0

Maroon

0,0.87,0.68,0.32

Turquoise

0.85,0,0.20,0

BrickRed

0,0.89,0.94,0.28

TealBlue

0.86,0,0.34,0.02

Red

0,1,1,0

Aquamarine

0.82,0,0.30,0

OrangeRed

0,1,0.50,0

BlueGreen

0.85,0,0.33,0

RubineRed

0,1,0.13,0

Emerald

1,0,0.50,0

WildStrawberry 0,0.96,0.39,0

JungleGreen

0.99,0,0.52,0

Salmon

0,0.53,0.38,0

SeaGreen

0.69,0,0.50,0

CarnationPink

0,0.63,0,0

Green

1,0,1,0

Magenta

0,1,0,0

ForestGreen

0.91,0,0.88,0.12

VioletRed

0,0.81,0,0

PineGreen

0.92,0,0.59,0.25

Rhodamine

0,0.82,0,0

LimeGreen

0.50,0,1,0

Mulberry

0.34,0.90,0,0.02

YellowGreen

0.44,0,0.74,0

RedViolet

0.07,0.90,0,0.34

SpringGreen

0.26,0,0.76,0

Fuchsia

0.47,0.91,0,0.08

OliveGreen

0.64,0,0.95,0.40

Lavender

0,0.48,0,0

RawSienna

0,0.72,1,0.45

Thistle

0.12,0.59,0,0

Sepia

0,0.83,1,0.70

Orchid

0.32,0.64,0,0

Brown

0,0.81,1,0.60

DarkOrchid

0.40,0.80,0.20,0

Tan

0.14,0.42,0.56,0

Purple

0.45,0.86,0,0

Gray

0,0,0,0.50

Plum

0.50,1,0,0

Black

0,0,0,1

Violet

0.79,0.88,0,0

White

0,0,0,0

color

Abbildung 35.5: Die vordefinierten Farben von dvips, die mit dem Laden von pstricks mit der Option dvipsnames zur Verfügung stehen.

819

ch50-Beispiele.tex: (#326)

herbert

35

Beispiele

AliceBlue

AntiqueWhite

Aqua

Aquamarine

Azure

Beige

Bisque

Black

BlanchedAlmond

Blue

BlueViolet

Brown

BurlyWood

CadetBlue

Chartreuse

Chocolate

Coral

CornflowerBlue

Cornsilk

Crimson

Cyan

DarkBlue

DarkCyan

DarkGoldenrod

DarkGray

DarkGreen

DarkGrey

DarkKhaki

DarkMagenta

DarkOliveGreen

DarkOrange

DarkOrchid

DarkRed

DarkSalmon

DarkSeaGreen

DarkSlateBlue

DarkSlateGray

DarkSlateGrey

DarkTurquoise

DarkViolet

DeepPink

DeepSkyBlue

DimGray

DimGrey

DodgerBlue

FireBrick

FloralWhite

ForestGreen

Fuchsia

Gainsboro

GhostWhite

Gold

Goldenrod

Gray

Grey

Green

GreenYellow

Honeydew

HotPink

IndianRed

Indigo

Ivory

Khaki

Lavender

LavenderBlush

LawnGreen

LemonChiffon

LightBlue

LightCoral

LightCyan

LightGoldenrodYellow

LightGray

LightGreen

LightGrey

LightPink

LightSalmon

LightSeaGreen

LightSkyBlue

LightSlateGray

LightSlateGrey

LightSteelBlue

LightYellow

Lime

LimeGreen

Linen

Magenta

Maroon

MediumAquamarine

MediumBlue

MediumOrchid

MediumPurple

MediumSeaGreen

MediumSlateBlue

MediumSpringGreen

MediumTurquoise

MediumVioletRed

MidnightBlue

MintCream

MistyRose

Moccasin

NavajoWhite

Navy

OldLace

Olive

OliveDrab

Orange

OrangeRed

Orchid

PaleGoldenrod

PaleGreen

PaleTurquoise

PaleVioletRed

PapayaWhip

PeachPuff

Peru

Pink

Plum

PowderBlue

Purple

Red

RosyBrown

RoyalBlue

SaddleBrown

Salmon

SandyBrown

SeaGreen

Seashell

Sienna

Silver

SkyBlue

SlateBlue

SlateGray

SlateGrey

Snow

SpringGreen

SteelBlue

Tan

Teal

Thistle

Tomato

Turquoise

Violet

Wheat

White

WhiteSmoke

Yellow

YellowGreen

Abbildung 35.6: Die vordefinierten Farben von xcolor, die mit dem Laden von pstricks mit der Option svgnames zur Verfügung stehen.

820

ch50-Beispiele.tex: (#326)

herbert

35-00-6

ch50-Beispiele.tex: (#326)

herbert

Religion

name

Ethnic Grp

name

Language

name

percent

believe

percent

belong

speak

area gov.

pop.

percent

area

of

name

gdp.agr

pop.

length A borders B

is_capital

gdp.serv

gdp

name

Continent

encompasses

has_hq_in establ.

name

type

gdp.ind

infl.

Country

code

is_member

pop.grw

governm.

inf.mort

percent

Organization

name

abbrev

area

Province

is_capital

City

name

in

latitude

longitude

pop.

in

in

in

in

in

in

at

at

at

name

depth

length

area

Desert

name

geo coord

Island

name

geo coord

Mountain

B A merges

Sea

River

name

Lake

area

latitude

longitude

islands

latitude

longitude

height

name

main flows into trib.

name

Beispiele

35-00-7

Abbildung 35.7: Umfangreiches Beispiel für pst-dbicons (Wolfgang May)

821

35

Beispiele

35-00-8

0.4

0.2

−3

−2

−1

1

2

3

Abbildung 35.8: Anwendung von pst-math.

Text

Parameter

XSUS_G XPR_U1 XPR_U2

-.-.-.-.-.-.-.-.-.-...--..--..--..--..--. ....----....----....-

Result

35-00-9

Abbildung 35.9: Definition spezieller Makros.

Warum ist die Natur so nahezu symmetrisch? Niemand hat eine Idee, warum. Das einzige, was wir vorschlagen könnten, ist etwas wie dies: Es gibt ein Tor in Japan, ein Tor in Neiko, das die Japaner manchmal das schönste Tor in ganz Japan nennen; es wurde zu einer Zeit gebaut, als die chinesische Kunst großen Einfluss hatte. Dies Tor ist sehr kunstvoll gearbeitet mit zahlreichen Giebeln und schönen Schnitzereien und vielen Säulen und Drachenköpfen und Fürsten, die in die Säulen eingemeißelt sind, usw. Aber wenn man genau hinschaut, sieht man, dass in dem kunstvollen und komplizierten Muster entlang einer der Säulen eines der kleinen Musterelemente kopfüber gemeißelt ist; sonst ist alles vollständig symmetrisch. Wenn man danach fragt, warum dies so ist, ist die Erklärung, dass es kopfüber gemeißelt worden ist, damit die Götter auf die Vollkommenheit des Menschen nicht eifersüchtig sind. So machten sie absichtlich einen Fehler, damit die Götter nicht eifersüchtig und auf die Menschen zornig sein würden. Wir könnten den Gedanken umdrehen und daran denken, dass die wahre Erklärung der näherungsweisen Symmetrie der Natur diese ist: Gott machte die Gesetze nur ungefähr symmetrisch, damit wir nicht auf seine Vollkommenheit eifersüchtig sind!

Richard Feynman

Abbildung 35.10: Anwendung von \rput, \pscircle, \psarc (nach einer Idee von Thomas Siegel).

822

ch50-Beispiele.tex: (#326)

herbert

35-00-10

Beispiele

35-00-11

~ r

~ F Abbildung 35.11: Anwendung von \rput, \pscircle, \psarc, \psellipticarc.

1 35-00-12

First line. Second line.

First line. 0 Second line. 0 1 2

First line. First line. Second line. Second line.

3

First line. Second line.

First line. Second line. First line. Second line. First line. Second line.

First line. Second line.

First line. Second line.

Abbildung 35.12: Verbatim in verschiedenen Boxen (Denis Girou)

35-00-13

Abbildung 35.13: Verdeckte Flächen und Linien (pst-solides3d)

823

ch50-Beispiele.tex: (#326)

herbert

Beispiele

z

35-00-14

8 7 6 5 4 3 2 1 0 −4 −3

−2 −1 x

−4 −3 −2 −1 y 1 0

0 1 2 2 3 3 4 4

Abbildung 35.14: Projektionen und Funktionen (pst-solides3d)

140

35-00-15 130

120

110

100

Enlèvement burinant Marche

90

Plume Nombre de pièces

35

80 Charnière Languette

70

60

50

40

30

20

10

0 0

1

2

3

4

5

6

7

8

9

10

11

Longueur de la trace en mm

Abbildung 35.15: Überlagerung von gefüllten Flächen.

824

ch50-Beispiele.tex: (#326)

herbert

12

Beispiele

F

35-00-16

D

H J

B

I IV n e V II III line line line line li

A

C

E

G

I

Abbildung 35.16: Knotenverbindungen bei konstantem Winkel (pst-node).

35-00-17

Abbildung 35.17: Anwendung des \psclip und des \random Makros (pstricks, Manuel Luque).

35-00-18

Abbildung 35.18: Anwendung des \random Makros (pst-labo, Manuel Luque).

825

ch50-Beispiele.tex: (#326)

herbert

35

Beispiele

35-00-19

Abbildung 35.19: Schnittebenen

60 58 56 54 52 50 48 46 14 12 10 8 6 4 2 0

35-00-20



0

2

4

6

8 10 12 14 16 18 20 22 24 26 28

Abbildung 35.20: Unterbrochene Achsen

826

ch50-Beispiele.tex: (#326)

herbert

Beispiele

35-00-21

Abbildung 35.21: Spiegelungen an der y-Achse.

35-00-22

A K

− −

− −





IPh

UG

Abbildung 35.22: Braunsche Röhre

35-00-23

2 1

−4

−3

−2

−1

1

2

3

4

−1 −2 Abbildung 35.23: Numerische Integration

827

ch50-Beispiele.tex: (#326)

herbert

35

Beispiele

35-00-24

γ = 1.2 360

380

400

420

440

460

480

500

520

540

560

580

600

620

640

660

680

700

720

740

760

780

800

360

380

400

420

440

460

480

500

520

540

560

580

600

620

640

660

680

700

720

740

760

780

800

360

380

400

420

440

460

480

500

520

540

560

580

600

620

640

660

680

700

720

740

760

780

800

360

380

400

420

440

460

480

500

520

540

560

580

600

620

640

660

680

700

720

740

760

780

800

360

380

400

420

440

460

480

500

520

540

560

580

600

620

640

660

680

700

720

740

760

780

800

γ = 1.0

γ = 0.8

γ = 0.6

γ = 0.4

Abbildung 35.24: Anwendung des wave-Farbmodells.

C

35-00-25

b

Iac b

b

Ibc Iab A

b

b

b

Abbildung 35.25: »Seitenmonde« (pst-eucl)

828

ch50-Beispiele.tex: (#326)

herbert

B

Beispiele

35-00-26

h0

Ff′

Ff

ϕ r

h(t)

S

−Ff′ Fg Abbildung 35.26: Anwendung von \multido und \pswedge.

35-00-27

105 95 85 75 115 125 135 145

65 55 45 35

155

25

165

15

175

5

Abbildung 35.27: Anwendung von \pnode und multido (Weitere Beispiele bei http://melusine. eu.org/syracuse/pstricks/rapporteurs/.

829

ch50-Beispiele.tex: (#326)

herbert

35

Beispiele

Wichtigkeit beim Einkauf von Lebensmitteln

35-00-28

völlig unwichtig

wichtig

1

2

3

4

5

-2

-1

0

1

2

Geschmack Artgerechte Tierhaltung Gesungheitsaspekt Frische und Reife Glaubwürdige Produktkennzeichnung Preis-/Leistungsverhältnis Vitamin- und Mineralstoffreichtum Schonende Verarbeitung Naturbelassenheit Freiheit von Gentechnik Umweltfreundlichkeit der Verpackung Appetitliches Äußeres Herkunft aus regionalem Landbau Regionale Herkunft Niedriger Preis Haltbarkeit Einfach und bequem bei Zubereitung Kalorienarmut

viel schlechter

kein Unterschied

viel besser

Vergleich der Ökoprodukte zu den herkömmlichen Abbildung 35.28: Anwendung von \multido und pst-grad.

35-00-29

650

640

630

620

610

600

590

580

570

560

550

540

530

520

Abbildung 35.29: Apsorptionsspektrum von Neon (pst-spectra, Arnaud Schmittbuhl).

830

ch50-Beispiele.tex: (#326)

herbert

Beispiele

35-00-30

Abbildung 35.30: Strahlenverlauf

35-00-31

Abbildung 35.31: Young Farbspekrum

6

35-00-32

3!

b

4

2! 2

−5

−4

−3

−2

−1

b

0!

1!

b

b

1

2

3

4

−2 −4 −6

Abbildung 35.32: Die Gamma-Funktion

831

ch50-Beispiele.tex: (#326)

herbert

35

Beispiele

E

A

θ

35-00-33

P 30◦

50◦ 30◦ 50◦

Q 30◦ α 20◦

40◦

D

70◦

B

C Abbildung 35.33: Dreieckskonstruktionen

35-00-34

Abbildung 35.34: Anwendung von pst-fill (Manuel Luque).

832

ch50-Beispiele.tex: (#326)

herbert

Beispiele

35-00-35

15 10 5

10

20

30

40

Abbildung 35.35: Wurfparabeln

4

35-00-36

Test A

3 2 1

−4

−3

−2

−1

1

2

3

4

−1 −2

Test −3 B −4 Abbildung 35.36: Polarkoordinaten

35-00-37

380

405

430

455

480

505

530

555

5 80

605

630

655

680

705

730

7 55

7 80

Abbildung 35.37: Wasserstoffspektrum (pst-spectra, Arnaud Schmittbuhl).

833

ch50-Beispiele.tex: (#326)

herbert

35

Beispiele

35-00-38 y1

v ges

vy

vx

y0

d mq

vx a

UH

Ub

l Ua

Abbildung 35.38: Elektronenbahn im Kondensatorfeld (Thomas Söll).

z

35-00-39

y

x

Abbildung 35.39: Das »farbige Titelbild« der fünften Auflage.

834

ch50-Beispiele.tex: (#326)

herbert

Beispiele

35-00-40

2

√ f (x) = 2 · x · cos (ln x) · sin x 1

0 1

2

3

4

5

6

7

8

9

-1

-2

Abbildung 35.40: Das Titelbild der vierten Auflage: Veranschaulichung des Integralbegriffs von Riemann durch Anwendung von \psStep aus dem Paket pstricks-add mit der Option StepType=Riemann.

bbbb bbb b b b b

35-00-41

b

b

b

b

b

b bbbbbb

b bbbbbbb b b b b

bbbbb bbbbbbbb

bbbbbbbb b bbbb b b b b b

bbb bbb bb bb bb b b b b bb

bbb b b b b b

b b

b b

b

b

b

b

b

b

b

b b

b b

b

b

b

b b

b

b

b

Abbildung 35.41: »Rechnen« mit TEX (Chris Sangwin).

835

ch50-Beispiele.tex: (#326)

herbert

35

Beispiele

35-00-42

Abbildung 35.42: Das Titelbild der ersten Auflage: Anwendung von pst-3dplot mit \parametricplotThreeD

35-00-43

Abbildung 35.43: Zusammenhang zwischen Steigung und Knotenverbindung.

35-00-44

Abbildung 35.44: Kurven mit unterschiedlichem Stil.

836

ch50-Beispiele.tex: (#326)

herbert

Beispiele

35-00-45

380

420

460

500

540

580

620

660

700

740

780 λ(nm)

380

420

460

500

540

580

620

660

700

740

780 λ(nm)

Abbildung 35.45: Wasserstoffspektrum (Manuel Luque).

35-00-46

Segment number 0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xA 0xB 0xC 0xD 0xE 0xF

Usage Kernel text and data User text User stack, data                    Available for the user process   if shmat()or mmap() is called                  Shared library text Per-process shared library data

Abbildung 35.46: Anwendung von \ncline und \ncdiag innerhalb einer normalen tabularUmgebung.

35-00-47

Abbildung 35.47: Tiling mit pst-fill (Denis Girou).

837

ch50-Beispiele.tex: (#326)

herbert

Beispiele

35-00-48 A gliding ball

len g

th= 15 m

th= 15 m

length · sin α

length · sin α

len g

A rolling ball

α = 30◦

α = 30◦

length · cos α

length · cos α

s[m]/ v[m/sec]

s[m] / v[m/sec] s(t) = 21 ( g · sin α) · t 2 h(t) = Height − 21 ( g · sin2 α) · t 2 ∼ Wpot w(t) = 21 ( g · sin α cos α) · t 2 √ v(t) = g · sin α · t ∼ Wkin a(t) = g · sin α

14 12 10

5 s(t) = 14 ( g · sin α) · t 2 5 ( g · sin2 α) · t 2 ∼ Wpot h(t) = Height − 14 5 w(t) = 14 ( g · sin α cos α) · t 2 √ v(t) = 57 · g · sin α · t ∼ Wkin a(t) = 75 · g · sin α

14 12 10

8

8

6

6 4

4 2

2

tEnd

0

t[sec] 0

0.25

0.50

0.75

1.00

1.25

1.50

1.75

2.00

tEnd

0

t[sec] 0

2.25

0.25

0.50

0.75

1.00

1.25

1.50

1.75

2.00

2.25

2.50

2.75

Abbildung 35.48: Schiefe Ebene in der Physik

singlet coupling b

b

35-00-49

b b b

b

35

b b b

π2

π3

lone pair repulsion b b

b

Abbildung 35.49: psmatrix und pst-slpe (Jorge Luis Llanio).

CPU-0

CPU-1

CPU-X

CPU-XX

Abbildung 35.50: Definition eines eigenen Makros \pstCPU

838

ch50-Beispiele.tex: (#326)

herbert

35-00-50

Beispiele

v [m/s] 35-00-51

200

forward flow

regurgitation

(systole)

(diastole)

160

pressure [mmHg]

LV Aorta

120

80

40

0.37 · Tp + t0 t [s]

t0 b

0 0.25

b

0.50

0.75

1.00

1.25

500

leak volume 400

flow [ml/s]

300

200

closing volume

100

t [s]

0 0.25

0.50

0.75

1.00

1.25

-100

Abbildung 35.51: Zoomen eines Datenausschnitts (Kris Dumont).

35-00-52

A

B

A

B

A

B Abbildung 35.52: Anwendung von \circlenode und \nccoil.

839

ch50-Beispiele.tex: (#326)

herbert

35

Beispiele

35-00-53

Abbildung 35.53: Relative Knotenkoordinaten mit [X|Y]nodesep.

106

35-00-54

105 104 103 102 101 100 10−1 10−2 100

101

102

Abbildung 35.54: Doppelt-logarithmische Achsen.

840

ch50-Beispiele.tex: (#326)

herbert

Beispiele

34 35-00-55

120

100 nnn

80

60

40 d NN

20

b

a

c

0 A Amerika B

C

De

E

F

Abbildung 35.55: Fehlerwerte

35-00-56

hinte n y

x n te n u

Abbildung 35.56: Einfache Anwendung von pst-3dplot.

y 1

y 1

35-00-57

α −1

−1

x −2π

−π

arc(α) π



x 3π

−1

Abbildung 35.57: Sinusfunktion

841

ch50-Beispiele.tex: (#326)

herbert

35

Beispiele

Die Bindungsenergie im Tröpfchenmodell setzt sich aus folgenden Teilen zusammen:

35-00-58

• dem Oberflächenanteil, • dem Volumenanteil,

E = av A + − af A2/3 + − ac

Z(Z−1) A1/3

+ − as

(A−2Z)2 A

+ Ep

(1)

• dem Coulomb-Anteil, • der Symmetrieenergie, • sowie einem Paarbildungsbeitrag. Abbildung 35.58: Knoten im mathematischen Modus.

35-00-59

7 6 5 4 3 2 1 0 0

1

2

3

4

5

6

7

Abbildung 35.59: Markierung gleicher Zeitwerte

35-00-60

dT cT b

b

dL

b

b

b

dR

cL

b

b

b

cR

b b

cB

dB Abbildung 35.60: Spezielle Knotenverbindungen.

842

ch50-Beispiele.tex: (#326)

herbert

Beispiele

35-00-61

−π 6

π 6

Abbildung 35.61: Oszillierende Funktionen 6 016 6 16 16 016 16 016 6 16 016 20 6 2 16 01 20 16 016 20 6 2 16 01 2 16 01 20016 220166 201 16 20016 2201616 20016 220166 201 16 20016 2201616 20016 22016 2 2 6 0 6 0 1 1 2 2 016 20 6 2 16 01 20 16 2 016 20 6 2 16 01 20 16 016 2 016 201 6 20 16 2 016 20 16 2 016 201 6 20 16 2 016 20 16 2 016 2 016 201 6 20 16 2 016 20 16 2 016 201 6 20 16 2 016 20 16 2 016 2 016 201 6 20 16 2 016 20 16 2 016 201 6 20 16 2 016 20 16 2 016 6 1 20016 220166 201 16 20016 2201616 20016 220166 201 16 20016 2201616 20016 22016 2 016 201 6 20 16 2 016 20 16 2 016 201 6 20 16 2 016 20 16 2 016 2 016 201 6 20 16 2 016 20 16 2 016 201 6 20 16 2 016 20 16 2 016 2 016 201 6 20 16 2 016 20 16 2 016 201 6 20 16 2 016 20 16 2 016 2 016 201 6 20 16 2 016 20 16 2 016 201 6 20 16 2 016 20 16 2 016 6 1 20016 220166 201 16 20016 2201616 20016 220166 201 16 20016 2201616 20016 22016 1 0 2 1 0 2 2 20 2 20 2 20 2 20 2

35-00-62

Abbildung 35.62: Anwendung von \pscharpath und \psboxfill.

35-00-63

0.30 0.25 0.20 0.15 b b

0.10 0.05

b bb

0 10−1

b b

b

100

101

Abbildung 35.63: Fehlerplot mit Datensätzen der Form x y dx dy.

843

ch50-Beispiele.tex: (#326)

herbert

Beispiele

"

GF: /Pinguin/ WA: +N

35-00-64

#

Vogel s

ob

a

aufrecht gehend

a

Pinguin

flugunfähig

ub Felsenpinguin

Abbildung 35.64: Psycholinguistisches Begriffsnetz – Frame (Christine Römer) n~o

35-00-65

ben

Y obe

EN OB X

n

obe

n

35

YB

Sei

te B

YA

A

e Sei t

~B n XA

X B

n~ A

Abbildung 35.65: Eine Anwendung mit pst-3d.

Team Manchester United Celtic Benfica FC Copenhagen

P 6 6 6 6

W 4 3 2 2

D 0 0 1 1

L 2 3 3 2

F 10 8 7 5

A 5 9 8 8

Abbildung 35.66: Boxspielereien

844

ch50-Beispiele.tex: (#326)

herbert

Pts 12 9 7 7

35-00-66

Beispiele

35-00-67

Abbildung 35.67: Eine Anwendung mit pst-solides3d.

35-00-68

f (α)

1 0

α 30

60

90 120 150 180 210 240 270 300 330 360 390

−1 −2 Abbildung 35.68: Anwendung von \psplot aus pst-plot.

35-00-69

e

Abbildung 35.69: Kräfte an einer Tragfläche.

845

ch50-Beispiele.tex: (#326)

herbert

35

Beispiele

B

35-00-70

b

C′ b

IP

KP b b rs

K

I A′

H

G b

rs

O

rs

C’ A’ B’ b b

C

B′ b

J b

A JP

Abbildung 35.70: Eine Anwendung mit pst-eucl (Dominique Rodriguez).

35-00-71

Abbildung 35.71: Anwendung mit pst-solides3d.

846

ch50-Beispiele.tex: (#326)

herbert

Beispiele

Rm−n 35-00-72

V f

f (U)

f (p) Rn

U′

U

p

Rn

Rm−n

g

g(V ) g ◦f Rn   g f (p)

Abbildung 35.72: Standardmakros (Rubens Agapito).

y

35-00-73

3 2 1

−3

−2

−1

1

2

3 x

−1 −2 −3 Abbildung 35.73: Die »doppelte« Lemniskate mit \psplot und der polar-Option aus pst-plot erstellt.

847

ch50-Beispiele.tex: (#326)

herbert

Beispiele

z

k Ja hre tee2(0He rb

PS

Pa ele n i v e un d sein ti t ad s DAN m TE e.V. in Dar

s

m

Tr

ick

x

35-00-74

04 b ei e inem er Vor trag Ãijbe r t V oß u n d R olf Niepr asc hk.

35

y

Abbildung 35.74: \pstextpath und \parametricplotThreeD.

Im(z) 1

Im(z) 1 z1

z1

−1

◦ 120◦ z0 z2 90 1 0 Re(z) −1 90◦ 120◦

120◦ z2

90◦ 90◦

Im(z) 1 72◦ 72◦

z3 = 1

72◦ z0 1 Re(z) 72◦

72◦

z3

z3 −1

−1

z1

z2 z0 1 Re(z) −1

35-00-75

z4 −1

z5 = 1

z4 = 1

Abbildung 35.75: Anwendung der Standardmakros (Ulrich Dirr).

w=

1 z∗

Re(z) =

Im(z), Im(w) w= 1 4

Im(z), Im(w)

1 z∗

Re(z) = 1

2

1.0

1

0.5 Re(z), Re(w)

−1

0

1 4

1

2

3

4

Re(z), Re(w) −1.0

−0.5

0

−1

−0.5

−2

−1.0

0.5

1.0

Abbildung 35.76: Anwendung der Standardmakros (Ulrich Dirr).

848

ch50-Beispiele.tex: (#326)

herbert

1.5

35-00-76

Beispiele

35-00-77

U

g

p M

  g(U) ∩ R2 × {0}

0

Abbildung 35.77: Anwendung der Standardmakros (Rubens Agapito).

35-00-78

6 4 2 0 10

20

30

40

50

60

Abbildung 35.78: Spezielle Anwendung des \listplot-Makros.

35-00-79

VE

LA

23

11

17

3

4

3

RA

12

12

11

17

3

4

1 LA

3

3

3

12

R

L

1

10

R

L

1

1

17

3

4

L

R

R

3

17

4

R

L

12

23

10

R

11

12

12

23

10

11

12

12

23

10 RA

Abbildung 35.79: Anwendung der Standardmakros zur Demonstration von Quick-Sort.

849

ch50-Beispiele.tex: (#326)

herbert

35

Beispiele

35-00-80

Abbildung 35.80: :-) . . .

→ − v0

1

→ − 0 B

35-00-81

b

-1

-2 0

1

2

3

Abbildung 35.81: Bewegung eines geladenen Teilchens im Magnetfeld als Lösung der Differentialgleichung (pstricks-add, Dominique Rodriguez).

850

ch50-Beispiele.tex: (#326)

herbert

Beispiele

35-00-82

103 e −1

104

105

106

e −2

e −3

f (x) = f (x) = f (x) =

π(x) x t(x) x g(x) x

e −4

e −5

Abbildung 35.82: Darstellung im doppelt logarithmischen Koordinatensystem. (Lars Kotthoff)

35-00-83

21 20 19 18 17 16 60

15 0

120 100

180

240 200

300

360

300

Abbildung 35.83: Spezielle Achsen mit pst-plot.

851

ch50-Beispiele.tex: (#326)

herbert

35

Beispiele

Kernkraftwerk mit Druckwasserreaktor

35-00-84

Strommast

Reaktorgebäude Trafo

Steuerstäbe

Maschinenhaus

Wasserdampf

Dampferzeuger Druckhalter

Generator

Turbine bc

bc bc

bc

Reaktordruckgefäß

bc bc

bc

bc

bc

bc bc bc bc bc bc cb

bc

bc

bc bc bc

bc

bc bc

feuchte, warme Luft

bc

bc bc bc bc

bc

Kondensator Kühlwasser Speisewasser

Brennelemente

Sprühwasser

Luft Hauptkühlkreis

Kühlturm

Fluss

Abbildung 35.84: Atomkraftwerk (Thomas Söll)

35-00-85 bc bc bc bc bc

bc

bc

bc bc

bc bc

bc bc bc bc bc

bc bc bc bc bc bc bc bc bc

bc bc bc bc bc bc bc bc bc bc bc bc bc bc bc bc bc

bc bc bc bc bc

bc

bc

bc

Abbildung 35.85: Spezielle Sinusfunktion

35-00-86

Abbildung 35.86: Spezielle Fortschrittsanzeigen

852

ch50-Beispiele.tex: (#326)

herbert

Beispiele

s0

35-00-87

a

b

∃X¯ ′

¯ 1 round(X)

c

∃Y¯ ′

f

e

d1 . . . d4

g

∃X¯ ′ ∃X¯ ′ ∃Y¯ ′ X¯ ′ Y¯ ′ = Y¯ X¯

¯ 1 round(X)

1 round(Y¯ )

h1 . . . h4

i1 . . . i4 j

k ¯ 1 round(X) l1 . . . l4 1 round(Y¯ ) m1 . . . m4

Abbildung 35.87: Spieltheorie (Bertram Ludascher)

4

35-00-88

4

4

>20

4

5

13

20

--< o-o oo-oo cc-cc c-c C-C



[-]

]-[

-

Linienenden können auch in der Form {ends} in Linienbefehlen angegeben werden. Parameter für Linienenden arrowsize arrowlength arrowinset tbarsize bracketlength

= = = = =

dim num num num dim num num

Punkt an jeder Koordinatenangabe \psdot*[par](P0) \psdots*[par](P0)(P1)... Parameter für Punkte (’var’ bedeutet optional) dotstyle = style dotsize = dim ’num’ dotscale = num1 ’num2’ dotangle = ang Mögliche Werte für dotstyle (Auswahl) * o + x asterisk oplus otimes | square diamond triangle pentagon square* diamond* triangle* pentagon* Weitere dotstyles siehe pst-news06.pdf.

Kurven

(-) )-( |-|

\psbezier[par](P0)...(P3) \pscurve[par](P0)(P1)... \psecurve[par](P0)(P1)... \psccurve[par](P0)(P1)...

Tabellen

872 \psarcAB[par]{ends}(P0)(PA)(PB) \psarcnAB[par]{ends}(P0)(PA)(PB)

Textboxen

Platzierung von Objekten

Rahmenboxen

Skalierung

ch99a-Appendix.tex: (#302)

\psframebox[par]{stuff} \psdblframebox[par]{stuff} \psshadowbox[par]{stuff} \pscirclebox[par]{stuff} \psovalbox[par]{stuff} \psdiabox[par]{stuff} \pstribox[par]{stuff} \psTextFrame[par](P0)(P1){stuff}

Parameter für Rahmen und geschlossene Pfade

Verschiebung und Drehung \rput[ref]{rot}(P){stuff} \multirput[ref]{rot}(P)(a,b){rep}{stuff} \psrotateright{stuff} \psrotateleft{stuff} \psrotatedown{stuff}

Drehung um beliebigen Punkt \rput{ang}(P){\rput(-P){stuff}}

Parameter für eine Nullpunktverschiebung

Beschriftung von Punkten \uput{sep}[ang]{rot}(P){stuff}

Parameter für Beschriftungen labelsep = dim

Gitter Gitterbefehl \psgrid(P0)(P1)(P2)

Gitterparameter 873

Zusammenfassung aller Makros

origin = {coor} swapaxes = true/false Mögliche Werte für ref horizontal vertikal l t r b B

A.2

herbert

fillstyle = style fillcolor = color framearc = num framesep = dim hatchwidth = dim hatchcolor = color hatchangle = ang hatchsep = dim cornersize = relative/absolute dimen = inner/middle/outer opacity = num Mögliche Werte für fillstyle none solid eofill oefill hlines vlines crosshatch penrose hlines* vlines* crosshatch* penrose* dots Die Verwendung der *-Versionen bei Rahmen und Kurven wirkt wie fillstyle=solid. Die Füllfarbe ist in diesem Fall linecolor.

\psscalebox{num1 num2}{stuff} \psscaleboxto(P){stuff}

A

= = = = = = = = =

dim color num dim color int dim color num

Verschiedenes

Schatten shadow shadowsize shadowangle shadowcolor

= = = =

true/false dim ang color

Einige PostScript® -Operatoren add abs sin exp ceiling

sub neg cos ln floor

mul mod atan log round

div dup sqrt exch truncate

Ausdrücke in algebraischer Form

Zusammenhängende und geschlossene Pfade \pscustom[par]{paths}

Parameter für zusammenhängende Pfade linetype = int liftpen = 0/1/2

Einige Befehle zur Verwendung innerhalb \pscustom

herbert

\closepath \reversepath \rlineto(P) \fill \gsave \grestore \lineto(P) \moveto(P)

Tabellen

874

ch99a-Appendix.tex: (#302)

gridwidth gridcolor griddots gridlabels gridlabelcolor subgriddiv subgridwidth subgridcolor subgriddots

\newpath \translate(P) \curveto(P1)...(P3) \rotate={ang} \scale={num1 ’num2’} \stroke \swapaxes \code{code}

Grafiken begrenzen (clipping) \psclip{clipobjects} ... \endpsclip

algebraic = true

Arithmetische Funktionen \pstFPadd{result}{num1}{num2} \pstFPsub{result}{num1}{num2} \pstFPmul{result}{num1}{num2} \pstFPdiv{result}{num1}{num2} \pstFPMul{result}{num1}{num2} \pstFPDiv{result}{num1}{num2}

Wiederholungen \psLoop{n}{stuff} \psforeach{var}{list}{stuff} \the\psLoopIndex gibt den Wert von n zurück.

Wichtige Zahlenwerte (gerundet) 180°/π = 57,2958° π = 3,14159

π/180° = 0,01745 rad/Grad e = 2,71828

Die trigonometrischen Funktionen erwarten ihr Argument im Grad-

maß. Weitere Operatoren und Konstanten werden vom Paket pst-math zur Verfügung gestellt.

Erweiterungen multido Wiederholungen ch99a-Appendix.tex: (#302)

\multido{variables}{rep}{stuff}

Mögliche Variablentypen sind Integer (\i), Dimension (\d), Number (\n) und Real (\r). Ein Dekrement wird in der Form \nx=5.30+-1.25 angegeben. Festkommaaddition und -subtraktion \FPadd{num1}{num2}{command} \FPsub{num1}{num2}{command}

\Rnode(P){node}{stuff} \pnode[xoffset,yoffset](P){node} \pnodes[xoffset,yoffset](P){node}(P){node}... \pnodes{name}(P0)(P1)(P2)... \fnode[par](P){node} \cnode[par](P){rad}{node} \Cnode[par](P){node} \circlenode[par]{node}{stuff} \trinode[par]{node}{stuff} \ovalnode[par]{node}{stuff} \cnodeput[par]{ang}(P){node}{stuff} \dotnode[par](P){node} \psnode[par](P){node}{stuff} \psLNode(P1)(P2){num}{node} \psLCNode(P1){num1}(P2){num2}{node}

Durch diese Befehle wird das Kommando command definiert und das Knotenverbindungen (Segmentanzahl in Klammern) Ergebnis darin abgespeichert.

l

c

r

Outline-Buchstaben \pscharpath[par]{text} \pscharclip[par]{text}...\endpscharclip

pst-node Knoten erzeugen \rnode[ref]{node}{stuff}

Punktverbindungen (Segmentanzahl in Klammern) \pccurve[par]{arrows}(P1)(P2) (0) \pcline[par]{arrows}(P1)(P2) (1)

875

Zusammenfassung aller Makros

\pstextpath[justify](x,y){path}{text}

Mögliche Werte für justify

(0) (1) (1) (1) (2) (3) (3) (3) (4) (5) (5)

A.2

herbert

pst-text Text entlang Kurven

\nccurve[par]{arrows}{nodeA}{nodeB} \ncline[par]{arrows}{nodeA}{nodeB} \ncarc[par]{arrows}{nodeA}{nodeB} \nccircle[par]{arrows}{node}{rad} \ncdiagg[par]{arrows}{nodeA}{nodeB} \ncdiag[par]{arrows}{nodeA}{nodeB} \ncbar[par]{arrows}{nodeA}{nodeB} \ncangle[par]{arrows}{nodeA}{nodeB} \ncangles[par]{arrows}{nodeA}{nodeB} \ncloop[par]{arrows}{nodeA}{nodeB} \ncbarr[par]{arrows}{nodeA}{nodeB}

A

(1) (2) (3) (3) (3) (4) (5) (5)

ch99a-Appendix.tex: (#302)

Parameter für Knoten und Verbindungen ncurv offset arm angle lineAngle

npos = num

Mit der Angabe nrot=:ang erfolgt die Drehung relativ zur Richtung der Verbindungslinie (häufig nrot=:U). Rahmen um Knoten herum \ncbox[par]{nodeA}{nodeB} \ncarcbox[par]{nodeA}{nodeB}

Knotenkoordinaten auslesen \psGetNodeCenter{node}

Ermöglicht die Verwendung von node.x und node.y innerhalb von PostScript® -Code.

herbert

= num arcangle = ang = dim loopsize = dim = dim [XY]nodesep = dim pst-grad = ang radius = dim Parameter für Gradientenfüllungen = ang fillstyle = gradient Die Parameter [XY]nodesep, offset, arm und angle können in den gradbegin = color Varianten parA und parB auch für beide Endknoten separat gesetzt gradend = color werden. Zusätzlich gelten alle Linienparameter. Die Verschiebung offgradlines = int set zählt in runits positiv zur linken Seite des Pfades. radius dient gradmidpoint = num als globaler Parameter für \Cnode. lineAngle bestimmt die Steigung gradangle = ang des schrägen Liniensegments von \ncdiag und \ncdiagg. gradientHSB = true/false Knoten beschriften GradientCircle = true/false \nput[par]{ang}{node}{stuff} GradientScale = num Knoten- und Punktverbindungen beschriften GradientPos = coor \ncput[par]{stuff} \naput[par]{stuff} pst-math \nbput[par]{stuff} Die Befehle \lput, \aput, \bput, \Aput, \Bput, \Lput, \Mput und Zusätzliche PostScript® -Funktionen \Rput sind obsolet, werden aber weiter unterstützt. GAMMA SIN ASIN GAUSS

Parameter für Beschriftungen nrot = rot

GAMMALN EXP

COS TAN

ACOS ATAN

BESSEL_J0 BESSEL_J1

Tabellen

876 \pcarc[par]{arrows}(P1)(P2) \pcdiagg[par]{arrows}(P1)(P2) \pcdiag[par]{arrows}(P1)(P2) \pcbar[par]{arrows}(P1)(P2) \pcangle[par]{arrows}(P1)(P2) \pcangles[par]{arrows}(P1)(P2) \pcloop[par]{arrows}(P1)(P2) \pcbarr[par]{arrows}(P1)(P2)

SINC SEC COSEC COTAN

SINH COSH TANH ASEC

ASINH ACOSH ATANH ACSC

BESSEL_Y0 BESSEL_Y1 BESSEL_Yn SIMPSON Die trigonometrischen Funktionen von pst-math erwarten ihr Argu-

ment im Bogenmaß (rad).

ch99a-Appendix.tex: (#302)

pst-plot Achsenkreuz \psaxes[par](P0)(P1)(P2) [xlabel,ang][ylabel,ang]

Parameter für Achsenkreuze (Auswahl) none/axes/frame/polar x/y/all/none x/y/all/none true/false true/false int full/top/bottom/inner style dim1 ’dim2’ dim color int num dim color true/false dim

x/y/all/none int int stuff true/false true/false true/false

Ox = num Dx = num dx = num Oy = num Dy = num dy = num Ox und Oy sind die Startwerte der Nummerierungen im Ursprung. Dx und Dy sind die Inkremente der Nummerierungen. dx und dy sind die Abstände der Achsenmarken. Der Parameter subticks gibt genau

die Anzahl der Teilstriche an, das heißt, dass im Fall einer logarithmischen Achsenteilung (logLines) zur Basis 10 eine Zehnerteilung durch subticks=9 erreicht wird. Durch wiederholten Aufruf von \psaxes können mehrere Teilstrichgruppen mit verschiedenen Abständen und Längen erzeugt werden. Stil der Achsenbezeichnungen \renewcommand{\pshlabel}[1]{commands#1} \renewcommand{\psvlabel}[1]{commands#1}

Zusätzliche Achsenmarken \psxTick[par][num]{stuff} \psyTick[par][num]{stuff}

Daten einlesen \readdata{object}{filename} \savedata{object}{filename}

Daten plotten \psfileplot[par]{filename} \psdataplot[par]{object}

877

Zusammenfassung aller Makros

= = = = = = = = = = = = = = = = =

= = = = = = =

A.2

herbert

axesstyle ticks labels comma [xy]trigLabels trigLabelBase tickstyle ticklinestyle [xy]ticksize tickwidth tickcolor [xy]subticks [xy]subticksize [xy]subtickwidth [xy]subtickcolor showorigin labelsep

logLines [xy]Decimals [xy]logBase [xy]labelFactor xyAxes xAxis yAxis

A

\psplot{x1}{x2}{y(x)} \psparametricplot{t1}{t2}{x(t) y(t)}

Allgemeine Plotparameter

Knotenverbindungen

ch99a-Appendix.tex: (#302)

algebraic = true/false plotstyle = style plotpoints = int showpoints = true/false yMaxValue = num Parameter für \readdata nStep = int ignoreLines = int Daten nachverarbeiten (vor \pslistplot) \pstScalePoints(num,num){code}{code} Plotparameter für \pslistplot nStep = int nStart = int nEnd = int xStep = int xStart = int xEnd = int yStep = int yStart = int yEnd = int

herbert

plotNoX = int plotNoMax = int Mögliche Werte für plotstyle dots line polygon curve ecurve ccurve bar ybar values LSM cspline

pst-coil Spiral- und Zick-Zack-Linien

\psCoil[par]{ang1}{ang2} \pscoil[par]{arrows}(P1)(P2) \pssin[par]{arrows}(P1)(P2) \pszigzag[par]{arrows}(P1)(P2)

plotNo = int

LineToXAxis LineToYAxis xvalues

\nccoil[par]{arrows}{nodeA}{nodeB} \ncsin[par]{arrows}{nodeA}{nodeB} \nczigzag[par]{arrows}{nodeA}{nodeB}

Punktverbindungen \pccoil[par]{arrows}(P1)(P2) \pcsin[par]{arrows}(P1)(P2) \pczigzag[par]{arrows}(P1)(P2)

Parameter für Spiral- und Zick-Zack-Linien coilwidth coilheight coilarm coilaspect function

= dim coilinc = ang = num periods = dim|num = dim amplitude = num = ang ppoints = num = code Der Parameter coilarm kann in den Varianten coilarmA und coilarmB auch für beide Endknoten separat gesetzt werden.

pst-func Makros zum Plotten spezieller Funktionen \psBessel[par]{ord}{x1}{x2} \psPolynomial[par]{x1}{x2} \psBernstein[par](t1,t2)(i,n) \psFourier[par]{x1}{x2} \psSi[par]{x1}{x2} \psCi[par]{x1}{x2}

Tabellen

878 \pslistplot[par]{object}

Funktionen plotten

Makros für numerische Berechnungen \psIntegral[par]{x1}{x2}(a,b){y(x)} \psConv[par]{x1}{x2}(a,b){f(x)}{g(x)} \psCumIntegral[par]{x1}{x2}{y(x)}

Makros zum Plotten von Wahrscheinlichskeitsdichten

ch99a-Appendix.tex: (#302)

sigma = num

mue = num

Parameter für \psBetaDist und \psGammaDist alpha = num

beta = num

Parameter für \psChiIIDist und \psTDist nue = num

pst-eucl Orthogonalprojektion(en) auf eine Gerade \pstProjection{node}{node}{nodes}[nodes]

Die Optionen PointSymbol=none und PointName=none unterdrücken die automatische Beschriftung der Ergebnisknoten. pstricks-add Mehrfachplatzierung \rmultiput[par]{stuff}(P1)(P2)...

Drehung um beliebigen Punkt

\psIntersectionPoint(P1)(P2)(P3)(P4){node}

Freihandlinie \pslineByHand[par](P0)(P1)...

Tangenten von Punkt P1 an Kreis \psCircleTangents(P1)(P0){rad}

Die berechneten Tangentenpunkte sind in den Knoten CircleT1 und CircleT2 abgelegt. Gemeinsame Tangenten zweier Kreise \psCircleTangents(P1){rad1}(P2){rad2}

879

Zusammenfassung aller Makros

herbert

\psrotate[par](P){ang}{stuff}

Schnittpunkt

A.2

\psGauss[par]{x1}{x2} \psGaussI[par]{x1}{x2} \psBinomial[par]{N}{p} \psBinomial[par]{m,N}{p} \psBinomial[par]{m,n,N}{p} \psBinomialN[par]{N}{p} \psPoisson[par]{N}{lambda} \psPoisson[par]{M,N}{lambda} \psGammaDist[par]{x1}{x2} \psChiIIDist[par]{x1}{x2} \psTDist[par]{x1}{x2} \psFDist[par]{x1}{x2} \psBetaDist[par]{x1}{x2} Parameter für \psBessel constI = expr constII = expr Parameter für \psPolynomial coeff = a0 a1 a2 ... xShift = num Derivation = ord markZeros = true/false Parameter für \psFourier cosCoeff = a0 a1 a2 ... sinCoeff = b1 b2 b3 ... Parameter für \psIntegral, \psCumIntegral, \psConv und \psGaussI

Simpson = int

Parameter für \psGauss und \psGaussI

A

\psEllipseTangents(P0)(a,b)(P1)

Die berechneten Tangentenpunkte sind in den Knoten EllipseT1 und EllipseT2 abgelegt. Mediation und Drehung \psRelNode[par](P1)(P2){factor}{name}

Linie relativ zu P0, P1

yMax = num

Beta = ang

Gitter in den Koordinatenebenen \pstThreeDPlaneGrid[par](a0,b0)(a1,b1)

Parameter für Gitter in den Koordinatenebenen planeGrid = xy/xz/Yz subticks = int planeGridOffset = num

ch99a-Appendix.tex: (#302)

\psRelLine[par](P0)(P1){factor}{name} Platzierung von Objekten Als [par] kann bei \psRelNode und \psRelLine ein zusätzlicher \pstThreeDPut[par](x,y,z){stuff} Drehwinkel angegeben werden. Mit der Option trueAngle erscheint Linien, Polygone, Rahmen, Quader genau dieser Winkel, auch dann, wenn xunit und yunit nicht betrags\pstThreeDLine[par]{ends}(P0)(P1)... gleich sind. \pstThreeDTriangle[par](P0)(P1)(P2) \pstThreeDSquare[par](P0)(P1)(P2) Füllung mit zufällig verteilten Punkten \psRandom[par](P0)(P1){clippath}

Parameter für \psRandom randomPoints = int

color = true/false

\pstThreeDBox[par](P0)(P1)(P2)(P3) (Pn) steht für eine 3D-Koordinatenangabe in der Form (xn,yn,zn). Bei \pstThreeDSquare und \pstThreeDBox bedeuten (P0) eine Ecke und (P1) bis (P3) die Vektoren, die das Rechteck oder den Quader

aufspannen. Kreise und Ellipsen

herbert

pst-3dplot Globale Parameter SphericalCoor = true/false

\pstThreeDCircle[par](P0)(P1)(P2) \pstThreeDEllipse[par](P0)(P1)(P2)

Mit SphericalCoor = true wird jedes Koordinatentripel interpre- Parameter für Kreise und Ellipsen beginAngle = ang tiert als Radius, Längengrad (bezüglich der x-Richtung) und BreitenendAngle = ang grad. Punkt an der Koordinatenangabe Achsenkreuz \pstThreeDCoor[par]

Parameter für Achsenkreuze xMin = num xMax = num yMin = num

zMin = num zMax = num Alpha = ang

\pstThreeDDot[par](x0,y0,z0)

Funktionen plotten \pstplotThreeD[par](x1,x2)(y1,y2){z(x,y)}

Daten plotten \fileplotThreeD[par]{filename}

Tabellen

880

Tangenten von Punkt P1 an Ellipse

\dataplotThreeD[par]{object} \listplotThreeD[par]{object}

Knoten festlegen \pstThreeDNode(x,y,z){node}

Parameter für Drehungen

ch99a-Appendix.tex: (#302)

RotX RotY RotZ RotSequence

= = = =

ang ang ang xyz/xzy/.../quaternion

Voreingestellte Werte

Zusammenfassung aller Makros

881

hatchsep=4pt hatchwidth=0.8pt labelsep=5pt linearc=0pt linecap=0 linecolor=black linestyle=solid linewidth=0.8pt loopsize=1cm ncurv=0.67 nodesep=0pt nrot=0 offset=0pt plotpoints=50 plotstyle=line radius=0.25cm runit=1cm shadow=false shadowangle=-45

A.2

herbert

angle=0 arcangle=8 arm=10pt arrowinset=0.4 arrowlength=1.4 arrows=arrowsize=1.5pt 2 border=0pt bordercolor=white cornersize=relative dash=5pt 3pt dimen=outer dotangle=0 dotscale=1 dotsep=3pt dotsize=2pt 2 dotstyle=* doublecolor=white doubleline=false

fillcolor=white shadowcolor=darkgray fillstyle=none shadowsize=3pt framearc=0 showgrid=false framesep=3pt subgridcolor=gray gridcolor=black subgriddiv=5 griddots=0 subgriddots=0 gridlabelcolor=black subgridwidth=0.4pt gridlabels=10pt tbarsize=2pt 5 gridwidth=0.8pt unit=1cm hatchangle=45 xunit=1cm hatchcolor=black yunit=1cm (P) Punkt in gültiger Koordinatendarstellung (a,b) Wertepaar (z. B. Halbachsenlängen) ang Winkelangabe color Farbausdruck dim absolute oder relative Längenangabe ends Angaben zu den Linienenden int ganzzahliger Wert model Farbmodell (z. B. rgb) name Objektname node Knotenname num numerischer Wert par Optionenliste in Keyval-Syntax paths Sequenz von Pfaden rad Kreisradius ref Bezugspunkt rep Anzahl der Wiederholungen rot Drehwinkel stuff Text- oder Grafikobjekte style Name eines vordefinierten Stils text Text

A n h a n g

B

PostScript B.1 Die mathematischen PS-Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . 883 B.2 Die nicht-mathematischen PS-Funktionen . . . . . . . . . . . . . . . . . . . . . 884 B.3 Die PS-Definitionen von pstricks.pro . . . . . . . . . . . . . . . . . . . . . . . 889 B.4 Die Namen der PSTricks-Dictionaries . . . . . . . . . . . . . . . . . . . . . . . . 890

B.1 Die mathematischen PS-Funktionen Die tabellarische Zusammenstellung enthält bis auf die Matrizenbefehle alle mathematischen Funktionen mit ihren Eigenschaften. [4, 2, 3] Hierin sind int und real die bekannten Integer und Reals, während für any jeder beliebige Typ und für num real oder integer gesetzt werden kann. Ergänzende mathematische Befehle sind mit dem Paket pst-math möglich (siehe Abschnitt 27.1 auf Seite 557). Unabhängig von der Null gelten für Zahlen unter PS die unten angegeben Grenzen, wobei die Angaben für real betragsmäßig zu verstehen sind. Name

Bedeutung

Anwendung

Beispiel

abs add atan ceiling cos cvi cvr div dup exch exp floor idiv

Absolutwert Addition0 Arcus Tangens1 Aufrunden Cosinus2 Real→Integer Integer→Real Division3 Kopiere oberstes Element Exchange4 Potenz Abrunden ganzzahlige Division

num abs num1 num2 add real1 real2 atan num ceiling real cos real cvi int cvr real1 real2 div any dup any1 any2 exch real1 real2 exp num floor int1 int2 idiv

−3 abs → 3 5 7 add → 12 2 45 atan→ 2.54 6.33 ceiling→ 7 60 cos→ 0.5 14.13 cvi→ 14 14 cvr→ 14.00 100 8 div→ 12.5 12 dup→ 12 12 12 13 exch→ 13 12 3 4 exp→ 81.0 6.66 floor→ 6 100 8 idiv→ 12 Fortsetzung . . .

B

PostScript

. . . Fortsetzung Name

Bedeutung

Anwendung

Beispiel

ln log mod mul neg round sin sqrt sub truncate

natürlicher Logarithmus Zehner-Logarithmus Modulo Multiplikation1 Negiere Vorzeichen Runden Sinus3 Quadratwurzel Subtraktion1 Dezimalteil abtrennen5

real ln real log int1 int2 mod num1 num2 mul num neg real round real sin real sqrt real1 real2 sub real truncate

12 ln→ 2.48491 1000 log→ 3.00 5 3 mod→ 2 5 3 mul→ 15 5 neg→ −5 5.7 round→ 6 30 sin→ 0.5 16 sqrt→ 4.0 17 19 sub→ −2 −33.33 → −33.00

integer real kleinster Wert −232 ±10−38 größter Wert 232 − 1 ±1038

2 Entspricht α = arctan < real1 > .

< real2 >

3 Das Argument wird im Gradmaß erwartet. 4 Das Ergebnis ist grundsätzlich vom Typ real.

5 Die Anordnung der letzten beiden Stackele-

Anmerkungen: 1 Sind beide Argumente ganze Zahlen, ist auch

mente wird vertauscht. 6 Das Ergebnis bleibt vom Typ real.

das Ergebnis vom Typ Integer.

B.2 Die nicht-mathematischen PS-Funktionen Aufgrund der Tatsache, dass gerade für PS-Level3 die Zahl der Prozeduren nicht unerheblich gestiegen ist, wird hier aus Platzgründen nur eine willkürliche Auswahl getroffen, die sich an dem orientiert, was für eine Programmierung unter PSTricks sinnvoll sein könnte. PS-Name

Stack-Parameter

Funktion

=

any

== aload

any array

and

bool1 bool2

Entfernt das oberste Stackelement und sendet es gleichzeitig an die Standardausgabe. dito., jedoch mit Berücksichtigung des Objekttyps. Legt alle Elemente von array auf den Stack und anschließend array selbst auch. Beide Variablen werden logisch Und-verknüpft (bei ganzen Zahlen auf dem Stack werden diesen logische Werte zugeordnet; 0 entspricht false).

884

ch99b-Appendix.tex: (#322)

herbert

B.2

Die nicht-mathematischen PS-Funktionen

PS-Name

Stack-Parameter

Funktion

arc

x y r α1 α2

arcn arcto

x y r α1 α2 x1 y1 x2 y2 r

array

int

astore

any any . . . n array

begin bind

dict proc bind proc

charpath

string bool

clear clip

– –

closepath



concat

matrix

concatmatrix

mat1 mat2 mat3

copy

a b... n

count

a b...

counttomark

mark a b...

Anfügen eines Bogens mit den gegebenen Größen an den aktuellen Pfad, wobei der Winkel im mathematisch positiven Sinn gezählt wird (counter-clockwise). Sind Startpunkt des Bogens und aktueller Punkt nicht identisch, so werden diese durch eine Linie verbunden. dito., nur im Uhrzeigersinn. Es wird ausgehend von einem zu berechnenden Punkt ein Kreisbogensegment mit dem gegebenen Radius, dem aktuellen Punkt und den Hilfspunkten (x1 ,y1 ) und (x2 ,y2 ) gezogen. Auf dem Stack werden die Koordinaten von Anfangs- und Endpunkt zurückgegeben. Erzeugt ein Array der Länge int und legt es auf den Stack. Nimmt n vorhergehende Elemente vom Stack und legt sie als Elemente eines Arrays auf den Stack. Legt dict auf den dictionary stack. Alle Variablen in proc werden durch ihre assoziierten Werte ersetzt, sodass während der Laufzeit ein Geschwindigkeitsvorteil besteht. Liefert den Zeichenumriss von string als Pfad, der an den aktuellen angehängt wird. Alle Objekte vom Userstack löschen. Legt den neuen Clipping-Pfad fest, der sich aus der Schnittmenge des aktuellen Clipping-Pfades und des normalen Pfades ergibt. Aktueller Pfad wird geschlossen und der letzte Punkt wird mit dem Anfangspunkt verbunden. Die sechselementige matrix wird mit der aktuellen Transformationsmatrix (CTM) verknüpft. Die sechselementigen Matrizen mat1 und mat2 werden multipliziert und in mat3 gespeichert. mat1 und mat2 werden vom Stack entfernt. Die Transformationsmatrix (CTM) bleibt unverändert. Die letzten n Elemente des Stacks werden kopiert und in gleicher Reihenfolge zusätzlich auf den Stack gelegt. Zählt die Anzahl der Elemente im Stack und legt das Ergebnis auf den Stack. Zählt die Anzahl der Elemente im Stack beginnend beim mark-Symbol und legt das Ergebnis auf den Stack.

885

ch99b-Appendix.tex: (#322)

herbert

B

PostScript

PS-Name

Stack-Parameter

Funktion

currentcmykcolor



currentgray currenthsbcolor

– –

currentlinewidth currentmatrix

matrix

currentpoint



currentrgbcolor



curveto

x1 y1 x2 y2 x3 y3

cvn cvs

string any string

cvx def

any key value

end



defaultmatrix

matrix

dtransform

dx dy

Gibt die aktuelle Farbe in CMYK-Kodierung zurück. Gibt den aktuellen Benutzer-Grauwert zurück. Gibt die aktuelle Farbe in HSB-Kodierung zurück. Gibt die aktuelle Liniendicke zurück. Die Elemente von matrix werden durch die der aktuellen CTM ersetzt. Gibt die Koordinaten des aktuellen Punkts zurück. Gibt die aktuelle Farbe in RGB-Kodierung zurück. Dem aktuellen Pfad (aktueller Punkt muss existieren) wird eine Bézierkurve angehängt mit dem Endpunkt (x3 ,y3 ) und den Stützpunkten (x1 ,y1 ) und (x2 ,y2 ) string wird in /string konvertiert. Erzeugt einen identischen ASCII-String von any. any erhält das Attribut ausführbar. Im aktuellen Dictionary wird der Schüssel /key mit dem Wert value assoziiert. Entfernt das aktuelle Dictionary vom Dictionary-Stack. Schreibt die Voreinstellung der CTM nach matrix. Transformiert die beiden Werte in die des Gerätekoordinatensystems. dito., nur wird matrix statt der CTM für die Tramsformation benutzt. Innere Fläche des aktuellen Pfades wird nach der gerade/ungerade-Regel mit der aktuellen Farbe gefüllt. Die beiden Objekte werden auf Gleichheit überprüft. any wird ausgeführt. Verlässt die aktuelle Schleife. Innere Fläche des aktuellen Pfades wird mit der aktuellen Farbe gefüllt. Das mit /fontname assoziierte Font-Dictionary wird auf den Stack gelegt.



dx dy matrix eofill



eq

any1 any2

exec exit fill

any

findfont

/fontname

– –

886

ch99b-Appendix.tex: (#322)

herbert

B.2

PS-Name

Stack-Parameter

for

init inc end proc

Die nicht-mathematischen PS-Funktionen

Funktion

Es wird eine Schleife erzeugt, die bei init beginnend solange durchlaufen wird, bis beim jeweiligen Inkrementieren mit inc der Wert end erreicht oder überschritten wird. forall obj proc Für jedes Element eines Objekts vom Typ array, dict oder string wird proc angewendet. Die beiden Objekte werden auf größer/gleich überge any1 any2 prüft. Aus dem array wird das n-te Element auf den Stack gt array n gelegt. Stellt den alten grafischen Zustand wieder her grestore – (Pfad, Ursprung, aktuelle Farbe, . . . ) Sichert den aktuellen grafischen Zustand (Clippinggsave – Pfad, aktuelle Transformationsmatrix, DashPattern, Device, Farbe, Flatness, Font, HalftoneScreen, Liniendicke, Linecap, Linejoin, Miter-Limit, Pfad, Transfer-Funktion und Zeigerposition). ge any1 any2 Die beiden Objekte werden auf größer überprüft. idtransform dx dy Umkehrung (Invertieren) der dtransform Funktion. if bool proc if Ist bool wahr, dann wird proc ausgeführt. ifelse bool proc1 proc2 ifelse Ist bool wahr, dann wird proc1 ausgeführt, anderenfalls proc2. Das n-te Elemente des Stacks wird auf den Stack index xn ...x1 x0 n kopiert, wobei die Zählung bei Null beginnt. itransform x y Umkehrung (Invertieren) der transform Funktion. le any1 any2 Die beiden Objekte werden auf kleiner/gleich überprüft. length obj Die Länge eines Objekt vom Typ array, dict oder string wird auf den Stack gelegt und das Objekt entfernt. lineto x y Vom aktuellen Punkt wird eine Linie zu (x,y ) gezogen. Zusätzlich wird (x, y ) zum neuen aktuellen Punkt. loop proc Die Prozedur wird solange ausgeführt bis sie über eine interne exit-Anweisung verlassen wird. lt any1 any2 Die beiden Objekte werden auf kleiner überprüft. mark – Legt ein mark-Objekt auf den Stack. moveto x y dito., nur dass keine Linie gezogen wird. newpath – Löscht den aktuellen Pfad und beginnt einen neuen. not val Bildet die Negation oder das Komplement des Stackelements.

887

ch99b-Appendix.tex: (#322)

herbert

B

PostScript

PS-Name

Stack-Parameter

Funktion

or pop pstack

val1 val2 any

put rand

array n any

rcurveto repeat roll rlineto

x1 y1 x2 y2 x3 y3 n proc a b... n j dx dy

rmoveto rotate

dx dy angle

Bildet die Oder-Verknüpfung. Löscht das oberste Stackelement. Alle Stackelemente werden auf die Standardausgabe geschrieben, ohne dass der Stack selbst verändert wird. Ersetzt das n-te Element von array durch any. Eine Zufallszahl (0 ≤ x ≤ 232 − 1) wird auf den Stack gelegt. Wie curveto, nur mit relativen Koordinaten. Die Prozedur wird n-mal ausgeführt. n Objekte vom Stack nehmen und j-mal rotieren. Vom aktuellen Punkt wird eine Linie zu (x + dx, y + dy ) gezogen. Zusätzlich wird dieser Punkt zum neuen aktuellen Punkt. dito., nur dass keine Linie gezogen wird. Aktuelles Benutzerkoordinatensystem wird um den Winkel angle im mathematisch positiven Sinn gedreht. Die Rotation hat jetzt nur einen Einfluss auf matrix, die nach der Änderung wieder auf den Stack gelegt wird. Eine Rotation ist daher nicht sichtbar. Das aktuelles Benutzerkoordinatensystem wird durch x y neu skaliert. Analog zu rotate. font wird um den Faktor scale neu skaliert. Aktuelle Zeichenfarbe festlegen. Festlegung des aktuellen Linienmusters. Festlegung des aktuellen Fonts. Der aktuelle Benutzer-Grauwert wird festgelegt. Aktuelle Zeichenfarbe festlegen. linecap-Wert festlegen. linejoin-Wert festlegen. Die aktuelle Liniendicke wird festgelegt. Ersetzt die CTM durch matrix. Aktuelle Zeichenfarbe festlegen. string wird an der aktuellen Position im aktuellen Font ausgegeben.





angle matrix

scale

x y

scalefont setcmykcolor setdash setfont setgray sethsbcolor setlinecap setlinejoin setlinewidth setmatrix setrgbcolor show

x y matrix font scale cmyk array offset font val hsb int int val matrix rgb string

srand

int

string stroke

n

transform

x y



x y matrix

Zufallszahlengenerator mit int initialisieren. Einen String aus n Zeichen auf den Stack legen. Der aktuelle Pfad wird mit der aktuellen Liniendicke und -farbe nachgezogen. Konvertieren von (x,y ) in das Gerätekoordinatensystem. Konvertieren von (x,y ) in das Gerätekoordinatensystem.

888

ch99b-Appendix.tex: (#322)

herbert

B.3

PS-Name

Stack-Parameter

translate

x y

Die PS-Definitionen von pstricks.pro

Funktion Der Ursprung des Benutzerkoordinatensystems wird auf (x,y ) gesetzt.

xor [ ]

x y matrix val1 val2 – [a b...

Analog zu rotate. Bildet die Exclusiv-Oder-Verknüpfung. Legt ein mark-Objekt auf den Stack. Bildet ein array aus den Stackelementen, beginnend beim letzten mark-Objekt und legt es auf den Stack.

B.3 Die PS-Definitionen von pstricks.pro Die Haupt-Headerdatei pstricks.pro hat mehrere Konstanten und Funktionen definiert, die beispielsweise bei einer Anwendung von \psplot oder \psplotDiffEqn das Eingeben der mathematischen Funktion erleichtern können. In der folgenden Liste findet man die wichtigsten in einer Zusammenfassung. Weitere Erklärungen findet man in den anderen Listen. Auch die anderen Pakete, die eigene Prologdateien haben, definieren teilweise allgemeine Konstanten, die dann jedoch in der Regel sehr anwendungsspezifisch sind und deswegen hier nicht weiter aufgelistet werden. Der Zugriff auf Konstanten und Funktionen aus pstricks.pro ist im allgemeinen direkt möglich. Ansonsten muss die jeweilige Prologdatei auf den so genannten »user dictionary stack« gelegt werden, beispielsweise: tx@3DDict begin PS-Code end In der Regel braucht man dabei das Haupt-Dictionary tx@Dict nicht zu laden, da alle PSTricks-Operationen ohnehin innerhalb von tx@Dict ausgeführt werden. Dies gilt jedoch nicht für die anderen, im nächsten Abschnitt aufgeführten Dictionaries. PS-Name

Stack-Parameter

Funktion

CM SLW CLW CP ED L T TMatrix RAngle Atan ATAN1 Div NET

3 × 3 Matrix Wert – – /Name Wert xy xy – – xy x xy xy xy rα –

Matrix wird durch aktuelle Transformationsmatrix ersetzt Oberstes Stackelement wird zur Liniendicke Aktuelle Liniendicke auf den Stack legen Koordinaten des aktuellen Punktes auf den Stack legen Wert unter /Name speichern (exch def) Linie nach (x,y ) ziehen (x,y ) wird neuer Koordinatenursprung TMatrix auf {} setzen RAngle gleich Null setzen Wenn atan nicht definiert ist, Null zurückgeben arctan(−x/ − 1) Wenn y gleich Null ist, dann x zurückgeben -x p -y zum neuen Ursprung machen x2 + y 2 Polarkoordinaten in kartesische umwandeln 3.14159265359

Pyth PtoC Pi

Fortsetzung . . .

889

ch99b-Appendix.tex: (#322)

herbert

B

PostScript

. . . Fortsetzung PS-Name

Stack-Parameter

Funktion

TwoPi Euler RadtoDeg DegtoRad

– – x α

6.28318530718 2.71828182846 x von Rad nach Grad wandeln α von Grad nach Rad wandeln

B.4 Die Namen der PSTricks-Dictionaries Im letzten Abschnitt wurde bereits gezeigt, wie man auf die verschiedenen Prologdateien zugreifen kann. Für den Fall, dass man eine entsprechende Funktion nutzen möchte, aber nicht die entsprechende TEX-Datei laden will, kann mit \pstheader{Dateiname} die Prologdatei dennoch geladen werden. Die Namen der Dictionaries der Prolodateien aus Abschnitt 1 auf Seite 164 werden im Folgenden alphabetisch aufgelistet, wobei eine Datei ohne weiteres mehrere Dictionaries definieren kann: Paketname

Dateiname

Dictionaryname

pst-3d pst-3dplot pst-bar pst-bezier pst-blur pst-cie pst-circ pst-coil pst-electricfield pst-eucl pst-fractal pst-func pst-fun pst-grad pst-knot pst-light3d pst-magneticfield pst-map3dII pst-map3d pst-mirror pst-math pst-node pst-optexp pstricks-add pstricks

pst-3d.pro pst-3dplot.pro pst-bar.pro pst-bezier.pro pst-blur.pro pst-cie.pro pst-circ.pro pst-coil.pro pst-electricfield.pro pst-eucl.pro pst-fractal.pro pst-func.pro pst-fun.pro pst-grad.pro pst-psm.pro pst-light3d.pro pst-magneticfield.pro map3dII.pro map3d.pro pst-mirror.pro pst-math.pro pst-node.pro pst-optexp.pro pstricks-add.pro pst-algparser.pro pstricks.pro

tx@3Ddict tx@3DPlotDict tx@BarDict tx@Dict tx@PstBlurDict tx@CIEdict tx@CoilDict tx@EFieldDict tx@EcldDict tx@fractalDict tx@FuncDict tx@FunDict tx@GradientDict tx@KnotDict tx@LightThreeDDict tx@MFieldDict tx@mapII3DDict tx@map3DDict tx@Sphere3DDict tx@NodeDict tx@OptexpDict tx@addDict tx@CoreAnalyzerDict tx@Dict

Fortsetzung . . .

890

ch99b-Appendix.tex: (#322)

herbert

B.4

Die Namen der PSTricks-Dictionaries

. . . Fortsetzung Paketname

Dateiname

pst-slpe pst-solarsystem pst-solides3d pst-spectra pst-spirograph pst-text pst-tools

pst-slpe.pro pst-solarsystem.pro pst-solides.pro pst-spectra.pro pst-spirograph.pro pst-text.pro pst-tools.pro

Dictionaryname tx@AddMathFunc tx@AlgToPs tx@Derive tx@PstSlopeDict SolidesDict tx@PstWLDDict tx@spirographDict tx@TextPathDict

891

ch99b-Appendix.tex: (#322)

herbert

B

PostScript

J

Key’ (ungerade)

RotL 5

RotL 5

Aus 3

B-04-1

RotL 13

L

Ein

RotL f(x)

Aus 2

S

e

Key

e

RotL g(x)

Aus 1

Abbildung B.1: Schematische Darstellung eines Feistel-Expansionsnetzwerks mit den PSTricksStandardmakros.

X0 K00 K01

e

X1

X2

e

e

K10 K11

Multiplizieren und

Kn0 Kn1

Multiplizieren und

X3

e

Kn2 Kn3

Permutieren

Kr2 Kr3

SBoxen

C0

C1

K03 K02 K12 K13

Permutieren

Kr0 Kr1

B-04-2

C2

C3

Abbildung B.2: Das Prinzip von Rijndael, dem neuen AES-Encryption-Standard.

892

ch99-Buglist.tex: (#312)

herbert

A n h a n g

C

Bekannte Fehler C.1 pstricks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 893 C.2 pst-plot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 894 C.3 pst-node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 895

Wie jede andere Software auch, hat PSTricks einige Fehler, die wegen ihrer komplizierten Struktur bislang nicht behoben werden konnten. Gegenüber der letzten Auflage gelang es immerhin einen langwierigen Fehler zu beheben. Im folgenden werden die verbleibenden jeweils mit einem kurzen Beispiel angegeben.

C.1 pstricks C.1.1 Pfeile Wenn beim Zeichnen einer Linie oder Kurve Pfeile vorgesehen sind, kann dies Einfluss auf die Art und Weise haben, wie diese Linien gezeichnet werden.1 Diese Tatsache kann insbesondere für Bézierkurven unangenehm sein, denn bei Berücksichtigung von Pfeilen werden nicht mehr die Koordinaten des Punktes selbst sondern die des Pfeilanfanges benutzt. Das folgende Beispiel zeigt deutlich diesen Sachverhalt, der hier mit einem arrowinset=-4 und der Fülloption noch offensichtlicher wird. Abhilfe schafft eine lokale Modifikation der PS-Funktion /Arrow, indem der aktuelle Punkt nach Zeichnen der Pfeilspitze auf (0,0), dem Linienende gesetzt wird. Die Angabe von arrowinset=-4 (ein nach »hinten« verlängerter Pfeil) ist praktisch sinnlos und wird hier nur angewendet, um den Effekt deutlicher hervorheben zu können. \usepackage{pstricks} \psset{unit=1.5,fillstyle=solid,fillcolor=gray!20,arrowinset=-4,showpoints=true} \begin{pspicture}[showgrid=true](-0.2,-0.5)(4,2.2) \psdot*(1,1) \psdot*(3,1) \psbezier{->}(1,1)(0,2)(4,2)(3,1) \psbezier{->}(1,1)(0,0)(4,0)(3,1) \end{pspicture} \quad \makeatletter\pst@Verb{% /Arrow { CLW mul add dup 2 div /w ED mul dup /h ED mul /a ED { 0 h T 1 -1 scale } if w neg h moveto 0 0 L w h L w neg a neg rlineto 1 Thomas Siegel, 1997 ([email protected])

C

Bekannte Fehler

0 0 moveto % modification by Denis Girou gsave fill grestore } def }\makeatother \begin{pspicture}[showgrid=true](-0.2,-0.5)(4,2.2) \psdot*(1,1) \psdot*(3,1) \psbezier{->}(1,1)(0,2)(4,2)(3,1) \psbezier{->}(1,1)(0,0)(4,0)(3,1) \end{pspicture}

2b

2 b

1 b

0 b

1

2

b

1 b

0b 0

b

3

4

b

C-01-1

b

b

b

0

1

2

3

4

C.2 pst-plot C.2.1 \savedata Das Makro \savedata kann nicht innerhalb eines anderen Makros benutzt werden. Es gibt zwar keine Fehlermeldung, aber die verschiedenen Plotmakros liefern keine Ausgabe, da aufgrund von catcode-Problemen letztlich nur der letzte gelesene Datensatz existiert.2 In den folgenden Beispielen ist dieser Effekt deutlich zu sehen. Die mittlere Abbildung zeigt das linke Beispiel, jetzt jedoch in ein \psframebox-Makro gesetzt. Es wird keine Grafik erstellt, im Gegensatz zum rechten Beispiel, da das \savedata-Makro jetzt außerhalb von \psframebox steht. \usepackage{pst-plot} \begin{pspicture}(-1,-1)(2,2) \savedata{\test}[-1.09 -0.55 -0.4 -0.1 0 1.02 1.28 0.06 1.51 1.21] \dataplot[linewidth=2pt]{\test} \psaxes{->}(0,0)(-1,-1)(2,2) \end{pspicture} \psframebox{\begin{pspicture}(-1,-1)(2,2) \savedata{\test}[-1.09 -0.55 -0.4 -0.1 0 1.02 1.28 0.06 1.51 1.21] \dataplot[linewidth=2pt]{\test} \psaxes{->}(0,0)(-1,-1)(2,2) \end{pspicture}} \savedata{\test}[-1.09 -0.55 -0.4 -0.1 0 1.02 1.28 0.06 1.51 1.21] \psframebox{\begin{pspicture}(-1,-1)(2,2) \dataplot[linewidth=2pt]{\test} \psaxes{->}(0,0)(-1,-1)(2,2) \end{pspicture}}% 2 Ivan Maio 1997, ([email protected])

894

ch99-Buglist.tex: (#312)

herbert

C.3 pst-node

C-02-1

1

−1

1

1 −1

−1

1

1 −1

−1

1 −1

Für diesen Fehler wird es in naher Zukunft keine Abhilfe geben, außer der einfachen Methode \savedata nicht innerhalb eines anderen Makros zu nutzen, was sich letztlich immer realisieren lässt.

C.3 pst-node C.3.1 Knoten Normalerweise kann man mit \rput beliebige Objekte relativ zum aktuellen Ursprung positionieren. Nimmt das Objekt allerdings selbst Bezug auf definierte Knoten, so liefert \rput kein korrektes Ergebnis.3 \usepackage{pst-node} \begin{pspicture}(5.5,3) \qdisk(5,0){2mm} \qdisk(0,2){2mm}\rput(1,1){\psline[linewidth=2pt](5,0)(0,2)}% richtig \end{pspicture}\quad\begin{pspicture}(5.5,2) \Cnode*(5,0){f1} \Cnode*(0,2){f2} \rput(1,1){\psline[linewidth=2pt](f1)(f2)}% falsch, \rput ohne Effekt \end{pspicture}

C-03-1

Bislang ist noch keine Lösung für dieses Problem bekannt, sodass entweder nur normale Koordinaten verwendet werden oder aber die Knoten bereits die relative Verschiebung von \rput berücksichtigen. Ein ähnliches Problem ergibt sich beim Setzen von zwei Labels für eine Knotenverbindung. Verwendet einer von ihnen selbst eine Knotenverbindung, so wird das zweite Label falsch gesetzt.4 3 Thomas Siegel. 1998 ([email protected]) 4 Anthony Doggett, 1999 ([email protected])

895

ch99-Buglist.tex: (#312)

herbert

C

Bekannte Fehler

\usepackage{pst-node}

falsch

C-03-2

\begin{pspicture}(3,-3) \newcommand{\richtig}{% \pnode(0,0){A} \pnode(2,0){B} % \psline[linestyle=dashed](A)(B)} \pcline[linewidth=2pt](0,0)(3,-3) \naput{\richtig}\nbput{richtig} % richtig \renewcommand{\richtig}{% \pnode(0,0){A} \pnode(2,0){B}% \ncline[linestyle=dashed]{A}{B}}\hfill \pcline[linewidth=2pt](0,0)(3,-3) \naput{\richtig}\nbput{falsch} % falsch \end{pspicture}

richtig

Das zweite Label »falsch« müsste eigentlich ebenfalls an dieselbe Position wie »richtig« gesetzt werden. Dies funktioniert jedoch nur für das Label der gestrichelten Linie, statt unterhalb der Linie wird »falsch« oberhalb platziert. Auch für diesen Fehler ist keine sinnvolle Lösung in Sicht.

C.3.2 Knotenlabel Im Zusammenhang mit dem Sprachoption french, beziehungsweise dem entsprechenden Paket, können die Kurzformen zum Platzieren der Label nicht angewendet werden, da diese speziellen Zeichen von der french-Option als aktiv markiert wurden. Dieses Problem tritt nicht im Zusammenhang mit dem babel-Paket und der Option french auf.5 \documentclass{article} \usepackage{pstricks} \usepackage{pst-node} \usepackage{french} \begin{document} \begin{psmatrix} E&F\\ G&H \ncline{1,1}{1,2}^w \ncline{2,1}{2,2}_f \ncline{1,1}{2,1}v \end{psmatrix} \end{document}

Dieses Problem kann behoben werden, wenn die PSTricks-Umgebung in eine beliebige Sprachumgebung gesetzt wird, die die speziellen Zeichen nicht aktiv macht, beispielsweise Deutsch oder auch Englisch oder aber durch das Verwenden des babelPakets mit der french-Option. \documentclass{article} \usepackage{pstricks} \usepackage{pst-node} \usepackage[french]{babel} [ ... ]

5 Philippe Esperet, 1996 ([email protected])

896

ch99-Buglist.tex: (#312)

herbert

A n h a n g

D

PDF-Ausgabe D.1 XELATEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 897 D.2 auto-pst-pdf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 898 D.3 ps2pdf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 900 D.4 pdftricks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 900 D.5 Grafik extern »on-the-fly« erstellen. . . . . . . . . . . . . . . . . . . . . . . . . . 901

Die meisten Grafiken können von TEX nicht direkt verarbeitet werden. Stattdessen wird dieser TEX-fremde Code intern innerhalb von so genannten \special-Anweisungen gekapselt. Einzig die Abmessung der Grafik muss während des Textsatzes bekannt sein. Anderenfalls wird über den bestehenden Text gezeichnet (siehe Abschnitt 2.5 auf Seite 26). Durch Sichtbares wird der Inhalt der \special-Anweisungen erst vom Ausgabetreiber ersetzt. Im Falle von PS-Code bedeutet dieses Ersetzen einen großen Aufwand, da es sich bei PS um eine mächtige Programmiersprache handelt, deren Anweisungen – abgesehen von Spezialfällen – einen sehr leistungsfähigen Interpreter verlangen. Der in pdfTEX oder LuaTEX eingebaute Ausgabetreiber ist nicht in der Lage, diese Aufgabe zu erfüllen. Um den in einer \special-Anweisung oder einzubindenen EPS-Grafik enthaltenen PS-Code in einem pdfLATEX- oder LuaLATEX-Dokument verwenden zu können, gibt es mehrere Varianten, von denen insbesondere die Anwendung von XELATEX oder des Pakets auto-pst-pdf relativ problemlos sind.

D.1 XELATEX Mit XELATEX kann PS-spezifischer Code im Allgemeinen problemlos verwendet werden. Vorausgesetzt wird lediglich das Program xdvipdfmx, was bei jeder bekannten TEXDistribution der Fall sein sollte. Der Umwandlungsprozess findet bei XELATEX im Hintergrund statt, sodass sich der Anwender um nichts weiter kümmern muss; wird vom Programm eine PS -spezifische \special-Anweisung erkannt, wird als Ausgabeformat .xdv gewählt und abschließend das Programm xdvipdfmx gestartet.

D

PDF-Ausgabe

\usepackage{pst-plot} D-01-1

\begin{psgraph}(0,0)(4,2){5cm}{3cm} \psaxes{->}(0,0)(4,2)[$x$,0][$y$,90] \psplot[algebraic]{0}{4}{x/2+sin(2*x)} \end{psgraph}

y 2

1

x

0 0

1

2

3

4

Lediglich  bei einigen Anwendungen mit Knoten (pst-node) und Textmanipulationen (pst-text) kann diese Methode versagen. Das Programm XELATEX sollte bei allen gängigen TEX-Distributionen über ein Auswahlmenü zur Verfügung stehen. Zu beachten ist, dass die Eingabekodierung UTF-8 Standard ist und das Paket inputenc daher nicht zu laden ist. Mit dem Paket fontenc können Schriften im Format OpenType oder TrueType eingebunden werden. Der gesamte Quellcode für obiges Beispiel sieht wie folgt aus: \documentclass{article} \usepackage{fontspec} \usepackage{libertine} \usepackage{pst-plot} \begin{document} \begin{psgraph}(0,0)(4,2){5cm}{3cm} \psaxes{->}(0,0)(4,2)[$x$,0][$y$,90] \psplot[algebraic]{0}{4}{x/2+sin(2*x)} \end{psgraph} \end{document}

D.2 auto-pst-pdf Das Paket auto-pst-pdf von Will Robertson vereinfacht den gesamten Prozess der externen Grafikerstellung, indem es alle notwendigen Dinge innerhalb eines pdflatex-, lualatex- oder xelatex-Laufs ermöglicht. Die Anwendung eines Skripts oder mehrerer Programme ist nicht mehr nötig. Vorausgesetzt wird allerdings, dass externe Programme ausgeführt werden dürfen, was mit der Programmoption shell-escape erlaubt werden kann. Für MiKTEX-Anwender ist alternativ die Option enable-write18 möglich. Diese Option kann man über das Konfigurationsmenü des Editors dem Programmaufruf hinzufügen. Abbildung D.1 auf der nächsten Seite zeigt dies exemplarisch für den Editor TEXstudio. Das Paket auto-pst-pdf lädt intern das Paket pst-pdf, welches wiederum das Paket preview lädt. Ohne Angabe einer Option geht auto-pst-pdf davon aus, dass die Dateiendung .tex gewählt wurde. Anderenfalls ist sie als Option dem Paket zu übergeben:

898

ch99c-Appendix.tex: (#307)

herbert

D.2 auto-pst-pdf

Abbildung D.1: Ergänzen der Option shell-escape im Konfigurationsmenü des Editors TEXstudio.

\usepackage[ext=ltx2crop]{auto-pst-pdf} \usepackage{pst-plot}

D-02-1

1

\begin{pspicture}(0,0)(4,2) \psaxes{->}(0,0)(4,2) \end{pspicture}

0 0

1

2

3

Wird eine andere als die Umgebung pspicture verwendet, so ist dies in die Umgebung postscript einzubetten, welche vom Paket pst-pdf bereitgestellt wird. \usepackage[ext=ltx2crop]{auto-pst-pdf} \usepackage{pst-plot}

D-02-2

\begin{postscript} \begin{psgraph}[ llx=-5mm,lly=-5mm](0,0)(4,2){5cm}{3cm} \psaxes{->}(0,0)(4,2) \end{psgraph} \end{postscript}

Möchte man nur eine einzige Grafik erstellen und diese später als Grafik einbinden, so kann die Dokumentenklasse standalone verwendet werden, die jede einzelne Umgebung pspicture auf einer eigenen Seite ausgibt. Zu beachten ist dabei, dass die Koordinatenangaben für pspicture, beziehungsweise psgraph auch den Platz für die Labels berücksichtigen. Die Angaben für beispielsweise \psaxes sollten also immer kleiner sein. \documentclass[pstricks, border=10pt]{standalone} \usepackage{pst-plot}

D-02-3

1 0 0

1

2

3

\begin{pspicture}(-5mm,-5mm)(4.5,2.5) \psaxes{->}(0,0)(4,2) \end{pspicture}

Um die Grafiken von eventuell umgebenen Weißraum zu beseitigen, wird das Programm pdfcrop von Heiko Oberdiek benutzt (http://www.ctan.org/tex-archive/ support/pdfcrop/). Da dieses ein Perlskript ist, muss ein entsprechender Interpreter installiert sein. Anderenfalls muss die Option crop=off benutzt werden. Für Windows kann man beispielsweise bei http://www.activestate.com/Products/activeperl/ index.plex ein kostenloses Perl bekommen. Bei Linux und MacOS X ist es standardmäßig vorhanden.

899

ch99c-Appendix.tex: (#307)

herbert

D

PDF-Ausgabe

Folgende Optionen sind für das Paket auto-pst-pdf möglich, wobei die Standardwerte für Schalter als erstes angegeben sind: . crop=on|off: Bei fehlendem Perlinterpreter kann die Anwendung von pdfcrop abgeschaltet werden . cleanup={log,aux,dvi,ps,pdf}: Angabe der Dateien, die am Ende gelöscht werden sollen. . runs=2: Werden in der zu erstellenden Abbildungen Verweise benutzt, so muss LATEX mehrmals durchlaufen. . latex={-interaction=nonstopmode}: In der Regel wird man dem LATEX-Lauf keine weiteren Optionen mitgeben wollen. . dvips={-o -Ppdf} Für das Programm dvips wird der Srtandardtreiber PDF benutzt. . pspdf={-dAutoRotatePages=/None}: Ghostscript soll keine automatischen Rotationen vornehmen, falls beispielsweise ein \rput-Befehl dies vorsieht. . pdfcrop={}: Optionen für das Programm pdfcrop, falls crop=on gewählt wurde.

D.3 ps2pdf Mit ps2pdf, einem speziellen auf ghostscript basierenden Zusatzprogramm, kann man auf einfache Weise ein gesamtes Dokument von PS nach PDF wandeln. Im einfachsten Fall reicht ein simples ps2pdf file.ps Allerdings stehen bei dieser Methode sämtliche zusätzlichen Möglichkeiten, die pdfLATEX bietet, nicht zur Verfügung. Andererseits gilt es hier als positiv zu vermerken, dass diese Methode nur in ganz seltenen Fällen versagt. Nebenbei kann man mit ps2pdf auch einzelne mit PSTricks erstellte Grafiken ins PDF-Format wandeln und anschließend mit dem Programm pdfcrop den weißen Rand beseitigen. Voraussetzung ist, dass man mit \pagestyle{empty } verhindert, dass Text im Bereich der Kopf- oder Fußzeile ausgegeben wird.

D.4 pdftricks Man könnte vermuten, dass pdftricks ähnlich wie pst-pdf arbeitet, jedoch verwendet es weder das Paket preview, noch hat es derartig viele Möglichkeiten. pdftricks erstellt aus den mit der pdfpic Umgebung gekapselten PSTricks Grafiken eigenständige LATEXDokumente und lässt sie dann anschließend selbst ausführen. In jedem Fall ist pdftricks nicht die PDF-Variante von PSTricks. In der Präambel müssen nach dem Laden des Paketes pdftricks alle PSTricksrelevanten Pakete in die psinputs Umgebung gestellt werden. Innerhalb des Dokumentes muss jede PSTricks-Grafik von der pdfpic Umgebung umschlossen werden, wobei insbesondere auch darauf zu achten ist, dass alle Makros auch innerhalb dieser Umgebung bekannt sind. Neu definierte Makros müssen entweder in der psinputs oder in der pdfpic Umgebung stehen.

900

ch99c-Appendix.tex: (#307)

herbert

D.5

D-04-1

foo

bar

Grafik extern »on-the-fly« erstellen

\usepackage{pdftricks} %\usepackage[miktex]{pdftricks}% MiKTeX \begin{psinputs} \usepackage{pstricks} \end{psinputs} foo \begin{pdfpic} \begin{pspicture}(3,2) \psline{||}(0,0.3)(3,1.9) \end{pspicture} \end{pdfpic} bar

Hat man dies alles erfolgreich erledigt, so wird nicht LATEX sondern pdfLATEX gestartet: pdflatex –shell-escape file die Option shell-escape ist zwingend, da pdfTEX sonst nicht erlaubt wird, externe Programme auszuführen. Je nach Entwicklungsumgebung kann es hier zu Abweichungen bei der Anwendung dieser Option kommen. Damit die Abbildungen erfolgreich als PDF-Grafiken eingefügt werden können, sind mindestens drei Durchläufe nötig. Die Grafiken sind hinterher in jedem Fall zu kontrollieren, denn pdftricks arbeitet ausschließlich mit dvips, welches große Probleme bei der Bestimmung der Grafikgröße haben kann. [15]

D.5 Grafik extern »on-the-fly« erstellen Es ist ohne weiteres möglich, innerhalb eines LATEX-Dokuments den Quellcode für ein zweites Dokument als Datei abzuspeichern, mit einem beliebigen LATEX-Programm laufen zu lassen und das Ergebnis gleich danach als Grafik einzubinden. Dieses Verfahren wird auch von der Zeitschrift »Die TEXnische Komödie« von DANTE angewendet, da sehr häufig Artikel eingereicht werden, die nicht mit dem Standardcompiler erstellt wurden. Das entsprechende Paket dtk-extern kann auch unabhängig von der Zeitschrift verwendet werden. Ähnlich zum Paket auto-pst-pdf lässt es Optionen für den externen Übersetzungsvorgang zu. Im Gegensatz dazu wird hier aber erwartet, dass ein komplettes Programm herausgeschrieben wird. Daher ist auch eine Anwendung mit beispielsweise ConTEXt möglich, was im Folgenden gezeigt werden soll. Der Standard PDFTEX-Compiler erstellt eine Ausgabe in der Version 1.5, wohingegen ConTEXt Version 1.7 ausgibt. Damit die von ConTEXt erstellte PDF-Datei eingebunden werden kann, muss dem PDFTEXCompiler mitgeteilt werden, dass er ebenfalls die Version 1.7 erzeugen soll. Dazu wird dem Makro \pdfminorversion die Zahl 7 zugewiesen. \usepackage{dtk-extern} \pdfminorversion=7 % ConTeXt erstellt pdf 1.7 Dies ist eine \LaTeX-Datei, welche eine mit Con\TeX{}t »on-the-fly« erzeugte Abbildung einbinden wird: \begin{center} \begin{ErstelleGrafik}[compiler=context,crop,force, progpath=/usr/local/texlive/current/bin/x86_64-linux/]{ctxexa} \usemodule[pstricks] % Hauptmodul laden

901

ch99c-Appendix.tex: (#307)

herbert

D

PDF-Ausgabe

\usePSTRICKSmodule[pst-plot] % PSTricks Modul \setuppagenumbering[location={}]% keine Seitenzahl im Kopf \starttext % Beginn Textkörper \startPSTRICKS % Starte PSTricks Code \pspicture(-0.5,-4.5)(12.5,5) \psaxes{->}(0,0)(0,-4.5)(12,4.5)[$x$,-90][$y$,0] \psplot[linewidth=1.5pt,linecolor=red, plotpoints=3000,algebraic]{0}{11}{x^2/25*sin(4*x)} \endpspicture \stopPSTRICKS % Ende PSTricks Code \stoptext % Ende Textkörper \end{ErstelleGrafik} % Ende Umgebung \end{center}

Dies ist eine LATEX-Datei, welche eine mit ConTEXt »on-the-fly« erzeugte Abbildung einbinden wird:

D-05-1

y 4 3 2 1 0 1

2

3

4

5

6

7

8

−1 −2 −3 −4

902

ch99c-Appendix.tex: (#307)

herbert

9

10

11

x

A n h a n g

E

Fehler und Hilfe E.1 Häufige Fehler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 903 E.2 Hilfe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 904 E.3 Paketverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 904

E.1 Häufige Fehler . PSTricks ist die Abkürzung für PS Tricks, was bedeutet, dass fast alle DVI-Viewer keine korrekte Darstellung liefern. Man sollte grundsätzlich die PDF-Ausgabe erstellen und mit einem PDF-Viewer, beispielsweise Sumatra-PDF, betrachten. . Parameter, die außerhalb einer pspicture-Umgebung mit \psset gesetzt werden, sind global und gelten daher auch für weitere im Text vorhandene PSTricksGrafiken. . Bei Verwendung von PiCTeX erscheint die Meldung ,No room for a new \dimen‘. Grundsätzlich besteht keine Notwendigkeit das Paket pictex zu verwenden, da PSTricks weitaus mehr Möglichkeiten bietet. Muss man das Paket dennoch verwenden, so gibt die FAQ auf http://www.dante.de mehrere Möglichkeiten der Fehlerbehebung: 6.4.5 Bei Verwendung von PiCTeX erhalte ich die Meldung ,No room for a new \dimen‘. Wie kann ich das vermeiden? Hierbei ist zu beachten, dass faktisch alle neueren Distributionen ohnehin eTEX als Basis nutzen, sodass dies kein Problem mehr sein sollte. . Trotz Verwendung der center-Umgebung oder des \centering-Makros erscheint die Grafik nicht zentriert. Dies liegt in der Regel daran, dass die gewählten Koordinaten der pspicture-Umgebung nicht symmetrisch sind, auf einer Seite ist zu viel oder zu wenig Rand. Um dies herauszufinden setzt man die pspicture-Umgebung in eine \psframebox{ . . . }. . Ober- und unterhalb der Grafik ist zu viel oder zu wenig Platz. Dies entspricht prinzipiell dem vorhergehenden Punkt. . Die Linienoption dashed zeigt keine Wirkung. Dies ist in der Regel auf eine alte pstricks.pro oder pstricks.tex-Datei zurückzuführen. Eine Aktualisierung sollte hier Abhilfe schaffen, wobei man sich mit kpsewhich Datei den aktuellen

E

Fehler und Hilfe

Ort ausgegeben lassen kann: voss@shania:~> kpsewhich pstricks.pro /usr/local/texlive/texmf-local/dvips/pstricks.pro voss@shania:~> kpsewhich pstricks.tex /usr/local/texlive/texmf-local/tex/generic/pstricks/generic/pstricks.tex

Werden neue Dateien am selben Ort abgespeichert, so ist keine Aktualisierung der TEX-Dateistruktur erforderlich.

E.2 Hilfe Eine erste Anlaufstelle sollte immer die jeweilige Dokumentation eines Paketes sein, die insbesondere bei den neueren Paketen teilweise sehr ausführlich gehalten ist und hier auch immer in PDF-Form vorliegt. Eine weitere wichtige Anlaufstelle ist die PSTrickseigene Mailingliste, die man über http://tug.org/mailman/listinfo/pstricks erreicht und in deren seit 1997 bestehenden Archiv man suchen kann. Die bekannten News-Gruppen comp.text.tex und de.comp.text.tex können ebenfalls eine erste Anlaufstelle sein, wenn es insbesondere Probleme mit der TEX-Distribution gibt.

E.3 Paketverzeichnis Eine Liste aller derzeit verfügbaren Pakete kann immer nur für eine gewisse Zeit gültig sein. Die aktuellen Informationen erhält man immer durch einen Blick auf das CTAN und hier in das PSTricks-Verzeichnis: CTAN: /graphics/pstricks/. Etwas ausführlichere Informationen bietet der »TEX Catalogue Online«, der ständig von Robin Fairbairns und Jürgen Fenn auf dem neuesten Stand gehalten wird: http://mirror.ctan.org/help/ Catalogue/brief.html. Tabelle E.1: Liste aller derzeit bekannten PSTricks-Pakete

Name

Funktion

pst-3d pst-3dplot pst-2dplot pstricks-add pst-abspos pst-am pst-asr pst-bar pst-barcode pst-bezier pst-blur pst-bspline pst-calendar pst-cie pst-circ pst-coil

Grundlegende 3D-Operationen Planparallele 3D-Projektionen Matlab-kompatible Plots Erweiterte Makros für pstricks/pst-node/pst-plot Absolute Positionierung von Elementen Modulator–Demodulator Linguistik: »autosegmental representations« Bar-Charts Barcodes Bézierkurven Blurred shadows BSpline-Kurven Kalender in Tabellenform oder als Dodekaeder CIE-Farbräume Schaltkreise Spulen und Zickzacklinien Fortsetzung . . .

904

ch99d-Appendix.tex: (#315)

herbert

E.3

Paketverzeichnis

. . . Fortsetzung Name

Funktion

pst-cox pst-dbicons pst-diffraction pst-electricfield pst-eps pst-eucl pst-exa pst-fill pst-fr3d pst-fractal pst-fun pst-func pst-gantt pst-geo pst-gr3d pst-grad pst-infixplot pst-intersect pst-jtree pst-knot pst-labo pst-lens pst-light3d pst-magneticfield pst-math pst-mirror pst-node pst-ob3d pst-ode pst-optexp pst-optic pst-osci pst-pad pst-pdf pst-pencil pst-pdgr pst-perspective pst-platon pst-plot pst-poly pst-qtree pst-sigsys pst-slpe pst-solarsystem

Reguläre Polytope ER-Diagramme Beigung von Licht am Einfach- und Doppelspalt Elektrische Feldlinien und Äquipotentiallinien Exportieren von PSTricks-Umgebungen als EPS Euklidische Geometrie Code-Beispiele für showexpl Füllen und Parkettieren 3D-Boxen Fraktale Grafiken Tier- und Comicfiguren Spezielle mathematische Funktionen Gantt-Charts Geografische Projektionen 3D-Gitter Farbgradienten Postfix–Infix Schnittpunkte von PostScript-Pfaden Bäume in der Linguistik Knotenlinien Chemische Elemente und Geräte Lupeneffekte 3D-Lichteffekte Magnetische Feldlinien einer Lorenzspule Erweiterte PS-Funktionen Projektionen auf einem sphärischen Spiegel Knoten und Verbindungen Einfache 3D-Objekte Lösen von Differentialgleichungssystemen Experimentelle optische Systeme Optische Systeme Oscilloskop Elastische Verbindungen PS–PDF Bleistiftdemonstrationen Medizinische »pedigrees« Perspektivische Darstellungen Platonische Körper Funktionen und Daten plotten Polygone PSTricks-Interface für qtree Signaldiagramme Erweiterte Farbgradienten Beispiele zum Sonnensystem Fortsetzung . . .

905

ch99d-Appendix.tex: (#315)

herbert

E

Fehler und Hilfe

. . . Fortsetzung Name

Funktion

pst-solides3d pst-soroban pst-spectra pst-stru pst-text pst-thick pst-tree pst-uml pst2pdf uml

Zentrische 3D-Projektionen Spielsequenzen setzen Frequenzspektren Statik Text- und Zeichenmanipulationen Sehr dicke Linien und Kurven Bäume UML-Diagramme Perlskript zur Anwendung von PDF LATEX UML-Diagramme

PSTricks-basierte Pakete bclogo Logos erstellen makeplot MatLab-ähnliche Plots piechart Skripts für ein Tortendiagramm gastex Automatentheorie makeplot Plotten von exportierten Matlab-Daten psbao Bao-Diagramme psgo Go-Diagramme RRGtree Linguistische Bäume für »Role and Reference Grammar« multido Schleifen sfg Erstellen von Signalflüssen vaucanson Automatentheorie

906

ch99d-Appendix.tex: (#315)

herbert

Literatur

[1]

M. Abramowitz, I. A. Stegun: Handbook of Mathematical Functions with Formulas, Graphs, and Mathematical Tables, 10. Aufl., National Bureau of Standards Applied Mathematics Series, U.S. Government Printing Office, Washington, D.C., USA, 2006, http : / / www . math . ucla . edu / ~cbm / aands / dl / abramowitz_and_stegun.tar.gz.

[2]

PostScript language tutorial and cookbook. (The blue Book), (Hrsg.: Adobe Systems, Inc.), Addison Wesley, Reading, Massachusetts, 1985, isbn: 0-20110179-3, http://www-cdf.fnal.gov/offline/PostScript/BLUEBOOK.PDF.

[3]

PostScript language program design. (The green Book), (Hrsg.: Adobe Systems, Inc.), Addison Wesley, Reading, Massachusetts, 1988, isbn: 0-201-14396-8, http: //www-cdf.fnal.gov/offline/PostScript/GREENBK.PDF.

[4]

PostScript language reference. (The red Book), 3rd, (Hrsg.: Adobe Systems, Inc.), Addison Wesley, Reading, Massachusetts, 1999, isbn: 0-201-37922-8, http : //www.adobe.com/products/pdfs/PLRM.pdf.

[5]

Hendri Adriaens: The xkeyval-package, 2005, CTAN:/macros/latex/contrib/ xkeyval/.

[6]

Hendri Adriaens, Uwe Kern: »xkeyval – new developments and mechanism in key handling«, TUGboat, 25.2 (Juli 2004), 194–198, issn: 0896-3207.

[7]

Marius Apetri: 3D-Grafik Programmierung, 1. Aufl., mitp-Verlag, Bonn, 2003.

[8]

Donald Arseneau: random – a package for pseudo random numbers, 1995, CTAN: /macros/generic/misc/random.tex.

[9]

Christoph Bersch: pst-optexp – a PSTricks package to draw optical setups, version 2.1, 2009, CTAN:/graphics/pstricks/contrib/pst-optexp/.

[10] Terry Burton, Herbert Voß: pst-barcode – a PSTricks package for printing barcodes, 2016, CTAN:/graphics/pstricks/contrib/pst-barcode/. [11] David P. Carlisle: Packages in the ‘graphics’ bundle, Jan. 2009, CTAN:/macros/ latex/required/graphics/grfguide.tex. [12] David. P. Carlisle: The keyval-package, Version 1.15, 2014, CTAN : /macros / latex/required/graphics/.

E

LITERATUR

[13] Bill Casselman: Mathematical Illustrations – a manual of geometry and PostScript, 1. Aufl., Cambridge University Press, Cambridge, 2005, http : / / www . math.ubc.ca/~cass/graphics/manual/. [14] David Chiang: pst-qtree – Linguistic trees, 2007, CTAN : /graphics / pstricks/contrib/pst-qtree/. [15] Radhakrishnan CV, Rajagopal CV, Antoine Chambert-Loir: pdftricks, 2003, CTAN:/macros/latex/contrib/supported/pdftricks/pdftricks.sty. [16] Patrick Drechsler: pst-pad – Haftmodelle, version 0.3a, 2008, CTAN : /graphics/pstricks/contrib/pst-pad/. [17] Chris Ellison, Hendri Adriaens: powerdot – a presentation class, Version 1.5a, 2015, CTAN:/macros/latex/contrib/powerdot/. [18] Hubert Gäßlein, Rolf Niepraschk: The pict2e-package, Version 0.3b, 5. Feb. 2016, CTAN:/macros/latex/contrib/pict2e/ (besucht am 14. 05. 2016). [19] Martin Giese: The pst-slpe-package, 2008, CTAN : /graphics / pstricks / contrib/pst-slpe/. [20] Martin Giese, Herbert Voß: The pst-blur-package, 2005, CTAN:/graphics/ pstricks/contrib/pst-blur/. [21] Jürgen Gilg: »PDF-Animationen«, Die TEXnische Komödie, 17.4 (Nov. 2005), 30– 37, issn: 1434-5897. [22] Denis Girou: »Présentation de PSTricks«, Cahier GUTenberg, 16 (Apr. 1994), 21–70. pst-fr3d – a PSTricks package for three dimensional frame boxes, 2004, CTAN:/graphics/pstricks/contrib/pst-fr3d/.

[23] —

pst-gr3d – a PSTricks package for three dimensional grids, 2005, CTAN: /graphics/pstricks/contrib/pst-gr3d/.

[24] —

[25] — pst-light3d – a PSTricks package for three dimensional lighten effects, 2005, CTAN:/graphics/pstricks/contrib/pst-light3d/. [26] Denis Girou, Herbert Voß: pst-fill – a PSTricks package for filling and tiling (Documentation), 2007, CTAN:/graphics/pstricks/generic/. [27] Denis Girou u. a.: pst-labo – a PSTricks package for chemical Objects, 2006, CTAN:/graphics/pstricks/contrib/pst-labo/. [28] Michel Goossens u. a.: The LATEX Graphics Companion: Illustrating Documents with TEX and PS, Addison-Wesley, Reading, MA, 2007, S. xxi + 900. [29] Michael C. Grant, David Carlisle: The PSFrag system, version 3, Nov. 1996, CTAN:/macros/contrib/supported/psfrag/pfgguide.tex. [30] Branko Grünbaum, Geoffrey Sheppard: Tilings and Patterns, Freeman und Company, New York, 1987. [31] Alan Hoenig: TEX Unbound: LATEX & TEX Strategies, Fonts, Graphics, and More, Oxford University Press, London, 1998. [32] Gernot Hoffmann: Equations of Motion for a Masspoint, Fachhochschule Ostfriesland, 2005, http : / / docs - hoffmann . de / masspoint09092002 . pdf (besucht am 14. 05. 2016).

908

ch-buchbib.tex: (#249)

herbert

LITERATUR

[33] — Function Graphs and Other Applications for PostScript, Fachhochschule Ostfreisland, 2005, http : / / docs - hoffmann . de / /pstutor22112002 . pdf (besucht am 14. 05. 2016). [34] Laura E. Jackson, Herbert Voß: »Die mathematischen Funktionen von PS«, Die TEXnische Komödie, 1/02 (März 2002), http://tug.org/PSTricks/pstplot/pst-plot.pdf. [35] — »Die Plot-Funktionen von pst-plot«, Die TEXnische Komödie, 2/02 (Juni 2002), 27–34, http://tug.org/PSTricks/pst-plot/pst-plot.pdf. [36]

Zhuhan Jiang: arrayjob, 2000, CTAN:/macros/generic/arrayjob/.

[37] Christoph Jorssen, Manuel Luque: pst-osci – a PSTricks package for oscilloscopes, 2005, CTAN:/graphics/pstricks/contrib/pst-osci/. [38] Christophe Jorssen, Herbert Voß: pst-math – a PSTricks package for mathematical function, 2004, CTAN:/graphics/pstricks/contrib/pst-math/. [39] —

The pst-circ-package, 2010, CTAN:/graphics/pstricks/contrib/pst-

circ/.

[40] David Kastrup: The preview Package for LATEX, Nov. 2002, CTAN : /support / preview-latex/. [41] Uwe Kern: Color extensions with the xcolor package, Version 2.12, 2016, CTAN: /macros/latex/contrib/xcolor/. [42] Nikolai G. Kollock: PostScript richtig eingesetzt: vom Konzept zum praktischen Einsatz, IWT, Vaterstetten, 1989. [43] Jean-Gabriel Luque, Manuel Luque: The pst-cox package, 2008, CTAN : %7B / graphics/pstricks/contrib/pst-cox/%7D. [44] Manuel Luque, Herbert Voß: pst-optic – a PSTricks package for optical objects, 2007, CTAN:/graphics/pstricks/contrib/pst-optic/. [45] Michael Mehlich: The fp package, Version 2.1c, 1996, CTAN:/macros/latex/ contrib/fp/. [46] MicroPress Inc.: VTEX/Free, 2003, CTAN : /systems / vtex/ (besucht am 14. 05. 2016). [47] — TEX Fonts, 2004, http://www.micropress-inc.com/fonts.htm (besucht am 14. 05. 2016). [48] — VTEX/Free v8.23 – the free VTEX distribution for OS/2 and Linux, 2004, http://www.micropress-inc.com/linux (besucht am 14. 05. 2016). [49] Frank Mittelbach, Michel Goosens: Der LATEX Begleiter, 2. Aufl., Pearson Education, München, 2005. [50] Rolf Niepraschk: »Anwendungen des LATEX-Pakets preview«, Die TEXnische Komödie, 1/2003 (Feb. 2003), 60–65. —

The ps4pdf Package, Mai 2003, CTAN:/macros/latex/contrib/ps4pdf/.

[52] —

The pst-pdf Package, Mai 2008, CTAN:/graphics/pstricks/contrib/

[51]

pst-pdf/.

[53] Rolf Niepraschk, Herbert Voß: »The package ps4pdf: from PostScript to PDF«, TUGboat, 22-4 (Aug. 2003), 290–292.

909

ch-buchbib.tex: (#249)

herbert

E

LITERATUR

[54] Rolf Niepraschk, Herbert Voß: PSTricks – mehr als nur ein alter Hut, DANTE 2004 in Darmstadt, 2004, http : / / userpage . fu - berlin . de / ~latex / PSTricks/Darmstadt2004.pdf. [55]

Heiko Oberdiek: pdfcrop, 2010, CTAN:/support/pdfcrop/.

[56] Premshree Pillai: infix-postfix.py, 2003, http://code.activestate.com/ recipes/228915-infixpostfix/ (besucht am 14. 05. 2016). [57] H. Adriaens, Ch. Ellison: The powerdot class, 2015, CTAN : /macros / latex / contrib/powerdot. [58] Sebastian Rahtz: Most of the PSTricks examples of The LATEX Graphics Companion, CTAN:/graphics/pstricks/doc/lgc/. [59] — »An introduction to PSTricks, part I«, Baskerville, 6.1 (Feb. 1996), 22–34, /usergrps/uktug/baskervi/. [60] — »An introduction to PSTricks, part II«, Baskerville, 6.2 (Apr. 1996), 23–33, /usergrps/uktug/baskervi/. [61] Klaus Richter: Computergrafik und Farbmetrik – Farbsysteme, PostScript, geräteunabhängige CIE-Farben, 1. Aufl., VDE-Verlag, Berlin und Offenbach, 1996. [62] Dominique Rodriguez: L’essentiel de LATEX et Gnu-Emacs. Manuel de réalisation de documents scientifiques, Dunod, Paris, 2000. pst-eucl – a PSTricks package for Euklidian geometry, 2006, CTAN : /graphics/pstricks/contrib/pst-eucl/.

[63] —

[64] Denis Roegel: MP2GL – prototyping 3D objects with and OpenGL, 2005, http: / / www . loria . fr / ~roegel / TeX / eurotex2005roegel . pdf (besucht am 14. 05. 2016). [65] Tomas G. Rokicki: »Advanced special support for dvi drivers«, TUGboat, 15.3 (Sep. 1994), 205–212, issn: 0896-3207. [66] — »A proposed standard for specials«, TUGboat, 16.4 (Dez. 1995), 395–401, issn: 0896-3207, http : / / www . tug . org / TUGboat / Articles / tb16 - 4 / tb49roki.pdf. [67] —

Dvips: A DVI-to-PS Translator, Version 5.66a, Feb. 1997, CTAN:/dviware/

dvips/dvips_man.pdf.

[68]

Christian Rolland: LATEX par la pratique, O’Reilly, Paris, 1999.

[69] Christine Römer: »PSTricks für linguistische Texte«, Die TEXnische Komödie, 20.2 (Mai 2008), 31–52, issn: 1434-5897. [70] Claus Schönleber, Frank Klinkenberg-Haaß: »Goldene Schnittmuster«, mcExtra, 2 (Feb. 1995), 21–25, http://www.schoenleber.org/penrose/f- dpenrose.html (besucht am 14. 05. 2016). [71] J. P. Snyder: »Map Projections–A Working Manual«, U. S. Geological Survey Professional Paper 1395 (1987), 138–140. [72] Ian Stewart: »Ungewöhnliche Kachelungen«, Spektrum der Wissenschaft (2001), 114, http://www.spektrum.de/magazin/ungewoehnliche- kachelungen/ 828148 (besucht am 14. 05. 2016).

910

ch-buchbib.tex: (#249)

herbert

LITERATUR

[73] The LATEX team: clsguide – documentation of LATEX class and package writing, http : / / www . latex - project . org, 31. März 2016, CTAN : /macros / latex / base/clsguide.pdf. [74] Boris Veytsman, Leila Akhmadeeva: »Drawing Medical Pedigree Trees with TEX and PSTricks«, The Practical TEX Journal, 4 (Nov. 2007), %7Bhttp://tug. org/pracjourn/2006-4/veytsman%7D. [75] Jean-Paul Vignault u. a.: The pst-solides3d-package, 2010, CTAN:/graphics/ pstricks/contrib/pst-solides3d/. [76] Herbert Voß: »Three dimensional plots with pst-3dplot«, TUGboat, 22-4 (Dez. 2001), 319, http://www.tug.org/TUGboat/Articles/tb22- 4/tb72voss3d. pdf. »VTEX«, Die TEXnische Komödie, 1/04 (März 2004), 46–51. [78] — Präsentationen mit LATEX, 1. Aufl., DANTE – Lehmanns Media, Heidelberg und Berlin, 2009.

[77]



[79] — PSTricks Support for pdf, 2010, http://PSTricks.tug.org/main.cgi? file=pdf/pdfoutput. The pstricks-add-package, 2010, CTAN:/graphics/pstricks/contrib/ pstricks-add/.

[80] —

[81] — LATEX Referenz, 3. Aufl., DANTE – Lehmanns Media, Heidelberg und Berlin, 2014. The pst-3dplot-package, 2015, CTAN:/graphics/pstricks/contrib/ pst-3dplot/.

[82] —

[83] Jana Voß, Herbert Voß: »The plot functions of pst-plot«, TUGboat, 22-4 (Dez. 2001), 314–318, http://tug.org/TUGboat/Articles/tb22-4/tb72vossplot. pdf. [84] Michael Wiedmann: References for TEX and Friends, 2005, http://www.miwie. org/tex-refs/ (besucht am 14. 05. 2016). [85] Zhigang Xiang, Roy A. Plastock: Computergrafik, 1. Aufl., mitp-Verlag, Bonn, 2003. [86] Timothy Van Zandt: PSTricks – PS macros for Generic TEX, Documented Code, 1997, CTAN:/obsolete/graphics/pstricks/doc/code/. [87]



The pst-eps package, 2001, CTAN:/graphics/pstricks/generic/.

[88] Timothy Van Zandt, Denis Girou: »Inside PSTricks«, TUGboat, 15 (Sep. 1994), 239–246. [89] Timothy Van Zandt, Rolf Niepraschk, Herbert Voß: The multido package, Version 1.42, 2010, CTAN:/graphics/pstricks/generic/. [90] Timothy Van Zandt, Herbert Voß: PSTricks – PS macros for Generic TEX, 2016, CTAN:http://PSTricks.tug.org/ (besucht am 18. 04. 2016).

911

ch-buchbib.tex: (#249)

herbert

Index der Befehle und Begriffe In diesem Index sind sämtliche Befehle und Sachbegriffe zusammengefasst. Um diese besser zuordnen zu können, ist ihr jeweiliger »Typ« mit einem Schlüsselwort versehen, wie beispielsweise Paket, Env. (Environment – Umgebung), Option, Wert (Optionswert), Länge, Programm oder/und dem jeweiligen Paketnamen, in dem dieser Begriff oder Befehl behandelt wird. Fehlt ein Paketname bei einem Befehl oder einer Umgebung, so ist davon auszugehen, dass es sich um einen LATEX-Standardnamen handelt. Die Angabe »Wert« bezieht sich jeweils auf eine Option, der dieser Wert zugewiesen werden kann und »demo« auf ein reines Beispiel, in dem dort dieses Makro oder die Länge oder ein anderer Typ definiert wurde. Ein kursiver Eintrag weist darauf hin, dass der Begriff oder Befehl in einem Beispiel auf der angegebenen Seite zu finden ist. Eine fette Seitennummer ist wie üblich der Hinweis auf einen Haupteintrag, bei dem der Begriff oder Befehl definiert eingehender behandelt wird.

Index der Befehle und Begriffe

Symbole

(Symbole–A)

acos (PostScript), 230 ACOSH (PostScript), 559

\* (pst-optexp), 741 *D Wert (pstricks), 126 *L Wert (pstricks), 126 *R Wert (pstricks), 126 *U Wert (pstricks), 126

} , 165 - Wert (pstricks), 54, 108 -) Wert (pstricks), 112 -> Wert (pstricks), 54, 107, 108 ->> Wert (pstricks), 108 -] Wert (pstricks), 108 -h Wert (pstricks-add), 114 -o Wert (pstricks), 112

{ , 165 /Compatible (PostScript), 101 /D (PostScript), 234 /Helvetica (PostScript), 238 /Multiply (PostScript), 101 /Normal (PostScript), 101 /Screen (PostScript), 101 /ShadingType (PostScript), 803 :D Wert (pst-node), 282 :U Wert (pst-node), 282, 283 Wert (demo), 112 cm-cm Wert (demo), 112 cm-cp Wert (demo), 112 \CMPL (pst-rrgtrees), 700 CMYK, 11, 454, 886 \Cnode (pst-node), 254–258, 261, 267, 267, 267, 287, 304, 895 \cnode (pst-node), 130, 130, 255, 257, 259–264, 266, 266, 267, 274, 282–286, 304, 335 \Cnode* (pst-node), 267 \cnodeput (pst-node), 267, 267, 268 \cnodeput* (pst-node), 267 \code (pstricks), 151, 151, 151, 152–154, 166, 167, 239 CodeFig Option (pst-eucl), 594, 600, 600, 601, 601, 611, 613, 614, 615–617, 620 CodeFigA Option (pst-eucl), 594, 620 CodeFigAarc Option (pst-eucl), 594, 601 CodeFigB Option (pst-eucl), 594, 620 CodeFigBarc Option (pst-eucl), 594, 601 CodeFigColor Option (pst-eucl), 594, 601, 611, 612–614, 615, 616, 617, 617

916

ch-index.tex: (#2)

herbert

Index der Befehle und Begriffe

(Forts.)

(C)

(Forts.)

CodeFigStyle Option (pst-eucl), 594, 601, 601, 611,

615–617 codejps Option (pst-solides3d), 809 coeff Option (pst-func), 560, 561–564, 566, 567 \coil (pst-circ), 485, 489, 494 coilarm Option (pst-coil), 162, 328, 329, 330 coilarmA Option (pst-coil), 328, 329, 330 coilarmB Option (pst-coil), 328, 329 coilaspect Option (pst-coil), 328, 330 coilheight Option (pst-coil), 328, 328, 329, 333–336 coilinc Option (pst-coil), 328, 330, 331, 331 coilwidth Option (pst-coil), 162, 327, 328, 328, 335

Collignon, 509, 512 Color Option (pst-fractal), 711, 712 \color, 11, 13, 13, 14, 15, 337 (xcolor), 15, 20, 20, 21, 21 color Option (pstricks-add), 91 color Paket, 7, 9, 11, 18, 169, 342, 346 color1 Option (pst-solides3d), 454 color2 Option (pst-solides3d), 454 color3 Option (pst-solides3d), 454 color4 Option (pst-solides3d), 454 \colorbox (xcolor), 14, 21, 22 colorCenters Option (pst-cox), 720 ColorFaceA Option (pst-mirror), 470 ColorFaceB Option (pst-mirror), 470 ColorFaceC Option (pst-mirror), 470 ColorFaceD Option (pst-mirror), 470 ColorFaceE Option (pst-mirror), 470 \colorlet (xcolor), 14, 15 ColorMatch Wert (pst-cie), 752 colorMode Option (pst-diffraction), 746, 751 colorsets, 15 ColorSpace Option (pst-cie), 752 colortbl Paket, 12 colorType Option (pst-platon), 476, 479 (pstricks-add), 651 colorVertices Option (pst-cox), 720 colsep Option (pst-node), 287, 287, 288, 289, 289, 290, 291 combine Option (pst-osci), 762 comma Option (pst-plot), 184, 196, 196 comment Option (uml), 696 .con Dateiendung, 4 concat (PostScript), 885 concat Wert (pst-3dplot), 385 concatmatrix (PostScript), 885 condition Option (pst-pdgr), 785 cone Wert (pst-solides3d), 418, 419, 421, 452 conecreux Wert (pst-solides3d), 422, 452 constI Option (pst-func), 567 constII Option (pst-func), 567 ConTEXt, 901 contrast Option (pst-cie), 752 (pst-diffraction), 746 \convertcolorspec (xcolor), 22 \coor (pstricks), 152

coorType Option (pst-3dplot), 401, 402 \coposeSolid (pst-solides3d), 465 copy (PostScript), 885 \CORE (pst-rrgtrees), 700, 701 Corners Option (pst-ob3d), 370, 371, 371 CornersColor Option (pst-ob3d), 370, 371 cornersize Option (pstricks), 46, 56, 60 CornersLength Option (pst-ob3d), 370

Cornu, 647 correctAngle Option (pstricks), 64, 66, 67 COS (PostScript), 559 cos (PostScript), 223, 230, 883 cosCoeff Option (pst-func), 569, 570 COSH (PostScript), 559

Cosinus, 34 Cosinus-Funktion, 232 CouleurDistillat Option (pst-labo), 658, 668, 668 couleurReactifBurette Option (pst-labo), 658, 668, 668 count (PostScript), 885 counter clockwise, 70 counttomark (PostScript), 885 \coupler (pst-circ), 491, 495 couplerstyle Option (pst-circ), 482, 495 courbe Wert (pst-solides3d), 425, 425, 462 courbeR2 Wert (pst-solides3d), 440 CourbeR2+ (PostScript), 462, 463 Courier Wert (pstricks), 36 \CoxeterCoordinates (pst-cox), 721, 721, 722 CP (PostScript), 889 cp Wert (demo), 112 \cput (pstricks), 123, 129, 267 \cput* (pstricks), 123 crosshatch Wert (pstricks), 94, 99, 100, 105 crosshatch* Wert (pstricks), 94 crystal Wert (pst-circ), 494 CSV, 554 CTM, 885, 886, 888 cube Wert (pst-solides3d), 418, 421, 452 Current point, 150 currentcmykcolor (PostScript), 886 currentgray (PostScript), 886 currenthsbcolor (PostScript), 886 currentlinewidth (PostScript), 886 currentmatrix (PostScript), 886 currentpoint (PostScript), 886 currentrgbcolor (PostScript), 886 CurvAbsNeg Option (pst-eucl), 594, 604, 604, 611 curvature Option (pstricks), 64, 64, 65, 65, 66, 215, 216 curve Wert (pst-eucl), 599 (pst-plot), 214, 215, 236 CurveAbsNeg Option (pst-eucl), 611 curved Wert (pst-circ), 494 \curveto (pstricks), 151 curveto (PostScript), 886 CurveType Option (pst-eucl), 594, 599, 599, 607 cvi (PostScript), 883

917

ch-index.tex: (#2)

herbert

(D)

Index der Befehle und Begriffe

pst-circ.pro, 164, 890 pst-coil.pro, 164, 890 pst-coxcoor.pro (pst-cox), 721 pst-dots.pro, 86, 164 pst-dots.pro (pstricks), 88 pst-electricfield.pro, 890 pst-eucl.pro, 164, 890 pst-fill.tex, 320 pst-fp (pstricks), 171 pst-fp.tex, 4 pst-fractal.pro, 164, 890 pst-fun.pro, 890 pst-func.pro, 164, 890 pst-grad.pro, 164, 890 pst-key.tex, 4 pst-laboObj.tex, 657, 677 pst-light3d.pro, 164, 890 pst-magneticfield.pro, 890 pst-math.pro, 164, 890 pst-mirror.pro, 890 pst-node.pro, 164, 890 pst-optexp.pro, 890 pst-psm.pro, 890 pst-slpe.pro, 164, 891 pst-solarsystem.pro, 891 pst-solides.pro, 164, 891 pst-solides3d.pro, 460 pst-spectra.pro, 164, 891 pst-spirograph.pro, 891 pst-text.pro, 164, 891 pst-tools.pro, 891 pstricks-add.pro, 164, 803, 890 pstricks.con, 4, 167 pstricks.pro, 164, 168, 175, 292, 706, 889,

(Forts.) cvn (PostScript), 886 cvr (PostScript), 883 cvs (PostScript), 886 cvx (PostScript), 886 CX Option (pst-mirror), 469, 472 cx Option (pst-fractal), 708 CY Option (pst-mirror), 469, 472 cy Option (pst-fractal), 708 cyan Wert (pstricks), 53, 59 cylindre Wert (pst-solides3d), 421, 452, 465 cylindrecreux Wert (pst-solides3d), 418, 421, 426,

452 CZ Option (pst-mirror), 469, 472

D D (PostScript), 234, 235 D Wert

(pst-tree), 295 (pstricks), 126 d Option (pst-diffraction), 749 damping1 Option (pst-am), 766 (pst-osci), 761, 764 damping2 Option (pst-am), 766 (pst-osci), 761, 764 dartcolor Option (pstricks), 98 \dash (pstricks), 53 dash Option (pstricks), 46, 52, 52, 52, 53, 138 dashed Wert (pstricks), 45, 47, 52, 57, 140, 903 \Data (demo), 235, 235 \data (demo), 554, 554 Data-matrix, 547 \dataplot (pst-plot), 233, 236, 237, 240 \dataplot* (pst-plot), 233 \dataplotThreeD (pst-3dplot), 414, 414, 415, 415 datas Option (pst-cie), 752 Dateien Changes, 4 cities.tex, 530 data1.csv (demo), 554 dataError.dat (demo), 235 distiller.cfg, 4 dvips.cfg, 4 dvipsone.cfg, 4 file.ps (demo), 153 latex.ltx, 166 map3d.pro, 890 map3dII.pro, 890 psm (pst-knot), 796 pst-3d.pro, 890 pst-3dplot.pro, 164, 890 pst-algparser.pro, 164, 890 pst-bar.pro, 164, 890 pst-barcode.pro, 164, 535 pst-barcode.tex, 535 pst-bezier.pro, 890 pst-blur.pro, 164, 890 pst-cie.pro, 890

890, 903 pstricks.sty, 5, 9, 93 pstricks.tex, 4, 9, 93, 133, 903 pstricks97.tex, 4 sfg.sty, 780 textures.cfg, 4 vtex.cfg, 4 vtex.con, 167 xcolor.pro, 20 xdvipdfmx.cfg, 4

Daten, 234 Datensatz, 382 datfile Wert (pst-solides3d), 427 Day Option (pst-solarsystem), 777 \day (pst-calendar), 791 deactivatecolor Option (pst-solides3d), 454 deceased Option (pst-pdgr), 784, 785 decimals Option (pst-plot), 217 decimalSeparator Option (pst-plot), 184, 196 DeclareAnime Option (aeb_pro), 808 \DeclareFixedFont, 314, 315, 316, 629, 790 \DeclareNewPSOperator (infix-RPN), 705, 706 Decran Option (pst-geo), 517, 527 (pst-solides3d), 416, 417, 452, 453 \def, 182, 307

918

ch-index.tex: (#2)

herbert

Index der Befehle und Begriffe

(D)

(Forts.)

(Forts.) Divisor, 172 Dl Option (pst-spectra), 768 dmax Option (demo), 235 dmin Option (demo), 235 Dobs Option (pst-geo), 517, 527 \DoCoordinate (demo), 235 342, 346, 347, 652 Dokumentenklasse \definecolorseries (xcolor), 14, 16, 16, 17, 18 beamer, 11, 781, 805, 811 \definecolorset (xcolor), 14, 15 powerdot, 11, 805, 813 \defineTColor (pstricks-add), 104, 105 prosper, 11 definition Option (pst-solides3d), 420, 434–436, 437, seminar, 11 437, 438, 438 standalone, 899 Definitionsintervall, 226 dodecahedron Wert (pst-solides3d), 423 \DefList Dodekaeder, 476, 793 (pst-asr), 702 Dokumentation, 904 (pst-qtree), 704, 705 \DontKillGlue (pstricks), 32, 165 deg (PostScript), 168 dot, 83, 86 \degrees (pstricks), 25, 26, 157, 161 dotangle Option (pstricks), 83, 85, 85 DegtoRad (PostScript), 568, 890 Dotmatrix, 89 Derivation Option (pst-func), 560, 561, 563 dotmatrix (PostScript), 650 Derive Option (pstricks-add), 641, 641, 642, 642 \dotnode (pst-node), 269, 287, 304 \detector (pst-circ), 487 dots Wert Dezimaltrenner, 196 (pst-plot), 214 Dia Wert (uml), 692 (pstricks), 94, 96 diamcercle Wert (pst-solides3d), 438 dots* Wert (pstricks), 96 Diameter Option (pst-eucl), 594, 602, 603, 619, 620, dotscale Option (pstricks), 53, 55, 83, 84, 85, 85, 86, 622 157, 170, 235, 269, 403, 562 DiameterA Option (pst-eucl), 594, 602, 620 dotsep Option (pstricks), 46, 53 DiameterB Option (pst-eucl), 594, 602, 620 dotsize Option (pstricks), 53, 55, 83, 84, 85, 85, 86, \dianode (pst-node), 268, 287, 304 87, 269, 404 \dianode* (pst-node), 268 dotstyle Option (pstricks), 83, 85, 86, 86, 87, 403, 562 dict (PostScript), 887 dotted Wert (pstricks), 45, 47, 53, 53, 57, 140 Differentialgleichung, 567, 643, 645, 646 doublecolor Option (pstricks), 46, 53, 69, 70 DiffusionBleue Wert (pst-labo), 672 doubleline Option (pstricks), 46, 55, 57, 105, 123, 140 \dim (pstricks), 152 doublesep Option (pstricks), 46, 53, 69, 70 dimen Option (pstricks), 46, 53, 54, 54 doubleset Option (pstricks), 53 Dimension, 26, 174 doubletube Option (pst-labo), 658, 666, 666, 674 dimension Option (pst-cox), 719, 720, 720, 721, 722 \dp, 309 \ding (pifont), 83, 124, 378 Drahtmodell, 366, 391 Dingbats Wert (pstricks), 36, 37 draw Wert (pst-solides3d), 417, 452, 452 Diode, 485 draw* Wert (pst-solides3d), 452, 452, 457 \diode (pst-circ), 485, 495 draw** Wert (pst-solides3d), 452, 452, 456, 457, 457, 466 Dipol, 484, 485 \drawbeam (pst-optexp), 740, 741 dipoleconvention Option (pst-circ), 482, 492 drawcenters Option (pst-cox), 720 dipolestyle Option (pst-circ), 482, 494, 495, 496, 497, 497 DrawCirABC Option (pst-eucl), 594, 602, 602, 616, 616 directconvention Option (pst-circ), 482, 490, 492 drawCoor Option (pst-3dplot), 383, 386, 386, 404–408 directional Wert (pst-circ), 495 drawedges Option (pst-cox), 720 Dirichletfunktion, 587 \drawfiber (pst-optexp), 741 \displaystyle, 125, 134, 194 drawing Option distance Option (pst-mirror), 469 (pst-3dplot), 383, 386, 386 DistCoef Option (pst-eucl), 594, 602, 603, 603, 605, (pst-optic), 730, 732, 734 613, 613, 619, 622, 857 drawSelf Option (pst-magneticfield), 755 Distiller, 10, 93, 101–104 drawStyle Option (pst-3dplot), 383, 391, 391, 392, dIter Option (pst-fractal), 708, 708, 709–712 393, 411 Div (PostScript), 706, 889 drawvertices Option (pst-cox), 720 div (PostScript), 883 \drawwidebeam (pst-optexp), 740 Dividend, 172 Drehwinkel, 401, 526 dreidimensionale Darstellung, 329, 357 Division, 172 def (PostScript), 292, 886, 889 default Option (uml), 694 default Wert (pst-eucl), 593, 594 defaultmatrix (PostScript), 886 \defFunction (pst-solides3d), 439, 439, 463, 466–468 \definecolor (xcolor), 14, 15, 15, 18, 20–22, 23, 23, 39,

919

ch-index.tex: (#2)

herbert

(E–F)

Index der Befehle und Begriffe

\entity (pst-dbicons), 783 (Forts.) Entity Relationship, 782 Dreieck, 61, 127 envelope Option (pst-func), 565 droite Wert (pst-solides3d), 438 enveloppe Option (pst-am), 766 dtk-extern Paket, 901 eofill (PostScript), 89, 886 dtransform (PostScript), 886 eofill Wert (pstricks), 97 dup (PostScript), 223, 410, 883 eovlines Wert (pstricks), 97 Durchmesser, 327 eovlines* Wert (pstricks), 97 dvi Programm, 313 Epicycloid, 714 dvips Option (xcolor), 11 dvips Programm, 5, 11, 15, 20, 167, 168, 231, 313, 337, Epizentrum, 521 epsZero Option (pst-func), 560, 563 338, 811, 900, 901 eq (PostScript), 886 dvipsnames Option (xcolor), 11 equation Wert (pst-solides3d), 420, 437, 438 dvipsone Programm, 168 Erde, 484, 505 Dx Option (pst-plot), 184, 190, 190, 191, 387, 643 Erdplatten, 522 dx Option (pst-plot), 184, 191, 191 Erdteil, 527 Dy Option (pst-plot), 184, 188, 190, 190, 191, 387 erlen Wert (pst-labo), 657, 658, 659, 672 dy Option (pst-plot), 184, 191, 191 Ersatzschaltbild, 489 Dz Option (pst-3dplot), 387 Erwartungswert, 558, 572 dZero Option (pst-func), 560, 563 etiquette Option (pst-labo), 658, 661, 661 Dämpfung, 761 Euler (PostScript), 890 euler (PostScript), 168 E euler Wert (pstricks-add), 644 Ebene, 467 eulerRotation Option (pst-3dplot), 383, 397 ecurve Wert (pst-plot), 214, 216 Europa, 527 ED (PostScript), 292, 889 europe Option (pst-geo), 507, 525, 527, 531 edge Option (pst-tree), 295, 302, 302, 312, 312 evaluated Option (pst-pdgr), 785 \EdgeL (vaucanson-g), 781 \everypsbox (pstricks), 134 Einheit, 37 exch (PostScript), 292, 646, 883, 889 Einheitskreis, 223 Exclusiv-Oder, 889 elektor Wert (pst-circ), 494, 495 exec (PostScript), 886 elektorchemical Wert (pst-circ), 495 exit (PostScript), 886, 887 elektorcurved Wert (pst-circ), 494 EXP (PostScript), 559 element Option (pst-spectra), 768, 769, 769 exp (PostScript), 883 Ellipse, 63, 72, 73, 129, 407, 586 Expansion, 166 3D, 406 Exponentialschreibweise, 227 Bogen, 389

Zentrum, 407 Ellipsenausschnitt, 74 Ellipsenzentrum, 72 embedangle Option (pst-3d), 365, 369 emission Option (pst-spectra), 768 Emissionsspektrum, 768, 769 Emitter, 496 emnode Option (pst-node), 287, 288 end (PostScript), 886, 889 end Option (pst-spectra), 768 endAngle Option (pst-3dplot), 383, 389, 389, 407 endbox Option (pst-optexp), 741, 742 endfading Option (pst-slpe), 346, 350 endLW Option (pstricks), 64, 67 \endpscharclip (pst-text), 314 \endpsclip (pstricks), 131, 132 \endpsgraph (pst-plot), 210 \endpsmatrix (pst-node), 286 \endpspicture (pstricks), 27 \endpsTree (pst-tree), 293 \endskiplevels (pst-tree), 311 \endTeXtoEPS (pst-eps), 338 endWL Option (pstricks), 64, 68 english Wert (pst-calendar), 791

F f Option (pst-diffraction), 746 face Wert (pst-solides3d), 425 faceName Option (pst-platon), 476, 478, 478, 479 faceNameFont Option (pst-platon), 476, 478 faces Option (pst-solides3d), 427, 427, 463, 463, 464,

464 fact (PostScript), 230 fading Option (pst-slpe), 346, 350, 351 \FanEnd (pst-rrgtrees), 700, 701 fansize Option (pst-tree), 295

Farbe, 10, 93, 139 black, 10, 13, 14 blue, 10, 13–15, 18 chartFillColor1, 626 chartFillColor2, 626 CMYK, 11 cyan, 10, 13, 14 darkgray, 10 Definition, 11 Farbausdruck, 18 gradbegin, 341, 342 gradend, 341, 342

920

ch-index.tex: (#2)

herbert

Index der Befehle und Begriffe

gray, 10, 552 green, 10, 13–15

(F)

(Forts.)

HSB, 11, 341 konvertieren, 22 lightgray, 10, 552 magenta, 10, 13, 14 Modell, 22 PSTricks-Syntax, 7 red, 10, 13–15, 18 RGB, 11, 341 white, 10, 13, 14, 148, 149, 398 xcolor-Syntax, 7 yellow, 10, 13, 14 Farben, 47 Farbinterpolations-Shading, 803 Farbmodell CMYK, 16, 22 HSB, 16, 22 HTML, 22 RGB, 16, 22 Farbmuster, 319 Farbserien, 15 Farbverläufe, 15 Farbwert, 22 \fbox, 21, 31, 32, 32, 134, 337, 338 \fboxrule Länge, 21 \fboxsep Länge, 21, 126, 128, 337 fcol Option (pst-solides3d), 467, 468 \fcolorbox (xcolor), 19, 19, 21, 21, 21, 22 Fehler, 10, 893 Fehlermeldung, 76, 77 \feigenbaum (demo), 236 female Option (pst-pdgr), 784, 785 female Wert (pst-pdgr), 785 \FHexagon (demo), 324 fiberstyle Option (pst-optexp), 741 \file (pstricks), 153 file Option (pst-solides3d), 427 filecontents Env., 153 filecontents* Env., 550 \fileplot (pst-plot), 233, 236, 236, 237 \fileplot* (pst-plot), 233 \fileplotThreeD (pst-3dplot), 414 Fill Option (pst-geo), 507, 514, 514 \fill (pstricks), 146 fill (PostScript), 89, 886 fillangle Option (pst-fill), 320, 321 fillcolor Option (pstricks), 24, 70, 94, 94, 95, 95, 98, 104, 127, 148, 149, 631 fillcycle Option (pst-fill), 320, 321, 322 fillcyclex Option (pst-fill), 320, 322, 325 fillcycley Option (pst-fill), 320, 322 Filling, 319 fillloopadd Option (pst-fill), 320, 323, 323, 324 fillloopaddx Option (pst-fill), 320 fillloopaddy Option (pst-fill), 320 fillmove Option (pst-fill), 320, 322 fillmovex Option (pst-fill), 320, 322, 322 fillmovey Option (pst-fill), 320, 322, 322 fillsep Option (pst-fill), 320, 321

fillsepx Option (pst-fill), 320, 321, 321 fillsepy Option (pst-fill), 320, 321, 321 fillsize Option (pst-fill), 320, 322, 323 fillstyle Option

(pst-optexp), 740 (pstricks), 24, 61, 70, 94, 94, 95–101, 139, 139, 142, 143, 321–323, 325, 342–344, 344, 347, 360, 361, 404 Filter, 486 \filter (pst-circ), 486 findfont (PostScript), 238, 886 fioleJauge Wert (pst-labo), 657, 659 Fläche, 93 Flächenumrandung, 137 flacon Wert (pst-labo), 657, 659 Flashanimation, 809 flattenpath (PostScript), 67 Fließkommaarithmetik, 190, 212 Fließkommazahl, 172 Flip-Flop, 502 floor (PostScript), 230, 883 Flower Wert (demo), 87 \Flower (demo), 87 fluid Option (pst-pad), 775 FluidFillColor Option (pst-pad), 775 FluidHeight Option (pst-pad), 775 FluidLineColor Option (pst-pad), 775 FluidLineWidth Option (pst-pad), 775 FluidMaxRadius Option (pst-pad), 775 FluidMinRadius Option (pst-pad), 775 Flächenschwerpunkt, 615 Flächentreue, 510 Fm Option (pst-am), 765 \fnode (pst-node), 255, 255, 269, 269, 269, 287, 304 \fnode* (pst-node), 269 focus Option (pst-optic), 731 font Option (pst-barcode), 536 fontenc Paket, 898 Fonts AvantGard (pst-func), 571 Bookman (pst-func), 571 Courier (pst-func), 571 Dingbats (pstricks), 87 Helvetica (pst-func), 571 PSTricksDotFont (pstricks), 49, 88 PSTricksFontDot (pstricks), 86, 88 Symbol (pstricks), 87 Times-Roman (pst-func), 571 ZapfDingbats (pstricks), 83, 87 fontscale Option (pst-cie), 752 (pst-func), 571 (pst-mirror), 470, 475 (pst-plot), 217 fontsize Option (pst-solides3d), 434 \footnotesize, 194 for (PostScript), 887 forall (PostScript), 887 forwardAnimeBtn Option (aeb_pro), 808

921

ch-index.tex: (#2)

herbert

(G)

Index der Befehle und Begriffe

(Forts.) Fourier Option (pst-osci), 762

Fourieranalyse, 762 Fouriersumme, 569 Fp Option (pst-am), 765 fp Paket, 171 fracHcone Option (pst-mirror), 470 fraction Option (uml), 695 Frame Option (pst-platon), 476, 477 frame Env. (beamer), 811, 812 frame Wert (pst-plot), 187, 200 framearc Option (pstricks), 46, 56, 56, 56, 60, 105, 127, 128, 128, 303 \FrameBoxThreeD (pst-fr3d), 380–382 FrameBoxThreeDBrightnessDistance Option (pst-fr3d), 380, 381, 381, 382 FrameBoxThreeDColorHSB Option (pst-fr3d), 380, 380, 381, 382 FrameBoxThreeDOn Option (pst-fr3d), 380, 380, 381, 382 FrameBoxThreeDOpposite Option (pst-fr3d), 380 FrameBoxThreeDopposite Option (pst-fr3d), 380 framesep Option (pstricks), 126, 126, 128, 128 framesize Option (pst-node), 253, 255 french Wert (pst-calendar), 791 (pst-circ), 497 freqmod1 Option (pst-osci), 761 freqmod2 Option (pst-osci), 761 \freqmult (pst-circ), 486 Frequenzmodulationsfaktor, 761 Fresnel, 647 FSphereFillColor Option (pst-pad), 775 FSphereHeight Option (pst-pad), 775 FSphereLineColor Option (pst-pad), 775 FSphereLineWidth Option (pst-pad), 775 full Wert (pst-plot), 198 Füllen, 319 Füllfarbe, 94 Füllfläche, 100 Füllstil, 93, 94, 99, 100, 341 function Option (pst-coil), 328, 332, 333 (pst-solides3d), 425, 426, 434, 462 Funktion, 441, 570, 640 Ableitung, 640 dreidimensional, 382 Wert, 183, 706 Funktionsausdruck, 227 fuse Wert (pst-solides3d), 468 fusion Wert (pst-solides3d), 426, 426, 462, 466

G GAMMA (PostScript), 559 gamma Option

(pst-cie), 752 (pst-spectra), 768 GAMMALN (PostScript), 558, 559 \gammapn (pst-cox), 719, 720–722 \gammaptwo (pst-cox), 719

gangle Option (pstricks), 46, 61, 61 ganzrationale Funktion, 560 gastex Paket, 906 GAUSS (PostScript), 558, 559 Gauß, 572 Gaußverteilung, 572 ge (PostScript), 887 GenCurvFirst Option (pst-eucl), 595, 604, 605 GenCurvInc Option (pst-eucl), 595, 604 GenCurvLast Option (pst-eucl), 595, 604 generator Wert (pst-circ), 492 geode Wert (pst-solides3d), 426 Geometrie, 613 Gerade, 619 Geradenspiegelung, 612 german Wert (pst-eucl), 594, 598 Geschwindigkeit, 647 \GetCoordinates (demo), 235 gex Programm, 291 ghostscript Programm, 93, 101, 102, 900 Gini Option (pst-func), 585 Gitterlinien, 442 Gittermodell, 391 Gitternetz, 376 glassType Option (pst-labo), 657, 658, 659–661, 665, 669, 672, 672, 673, 675, 676 Gleichungsnotation, 442 Gleitumgebung, 286 glue, 165 Gouraud Shading, 803 grad Option (xcolor), 16 gradangle Option (pst-grad), 342, 343, 344 gradbegin Option (pst-grad), 342 gradend Option (pst-grad), 342, 343, 343, 344 gradient Wert (pst-grad), 341, 345 GradientCircle Option (pst-grad), 342, 344, 344 gradientHSB Option (pst-grad), 342, 344, 344 GradientPos Option (pst-grad), 342, 344, 344 GradientScale Option (pst-grad), 342, 344, 344 gradlines Option (pst-grad), 342, 343 Gradmaß, 228, 884 gradmidpoint Option (pst-grad), 342, 343 GraphicsRef Option (pst-eps), 339 graphicx Paket, 133 Grauwerte, 10 grayness Option (uml), 693 green Wert (pst-solides3d), 448 GreenContA Wert (pst-osci), 761 \grestore (pstricks), 144, 145, 149 grestore (PostScript), 132, 167, 169, 238, 887 grid Option (pst-solides3d), 419, 442 gridcolor Option (pstricks), 35, 36, 122, 123 griddots Option (pstricks), 35, 36, 36, 376 gridfont Option (pstricks), 36, 37 \gridI (demo), 39 \gridIIID (pst-solides3d), 429, 429, 430, 431 gridlabelcolor Option (pstricks), 35, 37, 37 gridlabels Option (pstricks), 35, 36, 36, 122, 236 gridmidpoint Option (pst-grad), 342 gridstyle Wert (pstricks), 29, 40

922

ch-index.tex: (#2)

herbert

Index der Befehle und Begriffe

(Forts.) GridThreeDNodes Option (pst-gr3d), 375 GridThreeDXPos Option (pst-gr3d), 372, 374, 374 GridThreeDXUnit Option (pst-gr3d), 372, 374, 374 GridThreeDYPos Option (pst-gr3d), 372, 374, 374 GridThreeDYUnit Option (pst-gr3d), 372, 374, 374 GridThreeDZPos Option (pst-gr3d), 372, 374, 374 GridThreeDZUnit Option (pst-gr3d), 372, 374, 374 GridThreeNodes Option (pst-gr3d), 372 gridwidth Option (pstricks), 35, 35, 376 grille Option (pst-mirror), 469 grille Wert (pst-solides3d), 417, 417, 418, 421, 421,

454 groundstyle Option (pst-circ), 482, 493

Grundeinheit, 38 Grundlinie, 293 \gsave (pstricks), 144, 145, 149 gsave (PostScript), 132, 167, 169, 238, 887 gt (PostScript), 887 GTO Wert (pst-circ), 495 guardwhitespace Option (pst-barcode), 537

H H Wert (pstricks-add), 114 h Option

(H–I)

hlines Wert (pstricks), 94, 95, 99, 100 hlines* Wert (pstricks), 94

Höhe, 119, 298, 310 hollow Option (pst-solides3d), 456, 457, 457, 462, 463, 464 HomCoef Option (pst-eucl), 594, 602, 602, 614, 614 Homothetie, 613 hompol Wert (pst-solides3d), 437 hooklength Option (pstricks-add), 114, 115 hookwidth Option (pstricks-add), 114, 115, 115 horizontale Wert (pst-solides3d), 436, 438 horizontaler Modus, 125 Hour Option (pst-solarsystem), 777 Hpyramide Option (pst-mirror), 470 href Option (pst-node), 253, 254 HSB, 11, 16, 341, 344, 453, 454, 886 HSB-Farbmodell, 380 \ht, 43, 309 hue Option (pst-solides3d), 419, 448, 453, 453, 454, 454, 455 hyperref Paket, 12

I \Icc (pst-circ), 485 icosahedron Wert (pst-solides3d), 423 idiv (PostScript), 883 idtransform (PostScript), 887 if (PostScript), 887 ifelse (PostScript), 887 \ifpsshadow (pstricks), 177 IfTE (PostScript), 230, 231, 232 ignoreLines Option (pst-plot), 240 \ignorespaces (pstricks), 177 IIID Option (pst-diffraction), 746 IIIDlabels Option (pst-3dplot), 383, 386 IIIDOffset Option (pst-3dplot), 383, 385, 386 IIIDticks Option (pst-3dplot), 383, 386, 386, 387,

(pst-diffraction), 751 (pst-solides3d), 421, 422, 424, 425, 426, 426 Hénon, 237 Halbachse, 72 hatchangle Option (pstricks), 94, 95, 95, 96, 100, 101 hatchcolor Option (pstricks), 94, 95, 96, 98, 98, 100, 100, 101 hatchsep Option (pstricks), 94, 99, 99, 100, 101 hatchsepinc Option (pstricks), 94, 100 hatchwidth Option (pstricks), 94, 99 hatchwidthinc Option (pstricks), 94, 99, 99 header Option 409 (pst-bar), 550, 554 IIIDxticksep Option (pst-3dplot), 387 (pstricks), 163 IIIDxTicksPlane Option (pst-3dplot), 387 Headerdatei, 175 IIIDyticksep Option (pst-3dplot), 387 headerfile Option (pst-eps), 339 IIIDyTicksPlane Option (pst-3dplot), 387 headers Option (pst-eps), 339 IIIDzticksep Option (pst-3dplot), 387 height Option (pst-barcode), 536, 537 IIIDzTicksPlane Option (pst-3dplot), 387 Helvetica, 36 Ikosaeder, 476 Helvetica Wert (pstricks), 36 Imin Option (pst-spectra), 768 Helvetica-Narrow Wert (pstricks), 36 importedFrom Option (uml), 696 Hexaeder, 476 includecheck Option (pst-barcode), 536, 542, 543, Hexagon, 323 545 HF-Widerstand, 485 includecheckintext Option (pst-barcode), 536, Hg Wert (pst-spectra), 769 542–545 hidden line, 415 \includegraphics (graphicx), 43, 339, 340, 340, 361, Hidden-Line-Algorithmus, 410 728 hiddenLine Option (pst-3dplot), 383, 391, 410 includetext Option (pst-barcode), 536, 537, hiddenStyle Option (pst-3dplot), 391 539–545 high-level Makro, 178 incolor Option (pst-solides3d), 442–444, 456, 457, high-level Objekte, 481 464 Hincrement Option (pst-3dplot), 383, 399, 400 increment Option \hinge (pst-stru), 771 (pst-3dplot), 383, 399, 399, 400 Hintergrundfarbe, 354 (pst-geo), 507, 513, 513, 517, 525 \hline (pst-uml), 682

923

ch-index.tex: (#2)

herbert

(J–L)

Index der Befehle und Begriffe

\incrX (pst-uml), 684 \incrY (pst-uml), 684 index (PostScript), 887 infertile Option (pst-pdgr), 785

K K Option (pst-stru), 772–774 k Option (pst-diffraction), 746

Kanten, 458 Infix, 226, 705 Kantenlänge, 445 infix-RPN Paket, 705 Kapazität, 485 \infixtoRPN (infix-RPN), 705, 705, 706, 706 Kardioide, 642 inhue Option (pst-solides3d), 453 kartesische Koordinaten, 161 \Initial (vaucanson-g), 781 kartesisches Koordinatensystem, 33 inkspread Option (pst-barcode), 536, 537 keep Wert (pst-3dplot), 385 Inlinemodus, 134 key Option (pst-dbicons), 783 inner Wert key-value, 23, 54, 175 (pst-plot), 198, 200, 200 \KillGlue (pstricks), 32, 165 (pstricks), 46, 54 Kippen, 358, 359 innerBorder Option (uml), 691, 693, 694, 695 Kippwinkel, 526 inouthue Option (pst-solides3d), 444, 457 kitecolor Option (pstricks), 98 \input, 5, 9, 91 Klammerbreite, 111 inputarrow Option (pst-circ), 482, 494, 495 knotbgcolor Option (pst-knot), 798 inputenc Paket, 898 knotborder Option (pst-knot), 798 insidetext Option (pst-pdgr), 785 Knoten, 156, 252, 334, 481 Integralcosinus, 570 Koordinaten, 252 Integralsinus, 570 Name, 252, 375 Integration, 572 Zentrum, 254 intensity Option (pst-circ), 482, 491, 492, 496, 497 knotscale Option (pst-knot), 798 intensitycolor Option (pst-circ), 482, 491, 492, 496, Kochkurve, 710 496, 497 Koeffizienten, 560, 569 intensitylabel Option (pst-circ), 482, 491, 492 \kof (demo), 44 intensitylabelcolor Option (pst-circ), 482, 491, Kollektor, 496 492, 496, 496, 497 Kommutative Diagramme, 283 intensitylabeloffset Option (pst-circ), 482, 491, Kompatibilität, 5 492 Komplementärfarbe, 58 intensitywidth Option (pst-circ), 482, 491, 492 kontrast Option (pst-diffraction), 746 Intensitätsinterpolations-Shading, 803 Kontrollziffer, 541 Interferenzmuster, 745 Koordinaten, 26, 152, 281 Interpolationspolynom, 64, 76, 77 kartesische, 161 intersect Option (pst-circ), 482 polare, 161 intersectioncolor Option (pst-solides3d), 419, 443 Koordinatenachse, 184, 386 intersectionlinewidth Option (pst-solides3d), Koordinatengitter, 36, 38, 40, 430 419, 443 Koordinatenkreuz, 400 intersectionplan Option (pst-solides3d), 419, 443 Koordinatenpaar, 183 intersectiontype Option (pst-solides3d), 443 Koordinatensystem, 319 Intervallunterscheidung, 227 kartesisch, 33, 40 invisibleLineStyle Option (pst-3dplot), 383, 394 Koordinatenursprung, 27, 187, 190 invisibleStyle Option (pst-3dplot), 394 Koppler, 491 ISBN, 541 kpsewhich Programm, 663, 903 isolatin Option (pst-mirror), 469, 475 Kreis, 25, 63, 72, 407, 486, 609, 619 \isolator (pst-circ), 486 Bogen, 140, 161, 389, 407, 601 Italien, 528 Kreisabschnitt, 70 \item (beamer), 814 Kreisausschnitt, 25, 71, 72 itemize Env., 351 Kreisbogen, 70, 71, 610 itransform (PostScript), 887 kreisförmige Farbverläufe, 341 Kreuzung, 56 Kugelkoordinaten, 395 J Kurve, 63, 64 Jahr Option (pst-calendar), 791, 791, 792, 793 geschlossen, 59, 264 \jobname, 301 \jtree (pst-jtree), 703 L Julia Wert (pst-fractal), 707, 708 Juliamenge, 706 L (PostScript), 889

924

ch-index.tex: (#2)

herbert

Index der Befehle und Begriffe

(L)

L Option

(Forts.) (pst-magneticfield), 754 LensHandleHeight Option (pst-lens), 725 (pst-stru), 772–774 LensHandleWidth Option (pst-lens), 725, 726, 727 L Wert lensHeight Option (pst-optic), 730, 732, 734 (pst-tree), 295 LensMagnification Option (pst-lens), 725, 726, 728, (pstricks), 126 729 l Wert LensRotation Option (pst-lens), 725, 726–729 (pst-node), 287 lensScale Option (pst-optic), 731 (pst-tree), 309 LensShadow Option (pst-lens), 725, 727 (pst-uml), 682, 683 LensSize Option (pst-lens), 725, 728, 729 (uml), 693 LensStyleGlass Option (pst-lens), 725, 728 Label, 119, 127, 194, 281 LensStyleHandle Option (pst-lens), 725, 727 labelangle Option lensWidth Option (pst-optic), 731 (pst-circ), 482 level Option (pst-geo), 507, 508, 508, 510–515, 517, (pst-optexp), 741 525, 526, 527, 528, 529 LabelAngleOffset Option (pst-eucl), 594, 598, 600, levelsep Option (pst-tree), 295, 298, 299, 300, 300, 608 301, 301, 302, 303, 312 labelFontSize Option (pst-plot), 184, 193, 194, 194 Lichteffekte, 790 labelOffset Option (pst-plot), 184, 195, 195 liftpen Option (pstricks), 46, 57, 141, 142, 142, 143 labeloffset Option lightintensity Option (pst-solides3d), 419 (pst-circ), 482, 488 lightsrc Option (pst-solides3d), 416, 416, 418, 419, (pst-optexp), 741, 742 419, 452, 453 LabelRefPt Option (pst-eucl), 594, 599, 599 LightThreeDAngle Option (pst-light3d), 790 labels Option (pst-plot), 184, 191, 192, 193, 198 LightThreeDColorPsCommand Option (pst-light3d), LabelSep Option (pst-eucl), 594, 598, 598 790 labelsep Option (pstricks), 57, 58, 120, 121, 121, 123, LightThreeDLength Option (pst-light3d), 790 184, 186, 191, 193, 200, 201, 203, 207, 208, LightThreeDSteps Option (pst-light3d), 790 428, 429 LightThreeDXLength Option (pst-light3d), 790 lambda Option LightThreeDYLength Option (pst-light3d), 790 (pst-diffraction), 746 limiteL Option (pst-geo), 507, 512, 512, 513, 525 (pst-optic), 735, 736 line Wert Lambert, 509 (pst-plot), 214, 215, 227 \lamp (pst-circ), 486 (pst-solides3d), 420, 437 Lampe, 486 lineAngle Option (pst-node), 253, 257, 274, 274 Lamé-Kurve, 586 linearc Option (pstricks), 46, 55, 55, 55, 56, 57, 59, Lamé-Oval, 586 258, 334 last Option (xcolor), 16 linecap Option (pstricks), 46, 51, 52, 52 latex Programm, 5, 811, 817 linecolor Option (pstricks), 24, 45, 47, 47, 53, 58, 61, latitude0 Option (pst-geo), 507, 513, 513, 525 64–66, 71, 103, 105, 106, 112, 127, 138, 139, lb Option (pstricks), 120, 121, 124 139, 140–143, 150, 157, 158, 254, 280, 406 lb Wert (pstricks), 553, 725 linejoin Option \LCMPL (pst-rrgtrees), 700 (pst-3dplot), 383, 389, 389 LColor Wert (PSTricks), 47 (pstricks), 46, 50, 51 LDogToothA Wert (pst-osci), 761 lines Option (pst-spectra), 768 LDogToothB Wert (pst-osci), 761 linestyle Option le (PostScript), 887 (pst-optexp), 740 Least square method, 221 (pstricks), 24, 45, 47, 48–50, 52, 65, 66, 607 \LED (pst-circ), 485 \lineto (pstricks), 89, 150, 150 Leerzeichen, 166 lineto (PostScript), 330, 887 left Wert LineToXAxis Wert (pst-plot), 214, 220 (pst-circ), 494 LineToYAxis Wert (pst-plot), 214, 220 (pst-plot), 189 linetype Option (pstricks), 46, 57 Leistungselektronik, 228 linewidth Option (pstricks), 24, 45, 47, 47, 53, 64, 84, length (PostScript), 887 109, 111, 124, 139, 141, 150, 315 \lens Linguistik, 699 (pst-optexp), 738, 739, 741 Linie, 45, 58 (pst-optic), 730–732 Transparenz, 103 lens Option (pst-optexp), 741 Linienabstand, 100 lensGlass Option (pst-optic), 731 Linienanfang, 107 LensHandle Option (pst-lens), 725, 727 Liniendicke, 46, 99, 109, 111, 144

925

ch-index.tex: (#2)

herbert

(M)

Index der Befehle und Begriffe

(Forts.) Linienende, 50, 107 Linienfarbe, 24, 100 Liniensegment, 263 Linienstil, 317 Linientyp, 57, 140 Linienzug, 55, 93, 107, 139 Linux, 93 Lissajous Option (pst-am), 766 (pst-osci), 762, 764 Lissajousfigur, 229, 762 \listplot (pst-plot), 211–213, 218, 221, 233, 237, 237, 238, 238, 239, 239, 240, 240, 241–245, 245 \listplot* (pst-plot), 233 \listplotThreeD (pst-3dplot), 415 \LLINK (pst-rrgtrees), 700 \lLINK (pst-rrgtrees), 700 llx Option (pst-plot), 211, 211, 212, 213 lly Option (pst-plot), 211, 211, 212, 213 ln (PostScript), 230, 884 load Option (pst-solides3d), 426, 467 load Wert (pst-solides3d), 426, 467 log (PostScript), 230, 884 \logic (pst-circ), 498, 499–504 logicChangeLR Option (pst-circ), 483, 498–503 logicHeight Option (pst-circ), 483, 499–501, 503, 504 logicJInput Option (pst-circ), 483, 502 logicKInput Option (pst-circ), 483, 502 logicLabelStyle Option (pst-circ), 503, 504 logicLabelstyle Option (pst-circ), 483 logicNInput Option (pst-circ), 483, 503 logicNodestyle Option (pst-circ), 483 logicShowDot Option (pst-circ), 483, 502 logicShowNode Option (pst-circ), 483, 498–504 logicSymbolstyle Option (pst-circ), 483 logicType Option (pst-circ), 483, 498–504 logicWidth Option (pst-circ), 483, 499–501, 503, 504 logicWireLength Option (pst-circ), 483, 502, 503 logixInput Option (pst-circ), 499–501 logLines Option (pst-plot), 185, 208, 208, 209 lokale Optionen, 24 longitude0 Option (pst-geo), 507, 513, 513, 514, 525 Loop, 278 loop (PostScript), 887 \LoopL (vaucanson-g), 781 \LoopN (vaucanson-g), 781 \LoopS (vaucanson-g), 781 loopsize Option (pst-node), 253, 258, 258, 277, 277, 278 loose Wert (pst-tree), 295, 298, 299 Lorenzkurve, 585 LOstyle Option (pst-circ), 482 low-level Makro, 178 lower Wert (pstricks-add), 639 Loxodrom, 509 \LPERIPH (pst-rrgtrees), 700 \lPERIPH (pst-rrgtrees), 700 \Lput (pst-node), 285 \lput (pst-node), 285

LR-Box, 135 LR-Modus, 125 LSM Wert (pst-plot), 214, 221 lt (PostScript), 887 lwidth Option (pst-spectra), 768 Längeneinheit, 28 Längengrad, 513 Längenregister, 26

M magenta Wert (pstricks), 47 MagentaContAddSub Wert (pst-osci), 762

Mailingliste, 904 maillage Option (pst-geo), 507, 513, 513, 514, 517, 525 \makeatletter, 169, 172, 292 \makeatother, 169, 172, 292 \makebox, 130, 680 makeeps Option (pst-eps), 339 makeplot Paket, 906 \MakeShortNab (pst-node), 262 \MakeShortTablr (pst-node), 262 \MakeShortTnput (pst-tree), 309 Makrodatei, 163 male Option (pst-pdgr), 784, 785 male Wert (pst-pdgr), 785 Mandel Wert (pst-fractal), 707, 708 Mandelbrotmenge, 706 manueller Modus, 319 mapcolor Option (pst-geo), 517 mapCountry Option (pst-geo), 507, 530, 530 MapFillColor Option (pst-geo), 507, 514, 517 \mapput (pst-geo), 515, 527 Mark Option (pst-eucl), 594, 597, 597, 608 mark (PostScript), 885, 887 MarkAngle Option (pst-eucl), 594, 597, 597 MarkAngleOffset Option (pst-eucl), 599 MarkANgleRadius Option (pst-eucl), 618 MarkAngleRadius Option (pst-eucl), 594, 598, 598, 608, 608 \markcr (psgo), 794 \MarkCros (pst-eucl), 597 \MarkCross (pst-eucl), 597 \markdd (psgo), 794, 795 MarkHash Wert (pst-eucl), 594, 597 \MarkHash (pst-eucl), 597 MarkHashh Wert (pst-eucl), 594 \MarkHashh (pst-eucl), 597 MarkHashhh Wert (pst-eucl), 594 \MarkHashhh (pst-eucl), 597 Markierung, 281 \marklb (psgo), 794, 795 \markma (psgo), 794 \markpos (psgo), 794 \marksl (psgo), 794, 795 \marksq (psgo), 794 \marktr (psgo), 794 markZeros Option (pst-func), 560, 572, 574–577, 579–583 Mathematik, 134

926

ch-index.tex: (#2)

herbert

Index der Befehle und Begriffe

abgesetzte Formel, 134 Inlinemodus, 134 Modus, 134 modus, 125 Mathematikmodus, 194 mathLabel Option (pst-plot), 185, 194, 194 (pst-solides3d), 428, 428, 429 \mathrm, 287 Matlab, 904 Matrix, 286 matrix Env., 286 Maxicode, 547 maxIter Option (pst-fractal), 708–710 maxRadius Option (pst-fractal), 708 Maßstab, 24, 26 Maßzahl, 174 mcol Option (pst-node), 287, 289, 289 mcurveA Option (pst-node), 261 mcurveB Option (pst-node), 261 mediatrice Wert (pst-solides3d), 436 Mercator, 509 Meridian, 509 method Option (pstricks-add), 644, 645, 646, 646, 649 MEX Option (pst-geo), 515 middle Wert (pstricks), 46, 54 Mikrowelle, 481 miniltx Paket, 7 minipage Env., 21, 125, 315 Minute Option (pst-solarsystem), 777 minWidth Option (pst-fractal), 712 \mirror (pst-optexp), 742 \mirrorCVGRay (pst-optic), 730 Mittelpunkt, 615 Mittelsenkrechte, 593, 617 Mittelwert, 575 \mixer (pst-circ), 490 mnode Option (pst-node), 287, 287, 288 mnodesize Option (pst-node), 287, 289, 289 mod (PostScript), 884 mode Option (pst-solides3d), 453 Modulo, 173 Modus automatischer, 319 horizontal, 125 manueller, 319 Moiré-Effekt, 105 Monat Option (pst-calendar), 791, 791, 792, 793 Monat Wert (pst-calendar), 793 MonatT Option (pst-calendar), 791 monohedral, 319 Monopol, 484 Month Option (pst-solarsystem), 777 \month (pst-calendar), 791 \move (psgo), 795, 796 \moveE (pst-uml), 684, 685 \moveN (pst-uml), 684, 685 \movepath (pstricks), 149 \moveS (pst-uml), 684, 685 \moveto (pstricks), 89, 143, 150, 150, 151

(N)

moveto (PostScript), 238, 887 \moveW (pst-uml), 684, 685 \Mput (pst-node), 285 \mput (pst-node), 285 \mrestore (pstricks), 145 \msave (pstricks), 145 mue Option (pst-func), 572 mul (PostScript), 223, 410, 884 mul Wert (pst-osci), 762 \multicolumn, 290

Multidipol, 484 \multidipole (pst-circ), 489 \multido (multido), 14, 16, 47, 52, 53, 70, 85, 105, 106,

190, 388, 642, 643, 706, 806, 809 multido Paket, 10, 624, 906 \multiframe

(aniamte), 806 (animate), 854 Multiplikation, 226 Multiplizierer, 486 \multips (pstricks), 124, 124, 157 \multiput (pstricks), 23 \multirput (pstricks), 123, 124, 124 \multirput* (pstricks), 124 \multispan, 290 mulv Wert (pst-solides3d), 435 mulv3d (PostScript), 460 Muster, 93, 139, 323 mv Option (pst-dbicons), 783

N N Option

(pst-electricfield), 758 (pst-magneticfield), 754 n Option (pst-geo), 507, 512, 525 (pst-optexp), 739 n-hedral, 319 nab Wert (pst-node), 253, 261 name Option (pst-node), 287, 288, 288, 290, 291 (pst-solides3d), 426, 434, 450, 465, 465, 468 nameB Option (pst-optic), 731 named Option (xcolor), 20 nameF Option (pst-optic), 731 nameFi Option (pst-optic), 731 nameO Option (pst-optic), 731 namer Option (pst-geo), 507, 525, 527 nameX Option (pst-3dplot), 383, 390, 390 nameY Option (pst-3dplot), 383, 390, 390 nameZ Option (pst-3dplot), 383, 390, 390 \naput (pst-node), 261, 282, 283 \naput* (pst-node), 282 nArrow Option (pstricks-add), 115 nArrowA Option (pstricks-add), 115 nArrowB Option (pstricks-add), 115 \nbput (pst-node), 261, 277, 282, 282, 283, 686, 687 \nbput* (pst-node), 282 \ncangle (pst-node), 256, 258, 259, 276, 276, 276, 277, 281

927

ch-index.tex: (#2)

herbert

(N)

Index der Befehle und Begriffe

\ncangle* (pst-node), 276 \ncangles (pst-node), 259, 260, 276, 276, 276, 277, 281 \ncangles* (pst-node), 276 \ncarc (pst-node), 251, 256, 259, 272, 272, 281 \ncarc* (pst-node), 272 \ncarcbox (pst-node), 258, 260, 260, 279, 279, 279, 280,

281 \ncarcbox* (pst-node), 279 \ncbar (pst-node), 257, 259, 274, 275, 275, 275, 281,

285, 503 \ncbar* (pst-node), 275 \ncbarr (pst-node), 275 \ncbox (pst-node), 258, 260, 279, 279, 281 \ncbox* (pst-node), 279 \nccircle (pst-node), 259, 277, 278, 278 \nccircle* (pst-node), 278 \nccoil (pst-coil), 162, 335, 335 \nccoil* (pst-coil), 335 \nccurve (pst-node), 259, 261, 261, 267, 278, 278, 278,

281, 285, 286

(Forts.) \ncSXE (pst-uml), 687 \ncSXW (pst-uml), 687 ncurv Option (pst-node), 253, 261, 278 ncurvA Option (pst-node), 253, 261 ncurvB Option (pst-node), 253, 261 \ncW (pst-uml), 687 \ncWDW (pst-uml), 687 \ncWN (pst-uml), 687 \ncWS (pst-uml), 687 \ncWVE (pst-uml), 687 \ncWVW (pst-uml), 687 \ncWXN (pst-uml), 687 \ncWXS (pst-uml), 687 \nczigzag (pst-coil), 335 \nczigzag* (pst-coil), 335 neg (PostScript), 884 nEnd Option (pst-plot), 240 NET (PostScript), 889 new Wert

\nccurve* (pst-node), 278 \ncdiag (pst-node), 259, 272, 272, 273, 273, 274, 276,

(pst-eps), 339 (pst-solides3d), 427, 427, 463, 464 281 \newarmatur (pst-circ), 488 \ncdiag* (pst-node), 272 \newcapacitor (pst-circ), 488 \ncdiagg (pst-node), 259, 274, 274, 281, 302 NewCenturySchlbk Wert (pstricks), 36 \ncdiagg* (pst-node), 274 \newcmykcolor (pstricks), 11 \ncE (pst-uml), 687 \newcommand, 14, 39 \ncEDE (pst-uml), 687 \newcount, 23 \ncEN (pst-uml), 687 \newdiode (pst-circ), 487 \ncES (pst-uml), 687 \newframe (aniamte), 806 \ncEVE (pst-uml), 687 \newgray (pstricks), 11 \ncEVW (pst-uml), 687 \newground (pst-circ), 484, 493 \ncEXN (pst-uml), 687 \newhsbcolor (pstricks), 11 \ncEXS (pst-uml), 687 \newLED (pst-circ), 488 \ncline (pst-node), 114, 158, 254, 255, 257–259, 259, \newlength, 7 261–265, 267–269, 272, 272, 273, 273, 281, \newpath (pstricks), 143 284, 287–291, 301, 606, 609, 655, 684 newpath (PostScript), 143, 887 \ncline* (pst-node), 272 \newpsbarstyle (pst-bar), 553, 554, 555, 555, 556 \ncloop (pst-node), 258, 259, 277, 277, 277, 278, 281 \newpsfontdot (pstricks), 86, 88 \ncloop* (pst-node), 277 \newpsfontdotH (pstricks), 86 \ncN (pst-uml), 687 \newpsobject (pstricks), 39, 138 \ncNDN (pst-uml), 687 \newpsstyle (pstricks), 30, 30, 35, 105, 137, 137, 138, \ncNE (pst-uml), 687 360, 361, 391, 763, 766 \ncNHN (pst-uml), 687 \newrgbcolor (pstricks), 11, 342, 346, 347 \ncNHS (pst-uml), 687 \newsavebox, 20, 43 \ncNW (pst-uml), 687 \newSwitch (pst-circ), 488 \ncNXE (pst-uml), 687 Newton-Verfahren, 562 \ncNXW (pst-uml), 687 \newZener (pst-circ), 487 \NCORE (pst-rrgtrees), 701 ngerman Wert (pst-calendar), 791 \ncput (pst-node), 259, 277, 282, 282, 283, 283 ngrid Option (pst-solides3d), 425, 426, 442, 452, \ncput* (pst-node), 282 459–461 \ncputicon (pst-uml), 684, 685, 687, 688 ngrid Wert (pst-solides3d), 425 \ncS (pst-uml), 687 niveauLiquide1 Option (pst-labo), 658, 670, 675 \ncSDS (pst-uml), 687 niveauLiquide1 Wert (pst-labo), 672 \ncSE (pst-uml), 687 niveauLiquide2 Option (pst-labo), 658, 675 \ncSHN (pst-uml), 686, 687 niveauliquide2 Option (pst-labo), 658 \ncSHS (pst-uml), 687 niveauLiquide3 Option (pst-labo), 675 \ncsin (pst-coil), 335 niveauliquide3 Option (pst-labo), 658 \ncsin* (pst-coil), 335 niveauReactifBurette Option (pst-labo), 658, 668, \ncSW (pst-uml), 687 668

928

ch-index.tex: (#2)

herbert

Index der Befehle und Begriffe

(Forts.) nL Option (pst-magneticfield), 755 \nlput (pst-node), 270, 284, 284 \NNUC (pst-rrgtrees), 701

Node, 156 nodealign Option (pst-node), 287, 289, 289 \nodeBetween (demo), 265 nodesep Option (pst-node), 156, 158, 159, 160, 253,

255, 255, 258, 259, 261, 271, 271, 279, 280, 285, 295, 298, 609, 609, 636 nodesepA Option (pst-node), 253, 255, 255, 285, 609, 631, 631, 632, 634, 635 (pstricks-add), 630 nodesepB Option (pst-node), 253, 255, 255, 303, 305–307, 609, 631, 631, 632, 634, 635 (pstricks-add), 630 nodeWidth Option (pst-geo), 507, 530 \noexpand, 252 none Wert (pst-eps), 339 (pst-eucl), 594 (pst-node), 253, 287 (pst-plot), 189, 192, 193, 198 (pst-solides3d), 452, 465, 467 (pstricks), 24, 94 Nordamerika, 527 normal Option (pst-3d), 365, 367, 367 normal Wert (pst-3dplot), 387 \NormalCoor (pstricks), 26, 26, 155, 155, 162 normale Option (pst-mirror), 469, 475 Normalenvektor, 367 normalize Wert (pst-solides3d), 435 \normalsize, 194 Normalverteilung, 572, 576 not (PostScript), 887 notations Option (pst-optic), 735 \NP (pst-rrgtrees), 701 NPN Transistor, 496 npos Option (pst-node), 253, 259, 259 \nput (pst-node), 260, 260, 284, 284, 284, 308 \nput* (pst-node), 284 nrot Option (pst-node), 253, 260, 260, 261, 308 nS Option (pst-magneticfield), 755 nStart Option (pst-plot), 240 nStep Option (pst-plot), 240 NTSC Wert (pst-cie), 752 \NUC (pst-rrgtrees), 700, 701 Nullknoten, 305 Nullstelle, 562, 563, 621 num Option (pst-solides3d), 427 \number, 791 Numero Option (pst-labo), 658, 661 numfaces Option (pst-solides3d), 456, 457 numlines Option (pst-spectra), 768 numSpires Option (pst-magneticfield), 755

O o Wert (pstricks), 85

(O)

\OA (pst-circ), 489, 497 OAiminus Option (pst-circ), 482, 497 OAiminuslabel Option (pst-circ), 482, 497 OAinvert Option (pst-circ), 482, 497 OAiout Option (pst-circ), 482, 497 OAioutlabel Option (pst-circ), 482, 497 OAiplus Option (pst-circ), 482, 497 OAipluslabel Option (pst-circ), 482, 497 OAperfect Option (pst-circ), 482, 497

Obersumme, 639 .obj Dateiendung (pst-solides3d), 452 object Option (pst-solides3d), 417, 418, 420, 420, 421,

421, 422, 422, 423, 423, 424, 424, 425, 425, 426, 426, 427, 427, 434, 452–461, 463, 464, 467, 468 Objekt geschlossenes, 178 offenes, 178 objfile Wert (pst-solides3d), 427 obligatory Option (pst-pdgr), 785 obligatory Wert (pst-pdgr), 785 octahedron Wert (pst-solides3d), 423 Octogon Wert (pstricks), 88 oefill Wert (pstricks), 97 .off Dateiendung (pst-solides3d), 452 offfile Wert (pst-solides3d), 427 Offset, 30, 317 offset Option (pst-node), 156, 159, 160, 253, 258, 258, 258, 285, 295 offset1 Option (pst-osci), 761 offset2 Option (pst-osci), 761 offset3 Option (pst-osci), 762 offsetA Option (pst-node), 253, 258, 285 offsetB Option (pst-node), 253, 258, 285 Oktaeder, 476 Oktalzahl, 48 old Wert (pst-circ), 493 OnlyVisibleFaces Option (pst-ob3d), 370, 371, 371 \onslide (beamer), 814 \OP (pst-rrgtrees), 701 opacity Option (pstricks), 44, 94, 103, 104, 518, 633 open curve, 140 \openshadow (pstricks), 148 operation Option (pst-osci), 762 Operationsverstärker, 489, 496 \OPR (pst-rrgtrees), 700, 701 \optbox (pst-optexp), 740–742 optboxwidth Option (pst-optexp), 742 optexp Env. (pst-optexp), 740 \optgrid (pst-optexp), 742 Option, 24 \optoCoupler (pst-circ), 491 Optokoppler, 490 \optplate (pst-optexp), 741 \optretplate (pst-optexp), 741, 742 or (PostScript), 888 origin Option (pstricks), 33, 34, 140 orthoproj Wert (pst-solides3d), 438 orthovecteur Wert (pst-solides3d), 435 \oscillator (pst-circ), 484, 493

929

ch-index.tex: (#2)

herbert

(P)

Index der Befehle und Begriffe

(Forts.) \Oscillo (pst-osci), 761, 762, 763, 764

Oszillator, 484 Oszillatorsymbol, 484 outer Wert (pstricks), 46, 54 outerBorder Option (uml), 694, 695 Outline Font, 313, 319 output Option (pst-circ), 482, 494 Oval, 129 \ovalnode (pst-node), 268, 268, 273, 276, 281, 287, 304 \ovalnode* (pst-node), 268 Overlay, 43, 236 Ox Option (pst-plot), 185, 190, 190, 195 Oy Option (pst-plot), 185, 190, 190 oztex Programm, 11

P P Option

(pst-cox), 719, 720 (pst-stru), 772–774 Pakete aeb_pro, 808 amsmath, 287 animate, 805 auto-pst-pdf, 10, 898, 900 babel, 896 bclogo, 906 color, 7, 9, 11, 18, 169, 342, 346 colortbl, 12 dtk-extern, 901 fontenc, 898 fp, 171 gastex, 906 graphicx, 133 hyperref, 12 infix-RPN, 705 inputenc, 898 makeplot, 906 miniltx, 7 multido, 10, 624, 906 pdftricks, 900, 901 pict2e, 3 pictex, 903 piechart, 906 powerdot, 811 preview, 898 psbao, 906 psgo, 906 pst-2dplot, 904 pst-3d, 10, 358, 359, 362, 363, 372, 382, 756, 890, 904 pst-3dplot, 183, 370, 382, 401, 890, 904 pst-abspos, 904 pst-all, 10 pst-am, 904 pst-asr, 904 pst-bar, 549, 890, 904 pst-barcode, 535, 904 pst-bezier, 890, 904 pst-blur, 352, 890, 904

pst-bspline, 78, 904 pst-calendar, 791, 904 pst-cie, 752, 890, 904 pst-circ, 481, 738, 890, 904 pst-coil, 10, 327, 333, 890, 904 pst-cox, 719, 905 pst-coxcoor, 721 pst-coxeterp, 719 pst-dbicons, 905 pst-diffraction, 745, 905 pst-electricfield, 758, 890, 905 pst-eps, 10, 338, 339, 905 pst-eucl, 593, 890, 905 pst-exa, 905 pst-fill, 10, 93, 98, 319, 320, 324, 373, 832, 905 pst-fr3d, 379, 905 pst-fractal, 890, 905 pst-fun, 890, 905 pst-func, 75, 560, 890, 905 pst-gantt, 905 pst-geo, 505, 905 pst-gr3d, 372, 905 pst-grad, 10, 93, 341, 343, 830, 890, 905 pst-infixplot, 706, 905 pst-intersect, 2, 905 pst-jftree, 703 pst-jtree, 905 pst-key, 179 pst-knot, 890, 905 pst-labo, 657, 671, 761, 905 pst-lens, 725, 905 pst-light3d, 890, 905 pst-magneticfield, 754, 890, 905 pst-map2d, 506, 516 pst-map2dII, 506 pst-map3d, 506, 890 pst-map3dII, 506, 890 pst-math, 557, 883, 890, 905 pst-mirror, 469, 890, 905 pst-node, 10, 251, 252, 285, 288, 293, 307, 334, 481, 699, 890, 898, 905 pst-ob3d, 370, 905 pst-ode, 2, 905 pst-optexp, 738, 890, 905 pst-optic, 745, 905 pst-osci, 657, 765, 905 pst-pad, 774, 905 pst-pdf, 898, 899, 905 pst-pdgr, 905 pst-pencil, 905 pst-perspective, 905 pst-platon, 476, 905 pst-plot, 10, 120, 183, 220, 233, 238, 387, 409, 560, 591, 905 pst-poly, 905 pst-qtree, 905 pst-sigsys, 905 pst-slpe, 93, 341, 345, 348, 891, 905 pst-solarsystem, 776, 891, 905 pst-solides3d, 415, 465, 891, 906

930

ch-index.tex: (#2)

herbert

Index der Befehle und Begriffe

(Forts.) pst-soroban, 906 pst-spectra, 768, 891, 906 pst-spirograph, 891 pst-stru, 906 pst-text, 10, 313, 319, 891, 898, 906 pst-thick, 906 pst-tools, 891 pst-tree, 10, 293, 294, 303, 308, 309, 699, 704, 906 pst-uml, 679, 690, 906 pst-vue3d, 415 pst-xkey, 175, 179, 180 pst2pdf, 906 pstricks, 15, 29, 104, 172, 293, 357, 372, 705, 819, 820, 890, 893 pstricks-add, 25, 68, 91, 105, 114, 124, 160, 623, 890, 904 qtree, 704 random, 91 rotating, 362 RRGtree, 906 setspace, 316 sfg, 906 uml, 690, 698, 906 vaucanson, 906 vaucanson-G, 781 xcolor, 7, 9, 11–16, 18–20, 22, 23, 169, 201, 208, 342, 346, 397, 454, 652 xkeyval, 180 \pagecolor (xcolor), 21 \pagestyle, 337, 900 Pal-Secam Wert (pst-cie), 752 Palatino-Roman Wert (pstricks), 36 Parabel, 75 \parabola (pstricks), 34 paral Wert (pst-solides3d), 436 parallel Option (pst-circ), 482, 493 parallelarm Option (pst-circ), 483, 493 parallelepiped Wert (pst-solides3d), 425 parallelnode Option (pst-circ), 483 Parallelprojektion, 362, 614 parallelsep Option (pst-circ), 483 Parameterdarstellung, 642 Parameterform, 229, 586 \parametricplot

(psplot), 336 (pst-plot), 227, 338, 568 \parametricplotThreeD (pst-3dplot), 413, 836 \parbox, 7, 60, 125, 128, 128, 129, 130, 130, 317 Parkettieren, 98, 139, 319 Pas Option (pst-electricfield), 758 pas Option (pst-mirror), 469 PasB Option (pst-magneticfield), 755 PasS Option (pst-magneticfield), 755 \pass (psgo), 795, 796 path Option (pst-geo), 507, 507, 508–517, 517, 518, 519, 521–524, 525, 526 (pst-solides3d), 434

(P)

(Forts.) \pcangle (pst-node), 281 \pcangles (pst-node), 281 \pcarc (pst-node), 281 \pcarcbox (pst-node), 281 \pcbar (pst-node), 281 \pcbox (pst-node), 281 \pccoil (pst-coil), 335 \pccoil* (pst-coil), 335 \pccurve (pst-node), 281, 286 \pcdiag (pst-node), 257, 281, 281 \pcdiagg (pst-node), 274, 281 \pcline (pst-node), 281 \pcloop (pst-node), 281 \pcsin (pst-coil), 335 \pcsin* (pst-coil), 335 \pczigzag (pst-coil), 335 \pczigzag* (pst-coil), 335

PDF, 101 pdf2pdf Programm, 5 pdfcrop Programm, 899, 900 pdflatex Programm, 5, 10, 901 \pdfminorversion, 901 pdfpic Env. (pdftricks), 900, 900, 901 pdftex Programm, 11 pdftricks Paket, 900, 901 Pendel, 645 penrose Wert (pstricks), 94, 98, 98 penrose* Wert (pstricks), 94, 98 period1 Option (pst-osci), 761, 764 period2 Option (pst-osci), 761, 764 periodmodulation1 Option (pst-osci), 761 periodmodulation2 Option (pst-osci), 761 periods Option (pst-coil), 328, 331, 331, 332 periods Wert (pst-coil), 331 perp Wert (pst-optexp), 741 (pst-solides3d), 436 perspektivische Betrachtung, 415 Pfad, 313 geschlossen, 139 Pfadzustand, 57 Pfeil, 54, 107, 114 hook, 114 innerer, 115 Pfeillinie, 486 \phantom, 19 Pharmacode, 546 phase1 Option (pst-osci), 761 phase2 Option (pst-osci), 761 Phasendiagramm, 647 Phasenschieber, 486 Phasenverschiebung, 228, 761 \phaseshifter (pst-circ), 486 PHI Option (pst-geo), 517, 526 phi Option (pst-perspective), 778, 779 (pst-solides3d), 422, 423, 426 phmetre Option (pst-labo), 658, 669, 669 Phyllotaxis, 709

931

ch-index.tex: (#2)

herbert

(P)

Index der Befehle und Begriffe

(Forts.)

(Forts.)

Pi (PostScript), 249, 889 pi (PostScript), 168

PointSymbolA Option (pst-eucl), 593, 595, 608, 620 PointSymbolB Option (pst-eucl), 593, 595, 608, 620 PointSymbolC Option (pst-eucl), 594, 595, 608

pict2e Paket, 3 Poisson-Prozess, 578 pictex Paket, 903 Poisson-Verteilung, 578 picture Env., 32, 165 \Polar (pstricks), 162 pie Wert (pst-solides3d), 426 polar Option (pst-plot), 187 piechart Paket, 906 polar Wert (pst-plot), 187 pince Option (pst-labo), 657, 659, 659, 672 \polarisation (pst-optexp), 741 pixel Option (pst-diffraction), 746 Polarkoordinaten, 157, 161, 223, 642 plan Option Umrechnung, 157 (pst-3dplot), 390, 393 Polarkoordinatensystem, 187 (pst-solides3d), 434 polarplot Option (pst-plot), 214, 223, 224, 590, 590, plan Wert (pst-solides3d), 420, 420, 437 591, 592, 642 Planck Option (pst-cie), 752 poltype Option (pst-optexp), 741 plane Option (pst-3dplot), 383, 390 PolyCurves Option (pst-poly), 714, 715 planecorr Option (pst-3dplot), 387 Polyeder, 445 planmarks Option (pst-solides3d), 420, 434, 437 PolyEpicycloid Option (pst-poly), 714, 717 plansepare Option (pst-solides3d), 466, 466, 467, Polygon, 55, 58, 63, 713, 714 467, 468 \Polygon (pst-cox), 719 platelinewidth Option (pst-optexp), 741 polygon Wert Plates Project, 522 (pst-eucl), 599 plotfuncx Option (pstricks-add), 644 (pst-plot), 214 plotfuncy Option (pstricks-add), 644 (pstricks), 215 plotNo Option (pst-plot), 240, 243, 244 polygone Wert (pst-solides3d), 437 plotNoMax Option (pst-plot), 240, 243, 244 polygoneregulier Wert (pst-solides3d), 425 plotpoints Option (pst-plot), 214, 219, 221, 222, 222, 223, 226, 229, 230, 410, 564, 568, 571, 572, Polygonzug, 54, 58, 59, 107, 227 707 PolyIntermediatePoint Option (pst-poly), 714, 715–717 plotstyle Option (pst-plot), 214, 214, 215–218, 220, 227, 227, 228, 229, 239 polyline Wert (pst-eucl), 599 plotstyle1 Option (pst-osci), 761, 763, 764 PolyName Option (pst-poly), 714 plotstyle2 Option (pst-osci), 761 PolyNbSides Option (pst-poly), 713, 714, 714, 715–719 plotstyle3 Option (pst-osci), 762 Polynom, 560 plotstyle4 Option (pst-osci), 762 PolyOffset Option (pst-poly), 714, 714, 715–717 Plotten, 183 PolyRotation Option (pst-poly), 714 pmatrix Env. (pst-node), 631 Polytop, 719 .png Dateiendung, 810 pop (PostScript), 888 png2swf Programm, 810 Popcornfunktion, 587 \pnode (pst-node), 159, 160, 264, 265, 265, 287, 304, popip.pl Programm, 810 527, 896 pOrigin Option (pst-3dplot), 383, 390, 391 \pnodeMap (pst-geo), 515, 527, 528, 529 pos Option \pnodes (pst-solides3d), 434 (pst-Bspline), 80 (uml), 692, 692, 693, 696 (pst-node), 265 PosAngle Option (pst-eucl), 594, 595, 596, 596, PNP Transistor, 496 601–603, 606, 608, 610, 611, 612, 612, 613, point Wert (pst-solides3d), 420, 438 614, 614, 615, 616, 616, 617, 617, 618, 618, PointName Option (pst-eucl), 594, 595, 595, 605, 606, 619, 619, 620, 620, 622 607, 608, 611–620 PosAngleA Option (pst-eucl), 594, 596, 608, 620 PointNameA Option (pst-eucl), 594, 595, 608, 620 PosAngleB Option (pst-eucl), 594, 596, 608, 620 PointNameB Option (pst-eucl), 594, 595, 608, 620 PosAngleC Option (pst-eucl), 594, 596, 608 PointNameC Option (pst-eucl), 594, 595, 608 posArrow Option (pst-electricfield), 758 PointNameSep Option (pst-eucl), 594, 595, 596, 606, posDelta Option (uml), 692, 696 608, 611–620 posDeltaX Option (uml), 692 points Option (pst-electricfield), 758 posDeltaY Option (uml), 692 pointsB Option (pst-magneticfield), 755 position Option (pst-optexp), 742 pointsS Option (pst-magneticfield), 755 Postfix, 226, 227, 640, 705 PointSymbol Option (pst-eucl), 593, 595, 595, 596, Postleitzahlen, 547 597, 606, 606, 608, 608, 609, 611–614, 615, PostScript, 165 615, 616, 617, 617–620, 621, 622

932

ch-index.tex: (#2)

herbert

Index der Befehle und Begriffe

(Forts.) ArrowA, 154 ArrowB, 154 Befehle, 139 Fehlermeldung, 5 Fonts, 36 Header, 163 Interface, 535 Interpreter, 5 Level 1, 11 Prologdatei, 535 Treiber, 46 postscript Env. (pst-pdf), 899 PostScript-Notation, 588 posX Option (uml), 692 posY Option (uml), 692 \potentiometer (pst-circ), 490 powerdot Paket, 811 \PP (pst-rrgtrees), 701 ppoints Option (pst-coil), 328, 331, 331 preview Paket, 898 primaries Option (pst-cie), 752 primarylabel Option (pst-circ), 483, 497 printValue Option (pst-func), 572, 574–577, 579–583 prisme Wert (pst-solides3d), 424 prismecreux Wert (pst-solides3d), 424 .pro Dateiendung (pstricks), 164 proband Option (pst-pdgr), 785 Projektion, 614 Prolog, 163 Prologdatei, 163, 535, 557, 890 ProPhoto Wert (pst-cie), 752 \protect, 252 prototile, 319 \providecolor (xcolor), 14, 15 \providecolorseries (xcolor), 15 \providecolorset (xcolor), 14, 15 \providecommand (xcolor), 15 Prozedur, 163 Präsentation, 633 .ps Dateiendung, 5 ps2pdf Programm, 93, 104, 415, 508, 811, 817, 900 ps2pdf12 Programm, 104 ps2pdf14 Programm, 104 ps2pdfwr Programm, 93, 104, 508 \psaddtolength (pstricks), 26 \psAM (pst-am), 765 \psAm (pst-am), 766, 766, 767 \psAppolonius (pst-fractal), 707, 711, 712 \psarc (pstricks), 64, 67, 68, 70, 71, 71, 71, 161, 161 \psarc* (pstricks), 70 \psarcn (pstricks), 71 \psarcn* (pstricks), 71 \psaxes (pst-plot), 27, 28, 29, 34, 36, 42, 42, 43, 58, 184, 184, 184, 186–202, 203, 203–210, 210, 214–233, 235, 236, 238–244, 246–250, 899 \psBall (pst-slpe), 351, 352 psbao Paket, 906 \psbarchart (pst-bar), 550–555, 556, 556 \psbarcode (pst-barcode), 535, 536, 537, 539–548

(P)

(Forts.) \psbarlabel (pst-bar), 555 \psbarscale (pst-bar), 555 \psBernstein (pst-func), 565, 566, 567 \psBessel (pst-func), 567, 568 \psBetaDist (pst-func), 583 \psBezier (pst-func), 564 \psbezier (pstricks), 75, 76, 118, 140, 141, 149, 151 \psbezier* (pstricks), 75 \psBinomial (pst-func), 574, 575 \psBinomialN (pst-func), 573, 574, 575, 576, 576, 577,

579 \psblurbox (pst-blur), 354, 355 \psBorromean (pst-knot), 796, 799 \psboxfill (pst-fill), 101, 101, 316, 324, 324, 325 \psbrace (pstricks-add), 630, 631, 632, 634 \psbrace* (pstricks-add), 630 \psBspline (pst-Bspline), 78, 78, 79 \psBsplineC (pst-Bspline), 78, 79 \psBsplineC* (pst-Bspline), 78 \psBsplineE (pst-Bspline), 78, 79, 80 \psBsplineInterp (pst-Bspline), 80 \psBsplineInterpC (pst-Bspline), 80 \psBsplineNodes (pst-Bspline), 80 \psBsplineNodesC (pst-Bspline), 80 \psBsplineNodesE (pst-Bspline), 80 \psCalDodecaeder (pst-calendar), 791, 793 \psCalendar (pst-calendar), 791, 791, 792, 793 \psCancel (pstricks-add), 633, 633, 635 \psCancel* (pstricks-add), 634, 635 \pscbezier (pstricks), 75, 76 \psccurve (pstricks), 77, 77, 78, 183, 264 \psccurve* (pstricks), 77 \pscharclip (pst-text), 314, 315, 316 pscharclip Env. (pst-text), 314 \pscharclip* (pst-text), 314 pscharclip* Env. (pst-text), 314 \pscharpath (pst-text), 313, 314, 314, 316, 324, 629 \pscharpath* (pst-text), 313 \psChart (pstricks-add), 25, 625, 626, 627, 627, 628 \psChiIIDist (pst-func), 580, 581–583 \psChromaticityDiagram (pst-cie), 753 \psCi (pst-func), 570 \psci (pst-func), 570 \pscircle (pstricks), 45, 53, 55, 64, 67, 67, 69, 69, 70,

94–98, 105, 106, 137, 138, 246, 318 \pscircle* (pstricks), 69 \pscirclebox (pstricks), 123, 126, 128, 128, 129, 267 \pscirclebox* (pstricks), 128 \pscircleOA (pstricks), 69 \pscircleOA* (pstricks), 69 \psclip (pstricks), 131, 132 psclip Env. (pstricks), 105, 106, 131 \psCoil (pst-coil), 329, 333, 333, 334, 334, 336 \pscoil (pst-coil), 328–331, 333, 333, 333 \psCoil* (pst-coil), 333 \pscoil* (pst-coil), 333 \pscolhook (pst-node), 287 \psComment (pstricks-add), 655 \psComment* (pstricks-add), 655

933

ch-index.tex: (#2)

herbert

(P)

Index der Befehle und Begriffe

(Forts.)

(Forts.)

\psCoordinates (pstricks-add), 857 \pscurve (pstricks), 64–66, 67, 76, 76, 77, 77, 140, 141,

142, 142, 143, 143, 183 \pscurve* (pstricks), 76 \pscustom (pstricks), 57, 71, 73, 75, 89, 132, 132, 138, 139, 139, 140, 140, 141, 141, 142–144, 144, 145, 146, 146, 147, 147, 148, 149, 149, 150–154, 239, 349 \pscustom* (pstricks), 138 \psCylinder (pst-3dplot), 400 \psdblframebox (pstricks), 128 \psdblframebox* (pstricks), 128 \psdiabox (pstricks), 129, 268 \psdiabox* (pstricks), 129 \psdiamond

(pst-uml), 684 (pstricks), 61 \psdiamond* (pstricks), 61 \psdice (pstricks-add), 632 \psdiffractionCircular (pst-diffraction), 746 \psdiffractionRectangle (pst-diffraction), 746 \psdiffractionTriangle (pst-diffraction), 746,

747–751 \psdot (pstricks), 33, 53, 55, 84, 85, 86, 86, 87, 89, 157,

158, 161, 170, 235, 269, 893, 894 \psdot* (pstricks), 86 \psdots (pstricks), 86, 87, 89, 141, 183 \psdots* (pstricks), 86 \psecurve (pstricks), 77, 77, 183 \psecurve* (pstricks), 77 \psedge (pst-tree), 301, 301, 307, 307 \psElectricfield (pst-electricfield), 759, 759, 760 \psellipse (pstricks), 53, 67, 67, 72, 72–74 \psellipse* (pstricks), 72 \psellipticarc (pstricks), 66, 67, 67, 73, 73, 73 \psellipticarc* (pstricks), 73 \psellipticarcn (pstricks), 73, 73, 74, 74 \psellipticarcn* (pstricks), 74 \psellipticwedge (pstricks), 74 \psellipticwedge* (pstricks), 74 \psepicenter (pst-geo), 516 \psEquipotential (pst-electricfield), 759 \psFArrow (pst-fractal), 707, 711, 712 \psFDist (pst-func), 582 \psFern (pst-fractal), 707 PSfont Option (pst-cie), 752 (pst-func), 571 (pst-mirror), 470, 475 (pst-plot), 217 \psForeach (pstricks), 169, 169, 170 \psforeach (pstricks), 26, 169, 169, 170, 170, 171, 854 \psFourier (pst-func), 569 \psfractal (pst-fractal), 707, 708–711 \psframe (pstricks), 53, 54, 56, 56, 59, 59, 60, 60, 99–101, 137, 138, 269, 344, 347, 363, 367, 369 \psframe* (pstricks), 59

\psframebox (pstricks), 27, 27, 28, 29, 29, 126, 126,

127, 127, 128, 129, 130, 134, 135, 303, 894, 903 \psframebox* (pstricks), 127 \psGammaDist (pst-func), 579 \psGauss (pst-func), 572 \psGaussI (pst-func), 572 \psGetCurvePoint (pst-ode), 724 \psGetDistance (pstricks-add), 654 \psGetIsectCenter (pst-ode), 724 \psGetSlope (pstricks-add), 654 \psGlobeTellure (pst-geo), 516, 518 psgo Paket, 906 psgoboard Env. (psgo), 795, 796 psgopartialboard Env. (psgo), 795 \psgraph (pst-plot), 210, 211, 214 psgraph Env. (pst-plot), 210, 211, 211, 212, 212, 213, 898, 899 (pstricks-add), 899 (pstricks), 854 \psgrid (pstricks), 29, 35, 35, 36, 37, 37, 38, 38, 39, 40, 40, 41, 42, 42, 43, 43, 54, 141, 236, 238 \psGTriangle (pstricks-add), 803, 804, 805 \psHexagon

(demo), 175 (pstricks), 175, 176, 177 \psHexagon* (pstricks), 175 \psHomothetie (pstricks-add), 629 psinputs Env. (pdftricks), 900, 900, 901 \psintersect (pst-ode), 724 \psIntersectionPoint (pstricks-add), 638 \psKnot (pst-knot), 796, 796, 797, 798, 798, 799 \psKochflake (pst-fractal), 707 \pslabelsep Länge (pstricks), 58 \psLame (pst-func), 586, 586, 587, 587 \pslbrace (pstricks), 165 \psLCNode (pst-node), 270 \psLDNode (pst-node), 270, 284 \psline (pstricks), 24, 24, 25, 31, 43, 45, 47–53, 54, 54, 55, 56, 58, 58, 58, 59, 62, 64, 89, 100, 100, 101, 103, 104, 107, 108, 110–114, 138, 139, 139, 140, 140, 141, 141, 142, 150, 183, 292, 360 \psline* (pstricks), 24, 58, 58 \pslineByHand (pstricks-add), 654 \pslinecolor (pstricks), 24 \psLineIIID (pst-solides3d), 432, 432, 433 \pslinewidth (pstricks), 64 \pslinewidth Länge (pstricks), 46, 51, 109, 110 \psLNode (pst-node), 270 \pslongbox (pstricks), 132, 133 \psLoopIndex TEX-Zähler (pstricks), 171 \psLorenz (pst-func), 585, 585, 586 \psLorenz* (pst-func), 585 \psmagneticfield (pst-magneticfield), 754, 755–757 \psmagneticfieldThreeD (pst-magneticfield), 754, 756 \psmathboxfalse (pstricks), 134 \psmathboxtrue (pstricks), 134

934

ch-index.tex: (#2)

herbert

Index der Befehle und Begriffe

(Forts.)

(P)

(Forts.)

\psmatrix (pst-node), 114, 286, 286, 287, 287, 288, 289,

289, 290, 291 psmatrix Env. (pst-node), 286, 290 \psMatrixPlot (pstricks-add), 650, 650, 651 \psmeridien (pst-geo), 516 \psNodeLabelStyle (pst-geo), 527 \psOutLine (pst-optic), 730, 733 \psovalbox (pstricks), 126, 129, 268 \psovalbox* (pstricks), 129 \psparabola (pstricks), 75 \psparabola* (pstricks), 75 \psparallel (pst-geo), 516 \psParallelLine (pstricks-add), 638, 857 \psParametricplot (infix-RPN), 706 \psparametricplot (pst-plot), 67, 214, 226, 227, 229,

\psRotate (pstricks-add), 624 \psrotate (pstricks-add), 624 \psrotatedown (pstricks), 132 \psrotateleft (pstricks), 132, 132, 362, 365 \psrotateright (pstricks), 132, 132, 133 \psRotation (pst-eucl), 600 \psrowhook (pst-node), 287 \psrunit (pstricks), 25 \pssavebezier (pst-ode), 724 \pssavepath (pst-ode), 724 psscale Option

(pst-platon), 478 (pstricks), 94, 98, 476 \psscalebox (pstricks), 133, 133, 134, 762 \psscaleboxto (pstricks), 133, 134 229, 230 \psset (pstricks), 23, 24, 25, 25, 53, 58, 59, 107, 162, 180, 366, 903 \psPhyllotaxis (pst-fractal), 707 \pssetlength (pstricks), 26 \psPi (pst-plot), 247 \psshadow (pst-3d), 358, 358, 359 \pspicture (pstricks), 27 \psshadowbox (pstricks), 128, 128, 303, 304 pspicture Env. (pstricks), 24, 25, 27, 27–33, 43, 43, \psshadowbox* (pstricks), 128 131, 138, 535, 903 \psSi (pst-func), 570, 571 \pspicture* (pstricks), 27 pspicture* Env. (pstricks), 27, 27, 131, 131, 132, 315, \pssi (pst-func), 570 516, 521 \psSier (pst-fractal), 707 \psPiFour (pst-plot), 247 \pssin (pst-coil), 331–333 \pssin* (pst-coil), 333 \psPiH (pst-plot), 247 \psSolid (pst-solides3d), 417–419, 420, 420, 420, \psPiTwo (pst-plot), 247 421–427, 433, 434, 435–441, 441, 444, \psPlot (infix-RPN), 706 452–468 \psplot (pst-plot), 34, 67, 68, 142, 143, 143, 144, 150, 186, 187, 194, 196, 209, 210, 214, 216–223, \psspan (pst-node), 290, 290, 291 \psspectrum (pst-spectra), 769, 769, 770, 770, 771 223, 224, 225, 226, 226, 227, 227, 228, 230–233, 235, 557–559, 560, 889 \psStep (pstricks-add), 639, 640 \psplotDiffEqn (pstricks-add), 644, 644, 645, 645, \pssucc (pst-tree), 301, 306–308 646–649, 889 \psSurface (pst-solides3d), 441, 442, 443, 444 \psplotImp (pst-func), 588, 588, 589, 589, 590–592 pst-2dplot Paket, 904 \psplotTangent (pstricks-add), 640, 640, 641–643 pst-3d Paket, 10, 358, 359, 362, 363, 372, 382, 756, 890, 904 \psplotThreeD (pst-3dplot), 388, 391–393, 409, 410–412 pst-3dplot Paket, 183, 370, 382, 401, 890, 904 \psPoint (pst-solides3d), 431 pst-abspos Paket, 904 \psPoisson (pst-func), 578 pst-all Paket, 10 \pspolygon (pstricks), 54–56, 57, 59, 59, 64, 127, 183, pst-am Paket, 904 215 pst-asr Paket, 904 \pspolygon* (pstricks), 59 pst-bar Paket, 549, 890, 904 \pspolygonbox (pst-poly), 719 pst-barcode Paket, 535, 904 \psPolygonIIID (pst-solides3d), 432 pst-bezier Paket, 890, 904 \psPolynomial (pst-func), 560, 561–564, 569 pst-blur Paket, 352, 890, 904 \pspred (pst-tree), 301, 306, 307 pst-bspline Paket, 78, 904 \psPrintValue (pst-func), 571, 572, 706 pst-calendar Paket, 791, 904 \psprism (pst-optic), 735, 736 pst-cie Paket, 752, 890, 904 \psprismColor (pst-optic), 736 pst-circ Paket, 481, 738, 890, 904 \psProjection (pst-solides3d), 434, 435, 435, pst-coil Paket, 10, 327, 333, 890, 904 436–440, 440, 441 pst-cox Paket, 719, 905 \psPTree (pst-fractal), 707, 711 pst-coxcoor Paket, 721 \psRandom (pstricks-add), 91, 91, 92 pst-coxeterp Paket, 719 \psrbrace (pstricks), 165 pst-dbicons Paket, 905 \psRelLine (pstricks-add), 635, 635, 636, 637 pst-diffraction Paket, 745, 905 \psRelNode pst-electricfield Paket, 758, 890, 905 (pst-node), 271 pst-eps Paket, 10, 338, 339, 905 (pstricks-add), 635 pst-eucl Paket, 593, 890, 905

935

ch-index.tex: (#2)

herbert

(P)

Index der Befehle und Begriffe

(Forts.) pst-exa Paket, 905 pst-fill Paket, 10, 93, 98, 319, 320, 324, 373, 832, 905 pst-fr3d Paket, 379, 905 pst-fractal Paket, 890, 905 pst-fun Paket, 890, 905 pst-func Paket, 75, 560, 890, 905 pst-gantt Paket, 905 pst-geo Paket, 505, 905 pst-geo-compress.pl Programm, 506 pst-geo-decompress.pl Programm, 506 pst-gr3d Paket, 372, 905 pst-grad Paket, 10, 93, 341, 343, 830, 890, 905 pst-infixplot Paket, 706, 905 pst-intersect Paket, 2, 905 pst-jftree Paket, 703 pst-jtree Paket, 905 pst-key Paket, 179 pst-knot Paket, 890, 905 pst-labo Paket, 657, 671, 761, 905 pst-lens Paket, 725, 905 pst-light3d Paket, 890, 905 pst-magneticfield Paket, 754, 890, 905 pst-map2d Paket, 506, 516 pst-map2dII Paket, 506 pst-map3d Paket, 506, 890 pst-map3dII Paket, 506, 890 pst-math Paket, 557, 883, 890, 905 pst-mirror Paket, 469, 890, 905 pst-node Paket, 10, 251, 252, 285, 288, 293, 307, 334, 481, 699, 890, 898, 905 pst-ob3d Paket, 370, 905 pst-ode Paket, 2, 905 pst-optexp Paket, 738, 890, 905 pst-optic Paket, 745, 905 pst-osci Paket, 657, 765, 905 pst-pad Paket, 774, 905 pst-pdf Paket, 898, 899, 905 pst-pdgr Paket, 905 pst-pencil Paket, 905 pst-perspective Paket, 905 pst-platon Paket, 476, 905 pst-plot Paket, 10, 120, 183, 220, 233, 238, 387, 409, 560, 591, 905 pst-poly Paket, 905 pst-qtree Paket, 905 pst-sigsys Paket, 905 pst-slpe Paket, 93, 341, 345, 348, 891, 905 pst-solarsystem Paket, 776, 891, 905 pst-solides3d Option (pst-ob3d), 370 pst-solides3d Paket, 415, 465, 891, 906 pst-soroban Paket, 906 pst-spectra Paket, 768, 891, 906 pst-spirograph Paket, 891 pst-stru Paket, 906 pst-text Paket, 10, 313, 319, 891, 898, 906 pst-thick Paket, 906 pst-tools Paket, 891 pst-tree Paket, 10, 293, 294, 303, 308, 309, 699, 704, 906

(Forts.) pst-uml Paket, 679, 690, 906 pst-vue3d Paket, 415 pst-xkey Paket, 175, 179, 180 pst2pdf Paket, 906 \pstAbortion (pst-pdgr), 785 pstack (PostScript), 888 \pstAngle (pst-eucl), 612 \pstAngleABC (pst-eucl), 612 \pstAngleAOB (pst-eucl), 604, 605 \pstArcnOAB (pst-eucl), 610 \pstArcOAB (pst-eucl), 610 \pstBallon (pst-labo), 667, 673 \pstBilles (pst-labo), 658, 663 \pstBissectBAC (pst-eucl), 618 \pstBULLES (pst-labo), 658, 663, 664 \pstBullesChampagne (pst-labo), 658, 663 \pstCGravABC (pst-eucl), 615, 616 \pstChauffageBallon (pst-labo), 660, 662, 667, 673, 674 \pstChauffageTube (pst-labo), 662, 662, 663, 672, 672 \pstChauffeTube (pst-labo), 662 \pstChildless (pst-pdgr), 785 \pstCircle (pst-eucl), 602 \pstCircleAB (pst-eucl), 609 \pstCircleABC (pst-eucl), 602, 616, 616 \pstCircleOA (pst-eucl), 604, 609, 609, 610, 857 \pstClouFer (pst-labo), 664 \pstClous (pst-labo), 658 \pstContour (pst-cie), 753 \PstCube (pst-ob3d), 370, 371 \pstCuivre (pst-labo), 658 \pstCurvAbsNode (pst-eucl), 610, 610, 611 PstDebug Option (pst-fill), 320, 323, 324 (pst-gr3d), 372, 373, 373 (pst-ob3d), 370 (pst-plot), 222 \PstDie (pst-ob3d), 371 \psTDist (pst-func), 581 \pstDistAB (pst-eucl), 602, 603, 605, 605 \pstDistillation (pst-labo), 668, 677, 677 \pstDistVal (pst-eucl), 602, 605, 605 \pstDosage (pst-labo), 667, 668, 669, 669, 670, 676, 676 \pstEntonnoir (pst-labo), 675 \pstEprouvette (pst-labo), 675 \psTetrahedon (pst-platon), 477–479 \psTextFrame (pstricks), 59, 60 \psTextFrame* (pstricks), 59 \pstextpath (pst-text), 313, 314, 314, 315, 317, 317, 318 \pstFilaments (pst-labo), 658, 663 \pstFPadd (pstricks), 171, 171, 172 \pstFPDiv (pstricks), 171, 172, 172, 858 \pstFPdiv (pstricks), 171, 171, 172 \pstFPMul (pstricks), 171, 172, 172 \pstFPmul (pstricks), 171, 171, 172 \pstFPstripZeros (pstricks), 172 \pstFPsub (pstricks), 171, 171, 172

936

ch-index.tex: (#2)

herbert

Index der Befehle und Begriffe

(Forts.)

(P)

(Forts.)

\PstFrameBoxThreeDMacro (pst-fr3d), 382 PstGanttChart Env. (pst-gantt), 786, 786, 787, 788 \PstGanttTask (pst-gantt), 786, 786, 787, 788 \pstGenericCurve (pst-eucl), 604, 604, 605, 607, 611,

611 \pstGeonode (pst-eucl), 596, 596, 599–605, 606, 606,

606, 607, 607, 608–616, 619, 620, 622 \pstGrenailleZinc (pst-labo), 664 \PstGridThreeD

(pst-fr3d), 380 (pst-gr3d), 373–375, 375, 376, 376, 376, 377–379 \PstGridThreeDHookEnd (pst-gr3d), 374, 376, 376, 377, 378, 379 \PstGridThreeDHookNode (pst-gr3d), 377 \PstGridThreeDHookXFace (pst-gr3d), 377 \PstGridThreeDHookYFace (pst-gr3d), 377 \PstGridThreeDHookZFace (pst-gr3d), 377 \PstGridThreeDNodeProcessor (pst-gr3d), 377, 377, 378 \pstheader (pstricks), 163, 164, 890 \PstHeptagon (pst-poly), 717, 718 \PstHexagon (pst-poly), 718, 719 \psthick (pst-knot), 799–801 \psThomae (pst-func), 588 \pstHomO (pst-eucl), 602, 613, 613, 614, 614 \psTilt (pst-3d), 359, 360, 361, 361, 362, 362, 365 \pstilt (pst-3d), 359, 360, 360–362, 362 \pstInterCC (pst-eucl), 601, 602, 620, 620 \pstInterFC (pst-eucl), 622 \pstInterFF (pst-eucl), 621, 621, 857 \pstInterFL (pst-eucl), 621, 621, 622 \pstInterLC (pst-eucl), 619 \pstInterLL (pst-eucl), 618, 618, 619 \PstLens (pst-lens), 725, 726–729 \PstLensShape (pst-lens), 725 \PstLightThreeDGraphic (pst-light3d), 790 \PstLightThreeDText (pst-light3d), 790, 791 \pstLineAB (pst-eucl), 602, 603, 609, 609, 609, 617, 618 \pstMarkAngle (pst-eucl), 598, 599, 608, 608, 608, 858 \pstMediatorAB (pst-eucl), 617 \pstMiddleAB (pst-eucl), 615, 615, 857 \pstMirrorSphere (pst-mirror), 472 \PstNonagon (pst-poly), 718 \pstODEsaveState (pst-ode), 723 \pstODEsetOrRestoreState (pst-ode), 723 \pstODEsolve (pst-ode), 723 \pstOIJGeonode (pst-eucl), 606, 607 \pstOrtSym (pst-eucl), 612, 612, 857, 858 \pstOutBissectBAC (pst-eucl), 618 \PstPad (pst-pad), 775 \pstParaboloid (pst-3dplot), 408, 409 \PstPentagon (pst-poly), 717, 718 \pstPerson (pst-pdgr), 785 PstPicture Option (pst-gantt), 786 (pst-gr3d), 372, 373, 373, 374, 376 (pst-platon), 476, 477, 477 (pst-poly), 714 \pstpipette (pst-labo), 676

\pstPlanck (pst-cie), 753 \pstPlanePut (pst-3dplot), 390, 390, 391, 393 \PstPolygon (pst-poly), 713, 713, 714–718 \PstPolygon* (pst-poly), 713 \PstPolygonNode (pst-poly), 717–719 \pstProjection (pst-eucl), 614, 614, 857 \pstracecurve (pst-ode), 724 \pstRadUnit Länge (pst-plot), 247, 248 \pstRadUnitInv Länge (pst-plot), 247 \psTransformPoint (pst-solides3d), 433 \pstransTS (pst-perspective), 778, 779 \pstransTSK (pst-perspective), 778, 779 \pstransTSX (pst-perspective), 778, 779 \psTree (pst-tree), 293, 293, 294 psTree Env. (pst-tree), 293, 294 \pstree (pst-tree), 293, 293, 294, 294, 295–302, 302,

303–312 \pstRelationship (pst-pdgr), 784 \pstriangle

(pst-uml), 684 (pstricks), 61 \pstriangle* (pstricks), 61 \pstribox (pstricks), 129, 268 \pstribox* (pstricks), 129 pstricks Paket, 15, 29, 104, 172, 293, 357, 372, 705, 819, 820, 890, 893 pstricks-add Paket, 25, 68, 91, 105, 114, 124, 160, 623, 890, 904 PSTricks-Objekt, 177 \PSTricksOff (pstricks), 164 \PSTricksOn (pstricks), 165 \pstRightAngle (pst-eucl), 608, 609 \pstRotation (pst-eucl), 600, 601, 604, 612, 612, 613 \pstScalePoints (pst-plot), 203, 212, 213, 222, 245, 245 \pstSegmentMark (pst-eucl), 607 \pstslash (pst-eucl), 597 \pstslashh (pst-eucl), 597 \pstslashhh (pst-eucl), 597 \pstSphereArc (pst-mirror), 471 \pstSphereCircle (pst-mirror), 471 \pstSphereCone (pst-mirror), 474 \pstSphereCube (pst-mirror), 472 \pstSphereCylinder (pst-mirror), 474 \pstSphereDie (pst-mirror), 472 \pstSphereFrame (pst-mirror), 470, 472 \pstSphereGrid (pst-mirror), 470, 472 \pstSphereLine (pst-mirror), 471, 471, 472–475 \pstSpherePoint (pst-mirror), 470, 471, 471, 472–475 \pstSpherePolygon (pst-mirror), 471, 471, 472, 472, 473–475 \pstSpherePyramide (pst-mirror), 474 \pstSphereTetraedre (pst-mirror), 474 \pstSphereText (pst-mirror), 475 \PstSphereToWall (pst-pad), 775 \pstSymO (pst-eucl), 611, 611, 612 \pstThreeDBox (pst-3dplot), 394–397, 406, 406 \pstThreeDCircle (pst-3dplot), 407

937

ch-index.tex: (#2)

herbert

(Q–R)

Index der Befehle und Begriffe

(Forts.) \pstThreeDCoor (pst-3dplot), 384, 385, 385, 386, 386,

387–399, 400, 400–415 \pstThreeDDot (pst-3dplot), 394, 395, 403, 403, 404 \pstThreeDEllipse (pst-3dplot), 389, 395, 407, 407 \pstThreeDLine (pst-3dplot), 404, 405 \pstThreeDNode (pst-3dplot), 403 \pstThreeDPut (pst-3dplot), 388, 399, 402, 403, 403,

Quadrupol, 484, 490, 497 quaternion Wert (pst-3dplot), 384 Quecksilber, 769

R R Option

(pst-am), 765, 767 (pst-magneticfield), 754 408 R Wert \pstThreeDput (pst-3dplot), 390 (pst-node), 287 \pstThreeDSphere (pst-3dplot), 397, 398, 408, 408 (pst-tree), 295 \pstThreeDSquare (pst-3dplot), 405 (pstricks), 126, 129 \pstThreeDTriangle (pst-3dplot), 389, 404, 405 r Option \PstTiling (pst-fill), 320 (pst-diffraction), 748, 749 \PSTtoEPS (pst-eps), 338, 339, 340 (pst-solides3d), 421–423, 425, 426 \pstTournureCuivre (pst-labo), 664 r Wert \pstTranslation (pst-eucl), 603, 613, 613, 613, 857 (pst-node), 287 \pstTriangle (pst-eucl), 595–598, 607, 608, 608, 608, (pst-tree), 309 612, 615–617 (pst-uml), 682, 683, 683 \pstTubeEssais (pst-labo), 659–661, 663–665, 672, (uml), 693 673 r0 Option (pst-solides3d), 422, 424, 453 \pstTuveEssais (pst-labo), 678 r1 Option (pst-solides3d), 422, 424, 453 \pstunit (pstricks), 139 rad (PostScript), 168 \pstVerb (pstricks), 23, 28, 34, 164, 166, 166, 167, 167, \radian (pstricks), 25 168, 168, 460 Radius Option \pstverb (pstricks), 139, 164, 166, 166–168 (pst-eucl), 594, 602, 603, 603, 619, 620, 622 \pstverbscale (pstricks), 28, 166, 168 (pst-fractal), 711 \PstWallToWall (pst-pad), 775 (pst-geo), 517, 518, 527 \psunit (pstricks), 25, 201 radius Option \psverbboxfalse (pstricks), 135 (pst-node), 253, 254, 255, 267 \psverbboxtrue (pstricks), 135 (pst-tree), 294, 299, 300, 310, 312 \psVolume (pst-func), 591 RadiusA Option (pst-eucl), 594, 602, 620 \pswedge (pstricks), 53, 71, 72, 74 radiusA Option (pst-func), 586, 587, 587, 588 \pswedge* (pstricks), 72 RadiusB Option (pst-eucl), 594, 602, 620 \psWeibull (pst-func), 584 radiusB Option (pst-func), 586, 587, 587, 588, 589 \psWeinbull (pst-func), 585 radslope Wert (pst-slpe), 345, 346, 349 \psxunit (pstricks), 25, 156, 214, 636 radslopes Wert (pst-slpe), 345, 346, 349 \psxyzlabel (pst-3dplot), 388 RadtoDeg (PostScript), 249, 890 \psyunit (pstricks), 25, 31, 156, 214, 332, 636 railroad diagram, 277 \pszigzag (pst-coil), 328–330, 333, 334, 334, 336 \raisebox, 30–32 \pszigzag* (pst-coil), 333 (pst-uml), 681 pt, 38, 139 rand (PostScript), 91, 157, 888 PtNameMath Option (pst-eucl), 594, 606, 606, 611–620 random Paket, 91 PtoC (PostScript), 889 RandomFaces Option (pst-ob3d), 370 Punkt, 83, 86 randomPoints Option (pstricks-add), 91 aktueller, 150 range Option (pst-solides3d), 425, 434 put (PostScript), 888 RAngle (PostScript), 889 Pyth (PostScript), 889 Raute, 61, 129 \rayInterLens (pst-optic), 731 Q Rayon Option (pst-mirror), 469 Q Option rB Option (pstricks), 121 rb Option (pstricks), 121 (pst-cox), 719, 720 rb Wert (pst-node), 259 (pst-electricfield), 758 \qdisk (pstricks), 34, 70, 70, 122, 123, 141, 162 rbracketlength Option (pstricks), 108, 111, 111 \rccor (pstricks), 153 \qline (pstricks), 59, 141 \RCMPL (pst-rrgtrees), 700 QR-Code, 548 \rCMPL (pst-rrgtrees), 700 qtree Paket, 704 \rcoor (pstricks), 152, 152, 153 Quader, 445 \rcurveto (pstricks), 151 \quadripole (pst-circ), 491 rcurveto (PostScript), 888 quadripoleinput Option (pst-circ), 496

938

ch-index.tex: (#2)

herbert

Index der Befehle und Begriffe

RDogToothA Wert (pst-osci), 761 RDogToothB Wert (pst-osci), 761 \readdata

(R)

(Forts.)

(pst-3dplot), 414 (pst-plot), 233, 234, 236, 240, 554 \readpsbardata (pst-bar), 553, 554, 554–556 receptor Wert (pst-circ), 492 Rechteck, 59 rectangle Wert (pst-circ), 494, 497 RectangleA Wert (pst-osci), 761 RectangleB Wert (pst-osci), 761 recuperationGaz Option (pst-labo), 658, 667, 667, 674 \red (pstricks), 11 red Wert (pstricks), 47 RedContLissajou Wert (pst-osci), 762 ref Option (pstricks), 60, 124, 253, 259, 259, 304, 629–631, 631, 632, 634, 635 (uml), 692, 692, 693, 695 reference Option (uml), 694 Referenzpunkt, 119 \reflectbox (graphicx), 133 refpoint Option (uml), 692, 693, 693, 696 \refractionRay (pst-optic), 730, 733, 734, 737 refrigerantBoulles Option (pst-labo), 658, 666, 667 Regentropfenfunktion, 587 Reibungssystem, 774 Reihenentwicklung, 232 \relationshipbetween (pst-dbicons), 783 relative Wert (pstricks), 46, 56 \relayNOP (pst-circ), 487 repeat (PostScript), 888 \resetcolorseries (xcolor), 16, 17 \ResetXY (pst-uml), 684, 685 \resistor (pst-circ), 481, 482, 485, 489, 491, 494 \resizebox (graphicx), 414, 415 resolution Option (pst-solides3d), 434, 462, 463 reverse coor, 152 Reverse Polish Notation, siehe UPN \RFLine (pst-circ), 485 RGB, 11, 18, 341, 454, 746, 886 ridge Option (pst-geo), 522 Riemann, 639 Riemann Wert (pstricks-add), 639, 640 Riemannfunktion, 587 right Wert (pst-circ), 494, 496 (pst-plot), 189 rightangle Wert (pst-solides3d), 438 RightAngleSize Option (pst-eucl), 594, 598, 598, 609 RightAngleType Option (pst-eucl), 594, 598, 598, 615 righttext Option (pst-pdgr), 785 rivers Option (pst-geo), 507, 508–510, 514, 515, 515, 516, 525 rk4 Wert (pstricks-add), 644, 646, 647 \rlineto (pstricks), 150 rlineto (PostScript), 888 \RM (demo), 629

rm Option (pst-solides3d), 457, 458, 458 Rmax Option (pst-geo), 521 rmoveto (PostScript), 888 \rmultiput (pstricks-add), 124 \rmultiput* (pstricks-add), 124 \Rnode (pst-node), 254, 254, 264, 264, 265, 284, 285, 286,

287, 304, 305 \rnode (pst-node), 158, 184, 251, 258, 263, 263, 263, 264,

272, 275–281, 285, 287, 300, 304, 305, 684 roll (PostScript), 646, 888 \roller (pst-stru), 771 \Roman (pst-platon), 478 \roman (pst-platon), 478 rot Option (pstricks), 50, 60, 72, 73, 124, 217, 253, 260,

260, 631, 631, 632, 634, 635 RotAngle Option

(pst-3dplot), 383, 384 (pst-eucl), 594, 600, 600, 604, 604, 612, 613 \rotate (pstricks), 147 rotate (PostScript), 238, 888 rotate Option (pst-barcode), 536, 536, 537 Rotatedown Env. (pstricks), 133 rotatedroite Wert (pst-solides3d), 436 Rotateleft Env. (pstricks), 133 rotateOpoint3d (PostScript), 460 rotatepol Wert (pst-solides3d), 437 Rotateright Env. (pstricks), 133 rotateSymbol Option (pstricks), 46 rotating Paket, 362 Rotation, 72, 238 Rotation Option (pst-eps), 339 Rotationssequenz, 396 Rotationswinkel, 526, 612 Rotationszentrum, 624 Rotieren, 132 RotSequence Option (pst-3dplot), 383, 384, 395, 396, 397 RotSet Option (pst-3dplot), 383–385 RotX Option (pst-3dplot), 383, 395–397 (pst-geo), 517, 517, 518, 519, 521–523, 526 (pst-mirror), 469, 472 (pst-solides3d), 426, 433, 462, 462 RotY Option (pst-3dplot), 383, 395, 396 (pst-geo), 517, 517, 518, 519, 521–523, 526 (pst-mirror), 469, 472 (pst-solides3d), 433 RotZ Option (pst-3dplot), 383, 395–397 (pst-geo), 517, 526 (pst-mirror), 469, 472 (pst-solides3d), 433 rouge Wert (pst-solides3d), 449 round (PostScript), 230, 884 rowsep Option (pst-node), 287, 289, 289, 290 \RPN (infix-RPN), 705, 705, 706, 706 \Rput (pstricks), 122, 122, 122

939

ch-index.tex: (#2)

herbert

(S)

Index der Befehle und Begriffe

SegmentSymbol Option (pst-eucl), 594, 596, 597, 607,

(Forts.) \rput (pstricks), 30, 44, 60, 64, 66, 105, 108, 114, 120,

607, 612, 615, 617 121, 121, 121–124, 131, 242, 269, 280, 286, SegmentSymbolA Option (pst-eucl), 594, 596, 616 SegmentSymbolB Option (pst-eucl), 594, 596, 616 629, 632, 655, 706, 895 \Rput* (pstricks), 122 SegmentSymbolC Option (pst-eucl), 594, 596, 616 \rput* (pstricks), 121 Seitenhalbierende, 615 \rputXY (pst-uml), 684 Sekante, 640 RRGtree Paket, 906 Sekantensteigung, 641 RSS Expanded, 546 sensivity1 Option (pst-osci), 761 RSS Limited, 546 sensivity2 Option (pst-osci), 761 RSS-14, 546 \SENTENCE (pst-rrgtrees), 701 Rtetraedre Option (pst-mirror), 469 set Wert (pst-3dplot), 385 rtp2xyz (PostScript), 415, 453 setcmykcolor (PostScript), 23, 888 ruban Wert (pst-solides3d), 425 \setcolor (pstricks), 153 \rule, 289 setdash (PostScript), 888 Runge-Kutta, 644, 646 setfont (PostScript), 238, 888 \runit (pstricks), 157 setgray (PostScript), 238, 888 runit Option (pstricks), 25 setgray Option (pst-magneticfield), 755, 757 sethsbcolor (PostScript), 157, 888 S setlinecap (PostScript), 888 sab Option (pst-pdgr), 785 setlinejoin (PostScript), 50, 389, 888 samer Option (pst-geo), 507, 525, 527, 531 setlinewidth (PostScript), 888 Sanson-Flamsteed, 509 setmatrix (PostScript), 888 \savebox, 20, 43, 131 setrgbcolor (PostScript), 23, 888 \savedata (pst-plot), 233, 234, 894 setspace Paket, 316 \saveDataAsNodes (pst-plot), 855 \SetX (pst-uml), 684 SaveVerbatim Env. (fancyvrb), 823 \SetXY (pst-uml), 684 \sbox, 20 \SetY (pst-uml), 684 Scale Option (pst-eps), 339 sex Option (pst-pdgr), 785 \scale (pstricks), 146, 147 sfg Paket, 906 scale (PostScript), 888 \sfgbranch (sfg), 780 scale Option \sfgcurve (sfg), 780 (graphicx), 361, 362 \sfgnode (sfg), 780 (pst-fractal), 710 \sfgtermnod (sfg), 780 (pst-mirror), 469 shadow Option (pstricks), 46, 57, 128, 128, 129, 140, \scalebox (graphicx), 133 353–356 scalefont (PostScript), 238, 888 shadowangle Option (pstricks), 46, 57, 148, 149 scaleOpoint3d (PostScript), 460 shadowcolor Option (pstricks), 46, 148 scalex Option (pst-barcode), 536, 536, 537 shadowsize Option (pstricks), 46, 60, 148, 149, 353 scaley Option (pst-barcode), 536, 536, 537 shape Wert (pstricks), 94, 101 Scanline-Rendering-Verfahren, 803 shapealpha Option (pstricks), 94, 101 Schalter, 486, 490 shift Option (pstricks), 29, 30, 30–32 Schatten, 352, 353, 358 \SHN (pst-uml), 686 Schattenbildung, 57, 358 shortput Option (pst-node), 114, 130, 253, 260, 261, Schatteneffekt, 57 261, 262–264, 308 Schattenfarbe, 352, 354 \show, 235, 554 Schattierung, 804 show (PostScript), 238, 888 Scheitelpunkt, 75 show Option (pst-solides3d), 427 Schleife, 278 showAxes Option (pst-solides3d), 430 Schnittebene, 449 showBase Option (pst-solides3d), 420, 434 Schnittpunkt, 618 showbbox Option (pst-tree), 295, 303, 303, 304 Schrittweite, 572 showborder Option (pst-barcode), 536 \Schwerpunkt (demo), 180 showbox Option (pst-tree), 294 \scriptscriptstyle, 125, 194 showcontour Option (pst-cie), 752 \scriptsize, 194 showframe Option (pst-Bspline), 78, 80 \scriptstyle, 125, 194 showgrid Option (pstricks), 29, 30, 35, 40, 47, 53, 59, Second Option (pst-solarsystem), 777 62, 133, 140, 170 secondarylabel Option (pst-circ), 483, 497 showInside Option (pst-3dplot), 409 SegmentColor Option (pst-3dplot), 383, 397, 397, 398, 408, 409 showOrigin Option (pst-solides3d), 421, 427, 428, 428

940

ch-index.tex: (#2)

herbert

Index der Befehle und Begriffe

(Forts.) showorigin Option (pst-plot), 185, 197, 197, 203, 246,

247 showOriginTick Option (pst-plot), 185, 197 showpoints Option (pstricks), 46, 55, 55, 71, 71, 73,

74, 83, 140, 241–243, 576 sigma Option (pst-func), 572 SignalDemodule Option (pst-am), 765, 767 SignalModulant Option (pst-am), 765, 766, 767 SignalModule Option (pst-am), 765, 766, 767 SignalPorteuse Option (pst-am), 765, 766, 767 SignalRedresse Option (pst-am), 765 \Simplex (pst-cox), 719, 720, 721

Simpson, 572 Simpson Option (pst-func), 572 SIN (PostScript), 559 sin (PostScript), 223, 230, 249, 884 SINC (PostScript), 559 sinCoeff Option (pst-func), 569 sincoeff Option (pst-func), 569 SINH (PostScript), 559 SinusA Wert (pst-osci), 761 SinusB Wert (pst-osci), 761 Sinusfunktion, 569 sizeCenters Option (pst-cox), 720 sizeVertices Option (pst-cox), 720 sizeX Option (uml), 691–693 sizeY Option (uml), 691, 692, 693 Skalieren, 24, 85, 132 Skalierungsfaktor, 359 \skiplevel (pst-tree), 311 skiplevel Env. (pst-tree), 312 \skiplevels (pst-tree), 311, 311, 312, 312 skiplevels Env. (pst-tree), 311 slide Env. (beamer), 813, 814 slope Wert (pst-slpe), 344, 345, 345, 347, 348 slopeangle Option (pst-slpe), 346, 348, 349 slopebegin Option (pst-slpe), 346, 347, 347 slopebegin Wert (pst-slpe), 346 slopecenter Option (pst-slpe), 346, 349, 349, 350 slopecolors Option (pst-slpe), 346, 347, 348 slopeend Option (pst-slpe), 346, 347, 347 slopeend Wert (pst-slpe), 346 sloperadius Option (pst-slpe), 346, 350, 351 slopes Wert (pst-slpe), 345, 345, 347, 348 slopesteps Option (pst-slpe), 346, 348, 348 SLW (PostScript), 889 \small, 194 SMPTE Wert (pst-cie), 752 Softfont, 88 \SolarSystem (pst-solarsystem), 777 solid Wert (pstricks), 24, 45, 47, 94, 95, 103 solide Option (pst-labo), 658, 663, 664, 664, 665 SolidesDict (PostScript), 891 solidmemory Option (pst-solides3d), 426, 437, 465, 465, 466–468 SolidOctogon Wert (pstricks), 88 sommets Option (pst-solides3d), 427, 427, 463, 463, 464 \space, 166, 298

(S)

(Forts.) Spannung, 228 Spannungspfeil, 491 Spannungsquelle, 485, 488 \special, 5, 139, 151, 163, 167, 291, 897 \SpecialCoor (pstricks), 26, 26, 155, 155, 161, 162, 170, 179, 264, 265, 280, 630 Spektrum, 770 Sphere Option (pst-mirror), 469 sphere Wert (pst-solides3d), 418, 419, 422, 452 SphericalCoor Option (pst-3dplot), 383, 388, 395 Spirale, 647 spotX Option (pst-3dplot), 383, 390, 390 (pst-solides3d), 430, 443 spotY Option (pst-3dplot), 383, 390, 390 (pst-solides3d), 430, 443 \spotZ (pst-3dplot), 390 spotZ Option (pst-3dplot), 383, 390 (pst-solides3d), 430, 443 Spule, 327, 485 sqrt (PostScript), 223, 230, 410, 884 square Wert (pstricks), 85 \SQUID (pst-circ), 487 srand (PostScript), 888 sRGB Wert (pst-cie), 752 Stack, 226, 227, 646 stack Wert (pst-bar), 550, 551 Stackelement, 884 Stacksystem, 226 Standardabweichung, 558, 572, 575 startAngle Option (pstricks), 46, 49 startfading Option (pst-slpe), 346, 350 startLW Option (pstricks), 64, 67 startWL Option (pstricks), 64, 68 \State (vaucanson-g), 781 Steigung, 640, 643 step Option (xcolor), 16 stepFacor Option (pst-electricfield), 758 StepType Option (pstricks-add), 639, 639, 640 stepV Option (pst-electricfield), 758, 759 stepX Option (pst-solides3d), 430, 431, 443 stepY Option (pst-solides3d), 430, 431, 443 stepZ Option (pst-solides3d), 430, 431, 443 stereotype Option (uml), 694, 696 Steuerwinkel, 228 Stil, 137 Stildatei, 163 \stone (psgo), 794, 795 Strahlensatz, 416 StreamDensityPlot Option (pst-magneticfield), 755, 757 string (PostScript), 887, 888 \stroke (pstricks), 89, 144, 144, 146 stroke (PostScript), 888 strokeopacity Option (pstricks), 94, 103, 104, 633, 634 Strom, 228

941

ch-index.tex: (#2)

herbert

(T)

Index der Befehle und Begriffe

(Forts.) Strompfeile, 491 Stromquelle, 485, 488 Stromrichtersteuerung, 228 Strophoide, 229 Stützstellen, 226 .sty Dateiendung, 5 style Option (pst-calendar), 791, 793 (pstricks), 105, 137 styleCenters Option (pst-cox), 720 styleCourant Option (pst-magneticfield), 755 styleSpire Option (pst-magneticfield), 755 styleVertices Option (pst-cox), 720 Stützpunkt, 75, 564 sub (PostScript), 884 sub Wert (pst-osci), 762 subgridcolor Option (pstricks), 35, 39, 39, 122, 123 subgriddiv Option (pstricks), 35, 37, 37, 38, 122 subgriddots Option (pstricks), 35, 39, 39 subgridwidth Option (pstricks), 35, 38, 38 subof Option (uml), 696 substance Option (pst-labo), 658, 663, 663, 664, 664 subtickcolor Option (pst-plot), 185, 208, 208 subticklinestyle Option (pst-plot), 185, 207 subticks Option (pst-plot), 185, 188, 200, 201, 203, 204, 204, 205–209 subticksize Option (pst-plot), 185, 200, 201, 207, 207, 208 subtickwidth Option (pst-plot), 185, 205, 206, 206 subv Wert (pst-solides3d), 435 suisseromand Wert (pst-eucl), 594, 598 Sum (PostScript), 230, 232, 233 Summenfunktion, 232 Superellipse, 586 \Suppressor (pst-circ), 487 surface Wert (pst-solides3d), 425, 425 surface* Wert (pst-solides3d), 426, 426 surfaceparametree Wert (pst-solides3d), 426, 426, 455 \swapaxes (pstricks), 147 swapaxes Option (pstricks), 33, 34, 140 .swf Dateiendung (pstricks-add), 805 \switch (pst-circ), 486 Symbol, 83, 86 Symbol Wert (pstricks), 36 symbol Wert (pstricks), 45, 47, 48–50 symbolFont Option (pstricks), 45 symbolStep Option (pstricks), 45, 49 symbolWidth Option (pstricks), 45, 50 sympol Wert (pst-solides3d), 437 Sättigung, 453 Südamerika, 527

T T (PostScript), 889 t Wert

(pst-uml), 683 (uml), 693 tab Wert (pst-node), 253, 262

\tabcolsep Länge, 128 tablr Wert (pst-node), 253 tabular Env., 128, 129, 683 Tag Option (pst-calendar), 791 TAN (PostScript), 559 tan (PostScript), 230

Tangens, 34 Tangente, 640, 643 Tangentensteigung, 640, 641 TANH (PostScript), 559 \taput (pst-node), 262, 283, 284 \taput* (pst-node), 283 TaskInsideLabel Option (pst-gantt), 786 TaskOutsideLabel Option (pst-gantt), 786 TaskOutsideLabelMaxSize Option (pst-gantt), 786 TaskStyle Option (pst-gantt), 786 TaskStyleDefault Wert (pst-gantt), 786 TaskUnitIntervalValue Option (pst-gantt), 786 TaskUnitType Option (pst-gantt), 786 tbarsize Option (pstricks), 108, 111, 111, 114 \tbput (pst-node), 262, 283 \tbput* (pst-node), 283 \TC (pst-tree), 294–298, 300–303, 304, 304–312 \Tc (pst-tree), 304, 305, 307, 308 \TCircle (pst-tree), 304 \Tcircle (pst-tree), 296, 297, 299, 302, 304, 312 tCyan Wert (demo), 105 \Tdia (pst-tree), 303, 304 \Tdot (pst-tree), 304, 305 \temp (xcolor), 18 \tension (pst-circ), 486 tension Option (pst-circ), 483, 491, 492 tensioncolor Option (pst-circ), 483, 491, 492 tensionlabel Option (pst-circ), 483, 491, 492 tensionlabelcolor Option (pst-circ), 483, 491, 492 tensionlabeloffset Option (pst-circ), 483, 491, 492 tensionoffset Option (pst-circ), 483 tensionwidth Option (pst-circ), 483, 491, 492 Tetraeder, 476 tetrahedron Wert (pst-solides3d), 423 .tex Dateiendung, 5, 898 \text (amsmath), 287 text Option (pst-solides3d), 434 \textcolor, 11, 13, 14, 31 textcolor Option (pst-cie), 752 texte Wert (pst-solides3d), 440, 441 textfont Option (pst-barcode), 544 Textmodus, 125, 194 TeXtoEPS Env. (pst-eps), 338 \TeXtoEPS (pst-eps), 338 textpos Option (pst-barcode), 536, 537 textsize Option (pst-barcode), 536, 544 \textstyle, 125, 194 textures Programm, 168 \Tf (pst-tree), 304, 305 \Tfan (pst-tree), 295, 306, 306 Tfontsize Option (pst-cie), 752 \the, 173 THETA Option (pst-geo), 517, 526 theta Option (pst-solides3d), 422, 423, 426

942

ch-index.tex: (#2)

herbert

Index der Befehle und Begriffe

(T)

(Forts.)

(Forts.) thislevelsep Option (pst-tree), 295, 299, 301, 301,

302, 307 thistreefit Option (pst-tree), 295, 299 thistreenodesize Option (pst-tree), 295, 298 thistreesep Option (pst-tree), 295, 297, 297, 307

Thomaefunktion, 587 \thput (pst-node), 283 \thput* (pst-node), 283 three Wert (pst-circ), 493 \ThreeDput (pst-3d), 363, 363, 364, 364, 366, 367, 369,

376 thyristor Wert (pst-circ), 495

Thyristorpaar, 228 tickcolor Option (pst-plot), 185, 200, 201, 201, 207, 208 ticklength Option (pst-solides3d), 430 ticklinestyle Option (pst-plot), 185, 200, 200, 201, 202, 207, 208 ticks Option (pst-plot), 185, 197, 197, 198, 204, 205 ticksize Option (pst-plot), 185, 201, 202–205, 207 tickstyle Option (pst-plot), 185, 198, 199, 200, 201 tickwidth Option (pst-plot), 185, 200, 200, 201, 205–208 Tiefe, 119, 298, 310 \tiershortcuts

(pst-asr), 702 (pst-qtree), 704, 705 tight Wert (pst-tree), 295, 298 Tiling, 319 tilting, 359 timeDiv Option (pst-am), 765, 767 timediv Option (pst-osci), 761 Times-Roman Wert (pst-mirror), 475 (pstricks), 36 \tiny, 194 title Option (pst-am), 766 \tlput (pst-node), 262, 283, 284 \tlput* (pst-node), 283 TMatrix (PostScript), 889 .tmp Dateiendung (pst-tree), 301 \Tn (pst-tree), 305, 306 tndepth Option (pst-tree), 309, 310 tnheight Option (pst-tree), 309, 310, 310 tnpos Option (pst-tree), 309 \tnput (pst-tree), 309 tnsep Option (pst-tree), 309, 310 tnyref Option (pst-tree), 309, 310, 311 \TOP (pst-rrgtrees), 701 top Wert (pst-plot), 189, 198, 199 tore Wert (pst-solides3d), 424, 452 Tortendiagramm, 25 \Toval (pst-tree), 294, 296, 298, 301, 302, 304, 305 \Tp (pst-tree), 304, 305 \TPoffset (pst-text), 317 tpos Option (pst-node), 253, 263, 307, 308 \TR (pst-tree), 298, 303, 304, 305, 305, 306, 307 \Tr (pst-tree), 300, 304, 304, 305 traceU Option (pst-am), 765

\Transform (pst-optic), 731, 732 transform (PostScript), 888 transform Option (pst-solides3d), 434, 436, 459, 459,

460, 461 Transformation, 433 Transformationsmatrix, 86, 885 Transformator, 490, 491, 497 \transformer (pst-circ), 491, 497 transformeriprimary Option (pst-circ), 483, 497 transformeriprimarylabel Option (pst-circ), 483 transformerisecondary Option (pst-circ), 483, 497 transformerisecondarylabel Option (pst-circ), 483 transformerprimarylabel Option (pst-circ), 497 transformersecondarylabel Option (pst-circ), 497 TransformLabel Option (pst-eucl), 594, 600, 600 Transistor, 489, 497 \transistor (pst-circ), 489, 496 transistorbase Option (pst-circ), 496 transistorbaselabel Option (pst-circ), 496 transistorcircle Option (pst-circ), 483, 496 transistorcollector Option (pst-circ), 496 transistorcollectorlabel Option (pst-circ), 496 transistoremitter Option (pst-circ), 496 transistoremitterlabel Option (pst-circ), 496 transistoribase Option (pst-circ), 483 transistoribaselabel Option (pst-circ), 483 transistoricollector Option (pst-circ), 483 transistoricollectorlabel Option (pst-circ), 483 transistoriemitter Option (pst-circ), 483 transistoriemitterlabel Option (pst-circ), 483 transistorinvert Option (pst-circ), 483, 496 transistortype Option (pst-circ), 483, 496 \translate (pstricks), 145, 146, 146, 147–149 translate (PostScript), 889 translatedroite Wert (pst-solides3d), 436 translatepol Wert (pst-solides3d), 437 Translation, 613 Translation Option (pst-eps), 339 translation Option (pst-mirror), 470 Transparenz, 93, 102, 350 transx Option (pst-barcode), 536 transy Option (pst-barcode), 536 treefit Option (pst-tree), 295, 298, 299 treeflip Option (pst-tree), 295, 296, 297 treemode Option (pst-tree), 295, 296, 297, 300, 302, 305, 307, 308, 311 treenodesize Option (pst-tree), 295, 297, 298, 305 Trees, 283 treesep Option (pst-tree), 295, 297, 298, 298, 299, 306, 310 \Tri (pst-tree), 305 triac Wert (pst-circ), 495 triangle Wert (pst-circ), 493 (pstricks), 85 TriangleA Wert (pst-osci), 761 TriangleB Wert (pst-osci), 761 Triginometrische Funktion, 248

943

ch-index.tex: (#2)

herbert

(U)

Index der Befehle und Begriffe

(Forts.)

Umkehrfunktion, 34, 227 Umkreis, 616 uml Paket, 690, 698, 906 248, 249, 250 trigLabels Option (pst-plot), 185, 203, 203, 204, 246, \umlActor (pst-uml), 680, 681 umlActorLineWidth Option (pst-uml), 681 246, 247, 247, 248, 249, 249, 250 \umlAggregation (uml), 696 \triline (pst-jtree), 703 umlAlign Option (pst-uml), 682, 682, 683, 683 \triload (pst-stru), 772, 772, 773, 774 \umlApplication (uml), 696 Trimetrie, 401 \umlArgument (uml), 694, 698 trimode Option (pstricks), 126, 127, 129, 129 \trinode (pst-node), 268, 269, 287, 304 \umlAttribut (uml), 694 \trinode* (pst-node), 268 \umlAttribute (uml), 694, 698 Tripel, 26 \umlBottom (uml), 693 Tripol, 484 \umlBottomLeft (uml), 696 tripolestyle Option (pst-circ), 483, 497, 497 \umlBottomRight (uml), 696 tronccone Wert (pst-solides3d), 422, 452 \umlBottomSep (uml), 692 troncconecreux Wert (pst-solides3d), 422, 452, 453 \umlBox (uml), 691, 692, 693, 696 tRot Wert (demo), 105 \umlCase (pst-uml), 682 \trput (pst-node), 262, 283, 284 \umlClass \trput* (pst-node), 283 (pst-uml), 679, 679, 680–682, 686, 687 trueAngle Option (uml), 692, 693, 694 (pst-node), 271 \umlClassifier (uml), 693 (pstricks-add), 636, 636, 637 \umlCompartment (uml), 693 truncate (PostScript), 230, 884 \umlCompartmentline (uml), 693 Tshadowangle Option (pst-3d), 358, 358, 359 \umlComposition (uml), 696 Tshadowcolor Option (pst-3d), 358, 358, 359, 359, \umlDiagram (uml), 691, 691, 692, 693, 696 360 umlDoubleRuleSep Option (pst-uml), 680 Tshadowsize Option (pst-3d), 358, 359 \umlDrawable (uml), 691 \tspace (pst-tree), 306, 306, 307 \umlElement (uml), 691 \Tswitch (pst-circ), 490 \umlInner (uml), 696 \Ttri (pst-tree), 304 \umlInstance (uml), 696 tube Wert (pst-labo), 657, 659, 662, 672 \umlLeft (uml), 693 tubeCoude Option (pst-labo), 658, 660, 660 \umlMethod (uml), 694 tubeCoudeU Option (pst-labo), 658, 660, 660 \umlNote (pst-uml), 682, 683 tubeCoudeUB Option (pst-labo), 658, 660, 661, 674 \umlPackage (uml), 696 tubeDroit Option (pst-labo), 658, 659, 660, 661 umlParameter Option (pst-uml), 680 tubePenche Option (pst-labo), 658, 661, 661, 676 umlPos Option (pst-uml), 683 tubeRecourbe Option (pst-labo), 658, 665, 665 \umlPutCase (pst-uml), 682 tubeRecourbeCourt Option (pst-labo), 658, 665, 665 \umlPutStateIn (pst-uml), 681 tubeSeul Option (pst-labo), 658, 662, 662, 663 \umlPutStateOut (pst-uml), 681 \tvput (pst-node), 283 \umlReference (uml), 691 \tvput* (pst-node), 283 \umlRelation (uml), 695, 696 twoHole Option (pst-diffraction), 749 \umlRight (uml), 693 TwoPi (PostScript), 890 \umlSchema (uml), 694, 694, 698 twoSlit Option (pst-diffraction), 747 umlShadow Option (pst-uml), 680 type Option \umlStack (pst-uml), 683 (pst-fractal), 707, 708 umlStackLinesStretch Option (pst-uml), 683 (pst-geo), 507, 509, 510–513, 525, 529 umlStackSep Option (pst-uml), 683 (uml), 694 umlStackWidth Option (pst-uml), 683 Type1, 86 \umlState (pst-uml), 681, 681, 682 Type3, 86 umlStateHeight Option (pst-uml), 681 \umlStateIn (pst-uml), 681, 681, 682 U \umlStateOut (pst-uml), 681, 681, 682 umlStateWidth Option (pst-uml), 681 U Wert \umlStereoType (pst-uml), 681 (pst-tree), 295 \umlStretchBox (uml), 692, 693 (pstricks), 126 \umlSubClass (uml), 698 U0 Option (pst-am), 765 \umlSubclass (uml), 696 \Ucc (pst-circ), 485 \umlTop (uml), 692, 693 Um Option (pst-am), 765 \umlTopLeft (uml), 696 UMandUm Option (pst-am), 765 Umgekehrte Polnische Notation, siehe UPN \umlTopRight (uml), 696 trigLabelBase Option (pst-plot), 185, 204, 246, 248,

944

ch-index.tex: (#2)

herbert

Index der Befehle und Begriffe

(Forts.) undef Wert (pst-eucl), 593, 594

Unified Modeling Language, 679 unit Option (pst-cie), 752 (pstricks), 24, 25, 38, 38, 66, 110, 124, 516, 632 unknown Option (pst-pdgr), 785 Unterbaum, 294 Untersumme, 639 Up Option (pst-am), 765 UPN, 223, 226, 640, 646 upper Wert (pstricks-add), 639 \uput (pstricks), 34, 37, 57, 64–66, 120, 121, 121, 122, 122, 122, 123, 124, 159, 204, 215, 284, 527 \uput* (pstricks), 122 urx Option (pst-plot), 211, 211, 212, 213 ury Option (pst-plot), 211, 211, 212, 213 USA Option (pst-geo), 515, 516 \usebox, 43 \usepackage, 4 user Wert (pst-eps), 339 userColor Option (pstricks-add), 625 UTF-8, 898

V \vac (pst-circ), 488 values Option

(pst-am), 765 (pst-solarsystem), 777 values Wert (pst-plot), 214 valuewidth Option (pst-func), 571 (pst-plot), 217 variable Option (pst-circ), 483, 496, 496 (pst-optexp), 742 variableColor Option (pstricks), 64, 68, 68 variableLW Option (pstricks), 64, 67, 67 Varianz, 575 VarStepEpsilon Option (pstricks-add), 654 varsteptol Option (pstricks-add), 654 vasectomy Wert (pst-pdgr), 785 vaucanson Paket, 906 vaucanson-G Paket, 781 \vco (pst-circ), 486 VCPicture Env. (vaucanson-g), 781 \vdc (pst-circ), 488 vecteur Wert (pst-solides3d), 417, 420, 435 Vektor, 435 Vektorfont, 86 \verb, 132, 133, 135 Verbatim, 132–135 verbatim Env., 132 Verbindung, 687 Verbindungslinie, 307 verdeckte Linie, 415 Verschiebung, 321, 613 Verstärker, 486 Verstärkungsregler, 490 verticale Wert (pst-solides3d), 436

(V–W)

Vierpol, 491 viewangle Option (pst-3d), 365, 366, 367, 369, 369 Viewpoint Option (pst-platon), 476, 477, 478 viewpoint Option (pst-3d), 365, 366, 366, 367, 368, 369, 371, 373, 756 (pst-solarsystem), 777 (pst-solides3d), 415, 416, 416–418, 431, 452, 453 viewpoint Wert (pst-solides3d), 419, 449 visibility Option (pst-mirror), 469 (uml), 694 visibleLineStyle Option (pst-3dplot), 383, 394 visibleStyle Option (pst-3dplot), 394 vkf Option (pst-perspective), 778, 779 vlatex Programm, 817 vlines Wert (pstricks), 94, 95, 99, 100 vlines* Wert (pstricks), 94, 95 Vmax Option (pst-electricfield), 758, 759 Vmin Option (pst-electricfield), 758, 759 Vollkreis, 25 voltDiv Option (pst-am), 767 voltDivY1 Option (pst-am), 765 voltDivY2 Option (pst-am), 765 vref Option (pst-node), 253, 254, 254, 310 \vspace, 294

W Wahrscheinlichkeitsverteilung, 572 WallLineColor Option (pst-pad), 775 WallLineWidth Option (pst-pad), 775 Wave1 Option (pst-osci), 761 Wave2 Option (pst-osci), 761 waves Option (pst-geo), 521 \wd, 43 Weibull-Verteilung, 584 Wellenlänge, 68, 746 wfraczon Option (pst-geo), 523 whichabs Option (pstricks-add), 644, 647, 648, 649 whichord Option (pstricks-add), 644, 647, 647, 648 whitespace, 165 Wicklung, 328 Widerstand, 485 Winkel, 25, 161 Winkeleinheit, 25 Winkelhalbierende, 593, 618 \wire (pst-circ), 485, 486 \Wishes (demo), 725 wlangle Option (pst-spectra), 768 wlcmd Option (pst-spectra), 768 wmaglin Option (pst-geo), 523 \WORD (pst-rrgtrees), 701 \WorldMap (pst-geo), 508–514, 515, 515, 516, 530 \WorldMapII (pst-geo), 524, 529, 531, 532, 534 \WorldMapThreeD (pst-geo), 516, 517–519, 521–523 \WorldMapThreeDII (pst-geo), 525, 526, 528, 531 writeobj Wert (pst-solides3d), 427, 452 writeoff Wert (pst-solides3d), 452 writesolid Wert (pst-solides3d), 448, 452 Wurzel, 293

945

ch-index.tex: (#2)

herbert

(X–Y)

Index der Befehle und Begriffe

Würfel, 371, 445

X \X (pst-uml), 684 x Wert (pst-plot), 192, 197 xAxis Option (pst-plot), 185, 186, 186 xAxisLabel Option (pst-plot), 211, 211, 212, 213 xAxisLabelPos Option (pst-plot), 211, 211, 212, 213 xbbd Option (pst-tree), 295, 303 xbbh Option (pst-tree), 295, 303 xbbl Option (pst-tree), 295, 303 xbbr Option (pst-tree), 295, 303

XY Option (pst-am), 765 xy Wert (pst-3dplot), 387, 390 xyAxes Option (pst-plot), 185, 186 xyDecimals Option (pst-plot), 185, 195, 195, 196 xyLines Wert (pst-3dplot), 391 xylogBase Option (pst-plot), 185, 208, 209 xyrot Wert (pst-3dplot), 387 xyz Wert (pst-3dplot), 383, 396 xyzLight Option (pst-3dplot), 383, 398 xz Wert (pst-3dplot), 387, 390 xzy Wert (pst-3dplot), 396

xcolor Paket, 7, 9, 11–16, 18–20, 22, 23, 169, 201, 208, Y \Y (pst-uml), 684 342, 346, 397, 454, 652 y Wert (pst-plot), 192, 198, 208 xDecimals Option (pst-plot), 185, 195 yAxis Option (pst-plot), 185, 186, 186 xdpoint Wert (pst-solides3d), 438 yAxisLabel Option (pst-plot), 211, 211, 212, 213 .xdv Dateiendung, 897 yAxisLabelPos Option (pst-plot), 211, 211, 212, 213 xdvi Programm, 11 ybar Wert (pst-plot), 214, 217 xdvipdfmx Programm, 168, 897 yDecimals Option (pst-plot), 185, 195, 196 xelatex Programm, 811, 817 Year Option (pst-solarsystem), 777 xEnd Option (pst-plot), 221, 222, 240, 242 \year (pst-calendar), 791 xkeyval Paket, 180 yellow Wert (pstricks), 47 xlabelFactor Option (pst-plot), 185, 194, 202, 203 yEnd Option (pst-plot), 240 xlabelOffset Option (pst-plot), 185, 195 ylabelFactor Option (pst-plot), 185, 202, 212 xlabelPos Option (pst-plot), 185, 189, 189 ylabelOffset Option (pst-plot), 185, 195 xLabelrot Option (pst-plot), 185, 192 ylabelPos Option (pst-plot), 185, 189, 189 xLabels Option (pst-plot), 185, 192 yLabelrot Option (pst-plot), 186, 192 xlabelsep Option (pst-mirror), 470 yLabels Option (pst-plot), 186, 192 xLines Wert (pst-3dplot), 383, 391 ylabelsep Option (pst-mirror), 470 xlogBase Option (pst-plot), 185, 208 yLines Wert (pst-3dplot), 391 Xmax Option (pst-mirror), 469 ylogBase Option (pst-plot), 186, 200, 207, 210 xMax Option (pst-3dplot), 383, 384, 385, 400 Ymax Option (pst-mirror), 469 Xmin Option (pst-mirror), 469 yMax Option (pst-3dplot), 383, 384, 385, 400 xMin Option (pst-3dplot), 383, 384, 385, 400 yMaxValue Option (pst-plot), 214, 224, 225, 226 Xnodesep Option (pst-node), 253, 255 Ymin Option (pst-mirror), 469 XnodesepA Option (pst-node), 253, 255 yMin Option (pst-3dplot), 383, 384, 385, 400 XnodesepB Option (pst-node), 253, 255 Ynodesep Option (pst-node), 160, 253, 255, 255, 286 xO Option (pst-mirror), 470 YnodesepA Option (pst-node), 253, 255, 286 xor (PostScript), 889 YnodesepB Option (pst-node), 253, 255 Xorigine Option (pst-mirror), 469 yO Option (pst-mirror), 470 xpdf Programm, 804 Yorigine Option (pst-mirror), 469 xPlotpoints Option (pst-3dplot), 383, 388, 388, yPlotpoints Option (pst-3dplot), 383, 388, 388, 410, 410–412 410, 411, 411, 412, 412, 413 xRotVec Option (pst-3dplot), 384 yRotVec Option (pst-3dplot), 384 xStart Option (pst-plot), 221, 222, 240, 242 yStart Option (pst-plot), 240 xStep Option (pst-plot), 240 yStep Option (pstricks-add), 651 xsubtickcolor Option (pst-plot), 185 ysubtickcolor Option (pst-plot), 186 xsubticklinestyle Option (pst-plot), 185, 207, 207 ysubticklinestyle Option (pst-plot), 186, 207 xsubticks Option (pst-plot), 185, 188, 204 ysubticks Option (pst-plot), 186, 188, 204 xsubticksize Option (pst-plot), 185, 207, 207 ysubticksize Option (pst-plot), 186, 207, 207 xsubtickwidth Option (pst-plot), 185, 207 ysubtickwidth Option (pst-plot), 186 xThreeDunit Option (pst-3dplot), 383, 388, 388 yThreeDunit Option (pst-3dplot), 383, 388, 388 xtickcolor Option (pst-plot), 185 ytickcolor Option (pst-plot), 186 xticklinestyle Option (pst-plot), 185, 200 yticklinestyle Option (pst-plot), 186, 200 xticksize Option (pst-plot), 185, 201, 202 yticksize Option (pst-plot), 186, 201, 202 xtickwidth Option (pst-plot), 185, 201, 207 ytickwidth Option (pst-plot), 186, 201, 207 xtrigLabels Option (pst-plot), 185, 203 ytrigLabels Option (pst-plot), 186, 203 xunit Option (pstricks), 25, 37, 162, 247 yunit Option (pstricks), 25, 37, 162 xvalues Wert (pst-plot), 214, 217 yWidth Option (pst-fractal), 708, 708, 709–712 xWidth Option (pst-fractal), 708, 708, 709–712, 712

946

ch-index.tex: (#2)

herbert

Index der Befehle und Begriffe

yxLines Wert (pst-3dplot), 391 yxz Wert (pst-3dplot), 396 yz Wert (pst-3dplot), 387, 390 yzx Wert (pst-3dplot), 396

(Z)

zigzag Wert (pst-circ), 494

Z ZapfDingbats, 83 ZapfDingbats Wert (pstricks), 37 zeigeSP Option (demo), 180 \Zener (pst-circ), 485 Zenerdiode, 485 zentrische Streckung, 613 zeroLineColor Option (pst-func), 560, 563 zeroLineStyle Option (pst-func), 560, 563 zeroLineTo Option (pst-func), 560, 563 zeroLineWidth Option (pst-func), 560, 563 Zickzacklinie, 327, 333

Zirkulator, 490 Zmax Option (pst-solides3d), 429, 430, 430, 431, 442, 443 zMax Option (pst-3dplot), 383, 385, 400 Zmin Option (pst-solides3d), 429, 430, 430, 431, 442, 443 zMin Option (pst-3dplot), 383, 385, 400 Zorigine Option (pst-mirror), 469 zRotVec Option (pst-3dplot), 384 zThreeDunit Option (pst-3dplot), 383, 388, 388 Zufallszahlen, 91 Zufallszahlengenerator, 888 Zweipol, 485 zxy Wert (pst-3dplot), 396 Zylinder, 467 Zylindrische Darstellung, 511 zyx Wert (pst-3dplot), 396

947

ch-index.tex: (#2)

herbert

Personen

Adriaens, Hendri, 179, 811 Agapito, Rubens, 847, 849 Akhmadeeva, Leila, 784 Arseneau, Donald, 91 Aylmer Fisher, Ronald, 582 Babinet, Jacques, 511 Baroni, Stefano, 633 Bernoulli, Jakob, 573 Bersch, Christoph, 724, 738 Bessel, Friedrich Wilhelm, 567 Bonne, Rigobert, 512 Bos, Victor, 794 Carlisle, David, 11 Casselmann, Bill, 415 Charpentier, Jean-Côme, 705 Chiang, David, 704 Coxeter, Harold S. M., 719 Diamantini, Maurice, 679 Dirr, Ulrich, 223, 848 Doggett, Anthony, 895 Drechsler, Patrick, 774 Dumont, Kris, 839 Ellison, Christopher, 811 Esperet, Philippe, 896 Fairbairns, Robin, 904 Fenn, Jürgen, 904 Flamsteed, John, 510

Fourier, Jean Baptiste, 569 Frampton, John, 703 Gardner, D.J., 699 Gauß, Carl Friedrich, 572 Giese, Martin, 352, 353 Gilg, Jürgen, 754, 758, 808, 856, 858 Girou, Denis, 1, 4, 379, 713, 725, 785, 823, 837 Gjelstad, Ellef Fange, 690 Gosset, William, 581 Gouraud, Henri, 803 Grahn, Alexander, 722, 805 Gäßlein, Hubert, 2 Hammer, Ernst, 511 Hein, Piet, 586 Hoeppner, Klaus, 2

Ludascher, Bertram, 853 Luis Llanio, Jorge, 838 Luque, Jean-Gabriel, 719 Luque, Manuel, 2, 415, 469, 624, 719, 725, 730, 752, 754, 758, 761, 765, 771, 776, 791, 799, 825, 832, 837, 855 Maio, Ivan, 894 Matarazzo, Giuseppe, 771 May, Wolfgang, 782, 821 Mercator, Gerardus, 509 Morawski, Jens-Uwe, 2 Mégret, Patrice, 758 Mühlich, Matthias, 171 Niepraschk, Rolf, 2

Jorssen, Christophe, 2, 705, 761 Kaeder, Christoph, 2 Kern, Uwe, 11 Kotthoff, Lars, 851 Kromann, Matthias T., 796 Lambert, Johann Heinrich, 509 Lamé, Gabriel, 586 Lombardy, Sylvain, 781 Lorenz, Max Otto, 585

Oberdiek, Heiko, 506, 899 Penrose, Robert, 98 Poisson, Siméon-Denis, 578 Rahtz, Sebastian, 4 Ressler, Eugene, 336 Robertson, Will, 898 Rodriguez, Dominique, 846, 850 Rokicki, Tom, 313 Römer, Christine, 844

Sakarovitch, Jacques, 781 Sangwin, Chris, 835 Sanson, Nicolas, 510 Schmid, Hanspeter, 780 Schmittbuhl, Arnaud, 415, 768, 830, 833 Sharpe, Michael, 78

Siart, Uwe, 2, 871 Siegel, Thomas, 822, 893, 895 Simpson, Thomas, 572 Story, Don Paul, 808 Söll, Thomas, 778, 834, 852 Tantau, Till, 811 Thomae, Carl Johannes, 587

Van Zandt, Timothy, 1, 4 Vandenbrouck, François, 62 Veytsman, Boris, 784 Vignault, Jean-Paul, 415

Ziegenhagen, Uwe, 2, 62