Annotation of researchv10dc/man/adm/man1/pic.1, revision 1.1.1.1

1.1       root        1: .de PS \" start picture
                      2: .      \" $1 is height, $2 is width, both in inches
                      3: .if \\$1>0 .sp .35
                      4: .ie \\$1>0 .nr $1 \\$1
                      5: .el .nr $1 0
                      6: .in (\\n(.lu-\\$2)/2u
                      7: .ne \\$1
                      8: ..
                      9: .de PE \" end of picture
                     10: .in
                     11: .if \\n($1>0 .sp .65
                     12: ..
                     13: .TH PIC 1
                     14: .CT 1 writing_troff graphics
                     15: .SH NAME
                     16: pic, tpic \(mi troff and tex preprocessors for drawing pictures
                     17: .SH SYNOPSIS
                     18: .B pic
                     19: [
                     20: .I files
                     21: ]
                     22: .PP
                     23: .B tpic
                     24: [
                     25: .I files
                     26: ]
                     27: .SH DESCRIPTION
                     28: .I Pic
                     29: is a
                     30: .IR troff (1)
                     31: preprocessor for drawing figures on a typesetter.
                     32: .I Pic
                     33: code is contained between
                     34: .B .PS
                     35: and
                     36: .B .PE
                     37: lines:
                     38: .IP
                     39: .EX
                     40: \&.PS \f2optional-width\fP \f2optional-height\fP
                     41: \f2element-list\fP
                     42: \&.PE
                     43: .EE
                     44: .LP
                     45: or in a file mentioned in a
                     46: .B .PS
                     47: line:
                     48: .IP
                     49: .BI .PS " optional-width optional-height " < file
                     50: .LP
                     51: If
                     52: .IR optional-width
                     53: is present, the picture is made that many inches wide,
                     54: regardless of any dimensions used internally.
                     55: The height is scaled in the same proportion unless
                     56: .IR optional-height
                     57: is present.
                     58: If
                     59: .B .PF
                     60: is used instead of
                     61: .BR .PE ,
                     62: the typesetting position after printing is restored to what it was
                     63: upon entry.
                     64: .PP
                     65: An
                     66: .IR element-list
                     67: is a list of elements:
                     68: .EX
                     69:        \f2primitive  attribute-list\fP
                     70:        \f2placename\fP : \f2element\fP
                     71:        \f2placename\fP : \f2position\fP
                     72:        \f2var\fP = \f2expr\fP
                     73:        \f2direction\fP
                     74:        { \f2element-list\fP }
                     75:        [ \f2element-list\fP ]
                     76:        for \f2var\fP = \f2expr\fP to \f2expr\fP by \f2expr\fP do { \f2anything\fP }
                     77:        if \f2expr\fP then { \f2anything\fP } else { \f2anything\fP }
                     78:        copy \f2file,\fP  copy thru \f2macro,\fP  copy \f2file\fP thru \fPmacro\fP
                     79:        sh { \f2commandline\fP }
                     80:        print \f2expr\fP
                     81:        reset \f2optional var-list\fP
                     82:        \f2troff-command\fP
                     83: .EE
                     84: .PP
                     85: Elements are separated by newlines or semicolons;
                     86: a long element may be continued by ending the line with a backslash.
                     87: Comments are introduced by a
                     88: .BI #
                     89: and terminated by a newline.
                     90: Variable names begin with a lower case letter;
                     91: place names begin with upper case.
                     92: Place and variable names retain their values
                     93: from one picture to the next.
                     94: .PP
                     95: After each primitive
                     96: the current position moves in the current direction
                     97: .RB ( up , down ,
                     98: .BR left , right
                     99: (default)) by the size of the primitive.
                    100: The current position and direction are saved upon entry
                    101: to a
                    102: .BR { ... }
                    103: block and restored upon exit.
                    104: Elements within a block enclosed in
                    105: .BR [ ... ]
                    106: are treated as a unit;
                    107: the dimensions are determined by the extreme points
                    108: of the contained objects.
                    109: Names, variables, and direction of motion within a block are local to that block.
                    110: .PP
                    111: .IR troff-command
                    112: is any line that begins with a period.
                    113: Such a line is assumed to make sense in the context where it appears;
                    114: generally, this means only size and font changes.
                    115: .PP
                    116: The
                    117: .I primitive
                    118: objects are:
                    119: .br
                    120: .EX
                    121:        box  circle  ellipse  arc  line  arrow  spline  move  \f2text-list\fP
                    122: .EE
                    123: .L arrow
                    124: is a synonym for
                    125: .LR "line ->" .
                    126: .PP
                    127: An
                    128: .IR attribute-list
                    129: is a sequence of zero or more attributes;
                    130: each attribute consists of a keyword, perhaps followed by a value.
                    131: .EX
                    132: .ta .5i 2.5i
                    133:        h(eigh)t \f2expr\fP     wid(th) \f2expr\fP
                    134:        rad(ius) \f2expr\fP     diam(eter) \f2expr\fP
                    135:        up \f2opt-expr\fP       down \f2opt-expr\fP
                    136:        right \f2opt-expr\fP    left \f2opt-expr\fP
                    137:        from \f2position\fP     to \f2position\fP
                    138:        at \f2position\fP       with \f2corner\fP
                    139:        by \f2expr, expr\fP     then
                    140:        dotted \f2opt-expr\fP   dashed \f2opt-expr\fP
                    141:        chop \f2opt-expr\fP     ->  <-  <->
                    142:        invis   same
                    143:        \f2text-list\fP \f2expr\fP
                    144: .EE
                    145: Missing attributes and values are filled in from defaults.
                    146: Not all attributes make sense for all primitives;
                    147: irrelevant ones are silently ignored.
                    148: The attribute
                    149: .L at
                    150: causes the geometrical center to be put at the specified place;
                    151: .L with
                    152: causes the position on the object to be put at the specified place.
                    153: For lines, splines and arcs,
                    154: .L height
                    155: and
                    156: .L width
                    157: refer to arrowhead size.
                    158: A bare
                    159: .I expr
                    160: implies motion in the current direction.
                    161: .PP
                    162: Text is normally an attribute of some primitive;
                    163: by default it is placed at the geometrical center of the object.
                    164: Stand-alone text is also permitted.
                    165: A text list
                    166: is a list of text items:
                    167: .EX
                    168: \f2  text-item\fP:
                    169:        "..." \f2positioning ...\fP
                    170:        sprintf("\f2format\fP", \f2expr\fP, \f2...\fP) \f2positioning ...\fP
                    171: \f2  positioning\fP:
                    172:        center  ljust  rjust  above  below
                    173: .EE
                    174: If there are multiple text items for some primitive,
                    175: they are arranged vertically and centered except as qualified.
                    176: Positioning requests apply to each item independently.
                    177: Text items may contain
                    178: .I troff
                    179: commands for size and font changes, local motions, etc.,
                    180: but make sure that these are balanced
                    181: so that the entering state is restored before exiting.
                    182: .PP
                    183: A position is ultimately an
                    184: .I x,y
                    185: coordinate pair, but it may be specified in other ways.
                    186: .EX
                    187: \f2  position\fP:
                    188:        \f2expr, expr\fP
                    189:        \f2place\fP \(+- \f2expr, expr\fP
                    190:        \f2place\fP \(+- ( \f2expr, expr\fP )
                    191:        ( \f2position\fP,\f2 position\fP )      \f2x\fP\fR from one, \f2y\fP\fR the other\fP
                    192:        \f2expr\fP [\f2of the way\fP] between \f2position\fP and \f2position\fP
                    193:        \f2expr\fP < \f2position\fP , \f2position\fP >
                    194:        ( \f2position\fP )
                    195: .EE
                    196: .PP
                    197: .EX
                    198: \f2  place\fP:
                    199:        \f2placename\fP \f2optional-corner\fP
                    200:        \f2corner\fP of \f2placename\fP
                    201:        \f2nth\fP \f2primitive\fP \f2optional-corner\fP
                    202:        \f2corner\fP of \f2nth\fP \f2primitive\fP
                    203:        Here
                    204: .EE
                    205: An
                    206: .IR optional-corner
                    207: is one of the eight compass points
                    208: or the center or the start or end of a primitive.
                    209: .EX
                    210: \f2  optional-corner\fP:
                    211:        .n  .e  .w  .s  .ne  .se  .nw  .sw  .c  .start  .end
                    212: \f2  corner\fP:
                    213:        top  bot  left  right  start  end
                    214: .EE
                    215: Each object in a picture has an ordinal number;
                    216: .IR nth
                    217: refers to this.
                    218: .EX
                    219: \f2  nth\fP:
                    220:        \f2n\fPth\f2,     n\fPth last
                    221: .EE
                    222: .PP
                    223: The built-in variables and their default values are:
                    224: .EX
                    225: .ta .5i 2.5i
                    226:        boxwid 0.75     boxht 0.5
                    227:        circlerad 0.25  arcrad 0.25
                    228:        ellipsewid 0.75 ellipseht 0.5
                    229:        linewid 0.5     lineht 0.5
                    230:        movewid 0.5     moveht 0.5
                    231:        textwid 0       textht 0
                    232:        arrowwid 0.05   arrowht 0.1
                    233:        dashwid 0.1     arrowhead 2
                    234:        scale 1
                    235: .EE
                    236: These may be changed at any time,
                    237: and the new values remain in force from picture to picture until changed again
                    238: or reset by a
                    239: .L reset
                    240: statement.
                    241: Variables changed within
                    242: .B [
                    243: and
                    244: .B ]
                    245: revert to their previous value upon exit from the block.
                    246: Dimensions are divided by
                    247: .B scale
                    248: during output.
                    249: .PP
                    250: Expressions in
                    251: .I pic
                    252: are evaluated in floating point.
                    253: All numbers representing dimensions are taken to be in inches.
                    254: .EX
                    255: \f2  expr\fP:
                    256:        \f2expr\fP \f2op\fP \f2expr\fP
                    257:        - \f2expr\fP
                    258:        ! \f2expr\fP
                    259:        ( \f2expr\fP )
                    260:        variable
                    261:        number
                    262:        \f2place\fP .x  \f2place\fP .y  \f2place\fP .ht  \f2place\fP .wid  \f2place\fP .rad
                    263:        sin(\f2expr\fP)  cos(\f2expr\fP)  atan2(\f2expr,expr\fP)  log(\f2expr\fP)  exp(\f2expr\fP)
                    264:        sqrt(\f2expr\fP)  max(\f2expr,expr\fP)  min(\f2expr,expr\fP)  int(\f2expr\fP)  rand()
                    265: \f2  op\fP:
                    266:        +  -  *  /  %  <  <=  >  >=  ==  !=  &&  ||
                    267: .EE
                    268: .PP
                    269: The
                    270: .B define
                    271: and
                    272: .B undef
                    273: statements are not part of the grammar.
                    274: .EX
                    275:        define \f2name\fP { \f2replacement text\fP }
                    276:        undef \f2name\fP
                    277: .EE
                    278: Occurrences of
                    279: .BR $1 ,
                    280: .BR $2 ,
                    281: etc.,
                    282: in the replacement text
                    283: will be replaced by the corresponding arguments if
                    284: .I name
                    285: is invoked as
                    286: .EX
                    287:        \f2name\fP(\f2arg1\fP, \f2arg2\fP, ...)
                    288: .EE
                    289: Non-existent arguments are replaced by null strings.
                    290: Replacement text
                    291: may contain newlines.
                    292: The
                    293: .B undef
                    294: statement removes the definition of a macro.
                    295: .PP
                    296: .I Tpic
                    297: is a
                    298: .IR tex (1)
                    299: preprocessor that accepts
                    300: .IR pic
                    301: language.
                    302: It produces Tex commands that define a box called
                    303: .BR \egraph ,
                    304: which contains the picture.
                    305: The box may be output this way:
                    306: .IP
                    307: .L
                    308: \ecenterline{\ebox\egraph}
                    309: .SH EXAMPLES
                    310: .EX
                    311: arrow "input" above; box "process"; arrow "output" above
                    312: move
                    313: A: ellipse 
                    314:    circle rad .1 with .w at A.e
                    315:    circle rad .05 at 0.5 <A.c, A.ne>
                    316:    arc from A.c to A.se rad 0.5
                    317: .EE
                    318: .PP
                    319: .PS
                    320: arrow "input" above; box "process"; arrow "output" above
                    321: move
                    322: A: ellipse 
                    323:    circle rad .1 with .w at A.e
                    324:    circle rad .05 at 0.5 <A.c, A.ne>
                    325:    arc from A.c to A.se rad 0.5
                    326: .PE
                    327: .SH "SEE ALSO"
                    328: .IR cip (9.1),
                    329: .IR ideal (1), 
                    330: .IR ped (9.1),
                    331: .IR grap (1), 
                    332: .IR dag (1),
                    333: .IR doctype (1),
                    334: .IR troff (1)
                    335: .br
                    336: B. W. Kernighan,
                    337: `PIC\(ema Graphics Language for Typesetting',
                    338: this manual, Volume 2

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.