grap(1M) grap(1M)
NAME
grap - pic-Präprozessor zum Zeichnen von Grafiken
SYNTAX
grap file ...
BESCHREIBUNG
grap ist ein pic(1M)-Präprozessor, der für das Zeichnen von Grafiken
auf einem Fotosatzgerät verwendet wird. Grafiken sind in die troff-
Kommandos .G1 und .G2 eingeschlossen. Die zwischen diesen Kommandos
stehenden Zeichen werden skaliert und mit einem Plotter gezeichnet.
Die Teilstriche (ticks) werden dabei automatisch eingefügt. Es stehen
Kommandos zur Bearbeitung des Rahmens, zum Hinzufügen von Bezeichnun-
gen, Überschreiben der Standardteilstriche, Ändern des Plotterstils,
Definieren der Bandbreite und der Umsetzung der Koordinaten sowie zum
Einbetten von Daten aus Dateien zur Verfügung. Darüber hinaus enthält
grap dieselben Schleifen, bedingten Anweisungen und Funktionen zur
Makrobearbeitung wie pic.
frame ht e wid e top dotted ...:
Den Rahmen um die Grafik auf die angegebenen Werte für die Höhe
(ht) bzw. die Breite (wid) setzen. Der Standardwert ist 2 x 3
(Zoll). Der Standardmodus gilt für alle vier Seiten. top, bot,
left oder right können unabhängig voneinander auf dotted, dashed,
invis oder solid gesetzt werden.
label side "a label" "as a set of strings" adjust:
Kennzeichnung an der angegebenen Seite plazieren. Standardmäßig
ist dies die untere Seite. adjust hat das Format up (bzw. down,
left, right) expr, um die Standardposition zu verschieben. Mit
width expr wird die Breite explizit festgelegt.
ticks side in at optname expr, expr, ...:
Teilstriche auf side bei expr, ... setzen und die Kennzeichnung
expr zuweisen. Wird nach expr "..." angegeben, wird den Teilstri-
chen die Bezeichnung "..." zugewiesen. Die automatische Vergabe
von Bezeichnungen wird ausgeschaltet. Enthält "..." die Zeichen
%f, werden diese als printf-Befehle für die Formatierung der
Teilstriche interpretiert. Angaben für die Teilstriche sind in
oder out (Standardwert). Wiederholung der Teilstriche: Anstelle
von at ... verwenden Sie from expr to expr by o expr. Dabei ist o
optional +-*/ für Additionen bzw. Multiplikationen. by kann aus-
gelassen werden. Die Schritte haben dann die Größe 1. Werden
keine Teilstriche angefordert, werden diese automatisch einge-
fügt. Dies kann durch Angabe von ticks off unterdrückt werden.
Bei der automatischen Vergabe der Teilstriche wird in der Regel
auf jeder Seite ein Rand von 7% gelassen. Dieser Wert kann über
margin = expr auf einen beliebigen Wert gesetzt werden.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
grap(1M) grap(1M)
grid side linedesc at optname expr, expr, ...:
Raster im Stil linedesc bei expr, .... senkrecht zu side stellen.
Die Wiederholung und Vergabe der Kennzeichnungen funktioniert wie
bei den Teilstrichen.
coord optname x min, max y min, max log x log y:
Den Bereich der Koordinaten und/oder die optionale Log-Skalierung
setzen. Dadurch wird die automatische Berechnung des Datenbe-
reichs wirkungslos gemacht. Der Standardwert von optname ist das
aktuelle Koordinatensystem (jede Option coord definiert ein neues
Koordinatensystem).
plot "str" at point; "str" at point:
str auf point setzen. Die Textposition kann mit rjust, ljust,
above, below nach "..." angegeben werden.
line from point to point linedesc:
Zeile vom Punkt from zum Punkt to ziehen. arrow kann anstelle von
line angegeben werden.
next optname at point linedesc:
Das Plotten der Daten in optname bis point fortsetzen; der Stan-
dardwert ist die aktuelle Position.
draw optname linedesc ...:
Modus für next setzen. Dieser Stil wird von diesem Zeitpunkt an
verwendet. "..." an jedem Punkt plotten (falls angegeben).
new optname linedesc ...:
Modus für next setzen, aber Verbindung zum vorigen Modus auflö-
sen.
Eine Liste mit Zahlen x y1 y2 y3 ... wird folgendermaßen behandelt:
plot bullet at x,y1; plot bullet at x,y2; usw. Wird draw angegeben,
wird die Liste folgendermaßen behandelt: next at x,y1 usw. Die Abszis-
sen 1,2,3 werden angegeben, wenn es pro Zeile nur jeweils eine Einga-
bezahl gibt.
Ein Punkt optname expr, expr bildet den Punkt auf das angegebene Koor-
dinatensystem ab. linedesc ist eine der Angaben dot, dash, invis oder
solid, optional gefolgt von einem Ausdruck.
define name { whatever }:
Makro definieren. Einige Makros für Standardplottersymbole, z. B.
bullet, circle, star, plus usw. sind bereits in
/usr/lib/dwb/grap.defines definiert. Diese Definition wird, falls
vorhanden, eingebettet.
var = expr:
Ausdruck bewerten. Operatoren: =+-* und /. Funktionen: log und
exp (beide mit der Basis 10), sin, cos, sqrt; rand übergibt
Zufallszahlen auf [0,1]; max(e,e), min(e,e), int(e).
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
grap(1M) grap(1M)
print expr; print "...":
Als Hilfe bei der Fehlerbeseitigung expr oder string auf der
Standardfehlerausgabe drucken.
copy "filename":
Diese Datei an dieser Stelle einbetten.
copy thru macro:
Restliche Eingabe (bis .G2) durch macro leiten. Dabei jedes Feld
(nicht leere Felder oder "...") als Argument auffassen. macro
kann der Name eines vorher definierten oder der Rumpf eines
bereits aufgerufenen Makros sein, z. B. /plot $1 at $2,$3/.
copy thru macro until "string":
Kopiervorgang bei Eingabe string (linksbündig) stoppen.
pic remainder of line:
In Ausgabe kopieren, führende Leerzeichen dabei löschen.
graph Name pic-position:
Neuen Rahmen beginnen und an der angegebenen Position plazieren,
z. B. graph Thing2 with .sw at Thing1.se + (0.1,0). Name muß in
Großbuchstaben geschrieben werden, um von pic verarbeitet werden
zu können.
.anything at beginning of line:
Wort für Wort kopiert.
sh % anything %:
Alle Angaben zwischen den Zeichen % an die Shell weiterleiten;
wie auch bei Makros kann % ein beliebiges Zeichen sein und
anything kann Zeilenvorschübe enthalten.
# anything:
Kommentar; wird gelöscht.
Die Reihenfolge ist in den meisten Fehler unwichtig; keine Kategorie
ist obligatorisch. Argumente in der Zeile .G1 werden für pic in der
generierten Zeile .PS plaziert.
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98
grap(1M) grap(1M)
BEISPIELE
.G1
frame ht 2 wid 2
coord x 0,100 y 0,100
grid dotted bot from 20 to 80 by 20
grid dotted left from 20 to 80 by 20
"Text above" above at 50,50
"Text rjust " rjust at 50,50
bullet at 80,90
vtick at 80,80
box at (80,70)
times at 80,60
circle at 50,50
circle at 50,80 radius .25
line dashed from 10,90 to 30,90
arrow from 10,70 to 30,90
draw A solid
draw B dashed delta
next A at 10,10
next B at 10,20
next A at 50,20
next A at 90,10
next B at 50,30
next B at 90,30
.G2
Ergebnis: Siehe Referenzhandbuch für Systemverwalter!
.G1
frame invis ht 2 wid 3 left solid bot solid
label left "Zeit" "(in Sekunden)" left .2
label bot "Olympische 400-Meter-Läufe: Gewinnzeiten"
coord x 1894,1982 y 42,56
ticks left out at 44 "44", 46, 48 "48", 50, 52 "52", 54
ticks bot in from 1900 to 1980 by 20
draw solid
1896 54.2
1900 49.4
1904 49.2
1908 50.0
1912 48.2
1920 49.6
1924 47.6
1928 47.8
1932 46.2
1936 46.5
1948 46.2
1952 45.9
1956 46.7
Seite 4 Reliant UNIX 5.44 Gedruckt 11/98
grap(1M) grap(1M)
1960 44.9
1964 45.1
1968 43.8
1972 44.6
1976 44.2
1980 44.6
.G2
Ergebnis: Siehe Referenzhandbuch für Systemverwalter!
Wenn man die Liste mit den Jahreszahlen und Gewinnzeiten in eine sepa-
rate Datei 400mpairs.d abstellt und diese dann mit copy inkludiert,
verkürzt sich die Spezifikation auf folgende Zeilen:
.G1
frame invis ht 2 wid 3 left solid bot solid
label left "Zeit" "(in Sekunden)" left .2
label bot "Olympische 400-Meter-Läufe: Gewinnzeiten"
coord x 1894,1982 y 42,56
ticks left out at 44 "44", 46, 48 "48", 50, 52 "52", 54
ticks bot in from 1900 to 1980 by 20
draw solid
copy "400mpairs.d"
.G2
DATEIEN
/usr/lib/dwb/grap.defines
SIEHE AUCH
pic(1M).
LITERATUR
J. L. Bentley and B. W. Kernighan, GRAP - A Language for Typesetting
Graphs, CSTR 114, 1984
Seite 5 Reliant UNIX 5.44 Gedruckt 11/98