groff 1.23.0 added .MR to its -man macro package. The NEWS file states
that the inclusion of the macro "was prompted by its introduction to
Plan 9 from User Space's troff in August 2020." From d32deab it seems
that the name for Plan 9 from User Space's implementation was suggested
by groff maintainer G. Brandon Robinson.
Not sure if the intention was to make these definitions compatible, but
it would be nice if they were.
Currently, Plan 9 from User Space's .MR expects its second argument to
be parenthesized. groff's .MR does not. This results in extra
parentheses appearing in manual references when viewing Plan 9 from User
Space's manual pages on a system using groff.
417 lines
6.3 KiB
Groff
417 lines
6.3 KiB
Groff
.TH GRAP 1
|
|
.SH NAME
|
|
grap \- pic preprocessor for drawing graphs
|
|
.SH SYNOPSIS
|
|
.B grap
|
|
[
|
|
.I file ...
|
|
]
|
|
.SH DESCRIPTION
|
|
.I Grap
|
|
is a
|
|
.MR pic 1
|
|
preprocessor for drawing graphs on a typesetter.
|
|
Graphs are surrounded by the
|
|
.I troff
|
|
`commands'
|
|
.B \&.G1
|
|
and
|
|
.BR \&.G2 .
|
|
Data are scaled and plotted,
|
|
with tick marks supplied automatically.
|
|
Commands exist to modify the frame,
|
|
add labels, override the default ticks,
|
|
change the plotting style,
|
|
define coordinate ranges and transformations,
|
|
and include data from files.
|
|
In addition,
|
|
.I grap
|
|
provides the same loops, conditionals, and macro processing that
|
|
.I pic
|
|
does.
|
|
.PP
|
|
.BI frame
|
|
.B ht
|
|
.I e
|
|
.B wid
|
|
.I e
|
|
.B top
|
|
.B dotted
|
|
.IR ... :
|
|
Set the frame around the graph to specified
|
|
.B ht
|
|
and
|
|
.BR wid ;
|
|
default is 2 by 3 (inches).
|
|
The line
|
|
.I styles
|
|
.RB ( dotted ,
|
|
.BR dashed ,
|
|
.BR invis ,
|
|
.BR solid
|
|
(default))
|
|
of the
|
|
.I sides
|
|
.RB ( top ,
|
|
.BR bot ,
|
|
.BR left ,
|
|
.BR right )
|
|
of the frame can be set
|
|
independently.
|
|
.PP
|
|
.B label
|
|
.I side
|
|
.B \&"a label"
|
|
.B \&"as a set of strings"
|
|
.IR adjust :
|
|
Place label on specified side; default side is bottom.
|
|
.I adjust
|
|
is
|
|
.B up
|
|
(or
|
|
.B down
|
|
.B left
|
|
.BR right )
|
|
.I expr
|
|
to shift default position;
|
|
.B width
|
|
.I expr
|
|
sets the width explicitly.
|
|
.PP
|
|
.BI ticks
|
|
.I side
|
|
.B in
|
|
.B at
|
|
.IR "optname expr, expr, ..." :
|
|
Put ticks on
|
|
.I side
|
|
at
|
|
.I "expr, ...,
|
|
and label with
|
|
.I \&"expr"\f1.
|
|
If any
|
|
.I expr
|
|
is followed by "...", label tick with "...",
|
|
and turn off all automatic labels.
|
|
If "..." contains
|
|
.BR %f 's,
|
|
they will be interpreted as
|
|
.B printf
|
|
formatting instructions for the tick value.
|
|
Ticks point
|
|
.B in
|
|
or
|
|
.B out
|
|
(default out).
|
|
Tick iterator: instead of
|
|
.B at
|
|
.IR \&... ,
|
|
use
|
|
.BI from
|
|
.I expr
|
|
.B to
|
|
.I expr
|
|
.B by
|
|
.I "op expr
|
|
where
|
|
.I op
|
|
is optionally
|
|
.B +-*/
|
|
for additive or multiplicative steps.
|
|
.B by
|
|
can be omitted, to give steps of size 1.
|
|
If no ticks are requested, they are supplied automatically;
|
|
suppress this with
|
|
.B ticks
|
|
.BR off .
|
|
Automatic ticks normally
|
|
leave a margin of 7% on each side; set this to anything by
|
|
.B margin
|
|
.B =
|
|
.IR expr .
|
|
.PP
|
|
.B grid
|
|
.I "side linedesc"
|
|
.B at
|
|
.IR "optname expr, expr, ..." :
|
|
Draw grids perpendicular to
|
|
.I side
|
|
in style
|
|
.I linedesc
|
|
at
|
|
.I "expr, ....\&
|
|
Iterators and labels work as with ticks.
|
|
.PP
|
|
.B coord
|
|
.I optname
|
|
.B x
|
|
.I "min, max"
|
|
.B y
|
|
.I "min, max"
|
|
.B "log x
|
|
.BR " log y" :
|
|
Set range of coords and optional log scaling on either or both.
|
|
This overrides computation of data range.
|
|
Default value of
|
|
.I optname
|
|
is current coordinate system
|
|
(each
|
|
.B coord
|
|
defines a new coordinate system).
|
|
.PP
|
|
.B plot
|
|
.I \&"str"
|
|
.B at
|
|
.IR point ;
|
|
.B
|
|
.I \&"str"
|
|
.B at
|
|
.IR point :
|
|
Put
|
|
.I str
|
|
at
|
|
.IR point .
|
|
Text position can be qualified with
|
|
.BR rjust ,
|
|
.BR ljust ,
|
|
.BR above ,
|
|
.BR below
|
|
after "...".
|
|
.PP
|
|
.B line
|
|
.B from
|
|
.I point
|
|
.B to
|
|
.IR "point linedesc" :
|
|
Draw line from here to there.
|
|
.B arrow
|
|
works in place of
|
|
.BR line .
|
|
.PP
|
|
.B next
|
|
.I optname
|
|
.B at
|
|
.IR "point linedesc" :
|
|
Continue plot of data in
|
|
.I optname to
|
|
.IR point ;
|
|
default is current.
|
|
.PP
|
|
.BI draw
|
|
.IR "optname linedesc ..." :
|
|
Set mode for
|
|
.BR next :
|
|
use this style from now on,
|
|
and plot "..." at each point (if given).
|
|
.PP
|
|
.BI new
|
|
.IR "optname linedesc ..." :
|
|
Set mode for
|
|
.BR next ,
|
|
but disconnect from previous.
|
|
.PP
|
|
A list of numbers
|
|
.I "x y1 y2 y3 ...
|
|
is treated as
|
|
.B plot
|
|
.B bullet
|
|
.B at
|
|
.IR x,y1 ;
|
|
.B plot
|
|
.B bullet
|
|
.B at
|
|
.IR x,y2 ;
|
|
etc., or as
|
|
.B next
|
|
.B at
|
|
.I x,y1
|
|
etc., if
|
|
.B draw
|
|
is specified.
|
|
Abscissae of 1,2,3,... are provided if there is only one input number per line.
|
|
.PP
|
|
A
|
|
point
|
|
.I "optname expr, expr
|
|
maps the point to the named coordinate system.
|
|
A
|
|
.I linedesc
|
|
is one of
|
|
.B dot
|
|
.B dash
|
|
.B invis
|
|
.B solid
|
|
optionally followed by an expression.
|
|
.PP
|
|
.BI define
|
|
.I name
|
|
.BI { whatever } \f1:
|
|
Define a macro.
|
|
There are macros already defined for standard plotting
|
|
symbols like
|
|
.BR bullet ,
|
|
.BR circle ,
|
|
.BR star ,
|
|
.BR plus ,
|
|
etc., in
|
|
.BR \*9/lib/grap.defines ,
|
|
which is included if it exists.
|
|
.PP
|
|
.I var
|
|
.B =
|
|
.IR expr :
|
|
Evaluate an expression.
|
|
Operators are
|
|
.B=
|
|
.B +
|
|
.B -
|
|
.B *
|
|
and
|
|
.BR / .
|
|
Functions are
|
|
.B log
|
|
and
|
|
.B exp
|
|
(both base 10),
|
|
.BR sin ,
|
|
.BR cos ,
|
|
.BR sqrt ;
|
|
.B rand
|
|
returns random number on [0,1);
|
|
.BI max( e , e )\f1,
|
|
.BI min( e , e )\f1,
|
|
.BI int( e )\f1.
|
|
.PP
|
|
.B print
|
|
.IR expr ;
|
|
.B print
|
|
\fL"\f2...\fL"\f1:
|
|
As a debugging aid, print
|
|
.I expr
|
|
or
|
|
.I string
|
|
on the standard error.
|
|
.PP
|
|
.B copy
|
|
\fL"\fIfile name\fL"\fR:
|
|
Include this file right here.
|
|
.PP
|
|
.B copy
|
|
.B thru
|
|
.IR macro :
|
|
Pass rest of input (until
|
|
.BR \&.G2 )
|
|
through
|
|
.IR macro ,
|
|
treating each field (non-blank, or "...") as an argument.
|
|
.I macro
|
|
can be the name of a macro previously defined,
|
|
or the body of one in place, like
|
|
.BR "/plot $1 at $2,$3/" .
|
|
.PP
|
|
.B copy
|
|
.B thru
|
|
.I macro
|
|
.B until
|
|
\fL"\fIstring\fL"\fR:
|
|
Stop copy when input is
|
|
.I string
|
|
(left-justified).
|
|
.PP
|
|
.BI pic
|
|
.IR "remainder of line" :
|
|
Copy to output with leading blanks removed.
|
|
.PP
|
|
.BI graph
|
|
.IR "Name pic-position" :
|
|
Start a new frame, place it at specified position,
|
|
e.g.,
|
|
.B graph
|
|
.B Thing2
|
|
.BR "with .sw at Thing1.se + (0.1,0)" .
|
|
.I Name
|
|
must be capitalized to keep
|
|
.I pic
|
|
happy.
|
|
.PP
|
|
.BI \&. "anything at beginning of
|
|
.IR line :
|
|
Copied verbatim.
|
|
.PP
|
|
.B sh
|
|
.BI % anything
|
|
.BR % :
|
|
Pass everything between the
|
|
.BR % 's
|
|
to the shell;
|
|
as with macros,
|
|
.B %
|
|
may be any character and
|
|
.I anything
|
|
may include newlines.
|
|
.PP
|
|
.B #
|
|
.IR anything :
|
|
A comment, which is discarded.
|
|
.PP
|
|
Order is mostly irrelevant; no category is mandatory.
|
|
Any arguments on the
|
|
.B \&.G1
|
|
line are placed on the generated
|
|
.B \&.PS
|
|
line for
|
|
.IR pic .
|
|
.SH EXAMPLES
|
|
.EX
|
|
.ps -1
|
|
.vs -1
|
|
\&.G1
|
|
frame ht 1 top invis right invis
|
|
coord x 0, 10 y 1, 3 log y
|
|
ticks left in at 1 "bottommost tick", 2,3 "top tick"
|
|
ticks bot in from 0 to 10 by 2
|
|
label bot "silly graph"
|
|
label left "left side label" "here"
|
|
grid left dashed at 2.5
|
|
copy thru / circle at $1,$2 /
|
|
1 1
|
|
2 1.5
|
|
3 2
|
|
4 1.5
|
|
10 3
|
|
\&.G2
|
|
.G1
|
|
frame ht 1 top invis right invis
|
|
coord x 0, 10 y 1, 3 log y
|
|
ticks left in at 1 "bottommost tick", 2,3 "top tick"
|
|
ticks bot in from 0 to 10 by 2
|
|
label bot "silly graph"
|
|
label left "left side label" "here"
|
|
grid left dashed at 2.5
|
|
copy thru / circle at $1,$2 /
|
|
1 1
|
|
2 1.5
|
|
3 2
|
|
4 1.5
|
|
10 3
|
|
.G2
|
|
.ps
|
|
.vs
|
|
.EE
|
|
.SH FILES
|
|
.TF \*9/lib/grap.defines
|
|
.TP
|
|
.B \*9/lib/grap.defines
|
|
definitions of standard plotting characters, e.g., bullet
|
|
.SH SOURCE
|
|
.B \*9/src/cmd/grap
|
|
.SH "SEE ALSO"
|
|
.IR pic (1),
|
|
.MR troff 1
|
|
.br
|
|
J. L. Bentley and B. W. Kernighan,
|
|
``GRAP\(emA Language for Typesetting Graphs'',
|
|
.I
|
|
Unix Research System Programmer's Manual,
|
|
Tenth Edition, Volume 2.
|