+.de IS \" *** start ideal picture
+.nr g7 \\n(.u
+.ls 1
+..
+.de IF
+.if \\n(g7 .fi
+.ls
+..
+.de IE \" *** end ideal picture
+.if \\n(g7 .fi
+.ls
+..
+.de PS \" *** start picture: $1=height, $2=width in units or inches
+.if t .sp .3
+.nr g7 \\$2
+.in (\\n(.lu-\\n(g7u)/2u
+.ne \\$1u
+.nr g7 \\n(.u
+.ls 1
+..
+.de PE \" *** end picture
+.in
+.if \\n(g7 .fi
+.if t .sp .6
+.ls
+..
+.\" GS called with C (default), L or R (\n(g1=width, \n(g2=height)
+.de GS \" *** start gremlin picture
+.nr g7 (\\n(.lu-\\n(g1u)/2u
+.if "\\$1"L" .nr g7 \\n(.iu
+.if "\\$1"R" .nr g7 \\n(.lu-\\n(g1u
+.in \\n(g7u
+.nr g7 \\n(.u
+.ls 1
+.nf
+.ne \\n(g2u
+..
+.de GE \" *** end gremlin picture
+.ls
+.in
+.if \\n(g7 .fi
+.if t .sp .6
+..
+.de GF \" *** finish gremlin picture; stay at top
+.ls
+.in
+.if \\n(g7 .fi
+..