# PaCkAgE DaTaStReAm plotutils 1 11163 # end of header 0707010003763f000081a40000000000000000000000014cc7b6fb00000109000000b500010002ffffffffffffffff0000001200000000plotutils/pkginfoPKG=plotutils NAME=GNU plotutils 2.6 i86pc Solaris 10 VERSION=2.6 PSTAMP=27th October 2010 VENDOR=GNU EMAIL=http://www.gnu.org/software/plotutils/ DESC=GNU graphic plot utilities ARCH=i386 CATEGORY=utility CLASSES=none BASEDIR=/ ISTATES=S s 1 2 3 RSTATES=S s 1 2 3 0707010003763e000081a40000000000000000000000014cc7b6fb00001363000000b500010002ffffffffffffffff0000001100000000plotutils/pkgmap: 1 11163 1 d none /usr ? ? ? 1 d none /usr/local ? ? ? 1 d none /usr/local/bin 0755 root root 1 f none /usr/local/bin/double 0755 root root 35068 61183 1288156694 1 f none /usr/local/bin/graph 0755 root root 105712 51892 1288156696 1 f none /usr/local/bin/hersheydemo 0755 root root 27652 15221 1288156696 1 f none /usr/local/bin/ode 0755 root root 125056 4870 1288156694 1 f none /usr/local/bin/plot 0755 root root 61724 5421 1288156695 1 f none /usr/local/bin/plotfont 0755 root root 42548 4512 1288156696 1 f none /usr/local/bin/spline 0755 root root 51380 25369 1288156694 1 f none /usr/local/bin/tek2plot 0755 root root 47888 52424 1288156695 1 d none /usr/local/include 0755 root root 1 f none /usr/local/include/plot.h 0644 root root 21086 45356 1288156696 1 f none /usr/local/include/plotcompat.h 0644 root root 6604 47960 1288156696 1 d none /usr/local/lib 0755 root root 1 f none /usr/local/lib/libplot.a 0644 root root 2066084 58152 1288156695 1 f none /usr/local/lib/libplot.la 0755 root root 1122 31116 1288156695 1 s none /usr/local/lib/libplot.so=libplot.so.2.2.4 1 s none /usr/local/lib/libplot.so.2=libplot.so.2.2.4 1 f none /usr/local/lib/libplot.so.2.2.4 0755 root root 1741652 40831 1288156695 1 d none /usr/local/share 0755 root root 1 d none /usr/local/share/info 0755 root root 1 f none /usr/local/share/info/dir 0644 root root 5254 1708 1288156696 1 f none /usr/local/share/info/plotutils.info 0644 root root 511924 59658 1288156696 1 d none /usr/local/share/libplot 0755 root root 1 f none /usr/local/share/libplot/README 0644 root root 4960 31850 1288156696 1 f none /usr/local/share/libplot/colors.txt 0644 root root 15096 3472 1288156696 1 f none /usr/local/share/libplot/h-fonts.txt 0644 root root 3408 36528 1288156696 1 f none /usr/local/share/libplot/h-glyphs.txt 0644 root root 9434 44414 1288156696 1 f none /usr/local/share/libplot/hershey.bib 0644 root root 4135 61207 1288156696 1 f none /usr/local/share/libplot/kana.txt 0644 root root 3541 26792 1288156696 1 f none /usr/local/share/libplot/kanji.txt 0644 root root 35202 61054 1288156696 1 d none /usr/local/share/man 0755 root root 1 d none /usr/local/share/man/man1 0755 root root 1 f none /usr/local/share/man/man1/ode.1 0644 root root 7121 36065 1288156696 1 f none /usr/local/share/man/man1/plot.1 0644 root root 21378 57979 1288156696 1 f none /usr/local/share/man/man1/plotfont.1 0644 root root 18940 51173 1288156696 1 f none /usr/local/share/man/man1/spline.1 0644 root root 11486 24061 1288156696 1 f none /usr/local/share/man/man1/tek2plot.1 0644 root root 18417 1020 1288156696 1 d none /usr/local/share/ode 0755 root root 1 f none /usr/local/share/ode/README 0644 root root 748 1051 1288156694 1 f none /usr/local/share/ode/atwoods.ode 0644 root root 1781 19140 1288156694 1 f none /usr/local/share/ode/bead.ode 0644 root root 535 42628 1288156694 1 f none /usr/local/share/ode/chem.ode 0644 root root 810 60435 1288156694 1 f none /usr/local/share/ode/coupled.ode 0644 root root 864 3123 1288156694 1 f none /usr/local/share/ode/ddho.ode 0644 root root 644 48517 1288156694 1 f none /usr/local/share/ode/dynamo.ode 0644 root root 682 48965 1288156694 1 f none /usr/local/share/ode/henon.ode 0644 root root 662 49518 1288156694 1 f none /usr/local/share/ode/limitcycle.ode 0644 root root 722 61182 1288156694 1 f none /usr/local/share/ode/lorenz.ode 0644 root root 765 58713 1288156694 1 f none /usr/local/share/ode/lunar.sh 0644 root root 1103 22255 1288156694 1 f none /usr/local/share/ode/orbit.ode 0644 root root 1036 14581 1288156694 1 f none /usr/local/share/ode/population.ode 0644 root root 608 46502 1288156694 1 f none /usr/local/share/ode/qcd.ode 0644 root root 357 28157 1288156694 1 f none /usr/local/share/ode/rumor.ode 0644 root root 1291 40153 1288156694 1 f none /usr/local/share/ode/soliton.ode 0644 root root 432 31334 1288156694 1 f none /usr/local/share/ode/viscous.ode 0644 root root 689 55849 1288156694 1 d none /usr/local/share/tek2plot 0755 root root 1 f none /usr/local/share/tek2plot/README 0644 root root 1319 53591 1288156695 1 f none /usr/local/share/tek2plot/aitest.tek 0644 root root 16535 27338 1288156695 1 f none /usr/local/share/tek2plot/dmerc.tek 0644 root root 28930 31350 1288156695 1 f none /usr/local/share/tek2plot/fotest.tek 0644 root root 16233 16655 1288156695 1 f none /usr/local/share/tek2plot/imtesth.tek 0644 root root 86 5743 1288156695 1 f none /usr/local/share/tek2plot/karney.tek 0644 root root 11978 29006 1288156695 1 f none /usr/local/share/tek2plot/ocpred.tek 0644 root root 3308 40991 1288156695 1 f none /usr/local/share/tek2plot/scale.tek 0644 root root 13103 22112 1288156695 1 f none /usr/local/share/tek2plot/skymap.tek 0644 root root 16175 25729 1288156695 1 f none /usr/local/share/tek2plot/skymap2.tek 0644 root root 43949 28905 1288156695 1 f none /usr/local/share/tek2plot/usmap.tek 0644 root root 6939 49117 1288156695 1 i checkinstall 790 2504 1288156923 1 i pkginfo 265 20798 1288156923 07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000b00000000TRAILER!!!0707010003763f000081a40000000000000000000000014cc7b6fb00000109000000b500010002ffffffffffffffff0000000800000000pkginfoPKG=plotutils NAME=GNU plotutils 2.6 i86pc Solaris 10 VERSION=2.6 PSTAMP=27th October 2010 VENDOR=GNU EMAIL=http://www.gnu.org/software/plotutils/ DESC=GNU graphic plot utilities ARCH=i386 CATEGORY=utility CLASSES=none BASEDIR=/ ISTATES=S s 1 2 3 RSTATES=S s 1 2 3 0707010003763e000081a40000000000000000000000014cc7b6fb00001363000000b500010002ffffffffffffffff0000000700000000pkgmap: 1 11163 1 d none /usr ? ? ? 1 d none /usr/local ? ? ? 1 d none /usr/local/bin 0755 root root 1 f none /usr/local/bin/double 0755 root root 35068 61183 1288156694 1 f none /usr/local/bin/graph 0755 root root 105712 51892 1288156696 1 f none /usr/local/bin/hersheydemo 0755 root root 27652 15221 1288156696 1 f none /usr/local/bin/ode 0755 root root 125056 4870 1288156694 1 f none /usr/local/bin/plot 0755 root root 61724 5421 1288156695 1 f none /usr/local/bin/plotfont 0755 root root 42548 4512 1288156696 1 f none /usr/local/bin/spline 0755 root root 51380 25369 1288156694 1 f none /usr/local/bin/tek2plot 0755 root root 47888 52424 1288156695 1 d none /usr/local/include 0755 root root 1 f none /usr/local/include/plot.h 0644 root root 21086 45356 1288156696 1 f none /usr/local/include/plotcompat.h 0644 root root 6604 47960 1288156696 1 d none /usr/local/lib 0755 root root 1 f none /usr/local/lib/libplot.a 0644 root root 2066084 58152 1288156695 1 f none /usr/local/lib/libplot.la 0755 root root 1122 31116 1288156695 1 s none /usr/local/lib/libplot.so=libplot.so.2.2.4 1 s none /usr/local/lib/libplot.so.2=libplot.so.2.2.4 1 f none /usr/local/lib/libplot.so.2.2.4 0755 root root 1741652 40831 1288156695 1 d none /usr/local/share 0755 root root 1 d none /usr/local/share/info 0755 root root 1 f none /usr/local/share/info/dir 0644 root root 5254 1708 1288156696 1 f none /usr/local/share/info/plotutils.info 0644 root root 511924 59658 1288156696 1 d none /usr/local/share/libplot 0755 root root 1 f none /usr/local/share/libplot/README 0644 root root 4960 31850 1288156696 1 f none /usr/local/share/libplot/colors.txt 0644 root root 15096 3472 1288156696 1 f none /usr/local/share/libplot/h-fonts.txt 0644 root root 3408 36528 1288156696 1 f none /usr/local/share/libplot/h-glyphs.txt 0644 root root 9434 44414 1288156696 1 f none /usr/local/share/libplot/hershey.bib 0644 root root 4135 61207 1288156696 1 f none /usr/local/share/libplot/kana.txt 0644 root root 3541 26792 1288156696 1 f none /usr/local/share/libplot/kanji.txt 0644 root root 35202 61054 1288156696 1 d none /usr/local/share/man 0755 root root 1 d none /usr/local/share/man/man1 0755 root root 1 f none /usr/local/share/man/man1/ode.1 0644 root root 7121 36065 1288156696 1 f none /usr/local/share/man/man1/plot.1 0644 root root 21378 57979 1288156696 1 f none /usr/local/share/man/man1/plotfont.1 0644 root root 18940 51173 1288156696 1 f none /usr/local/share/man/man1/spline.1 0644 root root 11486 24061 1288156696 1 f none /usr/local/share/man/man1/tek2plot.1 0644 root root 18417 1020 1288156696 1 d none /usr/local/share/ode 0755 root root 1 f none /usr/local/share/ode/README 0644 root root 748 1051 1288156694 1 f none /usr/local/share/ode/atwoods.ode 0644 root root 1781 19140 1288156694 1 f none /usr/local/share/ode/bead.ode 0644 root root 535 42628 1288156694 1 f none /usr/local/share/ode/chem.ode 0644 root root 810 60435 1288156694 1 f none /usr/local/share/ode/coupled.ode 0644 root root 864 3123 1288156694 1 f none /usr/local/share/ode/ddho.ode 0644 root root 644 48517 1288156694 1 f none /usr/local/share/ode/dynamo.ode 0644 root root 682 48965 1288156694 1 f none /usr/local/share/ode/henon.ode 0644 root root 662 49518 1288156694 1 f none /usr/local/share/ode/limitcycle.ode 0644 root root 722 61182 1288156694 1 f none /usr/local/share/ode/lorenz.ode 0644 root root 765 58713 1288156694 1 f none /usr/local/share/ode/lunar.sh 0644 root root 1103 22255 1288156694 1 f none /usr/local/share/ode/orbit.ode 0644 root root 1036 14581 1288156694 1 f none /usr/local/share/ode/population.ode 0644 root root 608 46502 1288156694 1 f none /usr/local/share/ode/qcd.ode 0644 root root 357 28157 1288156694 1 f none /usr/local/share/ode/rumor.ode 0644 root root 1291 40153 1288156694 1 f none /usr/local/share/ode/soliton.ode 0644 root root 432 31334 1288156694 1 f none /usr/local/share/ode/viscous.ode 0644 root root 689 55849 1288156694 1 d none /usr/local/share/tek2plot 0755 root root 1 f none /usr/local/share/tek2plot/README 0644 root root 1319 53591 1288156695 1 f none /usr/local/share/tek2plot/aitest.tek 0644 root root 16535 27338 1288156695 1 f none /usr/local/share/tek2plot/dmerc.tek 0644 root root 28930 31350 1288156695 1 f none /usr/local/share/tek2plot/fotest.tek 0644 root root 16233 16655 1288156695 1 f none /usr/local/share/tek2plot/imtesth.tek 0644 root root 86 5743 1288156695 1 f none /usr/local/share/tek2plot/karney.tek 0644 root root 11978 29006 1288156695 1 f none /usr/local/share/tek2plot/ocpred.tek 0644 root root 3308 40991 1288156695 1 f none /usr/local/share/tek2plot/scale.tek 0644 root root 13103 22112 1288156695 1 f none /usr/local/share/tek2plot/skymap.tek 0644 root root 16175 25729 1288156695 1 f none /usr/local/share/tek2plot/skymap2.tek 0644 root root 43949 28905 1288156695 1 f none /usr/local/share/tek2plot/usmap.tek 0644 root root 6939 49117 1288156695 1 i checkinstall 790 2504 1288156923 1 i pkginfo 265 20798 1288156923 07070100037684000041ed0000000000000000000000024cc7b6fb00000000000000b500010002ffffffffffffffff0000000800000000install07070100037685000081ed0000000000000000000000014cc7b6fb00000316000000b500010002ffffffffffffffff0000001500000000install/checkinstall#!/bin/sh # expected_bits="64" expected_release="5.10" expected_platform="i386" # release=`uname -r` platform=`uname -p` bits=`isainfo -b` # if [ ${platform} != ${expected_platform} ]; then echo "\n\n\n\tThis package must be installed on a ${expected_platform} architecture\n" echo "\tAborting installation.\n\n\n" exit 1 fi if [ ${release} != ${expected_release} ]; then echo "\n\n\n\tThis package must be installed on a ${expected_release} machine\n" echo "\tAborting installation.\n\n\n" exit 1 fi #if [ ${bits} != ${expected_bits} ]; then # echo "\n\n\n\tThis package must be installed on a ${expected_bits} bit machine\n" # echo "\tYour machine is running a ${bits} bit O.S. currently\n" # echo "\tAborting installation.\n\n\n" # exit 1 #fi exit 0 07070100037640000041ed0000000000000000000000034cc7b6fb00000000000000b500010002ffffffffffffffff0000000500000000root07070100037641000041ed0000000000000000000000034cc7b6fb00000000000000b500010002ffffffffffffffff0000000900000000root/usr07070100037642000041ed0000000000000000000000064cc7b6fb00000000000000b500010002ffffffffffffffff0000000f00000000root/usr/local0707010003764c000041ed0000000000000000000000024cc7b6fb00000000000000b500010002ffffffffffffffff0000001700000000root/usr/local/include0707010003764e000081a40000000000000000000000014cc7b618000019cc000000b500010002ffffffffffffffff0000002400000000root/usr/local/include/plotcompat.h/* This file is part of the GNU plotutils package. Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2005, 2008, Free Software Foundation, Inc. The GNU plotutils package is free software. You may redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software foundation; either version 2, or (at your option) any later version. The GNU plotutils package is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with the GNU plotutils package; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin St., Fifth Floor, Boston, MA 02110-1301, USA. */ /* 13 functions in traditional (pre-GNU) libplot */ #define arc(xc,yc,x0,y0,x1,y1) pl_arc(xc,yc,x0,y0,x1,y1) #define box(x0,y0,x1,y1) pl_box(x0,y0,x1,y1) #define circle(x,y,r) pl_circle(x,y,r) #define closepl() pl_closepl() #define cont(x,y) pl_cont(x,y) #define erase() pl_erase() #define label(s) pl_label(s) #define line(x0,y0,x1,y1) pl_line(x0,y0,x1,y1) #define linemod(s) pl_linemod(s) #define move(x,y) pl_move(x,y) #define openpl() pl_openpl() #define point(x,y) pl_point(x,y) #define space(x0,y0,x1,y1) pl_space(x0,y0,x1,y1) /* 46 additional functions in GNU libplot, plus 1 obsolete function [pl_outfile]. */ #define outfile(outfile) pl_outfile(outfile) #define alabel(x_justify,y_justify,s) pl_alabel(x_justify,y_justify,s) #define arcrel(dxc,dyc,dx0,dy0,dx1,dy1) pl_arcrel(dxc,dyc,dx0,dy0,dx1,dy1) #define bezier2(x0,y0,x1,y1,x2,y2) pl_bezier2(x0,y0,x1,y1,x2,y2) #define bezier2rel(dx0,dy0,dx1,dy1,dx2,dy2) pl_bezier2rel(dx0,dy0,dx1,dy1,dx2,dy2) #define bezier3(x0,y0,x1,y1,x2,y2,x3,y3) pl_bezier3(x0,y0,x1,y1,x2,y2,x3,y3) #define bezier3rel(dx0,dy0,dx1,dy1,dx2,dy2,dx3,dy3) pl_bezier3rel(dx0,dy0,dx1,dy1,dx2,dy2,dx3,dy3) #define bgcolor(red,green,blue) pl_bgcolor(red,green,blue) #define bgcolorname(name) pl_bgcolorname(name) #define boxrel(dx0,dy0,dx1,dy1) pl_boxrel(dx0,dy0,dx1,dy1) #define capmod(s) pl_capmod(s) #define circlerel(dx,dy,r) pl_circlerel(dx,dy,r) #define closepath() pl_closepath() #define color(red,green,blue) pl_color(red,green,blue) #define colorname(name) pl_colorname(name) #define contrel(dx,dy) pl_contrel(dx,dy) #define ellarc(xc,yc,x0,y0,x1,y1) pl_ellarc(xc,yc,x0,y0,x1,y1) #define ellarcrel(dxc,dyc,dx0,dy0,dx1,dy1) pl_ellarcrel(dxc,dyc,dx0,dy0,dx1,dy1) #define ellipse(x,y,rx,ry,angle) pl_ellipse(x,y,rx,ry,angle) #define ellipserel(dx,dy,rx,ry,angle) pl_ellipserel(dx,dy,rx,ry,angle) #define endpath() pl_endpath() #define endsubpath() pl_endsubpath() #define fillcolor(red,green,blue) pl_fillcolor(red,green,blue) #define fillcolorname(name) pl_fillcolorname(name) #define fillmod(s) pl_fillmod(s) #define filltype(level) pl_filltype(level) #define flushpl() pl_flushpl() #define fontname(s) pl_fontname(s) #define fontsize(size) pl_fontsize(size) #define havecap(s) pl_havecap(s) #define joinmod(s) pl_joinmod(s) #define labelwidth(s) pl_labelwidth(s) #define linedash(n,dashes,offset) pl_linedash(n,dashes,offset) #define linerel(dx0,dy0,dx1,dy1) pl_linerel(dx0,dy0,dx1,dy1) #define linewidth(size) pl_linewidth(size) #define marker(x,y,type,size) pl_marker(x,y,type,size) #define markerrel(dx,dy,type,size) pl_markerrel(dx,dy,type,size) #define moverel(x,y) pl_moverel(x,y) #define orientation(direction) pl_orientation(direction) #define pencolor(red,green,blue) pl_pencolor(red,green,blue) #define pencolorname(name) pl_pencolorname(name) #define pentype(level) pl_pentype(level) #define pointrel(dx,dy) pl_pointrel(dx,dy) #define restorestate() pl_restorestate() #define savestate() pl_savestate() #define space2(x0,y0,x1,y1,x2,y2) pl_space2(x0,y0,x1,y1,x2,y2) #define textangle(angle) pl_textangle(angle) /* 32 floating point counterparts to some of the above (all GNU additions) */ #define ffontname(s) pl_ffontname(s) #define ffontsize(s) pl_ffontsize(s) #define flabelwidth(s) pl_flabelwidth(s) #define ftextangle(angle) pl_ftextangle(angle) #define farc(xc,yc,x0,y0,x1,y1) pl_farc(xc,yc,x0,y0,x1,y1) #define farcrel(dxc,dyc,dx0,dy0,dx1,dy1) pl_farcrel(dxc,dyc,dx0,dy0,dx1,dy1) #define fbezier2(x0,y0,x1,y1,x2,y2) pl_fbezier2(x0,y0,x1,y1,x2,y2) #define fbezier2rel(dx0,dy0,dx1,dy1,dx2,dy2) pl_fbezier2rel(dx0,dy0,dx1,dy1,dx2,dy2) #define fbezier3(x0,y0,x1,y1,x2,y2,x3,y3) pl_fbezier3(x0,y0,x1,y1,x2,y2,x3,y3) #define fbezier3rel(dx0,dy0,dx1,dy1,dx2,dy2,dx3,dy3) pl_fbezier3rel(dx0,dy0,dx1,dy1,dx2,dy2,dx3,dy3) #define fbox(x0,y0,x1,y1) pl_fbox(x0,y0,x1,y1) #define fboxrel(dx0,dy0,dx1,dy1) pl_fboxrel(dx0,dy0,dx1,dy1) #define fcircle(x,y,r) pl_fcircle(x,y,r) #define fcirclerel(dx,dy,r) pl_fcirclerel(dx,dy,r) #define fcont(x,y) pl_fcont(x,y) #define fcontrel(dx,dy) pl_fcontrel(dx,dy) #define fellarc(xc,yc,x0,y0,x1,y1) pl_fellarc(xc,yc,x0,y0,x1,y1) #define fellarcrel(dxc,dyc,dx0,dy0,dx1,dy1) pl_fellarcrel(dxc,dyc,dx0,dy0,dx1,dy1) #define fellipse(x,y,rx,ry,angle) pl_fellipse(x,y,rx,ry,angle) #define fellipserel(dx,dy,rx,ry,angle) pl_fellipserel(dx,dy,rx,ry,angle) #define fline(x0,y0,x1,y1) pl_fline(x0,y0,x1,y1) #define flinedash(n,dashes,offset) pl_flinedash(n,dashes,offset) #define flinerel(dx0,dy0,dx1,dy1) pl_flinerel(dx0,dy0,dx1,dy1) #define flinewidth(size) pl_flinewidth(size) #define fmarker(x,y,type,size) pl_fmarker(x,y,type,size) #define fmarkerrel(dx,dy,type,size) pl_fmarkerrel(dx,dy,type,size) #define fmove(x,y) pl_fmove(x,y) #define fmoverel(dx,dy) pl_fmoverel(dx,dy) #define fpoint(x,y) pl_fpoint(x,y) #define fpointrel(dx,dy) pl_fpointrel(dx,dy) #define fspace(x0,y0,x1,y1) pl_fspace(x0,y0,x1,y1) #define fspace2(x0,y0,x1,y1,x2,y2) pl_fspace2(x0,y0,x1,y1,x2,y2) /* 6 floating point operations with no integer counterpart (GNU additions) */ #define fconcat(m0,m1,m2,m3,m4,m5) pl_fconcat(m0,m1,m2,m3,m4,m5) #define fmiterlimit(limit) pl_fmiterlimit(limit) #define frotate(theta) pl_frotate(theta) #define fscale(x,y) pl_fscale(x,y) #define fsetmatrix(m0,m1,m2,m3,m4,m5) pl_fsetmatrix(m0,m1,m2,m3,m4,m5) #define ftranslate(x,y) pl_ftranslate(x,y) /* 4 functions specific to the C binding (for construction/destruction of Plotters, and setting of Plotter parameters) */ #define newpl(type,infile,outfile,errfile) pl_newpl(type,infile,outfile,errfile) #define selectpl(handle) pl_selectpl(handle) #define deletepl(handle) pl_deletepl(handle) #define parampl(parameter,value) pl_parampl(parameter,value) 0707010003764d000081a40000000000000000000000014cc7b6180000525e000000b500010002ffffffffffffffff0000001e00000000root/usr/local/include/plot.h/* This file is part of the GNU plotutils package. Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2005, 2008, Free Software Foundation, Inc. The GNU plotutils package is free software. You may redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software foundation; either version 2, or (at your option) any later version. The GNU plotutils package is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with the GNU plotutils package; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin St., Fifth Floor, Boston, MA 02110-1301, USA. */ /* This is "plot.h", the public header file for GNU libplot, a shared library for 2-dimensional vector graphics. It declares both the new C binding, which is thread-safe, and the old C binding, which is not. */ /* stdio.h must be included before this file is included. */ #ifndef _PLOT_H_ #define _PLOT_H_ 1 /***********************************************************************/ /* Version of GNU libplot/libplotter which this header file accompanies. This information is included beginning with version 4.0. The PL_LIBPLOT_VER_STRING macro is compiled into the library, as `pl_libplot_ver'. The PL_LIBPLOT_VER macro is not compiled into it. Both are available to applications that include this header file. */ #define PL_LIBPLOT_VER_STRING "4.4" #define PL_LIBPLOT_VER 404 extern const char pl_libplot_ver[8]; /* need room for 99.99aa */ /***********************************************************************/ /* The functions in the C binding deal with `plPlotter' and `plPlotterParams' objects. They are the same as the `Plotter' and `PlotterParams' objects of the C++ binding. Internally, they are called `plPlotterStruct' and `plPlotterParamsStruct'. In the context of this header file, they are opaque. */ typedef struct plPlotterStruct plPlotter; typedef struct plPlotterParamsStruct plPlotterParams; /* Support C++. This file could be #included by a C++ compiler rather than a C compiler, in which case it needs to know that libplot functions have C linkage, not C++ linkage. This is accomplished by wrapping all function declarations in __BEGIN_DECLS ... __END_DECLS. */ #ifdef ___BEGIN_DECLS #undef ___BEGIN_DECLS #endif #ifdef ___END_DECLS #undef ___END_DECLS #endif #ifdef __cplusplus # define ___BEGIN_DECLS extern "C" { # define ___END_DECLS } #else # define ___BEGIN_DECLS /* empty */ # define ___END_DECLS /* empty */ #endif ___BEGIN_DECLS /* THE C API */ /* Constructor/destructor for the plPlotter type. Parameter values are specified at creation time via a plPlotterParams instance. There is no copy constructor. */ plPlotter * pl_newpl_r (const char *type, FILE *infile, FILE *outfile, FILE *errfile, const plPlotterParams *plotter_params); int pl_deletepl_r (plPlotter *plotter); /* Constructor/destructor/copy constructor for the plPlotterParams type, any instance of which stores parameters that are used when creating a plPlotter. */ plPlotterParams * pl_newplparams (void); int pl_deleteplparams (plPlotterParams *plotter_params); plPlotterParams * pl_copyplparams (const plPlotterParams *plotter_params); /* A function for setting a single Plotter parameter in a plPlotterParams instance. */ int pl_setplparam (plPlotterParams *plotter_params, const char *parameter, void *value); /* THE PLOTTER METHODS */ /* 13 functions in traditional (pre-GNU) libplot */ int pl_arc_r (plPlotter *plotter, int xc, int yc, int x0, int y0, int x1, int y1); int pl_box_r (plPlotter *plotter, int x0, int y0, int x1, int y1); int pl_circle_r (plPlotter *plotter, int x, int y, int r); int pl_closepl_r (plPlotter *plotter); int pl_cont_r (plPlotter *plotter, int x, int y); int pl_erase_r (plPlotter *plotter); int pl_label_r (plPlotter *plotter, const char *s); int pl_line_r (plPlotter *plotter, int x0, int y0, int x1, int y1); int pl_linemod_r (plPlotter *plotter, const char *s); int pl_move_r (plPlotter *plotter, int x, int y); int pl_openpl_r (plPlotter *plotter); int pl_point_r (plPlotter *plotter, int x, int y); int pl_space_r (plPlotter *plotter, int x0, int y0, int x1, int y1); /* 46 additional functions in GNU libplot, plus 1 obsolete function [pl_outfile_r]. */ FILE* pl_outfile_r (plPlotter *plotter, FILE* outfile);/* OBSOLETE */ int pl_alabel_r (plPlotter *plotter, int x_justify, int y_justify, const char *s); int pl_arcrel_r (plPlotter *plotter, int dxc, int dyc, int dx0, int dy0, int dx1, int dy1); int pl_bezier2_r (plPlotter *plotter, int x0, int y0, int x1, int y1, int x2, int y2); int pl_bezier2rel_r (plPlotter *plotter, int dx0, int dy0, int dx1, int dy1, int dx2, int dy2); int pl_bezier3_r (plPlotter *plotter, int x0, int y0, int x1, int y1, int x2, int y2, int x3, int y3); int pl_bezier3rel_r (plPlotter *plotter, int dx0, int dy0, int dx1, int dy1, int dx2, int dy2, int dx3, int dy3); int pl_bgcolor_r (plPlotter *plotter, int red, int green, int blue); int pl_bgcolorname_r (plPlotter *plotter, const char *name); int pl_boxrel_r (plPlotter *plotter, int dx0, int dy0, int dx1, int dy1); int pl_capmod_r (plPlotter *plotter, const char *s); int pl_circlerel_r (plPlotter *plotter, int dx, int dy, int r); int pl_closepath_r (plPlotter *plotter); int pl_color_r (plPlotter *plotter, int red, int green, int blue); int pl_colorname_r (plPlotter *plotter, const char *name); int pl_contrel_r (plPlotter *plotter, int x, int y); int pl_ellarc_r (plPlotter *plotter, int xc, int yc, int x0, int y0, int x1, int y1); int pl_ellarcrel_r (plPlotter *plotter, int dxc, int dyc, int dx0, int dy0, int dx1, int dy1); int pl_ellipse_r (plPlotter *plotter, int x, int y, int rx, int ry, int angle); int pl_ellipserel_r (plPlotter *plotter, int dx, int dy, int rx, int ry, int angle); int pl_endpath_r (plPlotter *plotter); int pl_endsubpath_r (plPlotter *plotter); int pl_fillcolor_r (plPlotter *plotter, int red, int green, int blue); int pl_fillcolorname_r (plPlotter *plotter, const char *name); int pl_fillmod_r (plPlotter *plotter, const char *s); int pl_filltype_r (plPlotter *plotter, int level); int pl_flushpl_r (plPlotter *plotter); int pl_fontname_r (plPlotter *plotter, const char *s); int pl_fontsize_r (plPlotter *plotter, int size); int pl_havecap_r (plPlotter *plotter, const char *s); int pl_joinmod_r (plPlotter *plotter, const char *s); int pl_labelwidth_r (plPlotter *plotter, const char *s); int pl_linedash_r (plPlotter *plotter, int n, const int *dashes, int offset); int pl_linerel_r (plPlotter *plotter, int dx0, int dy0, int dx1, int dy1); int pl_linewidth_r (plPlotter *plotter, int size); int pl_marker_r (plPlotter *plotter, int x, int y, int type, int size); int pl_markerrel_r (plPlotter *plotter, int dx, int dy, int type, int size); int pl_moverel_r (plPlotter *plotter, int x, int y); int pl_orientation_r (plPlotter *plotter, int direction); int pl_pencolor_r (plPlotter *plotter, int red, int green, int blue); int pl_pencolorname_r (plPlotter *plotter, const char *name); int pl_pentype_r (plPlotter *plotter, int level); int pl_pointrel_r (plPlotter *plotter, int dx, int dy); int pl_restorestate_r (plPlotter *plotter); int pl_savestate_r (plPlotter *plotter); int pl_space2_r (plPlotter *plotter, int x0, int y0, int x1, int y1, int x2, int y2); int pl_textangle_r (plPlotter *plotter, int angle); /* 32 floating point counterparts to some of the above (all GNU additions) */ double pl_ffontname_r (plPlotter *plotter, const char *s); double pl_ffontsize_r (plPlotter *plotter, double size); double pl_flabelwidth_r (plPlotter *plotter, const char *s); double pl_ftextangle_r (plPlotter *plotter, double angle); int pl_farc_r (plPlotter *plotter, double xc, double yc, double x0, double y0, double x1, double y1); int pl_farcrel_r (plPlotter *plotter, double dxc, double dyc, double dx0, double dy0, double dx1, double dy1); int pl_fbezier2_r (plPlotter *plotter, double x0, double y0, double x1, double y1, double x2, double y2); int pl_fbezier2rel_r (plPlotter *plotter, double dx0, double dy0, double dx1, double dy1, double dx2, double dy2); int pl_fbezier3_r (plPlotter *plotter, double x0, double y0, double x1, double y1, double x2, double y2, double x3, double y3); int pl_fbezier3rel_r (plPlotter *plotter, double dx0, double dy0, double dx1, double dy1, double dx2, double dy2, double dx3, double dy3); int pl_fbox_r (plPlotter *plotter, double x0, double y0, double x1, double y1); int pl_fboxrel_r (plPlotter *plotter, double dx0, double dy0, double dx1, double dy1); int pl_fcircle_r (plPlotter *plotter, double x, double y, double r); int pl_fcirclerel_r (plPlotter *plotter, double dx, double dy, double r); int pl_fcont_r (plPlotter *plotter, double x, double y); int pl_fcontrel_r (plPlotter *plotter, double dx, double dy); int pl_fellarc_r (plPlotter *plotter, double xc, double yc, double x0, double y0, double x1, double y1); int pl_fellarcrel_r (plPlotter *plotter, double dxc, double dyc, double dx0, double dy0, double dx1, double dy1); int pl_fellipse_r (plPlotter *plotter, double x, double y, double rx, double ry, double angle); int pl_fellipserel_r (plPlotter *plotter, double dx, double dy, double rx, double ry, double angle); int pl_flinedash_r (plPlotter *plotter, int n, const double *dashes, double offset); int pl_fline_r (plPlotter *plotter, double x0, double y0, double x1, double y1); int pl_flinerel_r (plPlotter *plotter, double dx0, double dy0, double dx1, double dy1); int pl_flinewidth_r (plPlotter *plotter, double size); int pl_fmarker_r (plPlotter *plotter, double x, double y, int type, double size); int pl_fmarkerrel_r (plPlotter *plotter, double dx, double dy, int type, double size); int pl_fmove_r (plPlotter *plotter, double x, double y); int pl_fmoverel_r (plPlotter *plotter, double dx, double dy); int pl_fpoint_r (plPlotter *plotter, double x, double y); int pl_fpointrel_r (plPlotter *plotter, double dx, double dy); int pl_fspace_r (plPlotter *plotter, double x0, double y0, double x1, double y1); int pl_fspace2_r (plPlotter *plotter, double x0, double y0, double x1, double y1, double x2, double y2); /* 6 floating point operations with no integer counterpart (GNU additions) */ int pl_fconcat_r (plPlotter *plotter, double m0, double m1, double m2, double m3, double m4, double m5); int pl_fmiterlimit_r (plPlotter *plotter, double limit); int pl_frotate_r (plPlotter *plotter, double theta); int pl_fscale_r (plPlotter *plotter, double x, double y); int pl_fsetmatrix_r (plPlotter *plotter, double m0, double m1, double m2, double m3, double m4, double m5); int pl_ftranslate_r (plPlotter *plotter, double x, double y); /* THE OLD (non-thread-safe) C API */ /* 3 functions specific to the old C API. (For construction/destruction and selection of Plotters, and setting of Plotter parameters. The fact that a single Plotter is globally `selected' makes the old API non-thread-safe.) */ int pl_newpl (const char *type, FILE *infile, FILE *outfile, FILE *errfile); int pl_selectpl (int handle); int pl_deletepl (int handle); /* A function for setting parameters of Plotters that will subsequently be created. This also makes the old API non-thread-safe. */ int pl_parampl (const char *parameter, void *value); /* THE PLOTTER METHODS */ /* In the old API, the Plotter to be acted on is specified by first calling selectpl(). */ /* 13 functions in traditional (pre-GNU) libplot */ int pl_arc (int xc, int yc, int x0, int y0, int x1, int y1); int pl_box (int x0, int y0, int x1, int y1); int pl_circle (int x, int y, int r); int pl_closepl (void); int pl_cont (int x, int y); int pl_erase (void); int pl_label (const char *s); int pl_line (int x0, int y0, int x1, int y1); int pl_linemod (const char *s); int pl_move (int x, int y); int pl_openpl (void); int pl_point (int x, int y); int pl_space (int x0, int y0, int x1, int y1); /* 46 additional functions in GNU libplot, plus 1 obsolete function [pl_outfile]. */ FILE* pl_outfile (FILE* outfile);/* OBSOLETE */ int pl_alabel (int x_justify, int y_justify, const char *s); int pl_arcrel (int dxc, int dyc, int dx0, int dy0, int dx1, int dy1); int pl_bezier2 (int x0, int y0, int x1, int y1, int x2, int y2); int pl_bezier2rel (int dx0, int dy0, int dx1, int dy1, int dx2, int dy2); int pl_bezier3 (int x0, int y0, int x1, int y1, int x2, int y2, int x3, int y3); int pl_bezier3rel (int dx0, int dy0, int dx1, int dy1, int dx2, int dy2, int dx3, int dy3); int pl_bgcolor (int red, int green, int blue); int pl_bgcolorname (const char *name); int pl_boxrel (int dx0, int dy0, int dx1, int dy1); int pl_capmod (const char *s); int pl_circlerel (int dx, int dy, int r); int pl_closepath (void); int pl_color (int red, int green, int blue); int pl_colorname (const char *name); int pl_contrel (int x, int y); int pl_ellarc (int xc, int yc, int x0, int y0, int x1, int y1); int pl_ellarcrel (int dxc, int dyc, int dx0, int dy0, int dx1, int dy1); int pl_ellipse (int x, int y, int rx, int ry, int angle); int pl_ellipserel (int dx, int dy, int rx, int ry, int angle); int pl_endpath (void); int pl_endsubpath (void); int pl_fillcolor (int red, int green, int blue); int pl_fillcolorname (const char *name); int pl_fillmod (const char *s); int pl_filltype (int level); int pl_flushpl (void); int pl_fontname (const char *s); int pl_fontsize (int size); int pl_havecap (const char *s); int pl_joinmod (const char *s); int pl_labelwidth (const char *s); int pl_linedash (int n, const int *dashes, int offset); int pl_linerel (int dx0, int dy0, int dx1, int dy1); int pl_linewidth (int size); int pl_marker (int x, int y, int type, int size); int pl_markerrel (int dx, int dy, int type, int size); int pl_moverel (int x, int y); int pl_orientation (int direction); int pl_pencolor (int red, int green, int blue); int pl_pencolorname (const char *name); int pl_pentype (int level); int pl_pointrel (int dx, int dy); int pl_restorestate (void); int pl_savestate (void); int pl_space2 (int x0, int y0, int x1, int y1, int x2, int y2); int pl_textangle (int angle); /* 32 floating point counterparts to some of the above (all GNU additions) */ double pl_ffontname (const char *s); double pl_ffontsize (double size); double pl_flabelwidth (const char *s); double pl_ftextangle (double angle); int pl_farc (double xc, double yc, double x0, double y0, double x1, double y1); int pl_farcrel (double dxc, double dyc, double dx0, double dy0, double dx1, double dy1); int pl_fbezier2 (double x0, double y0, double x1, double y1, double x2, double y2); int pl_fbezier2rel (double dx0, double dy0, double dx1, double dy1, double dx2, double dy2); int pl_fbezier3 (double x0, double y0, double x1, double y1, double x2, double y2, double x3, double y3); int pl_fbezier3rel (double dx0, double dy0, double dx1, double dy1, double dx2, double dy2, double dx3, double dy3); int pl_fbox (double x0, double y0, double x1, double y1); int pl_fboxrel (double dx0, double dy0, double dx1, double dy1); int pl_fcircle (double x, double y, double r); int pl_fcirclerel (double dx, double dy, double r); int pl_fcont (double x, double y); int pl_fcontrel (double dx, double dy); int pl_fellarc (double xc, double yc, double x0, double y0, double x1, double y1); int pl_fellarcrel (double dxc, double dyc, double dx0, double dy0, double dx1, double dy1); int pl_fellipse (double x, double y, double rx, double ry, double angle); int pl_fellipserel (double dx, double dy, double rx, double ry, double angle); int pl_flinedash (int n, const double *dashes, double offset); int pl_fline (double x0, double y0, double x1, double y1); int pl_flinerel (double dx0, double dy0, double dx1, double dy1); int pl_flinewidth (double size); int pl_fmarker (double x, double y, int type, double size); int pl_fmarkerrel (double dx, double dy, int type, double size); int pl_fmove (double x, double y); int pl_fmoverel (double dx, double dy); int pl_fpoint (double x, double y); int pl_fpointrel (double dx, double dy); int pl_fspace (double x0, double y0, double x1, double y1); int pl_fspace2 (double x0, double y0, double x1, double y1, double x2, double y2); /* 6 floating point operations with no integer counterpart (GNU additions) */ int pl_fconcat (double m0, double m1, double m2, double m3, double m4, double m5); int pl_fmiterlimit (double limit); int pl_frotate (double theta); int pl_fscale (double x, double y); int pl_fsetmatrix (double m0, double m1, double m2, double m3, double m4, double m5); int pl_ftranslate (double x, double y); /* UNDOCUMENTED FONT API CALLS */ /* These are used by the graphics programs in the plotutils package (e.g., `graph') to access the font tables within libplot, so that the user can be given lists of font names. */ void *_pl_get_hershey_font_info (plPlotter *plotter); void *_pl_get_ps_font_info (plPlotter *plotter); void *_pl_get_pcl_font_info (plPlotter *plotter); void *_pl_get_stick_font_info (plPlotter *plotter); ___END_DECLS /* THE GLOBAL VARIABLES IN GNU LIBPLOT */ /* There are two: user-settable error handlers (not yet documented). */ extern int (*pl_libplot_warning_handler) (const char *msg); extern int (*pl_libplot_error_handler) (const char *msg); #undef const /***********************************************************************/ /* Useful definitions, included in both plot.h and plotter.h. */ #ifndef _PL_LIBPLOT_USEFUL_DEFS #define _PL_LIBPLOT_USEFUL_DEFS 1 /* Symbol types for the marker() function, extending over the range 0..31. (1 through 5 are the same as in the GKS [Graphical Kernel System].) These are now defined as enums rather than ints. Cast them to ints if necessary. */ enum { M_NONE, M_DOT, M_PLUS, M_ASTERISK, M_CIRCLE, M_CROSS, M_SQUARE, M_TRIANGLE, M_DIAMOND, M_STAR, M_INVERTED_TRIANGLE, M_STARBURST, M_FANCY_PLUS, M_FANCY_CROSS, M_FANCY_SQUARE, M_FANCY_DIAMOND, M_FILLED_CIRCLE, M_FILLED_SQUARE, M_FILLED_TRIANGLE, M_FILLED_DIAMOND, M_FILLED_INVERTED_TRIANGLE, M_FILLED_FANCY_SQUARE, M_FILLED_FANCY_DIAMOND, M_HALF_FILLED_CIRCLE, M_HALF_FILLED_SQUARE, M_HALF_FILLED_TRIANGLE, M_HALF_FILLED_DIAMOND, M_HALF_FILLED_INVERTED_TRIANGLE, M_HALF_FILLED_FANCY_SQUARE, M_HALF_FILLED_FANCY_DIAMOND, M_OCTAGON, M_FILLED_OCTAGON }; /* ONE-BYTE OPERATION CODES FOR GNU METAFILE FORMAT. These are now defined as enums rather than ints. Cast them to ints if necessary. There are 85 currently recognized op codes. The first 10 date back to Unix plot(5) format. */ enum { /* 10 op codes for primitive graphics operations, as in Unix plot(5) format. */ O_ARC = 'a', O_CIRCLE = 'c', O_CONT = 'n', O_ERASE = 'e', O_LABEL = 't', O_LINEMOD = 'f', O_LINE = 'l', O_MOVE = 'm', O_POINT = 'p', O_SPACE = 's', /* 42 op codes that are GNU extensions */ O_ALABEL = 'T', O_ARCREL = 'A', O_BEZIER2 = 'q', O_BEZIER2REL = 'r', O_BEZIER3 = 'y', O_BEZIER3REL = 'z', O_BGCOLOR = '~', O_BOX = 'B', /* not an op code in Unix plot(5) */ O_BOXREL = 'H', O_CAPMOD = 'K', O_CIRCLEREL = 'G', O_CLOSEPATH = 'k', O_CLOSEPL = 'x', /* not an op code in Unix plot(5) */ O_COMMENT = '#', O_CONTREL = 'N', O_ELLARC = '?', O_ELLARCREL = '/', O_ELLIPSE = '+', O_ELLIPSEREL = '=', O_ENDPATH = 'E', O_ENDSUBPATH = ']', O_FILLTYPE = 'L', O_FILLCOLOR = 'D', O_FILLMOD = 'g', O_FONTNAME = 'F', O_FONTSIZE = 'S', O_JOINMOD = 'J', O_LINEDASH = 'd', O_LINEREL = 'I', O_LINEWIDTH = 'W', O_MARKER = 'Y', O_MARKERREL = 'Z', O_MOVEREL = 'M', O_OPENPL = 'o', /* not an op code in Unix plot(5) */ O_ORIENTATION = 'b', O_PENCOLOR = '-', O_PENTYPE = 'h', O_POINTREL = 'P', O_RESTORESTATE= 'O', O_SAVESTATE = 'U', O_SPACE2 = ':', O_TEXTANGLE = 'R', /* 30 floating point counterparts to many of the above. They are not even slightly mnemonic. */ O_FARC = '1', O_FARCREL = '2', O_FBEZIER2 = '`', O_FBEZIER2REL = '\'', O_FBEZIER3 = ',', O_FBEZIER3REL = '.', O_FBOX = '3', O_FBOXREL = '4', O_FCIRCLE = '5', O_FCIRCLEREL = '6', O_FCONT = ')', O_FCONTREL = '_', O_FELLARC = '}', O_FELLARCREL = '|', O_FELLIPSE = '{', O_FELLIPSEREL = '[', O_FFONTSIZE = '7', O_FLINE = '8', O_FLINEDASH = 'w', O_FLINEREL = '9', O_FLINEWIDTH = '0', O_FMARKER = '!', O_FMARKERREL = '@', O_FMOVE = '$', O_FMOVEREL = '%', O_FPOINT = '^', O_FPOINTREL = '&', O_FSPACE = '*', O_FSPACE2 = ';', O_FTEXTANGLE = '(', /* 3 op codes for floating point operations with no integer counterpart */ O_FCONCAT = '\\', O_FMITERLIMIT = 'i', O_FSETMATRIX = 'j' }; #endif /* not _PL_LIBPLOT_USEFUL_DEFS */ /***********************************************************************/ #endif /* not _PLOT_H_ */ 07070100037653000041ed0000000000000000000000074cc7b6fb00000000000000b500010002ffffffffffffffff0000001500000000root/usr/local/share07070100037654000041ed0000000000000000000000024cc7b6fb00000000000000b500010002ffffffffffffffff0000001a00000000root/usr/local/share/info07070100037656000081a40000000000000000000000014cc7b6180007cfb4000000b500010002ffffffffffffffff0000002900000000root/usr/local/share/info/plotutils.infoThis is plotutils.info, produced by makeinfo version 4.8 from plotutils.texi. INFO-DIR-SECTION GNU Plotting Utilities START-INFO-DIR-ENTRY * Plotting utilities: (plotutils). GNU plotting utilities. * graph: (plotutils)graph Invocation. Plot datasets, possibly in real time. * plot: (plotutils)plot Invocation. Convert and display plot files. * pic2plot: (plotutils)pic2plot Invocation. Convert files in the pic language * tek2plot: (plotutils)tek2plot Invocation. Translate legacy Tektronix data. * plotfont: (plotutils)plotfont Invocation. Plot character maps of fonts. * spline: (plotutils)spline Invocation. Interpolate between points in datasets. * ode: (plotutils)ode Invocation. Integrate differential equations. * libplot: (plotutils)libplot. A library for 2-D vector graphics. * Appendices: (plotutils)Appendices. More info on the plotting utilities. END-INFO-DIR-ENTRY This file documents version 2.6 of the GNU plotting utilities package, including GNU libplot 4.4 Copyright (C) 1989, 1990, 1991, 1995, 1996, 1997, 1998, 1999, 2000, 2005, 2008, 2009 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this manual under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts and no Back-Cover Texts. A copy of the license is included in the appendix entitled "The GNU Free Documentation License".  File: plotutils.info, Node: Top, Next: Plotutils Intro, Prev: (dir), Up: (dir) This is the documentation for version 2.6 of the GNU plotting utilities package, including GNU libplot 4.4. The package consists of programs and functions for vector graphics and data plotting. * Menu: * Plotutils Intro:: GNU plotting utilities * graph:: graph, a program for plotting datasets * plot:: plot, a plot format conversion program * pic2plot:: pic2plot, a translator for files in the pic language * tek2plot:: tek2plot, a translator for legacy Tektronix files * plotfont:: plotfont, a program for plotting font character maps * spline:: spline, an interpolation program * ode:: ode, a differential equation integrator * libplot:: A library for device-independent 2-D vector graphics * Appendices:: Additional Information  File: plotutils.info, Node: Plotutils Intro, Next: graph, Prev: Top, Up: Top 1 The GNU Plotting Utilities **************************** The GNU plotting utilities consist of eight command-line programs: the graphics programs `graph', `plot', `pic2plot', `tek2plot', and `plotfont', and the mathematical programs `spline', `ode', and `double'. Distributed with these programs is GNU `libplot', the library on which the graphics programs are based. GNU `libplot' is a function library for device-independent two-dimensional vector graphics, including vector graphics animations under the X Window System. It has bindings for both C and C++. The graphics programs and GNU `libplot' can export vector graphics in the following formats. X If this output option is selected, there is no output file. Output is directed to a popped-up window on an X Window System display. PNG This is "portable network graphics" format, which is increasingly popular on the Web. Unlike GIF format, it is unencumbered by patents. Files in PNG format may be viewed or edited with many applications, such as `display', which is part of the free `ImageMagick' package. PNM This is "portable anymap" format. There are three types of portable anymap: PBM (portable bitmap, for monochrome images), PGM (portable graymap), and PPM (portable pixmap, for colored images). The output file will use whichever is most appropriate. Portable anymaps may be translated to other formats with the `netpbm' package, or viewed with `display'. GIF This is pseudo-GIF format rather than true GIF format. Unlike GIF format it does not use LZW compression, so it does not transgress the Unisys LZW patent. However, files in pseudo-GIF format may be viewed or edited with any application that accepts GIF format, such as `display'. SVG This is Scalable Vector Graphics format. SVG is an XML-based format for vector graphics on the Web. The W3 Consortium (http://www.w3.org) has more information on SVG, which is being developed by its Graphics Activity (http://www.w3.org/Graphics). AI This is the format used by Adobe Illustrator. Files in this format may be edited with Adobe Illustrator (version 5, and more recent versions), or other applications. PS This is `idraw'-editable Postscript format. Files in this format may be sent to a Postscript printer, imported into another document, or edited with the free `idraw' drawing editor. See *Note idraw::. CGM This is Computer Graphics Metafile format, which may be imported into an application or displayed in any Web browser with a CGM plug-in. By default, a binary file in version 3 CGM format that conforms to the WebCGM profile is produced. The CGM Open Consortium (http://www.cgmopen.org) has more information on WebCGM, which is a standard for Web-based vector graphics. Fig This is a vector graphics format that may be displayed or edited with the free `xfig' drawing editor. See *Note xfig::. PCL 5 This is a powerful version of Hewlett-Packard's Printer Control Language. Files in this format may be sent to a LaserJet printer or compatible device (note that most inkjets do not support PCL 5). HP-GL This is Hewlett-Packard's Graphics Language. By default, the modern variant HP-GL/2 is produced. Files in HP-GL or HP-GL/2 format may be imported into a document or sent to a plotter. ReGIS This is the graphics format understood by several DEC terminals (VT340, VT330, VT241, VT240) and emulators, including the DECwindows terminal emulator, `dxterm'. Tek This is the graphics format understood by Tektronix 4014 terminals and emulators, including the emulators built into the `xterm' terminal emulator program and the MS-DOS version of `kermit'. Metafile This is device-independent GNU graphics metafile format. The `plot' program can translate it to any of the preceding formats. Of the command-line graphics programs, the best known is `graph', which is an application for plotting two-dimensional scientific data. It reads one or more data files containing datasets, and outputs a plot. The above output formats are supported. The corresponding commands are `graph -T X', `graph -T png', `graph -T pnm', `graph -T gif', `graph -T svg', `graph -T ai', `graph -T ps', `graph -T cgm', `graph -T fig', `graph -T pcl', `graph -T hpgl', `graph -T regis', `graph -T tek', and `graph'. `graph' without a `-T' option (referred to as `raw `graph'') produces output in GNU metafile format. `graph' can read datasets in both ASCII and binary format, and datasets in the `table' format produced by the plotting program `gnuplot'. It produces a plot with or without axes and labels. You may specify labels and ranges for the axes, and the size and position of the plot on the display. The labels may contain subscripts and subscripts, Greek letters, and other special symbols; there is also support for Cyrillic script (i.e., Russian) and Japanese. You may specify the type of marker symbol used for each dataset, and such parameters as the style and thickness of the line (if any) used to connect points in a dataset. The plotting of filled regions is supported, as is the drawing of error bars. `graph' provides full support for multiplotting. With a single invocation of `graph', you may produce a multiplot consisting of many plots, either side by side or inset. Each plot will have its own axes and data. `graph -T X', `graph -T tek', `graph -T regis', and raw `graph' have a feature that most plotting programs do not have. They can accept input from a pipe, and plot data points to the output in real time. For this to occur, the user must specify ranges for both axes, so that `graph' does not need to wait until the end of the input before determining them. The `plot' program is a so-called plot filter. It can translate GNU graphics metafiles (produced for example by raw `graph') into any supported output format. The corresponding commands are `plot -T X', `plot -T png', `plot -T pnm', `plot -T gif', `plot -T svg', `plot -T ai', `plot -T ps', `plot -T cgm', `plot -T fig', `plot -T pcl', `plot -T hpgl', `plot -T regis', `plot -T tek', and `plot'. The `plot' program is useful if you wish to produce output in several different formats while invoking `graph' only once. It is also useful if you wish to translate files in the traditional `plot(5)' format produced by, e.g., the non-GNU versions of `graph' provided with some operating systems. GNU metafile format is compatible with plot(5) format. The `pic2plot' program can translate from the pic language to any supported output format. The pic language, which was invented at Bell Laboratories, is used for creating box-and-arrow diagrams of the kind frequently found in technical papers and textbooks. The corresponding commands are `pic2plot -T X', `pic2plot -T png', `pic2plot -T pnm', `pic2plot -T gif', `pic2plot -T ai', `pic2plot -T ps', `pic2plot -T cgm', `pic2plot -T fig', `pic2plot -T pcl', `pic2plot -T hpgl', `pic2plot -T regis', `pic2plot -T tek', and `pic2plot'. The `tek2plot' program can translate from Tektronix format to any supported output format. The corresponding commands are `tek2plot -T X', `tek2plot -T png', `tek2plot -T pnm', `tek2plot -T gif', `tek2plot -T svg', `tek2plot -T ai', `tek2plot -T ps', `tek2plot -T cgm', `tek2plot -T fig', `tek2plot -T pcl', `tek2plot -T hpgl', `tek2plot -T regis', and `tek2plot'. `tek2plot' is useful if you have an older application that produces drawings in Tektronix format. The `plotfont' program is a simple utility that displays a character map for any font that is available to `graph', `plot', `pic2plot', or `tek2plot'. The 35 standard Postscript fonts are available if the `-T X', `-T ai', `-T ps', `-T cgm', or `-T fig' options are used. The 45 standard PCL 5 fonts (i.e., "LaserJet" fonts) are available if the `-T ai', `-T pcl' or `-T hpgl' options are used. In the latter two cases (`-T pcl' and `-T hpgl'), a number of Hewlett-Packard vector fonts are available as well. A set of 22 Hershey vector fonts, including Cyrillic fonts and a Japanese font, is always available. When producing output for an X Window System display, any of the graphics programs can use scalable X fonts. Of the command-line mathematical programs, `spline' does spline interpolation of scalar or vector-valued data. It normally uses either cubic spline interpolation or exponential splines in tension, but like `graph' it can function as a real-time filter under some circumstances. Besides splining datasets, it can construct curves, either open or closed, through arbitrarily chosen points in d-dimensional space. `ode' provides the ability to integrate an ordinary differential equation or a system of ordinary differential equations, when provided with an explicit expression for each equation. It supplements the plotting program `gnuplot', which can plot functions but not integrate ordinary differential equations. The final command-line mathematical program, `double', is a filter for converting, scaling and cutting binary or ASCII data streams. It is still under development and is not yet documented. The GNU `libplot' function library, on which the command-line graphics programs are based, is discussed at length elsewhere in this documentation. It gives C and C++ programs the ability to draw such objects as lines, open and closed polylines, arcs (both circular and elliptic), quadratic and cubic Bezier curves, circles and ellipses, points (i.e., pixels), marker symbols, and text strings. The filling of objects other than points, marker symbols, and text strings is supported (fill color, as well as pen color, can be set arbitrarily). Text strings can be drawn in any of a large number of fonts. The 35 standard Postscript fonts are supported by the X Window System, SVG, Illustrator, Postscript, CGM, and `xfig' drivers, and the 45 standard PCL 5 fonts are supported by the SVG, Illustrator, PCL 5 and HP-GL/2 drivers. The latter two also support a number of Hewlett-Packard vector fonts. All drivers, including the PNG, PNM, GIF, ReGIS, Tektronix and metafile drivers, support a set of 22 Hershey vector fonts. The support for drawing text strings is extensive. Text strings may include subscripts and superscripts, and may include characters chosen from more than one font in a typeface. Many non-alphanumeric characters may be included. The entire collection of over 1700 `Hershey glyphs' digitized by Allen V. Hershey at the U.S. Naval Surface Weapons Center, which includes many curious symbols, is built into GNU `libplot'. Text strings in the so-called EUC-JP encoding (the Extended Unix Code for Japanese) can be also be drawn. Such strings may include both syllabic Japanese characters (Hiragana and Katakana) and ideographic Japanese characters (Kanji). GNU `libplot' contains a library of 603 Kanji, including 596 of the 2965 frequently used Level 1 Kanji.  File: plotutils.info, Node: graph, Next: plot, Prev: Plotutils Intro, Up: Top 2 The `graph' Application ************************* Each invocation of `graph' reads one or more datasets from files named on the command line or from standard input, and prepares a plot. There are many command-line options for adjusting the visual appearance of the plot. The following sections explain how to use the most frequently used options, by giving examples. * Menu: * Simple Examples:: Simple examples using graph * Non-Square Plots:: Rotating and changing the aspect ratio of a plot * Multiple Datasets:: Preparing a plot from more than one dataset * Multiplotting:: Multiple plots on a single page * Data Formats:: Reading binary and other data formats * graph Invocation:: Command-line options  File: plotutils.info, Node: Simple Examples, Next: Non-Square Plots, Prev: graph, Up: graph 2.1 Simple examples using `graph' ================================= By default, `graph' reads ASCII data from the files specified on the command line, or from standard input if no files are specified. The data are pairs of numbers, interpreted as the x and y coordinates of data points. An example would be: 0.0 0.0 1.0 0.2 2.0 0.0 3.0 0.4 4.0 0.2 5.0 0.6 Data points do not need to be on different lines, nor do the x and y coordinates of a data point need to be on the same line. However, there should be no blank lines in the input if it is to be viewed as forming a single dataset. To plot such a dataset with `graph', you could do graph -T ps datafile > plot.ps or equivalently graph -T ps < datafile > plot.ps Either of these would produce an encapsulated Postscript file `plot.ps', which could be sent to a printer, displayed on a screen by the Postscript viewer `gv', or edited with the free drawing editor `idraw'. The `--page-size' option, or equivalently the `PAGESIZE' environment variable, specifies the size of the page on which the plot will be positioned. The default is "letter", i.e., 8.5in by 11in, but "a4" or other ISO or ANSI page sizes could equally well be specified. See *Note Page and Viewport Sizes::. Similarly, you would do graph -T svg < datafile > plot.svg graph -T cgm < datafile > plot.cgm to produce SVG and WebCGM files that could be displayed in a Web browser with SVG and WebCGM support, or graph -T fig < datafile > plot.fig to produce a file `plot.fig' in Fig format that could be edited with the free `xfig' drawing editor, or graph -T ai < datafile > plot.ai to produce a file `plot.ai' that could be edited with Adobe Illustrator. If you do graph -T hpgl < datafile > plot.plt you will produce a file `plot.plt' in the Hewlett-Packard Graphics Language (HP-GL/2) that may be sent to a Hewlett-Packard plotter. Similarly, you would use `graph -T pcl' to produce a file in PCL 5 format that may be printed on a LaserJet or other laser printer. You would use `graph -T X' to pop up a window on an X Window System display, and display the plot in it. For that, you would do graph -T X < datafile If you use `graph -T X', no output file will be produced: only a window. The window will vanish if you type `q' or click your mouse in it. You may also use `graph -T png' to produce a PNG file, `graph -T pnm' to produce a PNM file (a "portable anymap"), and `graph -T gif' to produce a pseudo-GIF file. If the free image display application `display' is available on your system, you could use any of the three commands graph -T png < datafile | display graph -T pnm < datafile | display graph -T gif < datafile | display to view the output file. Another thing you can do is use `graph -T tek' to display a plot on a device that can emulate a Tektronix 4014 graphics terminal. `xterm', the X Window System terminal emulator, can do this. Within an `xterm' window, you would type graph -T tek < datafile `xterm' normally emulates a VT100 terminal, but when this command is issued from within it, it will pop up a second window (a `Tektronix window') and draw the plot in it. The Japanese terminal emulator `kterm' should be able to do the same, provided that it is correctly installed. Another piece of software that can emulate a Tektronix 4014 terminal is the MS-DOS version of `kermit'. In the same way, you would use `graph -T regis' to display a plot on any graphics terminal or emulator that supports ReGIS graphics. `dxterm', the DECwindows terminal emulator, can do this. Several DEC terminals (in particular the VT340, VT330, VT241, and VT240 terminals) also support ReGIS graphics. `graph' may behave differently depending on the environment in which it is invoked. We have already mentioned the `PAGESIZE' environment variable, which affects the operation of `graph -T svg', `graph -T ai', `graph -T ps', `graph -T cgm', `graph -T fig', `graph -T pcl', and `graph -T hpgl'. Similarly, the `BITMAPSIZE' environment variable affects the operation of `graph -T X', `graph -T png', `graph -T pnm', and `graph -T gif'. The `DISPLAY' environment variable affects the operation of `graph -T X', and the `TERM' environment variable affects the operation of `graph -T tek'. There are also several environment variables that affect the operation of `graph -T pcl' and `graph -T hpgl'. For a complete discussion of the effects of the environment on `graph', see *Note graph Environment::. The following remarks apply irrespective of which output format is specified. By default, successive points in the dataset are joined by solid line segments, which form a polygonal line or polyline that we call simply a `line'. You may choose the style of line (the `linemode') with the `-m' option: graph -T ps -m 2 < datafile > plot.ps Here `-m 2' indicates that linemode #2 should be used. If the dataset is rendered in monochrome, which is the default, the line can be drawn in one of five distinct styles. Linemodes #1 through #5 signify solid, dotted, dotdashed, shortdashed, and longdashed; thereafter the sequence repeats. If the `-C' option is used, the dataset will be rendered in color. For colored datasets, the line can be drawn in one of 25 distinct styles. Linemodes #1 through #5 signify red, green, blue, magenta, and cyan; all are solid. Linemodes #6 through #10 signify the same five colors, but dotted rather than solid. Linemodes #11 through #16 signify the same five colors, but dotdashed, and so forth. After linemode #25, the sequence repeats. Linemode #0, irrespective of whether the rendering is in monochrome or color, means that the line is not drawn. You may wish to _fill_ the polygon bounded by the line (i.e., shade it, or fill it with a solid color). For this, you would use the `-q' option. For example, echo .1 .1 .1 .9 .9 .9 .9 .1 .1 .1 | graph -T ps -C -m 1 -q 0.3 > plot.ps will plot a square region with vertices (0.1,0.1), (0.1,0.9), (0.9,0.9), and (0.9,0.1). The repetition of the first vertex (0.1,0.1) at the end of the sequence of vertices ensures that the square will be closed: all four segments of its boundary will be drawn. The square will be drawn in red, since the colored version of linemode #1 is requested. The interior of the square will be filled with red to an intensity of 30%, as the `-q 0.3' option specifies. If the intensity were 1.0, the region would be filled with solid color, and if it were 0.0, the region would be filled with white. If the intensity were negative, the region would be unfilled, or transparent (the default). You may specify the thickness (`width') of the line, whether it is filled or not, by using the `-W' option. For example, `-W 0.01' specifies that the line should have a thickness equal to 0.01 times the size of the graphics display. Also, you may put symbols at each data point along the line by doing, for example, graph -T ps -S 3 0.1 < datafile > plot.ps where the first argument 3 indicates which symbol to plot. The optional second argument 0.1 specifies the symbol size as a fraction of the size of the `plotting box': the square within which the plot is drawn. Symbol #1 is a dot, symbol #2 is a plus sign, symbol #3 is an asterisk, symbol #4 is a circle, symbol #5 is a cross, and so forth. (*Note Marker Symbols::.) Symbols 1 through 31 are the same for all display types, and the color of a symbol will be the same as the color of the line it is plotted along. Actually, you would probably not want to plot symbols at each point in the dataset unless you turn off the line joining the points. For this purpose, the `negative linemode' concept is useful. A line whose linemode is negative is not visible; however, any symbols plotted along it will have the color associated with the corresponding positive linemode. So, for example, graph -T ps -C -m -3 -S 4 < datafile > plot.ps will plot a blue circle at each data point. The circles will not be joined by line segments. By adding the optional second argument to the `-S' option, you may adjust the size of the circles. `graph' will automatically generate abscissa (i.e., x) values for you if you use the `-a' option. If this option is used, no abscissa values should be given in the data file. The data points will be taken to be regularly spaced along the abscissa. The two arguments following `-a' on the command line will be taken as the sampling interval and the abscissa value of the first data point. If they are absent, they default to 1.0 and 0.0 respectively. For example, the command echo 0 1 0 | graph -T ps -a > plot.ps produces exactly the same plot as echo 0 0 1 1 2 0 | graph -T ps > plot.ps If the `-I e' option is specified, `graph' will plot data with error bars. In this case the dataset should consist of triples (x,y,error), rather than pairs (x,y). A vertical error bar of the appropriate length will be plotted at each data point. You would plot a symbol at each data point, along with the error bar, by using the `-S' option in the usual way. The symbol will be the same for each point in the dataset. You may use the `-a' option in conjunction with `-I e', if you wish. If you do, the dataset should contain no abscissa (i.e., x) values. By default, the limits on the x and y axes, and the spacing between the labeled ticks on each axis, are computed automatically. You may wish to set them manually. You would accomplish this with the `-x' and `-y' options. echo 0 0 1 1 2 0 | graph -T ps -x -1 3 -y -1 2 > plot.ps will produce a plot in which the x axis extends from -1 to 3, and the y axis from -1 to 2. By default, `graph' tries to place about six numbered ticks on each axis. By including an optional third argument to `-x' or `-y', you may manually set the spacing of the labeled ticks. For example, using `-y -1 2 1' rather than `-y -1 2' will produce a y axis with labeled ticks at -1, 0, 1, and 2, rather than at the locations that `graph' would choose by default, which would be -1, -0.5, 0, 0.5, 1, 1.5, and 2. In general, if a third argument is present then labeled ticks will be placed at each of its integer multiples. To make an axis logarithmic, you would use the `-l' option. For example, echo 1 1 2 3 3 1 | graph -T ps -l x > plot.ps will produce a plot in which the x axis is logarithmic, but the y axis is linear. To make both axes logarithmic, you would use `-l x -l y'. By default, the upper and lower limits on a logarithmic axis are powers of ten, and there are tick marks at each power of ten and at its integer multiples. The tick marks at the powers of ten are labeled. If the axis spans more than five orders of magnitude, the tick marks at the integer multiples are omitted. If you have an unusually short logarithmic axis, you may need to increase the number of labeled ticks. To do this, you should specify a tick spacing manually. For example, `-l x -x 1 9 2' would produce a plot in which the x axis is logarithmic and extends from 1 to 9. Labeled ticks would be located at each integer multiple of 2, i.e., at 2, 4, 6, and 8. You would label the x and y axes with the `-X' and `-Y' options, respectively. For example, echo 1 1 2 3 3 1 | graph -T ps -l x -X "A Logarithmic Axis" > plot.ps will label the log axis in the preceding example. By default, the label for the y axis (if any) will be rotated 90 degrees, unless you use the `-Q' option. (Some X Window System displays, both old and new, do not properly support rotated labels, and require the `-Q' option.) You may specify a `top label', or title for the plot, by using the `-L' option. Doing, for example, echo 1 1 2 3 3 1 | graph -T ps -l x -L "A Simple Example" > plot.ps will produce a plot with a title on top. The font size of the x axis and y axis labels may be specified with the `-f' option, and the font size of the title with the `--title-font-size' option. For example, echo 1 1 2 3 3 1 | graph -T ps -X "Abscissa" -f 0.1 > plot.ps will produce a plot in which the font size of the x axis label, and each of the numerical tick labels, is very large (0.1 times the size of the plotting box, i.e., the square within which the plot is drawn). The font in which the labels specified with the `-X', `-Y', and `-L' options are drawn can be specified with the `-F' option. For example, `-F Times-Roman' will make the labels appear in Times-Roman instead of the default font (which is Helvetica, unless `-T png', `-T pnm', `-T gif', `-T pcl', `-T hpgl', `-T regis', or `-T tek' is specified). Font names are case-insensitive, so `-F times-roman' will work equally well. The available fonts include 35 Postscript fonts (for all variants of `graph' other than `graph -T png', `graph -T pnm', `graph -T gif', `graph -T pcl', `graph -T hpgl', `graph -T regis', and `graph -T tek'), 45 PCL 5 fonts (for `graph -T svg', `graph -T ai', `graph -T pcl' and `graph -T hpgl'), a number of Hewlett-Packard vector fonts (for `graph -T pcl' and `graph -T hpgl'), and 22 Hershey vector fonts. The Hershey fonts include HersheyCyrillic, for Russian, and HersheyEUC, for Japanese. For a discussion of the available fonts, see *Note Text Fonts::. The `plotfont' utility will produce a character map of any available font. *Note plotfont::. The format of the labels drawn with the `-X', `-Y', and `-L' options may be quite intricate. Subscripts, superscripts, square roots, and switching fonts within a typeface are all allowed. The above examples do not illustrate this, but for details, see *Note Text String Format::. Each of the preceding examples produces a plot containing the default sort of grid (a square plotting box, with ticks and labels drawn along its lower edge and its left edge). There are actually several sorts of grid you may request. The `-g 0', `-g 1', `-g 2', and `-g 3' options yield successively fancier grids. What they yield, respectively, is no grid at all, a pair of axes with ticks and labels, a square plotting box with ticks and labels, and a square plotting box with ticks, labels, and grid lines. As you can check, `-g 2' is the default. There is also a `-g 4' option, which yields a slightly different sort of grid: a pair of axes that cross at the origin. This last sort of grid is useful when the x or y coordinates of the data points you are plotting are both positive and negative.  File: plotutils.info, Node: Non-Square Plots, Next: Multiple Datasets, Prev: Simple Examples, Up: graph 2.2 Non-square, displaced, and rotated plots ============================================ To alter the linear dimensions of the plotting box, and also to position it in a different part of the graphics display, you could do something like graph -T ps -h .3 -w .6 -r .1 -u .1 < datafile > plot.ps Here the `-h' and `-w' options specify the height and width of the plotting box, and the `-r' and `-u' options indicate how far up and to the right the lower left corner of the plotting box should be positioned. All dimensions are expressed as fractions of the size of the graphics display. By default, the height and width of the plotting box equal 0.6, and the `upward shift' and the `rightward shift' equal 0.2. So the above example will produce a plot that is half as tall as usual. Compared to its usual position, the plot will be shifted slightly downward and to the left. Several command-line options specify sizes or dimensions as fractions of the size of the plotting box. For example, `-S 3 .01' specifies that the marker symbols for the following dataset should be of type #3, and should have a font size equal to 0.01, i.e., 0.01 times the minimum dimension (height or width) of the plotting box. If the `-h' or `-w' options are employed to expand or contract the plot, such sizes or dimensions will scale in tandem. That is presumably the right thing to do. To rotate your plot by 90 degrees counterclockwise, you would add `--rotation 90' to the `graph' command line. You would specify `--rotation 180' to produce an upside-down plot. Any other angle may be specified, but angles other than 0, 90, 180, and 270 degrees are of interest primarily to postmodernists. The `--rotation' option may be combined with the `-h', `-w', `-r', and `-u' options. If they appear together, the `--rotation' option takes effect first. That is because `--rotation' specifies the rotation angle of the graphics display, while the other options specify how the plotting box should be positioned within the graphics display. The two sorts of positioning are logically distinct. The graphics display (sometimes called the `viewport') is an abstraction. For `graph -T X', it is a popped-up window on an X display. For `graph -T pnm' and `graph -T gif', it is a square or rectangular bitmap. In these three cases, the size of the graphics display can be set by using the `--bitmap-size' option, or by setting the `BITMAPSIZE' environment variable. For `graph -T tek', the graphics display is a square region occupying the central part of a Tektronix display. (Tektronix displays are 4/3 times as wide as they are high.) For `graph -T regis', it is a square region occupying the central part of a ReGIS display. For `graph -T ai', `graph -T ps', `graph -T pcl', and `graph -T fig', by default it is a 8-inch square centered on an 8.5in by 11in page (US letter size). For `graph -T hpgl', it is an 8-inch square, which by default is not centered. For `graph -T svg' and `graph -T cgm', the default graphics display is an 8-inch square, though if the output file is placed on a Web page, it may be scaled arbitrarily. The page size, which determines the default display size used by `graph -T svg', `graph -T ai', `graph -T ps', `graph -T cgm', `graph -T fig', `graph -T pcl', and `graph -T hpgl', can be set by using the `--page-size' option, or by setting the environment variable `PAGESIZE'. For example, setting the page size to "a4" would produce output for an A4-size page (21cm by 29.7cm), and would select a appropriate graphics display size. Either or both of the dimensions of the graphics display can be specified explicitly. For example, the page size could be specified as "letter,xsize=4in", or "a4,xsize=10cm,ysize=15cm". The dimensions of the graphics display are allowed to be negative (a negative dimension results in a reflection). The position of the display on the page, relative to its default position, may optionally be adjusted by specifying an offset vector. For example, the page size could be specified as "letter,yoffset=1.2in", or "a4,xoffset=-5mm,yoffset=2.0cm". It is also possible to position the graphics display precisely, by specifying the location of its lower left corner relative to the lower left corner of the page. For example, the page size could be specified as "letter,xorigin=2in,yorigin=3in", or "a4,xorigin=0.5cm,yorigin=0.5cm". The preceding options may be intermingled. However, `graph -T svg' and `graph -T cgm' ignore the "xoffset", "yoffset", "xorigin", and "yorigin" options, since SVG format and WebCGM format have no notion of the Web page on which the graphics display will ultimately be positioned. They interpret the "xsize" and "ysize" options as specifying a default size for the graphics display (it is merely a default, since the output file may be scaled arbitrarily when it is placed on a Web page). For more information on page and graphics display sizes, see *Note Page and Viewport Sizes::.  File: plotutils.info, Node: Multiple Datasets, Next: Multiplotting, Prev: Non-Square Plots, Up: graph 2.3 Preparing a plot from more than one dataset =============================================== It is frequently the case that several datasets need to be displayed on the same plot. If so, you may wish to distinguish the points in different datasets by joining them by lines of different types, or by using marker symbols of different types. A more complicated example would be the following. You may have a file containing a dataset that is the result of experimental observations, and a file containing closely spaced points that trace out a theoretical curve. The second file is a dataset in its own right. You would presumably plot it with line segments joining successive data points, so as to trace out the theoretical curve. But the first dataset, resulting from experiment, would be plotted without such line segments. In fact, a marker symbol would be plotted at each of its points. These examples, and others like them, led us to define a set of seven _attributes_ that define the way a dataset should be plotted. These attributes, which can be set by command-line options, are the following. 1. color/monochrome 2. linemode 3. linewidth 4. symbol type 5. symbol size 6. symbol font name 7. fill fraction Color/monochrome (a choice of one or the other) is the simplest. The choice is toggled with the `-C' option. The `linemode' (i.e., line style) specifies how the line segments joining successive points should be drawn; it is specified with the `-m' option. Linemode #0 means no linemode at all, for example. `Linewidth' means line thickness; it is specified with the `-W' option. `Symbol type' and `symbol size', which are specified with the `-S' option, specify the symbol plotted at each point of the dataset. `Symbol font name' refers to the font from which marker symbols #32 and above, which are taken to be characters rather than geometric symbols, are selected. It is set with the `--symbol-font-name' option, and is relevant only if `-S' is used to request such special marker symbols. Finally, the polygonal line joining the points in a dataset may be _filled_, to create a filled or shaded polygon. The `fill fraction' is set with the `-q' option. A negative fill fraction means no fill, or transparent; zero means white, and 1.0 means solid, or fully colored. The preceding seven attributes refer to the way in which datasets are plotted. Datasets may also differ from one another in the way in which they are read from files. The dataset(s) in a file may or may not contain error bars, for example. If a file contains data with error bars, the `-I e' option should occur on the command line before the file name. (The `-I' option specifies the input format for the following files.) The following illustrates how datasets in three different input files could be plotted simultaneously. graph -T ps -m 0 -S 3 file1 -C -m 3 file2 -C -W 0.02 file3 > output.ps The dataset in `file1' will be plotted in linemode #0, so successive points will not be joined by lines. But symbol #3 (an asterisk) will be plotted at each point. The dataset in `file2' will be plotted in color, and linemode #3 will be used. In color plotting, linemode #3 is interpreted as a solid blue line. The second `-C' on the command line turns off color for `file3'. The points in the third dataset will be joined by a black line with thickness 0.02, as a fraction of the size (i.e., minimum dimension) of the graphics display. The above command line could be made even more complicated by specifying additional options (e.g., `-q' or `-I') before each file. In fact the command line could also include such standard options as `-x' or `-y', which specify the range of each axis. Such options, which refer to the plot as a whole rather than to individual datasets, should appear before the first file name. For example, you could do graph -T ps -x 0 1 0.5 -m 0 -S 3 file1 -C -m 3 file2 > output.ps Note that it is possible to include the special file name `-', which refers to standard input, on the command line. So you may pipe the output of another program into `graph'. You may even generate a plot in part from piped output, and in part from files. Each input file may include more than one dataset. If so, the command line options preceding a file on the command line will take effect for all datasets in that file. There are two exceptions to this. By default, the linemode is incremented (`bumped') from one dataset to the next. This feature is usually quite convenient. For example, if you do graph -T ps -m 3 file1 > output.ps the first dataset in `file1' will appear in linemode #3, the second in linemode #4, etc. In fact, if you do graph -T ps file1 file2 ... > output.ps without specifying linemode explicitly, the successive datasets read from the files on the command line will appear in linemode #1, linemode #2, .... If you do not like this feature, you may turn it off, or in general toggle it, by using the `-B' option. You may also control manually the linemode and symbol type used for the datasets within any file. You would do this by including directives in the file itself, rather than on the command line. For example, if the line #m=-5,S=10 appeared in an ASCII-format input file, it would be interpreted as a directive to switch to linemode #-5 and symbol type #10 for the following dataset. Future releases of `graph' may provide the ability to set each of the seven dataset attributes in this way.  File: plotutils.info, Node: Multiplotting, Next: Data Formats, Prev: Multiple Datasets, Up: graph 2.4 Multiplotting: placing multiple plots on a single page ========================================================== It is occasionally useful to display several plots at once on a single page, or on a single graphics display. We call such a composite plot a _multiplot_. One common sort of multiplot is a small plot inset into a larger one. Another sort is two or more plots side by side. `graph' can draw multiplots consisting of an arbitrarily large number of plots. When multiplotting, `graph' draws each plot in its own `virtual display'. When an ordinary plot is drawn, the virtual display is the same as the physical display. But when a plot of a multiplot is drawn, the virtual display may be any smaller square region. The following two-plot example illustrates the idea. graph -T X datafile1 --reposition .35 .35 .3 datafile2 Here `datafile1' is plotted in the usual way. The `--reposition' option, which serves as a separator between plots, specifies that the second plot will be drawn in a virtual display. For the purposes of the `--reposition' option, the physical display is a square with lower left corner (0.0,0.0) and upper right corner (1.0,1.0). In those coordinates the virtual display will be a square of size 0.3, with lower left corner (0.35,0.35). So the second plot will be inset into the first. Just as the `-w', `-h', `-r', and `-u' options may be used to set the size and position of a plotting box within the physical display, so they may be used to set the size and position of a plotting box within a virtual display. For example, graph -T X datafile1 --reposition .35 .35 .3 -w .4 -r .3 datafile2 will yield a two-plot multiplot in which the second plot is significantly different. Its plotting box will have a width only 0.4 times the width of the virtual display. However, the plotting box will be centered within the virtual display, since the distance between the left edge of the plotting box and the left edge of the virtual display will be 0.3 times the width of the virtual display. By convention, before each plot of a multiplot other than the first is drawn, a `blankout region' surrounding its plotting box is erased. (That is, it is filled with white, or whatever the background color is.) This erasure prevents the plots from overlapping and producing a messy result. By default, the blankout region is a rectangular region 30% larger in each dimension than the plotting box for the plot. That is appropriate if the plot is a small one that is inset into the first plot. It may not be appropriate, however, if you are preparing a multiplot in which several plots appear side by side. You may use the `--blankout' option to adjust this parameter. For example, specifying `--blankout 1.0' will make the blankout region for a plot coincide with its plotting box. Specifying `--blankout 0.0' will prevent any blanking out from occurring. The blankout parameter may be set more than once, so as to differ from plot to plot. It should be emphasized that every plot in a multiplot is a plot in its own right. All the usual options (`-m', `-S', `-x', `-y', etc.) can be applied to each plot separately. The options for a plot should occur on the `graph' command line immediately after the `--reposition' option that applies to it. Each plot may be prepared from more than a single dataset, also. The names of the data files for each plot should occur on the command line before the following `--reposition' option, if any.  File: plotutils.info, Node: Data Formats, Next: graph Invocation, Prev: Multiplotting, Up: graph 2.5 Reading binary and other data formats ========================================= By default, `graph' reads datasets in ASCII format. But it can also read datasets in any of three binary formats (single precision floating point, double precision floating point, and integer). These three input formats are specified by the `-I d', `-I f', and `-I i' options, respectively. There are two advantages to using binary data: 1) `graph' runs significantly faster because the computational overhead for converting data from ASCII to binary is eliminated, and 2) the input files may be significantly smaller. If you have very large datasets, using binary format may reduce storage and runtime costs. For example, you may create a single precision binary dataset as output from a C language program: #include void write_point (float x, float y) { fwrite(&x, sizeof (float), 1, stdout); fwrite(&y, sizeof (float), 1, stdout); } You may plot data written this way by doing: graph -T ps -I f < binary_datafile > plot.ps The inclusion of multiple datasets within a single binary file is supported. If a binary file contains more than a single dataset, successive datasets should be separated by a single occurrence of the the largest possible number. For single precision datasets this is the quantity `FLT_MAX', for double precision datasets it is the quantity `DBL_MAX', and for integer datasets it is the quantity `INT_MAX'. On most machines `FLT_MAX' is approximately 3.4x10^38, `DBL_MAX' is approximately 1.8x10^308, and `INT_MAX' is 2^32-1. If you are reading datasets from more than one file, it is not required that the files be in the same format. For example, graph -T ps -I f binary_datafile -I a ascii_datafile > plot.ps will read `binary_datafile' in `f' (binary single precision) format, and `datafile' in `a' (normal ASCII) format. There is currently no support for reading and plotting binary data with error bars. If you have data with error bars, you should supply the data to `graph' in ASCII, and use the `-I e' option. `graph' can also read data files in the ASCII `table' format produced by the `gnuplot' plotting program. For this, you should use the `-I g' option. Such a data file may consist of more than one dataset. To sum up: there are six supported data formats, `a' (normal ASCII), `e' (ASCII with error bars), `g' (the ASCII `table' format produced by `gnuplot'), `f' (binary single precision), `d' (binary double precision), and `i' (binary integer). Input files may be in any of these six formats.  File: plotutils.info, Node: graph Invocation, Prev: Data Formats, Up: graph 2.6 `graph' command-line options ================================ The `graph' program reads one or more datasets from files named on the command line or from standard input, and prepares a plot. The output format is specified with the `-T' option. By default, `graph' reads ASCII data from the files specified on the command line. The data are pairs of numbers, interpreted as the x and y coordinates of data points. If no files are specified, or the file name `-' is specified, the standard input is read. An output file is written to standard output, unless the `-T X' option is specified. In that case the graph is displayed in a popped-up window on an X Window System display, and there is no output file. There are many command-line options for adjusting the visual appearance of the plot. The relative order of file names and command-line options is important. Only the options that precede a file name on the command line take effect for that file. The following sections list the possible options. Each option that takes an argument is followed, in parentheses, by the type and default value of the argument. There are five sorts of option. The behavior of `graph' is also affected by a number of environment variables, so there is a section discussing them as well. * Menu: * Plot Options:: Options affecting an entire plot * Dataset Options:: Options affecting the reading and plotting of datasets * Multiplot Options:: Options for drawing several plots at once * Raw graph Options:: Options relevant only to raw graph * Info Options:: Options requesting information (e.g., ---help) * graph Environment:: Environment variables  File: plotutils.info, Node: Plot Options, Next: Dataset Options, Prev: graph Invocation, Up: graph Invocation 2.6.1 Plot options ------------------ The following options affect an entire plot. They should normally occur at most once, and should appear on the command line before the first file name. If a multiplot is being drawn, they may (with the exception of the `-T' option) occur more than once. If so, the second and later occurrences should be placed on the command line immediately after each `--reposition X Y' option, which separates the plots in a multiplot. `-T TYPE' `--output-format TYPE' (String, default "meta".) Select an output format of type TYPE, which may be one of the strings "X", "png", "pnm", "gif", "svg", "ai", "ps", "cgm", "fig", "pcl", "hpgl", "regis", "tek", and "meta". These refer respectively to the X Window System, PNG format, portable anymap (PBM/PGM/PPM) format, pseudo-GIF format, the XML-based Scalable Vector Graphics format, the format used by Adobe Illustrator, `idraw'-editable Postscript, the WebCGM format for Web-based vector graphics, the format used by the `xfig' drawing editor, the Hewlett-Packard PCL 5 printer language, the Hewlett-Packard Graphics Language (by default, HP-GL/2), the ReGIS (remote graphics instruction set) format developed by DEC, Tektronix format, and device-independent GNU graphics metafile format. The option `--display-type' is an obsolete alternative to `--output-format'. `-E X|Y' `--toggle-axis-end X|Y' Set the position of the indicated axis to be on the other end of the plotting box from what is currently the case. E.g., `-E y' will cause the y axis to appear on the right of the plot rather than the left, which is the default. Similarly, `-E x' will cause the x axis to appear at the top of the plot rather than the bottom. Note that if the x axis appears at the top, no plot title will be drawn, since there will be no room. `-f SIZE' `--font-size SIZE' (Float, default 0.0525.) Set the size of the font used for the axis and tick labels to be SIZE. The size is specified as a fraction of the minimum dimension (width or height) of the plotting box. `-F FONT_NAME' `--font-name FONT_NAME' (String, default "Helvetica" except for `graph -T pcl', for which "Univers" is the default, and `graph -T png', `graph -T pnm', `graph -T gif', `graph -T hpgl', `graph -T regis', `graph -T tek', and raw `graph', for all of which "HersheySerif" is the default.) Set the font used for the axis and tick labels, and for the plot title (if any), to be FONT_NAME. The choice of font for the plot title may be overridden with the `--title-font-name' option (see below). Font names are case-insensitive. If the specified font is not available, the default font will be used. Which fonts are available depends on which `-T' option is used. For a list of all fonts, see *Note Text Fonts::. The `plotfont' utility will produce a character map of any available font. *Note plotfont::. `-g GRID_STYLE' `--grid-style GRID_STYLE' (Integer in the range 0...4, default 2.) Set the grid style for the plot to be GRID_STYLE. Grid styles 0 through 3 are progressively more fancy, but style 4 is a somewhat different style. 0. no axes, tick marks or labels. 1. a pair of axes, with tick marks and labels. 2. box around plot, with tick marks and labels. 3. box around plot, with tick marks and labels; also grid lines. 4. axes intersect at the origin, with tick marks and labels. `-h HEIGHT' `--height-of-plot HEIGHT' (Float, default 0.6.) Set the fractional height of the plot with respect to the height of the display (or virtual display, in the case of a multiplot) to be HEIGHT. A value of 1.0 will produce a plotting box that fills the entire available area. Since labels and tick marks may be placed outside the plotting box, values considerably less than 1.0 are normally chosen. `-H' `--toggle-frame-on-top' Toggle whether or not a copy of the plot frame should be drawn on top of the plot, as well as beneath it. This option is useful when the plotted dataset(s) project slightly beyond the frame, which can happen if a large line thickness or symbol size is specified. `-k LENGTH' `--tick-size LENGTH' (Float, default .02.) Set the length of the tick marks on each axis to be LENGTH. A value of 1.0 produces tick marks whose length is equal to the minimum dimension (width or height) of the plotting box. A negative LENGTH yields tick marks that extend outside the box, rather than inside. `-K CLIP_MODE' `--clip-mode CLIP_MODE' (Integer, default 1.) Set the clip mode for the plot to CLIP_MODE. The clip mode is relevant only if data points are being joined by a line, and the line is not being filled to create a filled region (since filled regions are clipped in a fixed way). There are three clip modes: 0, 1, and 2. They have the same meaning as in the `gnuplot' plotting program. Clip mode 0 means that a line segment joining two data points will be plotted only if neither point is outside the plotting box. Clip mode 1 means that it will be plotted if no more than one of the two points is outside, and clip mode 2 means that it will be plotted even if both are outside. In all three clip modes the line segment will be clipped to the plotting box. `-l X|Y' `--toggle-log-axis X|Y' Set the specified axis to be a log axis rather than a linear axis, or vice versa. By default, both axes are linear axes. `-L TOP_LABEL' `--top-label TOP_LABEL' (String, default empty.) Place the text string TOP_LABEL above the plot, as its `top label', i.e., title. The string may include escape sequences (*note Text String Format::). The `--title-font-size' option may be used to specify the size of the font. The font is normally the same as the font used for labeling axes and ticks, as selected by the `-F' option. But this can be overridden with the `--title-font-name' option. `-N X|Y' `--toggle-no-ticks X|Y' Toggle the presence of ticks and tick labels on the specified axis. This applies to the grid styles that normally include ticks and tick labels, i.e., grid styles 1, 2, 3, and 4. `-Q' `--toggle-rotate-y-label' Position the label on the y axis (which is set with the `-Y' option) horizontally instead of vertically, or vice versa. By default, the label is rotated, so that it is parallel to the y axis. But some output devices (e.g., old X Window System displays, and buggy new ones) cannot handle rotated fonts. So if you specify `-T X', you may also need `-Q'. `-r RIGHT' `--right-shift RIGHT' (Float, default 0.2.) Move the plot to the right by a fractional amount RIGHT with respect to the width of the display (or virtual display, in the case of a multiplot). This produces a margin on the left side of the plotting box. A value of 0.5 will produce a margin half the width of the available area. Note that the tick marks and labels are drawn in the margin. `-R X|Y' `--toggle-round-to-next-tick X|Y' Toggle whether or not the upper and lower limits of the specified axis should be expanded, so that they both become integer multiples of the spacing between labeled tick marks. This option is meaningful whenever the user specifies either or both of the limits, by using the `-x' or `-y' option. If the user leaves both limits unspecified, they will always be chosen to satisfy the `integer multiple' constraint. `-s' `--save-screen' Save the screen. This option requests that `graph' not erase the output device before it begins to plot. This option is relevant only to `graph -T tek' and raw `graph'. Tektronix displays and emulators are persistent, in the sense that previously drawn graphics remain visible. So by repeatedly using `graph -T tek -s', you can build up a multiplot. `-t' `--toggle-transpose-axes' Transpose the abscissa and ordinate. This causes the axes to be interchanged, and the options that apply to each axis to be applied to the opposite axis. That is, data points are read in as (y, x) pairs, and such options as `-x' and `-X' apply to the y axis rather than the x axis. If the `-I e' option is in force, so that the data points are read with error bars, the orientation of the error bars will be switched between vertical and horizontal. `-u UP' `--upward-shift UP' (Float, default 0.2.) Move the plot up by a fractional amount UP with respect to the height of the display (or virtual display, in the case of a multiplot). This produces a margin below the plotting box. A value of 0.5 will produce a margin half the height of the available area. Note that the tick marks and labels are drawn in the margin. `-w WIDTH' `--width-of-plot WIDTH' (Float, default 0.6.) Set the fractional width of the plot with respect to the width of the display (or virtual display, in the case of a multiplot) to be WIDTH. A value of 1.0 will produce a plotting box that fills the entire available area. Since labels and tick marks may be placed outside the plotting box, values considerably less than 1.0 are normally chosen. `-x [LOWER_LIMIT [UPPER_LIMIT [SPACING]]]' `--x-limits [LOWER_LIMIT [UPPER_LIMIT [SPACING]]]' (Floats.) The arguments LOWER_LIMIT and UPPER_LIMIT specify the limits of the x axis, and the optional argument SPACING specifies the spacing of labeled ticks along the axis. If any of the three arguments is missing or is supplied as `-' (i.e., as a single hyphen), it is computed from the data. Both arguments LOWER_LIMIT and UPPER_LIMIT must be present if `graph' is to act as a real-time filter. By default, the supplied limit(s) are strictly respected. However, the `-R x' option may be used to request that they be rounded to the nearest integer multiple of the spacing between labeled ticks. The lower limit will be rounded downward, and the upper limit upward. `-X X_LABEL' `--x-label X_LABEL' (String, default empty.) Set the label for the x axis to be the text string X_LABEL. The string may include escape sequences (*note Text String Format::). The `-F' and `-f' options may be used to specify the name of the font and the size of the font. `-y [LOWER_LIMIT [UPPER_LIMIT [SPACING]]]' `--y-limits [LOWER_LIMIT [UPPER_LIMIT [SPACING]]]' (Floats.) The arguments specify the limits of the y axis, and the spacing of labeled ticks along it, as for the x axis (see above). Both arguments LOWER_LIMIT and UPPER_LIMIT must be present if `graph' is to act as a real-time filter. By default, the supplied limit(s) are strictly respected. However, the `-R y' option may be used to request that they be rounded to the nearest multiple of the tick spacing. The lower limit will be rounded downward, and the upper limit upward. `-Y Y_LABEL' `--y-label Y_LABEL' (String, default empty.) Set the label for the y axis to be the text string Y_LABEL. The string may include escape sequences (*note Text String Format::). The label will be rotated by 90 degrees so that it is parallel to the axis, unless the `-Q' option is used. (Some X Window System displays, both old and new, do not properly support rotated labels, so that if you specify `-T X', you may also need `-Q'.) The `-F' and `-f' options can be used to specify the name of the font and the size of the font. `--bg-color NAME' (String, default "white".) Set the color used for the plot background to be NAME. This is relevant only to `graph -T X', `graph -T png', `graph -T pnm', `graph -T gif', `graph -T cgm', `graph -T regis', and `graph -T meta'. An unrecognized name sets the color to the default. For information on what names are recognized, see *Note Color Names::. The environment variable `BG_COLOR' can equally well be used to specify the background color. If the `-T png' or `-T gif' option is used, a transparent PNG file or a transparent pseudo-GIF, respectively, may be produced by setting the `TRANSPARENT_COLOR' environment variable to the name of the background color. *Note graph Environment::. If the `-T svg' or `-T cgm' option is used, an output file without a background may be produced by setting the background color to "none". `--bitmap-size BITMAP_SIZE' (String, default "570x570".) Set the size of the graphics display in which the plot will be drawn, in terms of pixels, to be BITMAP_SIZE. This is relevant only to `graph -T X', `graph -T png', `graph -T pnm', and `graph -T gif', for all of which the size can be expressed in terms of pixels. The environment variable `BITMAPSIZE' may equally well be used to specify the size. The graphics display used by `graph -T X' is a popped-up X window. Command-line positioning of this window on an X Window System display is supported. For example, if BITMAP_SIZE is "570x570+0+0" then the window will be popped up in the upper left corner. If you choose a rectangular (non-square) window size, the fonts in the plot will be scaled anisotropically, i.e., by different factors in the horizontal and vertical direction. Any font that cannot easily be anisotropically scaled will be replaced by a default scalable font, such as the Hershey vector font "HersheySerif". For backward compatibility, `graph -T X' allows the user to set the window size and position by setting the X resource `Xplot.geometry', instead of `--bitmap-size' or `BITMAPSIZE'. `--emulate-color OPTION' (String, default "no".) If OPTION is "yes", replace each color in the output by an appropriate shade of gray. This is seldom useful, except when using `graph -T pcl' to prepare output for a PCL 5 device. (Many monochrome PCL 5 devices, such as monochrome LaserJets, do a poor job of emulating color on their own. They usually map HP-GL/2's seven standard pen colors, including even yellow, to black.) You may equally well request color emulation by setting the environment variable `EMULATE_COLOR' to "yes". `--frame-color NAME' (String, default "black".) Set the color used for drawing the plot frame, and for drawing monochrome datasets (if any) to be NAME. An unrecognized name sets the color to the default. For information on what names are recognized, see *Note Color Names::. `--frame-line-width FRAME_LINE_WIDTH' (Float, default -1.0.) Set the thickness of lines in the plot frame, as a fraction of the size (i.e., minimum dimension) of the graphics display, to FRAME_LINE_WIDTH. A negative value means that the default value for the line thickness provided by the GNU `libplot' graphics library should be used. This is usually 1/850 times the size of the display, although if `-T X', `-T png', `-T pnm', or `-T gif' is specified, it is zero. By convention, a zero-thickness line is the thinnest line that can be drawn. This is the case in all output formats. Note, however, that the drawing editors `idraw' and `xfig' treat zero-thickness lines as invisible. `graph -T tek' and `graph -T regis' do not support drawing lines with other than a default thickness, and `graph -T hpgl' does not support doing so if the environment variable `HPGL_VERSION' is set to a value less than "2" (the default). `--max-line-length MAX_LINE_LENGTH' (Integer, default 500.) Set the maximum number of points that a polygonal line drawn through any dataset may contain, before it is flushed to the output device, to equal MAX_LINE_LENGTH. If this flushing occurs, the polygonal line will be split into two or more sub-lines, though the splitting should not be noticeable. Splitting will not take place if the `-q' option, which requests filling, is used. The reason for splitting long polygonal lines is that some display devices (e.g., old Postscript printers and HP-GL pen plotters) have limited buffer sizes. The environment variable `MAX_LINE_LENGTH' can also be used to specify the maximum line length. This option has no effect on `graph -T tek' or raw `graph', since they draw polylines in real time and have no buffer limitations. `--page-size PAGESIZE' (String, default "letter".) Set the size of the page on which the plot will be positioned. This is relevant only to `graph -T svg', `graph -T ai', `graph -T ps', `graph -T cgm', `graph -T fig', `graph -T pcl', and `graph -T hpgl'. "letter" means an 8.5in by 11in page. Any ISO page size in the range "a0"..."a4" or ANSI page size in the range "a"..."e" may be specified ("letter" is an alias for "a" and "tabloid" is an alias for "b"). "legal", "ledger", and "b5" are recognized page sizes also. The environment variable `PAGESIZE' can equally well be used to specify the page size. For `graph -T ai', `graph -T ps', `graph -T pcl', and `graph -T fig', the graphics display (or `viewport') within which the plot is drawn will be, by default, a square region centered on the specified page. For `graph -T hpgl', it will be a square region of the same size, but may be positioned differently. Either or both of the dimensions of the graphics display can be specified explicitly. For example, PAGESIZE could be specified as "letter,xsize=4in", or "a4,xsize=10cm,ysize=15cm". The dimensions are allowed to be negative (a negative dimension results in a reflection). The position of the graphics display, relative to its default position, may optionally be adjusted by specifying an offset vector. For example, PAGESIZE could be specified as "letter,yoffset=1.2in", or "a4,xoffset=-5mm,yoffset=2.0cm". It is also possible to position the graphics display precisely, by specifying the location of its lower left corner relative to the lower left corner of the page. For example, PAGESIZE could be specified as "letter,xorigin=2in,yorigin=3in", or "a4,xorigin=0.5cm,yorigin=0.5cm". The preceding options may be intermingled. `graph -T svg' and `graph -T cgm' ignore the "xoffset", "yoffset", "xorigin", and "yorigin" options, since SVG format and WebCGM format have no notion of the Web page on which the graphics display will ultimately be positioned. However, they do respect the "xsize" and "ysize" options. For more on page sizes, see *Note Page and Viewport Sizes::. `--pen-colors COLORS' (String, default "1=red:2=green:3=blue:4=magenta:5=cyan".) Set the colors of the pens used for drawing plots, as numbered, to be COLORS. The format should be self-explanatory. An unrecognized name sets the corresponding color to the default. For information on what names are recognized, see *Note Color Names::. `--rotation ANGLE' (Integer, default 0.) Set the rotation angle of the graphics display to be ANGLE degrees. The rotation is counterclockwise. The environment variable `ROTATION' can equally well be used to specify the rotation angle. This option is used for switching between portrait and landscape orientations, which have rotation angles 0 and 90 degrees respectively. Postmodernists may also find it useful. `--title-font-name FONT_NAME' (String, default "Helvetica" except for `graph -T pcl', for which "Univers" is the default, and `graph -T png', `graph -T pnm', `graph -T gif', `graph -T hpgl', `graph -T regis', and `graph -T tek', for all of which "HersheySerif" is the default.) Set the font used for the plot title to be FONT_NAME. Normally the font used for the plot title is the same as that used for labeling the axes and the ticks along the axes, as specified by the `-F' option. But the `--title-font-name' option can be used to override this. Font names are case-insensitive. If the specified font is not available, the default font will be used. Which fonts are available depends on which `-T' option is used. For a list of all fonts, see *Note Text Fonts::. The `plotfont' utility will produce a character map of any available font. *Note plotfont::. `--title-font-size SIZE' (Float, default 0.07.) Set the size of the font used for the top label (`title'), as specified by the `-L' option, to be SIZE. The size is specified as a fraction of the minimum dimension (width or height) of the plotting box.  File: plotutils.info, Node: Dataset Options, Next: Multiplot Options, Prev: Plot Options, Up: graph Invocation 2.6.2 Dataset options --------------------- The following options affect the way in which individual datasets are read from files, and drawn as part of a plot. They should appear on the command line before the file containing the datasets whose reading or rendering they will affect. They may appear more than once on a command line, if more than one file is to be read. The following three options affect the way in which datasets are read from files. `-I DATA-FORMAT' `--input-format DATA-FORMAT' This specifies which format the subsequent input file(s) are in. `a' ASCII format. Each input file is a sequence of floating point numbers, interpreted as the x and y coordinates of the successive data points in a dataset. The x and y coordinates of a point need not appear on the same line, and points need not appear on different lines. But if a blank line occurs (i.e., two newlines in succession are seen), it is interpreted as the end of a dataset, and the beginning of the next. `e' ASCII format, including error bars. Similar to `a' format, except that triples (x,y,error) appear instead of pairs (x,y). `g' The ASCII `table' format produced by the `gnuplot' plotting program. `f' Single precision binary format. Each input file is a sequence of single precision floating point numbers, interpreted as forming pairs (x,y). Successive datasets are separated by a single occurrence of the quantity `FLT_MAX', which is the largest possible single precision floating point number. On most machines this is approximately 3.4x10^38. `d' Double precision binary format. Each input file is a sequence of double precision floating point numbers, interpreted as forming pairs (x,y). Successive datasets are separated by a single occurrence of the quantity `DBL_MAX', which is the largest possible double precision floating point number. On most machines this is approximately 1.8x10^308. `i' Integer binary format. Each input file is a sequence of integers, interpreted as forming pairs (x,y). Successive datasets are separated by a single occurrence of the quantity `INT_MAX', which is the largest possible integer. On most machines this is 2^31-1. `-a [STEP_SIZE [LOWER_LIMIT]]' `--auto-abscissa [STEP_SIZE [LOWER_LIMIT]]' (Floats, defaults 1.0 and 0.0.) Automatically generate abscissa (x) values. Irrespective of data format (`a', `e', `f', `d', or `i'), this option specifies that the abscissa (x) values are missing from the input file: the dataset(s) to be read contain only ordinate (y) values. The increment from each x value to the next will be STEP_SIZE, and the first x value will be LOWER_LIMIT. To return to reading abscissa values from the input, i.e., for subsequent input files, you would use `-a 0', which disables automatic generation of the abscissa values and returns STEP_SIZE and LOWER_LIMIT to their default values. `-B' `--toggle-auto-bump' By default, the linemode (set with `-m', see below) is `bumped' (incremented by unity) at the beginning of each new dataset. This option toggles auto-bumping: it turns it off if it was on, and on if it was off. The following options affect the way in which individual datasets are drawn as part of a plot. These options set the six `attributes' (symbol type, symbol font, linemode, line thickness, fill fraction, and color/monochrome) that each dataset has. `-m LINE_MODE' `--line-mode LINE_MODE' (Integer, default 1.) LINE_MODE specifies the mode (i.e., style) of the lines drawn between successive points in a dataset. By convention, linemode #0 means no line at all (data points are disconnected). If the dataset is being rendered in monochrome, the interpretation of LINE_MODE is as follows. 1. solid 2. dotted 3. dotdashed 4. shortdashed 5. longdashed Thereafter (i.e., for LINE_MODE greater than 5) the sequence of five linemodes repeats. So besides linemode #0, there are a total of five distinct monochrome linemodes. If the dataset is being rendered in color (as may be requested with the `-C' option), the interpretation of linemodes #1 through #5 is instead 1. red, solid 2. green, solid 3. blue, solid 4. magenta, solid 5. cyan, solid Linemodes #6 through #10 use the same five colors, but are dotted; linemodes #11 through #15 are dotdashed; linemodes #16 through #20 are shortdashed; and linemodes #21 through #25 are longdashed. So besides linemode #0, there are a total of 25 distinct colored linemodes. A negative linemode indicates that no line should be drawn, but that the marker symbol, if any (see below), should be in the color of the corresponding positive linemode. `-S [SYMBOL_NUMBER [SYMBOL_SIZE]]' `--symbol [SYMBOL_NUMBER [SYMBOL_SIZE]]' (Integer and float, defaults 0 and 0.03.) Draw a marker symbol at each data point. SYMBOL_NUMBER specifies the symbol type, and SYMBOL_SIZE specifies the font size of the symbol, as a fraction of the minimum dimension (width or height) of the plotting box. If the dataset is being rendered in color, the symbol will have the color of the line that is being drawn to connect the data points. If you use the `-S' option, you would usually also use the `-m' option, to request that the symbols be drawn without any line connecting them. By specifying a negative argument to `-m' (a `negative linemode'), you may obtain colored symbols. The following table lists the first few symbols (by convention, symbol #0 means no symbol at all). 1. dot 2. plus (+) 3. asterisk (*) 4. circle 5. cross Marker symbols 0...31 are furnished by the GNU `libplot' graphics library. *Note Marker Symbols::. Symbol numbers greater than or equal to 32 are interpreted as characters in a symbol font, which can be set with the `--symbol-font-name' option (see below). `-W LINE_WIDTH' `--line-width LINE_WIDTH' (Float, default -1.0.) Set the thickness of the lines used to join successive points in a dataset, as a fraction of the size (i.e., minimum dimension) of the graphics display, to LINE_WIDTH. A negative value means that the default value for the line thickness provided by the GNU `libplot' graphics library should be used. This is usually 1/850 times the size of the display, although if `-T X', `-T png', `-T pnm', or `-T gif' is specified, it is zero. By convention, a zero-thickness line is the thinnest line that can be drawn. This is the case in all output formats. Note, however, that the drawing editors `idraw' and `xfig' treat zero-thickness lines as invisible. `graph -T tek' and `graph -T regis' do not support drawing lines with other than a default thickness, and `graph -T hpgl' does not support doing so if the environment variable `HPGL_VERSION' is set to a value less than "2" (the default). `-q FILL_FRACTION' `--fill-fraction FILL_FRACTION' (Float, default -1.0.) If successive points in a dataset are joined by line segments, set the shading intensity for the polygon formed by the line segments to be FILL_FRACTION. A solid polygon (i.e., one filled with the `pen color' used for drawing the line segments) is obtained by choosing FILL_FRACTION=1.0. The interior of the polygon will be white if FILL_FRACTION=0.0. The polygon will be unfilled (transparent) if FILL_FRACTION is negative. If the polygon intersects itself, the `even-odd fill rule' will normally be used to determine which points are inside rather than outside, i.e., to determine which portions of the polygon should be shaded. The even-odd fill rule is explained in the `Postscript Language Reference Manual'. The `-q' option has no effect on `graph -T tek', and it is only partly effective in `graph -T hpgl' if the environment variable `HPGL_VERSION' is set to a value less than "2" (the default). `-C' `--toggle-use-color' Toggle between color and monochrome rendering of datasets. The interpretation of linemode depends on whether the rendering is being performed in color or monochrome; see the `-m' option above. `--symbol-font-name SYMBOL_FONT_NAME' (String, default "ZapfDingbats" unless `-T png', `-T pnm', `-T gif', `-T pcl', `-T hpgl', `-T regis', or `-T tek' is specified, in which case it is "HersheySerif".) Set the symbol font, from which marker symbols numbered 32 and higher are selected, to be SYMBOL_FONT_NAME. Font names are case-insensitive. If the specified font is not available, the default font will be used. Which fonts are available depends on which `-T' option is used. For example, if the `-T pcl' or `-T hpgl' option is used then normally the Wingdings font, which is an alternative source of symbols, becomes available. For a list of all fonts, see *Note Text Fonts::. The `plotfont' utility will produce a character map of any available font. *Note plotfont::.  File: plotutils.info, Node: Multiplot Options, Next: Raw graph Options, Prev: Dataset Options, Up: graph Invocation 2.6.3 Multiplot options ----------------------- The following options are used for multiplotting (placing more than a single plots on a display, or a page). The `--reposition' directive serves as a separator, on the command line, between the options and file names that apply to successive plots. `--reposition X Y SIZE' (Floats, defaults 0.0, 0.0, 1.0) Set the `virtual display' within which the next plot will be drawn to be a square of size SIZE, with lower left corner (X,Y). Normalized coordinates are used here: (0,0) means the lower left corner of the physical display and (1,1) means the upper right corner of the physical display. The size of the plot within the virtual display may be adjusted with the `-h' and `-w' options, and its position within the virtual display with the `-u' and `-w' options. After a `--reposition' directive, the arguments of those four options will be interpreted in terms of the virtual display, not the physical display. `--blankout BLANKOUT_FRACTION' (Float, default 1.3.) Before each additional plot of a multiplot is drawn, the region of the display that the plot will occupy is cleared. If BLANKOUT_FRACTION=1.3, a region 30% larger in each dimension is cleared. If, for example, BLANKOUT_FRACTION=1.0, the region covered by the plot's plotting box, and no more, is cleared. The default value, 1.3, is appropriate for inset plots. 1.0 would be appropriate for side by side plots. `graph -T tek' cannot clear regions, and `graph -T hpgl' cannot clear them if the environment variables `HPGL_VERSION' and `HPGL_OPAQUE_MODE' are set to non-default values (i.e., values other than "2" and "yes", respectively).  File: plotutils.info, Node: Raw graph Options, Next: Info Options, Prev: Multiplot Options, Up: graph Invocation 2.6.4 Raw `graph' options ------------------------- The following option is relevant only to raw `graph', i.e., is relevant only if no output format is specified with the `-T' option. In this case `graph' outputs a graphics metafile, which may be translated to other formats by invoking `plot'. This option should appear on the command line before any file names, since it affects the output of the plot (or multiplot) as a whole. `-O' `--portable-output' Output the portable (human-readable) version of GNU metafile format, rather than a binary version (the default). This can also be requested by setting the environment variable `META_PORTABLE' to "yes".  File: plotutils.info, Node: Info Options, Next: graph Environment, Prev: Raw graph Options, Up: graph Invocation 2.6.5 Informational options --------------------------- The following options request information. `--help' Print a list of command-line options, and then exit. `--help-fonts' Print a table of available fonts, and then exit. The table will depend on which output format is specified with the `-T' option. `graph -T X', `graph -T svg', `graph -T ai', `graph -T ps', `graph -T cgm', and `graph -T fig' each support the 35 standard Postscript fonts. `graph -T svg', `graph -T ai', `graph -T pcl', and `graph -T hpgl' support the 45 standard PCL 5 fonts, and `graph -T pcl' and `graph -T hpgl' support a number of Hewlett-Packard vector fonts. All of the preceding, together with `graph -T png', `graph -T pnm', `graph -T gif', `graph -T regis', and `graph -T tek', support a set of 22 Hershey vector fonts. Raw `graph' in principle supports any of these fonts, since its output must be translated to other formats with `plot'. The `plotfont' utility will produce a character map of any available font. *Note plotfont::. `--list-fonts' Like `--help-fonts', but lists the fonts in a single column to facilitate piping to other programs. If no output format is specified with the `-T' option, the full set of supported fonts is listed. `--version' Print the version number of `graph' and the plotting utilities package, and exit.  File: plotutils.info, Node: graph Environment, Prev: Info Options, Up: graph Invocation 2.7 Environment variables ========================= The behavior of `graph' is affected by several environment variables. We have already mentioned the environment variables `BITMAPSIZE', `PAGESIZE', `BG_COLOR', `EMULATE_COLOR', `MAX_LINE_LENGTH', and `ROTATION'. They serve as backups for the several options `--bitmap-size', `--page-size', `--bg-color', `--emulate-color', `--max-line-length', and `--rotation'. The remaining environment variables are specific to individual output formats. `graph -T X', which pops up a window on an X Window System display and draws graphics in it, checks the `DISPLAY' environment variable. The value of this variable determines the display on which the window will be popped up. `graph -T png' and `graph -T gif', which produce output in PNG and pseudo-GIF format respectively, are affected by two environment variables. If the value of the `INTERLACE' variable is "yes", the output file will be interlaced. Also, if the value of the `TRANSPARENT_COLOR' environment variable is the name of a color that appears in the output file, that color will be treated as transparent by most applications. For information on what color names are recognized, see *Note Color Names::. `graph -T pnm', which produces output in Portable Anymap (PBM/PGM/PPM) format, is affected by the `PNM_PORTABLE' environment variable. If its value is "yes", the output file will be in the portable (human readable) version of PBM, PGM, or PPM format, rather than the default (binary) version. `graph -T cgm', which produces CGM files that comply with the WebCGM profile for Web-based vector graphics, is affected by two environment variables. By default, a version 3 CGM file is generated. Many older CGM interpreters and viewers, such as the ones built into Microsoft Office and other commercial software, only support version 1 CGM files. The `CGM_MAX_VERSION' environment variable may be set to "1", "2", "3", or "4" (the default) to specify an maximum value for the version number. The `CGM_ENCODING' variable may also be set, to specify the type of encoding used in the CGM file. Supported values are "clear_text" (i.e., human readable) and "binary" (the default). The WebCGM profile requires that the binary encoding be used. `graph -T pcl', which produces PCL 5 output for Hewlett-Packard printers, is affected by the environment variable `PCL_ASSIGN_COLORS'. It should be set to "yes" when producing PCL 5 output for a color printer or other color device. This will ensure accurate color reproduction by giving the output device complete freedom in assigning colors, internally, to its "logical pens". If it is "no" then the device will use a fixed set of colored pens, and will emulate other colors by shading. The default is "no" because monochrome PCL 5 devices, which are more common than colored ones, must use shading to emulate color. `graph -T hpgl', which produces Hewlett-Packard Graphics Language output, is also affected by several environment variables. The most important is `HPGL_VERSION', which may be set to "1", "1.5", or "2" (the default). "1" means that the output should be generic HP-GL, "1.5" means that the output should be suitable for the HP7550A graphics plotter and the HP758x, HP7595A and HP7596A drafting plotters (HP-GL with some HP-GL/2 extensions), and "2" means that the output should be modern HP-GL/2. If the version is "1" or "1.5" then the only available fonts will be vector fonts, and all lines will be drawn with a default thickness (the `-W' option will not work). Additionally, if the version is "1" then the filling of arbitrary curves with solid color will not be supported (the `-q' option may be used to fill circles and rectangles aligned with the coordinate axes, though). The position of the `graph -T hpgl' graphics display on the page can be rotated 90 degrees counterclockwise by setting the `HPGL_ROTATE' environment variable to "yes". This is not the same as the rotation obtained with the `--rotation' option, since it both rotates the graphics display and repositions its lower left corner toward another corner of the page. Besides "no" and "yes", recognized values for the `HPGL_ROTATE' variable are "0", "90", "180", and "270". "no" and "yes" are equivalent to "0" and "90", respectively. "180" and "270" are supported only if `HPGL_VERSION' is "2" (the default). _Opaque_ filling and the drawing of visible white lines are supported only if `HPGL_VERSION' is "2" (the default) and the environment variable `HPGL_OPAQUE_MODE' is "yes" (the default). If the value is "no" then opaque filling will not be used, and white lines (if any), which are normally drawn with pen #0, will not be drawn. This feature is to accommodate older HP-GL/2 devices. HP-GL/2 pen plotters, for example, do not support opacity or the use of pen #0 to draw visible white lines. Some older HP-GL/2 devices reportedly malfunction if asked to draw opaque objects. By default, `graph -T hpgl' will draw with a fixed set of pens. Which pens are present may be specified by setting the `HPGL_PENS' environment variable. If `HPGL_VERSION' is "1", the default value of `HPGL_PENS' is "1=black"; if `HPGL_VERSION' is "1.5" or "2", the default value of `HPGL_PENS' is "1=black:2=red:3=green:4=yellow:5=blue:6=magenta:7=cyan". The format should be self-explanatory. By setting `HPGL_PENS', you may specify a color for any pen in the range #1...#31. For information on what color names are recognized, see *Note Color Names::. Pen #1 must always be present, though it need not be black. Any pen in the range #2...#31 may be omitted. If `HPGL_VERSION' is "2" then `graph -T hpgl' will also be affected by the environment variable `HPGL_ASSIGN_COLORS'. If the value of this variable is "yes", then `graph -T hpgl' will not be restricted to the palette specified in `HPGL_PENS': it will assign colors to "logical pens" in the range #1...#31, as needed. The default value is "no" because other than color LaserJet printers and DesignJet plotters, not many HP-GL/2 devices allow the assignment of colors to logical pens. In particular, HP-GL/2 pen plotters do not. `graph -T tek', which produces output for a Tektronix terminal or emulator, checks the `TERM' environment variable. If the value of `TERM' is a string beginning with "xterm", "nxterm", or "kterm", it is taken as a sign that `graph' is running in an X Window System VT100 terminal emulator: an `xterm', `nxterm', or `kterm'. Before drawing graphics, `graph -T tek' will emit an escape sequence that causes the terminal emulator's auxiliary Tektronix window, which is normally hidden, to pop up. After the graphics are drawn, an escape sequence that returns control to the original VT100 window will be emitted. The Tektronix window will remain on the screen. If the value of `TERM' is a string beginning with "kermit", "ansi.sys", or "nansi.sys", it is taken as a sign that `graph' is running in the VT100 terminal emulator provided by the MS-DOS version of `kermit'. Before drawing graphics, `graph -T tek' will emit an escape sequence that switches the terminal emulator to Tektronix mode. Also, some of the Tektronix control codes emitted by `graph -T tek' will be `kermit'-specific. There will be a limited amount of color support, which is not normally the case (the 16 `ansi.sys' colors will be supported). After drawing graphics, `graph -T tek' will emit an escape sequence that returns the emulator to VT100 mode. The key sequence `ALT minus' can be employed manually within `kermit' to switch between the two modes.  File: plotutils.info, Node: plot, Next: pic2plot, Prev: graph, Up: Top 3 The `plot' Program ******************** * Menu: * plot Examples:: How to use a plot filter * plot Invocation:: Command-line options * plot Environment:: Environment variables  File: plotutils.info, Node: plot Examples, Next: plot Invocation, Prev: plot, Up: plot 3.1 How to use `plot' ===================== The GNU plot filter `plot' displays GNU graphics metafiles or translates them to other formats. It will take input from files specified on the command line or from standard input. The `-T' option is used to specify the desired output format. Supported output formats include "X", "png", "pnm", "gif", "svg", "ai", "ps", "cgm", "fig", "pcl", "hpgl", "regis", "tek", and "meta" (the default). The metafile format is a device-independent format for storage of vector graphics. By default, it is a binary rather than a human-readable format (*note Metafiles::). Each of the `graph', `pic2plot', `tek2plot', and `plotfont' utilities will write a graphics metafile to standard output if no `-T' option is specified on its command line. The GNU `libplot' graphics library may also be used to produce metafiles. Metafiles may contain arbitrarily many pages of graphics, but each metafile produced by `graph' contains only a single page. `plot', like the metafile format itself, is useful if you wish to preserve a vector graphics file, and display or edit it with more than one drawing editor. The following example shows how you may do this. To produce a plot of data arranged as alternating x and y coordinates in an ASCII file, you may use `graph' as follows: graph < datafile > test.meta The file `test.meta' will be a single-page graphics metafile. Similarly, to create in metafile format a plot consisting of a simple figure, you may do: echo 0 0 1 1 2 0 | spline | graph > test.meta To display any such plot on an X Window System display, you would do plot -T X test.meta or plot -T X < test.meta To print the plot on a Postscript printer, you would do something like plot -T ps < test.meta | lpr To edit it with the free `idraw' drawing editor, you would do plot -T ps < test.meta > test.ps idraw test.ps To produce a PNG file, you would do plot -T png < test.meta > test.png To produce a "portable anymap" (a file in PBM, PGM, or PPM format, whichever is most appropriate) you would do plot -T pnm < test.meta > test.pnm and to produce a pseudo-GIF file, you would do plot -T gif < test.meta > test.gif Similarly, to produce versions of the plot in SVG format and WebCGM format that can be displayed in a Web browser with SVG and WebCGM support, you would do plot -T svg < test.meta > test.svg plot -T cgm < test.meta > test.cgm To produce a version of the plot that can be viewed and edited with Adobe Illustrator, you would do plot -T ai < test.meta > test.ai and to produce a version that can be viewed and edited with the free `xfig' drawing editor, you would do plot -T fig < test.meta > test.fig xfig test.fig Other formats may be obtained by using `plot -T pcl', `plot -T hpgl', `plot -T regis', and `plot -T tek'. `plot' may behave differently depending on the environment in which it is invoked. In particular, `plot -T svg', `plot -T ai', `plot -T ps', `plot -T cgm', `plot -T fig', `plot -T pcl', and `plot -T hpgl' are affected by the environment variable `PAGESIZE'. `plot -T X', `plot -T png', `plot -T pnm', and `plot -T gif' are affected by the environment variable `BITMAPSIZE'. The `DISPLAY' environment variable affects the operation of `plot -T X', and the `TERM' environment variable affects the operation of `plot -T tek'. There are also several environment variables that affect the operation of `plot -T pcl' and `plot -T hpgl'. For a complete discussion of the effects of the environment on `plot', see *Note plot Environment::.  File: plotutils.info, Node: plot Invocation, Next: plot Environment, Prev: plot Examples, Up: plot 3.2 `plot' command-line options =============================== The plot filter `plot' translates GNU graphics metafiles to other formats. The `-T' option is used to specify the output format. Files in metafile format are produced by GNU `graph', `pic2plot', `tek2plot', `plotfont', and other applications that use the GNU `libplot' graphics library. For technical details on the metafile format, see *Note Metafiles::. Input file names may be specified anywhere on the command line. That is, the relative order of file names and command-line options does not matter. If no files are specified, or the file name `-' is specified, the standard input is read. An output file is written to standard output, unless the `-T X' option is specified. In that case the output is displayed in a window or windows on an X Window System display, and there is no output file. The full set of command-line options is listed below. There are four sorts of option: 1. Options setting the values of drawing parameters. 2. Options relevant only to raw `plot', i.e., relevant only if no output format is specified with the `-T' option. 3. Options specifying the type of metafile format the input is in (for backward compatibility only). 4. Options requesting information (e.g., `--help'). Each option that takes an argument is followed, in parentheses, by the type and default value of the argument. The following options set the values of drawing parameters. `-T TYPE' `--output-format TYPE' (String, default "meta".) Select an output format of type TYPE, which may be one of the strings "X", "png", "pnm", "gif", "svg", "ai", "ps", "cgm", "fig", "pcl", "hpgl", "regis", "tek", and "meta". These refer respectively to the X Window System, PNG format, portable anymap (PBM/PGM/PPM) format, pseudo-GIF format, the XML-based Scalable Vector Graphics format, the format used by Adobe Illustrator, `idraw'-editable Postscript, the WebCGM format for Web-based vector graphics, the format used by the `xfig' drawing editor, the Hewlett-Packard PCL 5 printer language, the Hewlett-Packard Graphics Language (by default, HP-GL/2), the ReGIS (remote graphics instruction set) format developed by DEC, Tektronix format, and device-independent GNU graphics metafile format. The option `--display-type' is an obsolete alternative to `--output-format'. `-p N' `--page-number N' (Positive integer.) Display only page number N, within the metafile or sequence of metafiles that is being translated. Metafiles may consist of one or more pages, numbered beginning with 1. Also, each page may contain multiple `frames'. `plot -T X', `plot -T regis', or `plot -T tek', which plot in real time, will separate successive frames by screen erasures. `plot -T png', `plot -T pnm', `plot -T gif', `plot -T svg', `plot -T ai', `plot -T ps', `plot -T cgm', `plot -T fig', `plot -T pcl', `plot -T hpgl', which do not plot in real time, will display only the last frame of any multi-frame page. The default behavior, if `-p' is not used, is to display all pages. For example, `plot -T X' displays each page in its own X window. If the `-T png' option, the `-T pnm' option, the `-T gif' option, the `-T svg' option, the `-T ai' option, or the `-T fig' option is used, the default behavior is to display only the first page, since files in PNG, PNM, pseudo-GIF, SVG, AI, or Fig format may contain only a single page of graphics. Most metafiles produced by the GNU plotting utilities (e.g., by raw `graph') contain only a single page, consisting of two frames: an empty one to clear the display, and a second one containing graphics. `-s' `--merge-pages' Merge all displayed pages into a single page, and also merge all `frames' within each displayed page. This option is useful when merging together single-page plots from different sources. For example, it can be used to merge together plots obtained from separate invocations of `graph'. This is an alternative form of multiplotting (*note Multiplotting::). `--bitmap-size BITMAP_SIZE' (String, default "570x570".) Set the size of the graphics display in which the plot will be drawn, in terms of pixels, to be BITMAP_SIZE. This is relevant only to `plot -T X', `plot -T png', `plot -T pnm', and `plot -T gif', for all of which the size can be expressed in terms of pixels. The environment variable `BITMAPSIZE' may equally well be used to specify the size. The graphics display used by `plot -T X' is a popped-up X window. Command-line positioning of this window on an X Window System display is supported. For example, if BITMAP_SIZE is "570x570+0+0" then the window will be popped up in the upper left corner. If you choose a rectangular (non-square) window size, the fonts in the plot will be scaled anisotropically, i.e., by different factors in the horizontal and vertical direction. Any font that cannot be anisotropically scaled will be replaced by a default scalable font, such as the Hershey vector font "HersheySerif". For backward compatibility, `plot -T X' allows the user to set the window size and position by setting the X resource `Xplot.geometry', instead of `--bitmap-size' or `BITMAPSIZE'. `--emulate-color OPTION' (String, default "no".) If OPTION is "yes", replace each color in the output by an appropriate shade of gray. This is seldom useful, except when using `plot -T pcl' to prepare output for a PCL 5 device. (Many monochrome PCL 5 devices, such as monochrome LaserJets, do a poor job of emulating color on their own. They usually map HP-GL/2's seven standard pen colors, including even yellow, to black.) You may equally well request color emulation by setting the environment variable `EMULATE_COLOR' to "yes". `--max-line-length MAX_LINE_LENGTH' (Integer, default 500.) Set the maximum number of points that a polygonal line may contain, before it is flushed to the output device, to equal MAX_LINE_LENGTH. If this flushing occurs, the polygonal line will be split into two or more sub-lines, though the splitting should not be noticeable. Splitting will not take place if the line is the boundary of a filled polygon. The reason for splitting long polygonal lines is that some display devices (e.g., old Postscript printers and HP-GL pen plotters) have limited buffer sizes. The environment variable `MAX_LINE_LENGTH' can also be used to specify the maximum line length. This option has no effect on `plot -T tek' or raw `plot', since they draw polylines in real time and have no buffer limitations. `--page-size PAGESIZE' (String, default "letter".) Set the size of the page on which the plot will be positioned. This is relevant only to `plot -T svg', `plot -T ai', `plot -T ps', `plot -T cgm', `plot -T fig', `plot -T pcl', and `plot -T hpgl'. "letter" means an 8.5in by 11in page. Any ISO page size in the range "a0"..."a4" or ANSI page size in the range "a"..."e" may be specified ("letter" is an alias for "a" and "tabloid" is an alias for "b"). "legal", "ledger", and "b5" are recognized page sizes also. The environment variable `PAGESIZE' can equally well be used to specify the page size. For `plot -T ai', `plot -T ps', `plot -T pcl', and `plot -T fig', the graphics display (or `viewport') within which the plot is drawn will be, by default, a square region centered on the specified page. For `plot -T hpgl', it will be a square region of the same size, but may be positioned differently. Either or both of the dimensions of the graphics display can be specified explicitly. For example, PAGESIZE could be specified as "letter,xsize=4in", or "a4,xsize=10cm,ysize=15cm". The dimensions are allowed to be negative (a negative dimension results in a reflection). The position of the graphics display, relative to its default position, may optionally be adjusted by specifying an offset vector. For example, PAGESIZE could be specified as "letter,yoffset=1.2in", or "a4,xoffset=-5mm,yoffset=2.0cm". It is also possible to position the graphics display precisely, by specifying the location of its lower left corner relative to the lower left corner of the page. For example, PAGESIZE could be specified as "letter,xorigin=2in,yorigin=3in", or "a4,xorigin=0.5cm,yorigin=0.5cm". The preceding options may be intermingled. `plot -T svg' and `plot -T cgm' ignore the "xoffset", "yoffset", "xorigin", and "yorigin" options, since SVG format and WebCGM format have no notion of the Web page on which the graphics display will ultimately be positioned. However, they do respect the "xsize" and "ysize" options. For more on page sizes, see *Note Page and Viewport Sizes::. The following options set the initial values of additional drawing parameters. Any of these may be overridden by a directive in the metafile itself. In fact, these options are useful only when plotting old metafiles in the pre-GNU `plot(5)' format, which did not include such directives. `--bg-color NAME' (String, default "white".) Set the color used for the plot background to be NAME. This is relevant only to `plot -T X', `plot -T png', `plot -T pnm', `plot -T gif', `plot -T cgm', `plot -T regis', and `plot -Tmeta'. An unrecognized name sets the color to the default. For information on what names are recognized, see *Note Color Names::. The environment variable `BG_COLOR' can equally well be used to specify the background color. If the `-T png' or `-T gif' option is used, a transparent PNG file or a transparent pseudo-GIF, respectively, may be produced by setting the `TRANSPARENT_COLOR' environment variable to the name of the background color. *Note plot Environment::. If the `-T svg' or `-T cgm' option is used, an output file without a background may be produced by setting the background color to "none". `-f FONT_SIZE' `--font-size FONT_SIZE' (Float, initial value device-dependent.) Set the initial size of the font used for rendering text, as a fraction of the width of the graphics display, to FONT_SIZE. `-F FONT_NAME' `--font-name FONT_NAME' (String, default "Helvetica" except for `plot -T pcl', for which "Univers" is the default, and `plot -T png', `plot -T pnm', `plot -T gif', `plot -T hpgl', `plot -T regis', `plot -T tek', and raw `plot', for all of which "HersheySerif" is the default.) Set the font initially used for text (i.e., for `labels') to FONT_NAME. Font names are case-insensitive. If the specified font is not available, the default font will be used. Which fonts are available depends on which `-T' option is used. For a list of all fonts, see *Note Text Fonts::. The `plotfont' utility will produce a character map of any available font. *Note plotfont::. `-W LINE_WIDTH' `--line-width LINE_WIDTH' (Float, default -1.0.) Set the thickness of lines, as a fraction of the size (i.e., minimum dimension) of the graphics display, to LINE_WIDTH. A negative value means that the default value provided by the GNU `libplot' graphics library should be used. This is usually 1/850 times the size of the display, although if `-T X', `-T png', `-T pnm', or `-T gif' is specified, it is zero. By convention, a zero-thickness line is the thinnest line that can be drawn. This is the case in all output formats. Note, however, that the drawing editors `idraw' and `xfig' treat zero-thickness lines as invisible. `plot -T tek' and `plot -T regis' do not support drawing lines with other than a default thickness, and `plot -T hpgl' does not support doing so if the environment variable `HPGL_VERSION' is set to a value less than "2" (the default). `--pen-color NAME' (String, default "black".) Set the pen color to be NAME. An unrecognized name sets the pen color to the default. For information on what color names are recognized, see *Note Color Names::. The following option is relevant only to raw `plot', i.e., relevant only if no output type is specified with the `-T' option. In this case `plot' outputs a graphics metafile, which may be translated to other formats by a second invocation of `plot'. `-O' `--portable-output' Output the portable (human-readable) version of GNU metafile format, rather than a binary version (the default). This can also be requested by setting the environment variable `META_PORTABLE' to "yes". `plot' will automatically determine which type of GNU metafile format the input is in. There are two types: binary (the default) and portable (human-readable). The binary format is machine-dependent. *Note Metafiles::. For compatibility with older plotting software, the reading of input files in the pre-GNU `plot(5)' format is also supported. This is normally a binary format, with each integer in the metafile represented as a pair of bytes. The order of the two bytes is machine dependent. You may specify that input file(s) are in plot(5) format rather than ordinary GNU metafile format by using either the `-h' option ("high byte first") or the `-l' option ("low byte first"), whichever is appropriate. Some non-GNU systems support an ASCII (human-readable) variant of plot(5) format. You may specify that the input is in this format by using the `-A' option. Irrespective of the variant, a file in plot(5) format includes only one page of graphics. `-h' `--high-byte-first-input' Input file(s) are assumed to be in traditional `plot(5)' metafile format, with the high-order byte of each integer occurring first. This variant is uncommon. `-l' `--low-byte-first-input' Input file(s) are assumed to be in traditional `plot(5)' metafile format, with the low-order byte of each integer occurring first. This variant is the most common. `-A' `--ascii-input' Input file(s) are assumed to be in the ASCII variant of traditional `plot(5)' metafile format. This variant is rare: on some older systems, it is produced by a program called `plottoa'. The following options request information. `--help' Print a list of command-line options, and then exit. `--help-fonts' Print a table of available fonts, and then exit. The table will depend on which output format is specified with the `-T' option. `plot -T X', `plot -T svg', `plot -T ai', `plot -T ps', `plot -T cgm', and `plot -T fig' each support the 35 standard Postscript fonts. `plot -T svg', `plot -T ai', `plot -T pcl', and `plot -T hpgl' support the 45 standard PCL 5 fonts, and `plot -T pcl' and `plot -T hpgl' support a number of Hewlett-Packard vector fonts. All of the preceding, together with `plot -T png', `plot -T pnm', `plot -T gif', `plot -T regis', and `plot -T tek', support a set of 22 Hershey vector fonts. Raw `plot' in principle supports any of these fonts, since its output must be translated to other formats with `plot'. The `plotfont' utility will produce a character map of any available font. *Note plotfont::. `--list-fonts' Like `--help-fonts', but lists the fonts in a single column to facilitate piping to other programs. If no output format is specified with the `-T' option, the full set of supported fonts is listed. `--version' Print the version number of `plot' and the plotting utilities package, and exit.  File: plotutils.info, Node: plot Environment, Prev: plot Invocation, Up: plot 3.3 Environment variables ========================= The behavior of `plot' is affected by several environment variables. We have already mentioned the environment variables `BITMAPSIZE', `PAGESIZE', `BG_COLOR', `EMULATE_COLOR', `MAX_LINE_LENGTH', and `ROTATION'. They serve as backups for the several options `--bitmap-size', `--page-size', `--bg-color', `--emulate-color', `--max-line-length', and `--rotation'. The remaining environment variables are specific to individual output formats. `plot -T X', which pops up a window on an X Window System display and draws graphics in it, checks the `DISPLAY' environment variable. The value of this variable determines the display on which the window will be popped up. `plot -T png' and `plot -T gif', which produce output in PNG format and pseudo-GIF format respectively, are affected by two environment variables. If the value of the `INTERLACE' variable is "yes", the output file will be interlaced. Also, if the value of the `TRANSPARENT_COLOR' environment variable is the name of a color that appears in the output file, that color will be treated as transparent by most applications. For information on what color names are recognized, see *Note Color Names::. `plot -T pnm', which produces output in Portable Anymap (PBM/PGM/PPM) format, is affected by the `PNM_PORTABLE' environment variable. If its value is "yes", the output file will be in the portable (human readable) version of PBM, PGM, or PPM format, rather than the default (binary) version. `plot -T cgm', which produces CGM files that comply with the WebCGM profile for Web-based vector graphics, is affected by two environment variables. By default, a version 3 CGM file is generated. Many older CGM interpreters and viewers, such as the ones built into Microsoft Office and other commercial software, only support version 1 CGM files. The `CGM_MAX_VERSION' environment variable may be set to "1", "2", "3", or "4" (the default) to specify a maximum value for the version number. The `CGM_ENCODING' variable may also be set, to specify the type of encoding used in the CGM file. Supported values are "clear_text" (i.e., human readable) and "binary" (the default). The WebCGM profile requires that the binary encoding be used. `plot -T pcl', which produces PCL 5 output for Hewlett-Packard printers, is affected by the environment variable `PCL_ASSIGN_COLORS'. It should be set to "yes" when producing PCL 5 output for a color printer or other color device. This will ensure accurate color reproduction by giving the output device complete freedom in assigning colors, internally, to its "logical pens". If it is "no" then the device will use a fixed set of colored pens, and will emulate other colors by shading. The default is "no" because monochrome PCL 5 devices, which are more common than colored ones, must use shading to emulate color. `plot -T hpgl', which produces Hewlett-Packard Graphics Language output, is also affected by several environment variables. The most important is `HPGL_VERSION', which may be set to "1", "1.5", or "2" (the default). "1" means that the output should be generic HP-GL, "1.5" means that the output should be suitable for the HP7550A graphics plotter and the HP758x, HP7595A and HP7596A drafting plotters (HP-GL with some HP-GL/2 extensions), and "2" means that the output should be modern HP-GL/2. If the version is "1" or "1.5" then the only available fonts will be vector fonts, and all lines will be drawn with a default thickness (the `-W' option will not work). Additionally, if the version is "1" then the filling of arbitrary curves with solid color will not be supported (circles and rectangles aligned with the coordinate axes may be filled, though). The position of the `plot -T hpgl' graphics display on the page can be rotated 90 degrees counterclockwise by setting the `HPGL_ROTATE' environment variable to "yes". This is not the same as the rotation obtained with the `--rotation' option, since it both rotates the graphics display and repositions its lower left corner toward another corner of the page. Besides "no" and "yes", recognized values for the `HPGL_ROTATE' variable are "0", "90", "180", and "270". "no" and "yes" are equivalent to "0" and "90", respectively. "180" and "270" are supported only if `HPGL_VERSION' is "2" (the default). _Opaque_ filling and the drawing of visible white lines are supported only if `HPGL_VERSION' is "2" (the default) and the environment variable `HPGL_OPAQUE_MODE' is "yes" (the default). If the value is "no" then opaque filling will not be used, and white lines (if any), which are normally drawn with pen #0, will not be drawn. This feature is to accommodate older HP-GL/2 devices. HP-GL/2 pen plotters, for example, do not support opacity or the use of pen #0 to draw visible white lines. Some older HP-GL/2 devices reportedly malfunction if asked to draw opaque objects. By default, `plot -T hpgl' will draw with a fixed set of pens. Which pens are present may be specified by setting the `HPGL_PENS' environment variable. If `HPGL_VERSION' is "1", the default value of `HPGL_PENS' is "1=black"; if `HPGL_VERSION' is "1.5" or "2", the default value of `HPGL_PENS' is "1=black:2=red:3=green:4=yellow:5=blue:6=magenta:7=cyan". The format should be self-explanatory. By setting `HPGL_PENS', you may specify a color for any pen in the range #1...#31. For information on what color names are recognized, see *Note Color Names::. Pen #1 must always be present, though it need not be black. Any pen in the range #2...#31 may be omitted. If `HPGL_VERSION' is "2" then `plot -T hpgl' will also be affected by the environment variable `HPGL_ASSIGN_COLORS'. If the value of this variable is "yes", then `plot -T hpgl' will not be restricted to the palette specified in `HPGL_PENS': it will assign colors to "logical pens" in the range #1...#31, as needed. The default value is "no" because other than color LaserJet printers and DesignJet plotters, not many HP-GL/2 devices allow the assignment of colors to logical pens. In particular, HP-GL/2 pen plotters do not. `plot -T tek', which produces output for a Tektronix terminal or emulator, checks the `TERM' environment variable. If the value of `TERM' is a string beginning with "xterm", "nxterm", or "kterm", it is taken as a sign that `plot' is running in an X Window System VT100 terminal emulator: an `xterm', `nxterm', or `kterm'. Before drawing graphics, `plot -T tek' will emit an escape sequence that causes the terminal emulator's auxiliary Tektronix window, which is normally hidden, to pop up. After the graphics are drawn, an escape sequence that returns control to the original VT100 window will be emitted. The Tektronix window will remain on the screen. If the value of `TERM' is a string beginning with "kermit", "ansi.sys", or "nansi.sys", it is taken as a sign that `plot' is running in the VT100 terminal emulator provided by the MS-DOS version of `kermit'. Before drawing graphics, `plot -T tek' will emit an escape sequence that switches the terminal emulator to Tektronix mode. Also, some of the Tektronix control codes emitted by `plot -T tek' will be `kermit'-specific. There will be a limited amount of color support, which is not normally the case (the 16 `ansi.sys' colors will be supported). After drawing graphics, `plot -T tek' will emit an escape sequence that returns the emulator to VT100 mode. The key sequence `ALT minus' can be employed manually within `kermit' to switch between the two modes.  File: plotutils.info, Node: pic2plot, Next: tek2plot, Prev: plot, Up: Top 4 The `pic2plot' Program ************************ * Menu: * pic2plot Introduction:: What pic2plot is used for * pic2plot Invocation:: Command-line options * pic2plot Environment:: Environment variables  File: plotutils.info, Node: pic2plot Introduction, Next: pic2plot Invocation, Prev: pic2plot, Up: pic2plot 4.1 What `pic2plot' is used for =============================== The `pic2plot' program takes one or more files in the pic language, and either displays the figures that they contain on an X Window System display, or produces an output file containing the figures. Many graphics file formats are supported. The pic language is a `little language' that was developed at Bell Laboratories for creating box-and-arrow diagrams of the kind frequently found in technical papers and textbooks. A directory containing documentation on the pic language is distributed along with the plotting utilities. On most systems it is installed as `/usr/share/pic2plot' or `/usr/local/share/pic2plot'. The directory includes Brian Kernighan's original technical report on the language, Eric S. Raymond's tutorial on the GNU implementation, and some sample pic macros contributed by the late W. Richard Stevens. The pic language was originally designed to work with the `troff' document formatter. In that context it is read by a translator called `pic', or its GNU counterpart `gpic'. Since extensive documentation on `pic' and `gpic' is available, this section simply gives an example of an input file, and mentions some extra features supported by `pic2plot'. A pic file contains one or more figures, each of the box-and-arrow type. Each figure is begun by a line reading .PS, and ended by a line reading .PE. Lines that are not contained in a .PS....PE pair are ignored. Each figure is built from geometrical objects, such as rectangular boxes, circles, ellipses, quarter circles ("arcs"), polygonal lines, and splines. Arcs, polygonal lines, and spline may be equipped with arrowheads. Any object may be labeled with one or more lines of text. Objects are usually positioned not by specifying their positions in absolute coordinates, but rather by specifying their positions relative to other, previously drawn objects. The following figure is an example. .PS box "START"; arrow; circle dashed filled; arrow circle diam 2 thickness 3 "This is a" "big, thick" "circle" dashed; up arrow from top of last circle; ellipse "loopback" dashed arrow dotted from left of last ellipse to top of last box arc cw radius 1/2 from top of last ellipse; arrow box "END" .PE If you put this example in a file and run `pic2plot -T X' on the file, a window containing the figure will be popped up on your X display. Similarly, if you run `pic2plot -T ps' on the file, a Postscript file containing the figure will be written to standard output. The Postscript file may be edited with the `idraw' drawing editor. Other graphics formats such as PNG format, PNM format, pseudo-GIF format, SVG format, WebCGM format, or Fig format (which is editable with the `xfig' drawing editor) may be obtained similarly. You would use the options `-T png', `-T pnm', `-T gif', `samp -T svg', `-T cgm', and `-T fig', respectively. The above example illustrates some of the features of the pic language. By default, successive objects are drawn so as to touch each other. The drawing proceeds in a certain direction, which at startup is left-to-right. The `up' command changes this direction to bottom-to-top, so that the next object (the arrow extending from the top of the big circle) will point upward rather than to the right. Objects have sizes and other attributes, which may be set globally, or specified on a per-object basis. For example, the diameter of a circle may be specified, or the radius of an arc. An arc may be oriented clockwise rather than counterclockwise by specifying the `cw' attribute. The line style of most objects may be altered by specifying the `dashed' or `dotted' attribute. Also, any object may be labeled, by specifying one or more text strings as attributes. A text string may contain escape sequences that shift the font, append subscripts or superscripts, or include non-ASCII characters and mathematical symbols. *Note Text String Format::. Most sizes and positions are expressed in terms of `virtual inches'. The use of virtual inches is peculiar to `pic2plot'. The graphics display used by `pic2plot', i.e., its drawing region, is defined to be a square, 8 virtual inches wide and 8 virtual inches high. If the page size for the output file is the "letter" size, which is the default for Postscript output, virtual inches will the same as real inches. But a different page size may be specified; for example, by using the `--page-size a4' option. If so, a virtual inch will simply equal one-eighth of the width of the graphics display. On A4 paper, the graphics display is a square of size 19.81cm. By default, each figure is centered in the graphics display. You may turn off centering, so that you can use absolute coordinates, by using the `-n' option. For example, a figure consisting only of the object `arrow from (8,8) to (4,4)' will be positioned in the absence of centering so that the head of the arrow is at the center of the display. Its tail will be at the upper right corner. The thickness of lines is not specified in terms of virtual inches. For compatibility with `gpic', it is specified in terms of virtual points. The example above, which specifies the `thickness' attribute of one of the objects, illustrates this. There are 72 virtual points per virtual inch. If there is more than one figure to be displayed, they will appear in different X windows, or on successive pages of the output file. Some output formats (such as PNG, PNM, pseudo-GIF, SVG, Illustrator, and Fig) support only a single page of graphics. If any of those output formats is chosen, only the first figure will appear in the output file. Currently, `pic2plot' cannot produce animated pseudo-GIFs. The preceding survey does not do justice to the pic language, which is actually a full-featured programming language, with support for variables, looping constructs, etc. Its advanced features make the drawing of large, repetitive diagrams quite easy.  File: plotutils.info, Node: pic2plot Invocation, Next: pic2plot Environment, Prev: pic2plot Introduction, Up: pic2plot 4.2 `pic2plot' command-line options =================================== The `pic2plot' program translates files in the pic language, which is used for creating box-and-arrow diagrams of the kind frequently found in technical papers and textbooks, to other graphics formats. The output format is specified with the `-T' option. The possible output formats are the same formats that are supported by the GNU `graph' and `plot' programs. Input file names may be specified anywhere on the command line. That is, the relative order of file names and command-line options does not matter. If no files are specified, or the file name `-' is specified, the standard input is read. An output file is written to standard output, unless the `-T X' option is specified. In that case the output is displayed in one or more windows on an X Window System display, and there is no output file. The full set of command-line options is listed below. There are three sorts of option: 1. General options. 2. Options relevant only to raw `pic2plot', i.e., relevant only if no output format is specified with the `-T' option. 3. Options requesting information (e.g., `--help'). Each option that takes an argument is followed, in parentheses, by the type and default value of the argument. The following are general options. `-T TYPE' `--output-format TYPE' (String, default "meta".) Select an output format of type TYPE, which may be one of the strings "X", "png", "pnm", "gif", "svg", "ai", "ps", "cgm", "fig", "pcl", "hpgl", "regis", "tek", and "meta". These refer respectively to the X Window System, PNG format, portable anymap (PBM/PGM/PPM) format, pseudo-GIF format, the XML-based Scalable Vector Graphics format, the format used by Adobe Illustrator, `idraw'-editable Postscript, the WebCGM format for Web-based vector graphics, the format used by the `xfig' drawing editor, the Hewlett-Packard PCL 5 printer language, the Hewlett-Packard Graphics Language (by default, HP-GL/2), the ReGIS (remote graphics instruction set) format developed by DEC, Tektronix format, and device-independent GNU graphics metafile format. The option `--display-type' is an obsolete alternative to `--output-format'. `-d' `--precision-dashing' Draw dashed and dotted lines carefully, i.e., draw each dash and dot as a separately positioned object. The default is to use the support for dashed and dotted lines provided by the underlying graphics library, GNU `libplot'. This option may produce slightly better-looking dashed and dotted lines. However, it will come at a price: if an editable output file is produced (i.e., an output file in Illustrator, Postscript or Fig format), it will be difficulty to modify its dashed and dotted lines with a drawing editor. `-f FONT_SIZE' `--font-size FONT_SIZE' (Float, default 0.0175.) Set the size of the font used for rendering text, as a fraction of the width of the graphics display, to FONT_SIZE. `-F FONT_NAME' `--font-name FONT_NAME' (String, default "Helvetica" except for `pic2plot -T pcl', for which "Univers" is the default, and `pic2plot -T png', `pic2plot -T pnm', `pic2plot -T gif', `pic2plot -T hpgl', `pic2plot -T regis', `pic2plot -T tek', and raw `pic2plot', for all of which "HersheySerif" is the default.) Set the font used for text to FONT_NAME. Font names are case-insensitive. If the specified font is not available, the default font will be used. Which fonts are available depends on which `-T' option is used. For a list of all fonts, see *Note Text Fonts::. The `plotfont' utility will produce a character map of any available font. *Note plotfont::. `-n' `--no-centering' Turn off the automatic centering of each figure. If this option is specified, the position of the objects in each figure may be specified in terms of absolute coordinates. E.g., `line from (0,0) to (4,4)' will draw a line segment from the lower left corner to the center of the graphics display, since the display width and display height are defined to equal 8 virtual inches. `-W LINE_WIDTH' `--line-width LINE_WIDTH' (Float, default -1.0.) Set the default thickness of lines, as a fraction of the size (i.e., minimum dimension) of the graphics display, to LINE_WIDTH. A negative value means that the default value provided by the GNU `libplot' graphics library should be used. This is usually 1/850 times the size of the display, although if `-T X', `-T png', `-T pnm', or `-T gif' is specified, it is zero. By convention, a zero-thickness line is the thinnest line that can be drawn. This is the case in all output formats. Note, however, that the drawing editors `idraw' and `xfig' treat zero-thickness lines as invisible. `pic2plot -T hpgl' does not support drawing lines with other than a default thickness if the environment variable `HPGL_VERSION' is set to a value less than "2" (the default). `--bg-color NAME' (String, default "white".) Set the color used for the background to be NAME. This is relevant only to `pic2plot -T X', `pic2plot -T png', `pic2plot -T pnm', `pic2plot -T gif', `pic2plot -T cgm', `pic2plot -T regis', and `pic2plot -T meta'. An unrecognized name sets the color to the default. For information on what names are recognized, see *Note Color Names::. The environment variable `BG_COLOR' can equally well be used to specify the background color. If the `-T png' or `-T gif' option is used, a transparent PNG file or a transparent pseudo-GIF, respectively, may be produced by setting the `TRANSPARENT_COLOR' environment variable to the name of the background color. *Note pic2plot Environment::. If the `-T svg' or `-T cgm' option is used, an output file without a background may be produced by setting the background color to "none". `--bitmap-size BITMAP_SIZE' (String, default "570x570".) Set the size of the graphics display in which the plot will be drawn, in terms of pixels, to be BITMAP_SIZE. This is relevant only to `pic2plot -T X', `pic2plot -T png', `pic2plot -T pnm', and `pic2plot -T gif', for all of which the size can be expressed in terms of pixels. The environment variable `BITMAPSIZE' may equally well be used to specify the size. The graphics display used by `pic2plot -T X' is a popped-up X window. Command-line positioning of this window on an X Window System display is supported. For example, if BITMAP_SIZE is "570x570+0+0" then the window will be popped up in the upper left corner. If you choose a rectangular (non-square) window size, the fonts in the plot will be scaled anisotropically, i.e., by different factors in the horizontal and vertical direction. Any font that cannot be anisotropically scaled will be replaced by a default scalable font, such as the Hershey vector font "HersheySerif". For backward compatibility, `pic2plot -T X' allows the user to set the window size and position by setting the X resource `Xplot.geometry', instead of `--bitmap-size' or `BITMAPSIZE'. `--emulate-color OPTION' (String, default "no".) If OPTION is "yes", replace each color in the output by an appropriate shade of gray. This is seldom useful, except when using `pic2plot -T pcl' to prepare output for a PCL 5 device. (Many monochrome PCL 5 devices, such as monochrome LaserJets, do a poor job of emulating color on their own. They usually map HP-GL/2's seven standard pen colors, including even yellow, to black.) You may equally well request color emulation by setting the environment variable `EMULATE_COLOR' to "yes". `--max-line-length MAX_LINE_LENGTH' (Integer, default 500.) Set the maximum number of points that a polygonal line may contain, before it is flushed to the output device, to equal MAX_LINE_LENGTH. If this flushing occurs, the polygonal line will be split into two or more sub-lines, though the splitting should not be noticeable. The reason for splitting long polygonal lines is that some display devices (e.g., old Postscript printers and HP-GL pen plotters) have limited buffer sizes. The environment variable `MAX_LINE_LENGTH' can also be used to specify the maximum line length. This option has no effect on raw `pic2plot', since it draws polylines in real time and has no buffer limitations. `--page-size PAGESIZE' (String, default "letter".) Set the size of the page on which the plot will be positioned. This is relevant only to `pic2plot -T svg', `pic2plot -T ai', `pic2plot -T ps', `pic2plot -T cgm', `pic2plot -T fig', `pic2plot -T pcl', and `pic2plot -T hpgl'. "letter" means an 8.5in by 11in page. Any ISO page size in the range "a0"..."a4" or ANSI page size in the range "a"..."e" may be specified ("letter" is an alias for "a" and "tabloid" is an alias for "b"). "legal", "ledger", and "b5" are recognized page sizes also. The environment variable `PAGESIZE' can equally well be used to specify the page size. For `pic2plot -T ai', `pic2plot -T ps', `pic2plot -T pcl', and `pic2plot -T fig', the graphics display (or `viewport') within which the plot is drawn will be, by default, a square region centered on the specified page. For `pic2plot -T hpgl', it will be a square region of the same size, but may be positioned differently. Either or both of the dimensions of the graphics display can be specified explicitly. For example, PAGESIZE could be specified as "letter,xsize=4in", or "a4,xsize=10cm,ysize=15cm". The dimensions are allowed to be negative (a negative dimension results in a reflection). The position of the graphics display, relative to its default position, may optionally be adjusted by specifying an offset vector. For example, PAGESIZE could be specified as "letter,yoffset=1.2in", or "a4,xoffset=-5mm,yoffset=2.0cm". It is also possible to position the graphics display precisely, by specifying the location of its lower left corner relative to the lower left corner of the page. For example, PAGESIZE could be specified as "letter,xorigin=2in,yorigin=3in", or "a4,xorigin=0.5cm,yorigin=0.5cm". The preceding options may be intermingled. `pic2plot -T svg' and `pic2plot -T cgm' ignore the "xoffset", "yoffset", "xorigin", and "yorigin" options, since SVG format and WebCGM format have no notion of the Web page on which the graphics display will ultimately be positioned. However, they do respect the "xsize" and "ysize" options. For more on page sizes, see *Note Page and Viewport Sizes::. `--pen-color NAME' (String, default "black".) Set the pen color to be NAME. An unrecognized name sets the pen color to the default. For information on what color names are recognized, see *Note Color Names::. `--rotation ANGLE' (Float, default 0.0.) Set the rotation angle of the graphics display to be ANGLE degrees. The rotation is counterclockwise. The environment variable `ROTATION' can equally well be used to specify the rotation angle. This option is used for switching between portrait and landscape orientations, which have rotation angles 0 and 90 degrees respectively. Postmodernists may also find it useful. The following option is relevant only to raw `pic2plot', i.e., relevant only if no output format is specified with the `-T' option. In this case `pic2plot' outputs a graphics metafile, which may be translated to other formats by invoking `plot'. `-O' `--portable-output' Output the portable (human-readable) version of GNU metafile format, rather than a binary version (the default). This can also be requested by setting the environment variable `META_PORTABLE' to "yes". The following options request information. `--help' Print a list of command-line options, and then exit. `--help-fonts' Print a table of available fonts, and then exit. The table will depend on which output format is specified with the `-T' option. `pic2plot -T X', `pic2plot -T svg', `pic2plot -T ai', `pic2plot -T ps', `pic2plot -T cgm', and `pic2plot -T fig' each support the 35 standard Postscript fonts. `pic2plot -T svg', `pic2plot -T ai', `pic2plot -T pcl', and `pic2plot -T hpgl' support the 45 standard PCL 5 fonts, and `pic2plot -T pcl' and `pic2plot -T hpgl' support a number of Hewlett-Packard vector fonts. All of the preceding, together with `pic2plot -T png', `pic2plot -T pnm', `pic2plot -T gif', `pic2plot -T regis', and `pic2plot -T tek', support a set of 22 Hershey vector fonts. Raw `pic2plot' in principle supports any of these fonts, since its output must be translated to other formats with `plot'. The `plotfont' utility will produce a character map of any available font. *Note plotfont::. `--list-fonts' Like `--help-fonts', but lists the fonts in a single column to facilitate piping to other programs. If no output format is specified with the `-T' option, the full set of supported fonts is listed. `--version' Print the version number of `pic2plot' and the plotting utilities package, and exit.  File: plotutils.info, Node: pic2plot Environment, Prev: pic2plot Invocation, Up: pic2plot 4.3 Environment variables ========================= The behavior of `pic2plot' is affected by several environment variables. We have already mentioned the environment variables `BITMAPSIZE', `PAGESIZE', `BG_COLOR', `EMULATE_COLOR', `MAX_LINE_LENGTH', and `ROTATION'. They serve as backups for the several options `--bitmap-size', `--page-size', `--bg-color', `--emulate-color', `--max-line-length', and `--rotation'. The remaining environment variables are specific to individual output formats. `pic2plot -T X', which pops up a window on an X Window System display for each figure, checks the `DISPLAY' environment variable. The value of this variable determines the display on which the windows will be popped up. `pic2plot -T png' and `pic2plot -T gif', which produce output in PNG format and pseudo-GIF format respectively, are affected by two environment variables. If the value of the `INTERLACE' variable is "yes", the output file will be interlaced. Also, if the value of the `TRANSPARENT_COLOR' environment variable is the name of a color that appears in the output file, that color will be treated as transparent by most applications. For information on what color names are recognized, see *Note Color Names::. `pic2plot -T pnm', which produces output in Portable Anymap (PBM/PGM/PPM) format, is affected by the `PNM_PORTABLE' environment variable. If its value is "yes", the output file will be in the portable (human readable) version of PBM, PGM, or PPM format, rather than the default (binary) version. `pic2plot -T cgm', which produces CGM files that comply with the WebCGM profile for Web-based vector graphics, is affected by two environment variables. By default, a version 3 CGM file is generated. Many older CGM interpreters and viewers, such as the ones built into Microsoft Office and other commercial software, only support version 1 CGM files. The `CGM_MAX_VERSION' environment variable may be set to "1", "2", "3", or "4" (the default) to specify a maximum value for the version number. The `CGM_ENCODING' variable may also be set, to specify the type of encoding used in the CGM file. Supported values are "clear_text" (i.e., human readable) and "binary" (the default). The WebCGM profile requires that the binary encoding be used. `pic2plot -T pcl', which produces PCL 5 output for Hewlett-Packard printers, is affected by the environment variable `PCL_ASSIGN_COLORS'. It should be set to "yes" when producing PCL 5 output for a color printer or other color device. This will ensure accurate color reproduction by giving the output device complete freedom in assigning colors, internally, to its "logical pens". If it is "no" then the device will use a fixed set of colored pens, and will emulate other colors by shading. The default is "no" because monochrome PCL 5 devices, which are more common than colored ones, must use shading to emulate color. `pic2plot -T hpgl', which produces Hewlett-Packard Graphics Language output, is also affected by several environment variables. The most important is `HPGL_VERSION', which may be set to "1", "1.5", or "2" (the default). "1" means that the output should be generic HP-GL, "1.5" means that the output should be suitable for the HP7550A graphics plotter and the HP758x, HP7595A and HP7596A drafting plotters (HP-GL with some HP-GL/2 extensions), and "2" means that the output should be modern HP-GL/2. If the version is "1" or "1.5" then the only available fonts will be vector fonts, and all lines will be drawn with a default thickness (the `-W' option will not work). Additionally, if the version is "1" then the filling of arbitrary curves with solid color will not be supported (circles and rectangles aligned with the coordinate axes may be filled, though). The position of the `pic2plot -T hpgl' graphics display on the page can be rotated 90 degrees counterclockwise by setting the `HPGL_ROTATE' environment variable to "yes". This is not the same as the rotation obtained with the `--rotation' option, since it both rotates the graphics display and repositions its lower left corner toward another corner of the page. Besides "no" and "yes", recognized values for the `HPGL_ROTATE' variable are "0", "90", "180", and "270". "no" and "yes" are equivalent to "0" and "90", respectively. "180" and "270" are supported only if `HPGL_VERSION' is "2" (the default). _Opaque_ filling and the drawing of visible white lines are supported only if `HPGL_VERSION' is "2" (the default) and the environment variable `HPGL_OPAQUE_MODE' is "yes" (the default). If the value is "no" then opaque filling will not be used, and white lines (if any), which are normally drawn with pen #0, will not be drawn. This feature is to accommodate older HP-GL/2 devices. HP-GL/2 pen plotters, for example, do not support opacity or the use of pen #0 to draw visible white lines. Some older HP-GL/2 devices reportedly malfunction if asked to draw opaque objects. By default, `pic2plot -T hpgl' will draw with a fixed set of pens. Which pens are present may be specified by setting the `HPGL_PENS' environment variable. If `HPGL_VERSION' is "1", the default value of `HPGL_PENS' is "1=black"; if `HPGL_VERSION' is "1.5" or "2", the default value of `HPGL_PENS' is "1=black:2=red:3=green:4=yellow:5=blue:6=magenta:7=cyan". The format should be self-explanatory. By setting `HPGL_PENS', you may specify a color for any pen in the range #1...#31. For information on what color names are recognized, see *Note Color Names::. Pen #1 must always be present, though it need not be black. Any pen in the range #2...#31 may be omitted. If `HPGL_VERSION' is "2" then `pic2plot -T hpgl' will also be affected by the environment variable `HPGL_ASSIGN_COLORS'. If the value of this variable is "yes", then `plot -T hpgl' will not be restricted to the palette specified in `HPGL_PENS': it will assign colors to "logical pens" in the range #1...#31, as needed. The default value is "no" because other than color LaserJet printers and DesignJet plotters, not many HP-GL/2 devices allow the assignment of colors to logical pens. In particular, HP-GL/2 pen plotters do not. `pic2plot -T tek', which produces output for a Tektronix terminal or emulator, checks the `TERM' environment variable. If the value of `TERM' is a string beginning with "xterm", "nxterm", or "kterm", it is taken as a sign that `pic2plot' is running in an X Window System VT100 terminal emulator: an `xterm', `nxterm', or `kterm'. Before drawing graphics, `pic2plot -T tek' will emit an escape sequence that causes the terminal emulator's auxiliary Tektronix window, which is normally hidden, to pop up. After the graphics are drawn, an escape sequence that returns control to the original VT100 window will be emitted. The Tektronix window will remain on the screen. If the value of `TERM' is a string beginning with "kermit", "ansi.sys", or "nansi.sys", it is taken as a sign that `pic2plot' is running in the VT100 terminal emulator provided by the MS-DOS version of `kermit'. Before drawing graphics, `pic2plot -T tek' will emit an escape sequence that switches the terminal emulator to Tektronix mode. Also, some of the Tektronix control codes emitted by `pic2plot -T tek' will be `kermit'-specific. There will be a limited amount of color support, which is not normally the case (the 16 `ansi.sys' colors will be supported). After drawing graphics, `pic2plot -T tek' will emit an escape sequence that returns the emulator to VT100 mode. The key sequence `ALT minus' can be employed manually within `kermit' to switch between the two modes.  File: plotutils.info, Node: tek2plot, Next: plotfont, Prev: pic2plot, Up: Top 5 The `tek2plot' Program ************************ * Menu: * tek2plot Introduction:: What tek2plot is used for * tek2plot Invocation:: Command-line options * tek2plot Environment:: Environment variables  File: plotutils.info, Node: tek2plot Introduction, Next: tek2plot Invocation, Prev: tek2plot, Up: tek2plot 5.1 What `tek2plot' is used for =============================== GNU `tek2plot' is a command-line Tektronix translator. It displays Tektronix graphics files, or translates them to other formats. The `-T' option is used to specify the output format. Supported output formats include "X", "png", "pnm", "gif", "svg", "ai", "ps", "cgm", "fig", "pcl", "hpgl", "regis", "tek", and "meta" (the default). These are the same formats that are supported by the GNU `graph', `plot', and `pic2plot' programs. `tek2plot' will take input from a file specified on the command line or from standard input, just as the plot filter `plot' does. Tektronix graphics files are produced by many older applications, such as SKYMAP (http://tdc-www.cfa.harvard.edu/software/skymap), a powerful astronomical display program. A directory containing sample Tektronix graphics files, which you may experiment with, is distributed along with the GNU plotting utilities. On most systems it is installed as `/usr/share/tek2plot' or `/usr/local/share/tek2plot'. Tektronix graphics format is defined as a noninteractive version of the graphics format understood by Tektronix 4010/4014 terminals, as documented in the `4014 Service Manual', Tektronix Inc., 1974 (Tektronix Part #070-1648-00). `tek2plot' does not support interactive features such as graphics input mode ("GIN mode") or status enquiry. However, it does support a few additional features provided by popular Tektronix emulators, such as the color extensions supported by the Tektronix emulator contained in the MS-DOS version of `kermit'.  File: plotutils.info, Node: tek2plot Invocation, Next: tek2plot Environment, Prev: tek2plot Introduction, Up: tek2plot 5.2 `tek2plot' command-line options =================================== The `tek2plot' program translates the Tektronix graphics files produced by many older applications to other formats. The output format is specified with the `-T' option. The possible output formats are the same formats that are supported by the GNU `graph', `plot', and `pic2plot' programs. Input file names may be specified anywhere on the command line. That is, the relative order of file names and command-line options does not matter. If no files are specified, or the file name `-' is specified, the standard input is read. An output file is written to standard output, unless the `-T X' option is specified. In that case the output is displayed in one or more windows on an X Window System display, and there is no output file. The full set of command-line options is listed below. There are three sorts of option: 1. General options. 2. Options relevant only to raw `tek2plot', i.e., relevant only if no output format is specified with the `-T' option. 3. Options requesting information (e.g., `--help'). Each option that takes an argument is followed, in parentheses, by the type and default value of the argument. The following are general options. `-T TYPE' `--output-format TYPE' (String, default "meta".) Select an output format of type TYPE, which may be one of the strings "X", "png", "pnm", "gif", "svg", "ai", "ps", "cgm", "fig", "pcl", "hpgl", "regis", "tek", and "meta". These refer respectively to the X Window System, PNG format, portable anymap (PBM/PGM/PPM) format, pseudo-GIF format, the XML-based Scalable Vector Graphics format, the format used by Adobe Illustrator, `idraw'-editable Postscript, the WebCGM format for Web-based vector graphics, the format used by the `xfig' drawing editor, the Hewlett-Packard PCL 5 printer language, the Hewlett-Packard Graphics Language (by default, HP-GL/2), the ReGIS (remote graphics instruction set) format developed by DEC, Tektronix format, and device-independent GNU graphics metafile format. `-p N' `--page-number N' (Nonnegative integer.) Display only page number N, within the Tektronix file or sequence of Tektronix files that is being translated. Tektronix files may consist of one or more pages, numbered beginning with zero. The default behavior, if the `-p' option is not used, is to display all nonempty pages in succession. For example, `tek2plot -T X' displays each page in its own X window. If the `-T png' option, the `-T pnm' option, the `-T gif' option, the `-T svg' option, the `-T ai' option, or the `-T fig' option is used, the default behavior is to display only the first page, since files in PNG, PNM, pseudo-GIF, SVG, AI, or Fig format may contain only a single page of graphics. Most Tektronix files consist of either one page (page #0) or two pages (an empty page #0, and page #1). Tektronix files produced by the GNU plotting utilities (e.g., by `graph -T tek') are normally of the latter sort. `-F FONT_NAME' `--font-name FONT_NAME' (String, default "Courier" except for `tek2plot -T png', `tek2plot -T pnm', `tek2plot -T gif', `tek2plot -T hpgl', `tek2plot -T regis', and raw `tek2plot', for all of which "HersheySerif" is the default.) Set the font used for text to FONT_NAME. Font names are case-insensitive. If a font outside the Courier family is chosen, the `--position-chars' option (see below) should probably be used. For a list of all fonts, see *Note Text Fonts::. If the specified font is not available, the default font will be used. If you intend to print a PCL 5 file prepared with `tek2plot -T pcl' on a LaserJet III, you should specify a font other than Courier. That is because the LaserJet III, which was Hewlett-Packard's first PCL 5 printer, did not come with a scalable Courier typeface. The only PCL 5 fonts it supported were the eight fonts in the CGTimes and Univers families. See *Note Text Fonts::. `-W LINE_WIDTH' `--line-width LINE_WIDTH' (Float, default -1.0.) Set the thickness of lines, as a fraction of the size (i.e., minimum dimension) of the graphics display, to LINE_WIDTH. A negative value means that the default value provided by the GNU `libplot' graphics library should be used. This is usually 1/850 times the size of the display, although if `-T X', `-T png', `-T pnm', or `-T gif' is specified, it is zero. By convention, a zero-thickness line is the thinnest line that can be drawn. This is the case in all output formats. Note, however, that the drawing editors `idraw' and `xfig' treat zero-thickness lines as invisible. `tek2plot -T regis' does not support drawing lines with other than a default thickness, and `tek2plot -T hpgl' does not support doing so if the environment variable `HPGL_VERSION' is set to a value less than "2" (the default). `--bg-color NAME' (String, default "white".) Set the color used for the background to be NAME. This is relevant only to `tek2plot -T X', `tek2plot -T png', `tek2plot -T pnm', `tek2plot -T gif', `tek2plot -T cgm', `tek2plot -T regis', and `tek2plot -T meta'. An unrecognized name sets the color to the default. For information on what names are recognized, see *Note Color Names::. The environment variable `BG_COLOR' can equally well be used to specify the background color. If the `-T png' or `-T gif' option is used, a transparent PNG file or a transparent pseudo-GIF, respectively, may be produced by setting the `TRANSPARENT_COLOR' environment variable to the name of the background color. *Note tek2plot Environment::. If the `-T svg' or `-T cgm' option is used, an output file without a background may be produced by setting the background color to "none". `--bitmap-size BITMAP_SIZE' (String, default "570x570".) Set the size of the graphics display in which the plot will be drawn, in terms of pixels, to be BITMAP_SIZE. This is relevant only to `tek2plot -T X', `tek2plot -T png', `tek2plot -T pnm', and `tek2plot -T gif', for all of which the size can be expressed in terms of pixels. The environment variable `BITMAPSIZE' may equally well be used to specify the size. The graphics display used by `tek2plot -T X' is a popped-up X window. Command-line positioning of this window on an X Window System display is supported. For example, if BITMAP_SIZE is "570x570+0+0" then the window will be popped up in the upper left corner. If you choose a rectangular (non-square) window size, the fonts in the plot will be scaled anisotropically, i.e., by different factors in the horizontal and vertical direction. Any font that cannot be anisotropically scaled will be replaced by a default scalable font, such as the Hershey vector font "HersheySerif". For backward compatibility, `tek2plot -T X' allows the user to set the window size and position by setting the X resource `Xplot.geometry', instead of `--bitmap-size' or `BITMAPSIZE'. `--emulate-color OPTION' (String, default "no".) If OPTION is "yes", replace each color in the output by an appropriate shade of gray. This is seldom useful, except when using `tek2plot -T pcl' to prepare output for a PCL 5 device. (Many monochrome PCL 5 devices, such as monochrome LaserJets, do a poor job of emulating color on their own. They usually map HP-GL/2's seven standard pen colors, including even yellow, to black.) You may equally well request color emulation by setting the environment variable `EMULATE_COLOR' to "yes". `--max-line-length MAX_LINE_LENGTH' (Integer, default 500.) Set the maximum number of points that a polygonal line may contain, before it is flushed to the output device, to equal MAX_LINE_LENGTH. If this flushing occurs, the polygonal line will be split into two or more sub-lines, though the splitting should not be noticeable. The reason for splitting long polygonal lines is that some display devices (e.g., old Postscript printers and HP-GL pen plotters) have limited buffer sizes. The environment variable `MAX_LINE_LENGTH' can also be used to specify the maximum line length. This option has no effect on raw `tek2plot', since it draws polylines in real time and has no buffer limitations. `--page-size PAGESIZE' (String, default "letter".) Set the size of the page on which the plot will be positioned. This is relevant only to `tek2plot -T svg', `tek2plot -T ai', `tek2plot -T ps', `tek2plot -T cgm', `tek2plot -T fig', `tek2plot -T pcl', and `tek2plot -T hpgl'. "letter" means an 8.5in by 11in page. Any ISO page size in the range "a0"..."a4" or ANSI page size in the range "a"..."e" may be specified ("letter" is an alias for "a" and "tabloid" is an alias for "b"). "legal", "ledger", and "b5" are recognized page sizes also. The environment variable `PAGESIZE' can equally well be used to specify the page size. For `tek2plot -T ai', `tek2plot -T ps', `tek2plot -T pcl', and `tek2plot -T fig', the graphics display (or `viewport') within which the plot is drawn will be, by default, a square region centered on the specified page. For `tek2plot -T hpgl', it will be a square region of the same size, but may be positioned differently. Either or both of the dimensions of the graphics display can be specified explicitly. For example, PAGESIZE could be specified as "letter,xsize=4in", or "a4,xsize=10cm,ysize=15cm". The dimensions are allowed to be negative (a negative dimension results in a reflection). The position of the graphics display, relative to its default position, may optionally be adjusted by specifying an offset vector. For example, PAGESIZE could be specified as "letter,yoffset=1.2in", or "a4,xoffset=-5mm,yoffset=2.0cm". It is also possible to position the graphics display precisely, by specifying the location of its lower left corner relative to the lower left corner of the page. For example, PAGESIZE could be specified as "letter,xorigin=2in,yorigin=3in", or "a4,xorigin=0.5cm,yorigin=0.5cm". The preceding options may be intermingled. `tek2plot -T svg' and `tek2plot -T cgm' ignore the "xoffset", "yoffset", "xorigin", and "yorigin" options, since SVG format and WebCGM format have no notion of the Web page on which the graphics display will ultimately be positioned. However, they do respect the "xsize" and "ysize" options. For more on page sizes, see *Note Page and Viewport Sizes::. `--pen-color NAME' (String, default "black".) Set the pen color to be NAME. An unrecognized name sets the pen color to the default. For information on what color names are recognized, see *Note Color Names::. `--position-chars' Position the characters in each text string individually on the display. If the text font is not a member of the Courier family, and especially if it is not a fixed-width font, this option is recommended. It will improve the appearance of text strings, at the price of making it difficult to edit the output file with `xfig' or `idraw'. `--rotation ANGLE' (Float, default 0.0.) Set the rotation angle of the graphics display to be ANGLE degrees. The rotation is counterclockwise. The environment variable `ROTATION' can equally well be used to specify the rotation angle. This option is used for switching between portrait and landscape orientations, which have rotation angles 0 and 90 degrees respectively. Postmodernists may also find it useful. `--use-tek-fonts' Use the fonts that were used on the original Tektronix 4010/4014 terminal, to produce the most faithful rendition possible. This option is relevant only to `tek2plot -T X'. Bitmap versions of the the four original Tektronix fonts are distributed with the plotting utilities package, under the names `tekfont0'...`tekfont3'. They may easily be installed on any modern X Window System display. For this option to work properly, you must also select a window size of 1024x1024 pixels, either by using the `--bitmap-size 1024x1024' option or by setting the value of the `Xplot.geometry' resource. The reason for this restriction is to prevent rescaling of the bitmap fonts. This option is useful only if you have a file in Tektronix format that draws text using native Tektronix fonts. Tektronix files produced by the GNU plotting utilities (e.g., by `graph -T tek') do not use native Tektronix fonts to draw text. The following option is relevant only to raw `tek2plot', i.e., relevant only if no output format is specified with the `-T' option. In this case `tek2plot' outputs a graphics metafile, which may be translated to other formats by invoking `plot'. `-O' `--portable-output' Output the portable (human-readable) version of GNU metafile format, rather than a binary version (the default). This can also be requested by setting the environment variable `META_PORTABLE' to "yes". The following options request information. `--help' Print a list of command-line options, and then exit. `--help-fonts' Print a table of available fonts, and then exit. The table will depend on which output format is specified with the `-T' option. `tek2plot -T X', `tek2plot -T svg', `tek2plot -T ai', `tek2plot -T ps', `tek2plot -T cgm', and `tek2plot -T fig' each support the 35 standard Postscript fonts. `tek2plot -T svg', `tek2plot -T ai', `tek2plot -T pcl', and `tek2plot -T hpgl' support the 45 standard PCL 5 fonts, and `tek2plot -T pcl' and `tek2plot -T hpgl' support a number of Hewlett-Packard vector fonts. All of the preceding, together with `tek2plot -T png', `tek2plot -T pnm', `tek2plot -T gif', `tek2plot -T regis', and `tek2plot -T tek', support a set of 22 Hershey vector fonts. Raw `tek2plot' in principle supports any of these fonts, since its output must be translated to other formats with `plot'. The `plotfont' utility will produce a character map of any available font. *Note plotfont::. `--list-fonts' Like `--help-fonts', but lists the fonts in a single column to facilitate piping to other programs. If no output format is specified with the `-T' option, the full set of supported fonts is listed. `--version' Print the version number of `tek2plot' and the plotting utilities package, and exit.  File: plotutils.info, Node: tek2plot Environment, Prev: tek2plot Invocation, Up: tek2plot 5.3 Environment variables ========================= The behavior of `tek2plot' is affected by several environment variables, which are the same as those that affect `graph' and `plot'. For convenience, we list them here. We have already mentioned the environment variables `BITMAPSIZE', `PAGESIZE', `BG_COLOR', `EMULATE_COLOR', `MAX_LINE_LENGTH', and `ROTATION'. They serve as backups for the several options `--bitmap-size', `--page-size', `--bg-color', `--emulate-color', `--max-line-length', and `--rotation'. The remaining environment variables are specific to individual output formats. `tek2plot -T X', which pops up a window on an X Window System display and draws graphics in it, checks the `DISPLAY' environment variable. The value of this variable determines the display on which the window will be popped up. `tek2plot -T png' and `tek2plot -T gif', which produce output in PNG format and pseudo-GIF format respectively, are affected by two environment variables. If the value of the `INTERLACE' variable is "yes", the output file will be interlaced. Also, if the value of the `TRANSPARENT_COLOR' environment variable is the name of a color that appears in the output file, that color will be treated as transparent by most applications. For information on what color names are recognized, see *Note Color Names::. `tek2plot -T pnm', which produces output in Portable Anymap (PBM/PGM/PPM) format, is affected by the `PNM_PORTABLE' environment variable. If its value is "yes", the output file will be in the portable (human readable) version of PBM, PGM, or PPM format, rather than the default (binary) version. `tek2plot -T cgm', which produces CGM files that comply with the WebCGM profile for Web-based vector graphics, is affected by two environment variables. By default, a version 3 CGM file is generated. Many older CGM interpreters and viewers, such as the ones built into Microsoft Office and other commercial software, only support version 1 CGM files. The `CGM_MAX_VERSION' environment variable may be set to "1", "2", "3", or "4" (the default) to specify a maximum value for the version number. The `CGM_ENCODING' variable may also be set, to specify the type of encoding used in the CGM file. Supported values are "clear_text" (i.e., human readable) and "binary" (the default). The WebCGM profile requires that the binary encoding be used. `tek2plot -T pcl', which produces PCL 5 output for Hewlett-Packard printers, is affected by the environment variable `PCL_ASSIGN_COLORS'. It should be set to "yes" when producing PCL 5 output for a color printer or other color device. This will ensure accurate color reproduction by giving the output device complete freedom in assigning colors, internally, to its "logical pens". If it is "no" then the device will use a fixed set of colored pens, and will emulate other colors by shading. The default is "no" because monochrome PCL 5 devices, which are more common than colored ones, must use shading to emulate color. `tek2plot -T hpgl', which produces Hewlett-Packard Graphics Language output, is also affected by several environment variables. The most important is `HPGL_VERSION', which may be set to "1", "1.5", or "2" (the default). "1" means that the output should be generic HP-GL, "1.5" means that the output should be suitable for the HP7550A graphics plotter and the HP758x, HP7595A and HP7596A drafting plotters (HP-GL with some HP-GL/2 extensions), and "2" means that the output should be modern HP-GL/2. If the version is "1" or "1.5" then the only available fonts will be vector fonts, and all lines will be drawn with a default thickness (the `-W' option will not work). The position of the `tek2plot -T hpgl' graphics display on the page can be rotated 90 degrees counterclockwise by setting the `HPGL_ROTATE' environment variable to "yes". This is not the same as the rotation obtained with the `--rotation' option, since it both rotates the graphics display and repositions its lower left corner toward another corner of the page. Besides "no" and "yes", recognized values for the `HPGL_ROTATE' variable are "0", "90", "180", and "270". "no" and "yes" are equivalent to "0" and "90", respectively. "180" and "270" are supported only if `HPGL_VERSION' is "2" (the default). The drawing of visible white lines is supported only if `HPGL_VERSION' is "2" and the environment variable `HPGL_OPAQUE_MODE' is "yes" (the default). If the value is "no" then white lines (if any), which are normally drawn with pen #0, will not be drawn. This feature is to accommodate older HP-GL/2 devices. HP-GL/2 pen plotters, for example, do not support the use of pen #0 to draw visible white lines. Some older HP-GL/2 devices may, in fact, malfunction if asked to draw opaque objects. By default, `tek2plot -T hpgl' will draw with a fixed set of pens. Which pens are present may be specified by setting the `HPGL_PENS' environment variable. If `HPGL_VERSION' is "1", the default value of `HPGL_PENS' is "1=black"; if `HPGL_VERSION' is "1.5" or "2", the default value of `HPGL_PENS' is "1=black:2=red:3=green:4=yellow:5=blue:6=magenta:7=cyan". The format should be self-explanatory. By setting `HPGL_PENS', you may specify a color for any pen in the range #1...#31. For information on what color names are recognized, see *Note Color Names::. Pen #1 must always be present, though it need not be black. Any pen in the range #2...#31 may be omitted. If `HPGL_VERSION' is "2" then `tek2plot -T hpgl' will also be affected by the environment variable `HPGL_ASSIGN_COLORS'. If the value of this variable is "yes", then `tek2plot -T hpgl' will not be restricted to the palette specified in `HPGL_PENS': it will assign colors to "logical pens" in the range #1...#31, as needed. The default value is "no" because other than color LaserJet printers and DesignJet plotters, not many HP-GL/2 devices allow the assignment of colors to logical pens. In particular, HP-GL/2 pen plotters do not.  File: plotutils.info, Node: plotfont, Next: spline, Prev: tek2plot, Up: Top 6 The `plotfont' Utility ************************ * Menu: * plotfont Examples:: How to use plotfont * plotfont Invocation:: Command-line options * plotfont Environment:: Environment variables  File: plotutils.info, Node: plotfont Examples, Next: plotfont Invocation, Prev: plotfont, Up: plotfont 6.1 How to use `plotfont' ========================= GNU `plotfont' is a simple utility that will produce a character map for any font available to the GNU plotting utilities `graph', `plot', `pic2plot', and `tek2plot', and the GNU `libplot' graphics library on which they are based. The map may be displayed on an X Window System display, or produced in any of several output formats. The `-T' option is used to specify the desired output format. Supported output formats include "X", "png", "pnm", "gif", "svg", "ai", "ps", "cgm", "fig", "pcl", "hpgl", "regis", "tek", and "meta" (the default). Which fonts are available depends on the choice of display or output format. To get a list of the available fonts, use the `--help-fonts' option. For example, plotfont -T ps --help-fonts will list the fonts that are available when producing Postscript output. One of these fonts is "Times-Roman". Doing plotfont -T ps Times-Roman > map.ps will produce a character map of the lower half of this font, which consists of printable ASCII characters. The map will be a 12x8 grid, with a character centered in each grid cell. If you include the `-2' option, you will get a map of the upper half of the font. Most built-in fonts are ISO-Latin-1 fonts, which means that the upper half is arranged according to the ISO-Latin-1 encoding. The "HersheyCyrillic" font is one that is not. If you do plotfont -T ps -2 HersheyCyrillic > map.ps you will get a map that illustrates its arrangment, which is called KOI8-R. The KOI8-R arrangement is the standard for Unix and networking applications in the former Soviet Union. So-called dingbats fonts, such as "ZapfDingbats" and "Wingdings", also have an individualistic layout. In most installations of the plotting utilities, the Wingdings font is not available when producing Postscript output. However, it is available when producing output in PCL 5 or HP-GL/2 format. If you do plotfont -T hpgl Wingdings > map.plt you will get a Wingdings character map, in HP-GL/2 format, that may be imported into any application that understands HP-GL/2. Similarly, `plotfont -T pcl Wingdings' will produce a Wingdings character map in PCL 5 format, which may be printed on a LaserJet or other PCL 5 device. In all, more than a hundred fonts are built into the plotting utilities. *Note Text Fonts::. Actually, if you are using the plotting utilities to display output on an X display, you are not restricted to the built-in fonts. Doing plotfont -T X --help-fonts produces a list of the built-in fonts that are available, including both Hershey and Postscript fonts. But fonts available on your X display may also be used. The `xlsfonts' command will list the core X fonts available on your X display, most font names being given in what is called XLFD format. The plotting utilities refer to core X fonts by shortened versions of their XLFD names. For example, the font "CharterBT-Roman" is available on many X displays. Its XLFD name is "-bitstream-charter-medium-r-normal-0-0-0-0-p-0-iso8859-1", and its shortened XLFD name is "charter-medium-r-normal". If you do plotfont -T X charter-medium-r-normal then a character map for this font will be displayed in a popped-up X window. When using the `-T X' option, you may also use the `--bitmap-size' option to choose the size of the popped-up window. Modern X displays can scale fonts by different amounts in the horizontal and vertical directions. If, for example, you add `--bitmap-size 600x300' to the above command line, both the character map and the CharterBT-Roman font within it will be scaled in this way.  File: plotutils.info, Node: plotfont Invocation, Next: plotfont Environment, Prev: plotfont Examples, Up: plotfont 6.2 `plotfont' command-line options =================================== The `plotfont' font display utility will produce a character map for any of the fonts available to the GNU plotting utilities `graph', `plot', `pic2plot', and `tek2plot', and the GNU `libplot' graphics library on which they are based. The map may be produced in any supported output format, or displayed on an X Window System display. The output format is specified with the `-T' option. The names of the fonts for which a character map will be produced may appear anywhere on the `plotfont' command line. That is, the relative order of font names and command-line options does not matter. The character map is written to standard output, unless the `-T X' option is specified. In that case the character map is displayed in a window on an X Window System display, and there is no output file. The possible options are listed below. There are three sorts of option: 1. General options. 2. Options relevant only to raw `plotfont', i.e., relevant only if no output format is specified with the `-T' option. 3. Options requesting information (e.g., `--help'). Each option that takes an argument is followed, in parentheses, by the type and default value of the argument. The following are general options. `-1' `--lower-half' Generate a character map for the lower half of each specified font. This is the default. `-2' `--upper-half' Generate a character map for the upper half of each specified font. `-o' `--octal' Number the characters in octal rather than in decimal (the default). `-x' `--hexadecimal' Number the characters in hexadecimal rather than in decimal (the default). `--box' Surround each character with a box, showing its extent to left and right. The default is not to do this. `-j ROW' `--jis-row ROW' Generate a character map for row ROW of a Japanese font arranged according to JIS [Japanese Industrial Standard] X0208. The only such font currently available is the HersheyEUC [Extended Unix Code] font. If used, this option overrides the `-1' and `-2' options. The valid rows are 1...94. In the JIS X0208 standard, Roman characters are located in row 3, and Japanese syllabic characters (Hiragana and Katakana) are located in rows 4 and 5. Greek and Cyrillic characters are located in rows 6 and 7. Japanese ideographic characters (Kanji) are located in rows 16...84. Rows 16...47 contain the JIS Level 1 Kanji, which are the most frequently used. They are arranged according to On (old Chinese) reading. Rows 48...84 contain the less frequently used JIS Level 2 Kanji. The HersheyEUC font contains 596 of the 2965 Level 1 Kanji, and seven of the Level 2 Kanji. It uses the 8-bit EUC-JP encoding. This encoding is a multibyte encoding that includes the ASCII character set as well as the JIS X0208 characters. It represents each ASCII character in the usual way, i.e., as a single byte that does not have its high bit set. Each JIS X0208 character is represented as two bytes, each with the high bit set. The first byte contains the row number (plus 32), and the second byte contains the character number. `-T TYPE' `--output-format TYPE' (String, default "meta".) Select an output format of type TYPE, which may be one of the strings "X", "png", "pnm", "gif", "svg", "ai", "ps", "cgm", "fig", "pcl", "hpgl", "regis", "tek", and "meta". These refer respectively to the X Window System, PNG format, portable anymap (PBM/PGM/PPM) format, pseudo-GIF format, the XML-based Scalable Vector Graphics format, the format used by Adobe Illustrator, `idraw'-editable Postscript, the WebCGM format for Web-based vector graphics, the format used by the `xfig' drawing editor, the Hewlett-Packard PCL 5 printer language, the Hewlett-Packard Graphics Language (by default, HP-GL/2), the ReGIS (remote graphics instruction set) format developed by DEC, Tektronix format, and device-independent GNU graphics metafile format. The option `--display-type' is an obsolete alternative to `--output-format'. Files in PNG, PNM, pseudo-GIF, SVG, AI, or Fig format may contain only a single page of graphics. So if the `-T png' option, the `-T pnm' option, the `-T gif' option, the `-T svg' option, the `-T ai' option, or the `-T fig' option is used, a character map will be produced for only the first-specified font. `--bg-color NAME' (String, default "white".) Set the color used for the background to be NAME. This is relevant only to `plotfont -T X', `plotfont -T png', `plotfont -T pnm', `plotfont -T gif', `plotfont -T cgm', `plotfont -T regis', and `plotfont -T meta'. An unrecognized name sets the color to the default. For information on what names are recognized, see *Note Color Names::. The environment variable `BG_COLOR' can equally well be used to specify the background color. If the `-T png' or `-T gif' option is used, a transparent PNG file or a transparent pseudo-GIF, respectively, may be produced by setting the `TRANSPARENT_COLOR' environment variable to the name of the background color. *Note plotfont Environment::. If the `-T svg' or `-T cgm' option is used, an output file without a background may be produced by setting the background color to "none". `--bitmap-size BITMAP_SIZE' (String, default "570x570".) Set the size of the graphics display in which the character map will be drawn, in terms of pixels, to be BITMAP_SIZE. This is relevant only to `plotfont -T X', `plotfont -T png', `plotfont -T pnm', and `plotfont -T gif', for all of which the size can be expressed in terms of pixels. The environment variable `BITMAPSIZE' may equally well be used to specify the size. The graphics display used by `plotfont -T X' is a popped-up X window. Command-line positioning of this window on an X Window System display is supported. For example, if BITMAP_SIZE is "570x570+0+0" then the window will be popped up in the upper left corner. If you choose a rectangular (non-square) window size, the fonts in the plot will be scaled anisotropically, i.e., by different factors in the horizontal and vertical direction. For backward compatibility, `plotfont -T X' allows the user to set the window size and position by setting the X resource `Xplot.geometry', instead of `--bitmap-size' or `BITMAPSIZE'. `--emulate-color OPTION' (String, default "no".) If OPTION is "yes", replace each color in the output by an appropriate shade of gray. This is seldom useful, except when using `plotfont -T pcl' to prepare output for a PCL 5 device. (Many monochrome PCL 5 devices, such as monochrome LaserJets, do a poor job of emulating color on their own. They usually map HP-GL/2's seven standard pen colors, including even yellow, to black.) You may equally well request color emulation by setting the environment variable `EMULATE_COLOR' to "yes". `--numbering-font-name FONT_NAME' (String, default "Helvetica" except for `plotfont -T pcl', for which "Univers" is the default, and `plotfont -T png', `plotfont -T pnm', `plotfont -T gif', `plotfont -T hpgl', `plotfont -T regis', and `plotfont -T tek', for all of which "HersheySerif" is the default.) Set the font used for the numbering of the characters in the character map(s) to be FONT_NAME. `--page-size PAGESIZE' (String, default "letter".) Set the size of the page on which the character map(s) will be drawn. This is relevant only to `plotfont -T svg', `plotfont -T ai', `plotfont -T ps', `plotfont -T fig', `plotfont -T pcl', and `plotfont -T hpgl'. "letter" means an 8.5in by 11in page. Any ISO page size in the range "a0"..."a4" or ANSI page size in the range "a"..."e" may be specified ("letter" is an alias for "a" and "tabloid" is an alias for "b"). "legal", "ledger", and "b5" are recognized page sizes also. The environment variable `PAGESIZE' can equally well be used to specify the page size. For `plotfont -T ai', `plotfont -T ps', `plotfont -T pcl', and `plotfont -T fig', the graphics display (or `viewport') within which the character map is drawn will be, by default, a square region centered on the specified page. For `plotfont -T hpgl', it will be a square region of the same size, but may be positioned differently. Either or both of the dimensions of the graphics display can be specified explicitly. For example, PAGESIZE could be specified as "letter,xsize=4in", or "a4,xsize=10cm,ysize=15cm". The dimensions are allowed to be negative (a negative dimension results in a reflection). The position of the graphics display, relative to its default position, may optionally be adjusted by specifying an offset vector. For example, PAGESIZE could be specified as "letter,yoffset=1.2in", or "a4,xoffset=-5mm,yoffset=2.0cm". It is also possible to position the graphics display precisely, by specifying the location of its lower left corner relative to the lower left corner of the page. For example, PAGESIZE could be specified as "letter,xorigin=2in,yorigin=3in", or "a4,xorigin=0.5cm,yorigin=0.5cm". The preceding options may be intermingled. `plotfont -T svg' and `plotfont -T cgm' ignore the "xoffset", "yoffset", "xorigin", and "yorigin" options, since SVG format and WebCGM format have no notion of the Web page on which the graphics display will ultimately be positioned. However, they do respect the "xsize" and "ysize" options. For more on page sizes, see *Note Page and Viewport Sizes::. `--pen-color NAME' (String, default "black".) Set the pen color to be NAME. An unrecognized name sets the pen color to the default. For information on what color names are recognized, see *Note Color Names::. `--rotation ANGLE' (Float, default 0.0.) Set the rotation angle of the graphics display to be ANGLE degrees. The rotation is counterclockwise. The environment variable `ROTATION' can equally well be used to specify the rotation angle. This option is used for switching between portrait and landscape orientations, which have rotation angles 0 and 90 degrees respectively. Postmodernists may also find it useful. `--title-font-name FONT_NAME' (String) Set the font used for the title of each character map to be FONT_NAME. Normally the font used for the title is the same as the font whose character set is being displayed. This option is useful when producing character maps for unusual fonts such as "ZapfDingbats" and "Wingdings". The following option is relevant only to raw `plotfont', i.e., relevant only if no output format is specified with the `-T' option. In this case `plotfont' outputs a graphics metafile, which may be translated to other formats by invoking `plot'. `-O' `--portable-output' Output the portable (human-readable) version of GNU metafile format, rather than a binary version (the default). This can also be requested by setting the environment variable `META_PORTABLE' to "yes". The following options request information. `--help' Print a list of command-line options, and then exit. `--help-fonts' Print a table of available fonts, and then exit. The table will depend on which output format is specified with the `-T' option. `plotfont -T X', `plotfont -T svg', `plotfont -T ai', `plotfont -T ps', `plotfont -T cgm', and `plotfont -T fig' each support the 35 standard Postscript fonts. `plotfont -T svg', `plotfont -T ai', `plotfont -T pcl', and `plotfont -T hpgl' support the 45 standard PCL 5 fonts, and `plotfont -T pcl' and `plotfont -T hpgl' support a number of Hewlett-Packard vector fonts. All of the preceding, together with `plotfont -T png', `plotfont -T pnm', `plotfont -T gif', `plotfont -T regis', and `plotfont -T tek', support a set of 22 Hershey vector fonts. Raw `plotfont' in principle supports any of these fonts, since its output must be translated to other formats with `plot'. `--list-fonts' Like `--help-fonts', but lists the fonts in a single column to facilitate piping to other programs. If no output format is specified with the `-T' option, the full set of supported fonts is listed. `--version' Print the version number of `plotfont' and the plotting utilities package, and exit.  File: plotutils.info, Node: plotfont Environment, Prev: plotfont Invocation, Up: plotfont 6.3 Environment variables ========================= The behavior of `plotfont' is affected by several environment variables, which are the same as those that affect `graph', `plot', and `tek2plot'. For convenience, we list them here. We have already mentioned the environment variables `BITMAPSIZE', `PAGESIZE', `BG_COLOR', `EMULATE_COLOR', and `ROTATION'. They serve as backups for the several options `--bitmap-size', `--page-size', `--bg-color', `--emulate-color', and `--rotation'. The remaining environment variables are specific to individual output formats. `plotfont -T X', which pops up a window on an X Window System display and draws a character map in it, checks the `DISPLAY' environment variable. The value of this variable determines the display on which the window will be popped up. `plotfont -T png' and `plotfont -T gif', which produce output in PNG format and pseudo-GIF format respectively, are affected by two environment variables. If the value of the `INTERLACE' variable is "yes", the output file will be interlaced. Also, if the value of the `TRANSPARENT_COLOR' environment variable is the name of a color that appears in the output file, that color will be treated as transparent by most applications. For information on what color names are recognized, see *Note Color Names::. `plotfont -T pnm', which produces output in Portable Anymap (PBM/PGM/PPM) format, is affected by the `PNM_PORTABLE' environment variable. If its value is "yes", the output file will be in the portable (human readable) version of PBM, PGM, or PPM format, rather than the default (binary) version. `plotfont -T cgm', which produces CGM files that comply with the WebCGM profile for Web-based vector graphics, is affected by two environment variables. By default, a version 3 CGM file is generated. Many older CGM interpreters and viewers, such as the ones built into Microsoft Office and other commercial software, only support version 1 CGM files. The `CGM_MAX_VERSION' environment variable may be set to "1", "2", "3", or "4" (the default) to specify a maximum value for the version number. The `CGM_ENCODING' variable may also be set, to specify the type of encoding used in the CGM file. Supported values are "clear_text" (i.e., human readable) and "binary" (the default). The WebCGM profile requires that the binary encoding be used. `plotfont -T pcl', which produces PCL 5 output for Hewlett-Packard printers, is affected by the environment variable `PCL_ASSIGN_COLORS'. It should be set to "yes" when producing PCL 5 output for a color printer or other color device. This will ensure accurate color reproduction by giving the output device complete freedom in assigning colors, internally, to its "logical pens". If it is "no" then the device will use a fixed set of colored pens, and will emulate other colors by shading. The default is "no" because monochrome PCL 5 devices, which are more common than colored ones, must use shading to emulate color. `plotfont -T hpgl', which produces Hewlett-Packard Graphics Language output, is also affected by several environment variables. The most important is `HPGL_VERSION', which may be set to "1", "1.5", or "2" (the default). "1" means that the output should be generic HP-GL, "1.5" means that the output should be suitable for the HP7550A graphics plotter and the HP758x, HP7595A and HP7596A drafting plotters (HP-GL with some HP-GL/2 extensions), and "2" means that the output should be modern HP-GL/2. If the version is "1" or "1.5" then the only available fonts will be vector fonts. The position of the `plotfont -T hpgl' graphics display on the page can be rotated 90 degrees counterclockwise by setting the `HPGL_ROTATE' environment variable to "yes". This is not the same as the rotation obtained with the `--rotation' option, since it both rotates the graphics display and repositions its lower left corner toward another corner of the page. Besides "no" and "yes", recognized values for the `HPGL_ROTATE' variable are "0", "90", "180", and "270". "no" and "yes" are equivalent to "0" and "90", respectively. "180" and "270" are supported only if `HPGL_VERSION' is "2" (the default). By default, `plotfont -T hpgl' will draw with a fixed set of pens. Which pens are present may be specified by setting the `HPGL_PENS' environment variable. If `HPGL_VERSION' is "1", the default value of `HPGL_PENS' is "1=black"; if `HPGL_VERSION' is "1.5" or "2", the default value of `HPGL_PENS' is "1=black:2=red:3=green:4=yellow:5=blue:6=magenta:7=cyan". The format should be self-explanatory. By setting `HPGL_PENS', you may specify a color for any pen in the range #1...#31. For information on what color names are recognized, see *Note Color Names::. Pen #1 must always be present, though it need not be black. Any pen in the range #2...#31 may be omitted. If `HPGL_VERSION' is "2" then `plotfont -T hpgl' will also be affected by the environment variable `HPGL_ASSIGN_COLORS'. If the value of this variable is "yes", then `plotfont -T hpgl' will not be restricted to the palette specified in `HPGL_PENS': it will assign colors to "logical pens" in the range #1...#31, as needed. The default value is "no" because other than color LaserJet printers and DesignJet plotters, not many HP-GL/2 devices allow the assignment of colors to logical pens. In particular, HP-GL/2 pen plotters do not. `plotfont -T tek', which produces output for a Tektronix terminal or emulator, checks the `TERM' environment variable. If the value of `TERM' is a string beginning with "xterm", "nxterm", or "kterm", it is taken as a sign that `plotfont' is running in an X Window System VT100 terminal emulator: an `xterm', `nxterm', or `kterm'. Before drawing graphics, `plotfont -T tek' will emit an escape sequence that causes the terminal emulator's auxiliary Tektronix window, which is normally hidden, to pop up. After the graphics are drawn, an escape sequence that returns control to the original VT100 window will be emitted. The Tektronix window will remain on the screen. If the value of `TERM' is a string beginning with "kermit", "ansi.sys", or "nansi.sys", it is taken as a sign that `plotfont' is running in the VT100 terminal emulator provided by the MS-DOS version of `kermit'. Before drawing graphics, `plotfont -T tek' will emit an escape sequence that switches the terminal emulator to Tektronix mode. Also, some of the Tektronix control codes emitted by `plotfont -T tek' will be `kermit'-specific. There will be a limited amount of color support, which is not normally the case (the 16 `ansi.sys' colors will be supported). After drawing graphics, `plotfont -T tek' will emit an escape sequence that returns the emulator to VT100 mode. The key sequence `ALT minus' can be employed manually within `kermit' to switch between the two modes.  File: plotutils.info, Node: spline, Next: ode, Prev: plotfont, Up: Top 7 The `spline' Program ********************** * Menu: * spline Examples:: How to use spline * Advanced Use of spline:: More sophisticated uses * spline Invocation:: Command-line options  File: plotutils.info, Node: spline Examples, Next: Advanced Use of spline, Prev: spline, Up: spline 7.1 How to use `spline' ======================= GNU `spline' is a program for interpolating between the data points in one or more datasets. Each dataset would consist of values for an independent variable and a dependent variable, which may be a vector of specified fixed length. When discussing interpolation, we call these variables `t' and `y', respectively. To emphasize: t is a scalar, but in general the dependent variable y may be a vector. The simplest case is when there is a single input file, which is in ASCII format, and the vector y is one-dimensional. This is the default. For example, the input file could contain the dataset 0.0 0.0 1.0 1.0 2.0 0.0 which are the coordinates (t,y) of the data points (0,0), (1,1), and (2,0). Data points do not need to be on different lines, nor do the t and y coordinates of a data point need to be on the same line. However, there should be no blank lines in the input if it is to be viewed as forming a single dataset. Also, by default the t coordinate should be monotonically increasing, so that y may be viewed as a function of t. You would construct a spline (the graph of an `interpolating function') passing through the points in this dataset by doing spline input_file > output_file To produce a Postscript plot of the spline with the `graph' utility, you would do spline input_file | graph -T ps > output.ps To display a spline on an X Window System display, you could do echo 0 0 1 1 2 0 | spline | graph -T X Notice that the last example avoids the use of the input file altogether. `spline' will read from standard input if no files are specified on the command line, or if the special file name `-' is specified. What exactly does `spline' do? First, it fits a curve (the graph of an interpolating function) through the points in the dataset. Then it splits the interval over which the independent variable t ranges into 100 sub-intervals, and computes the y values at each of the 101 subdivision points. It then outputs each of the pairs (t, y). These are the coordinates of 101 points that lie along a curve that interpolates between the points in the dataset. If there is more than one dataset in the input (separated by blank lines), each dataset is interpolated separately. You may use the `-n' option to replace `100' by any other positive integer. You may also use the `-t' option to specify an interpolation interval that differs from the default (the interval over which the independent variable ranges). For example, the command echo 0 0 1 1 2 0 | spline -n 20 -t 1.0 1.5 > output_file will produce a dataset consisting of 21 (rather than 101) data points, with t values spaced regularly between 1.0 and 1.5 (rather than between 0.0 and 2.0). The data points will lie along a curve passing through (0,0), (1,1), and (2,0). This curve will be a parabola. In general, the interpolating function will be a piecewise cubic spline. That is, between each pair of adjacent `knots' (points in the input dataset), y will be a cubic function of t. This function will differ, depending on which pair of knots y lies between. At each knot, both the slope and curvature of the cubic pieces to either side will match. In mathematical terms, the interpolating curve will be twice continuously differentiable. `spline' supports `adding tension' to the interpolating curve. A nonzero value for the tension can be specified with the `-T' option. For example, a spline under considerable tension can be computed and displayed by doing echo 0 0 1 0 2 0 | spline -T 10 | graph -T X As the tension parameter is increased to positive infinity, the spline will converge to a polygonal line. You are meant to think of the spline as being drawn taut. Actually, tension may be negative as well as positive. A spline with negative tension will tend to bow outward, in fact to oscillate sinusoidally. But as the tension decreases to negative infinity, the spline, though oscillatory, will again converge to a polygonal line. If the tension is positive, its reciprocal will be the maximum range of the independent variable t over which the spline will `like to curve'. Increasing the tension far above zero will accordingly force the spline to consist of short curved sections, centered on the data points, and sections that are almost straight. It follows that tension is a `dimensionful' quantity. If the tension is nonzero, then when the values of the independent variable are multiplied by some common positive factor, the tension should be divided by the same factor to obtain a scaled version of the original spline. If the tension is zero (the default, or cubic spline case), then the computation of the spline will be unaffected by linear scaling of the data. In mathematical terms, a spline under tension will satisfy the differential equation y""=sgn(tension)*(tension^2)y" between each successive pair of knots. If the tension equals zero, which is the default, the fourth derivative of y with respect to t will equal zero at every point. In this case, y as a function of t will reduce to a cubic polynomial between each successive pair of knots. But if the tension is nonzero, y will not be a polynomial function of t. It may be expressed in terms of exponential functions, however. Irrespective of whether or not the spline is under tension, you may specify the `-p' option if you wish the spline to be a periodic function of t. This will only work if the y values for the first and last points in the dataset are equal. Otherwise, it would make no sense to compute a periodic interpolation. It is sometimes useful to interpolate between data points at the same time as they are generated by an auxiliary program. That is, it is useful for `spline' to function as a real-time filter. `spline' does not normally act as a filter, since computing an interpolating curve that is as smooth as possible is a global task. But if the `-f' option is specified, `spline' will indeed function as a filter. A different interpolation algorithm (cubic Bessel interpolation, which is local rather than global) will be used. If `-f' is specified, `-p' may not be specified. Also, if `-f' is specified then an interpolation interval (a range of t values) must be requested explicitly with the `-t' option. Cubic Bessel interpolation is inherently less smooth than the construction of a global cubic spline. If the `-f' option is specified, the slope of the spline at each knot will be chosen by fitting a parabola through that knot, and the two adjacent knots. The slopes of the two interpolating segments to either side of each interior knot will match at that knot, but typically their curvatures will not. In mathematical terms, the interpolating curve will be continuously differentiable, but in general not twice continuously differentiable. This loss of differentiability is the price that is paid for functioning as a real-time filter.  File: plotutils.info, Node: Advanced Use of spline, Next: spline Invocation, Prev: spline Examples, Up: spline 7.2 Advanced use of `spline' ============================ The preceding section explains how `spline' can be employed to interpolate a function y of a scalar variable t, in the case when y is a scalar. In this section we explain how to perform more sophisticated interpolations. This includes multidimensional interpolations, and interpolations that are splinings of curves, rather than of functions. `spline' can handle the case when y is a vector of arbitrary specified dimensionality. The dimension can be specified with the `-d' option. For example, an input file could contain the multidimensional dataset 0.0 0.0 1.0 1.0 1.0 0.0 2.0 0.0 1.0 which are the coordinates (t,y) of the data points (0,0,1), (1,1,0), and (2,0,1). You would construct a spline (the graph of an interpolating function) passing through the points in this dataset by doing spline -d 2 input_file > output_file The option `-d 2' is used because in this example, the dependent variable y is a two-dimensional vector. Each of the components of y will be interpolated independently, and the output file will contain points that lie along the graph of the resulting interpolating function. When doing multidimensional splining, you may use any of the options that apply in the default one-dimensional case. For example, the `-f' option will yield real-time cubic Bessel interpolation. As in the one-dimensional case, if the `-f' option is used then the `-t' option must be used as well, to specify an interpolation interval (a range of t values). The `-p' option will yield a periodic spline, i.e., the graph of a periodic vector-valued function. For this, the first and last dataset y values must be the same. `spline' can also be used to draw a curve through arbitrarily chosen points in the plane, or in general through arbitrarily chosen points in d-dimensional space. This is not the same as splining, at least as the term is conventionally defined. The reason is that `splining' refers to construction of a function, rather than the construction of a curve that may or may not be the graph of a function. Not every curve is the graph of a function. The following example shows how you may `spline a curve'. The command echo 0 0 1 0 1 1 0 1 | spline -d 2 -a -s | graph -T X will construct a curve in the plane through the four points (0,0), (1,0), (1,1), and (0,1), and graph it on an X Window System display. The `-d 2' option specifies that the dependent variable y is two-dimensional. The `-a' option specifies that t values are missing from the input, and should be automatically generated. By default, the first t value is 0, the second is 1, etc. The `-s' option specifies that the t values should be stripped from the output. The same technique may be used to spline a closed curve. For example, doing echo 0 0 1 0 0 1 0 0 | spline -d 2 -a -s -p | graph -T X will construct and graph a closed, lozenge-shaped curve through the three points (0,0), (1,0), and (0,1). The construction of a closed curve is guaranteed by the `-p' (i.e., `--periodic') option, and by the repetition of the initial point (0,0) at the end of the sequence. When splining a curve, whether open or closed, you may wish to substitute the `-A' option for the `-a' option. Like the `-a' option, the `-A' option specifies that t values are missing from the input and should be automatically generated. However, the increment from one t value to the next will be the distance between the corresponding values of y. This scheme for generating t values, when constructing a curve through a sequence of data points, is the scheme that is used in the well known FITPACK subroutine library. It is probably the best approach when the distances between successive points fluctuate considerably. A curve through a sequence of points in the plane, whether open or closed, may cross itself. Some interesting visual effects can be obtained by adding negative tension to such a curve. For example, doing echo 0 0 1 0 1 1 0 0 | spline -d 2 -a -s -p -T -14 -n 500 | graph -T X will construct a closed curve through the three points (0,0), (1,0), and (0,1), which is wound into curlicues. The `-n 500' option is included because there are so many windings. It specifies that 501 points should be generated, which is enough to draw a smooth curve.  File: plotutils.info, Node: spline Invocation, Prev: Advanced Use of spline, Up: spline 7.3 `spline' command-line options ================================= The `spline' program will interpolate vector-valued functions of a scalar variable t, and curves in d-dimensional space. The algorithms used by `spline' are similar to those discussed in D. Kincaid and [E.] W. Cheney, `Numerical Analysis' (2nd ed., Brooks/Cole, 1996), section 6.4, and C. de Boor, `A Practical Guide to Splines' (Springer-Verlag, 1978), Chapter 4. Input file names may be specified anywhere on the command line. That is, the relative order of font names and command-line options does not matter. If no file names are specified, or the file name `-' is specified, the standard input is read. An input file may contain more than a single dataset. Unless the `-a' or `-A' options are used (see below), each dataset is expected to consist of a sequence of data points, given as alternating t and y values. t is the scalar independent variable, and y is the vector-valued dependent variable. The dimensionality of y is specified with the `-d' option (the default is 1). If the input file is in ASCII format (the default), its datasets are separated by blank lines. An input file may also contain any number of comment lines, which must begin with the comment character `#'. Comment lines are ignored. They are not treated as blank, i.e., they do not interrupt a dataset in progress. The options to `spline' are listed below. There are three sorts of option: 1. Options specifying the type of interpolation to be performed on each dataset. 2. Options specifying the input or output format. 3. Options requesting information (e.g., `--help'). Options that take an argument are followed, in parentheses, by the type and default value of the argument. The following options specify the type of interpolation to be performed on each dataset. `-f' `--filter' Use a local interpolation algorithm (the cubic Bessel algorithm), so that `spline' can be used as a real-time filter. The slope of the interpolating curve at each point in a dataset will be chosen by fitting a quadratic function through that point and the two adjacent points in the dataset. If `-f' is specified then the `-t' option, otherwise optional, must be used as well. Also, if `-f' is specified then the `-k', `-p', and `-T' options may not be used. If `-f' is _not_ specified, then a different (global) interpolation algorithm will be used. `-k K' `--boundary-condition K' (Float, default 1.0.) Set the boundary condition parameter for each constructed spline to be K. In each of its components, the spline will satisfy the two boundary conditions y"[0]=ky"[1] and y"[n]=ky"[n-1]. Here y[0] and y[1] signify the values of a specified component of the vector-valued dependent variable y at the first two points of a dataset, and y[n-1] and y[n] the values at the last two points. Setting K to zero will yield a `natural' spline, i.e., one that has zero curvature at the two ends of the dataset. The `-k' option may not be used if `-f' or `-p' is specified. `-n N' `--number-of-intervals N' (Positive integer, default 100.) Subdivide the interval over which interpolation occurs into N subintervals. The number of data points computed, and written to the output, will be n+1. `-p' `--periodic' Construct a periodic spline. If this option is specified, the y values for the first and last points in each dataset must be equal. The `-f' and `-k' options may not be used if `-p' is specified. `-T TENSION' `--tension TENSION' (Float, default 0.0.) Set the tension in each interpolating spline to be TENSION. Between each pair of successive points in a dataset, the constructed spline will satisfy the differential equation y""=sgn(tension)*(tension^2)y" in each of its components. If TENSION equals zero, the spline will be piecewise cubic. As TENSION increases to positive infinity, the spline will converge to a polygonal line. The `-T' option may not be used if `-f' is specified. `-t TMIN TMAX [TSPACING]' `--t-limits TMIN TMAX [TSPACING]' For each dataset, set the interval over which interpolation occurs to be the interval between TMIN and TMAX. If TSPACING is not specified, the interval will be divided into the number of subintervals specified by the `-n' option. If the `-t' option is not used, the interval over which interpolation occurs will be the entire range of the independent variable in the dataset. The `-t' option must always be used if the `-f' option is used to request filter-like behavior (see above). The following options specify the format of the input file(s) and the output file. `-d DIMENSION' `--y-dimension DIMENSION' (Integer, default 1.) Set the dimensionality of the dependent variable y in the input and output files to be DIMENSION. `-I DATA-FORMAT' `--input-format DATA-FORMAT' (Character, default `a'.) Set the data format for the input file(s) to be DATA-FORMAT. The possible data formats are as follows. `a' ASCII format. Each file is a sequence of floating point numbers, interpreted as the t and y coordinates of the successive data points in a dataset. If y is d-dimensional, there will be d+1 numbers for each point. The t and y coordinates of a point need not appear on the same line, and points need not appear on different lines. But if a blank line occurs (i.e., two newlines in succession are seen), it is interpreted as the end of a dataset, and the beginning of the next. `f' Single precision binary format. Each file is a sequence of floating point numbers, interpreted as the t and y coordinates of the successive data points in a dataset. If y is d-dimensional, there will be d+1 numbers for each point. Successive datasets are separated by a single occurrence of the quantity `FLT_MAX', which is the largest possible single precision floating point number. On most machines this is approximately 3.4x10^38. `d' Double precision binary format. Each file is a sequence of double precision floating point numbers, interpreted as the t and y coordinates of the successive data points in a dataset. If y is d-dimensional, there will be d+1 numbers for each point. Successive datasets are separated by a single occurrence of the quantity `DBL_MAX', which is the largest possible double precision floating point number. On most machines this is approximately 1.8x10^308. `i' Integer binary format. Each file is a sequence of integers, interpreted as the t and y coordinates of the successive data points in a dataset. If y is d-dimensional, there will be d+1 numbers for each point. Successive datasets are separated by a single occurrence of the quantity `INT_MAX', which is the largest possible integer. On most machines this is 2^31-1. `-a [STEP_SIZE [LOWER_LIMIT]]' `--auto-abscissa [STEP_SIZE [LOWER_LIMIT]]' (Floats, defaults 1.0 and 0.0.) Automatically generate values for the independent variable (t). Irrespective of data format (`a', `f', `d', or `i'), this option specifies that the values of the independent variable (t) are missing from the input file: the dataset(s) to be read contain only values of the dependent variable (y), so that if y is d-dimensional, there will be only d numbers for each point. The increment from each t value to the next will be STEP_SIZE, and the first t value will be LOWER_LIMIT. `-A' `--auto-dist-abscissa' Automatically generate values for the independent variable (t). This is a variant form of the `-a' option. The increment from each t value to the next will be the distance between the corresponding y values, and the first t value will be 0.0. This option is useful when interpolating curves rather than functions (*note Advanced Use of spline::). `-O DATA-FORMAT' `--output-format DATA-FORMAT' (Character, default `a'.) Set the data format for the output file to be DATA-FORMAT. The interpretation of the DATA-FORMAT argument is the same as for the `-I' option. `-P SIGNIFICANT-DIGITS' `--precision SIGNIFICANT-DIGITS' (Positive integer, default 6.) Set the numerical precision for the t and y values in the output file to be SIGNIFICANT-DIGITS. This takes effect only if the output file is written in `a' format, i.e., in ASCII. `-s' `--suppress-abscissa' Omit the independent variable t from the output file; for each point, supply only the dependent variable y. If y is d-dimensional, there will be only d numbers for each point, not d+1. This option is useful when interpolating curves rather than functions (*note Advanced Use of spline::). The following options request information. `--help' Print a list of command-line options, and then exit. `--version' Print the version number of `spline' and the plotting utilities package, and exit.  File: plotutils.info, Node: ode, Next: libplot, Prev: spline, Up: Top 8 The `ode' Program ******************* The GNU `ode' utility can produce a numerical solution to the initial value problem for many systems of first-order ordinary differential equations (ODE's). `ode' can also be used to solve systems of higher-order ODE's, since a simple procedure converts an n'th-order equation into n first-order equations. The output of `ode' can easily be piped to `graph', so that one or more solution curves may be plotted as they are generated. Three distinct schemes for numerical solution are implemented: Runge-Kutta-Fehlberg (the default), Adams-Moulton, and Euler. The Runge-Kutta-Fehlberg and Adams-Moulton schemes are available with adaptive stepsize. * Menu: * Basic Math:: Ordinary differential equations * Simple ode Examples:: Simple examples using ode * Additional ode Examples:: Additional examples using ode * ode Invocation:: ode command-line options * Diagnostics:: Diagnostic messages * Numerical Error:: Numerical error and how to avoid it * Running Time:: Time spent running ode * Input Language:: The ode input language formally specified * ODE Bibliography:: Bibliography on ode and ODE's  File: plotutils.info, Node: Basic Math, Next: Simple ode Examples, Prev: ode, Up: ode 8.1 Mathematical basics ======================= We begin with some standard definitions. A _differential equation_ is an equation involving an unknown function and its derivatives. A differential equation is _ordinary_ if the unknown function depends on only one independent variable, often denoted t. The _order_ of the differential equation is the order of the highest-order derivative in the equation. One speaks of a family, or _system_ of equations when more than one equation is involved. If the equations are dependent on one another, they are said to be _coupled_. A _solution_ is any function satisfying the equations. An _initial value problem_ is present when there exist subsidiary conditions on the unknown function and its derivatives, all of which are given at the same value of the independent variable. In principle, such an `initial condition' specifies a unique solution. Questions about the existence and uniqueness of a solution, along with further terminology, are discussed in any introductory text. (See Chapter 1 of Birkhoff and Rota's `Ordinary Differential Equations'. For this and other references relevant to `ode', see *Note ODE Bibliography::.) In practical problems, the solution of a differential equation is usually not expressible in terms of elementary functions. Hence the need for a numerical solution. A numerical scheme for solving an initial value problem produces an approximate solution, using only functional evaluations and the operations of arithmetic. `ode' solves first-order initial value problems of the form: x' = f(t,x,y,...,z) y' = g(t,x,y,...,z) . . . z' = h(t,x,y,...,z) given the initial values for each dependent variable at the initial value of the independent variable t, i.e., x(a) = b y(a) = c . . . z(a) = d t = a where a,b,c,...,d are constants. For `ode' to be able to solve such a problem numerically, the functions f,g,...,h must be expressed, using the usual operators (+, -, *, /, and ^), in terms of certain basic functions that `ode' recognizes. These are the same functions that the plotting program `gnuplot' recognizes. Moreover, each of f,g,...,h must be given explicitly. `ode' cannot deal with a system in which one or more of the first derivatives is defined implicitly rather than explicitly. All schemes for numerical solution involve the calculation of an approximate solution at discrete values of the independent variable t, where the `stepsize' (the difference between any two successive values of t, usually denoted h) may be constant or chosen adaptively. In general, as the stepsize decreases the solution becomes more accurate. In `ode', the stepsize can be adjusted by the user.  File: plotutils.info, Node: Simple ode Examples, Next: Additional ode Examples, Prev: Basic Math, Up: ode 8.2 Simple examples using `ode' =============================== The following examples should illustrate the procedure of stating an initial value problem and solving it with `ode'. If these examples are too elementary, see *Note Input Language::, for a formal specification of the `ode' input language. There is also a directory containing examples of `ode' input, which is distributed along with the GNU plotting utilities. On most systems it is installed as `/usr/share/ode' or `/usr/local/share/ode'. Our first example is a simple one, namely y'(t) = y(t) with the initial condition y(0) = 1 The solution to this differential equation is y(t) = e^t. In particular y(1) = e^1 = 2.718282 to seven digits of accuracy. You may obtain this result with the aid of `ode' by typing on the command line the sequence of commands ode y' = y y = 1 print t, y step 0, 1 Two columns of numbers will appear. Each line will show the value of the independent variable t, and the value of the variable y, as t is `stepped' from 0 to 1. The last line will be 1 2.718282 as expected. You may use the `-p' option to change the precision. If, for example, you type `ode -p 10' rather than `ode', you will get ten digits of accuracy in the output, rather than seven (the default). After the above output, `ode' will wait for further instructions. Entering for example the line step 1, 0 should yield two more columns of numbers, containing the values of t and y that are computed when t is stepped back from 1 to 0. You could type instead step 1, 2 to increase rather than decrease t. To exit `ode', you would type a line containing only `.', i.e. a single period, and tap `return'. `ode' will also exit if it sees an end-of-file indicator in its input stream, which you may send from your terminal by typing control-D. Each line of the preceding example should be self-explanatory. A `step' statement sets the beginning and the end of an interval over which the independent variable (here, t) will range, and causes `ode' to set the numerical scheme in motion. The initial value appearing in the first `step' statement (i.e., 0) and the assignment statement y = 1 are equivalent to the initial condition y(0) = 1. The statements `y' = y' and `y = 1' are very different: `y' = y' defines a way of computing the derivative of y, while `y = 1' sets the initial value of y. Whenever a `step' statement is encountered, `ode' tries to step the independent variable through the interval it specifies. Which values are to be printed at each step is specified by the most recent `print' statement. For example, print t, y, y' would cause the current value of the independent variable t, the variable y, and its derivative to be printed at each step. To illustrate `ode''s ability to take its input or the initial part of its input from a file, you could prepare a file containing the following lines: # an ode to Euler y = 1 y' = y print t, y, y' Call this file `euler'. (The `#' line is a comment line, which may appear at any point. Everything from the `#' to the end of the line on which it appears will be ignored.) To process this file with `ode', you could type on your terminal ode -f euler step 0, 1 These two lines cause `ode' to read the file `euler', and the stepping to take place. You will now get three quantities (t, y, and y') printed at each of the values of t between 0 and 1. At the conclusion of the stepping, `ode' will wait for any further commands to be input from the terminal. This example illustrates that ode -f euler is not equivalent to ode < euler The latter would cause `ode' to take all its input from the file `euler', while the former allows subsequent input from the terminal. For the latter to produce output, you would need to include a `step' line at the end of the file. You would not need to include a `.' line, however. `.' is used to terminate input only when input is being read from a terminal. A second simple example involves the numerical solution of a second-order differential equation. Consider the initial value problem y''(t) = -y(t) y(0) = 0 y'(0) = 1 Its solution would be y(t) = sin(t) To solve this problem using `ode', you must express this second-order equation as two first-order equations. Toward this end you would introduce a new function, called yp say, of the independent variable t. The pair of equations y' = yp yp' = -y would be equivalent to the single equation above. This sort of reduction of an n'th order problem to n first order problems is a standard technique. To plot the variable y as a function of the variable t, you could create a file containing the lines # sine : y''(t) = -y(t), y(0) = 0, y'(0) = 1 sine' = cosine cosine' = -sine sine = 0 cosine = 1 print t, sine (y and yp have been renamed sine and cosine, since that is what they will be.) Call this file `sine'. To display the generated data points on an X Window System display as they are generated, you would type ode -f sine | graph -T X -x 0 10 -y -1 1 step 0, 2*PI . After you type the `ode' line, `graph -T X' will pop up a window, and after you type the `step' line, the generated dataset will be drawn in it. The `-x 0 10' and `-y -1 1' options, which set the bounds for the two axes, are necessary if you wish to display points in real time: as they are generated. If the axis bounds were not specified on the command line, `graph -T X' would wait until all points are read from the input before determining the bounds, and drawing the plot. A slight modification of this example, showing how `ode' can generate several datasets in succession and plot them on the same graph, would be the following. Suppose that you type on your terminal the following lines. ode -f sine | graph -T X -C -x 0 10 -y -1 1 step 0, PI step PI, 2*PI step 2*PI, 3*PI . Then the sine curve will be traced out in three stages. Since the output from each `step' statement ends with a blank line, `graph -T X' will treat each section of the sine curve as a different dataset. If you are using a color display, each of the three sections will be plotted in a different color. This is a feature provided by `graph', which normally changes its linemode after each dataset it reads. If you do not like this feature, you may turn it off by using `graph -T X -B' instead of `graph -T X'. In the above examples, you could use any of the other variants of `graph' instead of `graph -T X'. For example, you could use `graph -T ps' to obtain a plot in encapsulated Postscript format, by typing ode -f sine | graph -T ps > plot.ps step 0, 2*PI . You should note that of the variants of `graph', the variants `graph -T png', `graph -T pnm', `graph -T gif', `graph -T svg', `graph -T ai', `graph -T ps', `graph -T cgm', `graph -T fig', `graph -T pcl' and `graph -T hpgl' do not produce output in real time, even when the axis bounds are specified with the `-x' and `-y' options. So if any of these variants is used, the plot will be produced only when input from `ode' is terminated, which will occur when you type `.'. In the preceding examples, the derivatives of the dependent variables were specified by comparatively simple expressions. They are allowed to be arbitrarily complicated functions of the dependent variables and the independent variable. They may also involve any of the functions that are built into `ode'. `ode' has a fair number of functions built in, including abs, sqrt, exp, log, log10, sin, cos, tan, asin, acos, atan, sinh, cosh, tanh, asinh, acosh, and atanh. Less familiar functions which are built into it are besj0, besj1, besy0, besy1, erf, erfc, inverf, lgamma, gamma, norm, invnorm, ibeta, and igamma. These have the same definitions as in the plotting program `gnuplot'. (All functions take a single argument, except for ibeta, which takes three, and igamma, which takes two). `ode' also knows the meaning of the constant `PI', as the above examples show. The names of the preceding functions are reserved, so, e.g., `cos' and `sin' may not be used as names for variables. Other than the restriction of avoiding reserved names and keywords, the names of variables may be chosen arbitrarily. Any sequence of alphanumeric characters starting with an alphabetic character may be used; the first 32 characters are significant. It is worth noting that `ode' identifies the independent variable by the fact that it is (or should be) the only variable that has not appeared on the left side of a differential equation or an initial value assignment. If there is more than than one such variable then no stepping takes place; instead, an error message is printed. If there is no such variable, a dummy independent variable is invented and given the name `(indep)', internally.  File: plotutils.info, Node: Additional ode Examples, Next: ode Invocation, Prev: Simple ode Examples, Up: ode 8.3 Additional examples using `ode' =================================== We explain here how to use some additional features of `ode'. However, the discussion below does not cover all of its capabilities. For a complete list of command-line options, see *Note ode Invocation::. It is easy to use `ode' to create plots of great beauty. An example would be a plot of a _strange attractor_, namely the Lorenz attractor. Suppose that a file named `lorenz' contains the following lines. # The Lorenz model, a system of three coupled ODE's with parameter r. x' = -3*(x-y) y' = -x*z+r*x-y z' = x*y-z r = 26 x = 0; y = 1; z = 0 print x, y step 0, 200 Then executing the command ode < lorenz | graph -T X -C -x -10 10 -y -10 10 would produce a plot of the Lorenz attractor (strictly speaking, a plot of one of its two-dimensional projections). You may produce a Postscript plot of the Lorenz attractor, and print it, by doing something like ode < lorenz | graph -T ps -x -10 10 -y -10 10 -W 0 | lpr The `-W 0' ("zero width") option requests that `graph -T ps' use the thinnest line possible, to improve the visual appearance of the plot on a printer or other Postscript device. Besides plotting a visually striking object in real time, the Lorenz attractor example shows how statements may be separated by semicolons, rather than appearing on different lines. It also shows how to use symbolic constants. In the description read by `ode' the parameter r is a variable like x, y, and z. But unlike them it is not updated during stepping, since no formula for its derivative r' is given. Our second example deals with the interactive construction of a `phase portrait': a set of solution curves with different initial conditions. Phase portraits are of paramount interest in the qualitative theory of differential equations, and also possess aesthetic appeal. Since a description read by `ode' may contain any number of `step' statements, multiple solution curves may be plotted in a single run. The most recent `print' statement will be used with each `step' statement. In practice, a phase portrait would be drawn from a few well-chosen solution curves. Choosing a good set of solution curves may require experimentation, which makes interactivity and real-time plotting all-important. As an example, consider a so-called Lotka-Volterra predator-prey model. Suppose that in a lake there are two species of fish: A (the prey) who live by eating a plentiful supply of plants, and B (the predator) who eat A. Let x(t) be the population of A and y(t) the population of B at time t. A crude model for the interaction of A and B is given by the equations x' = x(a-by) y' = y(cx-d) where a, b, c, d are positive constants. To draw a phase portrait for this system interactively, you could type ode | graph -T X -C -x 0 5 -y 0 5 x' = (a - b*y) * x y' = (c*x - d) * y a = 1; b = 1; c = 1; d = 1; print x, y x = 1; y = 2 step 0, 10 x = 1; y = 3 step 0, 10 x = 1; y = 4 step 0, 10 x = 1; y = 5 step 0, 10 . Four curves will be drawn in succession, one per `step' line. They will be periodic; this periodicity is similar to the fluctuations between predator and prey populations that occur in real-world ecosystems. On a color display the curves will appear in different colors, since by default, `graph' changes the linemode between datasets. That feature may be turned off by using `graph -T X -B' rather than `graph -T X'. It is sometimes useful to use `ode' and `graph' to plot discrete points, which are not joined by line segments to form a curve. Our third example illustrates this. Suppose the file `atwoods' contains the lines m = 1 M = 1.0625 a = 0.5; adot = 0 l = 10; ldot = 0 ldot' = ( m * l * adot * adot - M * 9.8 + m * 9.8 * cos(a) ) / (m + M) l' = ldot adot' = (-1/l) * (9.8 * sin(a) + 2 * adot * ldot) a' = adot print l, ldot step 0, 400 The first few lines describe the functioning of a so-called swinging Atwood's machine. An ordinary Atwood's machine consists of a taut cord draped over a pulley, with a mass attached to the cord at each end. Normally, the heavier mass (M) would win against the lighter mass (m), and draw it upward. A swinging Atwood's machine allows the lighter mass to swing back and forth as well as move vertically. The `print l, ldot' statement requests that the vertical position and vertical velocity of the lighter mass be printed out at each step. If you run the command ode < atwoods | graph -T X -x 9 11 -y -1 1 -m 0 -S 1 -X l -Y ldot you will obtain a real-time plot. The `-m 0' option requests that successive data points not be joined by line segments, and the `-S 1' option requests that plotting symbol #1 (a dot) be plotted at the location of each point. As you will see if you run this command, the heavy mass does not win against the lighter mass. Instead the machine oscillates non-periodically. Since the motion is non-periodic, the plot benefits from being drawn as a sequence of unconnected points. We conclude by mentioning a few features of `ode' that may be useful when things are not going quite right. One of them is the `examine' statement. It may be used to discover pertinent information about any variable in a system. For details, see *Note Input Language::. Another useful feature is that the `print' statement may be used to print out more than just the value of a variable. As we have seen, if the name of the variable is followed by `'', the derivative of the variable will be printed instead. In a similar way, following the variable name with `?', `!', or `~' prints respectively the relative single-step error, the absolute single-step error, or the accumulated error (not currently implemented). These quantities are discussed in *Note Numerical Error::. The `print' statement may be more complicated than was shown in the preceding examples. Its general structure is print [every ] [from ] The bracket notation `[...]' means that the enclosed statements are optional. Until now we have not mentioned the `every' clause or the `from' clause. The is familiar, however; it is simply a comma-separated list of variables. For example, in the statement print t, y, y' every 5 from 1 the is . The clauses `every 5' and `from 1' specify that printing should take place after every fifth step, and that the printing should begin when the independent variable t reaches 1. An `every' clause is useful if you wish to `thin out' the output generated by a `step' statement, and a `from' clause is useful if you wish to view only the final portion of a solution curve.  File: plotutils.info, Node: ode Invocation, Next: Diagnostics, Prev: Additional ode Examples, Up: ode 8.4 `ode' command-line options ============================== The command-line options to `ode' are listed below. There are several sorts of option: 1. Options affecting the way in which input is read. 2. Options affecting the format of the output. 3. Options affecting the choice of numerical solution scheme, and the error bounds that will be imposed on it. 4. Options that request information. The following option affects the way input is read. `-f FILENAME' `--input-file FILENAME' Read input from FILENAME before reading from standard input. The following options affect the output format. `-p SIGNIFICANT-DIGITS' `--precision SIGNIFICANT-DIGITS' (Positive integer, default 6.) When printing numerical results, use a precision specified by SIGNIFICANT-DIGITS. If this option is given, the print format will be scientific notation. `-t' `--title' Print a title line at the head of the output, naming the columns. If this option is given, the print format will be scientific notation. The following options specify the numerical integration scheme. Only one of the three basic option `-R', `-A', and `-E' may be specified. The default is `-R' (Runge-Kutta-Fehlberg). `-R [STEPSIZE]' `--runge-kutta [STEPSIZE]' Use a fifth-order Runge-Kutta-Fehlberg algorithm, with an adaptive stepsize unless a constant stepsize is specified. When a constant stepsize is specified and no error analysis is requested, then a classical fourth-order Runge-Kutta scheme is used. `-A [STEPSIZE]' `--adams-moulton [STEPSIZE]' Use a fourth-order Adams-Moulton predictor-corrector scheme, with an adaptive stepsize unless a constant stepsize, STEPSIZE, is specified. The Runge-Kutta-Fehlberg algorithm is used to get past `bad' points (if any). `-E [STEPSIZE]' `--euler [STEPSIZE]' Use a `quick and dirty' Euler scheme, with a constant stepsize. The default value of STEPSIZE is 0.1. Not recommended for serious applications. The error bound options `-r' and `-e' (see below) may not be used if `-E' is specified. `-h HMIN [HMAX]' `--step-size-bound HMIN [HMAX]' Use a lower bound HMIN on the stepsize. The numerical scheme will not let the stepsize go below HMIN. The default is to allow the stepsize to shrink to the machine limit, i.e., the minimum nonzero double-precision floating point number. The optional argument HMAX, if included, specifies a maximum value for the stepsize. It is useful in preventing the numerical routine from skipping quickly over an interesting region. The following options set the error bounds on the numerical solution scheme. `-r RMAX [RMIN]' `--relative-error-bound RMAX [RMIN]' `-e EMAX [EMIN]' `--absolute-error-bound EMAX [EMIN]' The `-r' option sets an upper bound on the relative single-step error. If the `-r' option is used, the relative single-step error in any dependent variable will never exceed RMAX (the default for which is 10^(-9)). If this should occur, the solution will be abandoned and an error message will be printed. If the stepsize is not constant, the stepsize will be decreased `adaptively', so that the upper bound on the single-step error is not violated. Thus, choosing a smaller upper bound on the single-step error will cause smaller stepsizes to be chosen. A lower bound RMIN may optionally be specified, to suggest when the stepsize should be increased (the default for RMIN is RMAX/1000). The `-e' option is similar to `-r', but bounds the absolute rather than the relative single-step error. `-s' `--suppress-error-bound' Suppress the ceiling on single-step error, allowing `ode' to continue even if this ceiling is exceeded. This may result in large numerical errors. Finally, the following options request information. `--help' Print a list of command-line options, and then exit. `--version' Print the version number of `ode' and the plotting utilities package, and exit.  File: plotutils.info, Node: Diagnostics, Next: Numerical Error, Prev: ode Invocation, Up: ode 8.5 Diagnostic messages ======================= `ode' is always in one of two states: * Reading input. The input includes a specification of a system of ordinary differential equations, together with instructions for solving it numerically: a `print' line and a `step' line. * Numerically solving a system, and printing the resulting output. `ode' moves from the first to the second state after it sees and processes a `step' line. It returns to the first state after the generated output has been printed. Errors may occur in the `reading' state or the `solving' state, and may terminate computations or even cause `ode' to exit. We now explain the possible sorts of error. While reading input, `ode' may encounter a syntax error: an ungrammatical line that it is unable to parse. (For a summary of its input grammar, see *Note Input Language::.) If so, it emits the error message ode::nnn: syntax error where `nnn' is the number of the line containing the error. When the `-f filename' option is used to specify an input file, the error message will read ode:filename:nnn: syntax error for errors encountered inside the input file. Subsequently, when `ode' begins reading the standard input, line numbers will start over again from 1. No effort is made to recover from syntax errors in the input. However, there is a meager effort to resynchronize, so that more than one syntax error in a file may be found at the same time. It is also possible that a fatal arithmetic exception (such as a division by zero, or a floating point overflow) may occur while `ode' is reading input. If such an exception occurs, `ode' will print an "Floating point exception" error message and exit. Arithmetic exceptions are machine-dependent. On some machines, the line y = 1/0 would induce an arithmetic exception. Also on some machines (not necessarily the same ones), the lines y = 1e100 z = y^4 would induce an arithmetic exception. That is because on most machines, the double precision quantities that `ode' uses internally are limited to a maximum size of approximately 1.8x10^308. When `ode' is in the `solving' state, i.e., computing a numerical solution, similar arithmetic exceptions may occur. If so, the solution will be interrupted and a message resembling ode: arithmetic exception while calculating y' will be printed. However, `ode' will not exit; the exception will be `caught'. `ode' itself recognizes the following exceptional conditions: square root of a negative number, logarithm of a non-positive number, and negative number raised to a non-integer power. `ode' will catch any of these operations before it is performed, and print an error message specifying which illegal operation it has encountered. ode: square root of a negative number while calculating y' would be a typical error message. If the machine on which `ode' is running supports the `matherr' facility for reporting errors in the computation of standard mathematical functions, it will be used. This facility reports domain errors and range errors (overflows, underflows, and losses of significance) that could occur when evaluating such functions as `log', `gamma', etc.; again, before they are performed. If the `matherr' facility is present, the error message will be fairly informative. For example, the error message ode: range error (overflow) in lgamma while calculating y' could be generated if the logarithmic gamma function `lgamma' is evaluated at a value of its argument that is too large. The generation of any such message, except a message warning of an underflow, will cause the numerical solution to be interrupted. There is another sort of error that may occur during numerical solution: the condition that an error ceiling, which the user may set with the `-r' option or the `-e' option, is exceeded. This too will cause the numerical solution to be abandoned, and `ode' to switch back to reading input.  File: plotutils.info, Node: Numerical Error, Next: Running Time, Prev: Diagnostics, Up: ode 8.6 Numerical error and how to avoid it ======================================= This discussion is necessarily incomplete. Entire books exist on any subject mentioned below (e.g., floating point error). Our goals are modest: first, to introduce the basic notions of error analysis as they apply to `ode'; second, to steer you around the more obvious pitfalls. You should look through a numerical analysis text (e.g., Atkinson's `Introduction to Numerical Analysis') before beginning this discussion. We begin with some key definitions. The error of greatest concern is the difference between the actual solution and the numerical approximation to the solution; this is termed the _accumulated error_, since the error is built up during each numerical step. Unfortunately, an estimate of this error is usually not available without knowledge of the actual solution. There are, however, several more usable notions of error. The _single-step error_, in particular, is the difference between the actual solution and the numerical approximation to the solution after any single step, assuming the value at the beginning of the step is correct. The _relative single-step error_ is the single-step error, divided by the current value of the numerical approximation to the solution. Why not divided by the current value of the solution itself? The reason is that the solution is not exactly known. When free to choose a stepsize, `ode' will do so on the basis of the relative single-step error. By default, it will choose the stepsize so as to maintain an accuracy of eight significant digits in each step. That is, it will choose the stepsize so as not to violate an upper bound of 10^(-9) on the relative single-step error. This ceiling may be adjusted with the `-r' option. Where does numerical error come from? There are two sources. The first is the finite precision of machine computation. All computers work with floating point numbers, which are not real numbers, but only an approximation to real numbers. However, all computations performed by `ode' are done to double precision, so floating point error tends to be relatively small. You may nonetheless detect the difference between real numbers and floating point numbers by experimenting with the `-p 17' option, which will print seventeen significant digits. On most machines, that is the precision of a double precision floating point number. The second source of numerical error is often called the _theoretical truncation error_. It is the difference between the actual solution and the approximate solution due solely to the numerical scheme. At the root of many numerical schemes is an infinite series; for ordinary differential equations, it is a Taylor expansion. Since the computer cannot compute all the terms in an infinite series, a numerical scheme necessarily uses a truncated series; hence the term. The single-step error is the sum of the theoretical truncation error and the floating point error, though in practice the floating point error is seldom included. The single-step error estimated by `ode' consists only of the theoretical truncation error. We say that a numerical scheme is _stable_, when applied to a particular initial value problem, if the error accumulated during the solution of the problem over a fixed interval decreases as the stepsize decreases; at least, over a wide range of step sizes. With this definition both the Runge-Kutta-Fehlberg (`-R') scheme and the Adams-Moulton (`-A') scheme are stable (a statement based more on experience than on theoretical results) for a wide class of problems. After these introductory remarks, we list some common sources of accumulated error and instability in any numerical scheme. Usually, problems with large accumulated error and instability are due to the single-step error in the vicinity of a `bad' point being large. 1. Singularities. `ode' should not be used to generate a numerical solution on any interval containing a singularity. That is, `ode' should not be asked to step over points at which the system of differential equations is singular or undefined. You will find the definitions of singular point, regular singular point, and irregular singular point in any good differential equations text. If you have no favorite, try Birkhoff and Rota's `Ordinary Differential Equations', Chapter 9. Always locate and classify the singularities of a system, if any, before applying `ode'. 2. Ill-posed problems. For `ode' to yield an accurate numerical solution on an interval, the true solution must be defined and well-behaved on that interval. The solution must also be real. Whenever any of these conditions is violated, the problem is said to be _ill-posed_. Ill-posedness may occur even if the system of differential equations is well-behaved on the interval. Strange results, e.g., the stepsize suddenly shrinking to the machine limit or the solution suddenly blowing up, may indicate ill-posedness. As an example of ill-posedness (in fact, an undefined solution) consider the innocent-looking problem: y' = y^2 y(1) = -1 The solution on the domain t > 0 is y(t) = -1/t. With this problem you must not compute a numerical solution on any interval that includes t=0. To convince yourself of this, try to use the `step' statement step 1, -1 on this system. How does `ode' react? As another example of ill-posedness, consider the system y'=1/y which is undefined at y=0. The general solution is y = +/- (2(t-C))^(1/2), so that if the condition y(2)=2 is imposed, the solution will be (2t)^(1/2). Clearly, if the domain specified in a `step' statement includes negative values of t, the generated solution will be bogus. In general, when using a constant stepsize you should be careful not to `step over' bad points or bad regions. When allowed to choose a stepsize adaptively, `ode' will often spot bad points, but not always. 3. Critical points. An _autonomous_ system is one that does not include the independent variable explicitly on the right-hand side of any differential equation. A _critical point_ for such a system is a point at which all right-hand sides equal zero. For example, the system y' = 2x x' = 2y has only one critical point, at (x,y) = (0,0). A critical point is sometimes referred to as a _stagnation point_. That is because a system at a critical point will remain there forever, though a system near a critical point may undergo more violent motion. Under some circumstances, passing near a critical point may give rise to a large accumulated error. As an exercise, solve the system above using `ode', with the initial condition x(0) = y(0) = 0. The solution should be constant in time. Now do the same with points near the critical point. What happens? You should always locate the critical points of a system before attempting a solution with `ode'. Critical points may be classified (as equilibrium, vortex, unstable, stable, etc.) and this classification may be of use. To find out more about this, consult any book dealing with the qualitative theory of differential equations (e.g., Birkhoff and Rota's `Ordinary Differential Equations', Chapter 6). 4. Unsuitable numerical schemes If the results produced by `ode' are bad in the sense that instability appears to be present, or an unusually small stepsize needs to be chosen needed in order to reduce the single-step error to manageable levels, it may simply be that the numerical scheme being used is not suited to the problem. For example, `ode' currently has no numerical scheme which handles so-called `stiff' problems very well. As an example, you may wish to examine the stiff problem: y' = -100 + 100t + 1 y(0) = 1 on the domain [0,1]. The exact solution is y(t) = e^(-100t) + t. It is a useful exercise to solve this problem with `ode' using various numerical schemes, stepsizes, and relative single-step error bounds, and compare the generated solution curves with the actual solution. There are several rough and ready heuristic checks you may perform on the accuracy of any numerical solution produced by `ode'. We discuss them in turn. 1. Examine the stability of solution curves: do they converge? That is, check how changing the stepsize affects a solution curve. As the stepsize decreases, the curve should converge. If it does not, then the stepsize is not small enough or the numerical scheme is not suited to the problem. In practice, you would proceed as follows. * If using an adaptive stepsize, superimpose the solution curves for successively smaller bounds on the relative single-step error (obtained with, e.g., `-r 1e-9', `-r 1e-11', `-r 1e-13', ...). If the curves converge then the solution is to all appearances stable, and your accuracy is sufficient. * If employing a constant stepsize, perform a similar analysis by successively halving the stepsize. The following example is one that you may wish to experiment with. Make a file named `qcd' containing: # an equation arising in QCD (quantum chromodynamics) f' = fp fp' = -f*g^2 g' = gp gp' = g*f^2 f = 0; fp = -1; g = 1; gp = -1 print t, f step 0, 5 Next make a file named `stability', containing the lines: : sserr is the bound on the relative single-step error for sserr do ode -r $sserr < qcd done | spline -n 500 | graph -T X -C This is a `shell script', which when run will superimpose numerical solutions with specified bounds on the relative single-step error. To run it, type: sh stability 1 .1 .01 .001 and a plot of the solutions with the specified error bounds will be drawn. The convergence, showing stability, should be quite illuminating. 2. Check invariants of the system: are they constant? Many systems have invariant quantities. For example, if the system is a mathematical model of a `conservative' physical system then the `energy' (a particular function of the dependent variables of the system) should be constant in time. In general, knowledge about the qualitative behavior of any dependent variable may be used to check the quality of the solution. 3. Check a family of solution curves: do they diverge? A rough idea of how error is propagated is obtained by viewing a family of solution curves about the numerical solution in question, obtained by varying the initial conditions. If they diverge sharply--that is, if two solutions which start out very close nonetheless end up far apart--then the quality of the numerical solution is dubious. On the other hand, if the curves do not diverge sharply then any error that is present will in all likelihood not increase by more than an order of magnitude or so over the interval. Problems exhibiting no sharp divergence of neighboring solution curves are sometimes called _well-conditioned_.  File: plotutils.info, Node: Running Time, Next: Input Language, Prev: Numerical Error, Up: ode 8.7 Running time ================ The time required for `ode' to solve numerically a system of ordinary differential equations depends on a great many factors. A few of them are: number of equations, complexity of equations (number of operators and nature of the operators), and number of steps taken (a very complicated function of the difficulty of solution, unless constant stepsizes are used). The most effective way to gauge the time required for solution of a system is to clock a short or imprecise run of the problem, and reason as follows: the time required to take two steps is roughly twice that required for one; and there is a relationship between the number of steps required and the relative error ceiling chosen. That relationship depends on the numerical scheme being used, the difficulty of solution, and perhaps on the magnitude of the error ceiling itself. A few carefully planned short runs may be used to determine this relationship, enabling a long but imprecise run to be used as an aid in projecting the cost of a more precise run over the same region. Lastly, if a great deal of data is printed, it is likely that more time is spent in printing the results than in computing the numerical solution.  File: plotutils.info, Node: Input Language, Next: ODE Bibliography, Prev: Running Time, Up: ode 8.8 The `ode' input language formally specified =============================================== The following is a formal specification of the grammar for `ode''s input language, in Backus-Naur form. Nonterminal symbols in the grammar are enclosed in angle brackets. Terminal tokens are in all capitals. Bare words and symbols stand for themselves. ::= ... empty ... | ::= SEP | IDENTIFIER = SEP | IDENTIFIER ' = SEP | print SEP | step , , SEP | step , SEP | examine IDENTIFIER SEP ::= | , ::= IDENTIFIER | IDENTIFIER ' | IDENTIFIER ? | IDENTIFIER ! | IDENTIFIER ~ ::= ... empty ... | every ::= ... empty ... | from ::= ::= ( ) | + | - | * | / | ^ | FUNCTION ( ) | - | NUMBER | IDENTIFIER Since this grammar is ambiguous, the following table summarizes the precedences and associativities of operators within expressions. Precedences decrease from top to bottom. Class Operators Associativity Exponential ^ right Multiplicative * / left Additive + - left As noted in the grammar, there are six types of nontrivial statement. We now explain the effects (the `semantics') of each type, in turn. 1. IDENTIFIER ' = This defines a first-order differential equation. The derivative of IDENTIFIER is specified by . If a dynamic variable does not appear on the left side of a statement of this form, its derivative is assumed to be zero. That is, it is a symbolic constant. 2. IDENTIFIER = This sets the value of IDENTIFIER to the current value of . Dynamic variables that have not been initialized in this way are set to zero. 3. step , 4. step , , A `step' statement causes the numerical scheme to be executed. The first is the initial value of the independent variable. The second is its final value. The third is a stepsize; if given, it overrides any stepsize that may be specified on the command line. Usually the stepsize is not specified, and it varies adaptively as the computation proceeds. 5. print [ every ] [ from ] A `print' statement controls the content and frequency of the numerical output. is a comma-separated list of IDENTIFIERs, where each IDENTIFIER may be followed by `'', denoting the derivative, or `?', denoting the relative single-step error, or `!', denoting the absolute single-step error, or `~', denoting the accumulated error (not currently implemented). The specified values are printed in the order they are found. Both the `every' clause and the `from' clause are optional. If the `every' clause is present, a printing occurs every iterations of the numerical algorithm. The default is to print on every iteration (i.e. `every 1'). The first and last values are always printed. If the `from' clause is present, it means to begin printing when the independent variable reaches or exceeds . The default is to begin printing immediately. If no `print' statement has been supplied, then the independent variable and all dependent variables which have differential equations associated with them are printed. The independent variable is printed first; the dependent variables follow in the order their equations were given. 6. examine IDENTIFIER An `examine' statement, when executed, causes a table of interesting information about the named variable to be printed on the standard output. For example, if the statement `examine y' were encountered after execution of the `ode to Euler' example discussed elsewhere, the output would be: "y" is a dynamic variable value:2.718282 prime:2.718282 sserr:1.121662e-09 aberr:3.245638e-09 acerr:0 code: push "y" The phrase `dynamic variable' means that there is a differential equation describing the behavior of y. The numeric items in the table are: value Current value of the variable. prime Current derivative of the variable. sserr Relative single-step error for the last step taken. aberr Absolute single-step error for the last step taken. acerr Total error accumulated during the most recent `step' statement. Not currently implemented. The `code' section of the table lists the stack operations required to compute the derivative of y (somewhat reminiscent of a reverse Polish calculator). This information may be useful in discovering whether the precedences in the differential equation statement were interpreted correctly, or in determining the time or space expense of a particular calculation. `push "y"' means to load y's value on the stack, which is all that is required to compute its derivative in this case. The grammar for the `ode' input language contains four types of terminal token: FUNCTION, IDENTIFIER, NUMBER, and SEP. They have the following meanings. 1. FUNCTION One of the words: abs, sqrt, exp, log, ln, log10, sin, cos, tan, asin, acos, atan, sinh, cosh, tanh, asinh, acosh, atanh, floor, ceil, besj0, besj1, besy0, besy1, erf, erfc, inverf, lgamma, gamma, norm, invnorm, ibeta, igamma. These are defined to have the same meaning as in the plotting program `gnuplot'. All functions take a single argument, except for ibeta, which takes three, and igamma, which takes two. For trigonometric functions, all arguments are expressed in radians. The atan function is defined to give a value between -PI/2 and PI/2 (inclusive). 2. IDENTIFIER A sequence of alphanumeric characters starting with an alphabetic character. The first 32 characters are significant. Upper and lower-case letters are distinct. In identifiers, the underscore character is considered alphabetic. Function names and keywords may not be used as identifiers, nor may `PI'. 3. NUMBER A non-empty sequence of digits possibly containing a decimal point and possibly followed by an exponent. An exponent is `e' or `E', followed by an (optionally signed) one, two, or three-digit number. All numbers and all parts of numbers are radix 10. A number may not contain any white space. The special word `PI' is a number. 4. SEP A separator: a semicolon or a (non-escaped) newline. In the `ode' input language, upper and lower-case letters are distinct. Comments begin with the character `#' and continue to the end of the line. Long lines may be continued onto a second line by ending the first line with a backslash (`\'). That is because the combination backslash-newline is equivalent to a space. Spaces or tabs are required in the input whenever they are needed to separate identifiers, numbers, and keywords from one another. Except as separators, they are ignored.  File: plotutils.info, Node: ODE Bibliography, Prev: Input Language, Up: ode 8.9 Bibliography on `ode' and solving differential equations ============================================================ K. E. Atkinson, `An Introduction to Numerical Analysis', Wiley, 1978. Chapter 6 contains a discussion of the literature on the numerical solution of ordinary differential equations. G. Birkhoff and G. Rota, `Ordinary Differential Equations', 4th ed., Wiley, 1989. N. B. Tufillaro, T. Abbott, and J. Reilly, `An Experimental Approach to Nonlinear Dynamics and Chaos', Addison-Wesley, 1992. Appendix C discusses an earlier version of `ode'. N. B. Tufillaro, E. F. Redish, and J. S. Risley, "`ode': A numerical simulation of ordinary differential equations," pp. 480-481 in `Proceedings of the Conference on Computers in Physics Instruction', Addison-Wesley, 1990.  File: plotutils.info, Node: libplot, Next: Appendices, Prev: ode, Up: Top 9 `libplot', a 2-D Vector Graphics Library ****************************************** This is the documentation for version 4.4 of GNU libplot, which is a free function library for drawing two-dimensional vector graphics. * Menu: * libplot Overview:: Programming with libplot: An overview * C Programming:: C programming with libplot * C++ Programming:: C++ programming with libplotter * Functions:: A list of functions contained in libplot * Plotter Parameters:: Plotter parameters  File: plotutils.info, Node: libplot Overview, Next: C Programming, Prev: libplot, Up: libplot 9.1 Programming with `libplot': An overview =========================================== GNU `libplot' 4.4 is a free function library for drawing two-dimensional vector graphics. It can produce smooth, double-buffered animations for the X Window System, and can export graphics files in many file formats. It is `device-independent' in the sense that its API (application programming interface) is to a large extent independent of the output format. The API is thread-safe, so it may be used in multithreaded programs. There are bindings for C, C++, and other languages. The C binding, which is the most frequently used, is also called `libplot', and the C++ binding, when it needs to be distinguished, is called `libplotter'. In this section we use `libplot' to refer to the library itself, irrespective of binding. The graphical objects that `libplot' can draw include paths, `adjusted labels' (i.e., justified text strings), marker symbols, and points (i.e., pixels). Paths may be simple or compound. A simple path is a contiguous sequence of line segments, circular arcs, elliptic arcs, quadratic Bezier curves, and/or cubic Bezier curves. A simple path may also be a circle, an ellipse, or a rectangle. A compound path consists of one or more nested simple paths. User-specified filling of paths, both simple and compound, is supported (fill color and fill rule, as well as pen color, may be specified). There is support for maintaining a Postscript-style stack of graphics contexts, i.e., a stack of drawing attribute sets. Path-related attributes include pen color, line thickness, line type, cap type, join type, miter limit, fill color, fill rule, and transformation matrix, and text-related attributes include font name, font size, text angle, and transformation matrix. The fundamental abstraction provided by `libplot' is that of a _Plotter_. A Plotter is an object with an interface for the drawing of vector graphics which is similar to the interface provided by a traditional pen plotter. There are many types of Plotter, which differ in the output format they produce. Any number of Plotters, of the same or different types, may exist simultaneously in an application. The drawing operations supported by Plotters of different types are identical, in agreement with the principle of device independence. So a graphics application that is linked with `libplot' may easily be written so as to produce output in any or all of the supported output formats. The following are the currently supported types of Plotter. * X Plotters. An X Plotter, when opened, pops up a window on an X Window System display and draws graphics in it. The window will be `spun off' when the Plotter is closed; if it is subsequently reopened, a new window will be popped up. A spun-off window will remain on the screen but will vanish if you type `q' or click your mouse in it. Future releases may permit X Plotters, when reopened, to reuse an existing window. * X Drawable Plotters. An X Drawable Plotter draws graphics in one or two specified drawables associated with an X Window System display. A `drawable' is either a window or a pixmap. The drawables must be passed to the Plotter as parameters. (*Note Plotter Parameters::.) * PNG Plotters. A PNG Plotter produces a single page of output in PNG (Portable Network Graphics) format, and directs it to a file or other specified output stream. The file may be viewed or edited with many applications, such as `display', which is part of the free `ImageMagick' package. * PNM Plotters. A PNM Plotter produces a single page of output in "portable anymap" format, and directs it to a file or other specified output stream. There are three types of portable anymap: PBM (portable bitmap, for monochrome graphics), PGM (portable graymap), and PPM (portable pixmap, for colored graphics). The output file will be in whichever of these three formats is most appropriate. The file may be viewed or edited with many applications, such as `display'. * GIF Plotters. A GIF Plotter produces a single page of output in a pseudo-GIF format. Unlike true GIF format, the pseudo-GIF format does not use LZW compression: it uses run-length encoding instead. So it does not transgress the Unisys patent that restricts the use of LZW compression. However, the output file may be viewed or edited with any application that understands GIF format, such as `display'. The creation of animated pseudo-GIFs is supported. * SVG Plotters. An SVG Plotter produces a single page of output in Scalable Vector Graphics format and directs it to a file or other specified output stream. SVG is an XML-based format for vector graphics on the Web, which is being developed by the Graphics Activity (http://www.w3.org/Graphics) of the W3 Consortium (http://www.w3.org). The output conforms to the 3 March 2000 version of the SVG specification. * Illustrator Plotters. An Illustrator Plotter produces a single page of output in the format used by Adobe Illustrator, and directs it to a file or other specified output stream. The file may be edited with Adobe Illustrator (version 5, and more recent versions), or other applications. * Postscript Plotters. A Postscript Plotter produces Postscript output and directs it to a file or other specified output stream. If only a single page of graphics is drawn on the Plotter then its output is in EPS (encapsulated Postscript) format, so it may be included in another document. It may also be edited with the free `idraw' drawing editor. See *Note idraw::. * CGM Plotters. A CGM Plotter produces output in Computer Graphics Metafile format and directs it to a file or other specified output stream. By default, binary-encoded version 3 CGM format is used. The output complies with the WebCGM profile for Web-based vector graphics, so it may be displayed in any Web browser with WebCGM support. The CGM Open Consortium (http://www.cgmopen.org) has more information on WebCGM. * Fig Plotters. A Fig Plotter produces a single page of output in Fig format and directs it to a file or other specified output stream. The output may be edited with the free `xfig' drawing editor. The `xfig' editor can export drawings in various other formats for inclusion in documents. See *Note xfig::. * PCL Plotters. A PCL Plotter produces output in PCL 5 format and directs it to a file or other specified output stream. PCL 5 is a powerful version of Hewlett-Packard's Printer Control Language, which supports vector graphics. The output may be sent to a PCL 5 device such as a LaserJet printer or high-end inkjet. * HP-GL Plotters. An HP-GL Plotter produces output in the Hewlett-Packard Graphics Language (by default, in HP-GL/2), and directs it to a file or other specified output stream. The output may be imported into another application, or sent to a plotter. * ReGIS Plotters. A ReGIS Plotter produces output in ReGIS (remote graphics instruction set) format and directs it to a file or other specified output stream. The output may be displayed on any terminal or emulator that understands ReGIS format. This includes several terminals from DEC (in particular, the VT340, VT330, VT241, and VT240 terminals), and `dxterm', the DECwindows terminal emulation program. * Tektronix Plotters. A Tektronix Plotter produces output in Tektronix 4014 format and directs it to a file or other specified output stream. The output may be displayed on any Tektronix 4014 emulator. Such an emulator is built into `xterm', the X Window System terminal emulation program. The MS-DOS version of `kermit' also includes such an emulator. * Metafile Plotters. A Metafile Plotter produces output in GNU graphics metafile format and directs it to a file or other specified output stream. This format is an extended version of the `plot(5)' format found on some other operating systems. (*Note Metafiles::.) It may be translated to other formats by an invocation of GNU `plot'. (*Note plot::.) A distinction among these types of Plotter is that all except X and X Drawable Plotters write graphics to a file or other output stream. An X Plotter pops up its own windows, and an X Drawable Plotter draws graphics in one or two X drawables. Another distinction is that the first five types of Plotter (X, X Drawable, PNG, PNM, and GIF) produce bitmap output, while the remaining types produce output in a vector graphics format. In bitmap output the structure of the graphical objects is lost, but in a vector format it is retained. An additional distinction is that X, X Drawable, ReGIS, Tektronix and Metafile Plotters are real-time. This means that they draw graphics or write to an output stream as the drawing operations are invoked on them. The remaining types of Plotter are not real-time, since their output streams can only be emitted after all functions have been called. For PNM and GIF Plotters, this is because the bitmap must be constructed before it is written out. For Illustrator and Postscript Plotters, it is because a `bounding box' line must be placed at the head of the output file. For a Fig Plotter, it is because color definitions must be placed at the head of the output file. The most important operations supported by any Plotter are `openpl' and `closepl', which open and close it. Graphics may be drawn, and drawing attributes set, only within an `openpl'...`closepl' pair. The graphics produced within each `openpl'...`closepl' pair constitute a `page'. In principle, any Plotter may be opened and closed arbitrarily many times. An X Plotter displays each page in a separate X window, and Postscript, PCL, and HP-GL Plotters render each page as a separate physical page. X Drawable, ReGIS and Tektronix Plotters manipulate a single drawable or display, on which pages are displayed in succession. Plotters that do not draw in real time (PNG, PNM, GIF, Illustrator, Postscript, CGM, Fig, PCL, and HP-GL Plotters) may wait until their existence comes to an end (i.e., until they are deleted) before outputting their pages of graphics. In the current release of `libplot', Postscript and CGM Plotters delay outputting graphics in this way, but PCL and HP-GL Plotters output each page of graphics individually, i.e., when `closepl' is invoked. PNG, PNM, GIF, SVG, Illustrator and Fig Plotters are similar, but output only the first page. That is because PNG, PNM, GIF, SVG, Illustrator and Fig formats support only a single page of graphics. The graphics display, or `viewport', that is drawn in by a Plotter is normally a square or rectangular region on its output device. But when using any Plotter to draw graphics, a user will specify the coordinates of graphical objects in device-independent `user' coordinates, not in device coordinates. A Plotter transforms user coordinates to device coordinates by performing an affine transformation. After invoking `openpl' to open a Plotter, an application would usually invoke `space'. `space' specifies a rectangular `window' in the user coordinate system that will be mapped affinely to the viewport on the output device. (The default window is a square, with opposite corners (0,0) and (1,1).) The transformation from user coordinates to device coordinates may be updated at any later time by reinvoking `space', or by invoking `fconcat'. The `fconcat' operation will concatenate (i.e., compose) the current affine transformation with any specified affine transformation. This sort of concatenation is a capability familiar from, e.g., Postscript. Each Plotter maintains a Postscript-style stack of graphics contexts. This makes possible the rapid, efficient drawing of complicated pages of graphics. A graphics context includes the current affine transformation from user coordinates to device coordinates. It also includes such modal drawing attributes as graphics cursor position, pen color, line type, line thickness, fill color, and the font used for drawing text. The state of any uncompleted path (if any) is included as well, since paths may be drawn incrementally, one portion (line segment, arc, or Bezier curve) at a time. *Warning*: Much as in Postscript, the current graphics context may be pushed onto the stack by calling `savestate', and popped off by calling `restorestate'. However, `libplot''s and Postscript's drawing models are significantly different. In `libplot', the new graphics context created by `savestate' contains no path. So a new path may be constructed in it from scratch, and drawn. Afterwards, the path in the former graphics context will be returned to when `restorestate' is called, at which time it may be extended further. Another difference from Postscript is that in `libplot', there is no need to start a new path by calling a ``newpath'' function. Instead, you just start drawing. At least in theory, you do need to end a path explicitly, by calling `endpath' to request that it be drawn on the graphics display. But the call to `endpath' can usually be omitted. For example, calling `restorestate' automatically invokes `endpath' to end the path (if any) contained in the current graphics context. To permit vector graphics animation, any page of graphics may be split into `frames'. A frame is ended, and a new frame is begun, by invoking the `erase' operation. This first terminates the path under construction, if any. What then happens depends on whether the Plotter does real-time plotting. If it does (i.e., if the Plotter is an X, X Drawable, ReGIS, Tektronix, or Metafile Plotter), `erase' removes all plotted objects from the graphics display, allowing a new frame to be drawn. Displaying a sequence of frames in succession creates the illusion of smooth animation. On most Plotters that do not do real-time plotting (i.e., PNG, PNM, SVG, Illustrator, Postscript, CGM, Fig, PCL, or HP-GL Plotters), invoking `erase' deletes all plotted objects from an internal buffer. For this reason, most Plotters that do not do real-time plotting will display only the final frame of any multiframe page. GIF Plotters are in a class by themselves. Even though they do not do real time plotting, a GIF Plotter can produce multi-image output, i.e., an animated pseudo-GIF file, from a multiframe page. As noted above, the pseudo-GIF file produced by a GIF Plotter will contain only the first page of graphics. But if this page consists of multiple frames, then each invocation of `erase' after the first will be treated, by default, as a separator between successive images.  File: plotutils.info, Node: C Programming, Next: C++ Programming, Prev: libplot Overview, Up: libplot 9.2 C Programming with `libplot' ================================ * Menu: * The C API:: The C application programming interface * Older C APIs:: Older C interfaces * C Compiling and Linking:: C compiling and linking * Sample C Drawings:: Sample drawings in C * Paths and Subpaths:: Simple paths and compound paths * Drawing on a Page:: Drawing on a physical page * Animated GIFs:: Animated GIFs in C * X Animations:: X Window System animations in C * X Programming:: Advanced X Window System programming  File: plotutils.info, Node: The C API, Next: Older C APIs, Prev: C Programming, Up: C Programming 9.2.1 The C application programming interface --------------------------------------------- GNU `libplot' has bindings for several programming languages. Regardless of which binding is used, the concepts behind `libplot' (Plotters, and a fixed set of operations that may be applied to any Plotter) remain the same. However, the ways in which Plotters are manipulated (created, selected for use, and deleted) may differ between bindings. This section discusses the current C binding. For information on older C bindings, see *Note Older C APIs::. In the C binding, a Plotter is implemented as an opaque datatype, `plPlotter', which must be accessed through a pointer. Each drawing operation takes a pointer to a `plPlotter' as its first argument. The functions `pl_newpl_r' and `pl_deletepl_r' are the constructor and destructor for the `plPlotter' datatype. The final argument of `pl_newpl_r' must be a pointer to a `plPlotterParams' object, which specifies Plotter parameters. `pl_newpl_r' returns a pointer to a `plPlotter'. You should always call `pl_deletepl_r' when you are finished using a Plotter. In general, Plotters that do not plot graphics in real time (Postscript Plotters and CGM Plotters in particular) write out graphics only when `pl_deletepl_r' is called. The following tables summarize the action of the Plotter manipulation functions in the C binding. plPlotter * pl_newpl_r (const char *TYPE, FILE *INFILE, FILE *OUTFILE, FILE *ERRFILE, plPlotterParams *PARAMS); Create a Plotter of type TYPE, where TYPE may be "X", "Xdrawable", "png", "pnm", "gif", "svg", "ai", "ps", "cgm", "fig", "pcl", "hpgl", "regis", "tek", or "meta". The Plotter will have input stream INFILE, output stream OUTFILE, and error stream ERRFILE. Any or all of these three may be NULL. Currently, all Plotters are write-only, so INFILE is ignored. X Plotters and X Drawable Plotters write graphics to an X Window System display rather than to an output stream, so if TYPE is "X" or "Xdrawable" then OUTFILE is ignored as well. Error messages (if any) are written to the stream ERRFILE, unless ERRFILE is NULL. All Plotter parameters will be copied from the `plPlotterParams' object pointed to by PARAMS. A NULL return value indicates the Plotter could not be created. int pl_deletepl_r (plPlotter *PLOTTER); Delete the specified Plotter. A negative return value indicates the Plotter could not be deleted. The functions `pl_newplparams', `pl_deleteplparams', and `pl_copyplparams' are the constructor, destructor, and copy constructor for the `plPlotterParams' datatype. The function `pl_setplparam' sets any single Plotter parameter in a `plPlotterParams' object. plPlotterParams * pl_newplparams (); int pl_deleteplparams (plPlotterParams *PLOTTER_PARAMS); plPlotterParams * pl_copyplparams (const plPlotterParams *PARAMS); int pl_setplparam (plPlotterParams *PARAMS, const char *PARAMETER, void *VALUE); Set the value of the parameter PARAMETER to VALUE in the object pointed to by PARAMS. For most parameters, VALUE should be a `char *', i.e., a string. If VALUE is NULL, the parameter is unset. For a list of recognized parameters and their meaning, see *Note Plotter Parameters::. Unrecognized parameters are ignored. The reason why the `plPlotterParams' datatype exists is that even though the Plotter interface is largely Plotter-independent, it is useful to be able to specify certain aspects of a Plotter's behavior at creation time. If a a parameter has been set in the specified `plPlotterParams' object, that will be the value used by the Plotter. If a parameter is _not_ set, the Plotter will use a default value for it, unless the parameter is string-valued and there is an environment variable of the same name, in which case the value of that environment variable will be used. This rule increases run-time flexibility: an application programmer may allow non-critical Plotter parameters to be specified by the user via environment variables. In the C binding, each drawing operation that may be invoked on a Plotter is represented by a function whose name begins with "pl_" and ends with "_r". For example, the `openpl' operation is invoked on a Plotter by calling the function `pl_openpl_r', the first argument of which is a pointer to the corresponding `plPlotter' object.  File: plotutils.info, Node: Older C APIs, Next: C Compiling and Linking, Prev: The C API, Up: C Programming 9.2.2 Older C application programming interfaces ------------------------------------------------ The current C API (application programming interface), which is thread-safe, is a revision of an older API that is not thread-safe. That is why most functions in the current API have names that end in "_r", which stands for `revised' or `reentrant'. In the old C API, the Plotter on which an operation was performed is not specified as an argument of the function that was called to perform the operation. Instead, a Plotter is first `selected'. Then the API function is called. `pl_openpl' was one such function; it opens the currently selected Plotter, i.e., begins a page of graphics. The old API is deprecated, but is still supported. The four functions in the old API that perform Plotter manipulation have the following semantics. int pl_newpl (const char *TYPE, FILE *INFILE, FILE *OUTFILE, FILE *ERRFILE); Create a Plotter of type TYPE, where TYPE may be "X", "Xdrawable", "png", "pnm", "gif", "svg", "ai", "ps", "fig", "pcl", "hpgl", "regis", "tek", or "meta". The Plotter will have input stream INFILE, output stream OUTFILE, and error stream ERRFILE. The return value is a `handle': a nonnegative integer by which the newly created Plotter is referred to. A negative return value indicates the Plotter could not be created. int pl_selectpl (int HANDLE); Select a Plotter, referred to by its handle, for use. Only one Plotter may be selected at a time. A negative return value indicates the specified Plotter could not be selected. Otherwise, the return value is the handle of the previously selected Plotter. At startup, a single Metafile Plotter that writes to standard output (with handle `0') is automatically created and selected. int pl_deletepl (int HANDLE); Delete a Plotter, specified by its handle. The Plotter must not be selected at the time it is deleted. A negative return value indicates the Plotter could not be deleted. int pl_parampl (const char *PARAMETER, void *VALUE); Set the global value of the Plotter parameter PARAMETER to VALUE. The parameter values in effect at the time any Plotter is created will be copied into it. In the old API, selecting a Plotter with `pl_selectpl' and setting a value for a Plotter parameter with `pl_parampl' are global operations. That is why the old API is not thread-safe. An even older C API omitted the prefix "pl_" from the names of `libplot' functions. The prefix "pl_" was added in part to distinguish GNU `libplot' from pre-GNU versions of `libplot'. If you need to compile code written for very early versions of GNU `libplot' or for pre-GNU `libplot', you should include the header file `plotcompat.h'. `plotcompat.h' redefines `openpl' as `pl_openpl', and so forth. *Note C Compiling and Linking::.  File: plotutils.info, Node: C Compiling and Linking, Next: Sample C Drawings, Prev: Older C APIs, Up: C Programming 9.2.3 C compiling and linking ----------------------------- The source code for a graphics application written in C, if it is to use the GNU `libplot' C API (C application programming interface), must contain the lines #include #include The header file `plot.h' is distributed with `libplot', and should have been installed on your system where your C compiler will find it. It contains a prototype for each of the functions in the C API, and some miscellaneous definitions. To each Plotter operation there corresponds a function in the C API whose name begins with "pl_" and ends with "_r". To invoke the Plotter operation, this function would be called. For example, the `openpl' operation would be invoked on a Plotter by calling the function `pl_openpl_r', the first argument of which is a pointer to the Plotter. All such functions are declared in `plot.h'. In releases of GNU `libplot' before `libplot' 3.0, Plotter operations were performed in a different way. For example, there was a function `pl_openpl' that operated on a Plotter that was `selected', rather than specified as an argument. The old C API is still supported by `plot.h'. For more information on it, see *Note Older C APIs::. In even older releases of GNU `libplot', and in the non-GNU versions of `libplot' that preceded it, the "pl_" prefix was not used. If you need to compile code written for early versions of GNU `libplot' or for non-GNU `libplot', you should also include the header file `plotcompat.h'. That file redefines `openpl' as `pl_openpl', and so forth. To link your application with GNU `libplot', you would use the appropriate `-l' option(s) on the command line when compiling it. You would use -lplot -lXaw -lXmu -lXt -lXext -lX11 -lpng -lz -lm or, in recent releases of the X Window System, -lplot -lXaw -lXmu -lXt -lSM -lICE -lXext -lX11 -lpng -lz -lm These linking options assume that your version of `libplot' has been compiled with PNG support; if not, you would omit the `-lpng -lz' options. As an alternative to the preceding, you may need to use `-lplot -lXm -lXt -lXext -lX11 -lpng -lz -lm', `-lplot -lXm -lXt -lXext -lX11 -lpng -lz -lm -lc -lgen', or `-lplot -lXm -lXt -lXext -lX11 -lpng -lz -lm -lc -lPW', on systems that provide Motif widgets instead of Athena widgets. In recent releases of the X Window System, you would insert `-lSM -lICE'. Recent releases of Motif require `-lXp' and possibly `-lXpm' as well.) On some platforms, the directories in which `libplot' or the other libraries are stored must be specified on the command line. For example, the options `-lXaw -lXmu -lXt -lSM -lICE -lXext -lX11', which specify X Window System libraries, may need to be preceded by an option like `-L/usr/X11/lib'. On most systems `libplot' is installed as a shared library. This means that the linking with your application will take place at run time rather than compile time. The environment variable `LD_LIBRARY_PATH' lists the directories which will be searched for shared libraries at run time. For your application to be executable, this environment variable should include the directory in which `libplot' is stored.  File: plotutils.info, Node: Sample C Drawings, Next: Paths and Subpaths, Prev: C Compiling and Linking, Up: C Programming 9.2.4 Sample drawings in C -------------------------- The following is a sample application, written in C, that invokes GNU `libplot' operations to draw vector graphics. It draws an intricate and beautiful path (Bill Gosper's "C" curve, discussed as Item #135 in `HAKMEM', MIT Artificial Intelligence Laboratory Memo #239, 1972). As the numeric constant `MAXORDER' (here equal to 12) is increased, the path will take on the shape of a curly letter "C", which is the envelope of a myriad of epicyclic octagons. #include #include #define MAXORDER 12 void draw_c_curve (plPlotter *plotter, double dx, double dy, int order) { if (order >= MAXORDER) /* continue path along (dx, dy) */ pl_fcontrel_r (plotter, dx, dy); else { draw_c_curve (plotter, 0.5 * (dx - dy), 0.5 * (dx + dy), order + 1); draw_c_curve (plotter, 0.5 * (dx + dy), 0.5 * (dy - dx), order + 1); } } int main () { plPlotter *plotter; plPlotterParams *plotter_params; /* set a Plotter parameter */ plotter_params = pl_newplparams (); pl_setplparam (plotter_params, "PAGESIZE", "letter"); /* create a Postscript Plotter that writes to standard output */ if ((plotter = pl_newpl_r ("ps", stdin, stdout, stderr, plotter_params)) == NULL) { fprintf (stderr, "Couldn't create Plotter\n"); return 1; } if (pl_openpl_r (plotter) < 0) /* open Plotter */ { fprintf (stderr, "Couldn't open Plotter\n"); return 1; } pl_fspace_r (plotter, 0.0, 0.0, 1000.0, 1000.0); /* set coor system */ pl_flinewidth_r (plotter, 0.25); /* set line thickness */ pl_pencolorname_r (plotter, "red"); /* use red pen */ pl_erase_r (plotter); /* erase graphics display */ pl_fmove_r (plotter, 600.0, 300.0); /* position the graphics cursor */ draw_c_curve (plotter, 0.0, 400.0, 0); if (pl_closepl_r (plotter) < 0) /* close Plotter */ { fprintf (stderr, "Couldn't close Plotter\n"); return 1; } if (pl_deletepl_r (plotter) < 0) /* delete Plotter */ { fprintf (stderr, "Couldn't delete Plotter\n"); return 1; } return 0; } As you can see, this application begins by creating a `plPlotterParams' object to hold Plotter parameters, and sets the `PAGESIZE' parameter. It then calls the `pl_newpl_r' function to create a Postscript Plotter. The Postscript Plotter will produce output for a US letter-sized page, though any other standard page size, e.g., "a4", could be substituted. This would be arranged by altering the call to `pl_setplparam'. The `PAGESIZE' parameter is one of several Plotter parameters that an application programmer may set. For a list, see *Note Plotter Parameters::. After the Plotter is created, the application opens it and draws the "C" curve recursively. The drawing of the curve is accomplished by calling the `pl_fmove_r' function to position the Plotter's graphics cursor, and then calling `draw_c_curve'. This subroutine repeatedly calls `pl_fcontrel_r'. The `pl_fcontrel_r' function continues a path by adding a line segment to it. The endpoint of each line segment is specified in relative floating point coordinates, i.e., as a floating point offset from the previous cursor position. After the "C" curve is drawn, the Plotter is closed by calling `pl_closepl_r', which automatically invokes `pl_endpath_r' to end the path. A Postscript file is written to standard output when `pl_deletepl_r' is called to delete the Plotter. Specifying "png", "pnm", "gif", "svg", "ai", "cgm", "fig", "pcl", "hpgl", "regis", "tek", or "meta" as the first argument in the call to `pl_newpl_r', instead of "ps", would yield a Plotter that would write graphics to standard output in the specified format, instead of Postscript. The `PAGESIZE' parameter is relevant to the "svg", "ai", "cgm", "fig", "pcl", and "hpgl" output formats, but is ignored for the others. Specifying "meta" as the Plotter type may be useful if you wish to avoid recompilation for different output devices. Graphics metafile output may be piped to the `plot' utility and converted to any other supported output format, or displayed in an X window. *Note plot::. If "X" were specified as the first argument of `pl_newpl_r', the curve would be drawn in a popped-up X window, and the output stream argument would be ignored. Which X Window System display the window would pop up on would be determined by the `DISPLAY' parameter, or if that parameter were not set, by the `DISPLAY' environment variable. The size of the X window would be determined by the `BITMAPSIZE' parameter, or if that parameter were not set, by the `BITMAPSIZE' environment variable. The default value is "570x570". For the "png", "pnm", and "gif" Plotter types, the interpretation of `BITMAPSIZE' is similar. You could also specify "Xdrawable" as the Plotter type. For you to make this work, you would need to know a bit about X Window System programming. You would need to create at least one X drawable (i.e., window or a pixmap), and by invoking `pl_setplparam' before `pl_newpl_r' is called, set it as the value of the parameter `XDRAWABLE_DRAWABLE1' or `XDRAWABLE_DRAWABLE2'. For the parameters that affect X Drawable Plotters, see *Note Plotter Parameters::. The following is another sample application, written in C, that invokes `libplot' operations to draw vector graphics. It draws a spiral consisting of elliptically boxed text strings, each of which reads "GNU libplot!". This figure will be sent to standard output in Postscript format. #include #include #include #define SIZE 100.0 /* nominal size of user coordinate frame */ #define EXPAND 2.2 /* expansion factor for elliptical box */ void draw_boxed_string (plPlotter *plotter, char *s, double size, double angle) { double true_size, width; pl_ftextangle_r (plotter, angle); /* set text angle (degrees) */ true_size = pl_ffontsize_r (plotter, size); /* set font size */ width = pl_flabelwidth_r (plotter, s); /* compute width of string */ pl_fellipserel_r (plotter, 0.0, 0.0, EXPAND * 0.5 * width, EXPAND * 0.5 * true_size, angle); /* draw surrounding ellipse */ pl_alabel_r (plotter, 'c', 'c', s); /* draw centered text string */ } int main() { plPlotter *plotter; plPlotterParams *plotter_params; int i; /* set a Plotter parameter */ plotter_params = pl_newplparams (); pl_setplparam (plotter_params, "PAGESIZE", "letter"); /* create a Postscript Plotter that writes to standard output */ if ((plotter = pl_newpl_r ("ps", stdin, stdout, stderr, plotter_params)) == NULL) { fprintf (stderr, "Couldn't create Plotter\n"); return 1; } if (pl_openpl_r (plotter) < 0) /* open Plotter */ { fprintf (stderr, "Couldn't open Plotter\n"); return 1; } /* specify user coor system */ pl_fspace_r (plotter, -(SIZE), -(SIZE), SIZE, SIZE); pl_pencolorname_r (plotter, "blue"); /* use blue pen */ pl_fillcolorname_r (plotter, "white"); /* set white fill color */ pl_filltype_r (plotter, 1); /* fill ellipses with fill color */ /* choose a Postscript font */ pl_fontname_r (plotter, "NewCenturySchlbk-Roman"); for (i = 80; i > 1; i--) /* loop through angles */ { double theta, radius; theta = 0.5 * (double)i; /* theta is in radians */ radius = SIZE / pow (theta, 0.35); /* this yields a spiral */ pl_fmove_r (plotter, radius * cos (theta), radius * sin (theta)); draw_boxed_string (plotter, "GNU libplot!", 0.04 * radius, (180.0 * theta / M_PI) - 90.0); } if (pl_closepl_r (plotter) < 0) /* close Plotter */ { fprintf (stderr, "Couldn't close Plotter\n"); return 1; } if (pl_deletepl_r (plotter) < 0) /* delete Plotter */ { fprintf (stderr, "Couldn't delete Plotter\n"); return 1; } return 0; } This example shows what is involved in plotting a text string or text strings. First, the desired font must be retrieved. A font is fully specified by calling `pl_fontname_r', `pl_fontsize_r', and `pl_textangle_r', or their floating point counterparts `pl_ffontname_r', `pl_ffontsize_r', and `pl_ftextangle_r'. Since these three functions may be called in any order, each of them returns the size of the font that it selects, as a convenience to the programmer. This may differ slightly from the size specified in the most recent call to `pl_fontsize_r' or `pl_ffontsize_r', since many Plotters have only a limited repertory of fonts. The above example plots each text string in the "NewCenturySchlbk-Roman" font, which is available on Postscript Plotters. *Note Text Fonts::. If you replace "ps" by "X" in the call to `pl_newpl_r', an X Plotter rather than a Postscript Plotter will be used, and the spiral will be drawn in a popped-up X window. If your X display does not support the "NewCenturySchlbk-Roman" font, you may substitute any core X font, such as the widely available scalable font "charter-medium-r-normal", or the traditional screen font "fixed". For the format of font names, see *Note Text Fonts in X::. If the X Plotter is unable to retrieve the font you specify, it will first attempt to use a default scalable font ("Helvetica", interpreted in the context of the X Window System as "helvetica-medium-r-normal"), and if that fails, use a default Hershey vector font ("HersheySerif") instead. Hershey fonts are constructed from line segments, so each built-in Hershey font is available on all types of Plotter. If you are using an ancient (pre-X11R6) X Window System display, you will find that retrieving a font is a time-consuming operation. The above example may run slowly on such displays, since a new font must be retrieved before each text string is drawn. That is because each text string has a different angle of inclination. It is possible to retrieve individual characters from an X11R6 display, rather than retrieving an entire font. If this feature is available, the X Plotter will automatically take advantage of it to save time.  File: plotutils.info, Node: Paths and Subpaths, Next: Drawing on a Page, Prev: Sample C Drawings, Up: C Programming 9.2.5 Simple paths and compound paths ------------------------------------- The most sophisticated sort of graphical object that `libplot' can draw is a _path_. In this section we explain the fine details of constructing paths. The other three sorts of graphical object (text strings, marker symbols, and points [i.e., pixels]) are discussed elsewhere. As in Postscript, paths may be simple or compound. A simple path is a contiguous sequence of line segments, circular arcs, elliptic arcs, quadratic Bezier curves, and/or cubic Bezier curves. A simple path may also be a circle, an ellipse, or a rectangle. A compound path consists of one or more simple paths, which must be _nested_: they should not intersect each other. _This is more restrictive than in Postscript._ `libplot''s drawing model is significantly different from Postscript's, and is more user-friendly. Before drawing a path by invoking `libplot' operations, you do not need to call any special function. You would specify the attributes of the path before drawing, however. Attributes include pen color, line type, line width, cap type, join type, and miter limit. If the path is to be filled, the fill color and fill rule would be specified too. All these attributes are `modal': their values are preserved from path to path. In principle, you would end any path you construct, and request that it be drawn on the graphics display, by invoking the `endpath' operation. But `endpath' is called automatically when any path-related attribute is changed, when `move' is called to change the graphics cursor position, and before any other object is constructed and drawn. It is also called at the end of each page of graphics, i.e., when `closepl' is invoked. So invoking `endpath' explicitly is usually unnecessary. This is quite different from Postscript, where an explicit command to stroke or fill a path is required. `libplot' also differs from Postscript in the way it constructs and draws compound paths. In `libplot', you would end each of the constituent simple paths of a compound path by invoking the `endsubpath' operation. After all simple paths are drawn, the compound path as a whole would be drawn by invoking `endpath'. After each of the calls to `endsubpath', you are allowed to call `move' to reposition the graphics cursor, prior to beginning the next simple path. Immediately after an invocation of `endsubpath', a call to `move' will not automatically invoke `endpath'. The following sample program uses a Postscript Plotter to produce Postscript output. It draws a typical compound path, which consists of 17 simple paths. The first simple path is a large box. This box contains 7 circles, nested within each other, and a separate set of 7 circles that are also nested within each other. Within each of the two sets of nested circles is a pair of contiguous line segments, which make up an additional simple path. The compound path is drawn in green, and it is filled. The fill color is light blue. #include #include int main () { int i, j; plPlotter *plotter; plPlotterParams *plotter_params; /* set a Plotter parameter */ plotter_params = pl_newplparams (); pl_setplparam (plotter_params, "PAGESIZE", "letter"); /* create a Postscript Plotter that writes to standard output */ plotter = pl_newpl_r ("ps", stdin, stdout, stderr, plotter_params); /* open Plotter, i.e. begin a page of graphics */ pl_openpl_r (plotter); pl_fspace_r (plotter, 0.0, 0.0, 1000.0, 1000.0); /* set coor system */ pl_flinewidth_r (plotter, 5.0); /* set line thickness */ pl_pencolorname_r (plotter, "green"); pl_fillcolorname_r (plotter, "light blue"); pl_filltype_r (plotter, 1); /* do filling, full strength */ pl_erase_r (plotter); /* erase graphics display */ /* draw a compound path consisting of 17 simple paths */ /* draw the first simple path: a large box */ pl_orientation_r (plotter, 1); pl_fbox_r (plotter, 50.0, 50.0, 950.0, 950.0); pl_endsubpath_r (plotter); for (i = 0; i < 2; i++) /* draw 8 simple paths that are nested inside the box */ { /* first, draw 7 simple paths: nested circles */ for (j = 9; j >= 3; j--) { pl_orientation_r (plotter, j % 2 ? -1 : 1); pl_fcircle_r (plotter, 250.0 + 500 * i, 500.0, j * 20.0); pl_endsubpath_r (plotter); } /* draw an open simple path comprising two line segments */ pl_fmove_r (plotter, 225.0 + 500 * i, 475.0); pl_fcont_r (plotter, 250.0 + 500 * i, 525.0); pl_fcont_r (plotter, 275.0 + 500 * i, 475.0); pl_endsubpath_r (plotter); } /* formally end the compound path (not actually necessary) */ pl_endpath_r (plotter); /* close Plotter, i.e. end page of graphics */ pl_closepl_r (plotter); /* delete Plotter */ if (pl_deletepl_r (plotter) < 0) { fprintf (stderr, "Couldn't delete Plotter\n"); return 1; } return 0; } As you will see if you run this program, the filling of the compound path takes place in a visually pleasing way: alternating annular regions are filled. That is because `libplot''s default fill rule is "even-odd". Since a compound path's constituent simple paths must always be nested, it is easy for `libplot' to determine which regions between them are `even' and which are `odd'. It is the latter that are filled. The above program includes many invocations of `orientation'. The value of the modal `orientation' attribute (1, meaning counterclockwise, or -1, meaning clockwise) applies to subsequently drawn boxes, circles, and ellipses. If "even-odd" filling is used, they have no effect. But if the fill rule for the compound path is set to "nonzero-winding" by an initial call to `fillmod', these calls to `orientation' will arrange matters so that alternating annular regions are filled, just as if "even-odd" filling were used. If the preceding paragraph is mysterious, it would be wise to consult a good book on Postscript programming, or any other reference on the subject of `winding numbers'.  File: plotutils.info, Node: Drawing on a Page, Next: Animated GIFs, Prev: Paths and Subpaths, Up: C Programming 9.2.6 Drawing on a physical page -------------------------------- GNU `libplot' can draw graphics over an entire page of paper, not merely within the graphics display or `viewport' that it normally uses. The default viewport used by an Illustrator, Postscript, Fig, or PCL Plotter is a square region centered on the page. The size of the default viewport depends on the `PAGESIZE' parameter, which may be "letter", "a4", etc. See *Note Page and Viewport Sizes::. For example, the default viewport on a letter-sized page, which has width 8.5in and height 11in, is a square of side 8in. However, you may specify different dimensions for the viewport, and a different position as well. In particular, you may specify a viewport that covers the entire page. This would be accomplished by setting `PAGESIZE' to, for example, "letter,xsize=8.5in,ysize=11in,xorigin=0in,yorigin=0in". "xorigin" and "yorigin" specify the location of the lower left corner of the viewport, relative to the lower left corner of the page. With this choice for the viewport, the entire page is in principle imageable. For full-page drawing, it is convenient to define a user coordinate system in terms of which the lower left corner of the page is (0,0), and in which the units are physical inches or centimeters. To do so, you would use appropriate arguments when invoking the `space' operation on the Plotter. The following program shows how the `space' operation would be invoked. #include #include int main() { plPlotter *plotter; plPlotterParams *plotter_params; /* set page size parameter, including viewport size and location */ plotter_params = pl_newplparams (); pl_setplparam (plotter_params, "PAGESIZE", "letter,xsize=8.5in,ysize=11in,xorigin=0in,yorigin=0in"); /* create a Postscript Plotter with the specified parameter */ plotter = pl_newpl_r ("ps", stdin, stdout, stderr, plotter_params); pl_openpl_r (plotter); /* begin page of graphics */ pl_fspace_r (plotter, 0.0, 0.0, 8.5, 11.0); /* set user coor system */ pl_fontname_r (plotter, "Times-Bold"); pl_ffontsize_r (plotter, 0.5); /* font size = 0.5in = 36pt */ pl_fmove_r (plotter, 1.0, 10.0); pl_alabel_r (plotter, 'l', 'x', "One inch below the top"); pl_fline_r (plotter, 1.0, 10.0, 7.5, 10.0); pl_fmove_r (plotter, 7.5, 1.0); pl_alabel_r (plotter, 'r', 'x', "One inch above the bottom"); pl_fline_r (plotter, 1.0, 1.0, 7.5, 1.0); pl_closepl_r (plotter); /* end page of graphics */ pl_deletepl_r (plotter); /* delete Plotter */ return 0; } The program will print two strings and draw the baseline for each. The first string will be left-justified at position (1.0,11.0), which is one inch below the top of the page. The second string will be right-justified at position (7.5,1.0), which is one inch above the bottom of the page. For both strings, the 'x' argument of `pl_alabel_r' specifies the vertical positioning: it requests that the baseline of the string, rather than (say) its top or bottom, be positioned at the current vertical position. The preceding discussion and sample program dealt with the portrait orientation of the printed page, which is the default. Drawing in landscape orientation is only slightly more complicated. For this, the viewport would be rotated on the page by setting the Plotter parameter `ROTATION'. Its default value is "0" (or "no"), but any other rotation angle may be specified. To obtain landscape orientation, one would specify "90" (for historical reasons, "yes" is equivalent to "90"). The following program is a modified version of the preceding, showing how a landscape orientation would be produced. #include #include int main() { plPlotter *plotter; plPlotterParams *plotter_params; /* set Plotter parameters */ plotter_params = pl_newplparams (); pl_setplparam (plotter_params, "PAGESIZE", "letter,xsize=8.5in,ysize=11in,xorigin=0in,yorigin=0in"); pl_setplparam (plotter_params, "ROTATION", "90"); /* create a Postscript Plotter with the specified parameters */ plotter = pl_newpl_r ("ps", stdin, stdout, stderr, plotter_params); pl_openpl_r (plotter); /* begin page of graphics */ pl_fspace_r (plotter, 0.0, 0.0, 11.0, 8.5); /* set user coor system */ pl_fontname_r (plotter, "Times-Bold"); pl_ffontsize_r (plotter, 0.5); /* font size = 0.5in = 36pt */ pl_fmove_r (plotter, 1.0, 7.5); pl_alabel_r (plotter, 'l', 'x', "One inch below the top"); pl_fline_r (plotter, 1.0, 7.5, 10.0, 7.5); pl_fmove_r (plotter, 10.0, 1.0); pl_alabel_r (plotter, 'r', 'x', "One inch above the bottom"); pl_fline_r (plotter, 1.0, 1.0, 10.0, 1.0); pl_closepl_r (plotter); /* end page of graphics */ pl_deletepl_r (plotter); /* delete Plotter */ return 0; } In this example the viewport is the same centered 8in by 8in square, but it is rotated by 90 degrees counterclockwise; or equivalently, the graphics within it are rotated. As in the preceding example, the call to `pl_fspace_r' sets up the user coordinate system so that the units are physical inches. The origin of coordinates is now the lower right corner of the page. The x and y coordinates increase upward and to the left, respectively.  File: plotutils.info, Node: Animated GIFs, Next: X Animations, Prev: Drawing on a Page, Up: C Programming 9.2.7 Animated GIFs in C ------------------------ Using GNU `libplot' to create pseudo-GIF files, including animated pseudo-GIFs, is straightforward. A GIF Plotter is a Plotter like any other, and it supports the same drawing operations. However, it has two special properties. (1) It can draw only a single page of graphics, i.e., only the graphics contained in the first `openpl'...`closepl' pair appear in the output file. In this, it resembles other Plotters that do not plot in real time. (2) Within this page, each invocation of `erase' is normally treated as the beginning of a new image in the output file. There is an exception to this: the first invocation of `erase' begins a new image only if something has already been drawn. The reason for the exception is that many programmers who use `libplot' are in the habit of invoking `erase' immediately after a Plotter is opened. That is not a bad habit, since a few types of Plotter (e.g., X Drawable and Tektronix Plotters) are `persistent' in the sense that previously drawn graphics remain visible. The following program creates a simple animated pseudo-GIF, 150 pixels wide and 100 pixels high. #include #include int main() { plPlotter *plotter; plPlotterParams *plotter_params; int i; /* set Plotter parameters */ plotter_params = pl_newplparams (); pl_setplparam (plotter_params, "BITMAPSIZE", "150x100"); pl_setplparam (plotter_params, "BG_COLOR", "orange"); pl_setplparam (plotter_params, "TRANSPARENT_COLOR", "orange"); pl_setplparam (plotter_params, "GIF_ITERATIONS", "100"); pl_setplparam (plotter_params, "GIF_DELAY", "5"); /* create a GIF Plotter with the specified parameters */ plotter = pl_newpl_r ("gif", stdin, stdout, stderr, plotter_params); pl_openpl_r (plotter); /* begin page of graphics */ pl_fspace_r (plotter, -0.5, -0.5, 149.5, 99.5); /* set user coor system */ pl_pencolorname_r (plotter, "red"); /* use red pen */ pl_linewidth_r (plotter, 5); /* set line thickness */ pl_filltype_r (plotter, 1); /* objects will be filled */ pl_fillcolorname_r (plotter, "black"); /* set the fill color */ for (i = 0; i < 180 ; i += 15) { pl_erase_r (plotter); /* begin new GIF image */ pl_ellipse_r (plotter, 75, 50, 40, 20, i); /* draw an ellipse */ } pl_closepl_r (plotter); /* end page of graphics */ pl_deletepl_r (plotter); /* delete Plotter */ return 0; } The animated pseudo-GIF will be written to standard output. It will consist of twelve images, showing the counterclockwise rotation of a black-filled red ellipse through 180 degrees. The pseudo-GIF will be `looped' (see below), so the ellipse will rotate repeatedly. The parameters of the ellipse are expressed in terms of user coordinates, not pixel coordinates. But the call to `pl_fspace_r' defines user coordinates that are effectively the same as pixel coordinates. In the user coordinate system, the lower left corner of the rectangle mapped into the 150x100 pseudo-GIF image is given coordinates (-0.5,-0.5), and the upper right corner is given coordinates (149.5,99.5). So individual pixels may be addressed in terms of integer user coordinates. For example, invoking `pl_point_r(plotter,0,0)' and `pl_point_r(plotter,149,99)' would set the pixels in the lower left and upper right corners of the image to the current pen color. Besides `BITMAPSIZE' and `BG_COLOR', there are several important GIF Plotter parameters that may be set with the `pl_setplparam' function. The `TRANSPARENT_COLOR' parameter may be set to the name of a color. Pixels in a pseudo-GIF that have that color will be treated as transparent by most software. This is usually used to create a transparent background. In the example above, the background color is specified as orange, but the transparent color is also specified as orange. So the background will not actually be displayed. The `GIF_ITERATIONS' parameter, if set, specifies the number of times that a multi-frame pseudo-GIF should be looped. The `GIF_DELAY' parameter specifies the number of hundredths of a seconds that should elapse between successive images. The `INTERLACE' parameter is sometimes useful. If it is set to "yes", the pseudo-GIF will be interlaced. This is of greatest value for single-frame GIFs. For full details on Plotter parameters, see *Note Plotter Parameters::.  File: plotutils.info, Node: X Animations, Next: X Programming, Prev: Animated GIFs, Up: C Programming 9.2.8 X Window System animations in C ------------------------------------- You may use GNU `libplot' to produce vector graphics animations on any Plotter that does real-time plotting (i.e., an X, X Drawable, ReGIS, Tektronix, or Metafile Plotter). By definition, the `frames' in any page of graphics are separated by invocations of `erase'. So the graphics display will be cleared after each frame. If successive frames differ only slightly, a smooth animation will result. The following is a sample application, written in C, that produces an animation for the X Window System. It displays a `drifting eye'. As the eye drifts across a popped-up window from left to right, it slowly rotates. After the eye has drifted across twice, the window will vanish. #include #include int main () { plPlotter *plotter; plPlotterParams *plotter_params; int i = 0, j; /* set Plotter parameters */ plotter_params = pl_newplparams (); pl_setplparam (plotter_params, "BITMAPSIZE", "300x150"); pl_setplparam (plotter_params, "VANISH_ON_DELETE", "yes"); pl_setplparam (plotter_params, "USE_DOUBLE_BUFFERING", "yes"); /* create an X Plotter with the specified parameters */ if ((plotter = pl_newpl_r ("X", stdin, stdout, stderr, plotter_params)) == NULL) { fprintf (stderr, "Couldn't create Plotter\n"); return 1; } if (pl_openpl_r (plotter) < 0) /* open Plotter */ { fprintf (stderr, "Couldn't open Plotter\n"); return 1; } pl_fspace_r (plotter, -0.5, -0.5, 299.5, 149.5); /* set user coor system */ pl_linewidth_r (plotter, 8); /* set line thickness */ pl_filltype_r (plotter, 1); /* objects will be filled */ pl_bgcolorname_r (plotter, "saddle brown"); /* set background color */ for (j = 0; j < 300; j++) { pl_erase_r (plotter); /* erase window */ pl_pencolorname_r (plotter, "red"); /* use red pen */ pl_fillcolorname_r (plotter, "cyan"); /* use cyan filling */ pl_ellipse_r (plotter, i, 75, 35, 50, i); /* draw an ellipse */ pl_colorname_r (plotter, "black"); /* use black pen and filling */ pl_circle_r (plotter, i, 75, 12); /* draw a circle [the pupil] */ i = (i + 2) % 300; /* shift rightwards */ } if (pl_closepl_r (plotter) < 0) /* close Plotter */ { fprintf (stderr, "Couldn't close Plotter\n"); return 1; } if (pl_deletepl_r (plotter) < 0) /* delete Plotter */ { fprintf (stderr, "Couldn't delete Plotter\n"); return 1; } return 0; } As you can see, this application begins by calling `pl_setplparam' several times to set Plotter parameters, and then calls `pl_newpl_r' to create an X Plotter. The X Plotter window will have size 300x150 pixels. This window will vanish when the Plotter is deleted. If the `VANISH_ON_DELETE' parameter were not set to "yes", the window would remain on the screen until removed by the user (by typing `q' in it, or by clicking with a mouse). Setting the parameter `USE_DOUBLE_BUFFERING' to "yes" requests that double buffering be used. This is very important if you wish to produce a smooth animation, with no jerkiness. Normally, an X Plotter draws graphics into a window in real time, and erases the window when `pl_erase_r' is called. But if double buffering is used, each frame of graphics is written into an off-screen buffer, and is copied into the window, pixel by pixel, when `pl_erase_r' is called or the Plotter is closed. This is exactly what is needed for smooth animation. After the Plotter is created, it is selected for use and opened. When `pl_openpl_r' is called, the window pops up, and the animation begins. In the body of the for loop there is a call to `pl_erase_r', and also a sequence of `libplot' operations that draws the eye. The pen color and fill color are changed twice with each passage through the loop. You may wish to experiment with the animation parameters to produce the best effects on your video hardware. The positions of the objects that are plotted in the animation are expressed in terms of user coordinates, not pixel coordinates. But the call to `pl_fspace_r' defines user and pixel coordinates to be effectively the same. User coordinates are chosen so that the lower left corner of the rectangle mapped to the X window is (-0.5,-0.5) and the upper right corner is (299.5,149.5). Since this agrees with the window size, individual pixels may be addressed in terms of integer user coordinates. For example, `pl_point_r(plotter,299,149)' would set the pixel in the upper right corner of the window to the current pen color. The following is another sample animation, this time of a rotating letter `A'. #include #include int main() { plPlotter *plotter; plPlotterParams *plotter_params; int angle = 0; /* set Plotter parameters */ plotter_params = pl_newplparams (); pl_setplparam (plotter_params, "BITMAPSIZE", "300x300"); pl_setplparam (plotter_params, "USE_DOUBLE_BUFFERING", "yes"); pl_setplparam (plotter_params, "BG_COLOR", "blue"); /* create an X Plotter with the specified parameters */ plotter = pl_newpl_r ("X", stdin, stdout, stderr, plotter_params); /* open X Plotter, initialize coordinates, pen, and font */ pl_openpl_r (plotter); pl_fspace_r (plotter, 0.0, 0.0, 1.0, 1.0); /* use normalized coors */ pl_pencolorname_r (plotter, "white"); pl_ffontsize_r (plotter, 1.0); pl_fontname_r (plotter, "NewCenturySchlbk-Roman"); pl_fmove_r (plotter, 0.5, 0.5); /* move to center */ while (1) /* loop endlessly */ { pl_erase_r (plotter); pl_textangle_r (plotter, angle++); /* set new rotation angle */ pl_alabel_r (plotter, 'c', 'c', "A"); /* draw a centered `A' */ } pl_closepl_r (plotter); /* close Plotter */ pl_deletepl_r (plotter); /* delete Plotter */ return 0; } This animation serves as a good test of the capabilities of an X Window System display. On a modern X11R6 display, animation will be smooth and fast. That is because X11R6 displays can retrieve individual characters from a font without retrieving the entire font. If your X display does not support the "NewCenturySchlbk-Roman" font, you may substitute most core X fonts, such as the widely available scalable font "charter-medium-r-normal", or the traditional screen font "fixed". For the format of font names, see *Note Text Fonts in X::. If the X Plotter is unable to retrieve the font you specify, it will first attempt to use a default scalable font ("Helvetica", interpreted in the context of the X Window System as "helvetica-medium-r-normal"). If that too fails, it will use a default Hershey vector font ("HersheySerif") instead. Animations that use Hershey fonts are normally faster than ones that use Postscript fonts or other X Window System fonts, since the Hershey fonts are constructed from line segments. Rasterizing line segments can be done rapidly. If you are writing an application that performs a lengthy sequence of drawing operations on an X Plotter, you may find it useful to set the Plotter parameter `X_AUTO_FLUSH' to "no". By default, an X Plotter flushes all graphics to its X Window System display after each drawing operation. This flushing ensures that graphics are visible to the user immediately after they are drawn. However, it sometimes slows down the rendering process. For additional details on Plotter parameters, see *Note Plotter Parameters::.  File: plotutils.info, Node: X Programming, Prev: X Animations, Up: C Programming 9.2.9 Advanced X Window System programming ------------------------------------------ Applications that run under the X Window System are often built using Xt, the X Toolkit. In Xt, an application is constructed from `widgets' such as text entry fields, buttons, sliders, drawing areas, etc. When the application starts up, each widget is configured to respond appropriately to `events', which include key presses and mouse clicks. After the widgets are configured, control is transferred to the Xt event loop. GNU `libplot' can be used within the Xt event loop to draw vector graphics. For this, it would use one or more X Drawable Plotters. An X Drawable Plotter is a Plotter that can plot into an off-screen pixmap or an on-screen window, such as a window associated with a widget. The following sample application shows how an X Drawable Plotter would be used. The application draws a `C' curve, as defined in a previous section, in a popped-up window. The usual Xt command-line options may be used: the window background color is specified with the `-bg' option, the window geometry with `-geometry', etc. The curve is initially drawn in red, but clicking once with the mouse will redraw it in green. A second mouse click will redraw it in red, and so forth. The application will terminate when `q' is typed. #include #include #include #include #include #include #include #include plPlotter *plotter; int green = 0; /* draw in green, not red? */ #define MAXORDER 12 void draw_c_curve (double dx, double dy, int order) { if (order >= MAXORDER) /* continue path along (dx, dy) */ pl_fcontrel_r (plotter, dx, dy); else { draw_c_curve (0.5 * (dx - dy), 0.5 * (dx + dy), order + 1); draw_c_curve (0.5 * (dx + dy), 0.5 * (dy - dx), order + 1); } } void Redraw (Widget w, XEvent *ev, String *params, Cardinal *n_params) { /* draw C curve */ pl_erase_r (plotter); pl_pencolorname_r (plotter, green ? "green" : "red"); pl_fmove_r (plotter, 600.0, 300.0); draw_c_curve (0.0, 400.0, 0); pl_endpath_r (plotter); } void Toggle (Widget w, XEvent *ev, String *params, Cardinal *n_params) { green = (green ? 0 : 1); Redraw (w, ev, params, n_params); } void Quit (Widget w, XEvent *ev, String *params, Cardinal *n_params) { exit (0); } /* mapping of events to actions */ static const String translations = ": redraw()\n\ : toggle()\n\ q: quit()"; /* mapping of actions to subroutines */ static XtActionsRec actions[] = { {"redraw", Redraw}, {"toggle", Toggle}, {"quit", Quit}, }; /* default parameters for widgets */ static String default_resources[] = { "Example*geometry: 250x250", (String)NULL }; int main (int argc, char *argv[]) { plPlotterParams *plotter_params; Arg wargs[10]; /* storage of widget args */ Display *display; /* X display */ Widget shell, canvas; /* toplevel widget; child */ Window window; /* child widget's window */ XtAppContext app_con; /* application context */ int i; char *bg_colorname = "white"; /* take background color from command line */ for (i = 0; i < argc - 1; i++) if (strcmp (argv[i], "-bg") == 0) bg_colorname = argv[i + 1]; /* create toplevel shell widget */ shell = XtAppInitialize (&app_con, (String)"Example", /* app class */ NULL, /* options */ (Cardinal)0, /* num of options */ &argc, /* command line */ argv, /* command line */ default_resources, NULL, /* ArgList */ (Cardinal)0 /* num of Args */ ); /* set default widget parameters (including window size) */ XtAppSetFallbackResources (app_con, default_resources); /* map actions to subroutines */ XtAppAddActions (app_con, actions, XtNumber (actions)); /* create canvas widget as child of shell widget; realize both */ XtSetArg(wargs[0], XtNargc, argc); XtSetArg(wargs[1], XtNargv, argv); canvas = XtCreateManagedWidget ((String)"", coreWidgetClass, shell, wargs, (Cardinal)2); XtRealizeWidget (shell); /* for the canvas widget, map events to actions */ XtSetArg (wargs[0], XtNtranslations, XtParseTranslationTable (translations)); XtSetValues (canvas, wargs, (Cardinal)1); /* initialize GNU libplot */ plotter_params = pl_newplparams (); display = XtDisplay (canvas); window = XtWindow (canvas); pl_setplparam (plotter_params, "XDRAWABLE_DISPLAY", display); pl_setplparam (plotter_params, "XDRAWABLE_DRAWABLE1", &window); pl_setplparam (plotter_params, "BG_COLOR", bg_colorname); plotter = pl_newpl_r ("Xdrawable", NULL, NULL, stderr, plotter_params); pl_openpl_r (plotter); pl_fspace_r (plotter, 0.0, 0.0, 1000.0, 1000.0); pl_flinewidth_r (plotter, 0.25); /* transfer control to X Toolkit event loop (doesn't return) */ XtAppMainLoop (app_con); return 1; } Even if you are not familiar with X Window System programming, the structure of this application should be clear. It defines three callbacks: `Redraw', `Toggle', and `Quit'. They are invoked respectively in response to (1) a window expose event or mouse click, (2) a mouse click, and (3) a typed `q'. The first drawing of the `C' curve (in red) takes place because the window receives an initial expose event. This example could be extended to take window resizing into account. Actually, X Drawable Plotters are usually used to draw vector graphics in off-screen pixmaps rather than on-screen windows. Pixmaps, unlike windows, are never resized.  File: plotutils.info, Node: C++ Programming, Next: Functions, Prev: C Programming, Up: libplot 9.3 C++ Programming with `libplotter' ===================================== * Menu: * The Plotter Class:: The Plotter class * C++ Compiling and Linking:: C++ compiling and linking * Sample C++ Drawings:: Sample drawings in C++  File: plotutils.info, Node: The Plotter Class, Next: C++ Compiling and Linking, Prev: C++ Programming, Up: C++ Programming 9.3.1 The `Plotter' class ------------------------- The C++ binding for `libplot' is provided by a class library named `libplotter'. This library implements a `Plotter' class of which all Plotters are instances. Actually, a Plotter would normally be an instance of an appropriate derived class, determined by the Plotter's output format. Derived classes include `XPlotter', `XDrawablePlotter', `PNGPlotter', `PNMPlotter', `GIFPlotter', `AIPlotter', `PSPlotter', `CGMPlotter', `FigPlotter', `PCLPlotter', `HPGLPlotter', `ReGISPlotter', `TekPlotter', and `MetaPlotter'. The names should be self-explanatory. The operations that may be applied to any Plotter (e.g., the `openpl' operation, which begins a page of graphics) are implemented as public function members of the `Plotter' class. At the time a Plotter is created, its input, output, and error streams must be specified, along with a PlotterParams object that optionally contains other Plotter parameters. (The input stream is ignored, since at present, all Plotters are write-only.) The streams may be specified either as iostreams or as `FILE' pointers. That is, the two constructors Plotter(istream& instream, ostream& outstream, ostream& errstream, PlotterParams ¶ms); Plotter(FILE *infile, FILE *outfile, FILE *errfile, PlotterParams ¶ms); are provided for the base Plotter class, and similarly for each of its derived classes. So, for example, both PSPlotter plotter(cin, cout, cerr, params); and PSPlotter plotter(stdin, stdout, stderr, params); are possible declarations of a Postscript Plotter that writes to standard output. In the iostream case, an ostream with a null stream buffer may be specified as the output stream and/or the error stream, to request that no output take place. In the `FILE' pointer case, specifying a null `FILE' pointer would accomplish the same thing. Instances of the `XPlotter' and `XDrawablePlotter' classes always ignore the output stream argument, since they write graphics to an X Display rather than to a stream. The `PlotterParams' class supports copying and assignment, but has only a single public function member, `setplparam'. The following is a formal description. int PlotterParams::setplparam (const char *PARAMETER, void *VALUE); Set the value of the Plotter parameter PARAMETER to VALUE. For most parameters, VALUE should be a `char *', i.e., a string. Unrecognized parameters are ignored. For a list of the recognized parameters and their meaning, see *Note Plotter Parameters::. Like the `plPlotterParams' datatype and the function `pl_setplparam' of the C binding, the `PlotterParams' class and the `PlotterParams::setplparam' function of the C++ binding give the programmer fine control over the parameters of subsequently created Plotters. The parameter values used by any Plotter are constant over the lifetime of the Plotter, and are those that were specified when the Plotter was created. If at Plotter creation time a parameter has _not_ been set in the specified `PlotterParams' object, its default value will be used, unless the parameter is string-valued and there is an environment variable of the same name, in which case the value of that environment variable will be used. Once set in a PlotterParams object, a parameter may be unset by the programmer by invoking `PlotterParams::setplparam' with a value argument of NULL. This further increases flexibility. There is an alternative (older) way of constructing a Plotter, which is deprecated but still supported. By using either of Plotter(istream& instream, ostream& outstream, ostream& errstream); Plotter(FILE *infile, FILE *outfile, FILE *errfile); one may construct a Plotter without specifying a PlotterParams object. In this case the parameter values for the Plotter are copied from static storage. A parameter may be set in static storage by invoking a static member function of the Plotter class, `Plotter::parampl', which has declaration int PlotterParams::parampl (const char *PARAMETER, void *VALUE); This alternative way of creating a Plotter is not thread-safe, which is why it is deprecated.  File: plotutils.info, Node: C++ Compiling and Linking, Next: Sample C++ Drawings, Prev: The Plotter Class, Up: C++ Programming 9.3.2 C++ compiling and linking ------------------------------- The source code for a graphics application written in C++, if it is to use `libplotter', must contain the line #include The header file `plotter.h' is distributed with `libplotter', and should have been installed on your system where your C++ compiler will find it. It declares the `Plotter' class and its derived classes, and also contains some miscellaneous definitions. It includes the header files `' and `', so you do not need to include them separately. To link your application with `libplotter', you would use the appropriate `-l' option(s) on the command line when compiling it. You would use -lplotter -lXaw -lXmu -lXt -lXext -lX11 -lpng -lz -lm or, in recent releases of the X Window System, -lplotter -lXaw -lXmu -lXt -lSM -lICE -lXext -lX11 -lpng -lz -lm These linking options assume that your version of `libplotter' has been compiled with PNG support; if not, you would omit the `-lpng -lz' options. As an alternative to the preceding, you may need to use `-lplotter -lXm -lXt -lXext -lX11 -lpng -lz -lm', `-lplotter -lXm -lXt -lXext -lX11 -lpng -lz -lm -lc -lgen', or `-lplotter -lXm -lXt -lXext -lX11 -lpng -lz -lm -lc -lPW', on systems that provide Motif widgets instead of Athena widgets. In recent releases of the X Window System, you would insert `-lSM -lICE'. Recent releases of Motif require `-lXp' and possibly `-lXpm' as well.) On some platforms, the directories in which `libplotter' or the other libraries are stored must be specified on the command line. For example, the options `-lXaw -lXmu -lXt -lSM -lICE -lXext -lX11', which specify X Window System libraries, may need to be preceded by an option like `-L/usr/X11/lib'. On most systems `libplotter' is installed as a shared library. This means that the linking with your application will take place at run time rather than compile time. The environment variable `LD_LIBRARY_PATH' lists the directories which will be searched for shared libraries at run time. For your application to be executable, this environment variable should include the directory in which `libplotter' is stored.  File: plotutils.info, Node: Sample C++ Drawings, Prev: C++ Compiling and Linking, Up: C++ Programming 9.3.3 Sample drawings in C++ ---------------------------- In a previous section, there are several sample C programs that show how to draw vector graphics using `libplot''s C binding. *Note Sample C Drawings::. In this section, we give a modified version of one of the C programs, showing how `libplot''s C++ binding, i.e., `libplotter', can be used similarly. The following C++ program draws an intricate and beautiful path (Bill Gosper's "C" curve). #include const int maxorder = 12; void draw_c_curve (Plotter& plotter, double dx, double dy, int order) { if (order >= maxorder) plotter.fcontrel (dx, dy); // continue path along (dx, dy) else { draw_c_curve (plotter, 0.5 * (dx - dy), 0.5 * (dx + dy), order + 1); draw_c_curve (plotter, 0.5 * (dx + dy), 0.5 * (dy - dx), order + 1); } } int main () { // set a Plotter parameter PlotterParams params; params.setplparam ("PAGESIZE", (char *)"letter"); PSPlotter plotter(cin, cout, cerr, params); // declare Plotter if (plotter.openpl () < 0) // open Plotter { cerr << "Couldn't open Plotter\n"; return 1; } plotter.fspace (0.0, 0.0, 1000.0, 1000.0); // specify user coor system plotter.flinewidth (0.25); // line thickness in user coordinates plotter.pencolorname ("red"); // path will be drawn in red plotter.erase (); // erase Plotter's graphics display plotter.fmove (600.0, 300.0); // position the graphics cursor draw_c_curve (plotter, 0.0, 400.0, 0); if (plotter.closepl () < 0) // close Plotter { cerr << "Couldn't close Plotter\n"; return 1; } return 0; } The above is a straightforward translation of the corresponding C program. Here, `plotter' is declared as an instance of the `PSPlotter' class, which will write Postscript graphics to the output stream `cout'. The graphics are drawn by invoking member functions.  File: plotutils.info, Node: Functions, Next: Plotter Parameters, Prev: C++ Programming, Up: libplot 9.4 The functions in `libplot': A detailed listing ================================================== In the current release of GNU `libplot', any Plotter supports 97 distinct operations. A language binding for `libplot' necessarily includes 97 functions that correspond to these operations. In the C binding, these 97 functions belong to the C API (application programming interface). The name of each function begins with the prefix "pl_" and ends with the suffix "_r". In the C++ binding, the 97 functions are implemented as public members of the `Plotter' class. No prefix or suffix is used. A language binding may also include functions for creating, selecting, and deleting Plotters. For example, the C binding includes the additional functions `pl_newpl_r' and `pl_deletepl_r'. *Note The C API::. The 97 functions that operate on a specified Plotter are divided into the four sets tabulated below. Many functions come in two versions: integer and double precision floating point. Internally, `libplot' uses double precision floating point. The integer versions are provided for backward compatibility. If there are two versions of a function, the name of the floating point version begins with the letter `f'. Many functions come in both absolute and relative versions, also. The latter use relative coordinates (i.e., coordinates relative to the current position of the graphics cursor), and their names end in `rel'. Currently, only a few of the 97 functions have meaningful return values. * Menu: * Control Functions:: Functions that open, initialize or close a Plotter * Drawing Functions:: Functions that draw objects * Attribute Functions:: Functions that affect drawing attributes * Mapping Functions:: Functions affecting the user -> device coordinate map  File: plotutils.info, Node: Control Functions, Next: Drawing Functions, Prev: Functions, Up: Functions 9.4.1 Control functions ----------------------- The following are the "control functions" in `libplot'. They are the basic functions that open, initialize, or close an already-created Plotter. They are listed in the approximate order in which they would be called. In the current C binding, each of these functions takes a pointer to a `plPlotter' as its first argument. Also in the current C binding, the name of each function begins with "pl_" and ends with "_r". ("_r" stands for `revised' or `reentrant'.) For information on older C bindings, see *Note Older C APIs::. In the C++ binding, these are member functions of the `Plotter' class and its subclasses, and the prefix and suffix are not used. int openpl (); openpl opens a Plotter, i.e., begins a page of graphics. This resets the Plotter's drawing attributes to their default values. A negative return value indicates the Plotter could not be opened. Currently, an X Plotter pops up a new window on an X Window System display for each page of graphics, i.e., with each invocation of `openpl'. Future releases may support window re-use. int bgcolor (int RED, int GREEN, int BLUE); bgcolor sets the background color for the Plotter's graphics display, using a 48-bit RGB color model. The arguments RED, GREEN and BLUE specify the red, green and blue intensities of the background color. Each is an integer in the range 0x0000...0xffff, i.e., 0...65535. The choice (0, 0, 0) signifies black, and the choice (65535, 65535, 65535) signifies white. bgcolor affects only Plotters that have a notion of background color, i.e., X Plotters, X Drawable Plotters, PNG Plotters, PNM Plotters, and GIF Plotters (all of which produce bitmaps), CGM Plotters, ReGIS Plotters and Metafile Plotters. Its effect is simple: the next time the erase operation is invoked on such a Plotter, its display will be filled with the specified color. int bgcolorname (const char *NAME); bgcolorname sets the background color for the the graphics display to be NAME. Unrecognized colors are interpreted as "white". For information on what color names are recognized, see *Note Color Names::. A 24-bit RGB color may also be specified as a six-digit hexadecimal string, e.g., "#c0c0c0". bgcolorname affects only Plotters that have a notion of background color, i.e., X Plotters, X Drawable Plotters, PNG Plotters, PNM Plotters, and GIF Plotters (all of which produce bitmaps), CGM Plotters, ReGIS Plotters, and Metafile Plotters. Its effect is simple: the next time the erase operation is invoked on such a Plotter, its display will be filled with the specified color. SVG Plotters and CGM Plotters support "none" as a value for the background color. It will turn off the background: the drawn objects will not be backed by anything. This is useful when the generated SVG or WebCGM file is to be placed on a Web page. int erase (); erase begins the next frame of a multiframe page, by clearing all previously plotted objects from the graphics display, and filling it with the background color (if any). It is frequently useful to invoke erase at the beginning of each page, i.e., immediately after invoking openpl. That is because some Plotters are persistent, in the sense that objects drawn within an `openpl'...`closepl' pair remain on the graphics display even after a new page is begun by a subsequent invocation of `openpl'. Currently, only X Drawable Plotters and Tektronix Plotters are persistent. Future releases may support optional persistence for X Plotters also. On X Plotters and X Drawable Plotters the effects of invoking erase will be altogether different if the Plotter parameter `USE_DOUBLE_BUFFERING' is set to "yes". In this case, objects will be written to an off-screen buffer rather than to the graphics display, and invoking erase will (1) copy the contents of this buffer to the display, and (2) erase the buffer by filling it with the background color. This `double buffering' feature facilitates smooth animation. *Note Plotter Parameters::. int space (int X0, int Y0, int X1, int Y1); int fspace (double X0, double Y0, double X1, double Y1); space and fspace take two pairs of arguments, specifying the positions of the lower left and upper right corners of a rectangular window in the user coordinate system that will be mapped to the `viewport': the rectangular portion of the output device that graphics will be drawn in. The default window is a square, with opposite corners (0,0) and (1,1). In mathematical terms, calling space or fspace sets the affine transformation from user coordinates to device coordinates. That is, it sets the transformation matrix attribute for each object subsequently drawn on the display. Either space or fspace would usually be invoked at the beginning of each page of graphics, i.e., immediately after the call to openpl. Additional calls to space or fspace are allowed, and there are several "mapping functions" that also affect the transformation matrix attribute. See *Note Mapping Functions::. Note that the size and location of the viewport depend on the type of Plotter, and on the Plotter parameters that are specified at Plotter creation time. For example, the default viewport used by any Illustrator, Postscript, Fig, PCL, and HP-GL Plotter is a square whose size depends on the Plotter's page type. See *Note Page and Viewport Sizes::. int space2 (int X0, int Y0, int X1, int Y1, int X2, int Y2); int fspace2 (double X0, double Y0, double X1, double Y1, double X2, double Y2); space2 and fspace2 are extended versions of space and fspace. Their arguments are the three defining vertices of an parallelogram-shaped window in the user coordinate system. The specified vertices are the lower left, the lower right, and the upper left. This window will be mapped affinely onto the viewport: the rectangular portion of the output device that graphics will be drawn in. int havecap (const char *S); havecap is not really a control function: it is a query function. It tests whether or not a Plotter, which need not be open, has a specified capability. The return value is 0, 1, or 2, signifying no/yes/maybe. For unrecognized capabilities the return value is zero. Recognized capabilities include "WIDE_LINES" (i.e., the ability to draw lines with a non-default thickness), "DASH_ARRAY" (the ability to draw in arbitrary dashing styles, as requested by the linedash function), "SETTABLE_BACKGROUND" (the ability to set the color of the background), and "SOLID_FILL". The "HERSHEY_FONTS", "PS_FONTS", "PCL_FONTS", and "STICK_FONTS" capabilities indicate whether or not fonts of a particular class are supported. *Note Text Fonts::. All Plotters except Tektronix Plotters have the "SOLID_FILL" capability, meaning they can fill paths with solid color. Each such Plotter has at least one of the "EVEN_ODD_FILL" and "NONZERO_WINDING_NUMBER_FILL" capabilities. These indicate the supported rules for determining the `inside' of a path. The `maybe' value is returned for most capabilities by Metafile Plotters, which do no drawing themselves. The output of a Metafile Plotter must be translated to another format, or displayed, by invoking `plot'. int flushpl (); flushpl flushes (i.e., pushes onward) all previously plotted objects to the graphics display. This is useful only if the affected Plotter is one that does real-time plotting (X Plotters, X Drawable Plotters, ReGIS Plotters, Tektronix Plotters, and Metafile Plotters). It ensures that all previously plotted objects are visible to the user. On Plotters that do not do real-time plotting, this operation has no effect. int closepl (); closepl closes a Plotter, i.e., ends a page of graphics. If a path is in progress, it is first ended and plotted, as if endpath had been called. A negative return value indicates the Plotter could not be closed. In the present release of `libplot', some Plotters output each page of graphics immediately after it is plotted, i.e., when closepl is invoked to end the page. That is the case with PCL and HP-GL Plotters, in particular. Plotters that can output only a single page of graphics (PNG, PNM, GIF, SVG, Illustrator, and Fig Plotters) do so immediately after the first page is plotted, i.e., when closepl is invoked for the first time. Postscript and CGM Plotters store all pages of graphics internally, and do not produce output until they are deleted.  File: plotutils.info, Node: Drawing Functions, Next: Attribute Functions, Prev: Control Functions, Up: Functions 9.4.2 Object-drawing functions ------------------------------ The following are the "drawing functions" in `libplot'. When invoked on a Plotter, these functions cause it to draw objects (paths, text strings, marker symbols, and points [i.e., pixels]) on the associated graphics display. Paths may be simple or compound. A simple path is a sequence of contiguous line segments, arc segments (either circular or elliptic), and/or Bezier curve segments (either quadratic or cubic). Such simple paths are drawn incrementally, one segment at a time. A simple path may also be a circle, rectangle, or ellipse. A compound path consists of multiple simple paths, which must be nested. You do not need to begin a path by calling any special function. You should, at least in theory, end a path under construction, and request that it be drawn on the graphics display, by calling `endpath'. But the `endpath' function is automatically called when any other object is drawn, and at the end of each page of graphics. It is also called automatically when any path-related attribute is changed: for example, when `move' is called to change the graphics cursor position. So `endpath' seldom needs to be invoked explicitly. When drawing a compound path, you would end each of its constituent simple paths by calling `endsubpath', and the compound path as a whole by calling `endpath'. After each call to `endsubpath', you are allowed to call `move' to reposition the graphics cursor, prior to beginning the next simple path. Such a call to `move' will not automatically invoke `endpath'. This is an exception to the above rule. In the current C binding, each of these functions takes a pointer to a `plPlotter' as its first argument. Also in the current C binding, the name of each function begins with "pl_" and ends with "_r". ("_r" stands for `revised' or `reentrant'.) For information on older C bindings, see *Note Older C APIs::. In the C++ binding, these are member functions of the `Plotter' class and its subclasses, and the prefix and suffix are not used. int alabel (int HORIZ_JUSTIFY, int VERT_JUSTIFY, const char *S); alabel takes three arguments HORIZ_JUSTIFY, VERT_JUSTIFY, and S, which specify an `adjusted label,' i.e., a justified text string. The path under construction (if any) is ended and drawn, as if endpath had been called, and the string S is drawn according to the specified justifications. If HORIZ_JUSTIFY is equal to `l', `c', or `r', then the string will be drawn with left, center or right justification, relative to the current graphics cursor position. If VERT_JUSTIFY is equal to `b', `x', `c', `C', or `t', then the bottom, baseline, center, cap line, or top of the string will be placed even with the current graphics cursor position. The graphics cursor is moved to the right end of the string if left justification is specified, and to the left end if right justification is specified. The string may contain escape sequences of various sorts (see *Note Text String Format::), though it should not contain line feeds or carriage returns. In fact it should include only printable characters, from the byte ranges 0x20...0x7e and 0xa0...0xff. The string may be plotted at a nonzero angle, if `textangle' has been called. int arc (int XC, int YC, int X0, int Y0, int X1, int Y1); int farc (double XC, double YC, double X0, double Y0, double X1, double Y1); int arcrel (int XC, int YC, int X0, int Y0, int X1, int Y1); int farcrel (double XC, double YC, double X0, double Y0, double X1, double Y1); arc and farc take six arguments specifying the beginning (X0, Y0), end (X1, Y1), and center (XC, YC) of a circular arc. If the graphics cursor is at (X0, Y0) and a path is under construction, then the arc is added to the path. Otherwise the current path (if any) is ended and drawn, as if endpath had been called, and the arc begins a new path. In all cases the graphics cursor is moved to (X1, Y1). The direction of the arc (clockwise or counterclockwise) is determined by the convention that the arc, centered at (XC, YC), sweep through an angle of at most 180 degrees. If the three points appear to be collinear, the direction is taken to be counterclockwise. If (XC, YC) is not equidistant from (X0, Y0) and (X1, Y1) as it should be, it is corrected by being moved to the closest point on the perpendicular bisector of the line segment joining (X0, Y0) and (X1, Y1). arcrel and farcrel are similar to `arc' and `farc', but use cursor-relative coordinates. int bezier2 (int X0, int Y0, int X1, int Y1, int X2, int Y2); int fbezier2 (double X0, double Y0, double X1, double Y1, double X2, double Y2); int bezier2rel (int X0, int Y0, int X1, int Y1, int X2, int Y2); int fbezier2rel (double X0, double Y0, double X1, double Y1, double X2, double Y2); bezier2 and fbezier2 take six arguments specifying the beginning `p0'=(X0, Y0) and end `p2'=(X2, Y2) of a quadratic Bezier curve, and its intermediate control point `p1'=(X1, Y1). If the graphics cursor is at `p0' and a path is under construction, then the curve is added to the path. Otherwise the current path (if any) is ended and drawn, as if endpath had been called, and the curve begins a new path. In all cases the graphics cursor is moved to `p2'. bezier2rel and fbezier2rel are similar to `bezier2' and `fbezier2', but use cursor-relative coordinates. The quadratic Bezier curve is tangent at `p0' to the line segment joining `p0' to `p1', and is tangent at `p2' to the line segment joining `p1' to `p2'. So it fits snugly into a triangle with vertices `p0', `p1', and `p2'. When using a PCL Plotter to draw Bezier curves on a LaserJet III, you should set the parameter `PCL_BEZIERS' to "no". That is because the LaserJet III, which was Hewlett-Packard's first PCL 5 printer, does not recognize the Bezier instructions supported by later PCL 5 printers. See *Note Plotter Parameters::. int bezier3 (int X0, int Y0, int X1, int Y1, int X2, int Y2, int X3, int Y3); int fbezier3 (double X0, double Y0, double X1, double Y1, double X2, double Y2, double X3, double Y3); int bezier3rel (int X0, int Y0, int X1, int Y1, int X2, int Y2, int X3, int Y3); int fbezier3rel (double X0, double Y0, double X1, double Y1, double X2, double Y2, double X3, double Y3); bezier3 and fbezier3 take eight arguments specifying the beginning `p0'=(X0, Y0) and end `p3'=(X3, Y3) of a cubic Bezier curve, and its intermediate control points `p1'=(X1, Y1) and `p2'=(X2, Y2). If the graphics cursor is at `p0' and a path is under construction, then the curve is added to the path. Otherwise the current path (if any) is ended and drawn, as if endpath had been called, and the curve begins a new path. In all cases the graphics cursor is moved to `p3'. bezier3rel and fbezier3rel are similar to `bezier3' and `fbezier3', but use cursor-relative coordinates. The cubic Bezier curve is tangent at `p0' to the line segment joining `p0' to `p1', and is tangent at `p3' to the line segment joining `p2' to `p3'. So it fits snugly into a quadrangle with vertices `p0', `p1', `p2', and `p3'. When using a PCL Plotter to draw Bezier curves on a LaserJet III, you should set the parameter `PCL_BEZIERS' to "no". That is because the LaserJet III, which was Hewlett-Packard's first PCL 5 printer, does not recognize the Bezier instructions supported by later PCL 5 printers. See *Note Plotter Parameters::. int box (int X1, int y1, int X2, int Y2); int fbox (double X1, double Y1, double X2, double Y2); int boxrel (int X1, int y1, int X2, int Y2); int fboxrel (double X1, double y1, double X2, double Y2); box and fbox take four arguments specifying the starting corner (X1, Y1) and opposite corner (X2, Y2) of a `box', or rectangle. The path under construction (if any) is ended, and the box is drawn as a new path. This path is also ended, and the graphics cursor is moved to the midpoint of the box. boxrel and fboxrel are similar to box and fbox, but use cursor-relative coordinates. int circle (int XC, int YC, int R); int fcircle (double XC, double YC, double R); int circlerel (int XC, int YC, int R); int fcirclerel (double XC, double YC, double R); circle and fcircle take three arguments specifying the center (XC, YC) and radius (R) of a circle. The path under construction (if any) is ended, and the circle is drawn as a new path. This path is also ended, and the graphics cursor is moved to (XC, YC). circlerel and fcirclerel are similar to circle and fcircle, but use cursor-relative coordinates for XC and YC. int cont (int X, int Y); int fcont (double X, double Y); int contrel (int X, int Y); int fcontrel (double X, double Y); cont and fcont take two arguments specifying the coordinates (X, Y) of a point. If a path is under construction, the line segment from the current graphics cursor position to the point (X, Y) is added to it. Otherwise the line segment begins a new path. In all cases the graphics cursor is moved to (X, Y). contrel and fcontrel are similar to cont and fcont, but use cursor-relative coordinates. int ellarc (int XC, int YC, int X0, int Y0, int X1, int Y1); int fellarc (double XC, double YC, double X0, double Y0, double X1, double Y1); int ellarcrel (int XC, int YC, int X0, int Y0, int X1, int Y1); int fellarcrel (double XC, double YC, double X0, double Y0, double X1, double Y1); ellarc and fellarc take six arguments specifying the three points `pc'=(XC,YC), `p0'=(X0,Y0), and `p1'=(X1,Y1) that define a so-called quarter ellipse. This is an elliptic arc from `p0' to `p1' with center `pc'. If the graphics cursor is at point `p0' and a path is under construction, the quarter-ellipse is added to it. Otherwise the path under construction (if any) is ended and drawn, as if endpath had been called, and the quarter-ellipse begins a new path. In all cases the graphics cursor is moved to `p1'. The quarter-ellipse is an affinely transformed version of a quarter circle. It is drawn so as to have control points `p0', `p1', and `p0'+`p1'-`pc'. This means that it is tangent at `p0' to the line segment joining `p0' to `p0'+`p1'-`pc', and is tangent at `p1' to the line segment joining `p1' to `p0'+`p1'-`pc'. So it fits snugly into a triangle with these three control points as vertices. Notice that the third control point is the reflection of `pc' through the line joining `p0' and `p1'. ellarcrel and fellarcrel are similar to ellarc and fellarc, but use cursor-relative coordinates. int ellipse (int XC, int YC, int RX, int RY, int ANGLE); int fellipse (double XC, double YC, double RX, double RY, double ANGLE); int ellipserel (int XC, int YC, int RX, int RY, int ANGLE); int fellipserel (double XC, double YC, double RX, double RY, double ANGLE); ellipse and fellipse take five arguments specifying the center (XC, YC) of an ellipse, the lengths of its semiaxes (RX and RY), and the inclination of the first semiaxis in the counterclockwise direction from the x axis in the user coordinate system. The path under construction (if any) is ended, and the ellipse is drawn as a new path. This path is also ended, and the graphics cursor is moved to (XC, YC). ellipserel and fellipserel are similar to ellipse and fellipse, but use cursor-relative coordinates. int endpath (); endpath terminates the path under construction, if any, and draws it. It also removes the path from the current graphics context, so that a new path may be constructed. The path under construction may be a simple path, or a compound path constructed with the aid of endsubpath (see below). A simple path is constructed by one or more successive calls to cont, line, arc, ellarc, bezier2, bezier3, and/or their floating point counterparts. A simple path may also be constructed by a single call to circle, ellipse, or box. It is often not necessary to call endpath explicitly, since it is frequently called automatically. It will be called if any non-path object is drawn, if any path-related drawing attribute is set, or if move or fmove is invoked to set the cursor position. It will also be called if restorestate is called to pop a graphics context off the stack, and if closepl is called to end a page of graphics. So it is seldom necessary to call endpath explicitly. However, if a Plotter plots objects in real time, calling endpath will ensure that a completed path is drawn on the graphics display without delay. int endsubpath (); endsubpath terminates the simple path under construction, if any, and signals that the construction of the next simple path in a compound path is to begin. Immediately after endsubpath is called, it is permissible to call move or fmove to reposition the graphics cursor. (At other times in the drawing of a compound path, calling move or fmove would force a premature end to the path, by automatically invoking endpath.) int label (const char *S); label takes a single string argument S and draws the text contained in S at the current graphics cursor position. The text is left justified, and the graphics cursor is moved to the right end of the string. This function is provided for backward compatibility; the function call label(S) is equivalent to alabel(`l',`x',S). int labelwidth (const char *S); double flabelwidth (const char *S); labelwidth and flabelwidth are not really object-drawing functions: they are query functions. They compute and return the width of a string in the current font, in the user coordinate system. The string is not drawn. int line (int X1, int Y1, int X2, int Y2); int fline (double X1, double y1, double X2, double Y2); int linerel (int X1, int y1, int X2, int Y2); int flinerel (double X1, double y1, double X2, double Y2); line and fline take four arguments specifying the start point (X1, Y1) and end point (X2, Y2) of a line segment. If the graphics cursor is at (X1, Y1) and a path is under construction, the line segment is added to it. Otherwise the path under construction (if any) is ended and drawn, as if endpath had been called, and the line segment begins a new path. In all cases the graphics cursor is moved to (X2, Y2). linerel and flinerel are similar to line and fline, but use cursor-relative coordinates. int marker (int X, int Y, int TYPE, int SIZE); int fmarker (double X, double Y, int TYPE, double SIZE); int markerrel (int X, int Y, int TYPE, int SIZE); int fmarkerrel (double X, double Y, int TYPE, double SIZE); marker and fmarker take four arguments specifying the position (X,Y) of a marker symbol, its type, and its font size in user coordinates. The path under construction (if any) is ended and drawn, as if endpath had been called, and the marker symbol is plotted. The graphics cursor is moved to (X,Y). markerrel and fmarkerrel are similar to marker and fmarker, but use cursor-relative coordinates for the position (X,Y). A marker symbol is a visual representation of a point, which is visible on all types of Plotter. In this it differs from the points produced by the point function (see below). Marker symbol types 0...31 are taken from a standard set, and marker symbol types 32 and above are interpreted as the index of a character in the current text font. *Note Marker Symbols::. int point (int X, int Y); int fpoint (double X, double Y); int pointrel (int X, int Y); int fpointrel (double X, double Y); point and fpoint take two arguments specifying the coordinates (X, Y) of a point. The path under construction (if any) is ended and drawn, as if endpath had been called, and the point is plotted. The graphics cursor is moved to (X, Y). pointrel and fpointrel are similar to point and fpoint, but use cursor-relative coordinates. `Point' is a misnomer. Any Plotter that produces a bitmap, i.e., an X Plotter, an X Drawable Plotter, a PNG Plotter, a PNM Plotter, or a GIF Plotter, draws a point as a single pixel. Most other Plotters draw a point as a small solid circle, usually so small as to be invisible. So point should really be called pixel.  File: plotutils.info, Node: Attribute Functions, Next: Mapping Functions, Prev: Drawing Functions, Up: Functions 9.4.3 Attribute-setting functions --------------------------------- The following are the "attribute functions" in `libplot'. When invoked on a Plotter, these functions set its drawing attributes, or save them or restore them. Path-related attributes include graphics cursor position, pen color, fill color, fill rule, line thickness, line style, cap style, join style, miter limit, and transformation matrix. Text-related attributes include pen color, font name, font size, text angle, and transformation matrix. Setting any path-related drawing attribute automatically terminates and draws the path under construction (if any), as if the `endpath' operation had been invoked. The `orientation' attribute (clockwise/counterclockwise), which affects circles, ellipses, and boxes, is an exception to this. The exception allows a compound path to include circles, ellipses, and boxes with different orientations. In the current C binding, each of these functions takes a pointer to a `plPlotter' as its first argument. Also in the current C binding, the name of each function begins with "pl_" and ends with "_r". ("_r" stands for `revised' or `reentrant'.) For information on older C bindings, see *Note Older C APIs::. In the C++ binding, these are member functions of the `Plotter' class and its subclasses, and the prefix and suffix are not used. int capmod (const char *S); capmod terminates and draws the path under construction (if any), as if endpath had been called, and sets the cap mode (i.e., cap style) for all paths subsequently drawn on the graphics display. Recognized styles are "butt" (the default), "round", and "projecting". The three styles are visibly distinct only if the line thickness is fairly large. Butt caps do not extend beyond the end of the path. The other two kinds do, however. Round caps are filled semicircles, and projecting caps are filled rectangular regions that extend a distance equal to half the line width beyond the end of the path. PNG, PNM, GIF, PCL, and HP-GL Plotters support a fourth cap mode, "triangular". (For all but PCL and HP-GL Plotters, the support is currently only partial.) Plotters other than these treat "triangular" as equivalent to "round". This function has no effect on ReGIS or Tektronix Plotters. Also, it has no effect on HP-GL Plotters if the parameter `HPGL_VERSION' is set to a value less than "2" (the default), or on CGM Plotters if the parameter `CGM_MAX_VERSION' is set to a value less than "3". *Note Plotter Parameters::. int color (int RED, int GREEN, int BLUE); color is a convenience function. Calling color is equivalent to calling both pencolor and fillcolor, to set both the the pen color and fill color of all objects subsequently drawn on the graphics display. Note that the physical fill color depends also on the fill level, which is specified by calling filltype. int colorname (const char *NAME); colorname is a convenience function. Calling colorname is equivalent to calling both pencolorname and fillcolorname, to set both the the pen color and fill color of all objects subsequently drawn on the graphics display. Note that the physical fill color depends also on the fill level, which is specified by calling filltype. int fillcolor (int RED, int GREEN, int BLUE); fillcolor terminates and draws the path under construction (if any), as if endpath had been called, and sets the fill color for all paths subsequently drawn on the graphics display, using a 48-bit RGB color model. The arguments RED, GREEN and BLUE specify the red, green and blue intensities of the fill color. Each is an integer in the range 0x0000...0xffff, i.e., 0...65535. The choice (0, 0, 0) signifies black, and the choice (65535, 65535, 65535) signifies white. Note that the physical fill color depends also on the fill level, which is specified by calling filltype. int fillcolorname (const char *NAME); fillcolorname sets the fill color of all paths subsequently drawn on the graphics display to be NAME. Unrecognized colors are interpreted as "black". For information on what color names are recognized, see *Note Color Names::. A 24-bit RGB color may also be specified as a six-digit hexadecimal string, e.g., "#c0c0c0". Note that the physical fill color depends also on the fill level, which is specified by calling filltype. int fillmod (const char *S); fillmod terminates and draws the path under construction (if any), as if endpath had been called, and sets the fill mode, i.e., fill rule, for all paths subsequently drawn on the graphics display. The fill rule affects only compound paths and self-intersecting simple paths: it determines which points are `inside'. Two rules are supported: "even-odd" (the default for all Plotters), and "nonzero-winding". For the distinction, see the `Postscript Language Reference Manual'. "alternate" is an alias for "even-odd" and "winding" is an alias for "nonzero-winding". CGM, Fig, and ReGIS Plotters do not support the "nonzero-winding" rule, because the CGM, Fig, and ReGIS vector graphics formats do not support it. Also, HP-GL Plotters do not support "nonzero-winding" if `HPGL_VERSION' is set to a value less than "2" (the default). *Note Plotter Parameters::. The LaserJet III, which was Hewlett-Packard's first PCL 5 printer, did not support the nonzero-winding fill rule. However, all later PCL 5 printers from Hewlett-Packard support it. int filltype (int LEVEL); filltype terminates and draws the path under construction (if any), as if endpath had been called, and sets the fill level for all subsequently drawn paths. A value of 0 for LEVEL specifies no filling. This is the default. A value of 1 specifies 100% filling: the fill color will be the color previously specified by calling fillcolor or fillcolorname. As a convenience to the user, LEVEL may be set to any value in the range 0x0000...0xffff, i.e., 0...65535. Any nonzero value will produce filling. If LEVEL=0xffff, the fill color will be white. Values in the range 0x0001...0xffff are interpreted as specifying a desaturation, or gray level. For example, 0x8000 specifies 50% filling (the fill color will be half-way between the color specified by calling fillcolor or fillcolorname, and white). To draw the region bounded by a path in an edgeless way, you would call filltype to turn on the filling of the interior, and pentype to turn off the drawing of the boundary. Tektronix Plotters do not support filling, and HP-GL Plotters support filling of arbitrary paths only if the parameter `HPGL_VERSION' is equal to "1.5" or "2" (the default). (If the version is "1" then only circles and rectangles aligned with the coordinate axes may be filled.) _Opaque_ filling, including white filling, is supported only if the parameter `HPGL_VERSION' is "2" and the parameter `HPGL_OPAQUE_MODE' is "yes" (the default). *Note Plotter Parameters::. int fmiterlimit (double LIMIT); fmiterlimit terminates and draws the path under construction (if any), as if endpath had been called, and sets the miter limit for all paths subsequently drawn on the graphics display. The miter limit controls the treatment of corners, if the join mode is set to "miter" (the default). At a join point of a path, the `miter length' is defined to be the distance between the inner corner and the outer corner. The miter limit is the maximum value that will be tolerated for the miter length divided by the line thickness. If this value is exceeded, the miter will be cut off: the "bevel" join mode will be used instead. Examples of typical values for LIMIT are 10.43 (the default, which cuts off miters if the join angle is less than 11 degrees), 2.0 (the same, for 60 degrees), and 1.414 (the same, for 90 degrees). In general, the miter limit is the cosecant of one-half the minimum angle for mitered joins. The minimum meaningful value for LIMIT is 1.0, which converts all mitered joins to beveled joins, irrespective of join angle. Specifying a value less than 1.0 resets the limit to the default. This function has no effect on X Drawable Plotters or X Plotters, since the X Window System miter limit, which is also 10.43, cannot be altered. It also has no effect on Tektronix, ReGIS, or Fig Plotters, or on HP-GL Plotters if the parameter `HPGL_VERSION' is set to a value less than "2" (the default). *Note Plotter Parameters::. The miter limit used by HP-GL or PCL Plotters is always rounded to the closest integer, downward. int fontname (const char *FONT_NAME); double ffontname (const char *FONT_NAME); fontname and ffontname take a single case-insensitive string argument, FONT_NAME, specifying the name of the font to be used for all text strings subsequently drawn on the graphics display. (The font for plotting strings is fully specified by calling fontname, fontsize, and textangle.) The size of the font in user coordinates is returned. The default font name depends on the type of Plotter. It is "Helvetica" for all Plotters except for PCL Plotters, for which it is "Univers", and PNG, PNM, GIF, HP-GL, ReGIS, Tektronix and Metafile Plotters, for which it is "HersheySerif". If the argument FONT_NAME is NULL or the empty string, or the font is not available, the default font name will be used. Which fonts are available also depends on the type of Plotter; for a list of all available fonts, see *Note Text Fonts::. int fontsize (int SIZE); double ffontsize (double SIZE); fontsize and ffontsize take a single argument, interpreted as the size, in the user coordinate system, of the font to be used for all text strings subsequently drawn on the graphics display. (The font for plotting strings is fully specified by calling fontname, fontsize, and textangle.) The size of the font in user coordinates is returned. A negative value for SIZE sets the size to the default, which depends on the type of Plotter. Typically, the default font size is 1/50 times the size (i.e., minimum dimension) of the display. The interpretation of zero font size is also Plotter-dependent (most Plotters do not draw text strings if the font size is zero). int joinmod (const char *S); joinmod terminates and draws the path under construction (if any), as if endpath had been called, and sets the join mode (i.e., join style) for all paths subsequently drawn on the graphics display. Recognized styles are "miter" (the default), "round", and "bevel". The three styles are visibly distinct only if the line thickness is fairly large. Mitered joins are sharp, rounded joins are round, and beveled joins are squared off. However, unusually sharp joins are never mitered: instead, they are beveled. The angle at which beveling replaces mitering may be specified by calling fmiterlimit. PNG, PNM, GIF, PCL, and HP-GL Plotters support a fourth join mode, "triangular". Other Plotters treat "triangular" as equivalent to "round". This function has no effect on ReGIS or Tektronix Plotters. Also, it has no effect on HP-GL Plotters if the parameter `HPGL_VERSION' is set to a value less than "2" (the default), or on CGM Plotters if the parameter `CGM_MAX_VERSION' is set to a value less than "3". *Note Plotter Parameters::. int linedash (int N, const int *DASHES, int OFFSET); int flinedash (int N, const double *DASHES, double OFFSET); linedash and flinedash terminate and draw the path under construction (if any), as if endpath had been called, and set the line style for all paths subsequently drawn on the graphics display. They provide much finer control of dash patterns than the linemod function (see below) provides. DASHES should be an array of length N. Its elements, which should be positive, are interpreted as distances in the user coordinate system. Along any path, circle, or ellipse, the elements DASHES[0]...DASHES[N-1] alternately specify the length of a dash and the length of a gap between dashes. When the end of the array is reached, the reading of the array wraps around to the beginning. If the array is empty, i.e., N equals zero, there is no dashing: the drawn line is solid. The OFFSET argument specifies the `phase' of the dash pattern relative to the start of the path. It is interpreted as the distance into the dash pattern at which the dashing should begin. For example, if OFFSET equals zero then the path will begin with a dash, of length DASHES[0] in user space. If OFFSET equals DASHES[0] then the path will begin with a gap of length DASHES[1], and so forth. OFFSET is allowed to be negative. Not all Plotters fully support linedash and flinedash. PCL and HP-GL Plotters cannot dash with a nonzero offset, and in the dash patterns used by X and X Drawable Plotters, each dash or gap has a maximum length of 255 pixels. linedash and flinedash have no effect at all on Tektronix, ReGIS, and Fig Plotters. Also, they have no effect on HP-GL Plotters for which the parameter `HPGL_VERSION' is less than "2" (the default), or on CGM Plotters for which the parameter `CGM_MAX_VERSION' is less than "3". For information on Plotter parameters, see *Note Plotter Parameters::. *Warning*: If the transformation from the user coordinate system to the device coordinate system is anisotropic, each dash pattern should ideally be drawn on the graphics display with a length that depends on its direction. But currently, only SVG and Postscript Plotters do this. Other Plotters always draw any specified dash pattern with the same length, irrespective of its direction. The length that is used is the minimum length, in the device coordinate system, that can correspond to the specified dash pattern length in the user coordinate system. int linemod (const char *S); linemod terminates and draws the path under construction (if any), as if endpath had been called, and sets the line style for all paths subsequently drawn on the graphics display. The supported line styles are "solid", "dotted", "dotdashed", "shortdashed", "longdashed", "dotdotdashed", "dotdotdotdashed", and "disconnected". The first seven correspond to the following dash patterns: "solid" -------------------------------- "dotted" - - - - - - - - "dotdashed" ---- - ---- - ---- - "shortdashed" ---- ---- ---- ---- "longdashed" ------- ------- ------- "dotdotdashed" ---- - - ---- - - "dotdotdotdashed" ---- - - - ---- - - - In the preceding patterns, each hyphen stands for one line thickness. This is the case for sufficiently thick lines, at least. So for sufficiently thick lines, the distance over which a dash pattern repeats is scaled proportionately to the line thickness. The "disconnected" line style is special. A "disconnected" path is rendered as a set of filled circles, each of which has diameter equal to the nominal line thickness. One of these circles is centered on each of the juncture points of the path (i.e., the endpoints of the line segments or arcs from which it is constructed). Circles and ellipses with "disconnected" line style are invisible. Disconnected paths are not filled; this includes circles and ellipses. All line styles are supported by all Plotters, with the following exceptions. HP-GL Plotters do not support the "dotdotdotdashed" style unless the parameter `HPGL_VERSION' is set to "2" (the default). Tektronix Plotters do not support the "dotdotdotdashed" style, and do not support the "dotdotdashed" style unless the parameter `TERM' is set to "kermit". *Note Plotter Parameters::. int linewidth (int SIZE); int flinewidth (double SIZE); linewidth and flinewidth terminate and draws the path under construction (if any), as if endpath had been called, and set the thickness, in the user coordinate system, of all paths subsequently drawn on the graphics display. A negative value resets the thickness to the default. The default thickness depends on the type of Plotter. For most Plotters, it is 1/850 times the size of the viewport, i.e., the drawn-on portion of the display. (Here `size' means minimum dimension.) But for Plotters that produce bitmaps, i.e., X Plotters, X Drawable Plotters, PNG Plotters, PNM Plotters, and GIF Plotters, it is zero. By convention, a zero-thickness line is the thinnest line that can be drawn. However, the drawing editors `idraw' and `xfig' treat zero-thickness lines as invisible. So when producing editable graphics with a Postscript or Fig Plotter, using a zero line thickness may not be desirable. Tektronix and ReGIS Plotters do not support drawing with other than a default thickness, and HP-GL Plotters do not support doing so if the parameter `HPGL_VERSION' is set to a value less than "2" (the default; see *Note Plotter Parameters::). *Warning*: If the transformation from the user coordinate system to the device coordinate system is anisotropic, each line segment in a polygonal path should ideally be drawn on the graphics display with a thickness that depends on its direction. But currently, only SVG and Postscript Plotters do this. Other Plotters draw all line segments in a path with the same thickness. The thickness that is used is the minimum thickness, in the device coordinate system, that can correspond to the specified line thickness in the user coordinate system. int move (int X, int Y); int fmove (double X, double Y); int moverel (int X, int Y); int fmoverel (double X, double Y); move and fmove take two arguments specifying the coordinates (X, Y) of a point to which the graphics cursor should be moved. The path under construction (if any) is ended and drawn, as if endpath had been called, and the graphics cursor is moved to (X, Y). This is equivalent to lifting the pen on a plotter and moving it to a new position, without drawing any line. moverel and fmoverel are similar to move and fmove, but use cursor-relative coordinates. When a new page of graphics is begun by invoking openpl, the cursor is initially at the point (0,0) in user space. Most of the drawing functions reposition the cursor. *Note Drawing Functions::. int orientation (int DIRECTION); orientation sets the orientation for all circles, ellipses, and boxes subsequently drawn on the graphics display. DIRECTION must be 1, meaning counterclockwise, or -1, meaning clockwise. The default is 1. orientation will have a visible effect on a circle, ellipse, or box only if it is dashed, or if it is one of the simple paths in a filled compound path. Its effects on filling, when the "nonzero-winding" fill rule is used, are dramatic, since it is the orientation of each simple path in a compound path that determines which points are `inside' and which are `outside'. int pencolor (int RED, int GREEN, int BLUE); pencolor terminates and draws the path under construction (if any), as if endpath had been called, and sets the pen color for all objects subsequently drawn on the graphics display, using a 48-bit RGB color model. The arguments RED, GREEN and BLUE specify the red, green and blue intensities of the pen color. Each is an integer in the range 0x0000...0xffff, i.e., 0...65535. The choice (0, 0, 0) signifies black, and the choice (65535, 65535, 65535) signifies white. HP-GL Plotters support drawing with a white pen only if the value of the parameter `HPGL_VERSION' is "2" (the default), and the value of the parameter `HPGL_OPAQUE_MODE' is "yes" (the default). *Note Plotter Parameters::. int pencolorname (const char *NAME); pencolorname sets the pen color of all objects subsequently drawn on the graphics display to be NAME. Unrecognized colors are interpreted as "black". For information on what color names are recognized, see *Note Color Names::. A 24-bit RGB color may also be specified as a six-digit hexadecimal string, e.g., "#c0c0c0". HP-GL Plotters support drawing with a white pen only if the value of the parameter `HPGL_VERSION' is "2" (the default) and the value of the parameter `HPGL_OPAQUE_MODE' is "yes" (the default). *Note Plotter Parameters::. int pentype (int LEVEL); pentype terminates and draws the path under construction (if any), as if endpath had been called, and sets the pen level for all subsequently drawn paths. A value of 1 for LEVEL specifies that an outline of each of these objects should be drawn, in the color previously specified by calling pencolor or pencolorname. This is the default. A value of 0 specifies that outlines should not be drawn. To draw the region bounded by a path in an edgeless way, you would call pentype to turn off the drawing of the boundary, and filltype to turn on the filling of the interior. pentype also affects the drawing of marker symbols and points, i.e., pixels. A value of 0 specifies that they should not be drawn. *Note*: In future releases, pentype may also affect the drawing of text strings (a value of 0 will specify that they should not be drawn). It already affects text strings that are rendered using Hershey fonts, since they are drawn using polygonal paths. int restorestate (); restorestate pops the current graphics context off the stack of drawing states. The graphics context consists largely of `libplot''s drawing attributes, which are set by the attribute functions documented in this section. So popping off the graphics context restores the drawing attributes to values they previously had. A path under construction is regarded as part of the graphics context. For this reason, calling restorestate automatically calls endpath to terminate and draw the path under construction, if any. All graphics contexts on the stack are popped off when `closepl' is called, as if `restorestate' had been called repeatedly. int savestate (); savestate pushes the current graphics context onto the stack of drawing states. The graphics context consists largely of `libplot''s drawing attributes, which are set by the attribute functions documented in this section. A path under construction, if any, is regarded as part of the graphics context. That is because paths may be drawn incrementally, one line segment or arc at a time. The new graphics context created by savestate will contain no path. When the previous graphics context is returned to by calling restorestate, the path previously under construction may be continued. int textangle (int ANGLE); double ftextangle (double ANGLE); textangle and ftextangle take one argument, which specifies the angle in degrees counterclockwise from the x (horizontal) axis in the user coordinate system, for text strings subsequently drawn on the graphics display. The default angle is zero. (The font for plotting strings is fully specified by calling fontname, fontsize, and textangle.) The size of the font for plotting strings, in user coordinates, is returned. *Warning:* Some X Window System displays do not generate or display rotated fonts correctly. In effect, they only support a zero rotation angle.  File: plotutils.info, Node: Mapping Functions, Prev: Attribute Functions, Up: Functions 9.4.4 Mapping functions ----------------------- The following are the "mapping functions" in `libplot'. When invoked on a Plotter, they affect the affine transformation it employs to map the user coordinate system to the device coordinate system. That is, they affect the transformation matrix attribute of objects subsequently drawn on the graphics display. The names of these functions resemble those of the corresponding functions in the Postscript language. For information on how to use them to draw graphics efficiently, consult any good book on Postscript programming, or the `Postscript Language Reference Manual'. Each of these functions, if called, terminates and draws the path under construction (if any), as if endpath had been called. In the current C binding, each of these functions takes a pointer to a `plPlotter' as its first argument. Also in the current C binding, the name of each function begins with "pl_" and ends with "_r". ("_r" stands for `revised' or `reentrant'.) For information on older C bindings, see *Note Older C APIs::. In the C++ binding, these are member functions of the `Plotter' class and its subclasses, and the prefix and suffix are not used. int fsetmatrix (double M0, double M1, double M2, double M3, double TX, double TY); Use the Postscript-style transformation matrix [M0 M1 M2 M3 TX TY] as the transformation matrix from user space to NDC (normalized device coordinate) space. This matrix determines the transformation matrix from user space to unnormalized device space, i.e., sets the transformation matrix attribute that will be used when subsequently drawing objects on the graphics display. In NDC space, the graphics display (i.e., viewport) has corners `(0,0)', `(1,0)', `(1,1)', and `(0,1)'. For information on the size of the graphics display in physical units, see *Note Page and Viewport Sizes::. The default transformation matrix from user space to NDC space is [1 0 0 1 0 0], which means that by default, user coordinates are the same as NDC coordinates. This transformation matrix is also altered by space, fspace, space2, and fspace2, and by the following functions. int fconcat (double M0, double M1, double M2, double M3, double TX, double TY); Modify the transformation matrix from user space to NDC space by pre-multiplying it by the matrix [M0 M1 M2 M3 TX TY]. Equivalently, apply the linear transformation defined by the two-by-two matrix [M0 M1 M2 M3] to the user coordinate system, and then translate by TX units in the x direction and TY units in the y direction. fconcat is a wrapper around the more fundamental fsetmatrix function. The following three functions (frotate, fscale, ftranslate) are convenience functions that are special cases of fconcat. int frotate (double THETA); Modify the transformation matrix from user space to NDC space by pre-multiplying it by the matrix [cos(THETA) sin(THETA) -sin(THETA) cos(THETA) 0 0]. Equivalently, rotate the user coordinate system axes about their origin by THETA degrees counterclockwise, with respect to their former orientation. The position of the user coordinate origin and the size of the x and y units remain unchanged. int fscale (double SX, double SY); Modify the transformation matrix from user space to NDC space by pre-multiplying it by the matrix [SX 0 0 SY 0 0]. Equivalently, make the x and y units in the user coordinate system be the size of SX and SY units in the former user coordinate system. The position of the user coordinate origin and the orientation of the coordinate axes are unchanged. int ftranslate (double TX, double TY); Modify the transformation matrix from user space to NDC space by pre-multiplying it by the matrix [0 0 0 0 TX TY]. Equivalently, move the origin of the user coordinate system by TX units in the x direction and TY units in the y direction, relative to the former user coordinate system. The size of the x and y units and the orientation of the coordinate axes are unchanged.  File: plotutils.info, Node: Plotter Parameters, Prev: Functions, Up: libplot 9.5 Plotter parameters ====================== In designing the `libplot' library, every effort was made to make the Plotter interface independent of the type of Plotter. To the extent that Plotters display individual (i.e., instance-specific) behavior, that behavior is captured by a manageable number of _Plotter parameters_. Each parameter has a value that is allowed to be a generic pointer (a `void *'). For most parameters, the value is a string (a `char *'). The parameter values of any Plotter are constant over the lifetime of the Plotter, and are specified when the Plotter is created. In the C binding, a value for any parameter is specified by calling the `pl_setplparam' function. The `pl_setplparam' function acts on a `plPlotterParams' object, which encapsulates Plotter parameters. When a Plotter is created by calling `pl_newpl_r', a pointer to a `plPlotterParams' object is passed as the final argument. If at Plotter creation time a parameter is _not_ specified, its default value will be used, unless the parameter is string-valued and there is an environment variable of the same name, in which case the value of that environment variable will be used. This rule increases run-time flexibility: an application programmer may allow non-critical Plotter parameters to be specified by the user via environment variables. In the C++ binding, the `PlotterParams' class and `PlotterParams::setplparam', a member function, are the analogues of the `plPlotterParams' datatype and the function `pl_setplparam'. The following are the currently recognized parameters (unrecognized ones are ignored). The most important ones are `DISPLAY', which affects X Plotters, `BITMAPSIZE', which affects X Plotters, PNG Plotters, PNM Plotters, and GIF Plotters, `PAGESIZE', which affects Illustrator, Postscript, CGM, Fig, and HP-GL Plotters, and `ROTATION', which affects all Plotters except Metafile Plotters. These four parameters are listed first and the others alphabetically. Most of the remaining parameters, such as the several whose names begin with "HPGL", affect only a single type of Plotter. `DISPLAY' (Default NULL.) The X Window System display on which the graphics display will be popped up, as an X window. This is relevant only to X Plotters. `BITMAPSIZE' (Default "570x570".) The size of the graphics display (i.e., the viewport) in terms of pixels. This is relevant only to X Plotters, PNG Plotters, PNM Plotters, and GIF Plotters. For X Plotters, the value of this parameter will automatically, if it is not set, be taken from the X resource `Xplot.geometry'. That is for backward compatibility. X Plotters support precise positioning of the graphics display. For example, if `BITMAPSIZE' is "570x570+0+0" then it will be positioned in the upper left corner of the X Window System display. `PAGESIZE' (Default "letter".) The page type, which determines the size of the graphics display (i.e., the viewport) used by the Plotter. This is relevant only to SVG, Illustrator, Postscript, CGM, Fig, PCL, and HP-GL Plotters. "letter" means an 8.5in by 11in page. Any ISO page size in the range "a0"..."a4" or ANSI page size in the range "a"..."e" may be specified ("letter" is an alias for "a" and "tabloid" is an alias for "b"). "legal", "ledger", and "b5" are recognized page sizes also. For Illustrator, Postscript, PCL and Fig Plotters, the graphics display will be, by default, a square region centered on the specified page. (For example, it will be a centered 8in square if `PAGESIZE' is "letter".) For HP-GL Plotters, it will be a square region of the same size, but will not by default be centered. SVG format and WebCGM format have no notion of the Web page on which the graphics display will ultimately be positioned. They do have a notion of default display size, though this will normally be overridden when the SVG or WebCGM file is placed on a Web page. For this default display size, SVG and CGM Plotters will use the same graphics display size that is used by other Plotters. For the default size (and location) of the graphics display for each page type, see *Note Page and Viewport Sizes::. You do not need to use the default size, since either or both of its dimensions can be specified explicitly. For example, `PAGESIZE' could be specified as "letter,xsize=4in", or "a4,xsize=10cm,ysize=15cm". The dimensions are allowed to be negative (a negative dimension results in a reflection). For Plotters other than SVG and CGM Plotters, the position of the graphics display on the page, relative to its default position, can be adjusted by specifying an offset vector. For example, `PAGESIZE' could be specified as "letter,yoffset=1.2in", or "a4,xoffset=-5mm,yoffset=2.0cm". Inches, centimeters, and millimeters are the supported units. The "xoffset" and "yoffset" options may be used in conjunction with "xsize" and "ysize". It is also possible to position the graphics display precisely, by specifying the location of its lower left corner relative to the lower left corner of the page. For example, `PAGESIZE' could be specified as "letter,xorigin=2in,yorigin=3in", or "a4,xorigin=0.5cm,yorigin=0.5cm". The "xorigin" and "yorigin" options may be used in conjunction with "xsize" and "ysize". SVG and WebCGM Plotters ignore the "xoffset", "yoffset", "xorigin", and "yorigin" options, since SVG format and WebCGM format have no notion of the Web page on which the graphics display will ultimately be positioned. `ROTATION' (Default "0.0".) Relevant to all Plotters other than Metafile Plotters, which have no output device. The angle, in degrees, by which the graphics display (i.e., the viewport) should be rotated, relative to its default orientation. The rotation is counterclockwise. A rotated viewport does not change the position of its four corners. Rather, the graphics are rotated within it. If the viewport is rectangular rather than square, this `rotation' necessarily includes a rescaling. This parameter is useful for switching between portrait and landscape orientations. Internally, it determines the affine transformation from NDC (normalized device coordinate) space to device space. `BG_COLOR' (Default "white".) The initial background color of the graphics display, when drawing each page of graphics. This is relevant to X Plotters, PNG Plotters, PNM Plotters, GIF Plotters, CGM Plotters, ReGIS Plotters, and Metafile Plotters; also to X Drawable Plotters (for the last, the background color shows up only if `erase' is invoked). For information on what color names are recognized, see *Note Color Names::. The background color may be changed at any later time by invoking the bgcolor (or bgcolorname) and erase operations. SVG Plotters and CGM Plotters support "none" as a value for the background color. It will turn off the background: the drawn objects will not be backed by anything. This is useful when the generated SVG or WebCGM file is to be placed on a Web page. `CGM_ENCODING' (Default "binary".) Relevant only to CGM Plotters. "binary" means that the CGM output should use the binary encoding. "clear_text" means that the CGM output should use a human-readable encoding. The WebCGM profile requires that the binary encoding be used, but many CGM viewers and interpreters can also parse the clear text encoding. The third standard CGM encoding, "character", is not currently supported. `CGM_MAX_VERSION' (Default "4".) Relevant only to CGM Plotters. An upper bound on the version number of CGM format that is produced. Many older CGM interpreters and viewers, such as the ones built into Microsoft Office and other commercial software, only support version 1 CGM files. For fully adequate handling of fonts and line styles, version 3 is necessary. By default, the present release of `libplot' produces version 3 CGM files, i.e., it does not use version 4 features. `EMULATE_COLOR' (Default "no".) Relevant to all Plotters. "yes" means that each color in the output should be replaced by an appropriate shade of gray. The well known formula for CIE luminance, namely 0.212671R + 0.715160G + 0.072169B, is used. This parameter is seldom useful, except when using a PCL Plotter to prepare output for a monochrome PCL 5 device. Many monochrome PCL 5 devices, such as monochrome LaserJets, do a poor job of emulating color on their own. They usually map HP-GL/2's seven standard pen colors, including even yellow, to black. `GIF_ANIMATION' (Default "yes".) Relevant only to GIF Plotters. "yes" means that the `erase' operation will have special semantics: with the exception of its first invocation, it will act as a separator between successive images in the written-out pseudo-GIF file. "no" means that `erase' should act as it does on other Plotters that do not write graphics in real time, i.e., it should erase the image under construction by filling it with the background color. If "no" is specified, the pseudo-GIF file will contain only a single image. `GIF_DELAY' (Default "0".) Relevant only to GIF Plotters. The delay, in hundredths of a second, after each image in a written-out animated pseudo-GIF file. The value should be an integer in the range "0"..."65535". `GIF_ITERATIONS' (Default "0".) Relevant only to GIF Plotters. The number of times that an animated pseudo-GIF file should be `looped'. The value should be an integer in the range "0"..."65535". `HPGL_ASSIGN_COLORS' (Default "no".) Relevant only to HP-GL Plotters, and only if the value of `HPGL_VERSION' is "2". "no" means to draw with a fixed set of pens, specified by setting the `HPGL_PENS' parameter. "yes" means that pen colors will not restricted to the palette specified in `HPGL_PENS': colors will be assigned to "logical pens" in the range #1...#31, as needed. Other than color LaserJet printers and DesignJet plotters, not many HP-GL/2 devices allow the assignment of colors to logical pens. In particular, HP-GL/2 pen plotters do not. So this parameter should be used with caution. `HPGL_OPAQUE_MODE' (Default "yes".) Relevant only to HP-GL Plotters, and only if the value of `HPGL_VERSION' is "2". "yes" means that the HP-GL/2 output device should be switched into opaque mode, rather than transparent mode. This allows objects to be filled with opaque white and other opaque colors. It also allows the drawing of visible white lines, which by convention are drawn with pen #0. Not all HP-GL/2 devices support opaque mode or the use of pen #0 to draw visible white lines. In particular, HP-GL/2 pen plotters do not. Some older HP-GL/2 devices reportedly malfunction if asked to switch into opaque mode. If the output of an HP-GL Plotter is to be sent to such a device, a "no" value is recommended. `HPGL_PENS' (Default "1=black:2=red:3=green:4=yellow:5=blue:6=magenta:7=cyan" if the value of `HPGL_VERSION' is "1.5" or "2" and "1=black" if the value of `HPGL_VERSION' is "1". Relevant only to HP-GL Plotters. The set of available pens; the format should be self-explanatory. The color for any pen in the range #1...#31 may be specified. For information on what color names are recognized, see *Note Color Names::. Pen #1 must always be present, though it need not be black. Any pen in the range #2...#31 may be omitted. `HPGL_ROTATE' (Default "0".) Relevant only to HP-GL Plotters. The angle, in degrees, by which the graphics display (i.e., the viewport) should be rotated on the page relative to the default orientation. Recognized values are "0", "90", "180", and "270"; "no" and "yes" are equivalent to "0" and "90" respectively. "180" and "270" are supported only if `HPGL_VERSION' is "2". The rotation requested by `HPGL_ROTATE' is different from the sort requested by the `ROTATION' parameter. `ROTATION' rotates the graphics display in place, but `HPGL_ROTATE' both rotates the graphics display and moves its lower left corner toward another corner of the page. Altering the plotting area in such a way is supported by the HP-GL language. The `HPGL_ROTATE' parameter facilitates switching between portrait and landscape orientations. For HP-GL devices that is frequently a concern, since some HP-GL devices ("plotters") draw with a default landscape orientation, while others ("printers") draw with a default portrait orientation. There is no programmatic way of determining which is which. `HPGL_VERSION' (Default "2".) Relevant only to HP-GL Plotters. "1" means that the output should be generic HP-GL, "1.5" means that the output should be suitable for the HP7550A graphics plotter and the HP758x, HP7595A and HP7596A drafting plotters (HP-GL with some HP-GL/2 extensions), and "2" means that the output should be modern HP-GL/2. If the version is less than "2" then the only available fonts will be vector fonts, and all paths will be drawn with a default thickness, so that invoking linewidth, capmod, joinmod, and fmiterlimit will have no effect. Also, the `nonzero winding number rule' will not be supported when filling paths, so invoking fillmod will have no effect. Additionally, if the version is "1" then the filling of arbitrary paths will not be supported (circles and rectangles aligned with the coordinate axes may be filled, however). `INTERLACE' (Default "no".) Relevant only to PNG and GIF Plotters. If the value is "yes", the output file will be interlaced. That means it will be displayed in an interlaced (nonlinear) way by many applications. `MAX_LINE_LENGTH' (Default "500".) The maximum number of defining points that a path may have, before it is flushed to the output device. If this flushing occurs, the path will be split into two or more sub-paths, though the splitting should not be noticeable. Splitting will not be performed if the path is to be filled. This parameter is relevant to all Plotters except Tektronix and Metafile Plotters. The reason for splitting long paths is that some display devices (e.g., old Postscript printers and HP-GL pen plotters) have limited buffer sizes. It is not relevant to Tektronix or Metafile Plotters, since they draw paths in real time and have no buffer limitations. `META_PORTABLE' (Default "no".) Relevant only to Metafile Plotters. "yes" means that the output metafile should use a portable (human-readable) encoding of graphics, rather than the default (binary) encoding. *Note Metafiles::. `PCL_ASSIGN_COLORS' (Default "no".) Relevant only to PCL Plotters. "no" means to draw with a fixed set of pens. "yes" means that pen colors will not restricted to this palette: colors will be assigned to "logical pens", as needed. Other than color LaserJet printers, not many PCL 5 devices allow the assignment of colors to logical pens. So this parameter should be used with caution. `PCL_BEZIERS' (Default "yes".) Relevant only to PCL Plotters. "yes" means that when drawing Bezier curves, the special `Bezier instructions' will be used. "no" means that these instructions will not be used. Instead, each Bezier curve will be approximated and drawn as a polygonal line. Other than the LaserJet III, which was Hewlett-Packard's first PCL 5 printer, all Hewlett-Packard's PCL 5 printers support the Bezier instructions. `PNM_PORTABLE' (Default "no".) Relevant only to PNM Plotters. "yes" means that the output should be in a portable (human-readable) version of PBM/PGM/PPM format, rather than the default (binary) version. `Portable' is something of a misnomer, since binary PBM/PGM/PPM files are also portable, in the sense that they are machine-independent. `TERM' (Default NULL.) Relevant only to Tektronix Plotters. If the value is a string beginning with "xterm", "nxterm", or "kterm", it is taken as a sign that the current application is running in an X Window System VT100 terminal emulator: an `xterm', `nxterm', or `kterm'. Before drawing graphics, a Tektronix Plotter will emit an escape sequence that causes the terminal emulator's auxiliary Tektronix window, which is normally hidden, to pop up. After the graphics are drawn, an escape sequence that returns control to the original VT100 window will be emitted. The Tektronix window will remain on the screen. If the value is a string beginning with "kermit", "ansi.sys", or "nansi.sys", it is taken as a sign that the current application is running in the VT100 terminal emulator provided by the MS-DOS version of `kermit'. Before drawing graphics, a Tektronix Plotter will emit an escape sequence that switches the terminal emulator to Tektronix mode. Also, some of the Tektronix control codes emitted by the Plotter will be `kermit'-specific. There will be a limited amount of color support, which is not normally the case (the 16 `ansi.sys' colors will be supported). The "dotdotdashed" line style will be supported, which is also not normally the case. After drawing graphics, the Plotter will emit an escape sequence that returns the emulator to VT100 mode. The key sequence `ALT minus' may be employed manually within `kermit' to switch between the two modes. `TRANSPARENT_COLOR' (Default "none".) Relevant only to PNG and GIF Plotters. If the value is a recognized color name, that color, if it appears in the output file, will be treated as transparent by most applications. For information on what names are recognized, see *Note Color Names::. If `TRANSPARENT_COLOR' is set and an animated pseudo-GIF file is produced, the `restore to background' disposal method will be used for each image in the file. Otherwise, the `unspecified' disposal method will be used. `USE_DOUBLE_BUFFERING' (Default "no".) Relevant only to X Plotters and X Drawable Plotters. If the value is "yes", a double buffering scheme will be used when drawing graphics. Each frame of graphics, within a openpl...closepl pair, will be written to an off-screen buffer rather than to the Plotter's display. When erase is invoked to end a frame, or when closepl is invoked, the contents of the off-screen buffer will be copied to the Plotter's display, pixel by pixel. If successive frames differ only slightly, this will create the illusion of smooth animation. Some X displays provide special hardware support for double buffering. If this support is available, the X Plotter will detect its presence, and will draw graphics using the appropriate extension to the X11 protocol (either DBE or MBX). In this case the animation will be significantly faster; on high-end graphics hardware, at least. `VANISH_ON_DELETE' (Default "no".) Relevant only to X Plotters. If the value is "yes", when a Plotter is deleted, the window or windows that it has popped up will vanish. Otherwise, each such window will remain on the screen until it is removed by the user (by typing `q' in it, or by clicking with a mouse). `XDRAWABLE_COLORMAP' (Default NULL.) Relevant only to X Drawable Plotters. If the value is non-NULL, it should be a `Colormap *', a pointer to a colormap from which colors should be allocated. NULL indicates that the colormap to be used should be the default colormap of the default screen of the X display. `XDRAWABLE_DISPLAY' (Default NULL.) Relevant only to X Drawable Plotters. The value should be a `Display *', a pointer to the X display with which the drawable(s) to be drawn in are associated. `XDRAWABLE_DRAWABLE1' `XDRAWABLE_DRAWABLE2' (Default NULL.) Relevant only to X Drawable Plotters. If set, the value of each of these parameters should be a `Drawable *', a pointer to a drawable to be drawn in. A `drawable' is either a window or a pixmap. At the time an X Drawable Plotter is created, at least one of the two parameters must be set. X Drawable Plotters support simultaneous drawing in two drawables because it is often useful to be able to draw graphics simultaneously in both an X window and its background pixmap. If two drawables are specified, they must have the same dimensions and depth, and be associated with the same screen of the X display. `XDRAWABLE_VISUAL' (Default NULL.) Relevant only to X Drawable Plotters. If set, the value should be a `Visual *', a pointer to the `visual' with which the colormap (see above) is associated. Setting this parameter is not required, but it is recommended that it be set if `XDRAWABLE_COLORMAP' is set. Under some circumstances, that will speed up color cell allocation. `X_AUTO_FLUSH' (Default "yes".) Relevant only to X Plotters. If the value is "yes", an `XFlush' operation is performed after each drawing operation. That ensures that graphics are flushed to the X Window System display, and are visible to the user, immediately after they are drawn. However, it slows down rendering considerably. If the value is "no", drawing is faster, since it does not take place in real time.  File: plotutils.info, Node: Appendices, Prev: libplot, Up: Top The following appendices contain supplementary information on the GNU plotting utilities and the GNU `libplot' library. * Menu: * Fonts and Markers:: Text fonts, text strings, and marker symbols * Color Names:: Specifying colors by name * Page and Viewport Sizes:: Specifying the size of an output page * Metafiles:: The device-independent GNU metafile format * Auxiliary Software:: How to obtain auxiliary software * History and Acknowledgements:: The contributors * Reporting Bugs:: How to report bugs * GNU Free Documentation License:: How this manual may be distributed  File: plotutils.info, Node: Fonts and Markers, Next: Color Names, Prev: Appendices, Up: Appendices Appendix A Fonts, Strings, and Symbols ************************************** The GNU `libplot' graphics library and applications built on it, such as `graph', `plot', `pic2plot', `tek2plot', and `plotfont', can draw text strings in a wide variety of fonts. Text strings may include characters from more than one font in a typeface, and may include superscripts, subscripts, and square roots. A wide variety of marker symbols can also be drawn. The following sections explain how to use these features. * Menu: * Text Fonts:: Available text fonts * Cyrillic and Japanese:: The Cyrillic and Japanese fonts * Text Fonts in X:: Available text fonts in the X Window System * Text String Format:: Text string formatting (with escape sequences) * Marker Symbols:: Available marker symbols  File: plotutils.info, Node: Text Fonts, Next: Cyrillic and Japanese, Prev: Fonts and Markers, Up: Fonts and Markers A.1 Available text fonts ======================== The GNU `libplot' library and applications built on it, such as `graph', `plot', `pic2plot', `tek2plot', and `plotfont', can use many fonts. These include 22 Hershey vector fonts, 35 Postscript fonts, 45 PCL 5 fonts, and 18 Hewlett-Packard vector fonts. We call these 120 supported fonts the `built-in' fonts. The Hershey fonts are constructed from stroked characters digitized c. 1967 by Dr. Allen V. Hershey at the U.S. Naval Surface Weapons Center in Dahlgren, VA. The 35 Postscript fonts are the outline fonts resident in all modern Postscript printers, and the 45 PCL 5 fonts are the outline fonts resident in modern Hewlett-Packard LaserJet printers and plotters. (Of the PCL 5 fonts, the old LaserJet III, which was Hewlett-Packard's first PCL 5 printer, supported only eight: the Univers and CGTimes fonts.) The 18 Hewlett-Packard vector fonts are fonts that are resident in Hewlett-Packard printers and plotters (mostly the latter). The Hershey fonts can be used by all types of Plotter supported by `libplot', and the Postscript fonts can be used by X, SVG, Illustrator, Postscript, and Fig Plotters. So, for example, all variants of `graph' can use the Hershey fonts, and `graph -T X', `graph -T svg', `graph -T ai', `graph -T ps', `graph -T cgm' and `graph -T fig' can use the Postscript fonts. The PCL 5 fonts can be used by by SVG, Illustrator, PCL, and HP-GL Plotters, and by `graph -T svg', `graph -T ai', `graph -T pcl', and `graph -T hpgl'. The Hewlett-Packard vector fonts can be used by PCL and HP-GL Plotters, and by `graph -T pcl' and `graph -T hpgl'. X Plotters and `graph -T X' are not restricted to the built-in Hershey and Postscript fonts. They can use any X Window System font. The `plotfont' utility, which accepts the `-T' option, will print a character map of any font that is available in the specified output format. *Note plotfont::. For the purpose of plotting text strings (see *Note Text String Format::), the 120 built-in fonts are divided into typefaces. As you can see from the following tables, our convention is that in any typeface with more than a single font, font #1 is the normal font, font #2 is italic or oblique, font #3 is bold, and font #4 is bold italic or bold oblique. Additional variants (if any) are numbered #5 and higher. The 22 Hershey fonts are divided into typefaces as follows. * HersheySerif 1. HersheySerif 2. HersheySerif-Italic 3. HersheySerif-Bold 4. HersheySerif-BoldItalic 5. HersheyCyrillic 6. HersheyCyrillic-Oblique 7. HersheyEUC * HersheySans 1. HersheySans 2. HersheySans-Oblique 3. HersheySans-Bold 4. HersheySans-BoldOblique * HersheyScript 1. HersheyScript 2. HersheyScript 3. HersheyScript-Bold 4. HersheyScript-Bold * HersheyGothicEnglish * HersheyGothicGerman * HersheyGothicItalian * HersheySerifSymbol 1. HersheySerifSymbol 2. HersheySerifSymbol-Oblique 3. HersheySerifSymbol-Bold 4. HersheySerifSymbol-BoldOblique * HersheySansSymbol 1. HersheySansSymbol 2. HersheySansSymbol-Oblique Nearly all Hershey fonts except the Symbol fonts use the ISO-Latin-1 encoding, which is a superset of ASCII. The Symbol fonts consist of Greek characters and mathematical symbols, and use the symbol font encoding documented in the `Postscript Language Reference Manual'. By convention, each Hershey typeface contains a symbol font (HersheySerifSymbol or HersheySansSymbol, as appropriate) as font #0. HersheyCyrillic, HersheyCyrillic-Oblique, and HersheyEUC (which is a Japanese font) are the only non-Symbol Hershey fonts that do not use the ISO-Latin-1 encoding. For their encodings, see *Note Cyrillic and Japanese::. The 35 Postscript fonts are divided into typefaces as follows. * Helvetica 1. Helvetica 2. Helvetica-Oblique 3. Helvetica-Bold 4. Helvetica-BoldOblique * Helvetica-Narrow 1. Helvetica-Narrow 2. Helvetica-Narrow-Oblique 3. Helvetica-Narrow-Bold 4. Helvetica-Narrow-BoldOblique * Times 1. Times-Roman 2. Times-Italic 3. Times-Bold 4. Times-BoldItalic * AvantGarde 1. AvantGarde-Book 2. AvantGarde-BookOblique 3. AvantGarde-Demi 4. AvantGarde-DemiOblique * Bookman 1. Bookman-Light 2. Bookman-LightItalic 3. Bookman-Demi 4. Bookman-DemiItalic * Courier 1. Courier 2. Courier-Oblique 3. Courier-Bold 4. Courier-BoldOblique * NewCenturySchlbk 1. NewCenturySchlbk-Roman 2. NewCenturySchlbk-Italic 3. NewCenturySchlbk-Bold 4. NewCenturySchlbk-BoldItalic * Palatino 1. Palatino-Roman 2. Palatino-Italic 3. Palatino-Bold 4. Palatino-BoldItalic * ZapfChancery-MediumItalic * ZapfDingbats * Symbol All Postscript fonts except the ZapfDingbats and Symbol fonts use the ISO-Latin-1 encoding. The encodings used by the ZapfDingbats and Symbol fonts are documented in the `Postscript Language Reference Manual'. By convention, each Postscript typeface contains the Symbol font as font #0. The 45 PCL 5 fonts are divided into typefaces as follows. * Univers 1. Univers 2. Univers-Oblique 3. Univers-Bold 4. Univers-BoldOblique * UniversCondensed 1. UniversCondensed 2. UniversCondensed-Oblique 3. UniversCondensed-Bold 4. UniversCondensed-BoldOblique * CGTimes 1. CGTimes-Roman 2. CGTimes-Italic 3. CGTimes-Bold 4. CGTimes-BoldItalic * Albertus 1. AlbertusMedium 2. AlbertusMedium 3. AlbertusExtraBold 4. AlbertusExtraBold * AntiqueOlive 1. AntiqueOlive 2. AntiqueOlive-Italic 3. AntiqueOlive-Bold * Arial 1. Arial-Roman 2. Arial-Italic 3. Arial-Bold 4. Arial-BoldItalic * ClarendonCondensed * Coronet * Courier 1. Courier 2. Courier-Italic 3. Courier-Bold 4. Courier-BoldItalic * Garamond 1. Garamond 2. Garamond-Italic 3. Garamond-Bold 4. Garamond-BoldItalic * LetterGothic 1. LetterGothic-Roman 2. LetterGothic-Italic 3. LetterGothic-Bold 4. LetterGothic-BoldItalic * Marigold * CGOmega 1. CGOmega-Roman 2. CGOmega-Italic 3. CGOmega-Bold 4. CGOmega-BoldItalic * TimesNewRoman 1. TimesNewRoman 2. TimesNewRoman-Italic 3. TimesNewRoman-Bold 4. TimesNewRoman-BoldItalic * Wingdings * Symbol All PCL 5 fonts except the Wingdings and Symbol fonts use the ISO-Latin-1 encoding. The encoding used by the Symbol font is the symbol font encoding documented in the `Postscript Language Reference Manual'. By convention, each PCL typeface contains the Symbol font as font #0. The 18 Hewlett-Packard vector fonts are divided into typefaces as follows. * Arc 1. Arc 2. Arc-Oblique 3. Arc-Bold 4. Arc-BoldOblique * Stick 1. Stick 2. Stick-Oblique 3. Stick-Bold 4. Stick-BoldOblique * ArcANK 1. ArcANK* 2. ArcANK-Oblique* 3. ArcANK-Bold* 4. ArcANK-BoldOblique* * StickANK 1. StickANK* 2. StickANK-Oblique* 3. StickANK-Bold* 4. StickANK-BoldOblique* * ArcSymbol* * StickSymbol* The Hewlett-Packard vector fonts with an asterisk (the ANK and Symbol fonts) are only available when producing HP-GL/2 graphics, or HP-GL graphics for the HP7550A graphics plotter and the HP758x, HP7595A and HP7596A drafting plotters. That is, they are available only if `HPGL_VERSION' is "2" (the default) or "1.5". The ANK fonts are Japanese fonts (*note Cyrillic and Japanese::), and the Symbol fonts contain a few miscellaneous mathematical symbols. All Hewlett-Packard vector fonts except the ANK and Symbol fonts use the ISO-Latin-1 encoding. The Arc fonts are proportional (variable-width) fonts, and the Stick fonts are fixed-width fonts. If HP-GL/2 or HP-GL output is selected, the Arc fonts are assumed to be kerned via device-resident kerning tables. But when producing PCL 5 output, it is assumed that the display device will do no kerning. Apparently Hewlett-Packard dropped support for device-resident kerning tables when emulating HP-GL/2 from within PCL 5. For information about Hewlett-Packard vector fonts and the way in which they are kerned (in HP-GL pen plotters, at least), see the article by L. W. Hennessee et al. in the Nov. 1981 issue of the `Hewlett-Packard Journal'. To what extent do the fonts supported by `libplot' contain ligatures? The Postscript fonts, the PCL 5 fonts, and the Hewlett-Packard vector fonts, at least as implemented in `libplot', do not contain ligatures. However, six of the 22 Hershey fonts contain ligatures. The character combinations "fi", "ff", "fl", "ffi", and "ffl" are automatically drawn as ligatures in HersheySerif and HersheySerif-Italic. (Also in the two HersheyCyrillic fonts and HersheyEUC, since insofar as printable ASCII characters are concerned, they are identical [or almost identical] to HersheySerif.) In addition, "tz" and "ch" are ligatures in HersheyGothicGerman. The German double-s character `ss', which is called an `eszet', is not treated as a ligature in any font. To obtain an eszet, you must either request one with the escape sequence "\ss" (*note Text String Format::), or, if you have an 8-bit keyboard, type an eszet explicitly.  File: plotutils.info, Node: Cyrillic and Japanese, Next: Text Fonts in X, Prev: Text Fonts, Up: Fonts and Markers A.2 Cyrillic and Japanese fonts =============================== The built-in fonts discussed in the previous section include Cyrillic and Japanese vector fonts. This section explains how these fonts are encoded, i.e., how their character maps are laid out. You may use the `plotfont' utility to display the character map for any font, including the Cyrillic and Japanese vector fonts. *Note plotfont::. The HersheyCyrillic and HersheyCyrillic-Oblique fonts use an encoding called KOI8-R, a superset of ASCII that has become the de facto standard for Unix and networking applications in the former Soviet Union. Insofar as printable ASCII characters go, they resemble the HersheySerif vector font. But their upper halves are different. The byte range 0xc0...0xdf contains lower-case Cyrillic characters and the byte range 0xe0...0xff contains upper case Cyrillic characters. Additional Cyrillic characters are located at 0xa3 and 0xb3. For more on the encoding scheme, see the official KOI8-R Web page (http://koi8.pp.ru/main.html) and Internet RFC 1489, which is available in many places, including Information Sciences Institute (http://www.isi.edu). The HersheyEUC font is a vector font that is used for displaying Japanese text. It uses the 8-bit EUC-JP encoding. EUC stands for `extended Unix code', which is a scheme for encoding Japanese, and also other character sets (e.g., Greek and Cyrillic) as multibyte character strings. The format of EUC strings is explained in Ken Lunde's `Understanding Japanese Information Processing' (O'Reilly, 1993), which contains much additional information on Japanese text processing. See also his on-line supplement (http://www.praxagora.com/lunde/cjk_inf.html), and his more recent book `CJKV Information Processing' (O'Reilly, 1999). In the HersheyEUC font, characters in the printable ASCII range, 0x20...0x7e, are similar to HersheySerif (their encoding is `JIS Roman', an ASCII variant standardized by the Japanese Industrial Standards Committee). Also, each successive pair of bytes in the `0xa1'...`0xfe' range defines a single character in the JIS X0208 standard. The characters in the JIS X0208 standard include Japanese syllabic characters (Hiragana and Katakana), ideographic characters (Kanji), Roman, Greek, and Cyrillic alphabets, punctuation marks, and miscellaneous symbols. For example, the JIS X0208 standard indexes the 83 Hiragana as `0x2421'...`0x2473'. To obtain the EUC code for any JIS X0208 character, you would add `0x80' to each byte (i.e., `set the high bit' on each byte). So the first of the 83 Hiragana (`0x2421') would be encoded as the successive pair of bytes `0xa4' and `0xa1'. The implementation of the JIS X0208 standard in the HersheyEUC font is based on Dr. Hershey's digitizations, and is complete enough to be useful. All 83 Hiragana and 86 Katakana are available, though the little-used `half-width Katakana' are not supported. Also, 603 Kanji are available, including 596 of the 2965 JIS Level 1 (i.e., frequently used) Kanji. The Hiragana, the Katakana, and the available Kanji all have the same width. The file `kanji.doc', which on most systems is installed in `/usr/share/libplot' or `/usr/local/share/libplot', lists the 603 available Kanji. Each JIS X0208 character that is unavailable will be drawn as an `undefined character' glyph (a bundle of horizontal lines). The eight Hewlett-Packard vector fonts in the ArcANK and StickANK typefaces are also used for displaying Japanese text. They are available when producing HP-GL/2 output, or HP-GL output for the HP7550A graphics plotter and the HP758x, HP7595A and HP7596A drafting plotters. That is, they are available only if `HPGL_VERSION' is "2" (the default) or "1.5". ANK stands for Alphabet, Numerals, and Katakana. The ANK fonts use a special mixed encoding. The lower half of each font uses the JIS Roman encoding, and the upper half contains half-width Katakana. Half-width Katakana are simplified Katakana that may need to be equipped with diacritical marks. The diacritical marks are included in the encoding as separate characters.  File: plotutils.info, Node: Text Fonts in X, Next: Text String Format, Prev: Cyrillic and Japanese, Up: Fonts and Markers A.3 Available text fonts for the X Window System ================================================ The command-line graphics programs `graph -T X', `plot -T X', `pic2plot -T X', `tek2plot -T X', and `plotfont -T X', and the `libplot' library that they are built on, can draw text on an X Window System display in a wide variety of fonts. This includes the 22 built-in Hershey vector fonts. They can use the 35 built-in Postscript fonts too, if those fonts are available on the X display. Most releases of the plotting utilities include freely distributable versions of the 35 Postscript fonts, in Type 1 format, that are easily installed on any X display. The plotting utilities can in fact use most of the `core' fonts that are available on the X display. This includes scalable fonts that have so-called XLFD (X Logical Font Description) names. You may determine which such fonts are available by using the low-level `xlsfonts' command. Fonts whose names end in "-0-0-0-0-p-0-iso8859-1" or "-0-0-0-0-m-0-iso8859-1" are scalable ISO-Latin-1 fonts that can be used by `libplot' and the plotting utilities. For example, the "CharterBT-Roman" font is available on many X displays. Its full XLFD name is "-bitstream-charter-medium-r-normal-0-0-0-0-p-0-iso8859-1". The plotting utilities would refer to it by its base XLFD name, which has only three hyphens; namely, "charter-medium-r-normal". The command echo 0 0 1 1 2 0 | graph -T X -F charter-medium-r-normal will draw a plot in a popped-up X window, in which the axis ticks are labeled in this font. Fonts whose names end in "iso8859-2", etc., and "adobe-fontspecific", may also be used, though they do not employ the standard ISO-Latin-1 encoding. By default `libplot' will try to retrieve an "iso8859-1", i.e., ISO-Latin-1 version of the font, if one is available. But you can work around this by giving the full name of the font, if you wish. Supplying the full name of an X font is also useful if you wish to employ a screen font (i.e., bitmap font), such as the traditional fonts "fixed" and "9x15". If you supply the full name of an X font, rather than a base XLFD name, each character glyph, once it is obtained from the X display as a pattern of pixels, will be scaled by `libplot' to the appropriate size. The plotting utilities, including `graph', support a `--bitmap-size' option. If the `-T X' option is used, it sets the size of the popped-up X Window. You may use it to obtain some interesting visual effects. Each of the plotting utilities assumes that it is drawing in a square region, so if you use the `--bitmap-size 800x400' option, your plot will be scaled anisotropically, by a larger factor in the horizontal direction than in the vertical direction. The X fonts in the plot will be scaled accordingly. In the same spirit, the `--rotation' option will rotate the plot, causing all text strings to be rotated too. For example, `--rotation 45' will induce a 45-degree counterclockwise rotation. The options `--bitmap-size' and `--rotation' may be applied together. The escape sequences that provide access to the non-ASCII `8-bit' characters in the built-in ISO-Latin-1 fonts may be employed when using any ISO-Latin-1 X Window System font. For more on escape sequences, see *Note Text String Format::. As an example, "\Po" will yield the British pounds sterling symbol `#'. The command echo 0 0 1 1 | graph -T X -F times-medium-r-normal -L "A \Po1 Plot" shows how this symbol could be used in a graph label. In the same way, the escape sequences that provide access to mathematical symbols and Greek characters may be employed when using any X Window System font, whether or not it is an ISO-Latin-1 font. These symbols and characters are taken from the Symbol font, which is available on nearly all X displays.  File: plotutils.info, Node: Text String Format, Next: Marker Symbols, Prev: Text Fonts in X, Up: Fonts and Markers A.4 Text string format and escape sequences =========================================== Text strings that are drawn by the GNU `libplot' library and by applications built on it, such as `graph', `plot', `pic2plot', `tek2plot', and `plotfont', must consist of printable characters. No embedded control characters, such as newlines or carriage returns, are allowed. Technically, a character is `printable' if it comes from either of the two byte ranges 0x20...0x7e and 0xa0...0xff. The former is the printable ASCII range and the latter is the printable `8-bit' range. Text strings may, however, include embedded `escape sequences' that shift the font, append subscripts or superscripts, or include non-ASCII characters and mathematical symbols. As a consequence, the axis labels on a plot prepared with `graph' may include such features. So may the text strings that `pic2plot' uses to label objects. The format of the escape sequences should look familiar to anyone who is familiar with the TeX, `troff', or `groff' document formatters. Each escape sequence consists of three characters: a backslash and two additional characters. The most frequently used escape sequences are as follows. "\sp" start superscript mode "\ep" end superscript mode "\sb" start subscript mode "\eb" end subscript mode "\mk" mark position "\rt" return to marked position For example, the string "x\sp2\ep" would be interpreted as `x squared'. Subscripts on subscripts, etc., are allowed. Subscripts and superscripts may be vertically aligned by judicious use of the "\mk" and "\rt" escape sequences. For example, "a\mk\sbi\eb\rt\sp2\ep" produces "a sub i squared", with the exponent `2' placed immediately above the subscript. There are also escape sequences that switch from font to font within a typeface. For an enumeration of the fonts within each typeface, see *Note Text Fonts::. Suppose for example that the current font is Times-Roman, which is font #1 in the `Times' typeface. The string "A \f2very\f1 well labeled axis" would be a string in which the word `very' appears in Times-Italic rather than Times-Roman. That is because Times-Italic is the #2 font in the typeface. Font-switching escape sequences are of the form "\fN", where N is the number of the font to be switched to. For compatibility with `troff' and `groff', "\fR", "\fI", "\fB" are equivalent to "\f1", "\f2", "\f3", respectively. "\fP" will switch the font to the previously used font (only one font is remembered). There is currently no support for switching between fonts in different typefaces. There are also a few escape sequences for horizontal shifts, which are useful for improving horizontal alignment, such as when shifting between italic and non-italic fonts. "\r1", "\r2", "\r4", "\r6", "\r8", and "\r^" are escape sequences that shift right by 1 em, 1/2 em, 1/4 em, 1/6 em, 1/8 em, and 1/12 em, respectively. "\l1", "\l2", "\l4", "\l6", "\l8", and "\l^" are similar, but shift left instead of right. "A \fIvery\r^\fP well labeled axis" would look slightly better than "A \fIvery\fP well labeled axis". Square roots are handled with the aid of a special pair of escape sequences, together with the "\mk" and "\rt" sequences discussed above. A square root symbol is begun with "\sr", and continued arbitrarily far to the right with the overbar (`run') escape sequence, "\rn". For example, the string "\sr\mk\rn\rn\rtab" would be plotted as `the square root of ab'. To adjust the length of the overbar, you may need to experiment with the number of times "\rn" appears. To underline a string, you would use "\ul", the underline escape sequence, one or more times. The "\mk"..."\rt" trick would be employed in the same way. So, for example, "\mk\ul\ul\ul\rtabc" would yield an underlined "abc". To adjust the length of the underline, you may need to experiment with the number of times "\ul" appears. You may also need to use one or more of the abovementioned horizontal shifts. For example, if the "HersheySerif" font were used, "\mk\ul\ul\l8\ul\rtabc" would yield a better underline than "\mk\ul\ul\ul\rtabc". Besides the preceding escape sequences, there are also escape sequences for the printable non-ASCII characters in each of the built-in ISO-Latin-1 fonts (which means in every built-in font, except for the symbol fonts, the HersheyCyrillic fonts, HersheyEUC, and ZapfDingbats). The useful non-ASCII characters include accented characters among others. Such `8-bit' characters, in the 0xa0...0xff byte range, may be included directly in a text string. But if your terminal does not permit this, you may use the escape sequences for them instead. There are escape sequences for the mathematical symbols and Greek characters in the symbol fonts, as well. This is how the symbol fonts are usually accessed. Which symbol font the mathematical symbols and Greek characters are taken from depends on whether your current font is a Hershey font or a non-Hershey font. They are taken from the HersheySerifSymbol font or the HersheySansSymbol font in the former case, and from the Symbol font in the latter. The following are the escape sequences that provide access to the non-ASCII characters of the current font, provided that it is an ISO-Latin-1 font. Each escape sequence is followed by the position of the corresponding character in the ISO-Latin-1 encoding (in decimal), and the official Postscript name of the character. Most names should be self-explanatory. For example, `eacute' is a lower-case `e', equipped with an acute accent. "\r!" [161] exclamdown "\ct" [162] cent "\Po" [163] sterling "\Cs" [164] currency "\Ye" [165] yen "\bb" [166] brokenbar "\sc" [167] section "\ad" [168] dieresis "\co" [169] copyright "\Of" [170] ordfeminine "\Fo" [171] guillemotleft "\no" [172] logicalnot "\hy" [173] hyphen "\rg" [174] registered "\a-" [175] macron "\de" [176] degree "\+-" [177] plusminus "\S2" [178] twosuperior "\S3" [179] threesuperior "\aa" [180] acute "\*m" [181] mu "\ps" [182] paragraph "\md" [183] periodcentered "\ac" [184] cedilla "\S1" [185] onesuperior "\Om" [186] ordmasculine "\Fc" [187] guillemotright "\14" [188] onequarter "\12" [189] onehalf "\34" [190] threequarters "\r?" [191] questiondown "\`A" [192] Agrave "\'A" [193] Aacute "\^A" [194] Acircumflex "\~A" [195] Atilde "\:A" [196] Adieresis "\oA" [197] Aring "\AE" [198] AE "\,C" [199] Ccedilla "\`E" [200] Egrave "\'E" [201] Eacute "\^E" [202] Ecircumflex "\:E" [203] Edieresis "\`I" [204] Igrave "\'I" [205] Iacute "\^I" [206] Icircumflex "\:I" [207] Idieresis "\-D" [208] Eth "\~N" [209] Ntilde "\'O" [210] Ograve "\'O" [211] Oacute "\^O" [212] Ocircumflex "\~O" [213] Otilde "\:O" [214] Odieresis "\mu" [215] multiply "\/O" [216] Oslash "\`U" [217] Ugrave "\'U" [218] Uacute "\^U" [219] Ucircumflex "\:U" [220] Udieresis "\'Y" [221] Yacute "\TP" [222] Thorn "\ss" [223] germandbls "\`a" [224] agrave "\'a" [225] aacute "\^a" [226] acircumflex "\~a" [227] atilde "\:a" [228] adieresis "\oa" [229] aring "\ae" [230] ae "\,c" [231] ccedilla "\`e" [232] egrave "\'e" [233] eacute "\^e" [234] ecircumflex "\:e" [235] edieresis "\`i" [236] igrave "\'i" [237] iacute "\^i" [238] icircumflex "\:i" [239] idieresis "\Sd" [240] eth "\~n" [241] ntilde "\`o" [242] ograve "\'o" [243] oacute "\^o" [244] ocircumflex "\~o" [245] otilde "\:o" [246] odieresis "\di" [247] divide "\/o" [248] oslash "\`u" [249] ugrave "\'u" [250] uacute "\^u" [251] ucircumflex "\:u" [252] udieresis "\'y" [253] yacute "\Tp" [254] thorn "\:y" [255] ydieresis The following are the escape sequences that provide access to mathematical symbols and Greek characters in the current symbol font, whether HersheySerifSymbol or HersheySansSymbol (for Hershey fonts) or Symbol (for Postscript fonts). Each escape sequence is followed by the position (in octal) of the corresponding character in the symbol encoding, and the official Postscript name of the character. Many escape sequences and names should be self-explanatory. "\*a" represents a lower-case Greek alpha, for example. For a table displaying each of the characters below, see the `Postscript Language Reference Manual'. "\fa" [0042] universal "\te" [0044] existential "\st" [0047] suchthat "\**" [0052] asteriskmath "\=~" [0100] congruent "\*A" [0101] Alpha "\*B" [0102] Beta "\*X" [0103] Chi "\*D" [0104] Delta "\*E" [0105] Epsilon "\*F" [0106] Phi "\*G" [0107] Gamma "\*Y" [0110] Eta "\*I" [0111] Iota "\+h" [0112] theta1 "\*K" [0113] Kappa "\*L" [0114] Lambda "\*M" [0115] Mu "\*N" [0116] Nu "\*O" [0117] Omicron "\*P" [0120] Pi "\*H" [0121] Theta "\*R" [0122] Rho "\*S" [0123] Sigma "\*T" [0124] Tau "\*U" [0125] Upsilon "\ts" [0126] sigma1 "\*W" [0127] Omega "\*C" [0130] Xi "\*Q" [0131] Psi "\*Z" [0132] Zeta "\tf" [0134] therefore "\pp" [0136] perpendicular "\ul" [0137] underline "\rx" [0140] radicalex "\*a" [0141] alpha "\*b" [0142] beta "\*x" [0143] chi "\*d" [0144] delta "\*e" [0145] epsilon "\*f" [0146] phi "\*g" [0147] gamma "\*y" [0150] eta "\*i" [0151] iota "\+f" [0152] phi1 "\*k" [0153] kappa "\*l" [0154] lambda "\*m" [0155] mu "\*n" [0156] nu "\*o" [0157] omicron "\*p" [0160] pi "\*h" [0161] theta "\*r" [0162] rho "\*s" [0163] sigma "\*t" [0164] tau "\*u" [0165] upsilon "\+p" [0166] omega1 "\*w" [0167] omega "\*c" [0170] xi "\*q" [0171] psi "\*z" [0172] zeta "\ap" [0176] similar "\+U" [0241] Upsilon1 "\fm" [0242] minute "\<=" [0243] lessequal "\f/" [0244] fraction "\if" [0245] infinity "\Fn" [0246] florin "\CL" [0247] club "\DI" [0250] diamond "\HE" [0251] heart "\SP" [0252] spade "\<>" [0253] arrowboth "\<-" [0254] arrowleft "\ua" [0255] arrowup "\->" [0256] arrowright "\da" [0257] arrowdown "\de" [0260] degree "\+-" [0261] plusminus "\sd" [0262] second "\>=" [0263] greaterequal "\mu" [0264] multiply "\pt" [0265] proportional "\pd" [0266] partialdiff "\bu" [0267] bullet "\di" [0270] divide "\!=" [0271] notequal "\==" [0272] equivalence "\~~" [0273] approxequal "\.." [0274] ellipsis NONE [0275] arrowvertex "\an" [0276] arrowhorizex "\CR" [0277] carriagereturn "\Ah" [0300] aleph "\Im" [0301] Ifraktur "\Re" [0302] Rfraktur "\wp" [0303] weierstrass "\c*" [0304] circlemultiply "\c+" [0305] circleplus "\es" [0306] emptyset "\ca" [0307] cap "\cu" [0310] cup "\SS" [0311] superset "\ip" [0312] reflexsuperset "\n<" [0313] notsubset "\SB" [0314] subset "\ib" [0315] reflexsubset "\mo" [0316] element "\nm" [0317] notelement "\/_" [0320] angle "\gr" [0321] nabla "\rg" [0322] registerserif "\co" [0323] copyrightserif "\tm" [0324] trademarkserif "\PR" [0325] product "\sr" [0326] radical "\md" [0327] dotmath "\no" [0330] logicalnot "\AN" [0331] logicaland "\OR" [0332] logicalor "\hA" [0333] arrowdblboth "\lA" [0334] arrowdblleft "\uA" [0335] arrowdblup "\rA" [0336] arrowdblright "\dA" [0337] arrowdbldown "\lz" [0340] lozenge "\la" [0341] angleleft "\RG" [0342] registersans "\CO" [0343] copyrightsans "\TM" [0344] trademarksans "\SU" [0345] summation NONE [0346] parenlefttp NONE [0347] parenleftex NONE [0350] parenleftbt "\lc" [0351] bracketlefttp NONE [0352] bracketleftex "\lf" [0353] bracketleftbt "\lt" [0354] bracelefttp "\lk" [0355] braceleftmid "\lb" [0356] braceleftbt "\bv" [0357] braceex "\eu" [0360] euro "\ra" [0361] angleright "\is" [0362] integral NONE [0363] integraltp NONE [0364] integralex NONE [0365] integralbt NONE [0366] parenrighttp NONE [0367] parenrightex NONE [0370] parenrightbt "\rc" [0371] bracketrighttp NONE [0372] bracketrightex "\rf" [0373] bracketrightbt "\RT" [0374] bracerighttp "\rk" [0375] bracerightmid "\rb" [0376] bracerightbt Finally, there are escape sequences that apply only if the current font is a Hershey font. Most of these escape sequences provide access to special symbols that belong to no font, and are accessible by no other means. These symbols are of two sorts: miscellaneous, and astronomical or zodiacal. The escape sequences for the miscellaneous symbols are as follows. "\dd" daggerdbl "\dg" dagger "\hb" hbar "\li" lineintegral "\IB" interbang "\Lb" lambdabar "\~-" modifiedcongruent "\-+" minusplus "\||" parallel "\s-" [variant form of s] The final escape sequence in the table above, "\s-", yields a letter rather than a symbol. It is provided because in some Hershey fonts, the shape of the lower-case letter `s' differs if it is the last letter in a word. This is the case for HersheyGothicGerman. The German word "besonders", for example, should be written as "besonder\s-" if it is to be rendered correctly in this font. The same is true for the two Hershey symbol fonts, with their Greek alphabets (in Greek text, lower-case final `s' is different from lower-case non-final `s'). In Hershey fonts where there is no distinction between final and non-final `s', "s" and "\s-" are equivalent. The escape sequences for the astronomical symbols, including the signs for the twelve constellations of the zodiac, are listed in the following table. We stress that that like the preceding miscellaneous escape sequences, they apply only if the current font is a Hershey font. "\SO" sun "\ME" mercury "\VE" venus "\EA" earth "\MA" mars "\JU" jupiter "\SA" saturn "\UR" uranus "\NE" neptune "\PL" pluto "\LU" moon "\CT" comet "\ST" star "\AS" ascendingnode "\DE" descendingnode "\AR" aries "\TA" taurus "\GE" gemini "\CA" cancer "\LE" leo "\VI" virgo "\LI" libra "\SC" scorpio "\SG" sagittarius "\CP" capricornus "\AQ" aquarius "\PI" pisces The preceding miscellaneous and astronomical symbols are not the only special non-font symbols that can be used if the current font is a Hershey font. The entire library of glyphs digitized by Allen Hershey is built into GNU `libplot'. So text strings may include any Hershey glyph. Each of the available Hershey glyphs is identified by a four-digit number. Standard Hershey glyph #1 would be specified as "\#H0001". The standard Hershey glyphs range from "\#H0001" to "\#H3999", with a number of gaps. Some additional glyphs designed by others appear in the "\#H4000"..."\#H4194" range. Syllabic Japanese characters (Kana) are located in the "\#H4195"..."\#H4399" range. You may order a table of nearly all the Hershey glyphs in the "\#H0001"..."\#H3999" range from the U.S. National Technical Information Service, at +1 703 487 4650. Ask for item number PB251845; the current price is about US$40. By way of example, the string "\#H0744\#H0745\#H0001\#H0002\#H0003\#H0869\#H0907\#H2330\#H2331" when drawn will display a shamrock, a fleur-de-lys, cartographic (small) letters A, B, C, a bell, a large circle, a treble clef, and a bass clef. Again, this assumes that the current font is a Hershey font. You may also use Japanese syllabic characters (Hiragana and Katakana) and ideographic characters (Kanji) when drawing strings in any Hershey font. In all, 603 Kanji are available; these are the same Kanji that are available in the HersheyEUC font. The Japanese characters are indexed according to the JIS X0208 standard for Japanese typography, which represents each character by a two-byte sequence. The file `kanji.doc', which is distributed along with the GNU plotting utilities, lists the available Kanji. On most systems it is installed in `/usr/share/libplot' or `/usr/local/share/libplot'. Each JIS X0208 character would be specified by an escape sequence which expresses this two-byte sequence as four hexadecimal digits, such as "\#J357e". Both bytes must be in the `0x21'...`0x7e' range in order to define a JIS X0208 character. Kanji are located at "\#J3021" and above. Characters appearing elsewhere in the JIS X0208 encoding may be accessed similarly. For example, Hiragana and Katakana are located in the "\#J2421"..."\#J257e" range, and Roman characters in the "\#J2321"..."\#J237e" range. The file `kana.doc', which is installed in the same directory as `kanji.doc', lists the encodings of the Hiragana and Katakana. For more on the JIS X0208 standard, see Ken Lunde's `Understanding Japanese Information Processing' (O'Reilly, 1993), and his on-line supplement (http://www.praxagora.com/lunde/cjk_inf.html). The Kanji numbering used in A. N. Nelson's `Modern Reader's Japanese-English Character Dictionary', a longtime standard, is also supported. (This dictionary is published by C. E. Tuttle and Co., with ISBN 0-8048-0408-7. A revised edition [ISBN 0-8048-2036-8] appeared in 1997, but uses a different numbering.) `Nelson' escape sequences for Kanji are similar to JIS X0208 escape sequences, but use four decimal instead of four hexadecimal digits. The file `kanji.doc' gives the correspondence between the JIS numbering scheme and the Nelson numbering scheme. For example, "\#N0001" is equivalent to "\#J306c". It also gives the positions of the available Kanji in the Unicode encoding. All available Kanji have the same width, which is the same as that of the syllabic Japanese characters (Hiragana and Katakana). Each Kanji that is not available will print as an `undefined character' glyph (a bundle of horizontal lines). The same is true for non-Kanji JIS X0208 characters that are not available.  File: plotutils.info, Node: Marker Symbols, Prev: Text String Format, Up: Fonts and Markers A.5 Available marker symbols ============================ The GNU `libplot' library supports a standard set of marker symbols, numbered 0...31. A marker symbol is a visual representation of a point. The `libplot' marker symbols are the symbols that the `graph' program will plot at each point of a dataset, if the `-S' option is specified. Like a text string, a marker symbol has a font size. In any output format, a marker symbol is guaranteed to be visible if its font size is sufficiently large. Marker symbol #0 is an exception to this: by convention, symbol #0 means no symbol at all. Marker symbols in the range 1...31 are defined as follows. 1. dot 2. plus (+) 3. asterisk (*) 4. circle 5. cross 6. square 7. triangle 8. diamond 9. star 10. inverted triangle 11. starburst 12. fancy plus 13. fancy cross 14. fancy square 15. fancy diamond 16. filled circle 17. filled square 18. filled triangle 19. filled diamond 20. filled inverted triangle 21. filled fancy square 22. filled fancy diamond 23. half filled circle 24. half filled square 25. half filled triangle 26. half filled diamond 27. half filled inverted triangle 28. half filled fancy square 29. half filled fancy diamond 30. octagon 31. filled octagon The interpretation of marker symbols 1 through 5 is the same as in the well known Graphical Kernel System (GKS). By convention, symbols 32 and up are interpreted as characters in a certain text font. For `libplot', this is simply the current font. But for the `graph' program, it is the symbol font selected with the `--symbol-font-name' option. By default, the symbol font is the ZapfDingbats font except in `graph -T png', `graph -T pnm', `graph -T gif', `graph -T pcl', `graph -T hpgl' and `graph -T tek'. Those variants of `graph' normally have no access to ZapfDingbats and other Postscript fonts, so they use the HersheySerif font instead. Many of the characters in the ZapfDingbats font are suitable for use as marker symbols. For example, character #74 is the Texas star. Doing echo 0 0 1 2 2 1 3 2 4 0 | graph -T ps -m 0 -S 74 0.1 > plot.ps will produce a Postscript plot consisting of five data points, not joined by line segments. Each data point will be marked by a Texas star, of a large font size (0.1 times the width of the plotting box). If you are using `graph -T pcl' or `graph -T hpgl' and wish to use font characters as marker symbols, you should consider using the Wingdings font, which is available when producing PCL 5 or HP-GL/2 output. Doing echo 0 0 1 2 2 1 3 2 4 0 | graph -T pcl -m 0 --symbol-font Wingdings -S 181 0.1 > plot.pcl will produce a PCL 5 plot that is similar to the preceding Postscript plot. The Wingdings font has the Texas star in location #181.  File: plotutils.info, Node: Color Names, Next: Page and Viewport Sizes, Prev: Fonts and Markers, Up: Appendices Appendix B Specifying Colors by Name ************************************ The GNU `libplot' library allows colors to be specified by the user. It includes the `bgcolorname', `pencolorname', and `fillcolorname' functions, each of which takes a color as an argument. The command-line graphics programs built on `libplot', namely `graph', `plot', `pic2plot', `tek2plot', and `plotfont', allow colors to be specified on the command line. Each of them supports a `--bg-color' option, and each of them, other than `graph', supports a `--pen-color' option. (`graph' supports a more complicated `--pen-colors' option, and a `--frame-color' option.) In any of these contexts, a color may be specified precisely as a hexadecimal string that gives by its 48-bit RGB representation. For example, "#c0c0c0" is a silvery gray, and "#ffffff" is white. Also, colors may be specified by name. 665 distinct names are recognized, including familiar ones like "red", "green", and "blue", and obscure ones like "dark magenta", "forest green", and "olive drab". Color names are case-insensitive, and spaces are ignored. So, for example, "RosyBrown" is equivalent to "rosy brown", and "DarkGoldenrod3" to "dark goldenrod 3". The file `colors.txt', which is distributed along with the GNU plotting utilities, lists the 665 recognized color names. On most systems it is installed in `/usr/share/libplot' or `/usr/local/share/libplot'. The names are essentially those recognized by recent releases of the X Window System, which on most machines are listed in the file `/usr/lib/X11/rgb.txt'. However, for every color name containing the string "gray", a version containing "grey" has been included. For example, both "dark slate gray 4" and "dark slate grey 4" are recognized color names.  File: plotutils.info, Node: Page and Viewport Sizes, Next: Metafiles, Prev: Color Names, Up: Appendices Appendix C Page Sizes and Viewport Sizes **************************************** When producing output in such vector formats as Illustrator, Postscript, PCL 5, HP-GL, and Fig, it is important to specify the size of the page on which the output will appear. Supported page sizes are "letter", "a4", etc.; a full list appears below. The page size is passed to the the GNU `libplot' library via the `PAGESIZE' parameter. The command-line graphics programs `graph', `plot', `pic2plot', `tek2plot', and `plotfont', which are built on `libplot', similarly support a `PAGESIZE' environment variable and a `--page-size' option. Graphics drawn by `libplot' are nominally drawn within a graphics display, or `viewport'. When producing raster formats such as PNG, PNM, and pseudo-GIF, the viewport is simply a square or rectangular bitmap. But when producing vector formats such as Illustrator, Postscript, PCL 5, HP-GL, and Fig format, the viewport is a square or rectangular region on the output page. (For the meaning of the viewport when the output format is SVG or WebCGM, see below.) Except in the HP-GL case, the viewport will by default be centered on the page. For example, if the page size is "letter", the viewport will be a square 8in by 8in region, centered on a 8.5in by 11.0in page. Graphics will not be clipped to the viewport, so the entire page will in principle be imageable. Either or both of the dimensions of the viewport can be changed by the user. For example, the page size could be specified as "letter,xsize=4in", or "a4,xsize=10cm,ysize=15cm", where the specified sizes will override the default dimensions of the viewport. The dimensions of the viewport are allowed to be negative (a negative dimension results in a reflection). Inches, centimeters, and millimeters are the supported units. For most vector output formats, it is possible to position the viewport quite precisely, by specifying the location of its lower left corner relative to the lower left corner of the page. For example, the page size could be specified not merely as "letter" or "a4", but as "letter,xorigin=2in,yorigin=3in", or "a4,xorigin=0.5cm,yorigin=0.5cm". (The `xorigin' and `yorigin' specifiers may be used in conjunction with `xsize' and `ysize'.) As an alternative to `xorigin' and `yorigin', the viewport position could be adjusted by supplying an offset vector, the offset being interpreted as a shift away from the default position. For example, the page size could be specified as "letter,yoffset=1.2in", or "a4,xoffset=-5mm,yoffset=2.0cm". The viewport may also be rotated, by setting the `ROTATION' parameter or environment variable, or (in the case of the graphics programs) by using the `--rotation' option. A rotated viewport does not change the position of its four corners. Rather, the graphics are rotated within it. If the viewport is rectangular rather than square, this `rotation' will necessarily include a rescaling. Any ISO page size in the range "a0"..."a4" or ANSI page size in the range "a"..."e" may be specified. ("letter" is an alias for "a", which is the default, and "tabloid" is an alias for "b"). "legal", "ledger", and the JIS [Japanese Industrial Standard] size "b5" are recognized also. The following are the supported page sizes and the default square viewport size that corresponds to each. "a" (or "letter"; 8.5in by 11.0in) 8.0in "b" (or "tabloid"; 11.0in by 17.0in) 10.0in "c" (17.0in by 22.0in) 16.0in "d" (22.0in by 34.0in) 20.0in "e" (34.0in by 44.0in) 32.0in "legal" (8.5in by 14.0in) 8.0in "ledger" (17.0in by 11.0in) 10.0in "a4" (21.0cm by 29.7cm) 19.81cm "a3" (29.7cm by 42.0cm) 27.18cm "a2" (42.0cm by 59.4cm) 39.62cm "a1" (59.4cm by 84.1cm) 56.90cm "a0" (84.1cm by 118.9cm) 81.79cm "b5" (18.2cm by 25.7cm) 16.94cm As noted, SVG and WebCGM format are special. They have no notion of the size of the Web page on which the viewport will ultimately be positioned. They do have a notion of viewport size, though this will typically be overridden when the output file is placed on a page by a Web page designer. When producing SVG or WebCGM output, the viewport size is set in the usual way: by `PAGESIZE', or (in the case of the graphics programs) the `--page-size' option. For example, if the specified page size is "letter", the viewport within which SVG or WebCGM graphics are drawn will be an 8in by 8in square. If it is "letter,xsize=6in,ysize=7in", then the viewport will be a 6in by 7in rectangle, and so forth. The "xorigin", "yorigin", "xoffset", and "yoffset" specifiers, if included, are necessarily ignored. For a similar reason, the "xorigin" and "yorigin" specifiers are ignored when producing HP-GL or HP-GL/2 output. By default, the lower left corner of the viewport is positioned at the HP-GL `scaling point' P1, whose location is device-dependent and will not normally coincide with the lower left corner of the physical page, though it may be close to it. The "xoffset" and "yoffset" specifiers are respected, however, and may be used to shift the viewport away from its default position.  File: plotutils.info, Node: Metafiles, Next: Auxiliary Software, Prev: Page and Viewport Sizes, Up: Appendices Appendix D The Graphics Metafile Format *************************************** A GNU graphics metafile is produced by any application that uses the Metafile Plotter support contained in GNU `libplot'. That includes the raw variants of `graph', `plot', `pic2plot', `tek2plot', and `plotfont'. A metafile is a sort of audit trail, which specifies a sequence of Plotter operations. Each operation is represented by an `op code': a single ASCII character. The arguments of the operation, if any, immediately follow the op code. A metafile may use either of two encodings: binary (the default) or portable (human-readable). Metafiles in the binary encoding begin with the magic string "#PLOT 1\n", and metafiles in the portable encoding with the magic string "#PLOT 2\n". If you intend to transfer metafiles between machines of different types, you should use the portable rather than the binary encoding. Portable metafiles are produced by Metafile Plotters if the `META_PORTABLE' parameter is set to "yes", and by the raw variants of GNU `graph' and the other command-line graphics programs if the `-O' option is specified. Both binary and portable metafiles can be translated to other formats by GNU `plot'. *Note plot::. In the portable encoding, the arguments of each operation (integers, floating point numbers, or strings) are printed in a human-readable form, separated by spaces, and each argument list ends with a newline. In the binary encoding, the arguments are represented as integers, single precision floating point numbers, or newline-terminated ASCII strings. Using the newline character as a terminator is acceptable because each Plotter operation includes a maximum of one string among its arguments, and such a string may not include a newline. Also, the string must come last among the arguments. There are 97 Plotter operations in all. The most important are `openpl' and `closepl', which open and close a Plotter, i.e., begin and end a page of graphics. They are represented by the op codes `o' and `x', respectively. The `erase' operation, if present, separates frames within a page. On real-time display devices, it is interpreted as a screen erasure. It is represented by the op code `e'. Each of the 94 other Plotter operations has a corresponding op code, with 12 exceptions. These 12 exceptions are (1) the control operation `flushpl', (2) the operations `havecap', `labelwidth', and `flabelwidth', which merely return information, (3) the `color', `colorname', `pencolorname', `fillcolorname', and `bgcolorname' operations, which are internally mapped to `pencolor', `fillcolor', and `bgcolor', (4) the `frotate', `fscale', and `ftranslate' operations, which are internally mapped to `fconcat', and (5) the `ffontname' operation, which in a metafile would be indistinguishable from `fontname'. So besides `o' and `x', there are 83 possible op codes, for a total of 85. The following table lists 10 of the op codes other than `o' and `x', followed by the Plotter operation they stand for. Op Code Operation `a' `arc' `c' `circle' `e' `erase' `f' `linemod' `l' `line' `m' `move' `n' `cont' `p' `point' `s' `space' `t' `label' The full set of 85 op codes is listed in the `libplot' header file `plot.h' and the `libplotter' header file `plotter.h', which are distributed along with the plotting utilities. On most systems they are installed in `/usr/include' or `/usr/local/include'. The 10 op codes in the table above are actually the op codes of the traditional `plot(5)' format produced by pre-GNU versions of `graph' and `libplot'. The use of these op codes make GNU metafile format compatible with plot(5) format. The absence of a magic string, and the absence of the `o' and `x' op codes, makes it possible to distinguish files in plot(5) format from GNU metafiles in the binary encoding. GNU `plot' can convert files in plot(5) format to GNU metafiles in either the binary or the portable encoding. *Note plot::.  File: plotutils.info, Node: Auxiliary Software, Next: History and Acknowledgements, Prev: Metafiles, Up: Appendices Appendix E Obtaining Auxiliary Software *************************************** * Menu: * idraw:: Obtaining the idraw drawing editor * xfig:: Obtaining the xfig drawing editor  File: plotutils.info, Node: idraw, Next: xfig, Prev: Auxiliary Software, Up: Auxiliary Software E.1 How to get `idraw' ====================== The `idraw' utility mentioned several times in this documentation is a freely distributable interactive drawing editor for the X Window System. It can display and edit the output of any application that uses the Postscript Plotter support contained in GNU `libplot'. That includes `graph -T ps', `plot -T ps', `pic2plot -T ps', `tek2plot -T ps', and `plotfont -T ps'. The current version of `idraw' is maintained by Vectaport, Inc., and is available at their Web site (http://www.vectaport.com). It is part of the `ivtools' package, which is a framework for building custom drawing editors. `idraw' was originally part of the `InterViews' package, developed by Stanford University and Silicon Graphics. The `InterViews' package is available at a distribution site (ftp://interviews.stanford.edu), but is no longer supported. Retrieving the `ivtools' package instead is recommended. Also available at Vectaport's Web site (http://www.vectaport.com) is an enhanced version of `idraw' called `drawtool'. `drawtool' can import additional graphics in TIFF and PBM/PGM/PPM formats, besides the X11 bitmaps that `idraw' can import.  File: plotutils.info, Node: xfig, Prev: idraw, Up: Auxiliary Software E.2 How to get `xfig' ===================== The `xfig' utility mentioned several times in this documentation is a freely distributable interactive drawing editor for the X Window System. It can display and edit the output of any application that uses the Fig Plotter support contained in GNU `libplot'. That includes `graph -T fig', `plot -T fig', `pic2plot -T fig', `tek2plot -T fig', and `plotfont -T fig'. The current version is available at `ftp://ftp.x.org/contrib/applications/drawing_tools/'. It can import additional graphics in GIF, X11 bitmap, and Postscript formats. Accompanying the editor is a package called `transfig', which allows `xfig' graphics to be exported in many formats. GIF, X11 bitmap, LaTeX, and Postscript formats are supported. There is a Web page on Fig format (http://duke.usask.ca/~macphed/soft/fig), which discusses application software that can interoperate with `xfig'.  File: plotutils.info, Node: History and Acknowledgements, Next: Reporting Bugs, Prev: Auxiliary Software, Up: Appendices Appendix F History and Acknowledgements *************************************** Several of the GNU plotting utilities were inspired by Unix plotting utilities. A `graph' utility and various plot filters were present in the first releases of Unix from Bell Laboratories, going at least as far back as the Version 4 distribution (1973). The first supported display device was a Tektronix 611 storage scope. Most of the work on tying the plot filters together and breaking out device-dependent versions of `libplot' was performed by Lorinda Cherry . By the time of Version 7 Unix (1979) and the subsequent Berkeley releases, the package consisting of `graph', `plot', `spline', and several device-dependent versions of `libplot' was a standard Unix feature. Supported devices by the early 1980's included Tektronix storage scopes, early graphics terminals, 200dpi electrostatic printer/plotters from Versatec and Varian, and pen plotters from Hewlett-Packard. In 1989, Rich Murphey wrote the first GNU versions of `graph', `plot', and `spline', and the earliest documentation. Richard Stallman further directed development of the programs and provided editorial support for the documentation. John Interrante , then of the InterViews team at Stanford, generously provided the `idraw' Postscript prologue now included in `libplot', and helpful comments. The package as it stood in 1991 was distributed under the name `GNU graphics'. In 1995 Robert S. Maier took over development of the package, and designed and wrote the current, maximally device-independent, standalone version of `libplot'. He also rewrote `graph' from scratch, turning it into a real-time filter that would use the new library. He fleshed out `spline' too, by adding support for splines in tension, periodicity, and cubic Bessel interpolation. `libplot' now incorporates the X Window System code for filling polygons and drawing wide polygonal lines and arcs. The code is used when producing output in bitmap formats (e.g., PNG, PNM, and pseudo-GIF). It was written by Brian Kelleher, Joel McCormack, Todd Newman, Keith Packard, Robert Scheifler and Ken Whaley, who worked for Digital Equipment Corp., MIT, and/or the X Consortium, and is copyright (C) 1985-89 by the X Consortium. Affinely transformed text strings are now generated and displayed by a technique similar to that used by Alan Richardson in his `xvertext' package, for displaying rotated strings. The pseudo-GIF support now in `libplot' uses the `miGIF' run-length encoding routines developed by der Maus and ivo which are copyright (C) 1998 by Hutchison Avenue Software Corporation. The copyright notice and permission notice for the miGIF routines are distributed with the source code distribution of the plotting utilities. Most development work on `ode' was performed by Nick Tufillaro in 1978-1994, on a sequence of platforms that extended back to a PDP-11 running Version 4 Unix. In 1997 Robert Maier modified his 1994 version to agree with GNU conventions on coding and command-line parsing, extended it to support the full set of special functions supported by `gnuplot', and extended the exception handling. Many other people aided the development of the plotting utilities package along the way. The Hershey vector fonts now in `libplot' are of course based on the characters digitized in the mid to late 1960's by Allen V. Hershey, who deserves a vote of thanks. Additional characters and/or marker symbols were taken from the SLAC Unified Graphics System developed by Robert C. Beach in the mid-1970's, and from the fonts designed by Thomas Wolff for Ghostscript. The interpolation algorithms used in `spline' are based on the algorithms of Alan K. Cline , as described in his papers in the Apr. 1974 issue of `Communications of the ACM'. The table-driven parser used in `tek2plot' was written at Berkeley in the mid-1980's by Edward Moy . The `sagitta' algorithm used in an extended form in `libplot' for drawing circular and elliptic arcs was developed by Peter Karow of URW and Ken Turkowski of Apple. Raymond Toy helped with the tick mark spacing code in `graph' and was the first to incorporate GNU `getopt'. Arthur Smith, formerly of LASSP at Cornell, provided code for his `xplot' utility. Nelson Beebe exhaustively tested the package installation process. Robert Maier wrote the documentation, which now incorporates Nick Tufillaro's `ode' manual. Julie Sussmann checked over the documentation for style and clarity.  File: plotutils.info, Node: Reporting Bugs, Next: GNU Free Documentation License, Prev: History and Acknowledgements, Up: Appendices Appendix G Reporting Bugs ************************* Please report all bugs in the GNU plotting utilities, including the `libplot' library, to . Be sure to say which version of the plotting utilities package you have. Each command-line program announces the package version if you use the `--version' argument. If you installed the package from scratch, be sure to say what compiler (and compiler version) you used. If your problems are installation-related, be sure to give all relevant information.  File: plotutils.info, Node: GNU Free Documentation License, Prev: Reporting Bugs, Up: Appendices Appendix H GNU Free Documentation License ***************************************** Version 1.2, November 2002 Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. 0. PREAMBLE The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference. 1. APPLICABILITY AND DEFINITIONS This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law. A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none. The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words. A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque". Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only. The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text. A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition. The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License. 2. VERBATIM COPYING You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. You may also lend copies, under the same conditions stated above, and you may publicly display copies. 3. COPYING IN QUANTITY If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document. 4. MODIFICATIONS You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement. C. State on the Title page the name of the publisher of the Modified Version, as the publisher. D. Preserve all the copyright notices of the Document. E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. H. Include an unaltered copy of this License. I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version. N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section. O. Preserve any Warranty Disclaimers. If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles. You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version. 5. COMBINING DOCUMENTS You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements." 6. COLLECTIONS OF DOCUMENTS You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document. 7. AGGREGATION WITH INDEPENDENT WORKS A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate. 8. TRANSLATION Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail. If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title. 9. TERMINATION You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 10. FUTURE REVISIONS OF THIS LICENSE The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See `http://www.gnu.org/copyleft/'. Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. H.1 ADDENDUM: How to use this License for your documents ======================================================== To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page: Copyright (C) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled ``GNU Free Documentation License''. If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line with this: with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation. If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.  Tag Table: Node: Top1511 Node: Plotutils Intro2452 Node: graph13652 Node: Simple Examples14476 Node: Non-Square Plots29148 Node: Multiple Datasets34268 Node: Multiplotting39923 Node: Data Formats43546 Node: graph Invocation46267 Node: Plot Options48038 Node: Dataset Options69327 Node: Multiplot Options79024 Node: Raw graph Options80916 Node: Info Options81720 Node: graph Environment83282 Node: plot90993 Node: plot Examples91264 Node: plot Invocation94984 Node: plot Environment111094 Node: pic2plot118760 Node: pic2plot Introduction119061 Node: pic2plot Invocation125227 Node: pic2plot Environment139032 Node: tek2plot146775 Node: tek2plot Introduction147080 Node: tek2plot Invocation148780 Node: tek2plot Environment163950 Node: plotfont170069 Node: plotfont Examples170366 Node: plotfont Invocation174149 Node: plotfont Environment187179 Node: spline194155 Node: spline Examples194437 Node: Advanced Use of spline201572 Node: spline Invocation206085 Node: ode215603 Node: Basic Math216938 Node: Simple ode Examples219825 Node: Additional ode Examples228984 Node: ode Invocation235971 Node: Diagnostics240189 Node: Numerical Error244305 Node: Running Time256056 Node: Input Language257390 Node: ODE Bibliography265684 Node: libplot266616 Node: libplot Overview267208 Node: C Programming282325 Node: The C API283037 Node: Older C APIs287587 Node: C Compiling and Linking290605 Node: Sample C Drawings293942 Node: Paths and Subpaths304987 Node: Drawing on a Page311503 Node: Animated GIFs317306 Node: X Animations322081 Node: X Programming330271 Node: C++ Programming336945 Node: The Plotter Class337297 Node: C++ Compiling and Linking341663 Node: Sample C++ Drawings344010 Node: Functions346299 Node: Control Functions348215 Node: Drawing Functions357351 Node: Attribute Functions374367 Node: Mapping Functions399130 Node: Plotter Parameters403433 Node: Appendices425773 Node: Fonts and Markers426478 Node: Text Fonts427394 Node: Cyrillic and Japanese437360 Node: Text Fonts in X441617 Node: Text String Format445586 Node: Marker Symbols464570 Node: Color Names467502 Node: Page and Viewport Sizes469409 Node: Metafiles474701 Node: Auxiliary Software478876 Node: idraw479191 Node: xfig480481 Node: History and Acknowledgements481476 Node: Reporting Bugs486400 Node: GNU Free Documentation License487072  End Tag Table 07070100037655000081a40000000000000000000000014cc7b61800001486000000b500010002ffffffffffffffff0000001e00000000root/usr/local/share/info/dirThis is the file .../info/dir, which contains the topmost node of the Info hierarchy, called (dir)Top. The first time you invoke Info you start off looking at this node.  File: dir, Node: Top This is the top of the INFO tree This (the Directory node) gives a menu of major topics. Typing "q" exits, "?" lists all Info commands, "d" returns here, "h" gives a primer for first-timers, "mEmacs" visits the Emacs manual, etc. In Emacs, you can click mouse button 2 on a menu item or cross reference to select it. * Menu: C++ libraries * autosprintf: (autosprintf). Support for printf format strings in C++. GNU Gettext Utilities * autopoint: (gettext)autopoint Invocation. Copy gettext infrastructure. * envsubst: (gettext)envsubst Invocation. Expand environment variables. * gettextize: (gettext)gettextize Invocation. Prepare a package for gettext. * gettext: (gettext). GNU gettext utilities. * ISO3166: (gettext)Country Codes. ISO 3166 country codes. * ISO639: (gettext)Language Codes. ISO 639 language codes. * msgattrib: (gettext)msgattrib Invocation. Select part of a PO file. * msgcat: (gettext)msgcat Invocation. Combine several PO files. * msgcmp: (gettext)msgcmp Invocation. Compare a PO file and template. * msgcomm: (gettext)msgcomm Invocation. Match two PO files. * msgconv: (gettext)msgconv Invocation. Convert PO file to encoding. * msgen: (gettext)msgen Invocation. Create an English PO file. * msgexec: (gettext)msgexec Invocation. Process a PO file. * msgfilter: (gettext)msgfilter Invocation. Pipe a PO file through a filter. * msgfmt: (gettext)msgfmt Invocation. Make MO files out of PO files. * msggrep: (gettext)msggrep Invocation. Select part of a PO file. * msginit: (gettext)msginit Invocation. Create a fresh PO file. * msgmerge: (gettext)msgmerge Invocation. Update a PO file from template. * msgunfmt: (gettext)msgunfmt Invocation. Uncompile MO file into PO file. * msguniq: (gettext)msguniq Invocation. Unify duplicates for PO file. * ngettext: (gettext)ngettext Invocation. Translate a message with plural. * xgettext: (gettext)xgettext Invocation. Extract strings into a PO file. GNU Packages * CVS: (cvs). Concurrent Versions System GNU Plotting Utilities * Appendices: (plotutils)Appendices. More info on the plotting utilities. * Plotting utilities: (plotutils). GNU plotting utilities. * graph: (plotutils)graph Invocation. Plot datasets, possibly in real time. * libplot: (plotutils)libplot. A library for 2-D vector graphics. * ode: (plotutils)ode Invocation. Integrate differential equations. * pic2plot: (plotutils)pic2plot Invocation. Convert files in the pic language * plot: (plotutils)plot Invocation. Convert and display plot files. * plotfont: (plotutils)plotfont Invocation. Plot character maps of fonts. * tek2plot: (plotutils)tek2plot Invocation. Translate legacy Tektronix data. * spline: (plotutils)spline Invocation. Interpolate between points in datasets. GNU Utilities * gpg: (gpg). OpenPGP encryption and signing tool (v1). Individual utilities * cvs: (cvs)CVS commands. Concurrent Versions System Math * GNUPLOT: (gnuplot). An Interactive Plotting Program Programming * cvsclient: (cvsclient). The CVS client/server protocol. Texinfo documentation system * Info: (info). How to use the documentation browsing system. * info standalone: (info-stnd). Read Info documents without Emacs. * infokey: (info-stnd)Invoking infokey. Compile Info customizations. * install-info: (texinfo)Invoking install-info. Update info/dir entries. * makeinfo: (texinfo)Invoking makeinfo. Translate Texinfo source. * pdftexi2dvi: (texinfo)PDF Output. PDF output for Texinfo. * texi2dvi: (texinfo)Format with texi2dvi. Print Texinfo documents. * texi2pdf: (texinfo)PDF Output. PDF output for Texinfo. * texindex: (texinfo)Format with tex/texindex. Sort Texinfo index files. * Texinfo: (texinfo). The GNU documentation format. Typesetting * Groff: (groff). The GNU troff document formatting system. 07070100037678000041ed0000000000000000000000024cc7b6fb00000000000000b500010002ffffffffffffffff0000001e00000000root/usr/local/share/tek2plot0707010003767e000081a40000000000000000000000014cc7b61700002eca000000b500010002ffffffffffffffff0000002900000000root/usr/local/share/tek2plot/karney.tek 6e&LwLGPh'@e&]YhVpVrY]p'@h@eFrFpFrHJpMh^e\WhUpUrW\p^h^e(IpIrIIw]e]h]e[VhTpTrV[p]p)CrEJpLeLhLeJEhCkCmEJkLeWwWr*ZuZwXSuQhQeSXhZkZr+@h@eCGhJrJeJhJePrPpPrRTpWh,DAkADhDeAh^e-@EhGuGwE@u,^p^m-@EpGuMwMVhReR]w.Fw-_u]h]e_e.ChFuFwCw-_h.LeNShUuUwSNuLpLmNSpUu[w^w/BuDrDpBp.^p/BmDhDeBe.^h[u/MwOeOMRh0CeAe/\hZpZr\r0ApCYp1@wBw0YeYp1HrJOpQeQhQeOJhHkHmJOkQhWeZ^h2AkAm1^ZpWrZ^p2AeKwKrGPw]u[h[e]w3LuOhOeLEwELh^e\WhUpUrW\p^h^r4DeFkIeKrMeSrSpSrVZp]e]w5EuGhGeEw6AeFwKXuZhZeXQwQXp7@GwI@e@I@k_h_e8AFhHmHpFp7_w_w8HeNwWPuNhNePUhWuWwUPe]r]p]r9@mBeBmBrDpGeGhMeOThVkVmTOpMrOTpV5q+@nBbB4@*Y5qYq+@4M5iMlMMW4\5l,AgGPiPlNIiGbG4IN5bP4V5lViVlX[i]4-J5qJlFOb^4\W5bUiUlW\i^b^4.D5lDiDlGIiK4/C5qCgHqL4L5b\4YU5bRiRlUYi\b\q0K4K5bK4ID5bBiBlDIiKgQZiZlXSiQbQ4SX5bZ41E5qEq2FnDbD4F5qX4X5bX4UQ5bNiNlQUiX43B5iBlBBM4R5lVn\q_q4CnFlFiCi3_i4CgFbF4C3_5b\g4UL4L5nLqNSnU4U5q]n5@b@44]x-QyRnRQSxZy\n\Z]n.ByHxMyOnOMPpUnWZp[x[yZWxUuUsWZu[n_y/EpInJMpNxNyMJxIuIsJMuNxRyRXpUnUn0EyKGxEpEnGJpKxKyJGqOpOnPSpUsUuSPvOxOyPSxUvUuSPsOqOu[ZvZ[u[p[ZqZ[p[v1BxByDGxHvHpBnBHqLpLnMPpRsRuPLyLRuXWvWXuXpXWqWXpXx_y2@CxEvEuC@CsEpEnC@p1_x2HyJMxNvNuMJMsNpNnMJpH g-XtXT[g.DnDpDDgLpLnLpNlOgOlOpQnSgSlX_n_p]YnXiXgY]i_i/GEkEGiGgEi[g]g0@iBkBl@l/]n[p]p0@nBlGNnNpLInGiGgILiNZgXTiSnSpTXnZi1FgD@i0^n^p1@DnFiFgJpJnJpLPnQgQt]g]i]g[XiVnVpX[n]i2BgDGiIkIlGDnBpDGnI(c$XJ'J(fJrVpXmXkVPmNpNrPVwXNPyNzN|P)jVhXdXcVPdNhNjPVrXPNN*aJXV`X)|XzVP|N*`NaPfPhNkNmPXVkXhXfVThRkRmTuXJ+pNLoJkJiLVkXoXpVTuNVwX{X|VNXV,aXNPcNeNfPmXNPoNpNrPyR-`RP,~NzNyPVzX~X-`VdXNPfNjNlPXtXJpNwN.`V-~VT.`TV-~X.tPuNyN{PXVyXuXtVTuRyR{TXNP/aNcRXReNfPXk\NPmNqNrPVqXmXkVwVyX|X~VT|RyRwPyN|N~P"~%Q#lXSjQ`Q"~SW#`XjXlWS`_"~_~&A#`A`%_$tSrSUtUS|]~]%`_`&B$~D|Dt%]r]r&D&i%SgSUiUSm&Dm%]t]t&BgBAD'}%S{SU}US(a]c_c&BaD'}D{B{%_}](g]i_i&BgD)q%SoSUqUSs]q]o_o&BqDuDwBw%_y]{]}_}&B{DyDwBw%_u]s]+oGqIdIGKfSdSUfUSd]q&Dq%_o]f]d_d&BfDoDqBq%_-dGfI,xIGKzSxSUzUS-b]d]f_f&BdDbD,z%]x]x&D.x%GzIlIGKnSlSUnUSr&Dr%]z]z&BlBAD0l%GnI`IGKbS`SUbUSf]h_h&BfDbD`B`%_b]l]n_n&BlD2a%GcI1uIGKwSuSUwUSy]w]u_u&BwD{D}B}%_]2a]c_c&BaD1D}B}%_{]y]3sEuEwGKuMsMkEiEMkSiSUkUSi]w&Dw%_u]k]i_i&BkDuDwBw%_$dAfC#xCAEK$fRMdK#zKxMQzR$dRfQMmUnU[eXcX#f&LW${LW&oLW(cLW)xLW+lLW-`LW.tLW0iLW1}LW3qLW"LR|LR#qLR{LR$fLRpLR%eLRpLRzLR&dLRyLR'dLRnLRyLR(nLRxLR)cLRmLR*bLRlLRwLR+aLRvLR,aLRkLRvLR-kLRuLRLR.jLRLR/iLRtLR~LR0sLR~LR1hLRsLR2gLRrLR|LR3gLR|LR4fLR"lL4kL#f7Ef6Z${7E{6Z&o7Eo6Z(c7Ec6Z)x7Ex6Z+l7El6Z-`7E`6Z.t7Et6Z0i7Ei6Z1}7E}6Z3q7Eq6Z"q7E@|E@#qE@{E@$fE@pE@%eE@pE@zE@&dE@yE@'dE@nE@yE@(nE@xE@)cE@mE@*bE@lE@wE@+aE@vE@,aE@kE@vE@-kE@uE@E@.jE@E@/iE@tE@~E@0sE@~E@1hE@sE@2gE@rE@|E@3gE@|E@4fE@"lE4kE!q&TxGsGqIRsTwTxRIwGsGRT"aTR!Rs(VXuXVsV}TVX"bXdVRbP!}PJ"dJ!g*OiM[g[k[sY[u[YsY}["dM!M}OY["b[dYObM!Mg,RiP^g^k^s\^u^\s\}Z\^"b^d\XbV!}VP"dP!e.WUgSkSmUWe_e/AmAs._s/AuAu._s_}/A"d.S!S}U_/A"bAd._UbS!Se0ZXgVkVmXZe1BDmDsBDuDBsB}@BD"bDdBd0^b\!}\V"dV!e2[gYkYm[]k_g_k_m3AEkGgGeEsEGuGEsE}G"d2Y!Y}[}3EG"bGdEd2[bY!Ye4^g\k\m^m5@kBgBkBmDHkJgJeHsHJuJHsH}FHJ"bJdHDbB!}B}4\"d\!m7GeG@k@MiMmMsKMuMKsK}M"d@!@}BKM"bMdKBb@!@"l(OwOl*RwRl,VwVl.YwYl0\w\l2_w_l5BwBl7EwEl&ZrZl'GrGlTrTl(BrBl]r]l)JrJlXrXl*ErEl+@r@lMrMl[r[l,HrHl-CrClPrPl^r^l.KrKl/FrFlSrSl0ArAlNrNl1IrIlWrWl2DrDlQrQl3LrLlZrZl4GrGlUrUl5OrOl]r]l6JrJlXrXl&Ll7E4k(OaOk*RaRk,VaVk.YaYk0\a\k2_a_k5BaBk7EaEk&ZfZk'GfGkTfTk(BfBk]f]k)JfJkXfXk*EfEk+@f@kMfMk[f[k,HfHk-CfCkPfPk^f^k.KfKk/FfFkSfSk0AfAkNfNk1IfIkWfWk2DfDkQfQk3LfLkZfZk4GfGkUfUk5OfOk]f]k6JfJkXfXk&Lk7EjXgTbXTjTf[_g_h^\g[d[b\^d_h8AdChEdC`A#f&Lf'Gf(B]g)Xh*Rh+@iM[i,HjVj-CkP^k.KlYl/FmSm0AnN\o1IpWq2DrKsQRRtRxR}S$bSeSgSiSnSvS%`SjTuTT&iTsT}T'gTqU{U(dUnUwU)`UiUrU{V*dVlVuV~V+fVnVwWW,gWpWWxW-`WhWpWxX.`XhXpXxX/`XhXoYwY~Y0fYmYtY{Y1cYjZqZxZZ2gZnZtZ|[3e[n[w[[4d[g[i[j\\\\\i\\]]]h]]]]^e_`3B3zDsGlJeL2~OwRoThWaZ1z\s_l4BBeD0~GwJmN/|Ul[.}5BoIaO-sVf],z6DnJbQ+wXm^b7E3k9TsTRVm\k[YmXpXqY[p\m\k:AsAq9_q:BpEqFHpIkImIkHFmEnEoFHnIkMsMt7Tt9R#f&TX_f'CKOVZf(BBBFMQY]f)DHPT[_f*GKRRRV^f+@@BIMgUYg,@DLPW[g-CCCGNPPRZ^g.EIQU\g/@HLSSSW_g0AACJNVZg1AEMQhY\h2DDDHPQQRRRRRRRRSSSSSSSSSSSSSSSoVVVVVpWWqWWWWrWWWzXXX{XX|YY}YY~Y$eZfZZgZZhZZiZZZq[[[s[[t\\u\|]}]]~]]]]]]%`]g_i__k_s3AuBBvB~D&aFhJjLLMmTTTWWXl_l4BBkCiJgNdUcX%_~5BBC{JyMvTuVVtXq_p6BmJJJlMiThXXgXe_d7C2|9RtT|VXtZ|\|:F{EvEtFHvI{I|HFzKvKtLNvOzOtOvOtT|TzRV}7Y]}8EIPT\}9@GK#f<\f'CKSZf(BJQY]]f)AHPXXX_f*GOV^f+FMU[[]f,DHHLTVVg[g-CCCKRZg.BIQYg/@FFHPSSW_g0AAGNNNV^g1EMU\g2DLQQRRRRRRRRSSSSSSSSSoTpTTqTTsUUtUUvUUU~VVV$aVVcVVdVVfVmWnWWpWWqWWsWWtWWuW}X~XX%`XXaXXcYYdYYYlYmYYoZZpZZrZZsZZtZ{[|[[~[[&`[[b[[c[[[j]k]]^^n__q3AuHJJLLOOOtWsWWZZr\\q^n4EmGGlJJkLgSfUUdZ`5ABB%}HzNyOOvUs\]]p6CmKkQQjRhYf^^e7@2e9R1}T2eVX1}Z2e\e:FHG1}GFHK2cKbKcLNbO1}O2f7W^f8FNU]f9EL#f&L\f'KZf(JYg)HXg*GhRRVh+FMMiUi,DHHTj-CCCPPRj.BkKKQk/@FFPl_l0AANm^n1IIMo\o2DDpKKKyR{SS$`SScSSeSSgSShSxS|SS%eTTgTvTxTT&aTTfTuTzTT'bUUdUtUyUU(aUUcUrUvUU|VV)bVqVvVV}VV*`VpWuWWzWWW+nWqWWwXX}XX~X,mXrXXxXX|Y-lYYYqYYvYYzYY{Y.jZmZZrZZxZZzZ/i[k[[q[[w[[x[\\\v\\t\\s]]q]]p]]n]]m]]k]]j]]i].y_j3A-{CvDDlF,}JJJsLLnN`R+{TTtWWqXc_b__*}4BBxDDvFiNhNN)~UU|Vp_l5BBdIII(xStVVm]]]b6H`JJ'zQQxTn_i7E1k9RUlVmVnURfRUhVjVkUfZnZk_l:@AkBfBhBfA@h9_i_j:@AiBfElEkElFHkIfIKnKhKlOjMfOjRVkVlUSkRhRfSUhVfZnZlX\o7T\o8L[o9JR g7VrVtXZr\nTZg8DnDpDDiSgQNiLnLpNQnSiSeScQNeLpXiXgZ]i_p_g_i_g9DpDnDpEGnIlOWnWpUQnOiOgQUiWr:UtVgVUX` @ 6e&LwLGPh'@e&]YhVpVrY]p'@h@eFrFpFrHJpMh^e\WhUpUrW\p^h^e(IpIrIIw]e]h]e[VhTpTrV[p]p)CrEJpLeLhLeJEhCkCmEJkLeWwWr*ZuZwXSuQhQeSXhZkZr+@h@eCGhJrJeJhJePrPpPrRTpWh,DAkADhDeAh^e-@EhGuGwE@u,^p^m-@EpGuMwMVhReR]w.Fw-_u]h]e_e.ChFuFwCw-_h.LeNShUuUwSNuLpLmNSpUu[w^w/BuDrDpBp.^p/BmDhDeBe.^h[u/MwOeOMRh0CeAe/\hZpZr\r0ApCYp1@wBw0YeYp1HrJOpQeQhQeOJhHkHmJOkQhWeZ^h2AkAm1^ZpWrZ^p2AeKwKrGPw]u[h[e]w3LuOhOeLEwELh^e\WhUpUrW\p^h^r4DeFkIeKrMeSrSpSrVZp]e]w5EuGhGeEw6AeFwKXuZhZeXQwQXp7@GwI@e@I@k_h_e8AFhHmHpFp7_w_w8HeNwWPuNhNePUhWuWwUPe]r]p]r9@mBeBmBrDpGeGhMeOThVkVmTOpMrOTpV5q+@nBbB4@*Y5qYq+@4M5iMlMMW4\5l,AgGPiPlNIiGbG4IN5bP4V5lViVlX[i]4-J5qJlFOb^4\W5bUiUlW\i^b^4.D5lDiDlGIiK4/C5qCgHqL4L5b\4YU5bRiRlUYi\b\q0K4K5bK4ID5bBiBlDIiKgQZiZlXSiQbQ4SX5bZ41E5qEq2FnDbD4F5qX4X5bX4UQ5bNiNlQUiX43B5iBlBBM4R5lVn\q_q4CnFlFiCi3_i4CgFbF4C3_5b\g4UL4L5nLqNSnU4U5q]n5@b@44]x-QyRnRQSxZy\n\Z]n.ByHxMyOnOMPpUnWZp[x[yZWxUuUsWZu[n_y/EpInJMpNxNyMJxIuIsJMuNxRyRXpUnUn0EyKGxEpEnGJpKxKyJGqOpOnPSpUsUuSPvOxOyPSxUvUuSPsOqOu[ZvZ[u[p[ZqZ[p[v1BxByDGxHvHpBnBHqLpLnMPpRsRuPLyLRuXWvWXuXpXWqWXpXx_y2@CxEvEuC@CsEpEnC@p1_x2HyJMxNvNuMJMsNpNnMJpH g-XtXT[g.DnDpDDgLpLnLpNlOgOlOpQnSgSlX_n_p]YnXiXgY]i_i/GEkEGiGgEi[g]g0@iBkBl@l/]n[p]p0@nBlGNnNpLInGiGgILiNZgXTiSnSpTXnZi1FgD@i0^n^p1@DnFiFgJpJnJpLPnQgQt]g]i]g[XiVnVpX[n]i2BgDGiIkIlGDnBpDGnI(c$XJ'J(fJrVpXmXkVPmNpNrPVwXNPyNzN|P)jVhXdXcVPdNhNjPVrXPNN*aJXV`X)|XzVP|N*`NaPfPhNkNmPXVkXhXfVThRkRmTuXJ+pNLoJkJiLVkXoXpVTuNVwX{X|VNXV,aXNPcNeNfPmXNPoNpNrPyR-`RP,~NzNyPVzX~X-`VdXNPfNjNlPXtXJpNwN.`V-~VT.`TV-~X.tPuNyN{PXVyXuXtVTuRyR{TXNP/aNcRXReNfPXk\NPmNqNrPVqXmXkVwVyX|X~VT|RyRwPyN|N~P"d%QrXSpQfQdSWfXpXrWSf_d_d&AfAf%_#}S{SU}US$e]g]h_h&BgDeD#}%]{]{&D%s%SqSUsUSw&Dw%]]&BqBAD'j%ShSUjUSn]p_p&BnDjDhBh%_j]t]v_v&BtD)a%S(SU)aUSc]a](_&B)aDeDgBg%_i]k]m_m&BkDiDgBg%_e]c]+bGdI*vIGKxSvSUxUSv]+d&Dd%_b]*x]v_v&BxD+bDdBd%_,xGzImIGKoSmSUoUSv]x]z_z&BxDvDo%]m]m&D.o%GqIcIGKeScSUeUSi&Di%]q]q&BcBAD0f%GhI/zIGK|SzSU|US0`]b_b&B`D/|DzBz%_|]0f]h_h&BfD1}%GIqIGKsSqSUsUSu]s]q_q&BsDwDyBy%_{]}]_&B}D{DyBy%_w]u]3rEtEvGKtMrMjEhEMjShSUjUSh]v&Dv%_t]j]h_h&BjDtDvBv%_#kAmC"CAEK#mRMkKaK"MQ#aRkRmQMtUuU[lXjX$c&LW%zLW'qLW)gLW*~LW,uLW.lLW0bLW1yLW3pLW"wLR#bLRmLRxLR$nLRyLR%dLRoLR&eLRpLR{LR'fLR|LR(fLRqLR|LR)rLR}LR*hLRsLR+iLRtLRLR,jLR-`LRkLRvLR.aLRwLR/bLRmLRxLR0mLRxLR1cLRnLR2dLRoLRzLR3eLR{LR4fLR"lL4kL$c7Ec6Z%z7Ez6Z'q7Eq6Z)g7Eg6Z*~7E~6Z,u7Eu6Z.l7El6Z0b7Eb6Z1y7Ey6Z3p7Ep6Z"w7E@#bE@mE@xE@$nE@yE@%dE@oE@&eE@pE@{E@'fE@|E@(fE@qE@|E@)rE@}E@*hE@sE@+iE@tE@E@,jE@-`E@kE@vE@.aE@wE@/bE@mE@xE@0mE@xE@1cE@nE@2dE@oE@zE@3eE@{E@4fE@"lE4kE z&KI{GG!aIK zRT!aTgRTiTRgRqQRsTwTxROwMsMqKIsGwGxIKwMsMqOQ}T"dG!G}IRT"bTdRIbG!G z(@z'^{\\!a^a(@ zHJ!aJgHJiJHgHqFHsJwJxHDwBsBq@q'^s\w\x^x(@wBsBqDF}@}'^\"b\d^d(@!}HJ"dJ z)VT{RR!aTV z^z*@!a@g)^g*@i@i)^g^q\^s*@w@x)^ZwXsXqVTsRwRxTVwXsXqZ\"dZ!}ZR"bRb*@a@d@ z+LJ{HH!aJL zTV!aVgTViVTgTqRTsVwVxTPwNsNqLJsHwHxJLwNsNqPR}PN"bNdPTbV!V}TJH"bHdJ z-Az,_{]]!a_a-A zIK!aKgIKiKIgIqGIsKwKxIEwCsCqAq,_s]w]x_x-AwCsCqEG}GIK"bKdIEbC!C}A},_]"b]d_d-AbC!C}EG z.WU{SS!aUW z_z/A!aAg._g/AiAi._g_q_s/AwAx._UwSsSqUYs[w[xY}/A"d.S!S}U_/A"bAd._UbS!S z0MK{II!aKM zUW!aWgUWiWUgUqUsWwWxUKwIsIqKOsQwQxO}MKI"bIdKM!}UW"dW z2B@{1^^!a2@B zJL!aLgJLiLJgJqJsLwLxJ@w1^s^q2@DsFwFxD"dF!}F}1^"b^b2LaLdL z3XV{TT!aVX z4@B!aBg@BiB@g@q@sBwBx@x3VwTsTqVZs\w\xZ}\Z"bZd\d4@bB!B}@}3VT"bTdV z5NL{JJ!aLN zVX!aXgVXiXVgVqVsXwXxVLwJsJqLPsRwRxP}TVX"bXdVRbP!P}NLJ"bJdLNbP!P}RT z7B{@@!aBC E{EE!aGK M{MzK!gKMiMKgKqMx@s@qBKsMwMxKBw@s@}M"d@!@}BKM"bMdKBb@!@"l(BwBl)XwXl+MwMl-CwCl.YwYl0NwNl2DwDl3ZwZl5OwOl7EwEl&WrWl'BrBlLrLlWrWl(MrMlWrWl)BrBlMrMl*BrBlMrMlXrXl+CrClXrXl,CrClMrMlXrXl-NrNlXrXl.CrClNrNl/CrClNrNlYrYl0DrDlYrYl1DrDlOrOlYrYl2OrOlYrYl3DrDlOrOl4DrDlOrOlZrZl5ErElZrZl6ErElPrPlZrZl&Ll7E4k(BaBk)XaXk+MaMk-CaCk.YaYk0NaNk2DaDk3ZaZk5OaOk7EaEk&WfWk'BfBkLfLkWfWk(MfMkWfWk)BfBkMfMk*BfBkMfMkXfXk+CfCkXfXk,CfCkMfMkXfXk-NfNkXfXk.CfCkNfNk/CfCkNfNkYfYk0DfDkYfYk1DfDkOfOkYfYk2OfOkYfYk3DfDkOfOk4DfDkOfOkZfZk5EfEkZfZk6EfEkPfPkZfZk&Lk7EjXgTbXTjTf[_g_h^\g[d[b\^d_h8AdChEdC`A"w&Lx*Ry.Yy/CF{IK#dNiQlSnVqYu\~^$h0AsD~F%iItL~N&iQsT~V'hYr\{^(e1AoDxF)bIkLtO}Q*fToWxY+a\j_r2A{D,dGlIuL}O-fQnTvWY.g\o_x3B/`DhGpJxLO0gRoTvW~Z1e\m_t4B{DD2dGkJrLyO3cRmUvW~Z4d]g_i5BjEGJMiORUWZh]_h6BEHgJe7E3k9TsTRVm\k[YmXpXqY[p\m\k:AsAq9_q:BpEqFHpIkImIkHFmEnEoFHnIkMsMt7Tt9R"m&TX_m'CKOVZm(BFMQY]m)DHPT[_m*GKRRRV^m+BInMUYn,@DLPW[n-CGNRZ^n.EIQU\n/@HIIKKLSVVW_n0AACJLLNoVVVYYZp1AqDDErMsOOPuXYYv\x2CDDyGGG{NOO|QQR~YYY\\]#b3DDDcGGHfOOOgRRRjZZZk\\]n4DDDoGGpHsOOOtRRRwZZZx]]]{5D|EE}GGH$`OOOaRRRdZZZe]]]h6DEEiHHHkOlSoZp^2|9RtT|VXtZ|\|:F{EvEtFHvI{I|HFzKvKtLNvOzOtOvOtT|TzRV}7UX}8@DLPW[}9CGNR"m<\m'CKSZm(BJQYm)AHPX_m*GOV^m+FMU]m,DLT[m-CKRZm.BIQYm/@CCFFHPQQSSVVWn_o0AApDDqFtMuNNvQQwTTxT{Z|\\~^^1A#dGeIIfLLhNlTmWWoYYp[t2AAAvDDwGGxH|N}OO~QQ$`TTUd[e\\g__h3BBBlHmJJoLLpOOOtVuWWvZZx\|4CDD~GGJ%cPdRRfUUhWl]m__n5BBoDpLqMMOOrRRSs[t]]__t6BBBuJJJvQwYx7A2e9R1}T2eVX1}Z2e\e:FHG1}GFHK2cKbKcLNbO1}O2f7X_f8GOV^f9FM"u&Lv\v'KZv(JYv)HXv*GRRVv+FwUw,DTw-CRw.BQw/@xCCwFFyII}KK~L#kUlVVnYYs\\w]$f0AnDDuE%dJkLLrN&aRfTTnVVpW~\\\'f^^m1A{F}FF(dIIiKxQyQQTT)fWt\y__*`2AAbBpIrIIxLL~OOO+lUpWWvYYz\,h3BlDDrGGvI-cPgRRlTTpWWqW~___.d4BBiDDlFyM}OO/cRRgSuZZZx]]y__y5BBxEEvGnTmUUlWWjZZh]]g__f6A.~Nx\1k9RUlVmVnURfRUhVjVkUfZnZk_l:@AkBfBhBfA@h9_i_j:@AiBfElEkElFHkIfIKnKhKlOjMfOjRVkVlUSkRhRfSUhVfZnZlX\o7Zo8IXo9H g7VrVtXZr\nTZg8DnDpDDiSgQNiLnLpNQnSiSeScQNeLpXiXgZ]i_p_g_i_g9DpDnDpEGnIlOWnWpUQnOiOgQUiWp:SrStUXrZpZiSgSZ` @ @0707010003767a000081a40000000000000000000000014cc7b61700004097000000b500010002ffffffffffffffff0000002900000000root/usr/local/share/tek2plot/aitest.tek 1,`g ],`g?C3`t0@$`z0@,cg-F,cj-F,`m-G,lo-G,lr-G,lu-G,mx-G,m{-G,j~-G-ka-G-kd-G-hg-H-ej-H-fm-H-gp-H-as-I-bv-I-cy-I-m{-J-n~-J.la-K.id-K.kg-K.ej-L.gm-L.ep-M.cs-M.av-N.lx-O.j{-O.h~-P/ga-P/bd-Q/`g-R/oi-R/jl-S/eo-T/dr-U/cu-U/nw-V/jz-W/e}-X0``-Y0lb-Z0he-[0gh-[0ck-\0km-]0gp-^0cs-_0hu.A0dx.B0`{.C0i}.D1e`.E1nb.F1ge.G1`h.I1hj.J1bm.K1ko.L1`r.N1it.O1cw.P1hy.R1b|.S1h~.U2ba.V2gc.W2ne.Y2`h.[2jj.\2ll.^2go._2jq/A2ls/C2cv/D2fx/F2iz/H2l|/J2`/L3ga/M3gc/O3je/Q3ng/S3ni/U3nk/W3bn/Y3cp/[3cr/]3`t0@,cg-F,cd-F,`a-G+d~-G+d{-G+dx-G+eu-G+er-G+jo-G+kl-G+ki-G+hf-H+mc-H+n`-H*o}-H*a{-I*bx-I*cu-I*er-J*fo-J*dl-K*ii-K*kf-K*mc-L*o`-L)m}-M)c{-M)ax-N)du-O)jr-O)ho-P)ol-P)bj-Q)`g-R)gd-R)ja-S(m~-T(l{-U(cy-U(fv-V(js-W(mp-X(`n-Y(dk-Z(hh-[(oe-[(cc-\(k`-]'o}-^'c{-_'hx.A'lu.B'`s.C'ip.D'mm.E'fk.F'oh.G'`f.I'hc.J'ba.K&k~.L&`|.N&iy.O&cw.P&ht.R&br.S&ho.U&bm.V&oj.W&fh.Y&`f.[&jc.\&da.^%o~._%j|/A%dz/C%cx/D%nu/F%is/H%dq/J%`o/L%ol/M%oj/O%jh/Q%ff/S%fd/U%fb/W%b`/Y$c~/[$c|/]$`z0@,ag2Y,ad2Y,`a2Y+d~2Y+d{2Y+dx2Y+gu2X+gr2X+jo2X+il2X+ii2X+hf2X+oc2W+n`2W*m}2W*c{2V*bx2V*au2V*gr2U*fo2U*dl2U*ki2T*if2T*oc2S*m`2S)o}2R)a{2R)cx2Q)du2Q)jr2P)ho2P)ml2O)bj2N)`g2N)ed2M)ja2L(o~2K(l{2K(ay2J(fv2I(js2H(op2G(`n2G(dk2F(hh2E(me2D(ac2C(i`2B'm}2A'a{2@'hx1_'lu1^'`s1]'kp1['om1Z'fk1Y'mh1X'`f1W'hc1V'ba1T&i~1S&`|1R&ky1P&aw1O&ht1N&br1L&ho1K&bm1I&mj1H&fh1F&`f1E&jc1C&da1B%m~1@%j|0^%dz0]%ax0[%nu0Y%ks0W%dq0V%`o0T%ml0R%mj0P%jh0N%ff0L%fd0J%fb0H%b`0F$a~0D$a|0B$`z0@,ag2Y,aj2Y,`m2Y,lo2Y,lr2Y,lu2Y,ox2X,o{2X,j~2X-ia2X-id2X-hg2X-gj2W-fm2W-ep2W-cs2V-bv2V-ay2V-o{2U-n~2U.la2U.kd2T.ig2T.gj2S.em2S.gp2R.as2R.cv2Q.lx2Q.j{2P.h~2P/ea2O/bd2N/`g2N/mi2M/jl2L/go2K/dr2K/au2J/nw2I/jz2H/g}2G0``2G0lb2F0he2E0eh2D0ak2C0im2B0ep2A0as2@0hu1_0dx1^0`{1]0k}1[1g`1Z1nb1Y1ee1X1`h1W1hj1V1bm1T1io1S1`r1R1kt1P1aw1O1hy1N1b|1L1h~1K2ba1I2ec1H2ne1F2`h1E2jj1C2ll1B2eo1@2jq0^2ls0]2av0[2fx0Y2kz0W2l|0V2`0T3ea0R3ec0P3je0N3ng0L3ni0J3nk0H3bn0F3ap0D3ar0B3`t0@,ag*O,aj*O,am*O,bp*O,bs*O,gv*O,dy*P,e|*P,f*P-db*Q-ee*Q-gh*Q-ek*R-gn*R-eq*S-gt*S-fw*T-ez*U-d}*V.g`*V.fc*W.ef*X.ai*Y.al*Z.ao*[.ar*\.au*].mw*^.nz*_.o}+@/h`+B/ic+C/ff+D/gi+E/al+G/co+H/mq+J/ot+K/iw+M/dz+O/b}+P0a`+R0lb+T0ke+U0gh+W0bk+Y0nm+[0jp+]0fs+_0nu,A0jx,C0g{,E0l},H1i`,J1bc,L1oe,N1eh,Q1nj,S1hm,V1bp,X1ir,[1cu,]1jw-@1`z-C1g|-E1o~-H2fa-K2jc-N2bf-Q2fh-T2jj-W2bm-Z2go-]2hq.A2ms.D2bv.G2`x.K2ez.N2k|.Q2i~.U3h`.Y3nb.\3md/@3lf/D3oh/G3oj/K3kl/O3kn/S3gp/W3gr/[3`t0@,ag*O,ad*O,aa*O+b~*O+b{*O+ow*O+lt*P+mq*P+nn*P+lk*Q+mh*Q+oe*Q+mb*R*o*R*m|*S*oy*S*nv*T*ms*U*lp*V*om*V*nj*W*mg*X*ae*Y*ab*Z)a*[)a|*\)ay*])ev*^)fs*_)gp+@)hm+B)ij+C)ng+D)od+E)ab+G(c+H(e|+J(gy+K(iv+M(ls+O(bq+P(an+R(dk+T(kh+U(oe+W(bc+Y(f`+['j}+]'nz+_'fx,A'ju,C'or,E'dp,H'im,J'bk,L'gh,N'me,Q'fc,S'h`,V&b~,X&i{,[&cy,]&jv-@&`t-C&oq-E&go-H&nl-K&jj-N&bh-Q&ne-T&jc-W&ba-Z%o~-]%h|.A%ez.D%bx.G%`v.K%ms.N%kq.Q%io.U%hm.Y%fk.\%ei/@%dg/D%ge/G%gc/K%ka/O$k/S$o}/W$o{/[$`z0@,cg5P,cd5P,ca5P+b~5P+b{5P+mw5P+lt5P+oq5O+nn5O+lk5O+oh5N+me5N+ob5M*m5M*o|5L*my5L*nv5K*os5J*lp5J*mm5I*nj5H*og5G*ce5F*cb5E)c5D)c|5C)cy5B)gv5A)fs5@)ep4_)hm4^)kj4\)ng4[)md4Z)cb4X(a4W(g|4U(ey4T(kv4R(ls4Q(bq4O(cn4M(dk4L(ih4J(me4H(bc4F(f`4D'j}4B'nz4@'fx3^'ju3\'mr3Z'dp3X'km3U'bk3S'eh3Q'oe3N'fc3L'h`3J&b~3G&k{3D&ay3B&jv2_&`t2]&mq2Z&eo2W&nl2T&jj2Q&bh2N&ne2K&jc2H&ba2E%m~2B%h|1_%gz1[%bx1X%`v1U%os1Q%iq1N%ko1J%hm1G%fk1C%gi0_%dg0\%ee0X%ec0T%ia0P$i0L$m}0H$m{0D$`z0@,cg5P,cj5P,cm5P,bp5P,bs5P,ev5P,dy5P,g|5O,f5O-db5O-ge5N-eh5N-gk5M-en5M-gq5L-et5L-fw5K-gz5J-d}5J.e`5I.fc5H.gf5G.ci5F.cl5E.co5D.cr5C.cu5B.ow5A.nz5@.m}4_/h`4^/kc4\/ff4[/ei4Z/cl4X/ao4W/oq4U/mt4T/kw4R/dz4Q/b}4O0c`4M0lb4L0ie4J0eh4H0bk4F0nm4D0jp4B0fs4@0nu3^0jx3\0e{3Z0l}3X1k`3U1bc3S1me3Q1gh3N1nj3L1hm3J1bp3G1kr3D1au3B1jw2_1`z2]1e|2Z1m~2W2fa2T2jc2Q2bf2N2fh2K2jj2H2bm2E2eo2B2hq1_2os1[2bv1X2`x1U2gz1Q2i|1N2k~1J3h`1G3nb1C3od0_3lf0\3mh0X3mj0T3il0P3in0L3ep0H3er0D3`t0@,bg'Z,gj'Z,gm'Z,hp'[,ls'[,nv'[,cz'[,e}'\-f`'\-ic']-kf']-ni'^-am'_-`p(@-gs(@-gv(A-ky(B-k|(C-o(D.lb(F.me(G.bi(H.`l(J.ao(K.gr(L.eu(N.dx(P.g{(Q.f~(S/ea(U/dd(W/dg(Y/dj([/dm(]/ep(_/es)A/cv)C/`y)F/a|)H/o~)J0ma)M0kd)O0jg)R0ej)U0`m)X0oo)Z0kr)]0gu*@0cx*C0oz*F0h}*J1e`*M1bc*P1ke*S1eh*W1oj*Z1em*^1`p+B1kr+E1bu+I1iw+M1`z+Q1d|+U1l~+Y2aa+]2ic,A2ne,E2`h,J2ij,N2ol,R2mn,W2cq,[2fs-@2du-E2hw-J2ky-N2k{-S2k}-X2k-]3ka.B3dc.H3ae.M3cg.R3lh.X3jj.]3dl/C3om/H3jo/N3aq/T3hr/Z3`t0@,bg'Z,oc'Z,o`'Z+h}'[+dz'[+fw'[+ct'[+mp'\+nm'\+ij']+kg']+fd'^+aa'_*`~(@*oz(@*ow(A*kt(B*kq(C*gn(D*dk(F*eh(G*be(H*`b(J)a(K)o{(L)mx(N)lu(P)or(Q)no(S)ml(U)li(W)lf(Y)lc([)l`(](m}(_(mz)A(cx)C(`u)F(ar)H(go)J(el)M(ki)O(jf)R(mc)U(`a)X'g~)Z'k{)]'ox*@'cv*C'gs*F'hp*J'mm*M'bk*P'kh*S'me*W'gc*Z'm`*^&`~+B&k{+E&by+I&iv+M&`t+Q&lq+U&do+Y&am+]&ij,A&fh,E&`f,J&ic,N&ga,R%e,W%c},[%nz-@%lx-E%hv-J%kt-N%kr-S%kp-X%kn-]%kl.B%lj.H%ai.M%cg.R%de.X%jc.]%la/C%g`/H$j~/N$a}/T$h{/Z$`z0@,bg8E,mc8E,m`8E+h}8E+dz8E+fw8D+at8D+op8C+nm8C+kj8B+ig8B+fd8A+ca8@*`~8@*mz7_*mw7^*it7]*iq7\*en7[*dk7Z*gh7X*be7W*`b7V)c7T)m{7S)ox7Q)lu7P)mr7N)no7L)ol7J)li7I)lf7G)lc7E)l`7C(o}7@(oz6^(ax6\(`u6Z(cr6W(eo6U(gl6R(ii6P(jf6M(oc6J(`a6H'e~6E'i{6B'mx5_'av5\'es5Y'hp5V'om5R'bk5O'ih5L'oe5H'ec5E'o`5A&`~4^&i{4Z&by4V&kv4R&`t4O&lq4K&do4G&cm4B&kj3^&fh3Z&`f3V&kc3Q&ea3M%g3H%a}3D%nz2_%lx2[%hv2V%it2Q%ir2L%ip2G%in2B%il1]%lj1X%ci1R%ag1M%de1H%jc1B%la0]%e`0W$j~0Q$c}0K$h{0F$`z0@,bg8E,ej8E,em8E,hp8E,ls8E,nv8D,az8D,g}8C-f`8C-kc8B-if8B-ni8A-cm8@-`p8@-es7_-ev7^-iy7]-i|7\-m7[.lb7Z.oe7X.bi7W.`l7V.co7T.er7S.gu7Q.dx7P.e{7N.f~7L/ga7J/dd7I/dg7G/dj7E/dm7C/gp7@/gs6^/av6\/`y6Z/c|6W/m~6U0oa6R0id6P0jg6M0gj6J0`m6H0mo6E0ir6B0eu5_0ax5\0mz5Y0h}5V1g`5R1bc5O1ie5L1gh5H1mj5E1gm5A1`p4^1ir4Z1bu4V1kw4R1`z4O1d|4K1l~4G2ca4B2kc3^2ne3Z2`h3V2kj3Q2ml3M2on3H2aq3D2fs2_2du2[2hw2V2iy2Q2i{2L2i}2G2i2B3ia1]3dc1X3ce1R3ag1M3lh1H3jj1B3dl0]3mm0W3jo0Q3cq0K3hr0F3`t0@,bg%J,jj%J,om%J,gq%J,it%K,bx%K,d{%L,j~%L-ab%M-de%N-oh%N-cl%O-ko%P-or%Q-`v%S-ey%T-n|%U.``%W.fc%X.hf%Z.oi%[.fm%].jp%_.ms&A.nv&C.bz&E.g}&G/h`&J/nc&L/of&N/bj&Q/dm&T/gp&V/fs&Y/jv&\/jy&_/j|'B/j'E0kb'H0ie'L0jh'O0hk'S0jn'V0eq'Z0dt'^0cw(A0oy(E0o|(I0k(M1gb(Q1`e(V1ng(Z1gj(^1am)C1ko)G1fr)L1mt)Q1dw)V1ly)[1d|*@1h~*E2`a*J2ec*O2ne*T2`h*Z2fj*_2dl+E2jn+J2mp+P2lr+V2ot+[2ov,A2ox,G2oz,M2h|,T2i~,Z3f`-@3cb-F3mc-M3ge-S3ag-Z3hh.A3cj.G3jk.N3nl.U3an.\3io/C3np/J3nq/Q3cs/X3`t0@,bg%J,jc%J,g`%J+o|%J+iy%K+bv%K+lr%L+jo%L+al%M+lh%N+ge%N+cb%O*k~%P*g{%Q*`x%S*mt%T*fq%U*`n%W*nj%X*hg%Z*gd%[*n`%])j}%_)ez&A)fw&C)bt&E)op&G)hm&J)fj&L)gg&N)bd&Q)l`&T(o}&V(nz&Y(jw&\(jt&_(jq'B(jn'E(kk'H(ih'L(je'O(hb'S'j'V'm|'Z'ly'^'cw(A'gt(E'gq(I'kn(M'ok(Q'`i(V'ff(Z'oc(^'aa)C&k~)G&n{)L&ey)Q&lv)V&dt)[&lq*@&ho*E&`m*J&mj*O&fh*T&`f*Z&nc*_&la+E%j+J%e}+P%d{+V%gy+[%gw,A%gu,G%gs,M%hq,T%io,Z%nm-@%cl-F%ej-M%oh-S%ag-Z%he.A%cd.G%jb.N%fa.U%a`.\$i~/C$f}/J$f|/Q$c{/X$`z0@,bg:U,jc:U,e`:U+m|:U+ky:T+bv:T+lr:T+jo:S+cl:R+lh:R+ee:Q+ab:P*i~:O*e{:N*`x:M*ot:K*fq:J*`n:I*nj:G*hg:F*ed:D*n`:B)j}:@)gz9^)fw9\)bt9Z)mp9X)hm9V)fj9S)eg9Q)bd9N)l`9L(m}9I(nz9F(jw9C(jt9@(jq8](jn8Z(ik8W(kh8S(je8P(hb8M'j8I'o|8E'ly8B'aw7^'et7Z'eq7V'in7R'mk7N'`i7J'ff7E'mc7A'ca6\&i~6X&n{6S&gy6N&lv6J&dt6E&lq6@&ho5[&`m5V&oj5P&fh5K&`f5F&nc5@&la4[%j4U%g}4O%d{4J%ey4D%ew3^%eu3X%es3R%hq3L%ko3E%nm2_%al2Y%gj2R%mh2L%cg2E%he1_%ad1X%jb1Q%fa1J%c`1C$k~0\$f}0U$f|0N$a{0G$`z0@,bg:U,jj:U,mm:U,eq:U,kt:T,bx:T,d{:T,j~:S-cb:R-de:R-mh:Q-al:P-io:O-mr:N-`v:M-gy:K-n|:J.``:I.fc:G.hf:F.mi:D.fm:B.jp:@.os9^.nv9\.bz9Z.e}9X/h`9V/nc9S/mf9Q/bj9N/dm9L/ep9I/fs9F/jv9C/jy9@/j|8]/j8Z0ib8W0ke8S0jh8P0hk8M0jn8I0gq8E0dt8B0aw7^0my7Z0m|7V0i7R1eb7N1`e7J1ng7E1ej7A1cm6\1io6X1fr6S1ot6N1dw6J1ly6E1d|6@1h~5[2`a5V2gc5P2ne5K2`h5F2fj5@2dl4[2jn4U2op4O2lr4J2mt4D2mv3^2mx3X2mz3R2h|3L2k~3E3f`2_3ab2Y3oc2R3ee2L3cg2E3hh1_3aj1X3jk1Q3nl1J3cn1C3ko0\3np0U3nq0N3as0G3`t0@,ag#@,mj#@,fn#@,cr#@,lu#A,jy#A,a}#B-l`#C-kd#C-ch#D-ok#E-ho#G-as#H-ov#I-ez#K-l}#M.ka#N.be#P.jh#R.fl#T.oo#V.ds#Y.nv#[.dz#^.o}$@/fa$C/id$F/ah$I/ik$L/nn$O/cr$R/iu$V/ox$Y/a|$]/d%A0kb%D0oe%H0oh%L0`l%Q0ao%U0fr%Y0du%^0fx&B0d{&G0g~&K1ca&P1cd&U1of&Z1ki&_1hl'E1ao'J1oq'O1it'U1cw'Z1ny(@1e|(F1m~(L2`a(R2ic(X2me(^2fh)D2kj)J2il)Q2on)W2mp)^2cs*D2bu*K2aw*R2mx*Y2lz+@2h|+G2e~+N3a`+U3ja+\3cc,C3hd,K3bf,R3hg,Z3nh-A3`j-I3gk-P3jl-X3im.@3hn.H3ho.P3kp.W3gq._3cr/G3or/O3hs/X3`t0@,ag#@,ec#@+n#@+c|#@+dx#A+jt#A+aq#B+dm#C+ki#C+cf#D+gb#E*h~#G*a{#H*gw#I*ms#K*dp#M*kl#N*bi#P*je#R*na#T)g~#V)lz#Y)fw#[)ls#^)gp$@)nl$C)ii$F)af$I)ib$L(f$O(c|$R(ix$V(gu$Y(ar$](ln%A(kk%D(gh%H(ge%L(`b%Q'a%U'n{%Y'lx%^'nu&B'lr&G'oo&K'cm&P'cj&U'gg&Z'kd&_'ha'E&a'J&g|'O&iy'U&cw'Z&ft(@&mq(F&eo(L&`m(R&ij(X&eh(^&ne)D&kc)J&ia)Q%g)W%e})^%c{*D%by*K%aw*R%eu*Y%ds+@%hq+G%mo+N%an+U%jl+\%ck,C%hi,K%bh,R%hf,Z%fe-A%`d-I%ob-P%ja-X%i`.@$h.H$h~.P$k}.W$o|._$c|/G$g{/O$hz/X$`z0@,cg<_,gc<_+n<_+a|<_+dx<_+jt<^+cq<]+dm<]+ii<\+af<[+eb_+af>^+`b>]*o}>[*my>Z*nu>X*nq>V*om>T*ni>R*me>P*la>N)m}>K)oy>H)cv>E)`r>C)gn=_)jj=\)if=Y)ob=U(`=R(i{=N(nw=J(bt=F(ip=B(`m<^(ji_-ah>^-`l>]-gp>[-et>Z-fx>X-f|>V.g`>T.fd>R.eh>P.dl>N.ep>K.gt>H.cx>E.`|>C.o=_/jc=\/ig=Y/gk=U/`o=R/ir=N/fv=J/bz=F/i}=B0`a<^0jdA$of>B$mi>C$ik>C$on>B$jp>A$cq=_$bq=^$bq=^$ip=]$no=\$ln=\$ik=[$mi=[$lf=\$je=\$md=]$fd=^$gd=_$od>@$je>A$lf>B$oi>B$kk>B$ln>B$no>A$kp>@$cq=_$dp>K$bq>K$fo>K$dp>K$op>J$cq>I$`q>H$lp>G$fp>F$fo>F$ln>G$dn>H$im>J$`m>K$jl>K$no>F$do>G$ln>H$an>J$hm>K$bm>K$jk>K$dk>K$mj>J$mj>H$fk>G$hk>G$jl>F$nj>F$hk>G$`v9I$l9I2mw9H2an9H$nn8F$`n8G$jm8F$cn8E$on8E$no8F$hp8G$cq8H$aq8K$hp8M$oo8M$mn8N$im8N$gl8M$`k8L$oi8H$fi8G$bh8F$cf8E$gd8E$aq8K$jp8L$lo8M$on8M$km8M$dl8M$ak8K$oi8H$ke8E$bf8F$bf8G$od8J$nd8L$ke8M$af8N$bf8G$gd8J$dd8M$od8M$af8N$eg8N$nn8R$an8S$jm8R$`n8R$ln8R$no8R$ip8S$`q8U$bq8W$ip8Y$do8Z$hm8Z$el8Y$jk8W$kk8U$bq8W$kp8X$eo8Y$im8Y$gl8X$jk8W$jk8W$ck8X$li8Z$jh8Z$nf8Z$he8Z$md8Y$fd8W$dd8U$md8S$je8R$lf8R$dg8R$bh8R$eg8S$nf8R$ej8Y$hh8Z$lf8Z$ie8Y$od8X$fd8W$gt8^$oj8^$et8_$mj8_$mo8_$lp9@$bq9A$aq9B$op9C$mo9D$mj9D$aq9B$mp9C$oo9C$oj9C$et8]$et8_$mj8]$nj9@$mj9B$nj9E$bq9I$ak9H$ak9H$fl9I$ml9K$ml9M$dl9O$ak9P$gi9P$ch9P$af9P$ld9O$ed9M$ed9K$nd9I$he9I$mf9H$eg9H$`h9I$fg9I$lf9I$ml9M$fl9N$ck9O$ei9P$ah9P$cf9O$nd9N$ed9M$bq9I$cq9O$jp9I$jp9L$cq9O$nl9\$ck9[$oi9Z$gi9X$ei9X$mi9V$ak9U$nl9T$jm9T$eo9U$ip9V$aq9X$bq9Y$ip9[$fo9\$hm9]$li9]$fg9\$cf9[$od9Z$gd9X$dd9W$od9U$af9U$mf9U$gg9U$mf9V$cf9U$ei9X$li9W$ck9U$ml9U$im9U$go9U$hp9W$aq9X$bq9Y$kp9Z$go9[$jm9\$ni9\$gg9[$af9[$ld9Z$gd9X$aq:A$mj:A$cq:A$oj:A$oo:A$np:B$`q:D$`q:E$mp:F$oo:F$oj:F$`q:E$op:E$mo:F$mj:F$oo:F$op:G$`q:I$`q:J$mp:K$oo:K$oj:K$`q:J$op:J$mo:K$mj:K$cq9_$cq:A$oj9_$lj:C$lj:E$lj:H$lj:J$mj:M$av5Z$m5Z2lw5Z2`n5Z$nn4G$an4H$jm4G$`n4G$ln4G$no4G$ip4H$`q4J$bq4L$ip4N$oo4N$nn4O$jm4O$gl4N$`k4M$li4J$gi4H$bh4G$`f4G$dd4G$bq4L$kp4M$mo4N$on4N$km4N$el4N$bk4L$li4J$he4G$bf4G$cf4H$od4K$od4M$ke4N$bf4O$cf4H$gd4K$ed4N$od4N$bf4O$fg4O$on4S$an4T$km4S$an4S$mn4S$oo4S$ip4T$aq4V$cq4X$jp4Z$do4[$hm4[$fl4Z$kk4X$kk4V$cq4X$kp4Y$fo4Z$jm4Z$gl4Y$kk4X$kk4X$ck4Y$li4[$kh4[$of4[$he4[$nd4Z$gd4X$ed4V$md4T$ke4S$mf4S$eg4S$ch4S$eg4T$of4S$fj4Z$hh4[$lf4[$je4Z$od4Y$gd4X$gt4_$oj4_$et5@$mj5@$mo5@$mp5A$bq5B$bq5C$op5D$mo5E$mj5E$bq5C$np5D$oo5D$oj5D$ft4^$et5@$nj4^$oj5A$nj5C$oj5F$cq5J$bk5I$bk5I$gl5J$nl5L$ml5N$el5P$bk5Q$di5R$`h5R$bf5Q$md5P$ed5N$fd5L$od5J$he5J$nf5I$fg5I$`h5J$gg5J$lf5J$ml5N$fl5O$ck5P$fi5Q$bh5Q$cf5P$nd5O$ed5N$cq5J$cq5P$kp5J$kp5M$cq5P$nl5]$`k5]$oi5[$di5Z$ei5Y$ni5W$ak5V$ol5U$km5U$eo5V$jp5W$aq5Y$bq5Z$jp5\$fo5]$im5^$mi5^$fg5]$`f5]$od5[$dd5Z$dd5X$ld5W$af5V$mf5V$dg5W$nf5W$`f5W$ei5Y$li5X$`k5W$ml5V$im5V$do5W$hp5X$aq5Y$bq5Z$kp5[$do5]$jm5]$ni5]$dg5]$bf5\$md5[$dd5Z$aq6B$mj6B$cq6B$oj6B$oo6B$op6C$`q6E$`q6F$np6G$oo6G$oj6G$`q6F$lp6G$no6G$nj6G$oo6G$op6H$aq6J$`q6K$np6L$lo6M$lj6M$`q6K$lp6L$no6L$nj6L$`q6A$cq6B$lj6A$mj6D$lj6F$mj6I$lj6K$mj6N$on6Q$an6R$km6Q$`n6Q$ln6Q$oo6Q$ip6R$`q6T$bq6V$ip6X$do6Y$hm6Y$el6X$jk6V$kk6T$bq6V$kp6W$eo6X$im6X$gl6W$jk6V$jk6V$ck6W$li6Y$jh6Y$nf6Y$he6Y$md6X$fd6V$dd6T$md6R$ke6Q$lf6Q$dg6Q$ch6Q$eg6R$of6Q$ej6X$hh6Y$lf6Y$ie6X$od6W$fd6V$`q7A$hp6_$on6]$ik6]$mi6]$of6]$ld6_$dd7A$ed7B$ld7D$mf7E$oi7E$kk7E$mn7E$hp7D$aq7B$`q7A$`q7A$kp6_$lo6_$nn6^$kk6]$oi6]$nf6^$he6_$od6_$dd7A$ed7B$md7C$he7D$nf7D$mi7E$ik7E$nn7D$lo7D$ip7C$aq7B$fp7M$`q7N$do7N$fp7M$mp7M$aq7L$bq7J$np7I$dp7I$do7I$nn7I$fn7J$km7L$bm7M$hl7N$lo7I$fo7I$nn7J$cn7L$jm7M$`m7N$hk7N$fk7M$oj7L$oj7J$dk7J$jk7I$hl7I$lj7I$jk7I$bv2K$n2K2nw2K2bn2K$cq2E$hp2D$on2B$ik2B$mi2B$of2B$ld2D$gd2E$dd2G$ld2I$mf2J$oi2J$kk2J$mn2J$hp2I$`q2G$cq2E$cq2E$kp2D$lo2D$nn2C$kk2B$oi2B$nf2C$he2D$od2D$gd2E$dd2G$md2H$he2I$nf2I$mi2J$ik2J$nn2I$lo2I$ip2H$`q2G$gt2N$oj2N$et2O$mj2O$mo2O$mp2P$bq2Q$bq2R$lp2T$mo2T$mj2T$bq2R$np2S$lo2T$lj2T$ft2M$et2O$nj2M$oj2P$nj2R$oj2U$`v.]$l.]2mw.]2an.]$bq-S$jp-Q$nn-P$kk-O$oi-O$nf-P$nd-Q$fd-S$gd-T$nd-V$of-W$mi-X$ik-X$on-W$jp-V$cq-T$bq-S$bq-S$ip-R$no-Q$ln-Q$jk-P$ni-P$lf-Q$je-Q$md-R$fd-S$gd-T$ld-V$je-V$lf-W$oi-W$kk-W$ln-W$no-V$hp-V$cq-T$ft-\$nj-\$dt-]$lj-]$lo-]$op-]$aq-_$aq.@$np.A$lo.B$lj.B$aq.@$lp.A$no.A$nj.A$dt-[$dt-]$lj-[$mj-^$mj.@$mj.C$cq.I$hp.H$on.F$hk.F$li.F$of.F$ld.H$gd.I$dd.K$od.L$lf.N$oi.N$kk.N$ln.N$kp.L$`q.K$cq.I$cq.I$jp.H$lo.H$mn.G$kk.F$oi.F$mf.G$he.H$nd.H$gd.I$dd.K$md.L$ke.L$nf.M$li.N$hk.N$nn.M$oo.L$ip.L$`q.K$`q.V$ip.T$ln.S$ik.R$mi.R$lf.S$md.T$dd.V$ed.W$ld.Y$mf.Z$oi.Z$kk.Z$mn.Z$hp.Y$aq.W$`q.V$`q.V$kp.T$mo.T$nn.S$hk.S$li.S$nf.S$ie.T$od.T$dd.V$ed.W$nd.X$he.Y$of.Y$mi.Z$ik.Z$on.Y$lo.Y$jp.X$aq.W$`q._$lj._$bq._$nj._$no._$mp/@$cq/A$cq/B$lp/D$no/D$nj/D$cq/B$np/C$lo/D$lj/D$no/D$np/E$cq/F$cq/G$lp/I$no/I$nj/I$cq/G$np/H$lo/I$lj/I$bq.]$bq._$nj.]$oj/@$oj/B$oj/E$oj/G$lj/K$mn/N$`n/O$im/N$cn/M$on/M$mo/N$hp/O$cq/P$aq/S$hp/U$fo/U$jm/U$dl/U$ik/S$ik/Q$aq/S$jp/T$do/U$hm/U$fl/T$ik/S$ik/S$bk/T$ni/U$ih/V$mf/V$je/U$ld/U$ed/S$gd/P$ld/O$ie/N$of/M$gg/M$ah/N$dg/O$mf/N$dj/U$jh/U$nf/U$he/U$nd/T$ed/S$bq/]$kp/[$nn/Z$hk/Z$li/Z$nf/Z$od/[$fd/]$gd/^$nd0@$of0A$ni0B$jk0B$on0A$jp0@$cq/^$bq/]$bq/]$ip/\$oo/[$ln/[$jk/Z$ni/Z$lf/[$ke/[$md/\$fd/]$gd/^$ld0@$je0@$mf0A$oi0A$kk0A$mn0A$no0@$hp0@$cq/^$ep0J$cq0J$go0J$ep0J$op0I$cq0H$`q0G$lp0F$gp0E$go0E$ln0F$dn0G$im0I$am0J$kl0J$oo0E$do0F$ln0G$an0I$im0J$cm0J$kk0J$ek0J$mj0I$nj0G$fk0F$hk0F$kl0E$oj0E$hk0F$av+N$m+N2lw+O2`n+O$cq*T$hp*S$on*Q$ik*Q$mi*Q$of*Q$ld*S$gd*T$dd*V$od*W$lf*Y$oi*Y$kk*Y$ln*Y$kp*W$`q*V$cq*T$cq*T$jp*S$lo*S$mn*R$kk*Q$oi*Q$mf*R$he*S$nd*S$gd*T$dd*V$md*W$ke*W$nf*X$li*Y$hk*Y$nn*X$oo*W$ip*W$`q*V$gt*]$oj*]$et*^$mj*^$mo*^$mp*_$bq+@$bq+A$op+B$mo+C$mj+C$bq+A$np+B$oo+B$oj+B$ft*\$et*^$nj*\$oj*_$nj+A$oj+D$`q+K$ip+I$ln+H$jk+G$ni+G$lf+H$md+I$dd+K$ed+L$md+N$nf+O$li+P$hk+P$nn+O$ip+N$aq+L$`q+K$`q+K$hp+J$mo+I$on+H$hk+H$li+H$of+H$ie+I$ld+J$dd+K$ed+L$nd+M$ie+N$of+N$ni+O$jk+O$on+N$mo+N$jp+M$aq+L$nn+U$go+V$bq+X$fd+X$hp+X$dd+X$fd+U$dd+[$aq,@$mj,@$cq,@$oj,@$oo,@$op,A$`q,C$`q,D$np,E$oo,E$oj,E$`q,D$lp,E$no,E$nj,E$oo,E$op,F$aq,H$`q,I$np,J$lo,K$lj,K$`q,I$lp,J$no,J$nj,J$`q+_$cq,@$lj+_$mj,B$lj,D$mj,G$lj,I$mj,L$bv'_$n'_2ow(@2cn(@$`q&V$hp&T$ln&S$ik&R$mi&R$lf&S$ld&T$dd&V$ed&W$ld&Y$mf&Z$oi&Z$kk&Z$mn&Z$hp&Y$aq&W$`q&V$`q&V$kp&T$lo&T$nn&S$hk&S$li&S$nf&S$he&T$od&T$dd&V$ed&W$nd&X$he&Y$nf&Y$mi&Z$ik&Z$nn&Y$lo&Y$jp&X$aq&W$dt&_$lj&_$ft&_$nj&_$no&_$mp'@$cq'A$cq'B$lp'D$no'D$nj'D$cq'B$np'C$lo'D$lj'D$ft&]$ft&_$nj&]$oj'@$oj'B$oj'E$aq'L$jp'J$mn'I$jk'H$ni'H$mf'I$nd'J$ed'L$fd'M$md'O$nf'P$mi'Q$ik'Q$nn'P$ip'O$bq'M$aq'L$aq'L$hp'K$no'J$on'I$ik'I$mi'I$of'I$je'J$ld'K$ed'L$fd'M$od'N$ie'O$lf'P$ni'P$jk'P$ln'P$mo'O$kp'N$bq'M$on'V$go'W$cq'Y$gd'Y$hp'Y$dd'Y$gd'V$ed'\$bq(A$nj(A$`q(B$lj(B$lo(B$op(B$aq(D$aq(E$np(F$lo(G$lj(G$aq(E$lp(F$no(F$nj(F$lo(G$lp(H$aq(I$aq(J$np(K$lo(L$lj(L$aq(J$lp(K$no(K$nj(K$`q(@$`q(B$lj(@$mj(C$mj(E$mj(H$mj(J$nj(M$on(P$bn(Q$km(P$an(P$mn(P$oo(P$jp(Q$aq(S$cq(U$jp(W$do(X$hm(X$fl(W$kk(U$kk(S$cq(U$hp(W$fo(W$jm(W$dl(W$kk(U$kk(U$`k(W$li(X$kh(X$of(X$he(X$nd(W$gd(U$ed(S$nd(Q$ke(P$mf(P$eg(P$ch(P$fg(Q$of(P$fj(W$hh(X$lf(X$je(W$ld(W$gd(U$`q)@$ip(^$ln(]$jk(\$ni(\$lf(]$md(^$dd)@$ed)A$ld)C$mf)D$li)E$hk)E$mn)D$hp)C$aq)A$`q)@$`q)@$kp(^$mo(^$nn(]$hk(]$li(]$nf(]$ie(^$od(^$dd)@$ed)A$nd)B$he)C$of)C$mi)D$ik)D$on)C$lo)C$jp)B$aq)A$gp)L$aq)M$eo)M$gp)L$mp)L$aq)K$bq)I$np)H$ep)H$eo)H$nn)H$fn)I$km)K$cm)L$il)M$mo)H$fo)H$nn)I$cn)K$km)L$am)M$ik)M$gk)L$oj)K$lj)J$dk)I$jk)H$il)H$mj)H$jk)H&hn%O&hn%Y&hn?H&hn>^&hr#M&nq#M&dq#M&mq#L&ir#L&ls#M&ft#M&bu#O&cu#Q>#S&ms#T&hr#U&dq#U&ap#T&nn#R&jm#O&am#N&lk#M&aj#L&ah#L&cu#Q&dt#S&os#S&ir#T&eq#T&cp#S&on#Q&jm#O&ei#L&`j#M&aj#N&mh#Q&lh#S&ei#T&`j#U&aj#N&ah#Q&ch#S&mh#T&`j#U&dk#U&ir#Y&oq#Y&eq#Y&nq#X&jr#X&ms#Y>#Y&bu#[&`u#^&dt$@&bs$@&fq$@&`p$@&ho#^&io#\&`u#^&et#_&`s$@&dq$@&ap#_&ho#^&ho#^&mn#_&jm$@&dl$A&hj$A&fi$@&lh$@&`h#^&bh#[&oh#Y&ei#Y&jj#X&fk#X&mk#Y&gk#Y&ij#Y&dn$@&fl$@&jj$@&di$@&mh#_&`h#^&`u$G&kt$E&ks$D&er$D&eq$D&cp$D&co$E&hn$G&hn$H&ao$I&ap$J&gq$J&gr$J&is$J&it$I&`u$H&`u$G&`u$G&it$F&is$E&gr$D&gq$D&ap$E&ao$F&hn$G&hn$H&`o$I&cp$I&eq$J&er$J&ks$I&ht$I&`u$H&jr$N&mq$O&fq$N&lq$N&hr$N&ns$N&et$O&`u$Q&bu$S&et$U&ls$V&jr$V&fq$V&`p$V&ln$T&hm$Q&cm$O&nk$N&`j$N&`h$N&bu$S>$T&ms$U&hr$V&dq$V&ap$U&nn$S&hm$Q&di$N&bj$N&cj$O&oh$R&oh$T&di$V&bj$V&cj$O&ch$R&ah$U&lh$V&bj$V&fk$V&cu$]&dt$\&kr$Z&io$Z&im$Z&kj$Z&lh$\&ch$]&`h$_&lh%A&hj%B&km%B&ko%B&hr%B&dt%A&`u$_&cu$]&cu$]&ft$\&ls$\&jr$[&ko$Z&km$Z&jj$[&di$\&nh$\&ch$]&`h$_&mh%@&di%A&jj%A&hm%B&ho%B&jr%A&ls%A&et%@&`u$_&`u%J&np%I&cu%J&np%I+do%O+do%Y+do?H+do>^+ds#J+jr#J+`r#J+ir#I+es#I+ht#J+bu#J+nu#L+ou#N+cu#P+it#Q+ds#R+`r#R+mp#Q+jo#O+fn#L+mm#K+hl#J+mj#I+mh#I+ou#N+`u#P+kt#P+es#Q+ar#Q+op#P+ko#N+fn#L+aj#I+lj#J+mj#K+ii#N+hi#P+aj#Q+lj#R+mj#K+mh#N+oh#P+ii#Q+lj#R+`l#R+es#V+kr#V+ar#V+jr#U+fs#U+it#V+cu#V+nu#X+lu#[+`u#]+ns#]+br#]+lp#]+dp#[+ep#Y+lu#[+au#\+ls#]+`r#]+mp#\+dp#[+dp#[+io#\+fn#]+`m#^+dk#^+bj#]+hi#]+lh#[+nh#X+ki#V+aj#V+fk#U+bl#U+il#V+cl#V+ek#V+`o#]+bm#]+fk#]+`j#]+ii#\+lh#[+lu$D+gu$B+gt$A+as$A+ar$A+op$A+oo$B+do$D+do$E+mo$F+mp$G+cr$G+cs$G+et$G+eu$F+lu$E+lu$D+lu$D+eu$C+et$B+cs$A+cr$A+mp$B+mo$C+do$D+do$E+lo$F+op$F+ar$G+as$G+gt$F+du$F+lu$E+fs$K+ir$L+br$K+hr$K+ds$K+jt$K+au$L+lu$N+nu$P+au$R+ls$S+`r$S+mp$R+fp$P+fp$N+nu$P+cu$Q+ms$R+ar$R+op$Q+fp$P+fp$P+ko$Q+dn$S+bm$S+fk$S+`j$S+ii$R+nh$P+lh$N+ii$L+bj$K+dk$K+`l$K+jl$K+al$L+fk$K+ao$R+`m$S+dk$S+aj$R+ki$Q+nh$P+ou$Z+`u$Y+gs$W+ep$W+en$W+gk$W+hi$Y+oh$Z+lh$\+hi$^+dk$_+gn$_+gp$_+ds$_+`u$^+lu$\+ou$Z+ou$Z+bu$Y+ht$Y+fs$X+gp$W+gn$W+fk$X+`j$Y+ji$Y+oh$Z+lh$\+ii$]+`j$^+fk$^+dn$_+dp$_+fs$^+ht$^+au$]+lu$\+lu%G+jq%F+ou%G+jq%F0lo%O0lo%Y0lo?H0lo>^0ns#J0`s#K0jr#J0cs#I0os#I0bu#J0hu#K0dv#M0ev#O0iu#Q0cu#Q0ns#R0jr#R0gq#Q0`p#P0ln#M0gn#K0bm#J0gk#I0gi#I0ev#O0ju#P0au#Q0os#Q0kr#Q0eq#Q0ap#O0ln#M0kj#I0fk#J0gk#K0cj#N0bj#P0kj#Q0fk#R0gk#K0gi#N0ei#Q0cj#Q0fk#R0jl#R0os#V0as#W0kr#V0`s#V0ls#V0cu#V0iu#W0dv#Y0fv#[0ju#]0dt#^0hr#^0fq#]0np#[0op#Y0fv#[0ku#\0ft#]0jr#]0gq#\0np#[0np#[0cp#\0ln#^0jm#^0nk#^0hj#^0bj#]0fi#[0di#Y0aj#W0kj#V0lk#V0hl#V0cm#V0il#W0ok#V0jo#]0hm#^0lk#^0jj#]0cj#\0fi#[0fv$D0mu$C0mt$B0ks$A0kr$A0eq$B0ep$C0no$D0no$E0gp$F0gq$G0ir$H0is$H0ot$G0ou$F0fv$E0fv$D0fv$D0ou$C0ot$B0is$B0ir$B0gq$B0gp$C0no$D0no$E0fp$F0eq$G0kr$G0ks$G0mt$G0nu$F0fv$E0`u$Q0di$Q0fv$Q0fi$Q0fv$Q0cm$J0bm$T0di$O0fi$S0ev$[0ju$Y0ms$X0op$W0on$W0mk$X0bj$Y0ei$[0fi$\0bj$^0nk$_0mn%@0mp%@0ns$_0ju$^0fv$\0ev$[0ev$[0hu$Z0bu$Y0ls$Y0mp$X0mn$X0lk$Y0jj$Y0`j$Z0ei$[0fi$\0cj$]0jj$^0lk$_0nn$_0np$_0ls$_0bu$^0ku$]0fv$\0fv%G0`r%G0ev%H0`r%G8+nc!T+hb!T+`a!T*n~!T*g}!V*l|!Y*l|![*f}!\*a~!]*h!^+`a!^+ec!]+hd![+de!Y+ge!V+id!U+oa!Q+aa!P+ca!N+la!N+dc!N+kd!N+af!P+`a!T*j!T*c~!V*d}!Y*g}![*a~!]+`a!^+ib!]+lc![+hd!Y+hd!V+nc!T+jb!R+la!Q+na!O+kb!N+oc!N+af!P+fj!\+`k!]+fj!]+li!]+ni!\+ej![+ck!Z+il!Z+mn!Z+gp!Z+mp![+jq!\+jq!]+np!^+go!_+kl"@+ik"A+ej"B+li"D+ni"E+mn!Z+oo!Z+ep![+np!\+np!]+fp!^+on!_+kl"@+ni"D+dj"D+hk"D+dn"E+lo"E+np"D+hq"D+hk"D+fn"E+fp"E+lp"E+hq"D+hq"C+ax!Z+gv!Z+fu!\+lt!_+ot"@+fu"C+dv"E+bx"E+by"E+hz"E+n{"C+g|"@+d|!_+n{!\+kz!Z+ay!Z+ax!Z+ax!Z+ov!Z+ev![+nu!\+du!_+gu"@+nu"C+fv"D+lv"E+bx"E+by"E+`z"E+jz"D+f{"C+o{"@+l{!_+f{!\+iz![+cz!Z+ay!Z,mb!Z,ca!Z,b`!\+h!_+k"@,b`"C,`a"E,nb"E,nc"E,he"E,jf"C,cg"@,`g!_,jf!\,ke!Z,mc!Z,mb!Z,mb!Z,oa!Z,aa![,j`!\,``!_,c`"@,j`"C,ba"D,la"E,nb"E,nc"E,`e"E,je"D,bf"C,kf"@,hf!_,bf!\,ie![,ce!Z,mc!Z,im!Z,cl!Z,nj!\,dj!_,gj"@,nj"C,`l"E,jm"E,nn"E,dp"E,fq"C,cr"@,`r!_,fq!\,gp!Z,mn!Z,im!Z,im!Z,kl!Z,al![,jk!\,lj!_,oj"@,jk"C,bl"D,hl"E,jm"E,nn"E,lo"E,fp"D,np"C,gq"@,dq!_,np!\,ep![,oo!Z,mn!Z#cu1T#jt1R#as1Q#jq1P#go1O#gm1O#nk1P#bk1R#`k1T#nk1U#cn1W#`p1Y#bs1Z#au1[#cu1T#it1S#cs1Q#iq1Q#fo1P#fm1P#mk1Q#bk1R#cu1T#au1V#kt1W#as1X#gm1Y#nk1Z#ak1[#au1V#ht1W#cs1W#dm1Y#ok1Y#ak1[#`k1\#ml2@#cl2@#ik2@#cl1_#ol1_#mm2@#gn2@#nn2B#on2D#en2F#om2F#ml2G#ik2G#kj2F#ii2E#fh2B#ng2A#mf2@#ce1_#kc1_#on2D#gn2E#mm2F#ol2F#kk2F#ij2F#ki2D#fh2B#kd1_#ae2@#be2A#`d2D#cd2E#kd2F#ae2G#be2A#hc2D#ic2F#cd2F#ae2G#ef2G#on2M#en2L#ml2K#bj2J#fh2J#ie2K#ad2L#kc2M#hc2O#bd2P#ke2Q#eh2R#aj2R#ol2Q#fn2P#ln2O#on2M#on2M#gn2L#mm2L#ol2K#aj2K#eh2K#ke2K#id2L#cd2L#kc2M#hc2O#`d2P#jd2P#he2Q#gh2Q#cj2Q#ll2Q#nm2P#dn2P#ln2O#on2X#dn2W#ll2V#bj2U#fh2U#he2V#`d2W#kc2X#kc2Y#bd2[#je2\#dh2]#`j2]#nl2\#fn2[#on2Y#on2X#on2X#fn2W#lm2W#nl2V#`j2V#dh2V#je2V#hd2W#bd2W#kc2X#kc2Y#cd2Z#jd2[#he2\#fh2\#bj2\#ll2\#nm2[#gn2Z#on2Y#nn3C#dn3B#ol3@#aj3@#eh3@#ke3@#`d3B#jc3C#jc3D#ad3F#ie3G#gh3G#cj3G#ml3G#en3F#nn3D#nn3C#nn3C#fn3B#lm3B#ml3A#cj3@#gh3@#ie3A#hd3B#bd3B#jc3C#jc3D#cd3E#id3F#ke3F#eh3G#aj3G#ol3F#mm3F#gn3E#nn3D8+cw;L1ba9U4`j5E4`j/R1ba+A+aw)J&bm+A#`d/R#`d5E&bm9U+cw;L8866h{ @7lj,P6h{,P7oj,P6k{,P7nj,Y6j{,Y7mj,Z6i{,Z7lj,N7lj,S7mj,W7mj,\7kc,P7jc,Y6h{,N6h{,S6i{,W6i{,\7ih-I7lj-J7df-J7ih-I7`j-H7oj-E7nj-C7bj-A7hh-@7`g-@7ke-@7be-A7gd-B7mb-G7cb-H7h`-J7`g-@7je-A7ce-B7ic-G7ob-H7ab-I7h`-J6l}-J6g|-H6j{-F6i{-D6e|-B6o}-@6l-@6h{-@6o}-@7oj-R6k{-R7nj-S6j{-S7nj-N7gf-M7oj-M7nj-X7ff-X7oj-W6j{-P6k{-U6j{.H7kh.T7ff.U7nj.U7kh.T7aj.S7lj.Q7oj.O7bj.M7hh.L7ag.K7be.J7fa.J6a.K6l}.L6f|.M6k{.O6h{.Q6e|.S6o}.T7oj.O7aj.N7kh.L7`g.L7ae.K7ea.K6`.L6o}.L6e|.N6k{.O7ga.T6k{.T7fa.U6j{.U7fa.R7fa.W7ke.\6o}.\6e|.]6j{._6h{/A6e|/C6n}/D7ie.]6m}.]6d|.^6j{._7je/D6j{/D7ie/E6i{/E7je.Z7ie.]7je/B7ie/E6j{/D6j{/G7nj/L7cj/K7fi/L7aj/M7nj/L7je/L6j{/L7ie/M6i{/M7ie/J7ie/M6i{/J6j{/O7oj/[6k{/[7nj/\6j{/\7kc/[7ae/Z7ke/X7ie/W7ae/U7kc/S7da/S6l/S6o}/S6e|/U6i{/W6k{/X6e|/Z6o}/[7ie/W7`e/V7jc/T7ga/S6o/S6n}/T6d|/V6i{/W7nj/Y7nj/\6k{/[6j{/^7da0C7fa0K7nb0K7gd0J7ae0J7ke0H7je0F7ae0D7hc0C7ea0B6m0B6l}0C6e|0D6j{0F6h{0H6e|0J6n}0K7ga0J7kc0J7ae0J7je0F7`e0E7kc0C7da0C6l0C6o}0C6d|0E6j{0F6i{0\7kh1G7nj1H7ff1H7kh1G7aj1F7mj1D7lj1B7cj0_7ih0^7ag0^7he0_7ce0_7ed1A7nb1E7`b1G7j`1H7ag0^7ke0_7ae1A7jc1E7lb1G7cb1G7j`1H6n}1H6d|1G6k{1D6k{1B6f|1@6l}0_6m0^6i{0^6l}0_7mj1N6i~1N6d|1O6j{1P6k{1Q6e|1S6l}1T7lj1O6h~1O6g|1O6j{1P7he1L7ke1Q7dd1Y7hc1Y7ic1X7ed1X7`e1Y7je1Z7je1]7ce1^7fd1_7mb2@6m}2@6d|2A6k{2A7fd1_6n}1_6e|2@6k{2A6j{2B7nb1_7cb1^7fa1Z7i`1X6c1W6o}1W6e|1X6j{1Z6k{1\6e|1^6n}1_7fa1Z7h`1Y6a1X6m}1X6d|1Y6j{1Z7je2G6j{2G7ie2H6i{2H7ea2H7hc2I7be2J7ke2K7he2N7ce2N7gd2N7hc2N7ed2M7`e2N7ie2E7ie2H6i{2E6j{2J6k{2^7hh3K7gf3K7oj3K7hh3K7bj3I7mj3G7oj3E7cj3C7ih3B7bg3A7ce3@7ga3@6b3A6m}3B6g|3C6k{3E6i{3G6f|3I6l}3K6c3K7oj3E7bj3D7hh3C7ag3B7be3A7fa3A6a3B6l}3C6f|3D6k{3E7fd3Q7jc3Q7kc3P7gd3P7be3Q7ke3R7ke3U7ae3W7dd3X7ob3X6o}3X6e|3Y6h{3Z7dd3X6l}3X6g|3X6h{3Z6k{3Z7lb3X7ab3W7ga3R7k`3P6`3P6l}3P6g|3P6k{3R6h{3U6f|3V6l}3X7ga3R7j`3Q6c3P6o}3P6f|3Q6k{3R7oj3_6k~3_6f|4@6h{4B6j{4C6d|4E6o}4E7nj4@6j~4@6e|4A6h{4B7ke3]7je4C7gd4J7kc4J7hc4J7dd4J7ce4J7ie4L7he4O7be4P7ed4Q7lb4R6l}4R6g|4R6i{4S7ed4Q6m}4Q6d|4R6i{4S6h{4T7mb4Q7bb4P7ea4L7h`4J6a4I6m}4I6d|4J6i{4L6i{4N6g|4O6m}4Q7ea4L7k`4J6`4J6l}4J6g|4J6i{4L7mj4Y6i{4Y7oj4Y6k{4Y7lj4W7oj4Y6h{4W6h{4\7he5D7ce5A7ic5@7ga4_6o4_6m}5@6g|5A6h{5D6j{5E6f|5G6l}5I6o5I7ga5I7hc5I7be5G7je5E7he5D7he5D7be5B7hc5A7ea5@6m5@6l}5A6f|5B6h{5D6j{5E6g|5F6m}5H6l5I7da5I7ic5H7ce5F7je5E7ke5Q7ae5P7fd5O7ob5N7ga5N6n5O6a5P6k~5Q6i~5S6b5T6m5U7da5V7lb5V7ed5U7be5T7ie5S7ke5Q7ae5P7jc5O7j`5O6a5P6b5T7i`5U7ic5U7be5T7ed5U7`e5V7je5W7be5W7`e5V6n5O6c5N6l}5N6`}5N6k{5N6lz5Q6nz5T6cz5V6fy5W6`}5N6g|5N6h{5Q6j{5T6oz5V6fy5W6jx5W6gw5V6jv5T6iv5P6dw5N6ix5M6ey5M6lz5N6i{5P6h{6H7hm6P7bl6N7aj6M7cg6K7hc6K7h`6K6c}6K6az6M6bx6N6hv6P7bl6N7ei6M7bg6L7kc6K7k`6K6b}6L6mz6M6bx6N7jh6^7ef6_7mj6_7jh6^7`j6]7oj6Z7nj6Y7aj6W7kh6U7`g6U7ae6T7ea6T6`6U6o}6U6e|6W6j{6Y6k{6Z6d|6]6n}6^7nj6Y7`j6X7jh6V7cg6U7`e6U7da6U6c6U6n}6V6d|6X6j{6Y7fa6^6j{6^7ea6_6i{6_7ea6\7ea7A7ih7N7lj7O7df7O7ih7N7`j7M7oj7J7nj7H7bj7F7hh7E7`g7E7ke7E7be7F7gd7G7mb7L7cb7M7h`7O7`g7E7je7F7ce7G7ic7L7ob7M7ab7N7h`7O6l}7O6g|7M6j{7K6i{7I6e|7G6o}7E6l7E6h{7E6o}7E7jh7]7ef7^7mj7^7jh7]7`j7\7lj7Z7nj7X7aj7V7kh7T7ag7T7be7S7fa7S6a7T6o}7T6e|7V6j{7X6h{7Z6d|7\6n}7]6a7^7nj7X7`j7W7jh7U7cg7T7ae7T7ea7T6c7T6n}7U6d|7W6j{7X7jm8B7`l8D7bj8E7`g8G7kc8G7k`8G6`}8G6bz8E6`x8D6jv8B7`l8D7fi8E7ag8F7hc8G7h`8G6a}8F6nz8E6`x8D47bc,A7ad,A7jd,@7jd+_7cd+^7bc+^7cb+^7ja+_7ja,@7ab,A7bc,A7hd,@7ha,@7bc+^7bc,A7`c,@1or+X1cs+X1fs+X1ds+X1cs+W1or+W1kr+W1dr+X1fr+X1kr+X1or+X1es+X1er+X1or+W1or+X1mr+X.dx&D.dy&E.dx&D.dw&E.dx&D.dy&C.dx&D.dw&C0mh1P0di1P0ki1O0ii1O0di1O0oh1N0dh1O0ah1O0ch1O0dh1P0mh1P0ji1O0bh1O0oh1N0mh1P0nh1O,c|,\,j|,\,`},\,b},[,h|,[,c|,Z,h{,[,b{,[,`{,\,j{,\,c|,\,c},[,c{,[,c|,Z,c|,\,c|,[2hv*V2lv*V2cw*U2aw*U2lv*U2hv*U2dv*U2av*U2cv*U2dv*V2hv*V2bw*U2bv*U2hv*U2hv*V2jv*U2fr-\2mr-\2`s-\2bs-[2mr-[2dr-[2mq-[2jq-[2hq-\2mq-\2fr-\2cs-[2kq-[2dr-[2fr-\2gr-[2hc.H2cd.G2id.G2kd.F2ad.F2hc.F2ac.F2kb.F2ib.G2cc.G2hc.H2hd.G2hb.G2hc.F2hc.H2hc.G1am1F1hm1F1om1E1mm1E1hm1E1cm1D1hl1E1el1E1gl1E1hl1F1am1F1nm1E1fl1E1cm1D1am1F1bm1E-lt(O-gu(N-ju(N-hu(N-gu(M-nt(M-gt(M-`t(N-bt(N-gt(N-lt(O-iu(N-at(N-nt(M-lt(O-mt(N+`})B+k})A+n})A+l})A+k})@+b})@+k|)@+d|)A+f|)A+k|)A+`})B+m})A+e|)A+b})@+`})B+a})A+jx,R+ay,R+dy,R+fy,Q+ay,Q+hx,Q+ax,Q+nw,Q+lw,R+ax,R+jx,R+gy,Q+ow,Q+hx,Q+jx,R+kx,Q0mw.[0dx.[0kx.Z0ix.Z0dx.Z0ow.Y0dw.Z0aw.Z0cw.Z0dw.[0mw.[0jx.Z0bw.Z0ow.Y0mw.[0nw.Z0bs0V0fs0V0is0V0ks0U0fs0U0bs0U0nr0U0kr0U0ir0V0nr0V0bs0V0hs0V0hr0V0bs0U0bs0V0`s0V,`}*G,d}*G,k}*F,i}*F,d}*F,`}*F,l|*F,i|*F,k|*F,l|*G,`}*G,j}*F,j|*F,`}*F,`}*G,b}*F,ks,[,au,],ks,[,ar,],ks,[,au,Z,ks,[,ar,Z.am(C.hm(C.om(B.mm(B.hm(B.cm(A.hl(B.el(B.gl(B.hl(C.am(C.nm(B.fl(B.cm(A.am(C.bm(B,mc,J,dd,J,kd,I,id,I,dd,I,oc,H,dc,I,ac,I,cc,I,dc,J,mc,J,jd,I,bc,I,oc,H,mc,J,nc,I+id1N+md1N+`e1N+be1M+md1M+id1M+ed1M+bd1M+`d1N+ed1N+id1N+ce1M+cd1M+id1M+id1N+kd1M/hr'M/cs'L/fs'L/ds'L/cs'K/jr'K/cr'K/lq'L/nq'L/cr'L/hr'M/es'L/mq'L/jr'K/hr'M/ir'L+es%U+ls%U+ft%T+dt%T+ns%S+es%S+nr%S+dr%T+fr%T+lr%U+es%U+et%T+er%T+es%S+es%U+es%T.da.C.oa.B.bb.B.`b.B.oa.A.fa.A.o`.A.h`.B.j`.B.o`.B.da.C.ab.B.i`.B.fa.A.da.C.ea.B)dw-F)ow-E)bx-E)`x-E)ow-D)fw-D)ov-D)hv-E)jv-E)ov-E)dw-F)ax-E)iv-E)fw-D)dw-F)ew-E+ej&S+ek&T+ej&S+ei&T+ej&S+ek&R+ej&S+ei&R)hd,H)ce,G)fe,G)de,G)ce,F)jd,F)cd,F)lc,G)nc,G)cd,G)hd,H)ee,G)mc,G)jd,F)hd,H)id,G2ml&Y2am&Y2dm&Y2fm&X2am&X2ml&X2il&X2fl&X2dl&Y2il&Y2ml&Y2gm&X2gl&X2ml&X2ml&Y2ol&X0di.T0oi.S0bj.S0`j.S0oi.R0fi.R0oh.R0hh.S0jh.S0oh.S0di.T0aj.S0ih.S0fi.R0di.T0ei.S.ko,I.bp,I.ep,I.gp,H.bp,H.io,H.bo,H.on,H.mn,I.bo,I.ko,I.dp,I.ln,I.io,H.ko,I.ho,I*i}/T*m}/T*`~/T*b~/S*m}/S*i}/S*e}/S*b}/S*`}/T*e}/T*i}/T*c~/S*c}/S*i}/S*i}/T*k}/S,mq'T,dr'T,kr'S,ir'S,dr'S,oq'R,dq'S,aq'S,cq'S,dq'T,mq'T,jr'S,bq'S,oq'R,mq'T,nq'S*kw-T*ow-T*bx-T*`x-T*ow-S*kw-S*gw-S*`w-T*bw-T*gw-T*kw-T*ax-T*aw-T*kw-S*kw-T*iw-T,nj0U,mk0U,fl0T,fl0S,ok0R,nj0R,oi0R,fi0S,fi0T,mi0U,nj0U,dl0T,di0T,nj0R,nj0U,lj0T*ki+G*bj+G*ej+G*gj+F*bj+F*ii+F*bi+F*oh+F*mh+G*bi+G*ki+G*dj+G*lh+G*ii+F*ki+G*hi+G(ou)S(fv)S(iv)S(kv)R(fv)R(mu)R(fu)R(cu)R(au)S(fu)S(ou)S(hv)S(`u)S(mu)R(ou)S(lu)S)e.^)l.^*f`.]*d`.])n.\)e.\)n~.\)d~.])f~.])l~.^)e.^*e`.])e~.])e.\)e.^)e.](fb*W(mb*W(`c*W(bc*V(mb*V(db*V(ma*V(ja*V(ha*W(ma*W(fb*W(cc*V(ka*V(db*V(fb*W(gb*V)bu(Y)iu(Y)cv(X)av(X)ku(W)bu(W)kt(W)at(X)ct(X)it(Y)bu(Y)bv(X)bt(X)bu(W)bu(Y)bu(X+fi)D+mi)D+`j)D+bj)C+mi)C+di)C+mh)C+jh)C+hh)D+mh)D+fi)D+cj)C+kh)C+di)C+fi)D+gi)C'fu+^'mu+^'`v+^'bv+]'mu+]'du+]'mt+]'jt+]'ht+^'mt+^'fu+^'cv+]'kt+]'du+]'fu+^'gu+]-ak)N-hk)N-bl)M-`l)M-jk)L-ak)L-jj)L-`j)M-bj)M-hj)N-ak)N-al)M-aj)M-ak)L-ak)N-ak)M0ee*B0le*B0cf*A0af*A0le*A0ge*@0ld*A0id*A0kd*A0ld*B0ee*B0bf*A0jd*A0ge*@0ee*B0fe*A+e(Q+l(Q,c`(P,a`(P+l(P+g(O+l~(P+i~(P+k~(P+l~(Q+e(Q,b`(P+j~(P+g(O+e(Q+f(P,ge-G,ne-G,af-G,cf-F,ne-F,ee-F,nd-F,kd-F,id-G,nd-G,ge-G,`f-G,hd-G,ee-F,ge-G,de-G+ej&S+ek&T+ej&S+ei&T+ej&S+ek&R+ej&S+ei&R'gy)N'ny)N'dz)N'fz)M'ly)M'gy)L'lx)M'fx)M'dx)N'nx)N'gy)N'gz)M'gx)M'gy)L'gy)N'gy)M'lh,Q'`i,Q'gi,P'ei,P'`i,P'lh,P'hh,P'eh,P'gh,P'hh,Q'lh,Q'fi,P'fh,P'lh,P'lh,Q'nh,P&`n._&kn.^&nn.^&ln.^&kn.]&bn.]&km.]&dm.^&fm.^&km.^&`n._&mn.^&em.^&bn.]&`n._&an.^%bk,N%ik,N%lk,N%nk,M%ik,M%`k,M%ij,M%fj,M%dj,N%ij,N%bk,N%ok,M%gj,M%`k,M%bk,N%ck,M*ih&X*`i&X*ji&W*hi&W*bi&V*ih&V*bh&V*hg&W*jg&W*`h&X*ih&X*ii&W*ig&W*ih&V*ih&X*ih&W*ke-G*bf-G*hf-G*jf-F*`f-F*ke-E*`e-F*jd-F*hd-G*be-G*ke-G*kf-F*kd-F*ke-E*ke-G*ke-F/`z*^/kz*]/nz*]/lz*]/kz*\/bz*\/ky*\/dy*]/fy*]/ky*]/`z*^/mz*]/ey*]/bz*\/`z*^/az*]$d&\$o&[%b`&[%``&[$o&Z$f&Z$o~&Z$h~&[$j~&[$o~&[$d&\%a`&[$i~&[$f&Z$d&\$e&[2ke,O2bf,O2ef,O2gf,N2bf,N2ie,N2be,N2od,N2md,O2be,O2ke,O2df,O2ld,O2ie,N2ke,O2he,O&kg*G&bh*G&eh*G&gh*F&bh*F&ig*F&bg*F&of*F&mf*G&bg*G&kg*G&dh*G&lf*G&ig*F&kg*G&hg*G)lc'K)kd'K)lc'K)cc'K)lc'K)id'J)lc'K)ac'J*je,H*af,H*kf,G*if,G*cf,F*je,F*ce,F*id,G*kd,G*ae,H*je,H*jf,G*jd,G*je,F*je,H*je,G,cs+N,js+N,ms+N,os+M,js+M,as+M,jr+M,gr+M,er+N,jr+N,cs+N,ls+N,dr+N,as+M,cs+N,`s+N%ii,A%mi,A%`j,A%bj,@%mi,@%ii,@%ei,@%bi,@%`i,A%ei,A%ii,A%cj,@%ci,@%ii,@%ii,A%ki,@(gy1M(ny1M(dz1M(fz1L(ly1L(gy1K(lx1L(fx1L(dx1M(nx1M(gy1M(gz1L(gx1L(gy1K(gy1M(gy1L%hf)R%cg)Q%fg)Q%dg)Q%cg)P%jf)P%cf)P%le)Q%ne)Q%cf)Q%hf)R%eg)Q%me)Q%jf)P%hf)R%if)Q/do(P/cp(P/do(P/kn(P/do(P/ap(O/do(P/in(O+fj+C+jj+C+mj+C+oj+B+jj+B+fj+B+bj+B+oi+B+mi+C+bj+C+fj+C+lj+C+li+C+fj+B+fj+C+dj+C)ew(\)lw(\)cx([)ax([)lw([)gw(Z)lv([)iv([)kv([)lv(\)ew(\)bx([)jv([)gw(Z)ew(\)fw(['kz/L'b{/L'h{/L'j{/K'`{/K'kz/J'`z/K'jy/K'hy/L'bz/L'kz/L'k{/K'ky/K'kz/J'kz/L'kz/K.cs-M.js-M.ms-M.os-L.js-L.as-L.jr-L.gr-L.er-M.jr-M.cs-M.ls-M.dr-M.as-L.cs-M.`s-M*o'A+o`'B*o'A*o~'B*o'A+o`'@*o'A*o~'@%h~0S%c0R%f0R%d0R%c0Q%j~0Q%c~0Q%l}0R%n}0R%c~0R%h~0S%e0R%m}0R%j~0Q%h~0S%i~0R*aw(B*hw(B*ow(A*mw(A*hw(A*cw(@*hv(A*ev(A*gv(A*hv(B*aw(B*nw(A*fv(A*cw(@*aw(B*bw(A+n}&F+e~&F+o~&E+m~&E+g~&D+n}&D+g}&D+m|&E+o|&E+e}&F+n}&F+n~&E+n|&E+n}&D+n}&F+n}&E)he0J)cf0I)ff0I)df0I)cf0H)je0H)ce0H)ld0I)nd0I)ce0I)he0J)ef0I)md0I)je0H)he0J)ie0I%em,J%im,J%lm,J%nm,I%im,I%em,I%am,I%nl,I%ll,J%am,J%em,J%om,I%ol,I%em,I%em,J%gm,I)f`)U)m`)U)`a)U)ba)T)m`)T)d`)T(m)T(j)T(h)U(m)U)f`)U)ca)T(k)T)d`)T)f`)U)g`)T0d}(G0o}(F0b~(F0`~(F0o}(E0f}(E0o|(E0h|(F0j|(F0o|(F0d}(G0a~(F0i|(F0f}(E0d}(G0e}(F,o|+U,f}+U,i}+U,k}+T,f}+T,m|+T,f|+T,c|+T,a|+U,f|+U,o|+U,h}+U,`|+U,m|+T,o|+U,l|+U2km2C2om2C2bn2C2`n2C2om2B2km2B2gm2B2`m2C2bm2C2gm2C2km2C2an2C2am2C2km2B2km2C2im2C+jf-W+ag-W+dg-W+fg-V+ag-V+hf-V+af-V+ne-V+le-W+af-W+jf-W+gg-V+oe-V+hf-V+jf-W+kf-V)hz'Z)lz'Z)c{'Y)a{'Y)lz'Y)hz'Y)dz'Y)az'Y)cz'Y)dz'Z)hz'Z)b{'Y)bz'Y)hz'Y)hz'Z)jz'Y-gs.M-ks.M-ns.M-ls.M-ks.L-gs.L-cs.L-lr.M-nr.M-cs.M-gs.M-ms.M-mr.M-gs.L-gs.M-es.M+lb.^+`c.^+gc.]+ec.]+`c.]+lb.]+hb.]+eb.]+gb.]+hb.^+lb.^+fc.]+fb.]+lb.]+lb.^+nb.])is)S)`t)S)gt)R)et)R)`t)R)ks)Q)`s)R)mr)R)or)R)`s)S)is)S)ft)R)nr)R)ks)Q)is)S)js)R+`j&S+ek&T+`j&S+mh&T+`j&S+gk&Q+`j&S+oh&Q/lm8D/gn8C/mn8C/on8B/en8B/lm8B/em8B/ol8B/ml8C/gm8C/lm8D/ln8C/ll8C/lm8B/lm8D/lm8C'ef8['lf8['cg8Z'ag8Z'lf8Z'gf8Y'le8Z'ie8Z'ke8Z'le8['ef8['bg8Z'je8Z'gf8Y'ef8['ff8Z1mg5B1dh5B1kh5A1ih5A1dh5A1og5@1dg5A1ag5A1cg5A1dg5B1mg5B1jh5A1bg5A1og5@1mg5B1ng5A-gf4Q-nf4Q-ag4Q-cg4P-nf4P-ef4P-ne4P-ke4P-ie4Q-ne4Q-gf4Q-`g4Q-he4Q-ef4P-gf4Q-df4Q0ff=N0mf=N0`g=N0bg=M0mf=M0df=M0me=M0je=M0he=N0me=N0ff=N0cg=M0ke=M0df=M0ff=N0gf=M0bk7Z0ik7Z0cl7Y0al7Y0kk7X0bk7X0kj7X0aj7Y0cj7Y0ij7Z0bk7Z0bl7Y0bj7Y0bk7X0bk7Z0bk7Y,d}5J,h}5J,o}5I,m}5I,h}5I,d}5I,`}5I,m|5I,o|5I,`}5J,d}5J,n}5I,n|5I,d}5I,d}5J,f}5I-o{=Z-f|=Z-i|=Z-k|=Y-f|=Y-m{=Y-f{=Y-c{=Y-a{=Z-f{=Z-o{=Z-h|=Z-`{=Z-m{=Y-o{=Z-l{=Z*ca3S*ja3S*`b3S*bb3R*ha3R*ca3Q*h`3R*b`3R*``3S*j`3S*ca3S*cb3R*c`3R*ca3Q*ca3S*ca3R1j}>D1a~>D1k~>C1i~>C1c~>B1j}>B1c}>B1i|>C1k|>C1a}>D1j}>D1j~>C1j|>C1j}>B1j}>D1j}>C-lz5H-g{5G-j{5G-h{5G-g{5F-nz5F-gz5F-`z5G-bz5G-gz5G-lz5H-i{5G-az5G-nz5F-lz5H-mz5G/dk=L/hk=L/ok=K/mk=K/hk=K/dk=K/`k=K/mj=K/oj=K/`k=L/dk=L/nk=K/nj=K/dk=K/dk=L/fk=K'gx7^'nx7^'ay7^'cy7]'nx7]'ex7]'nw7]'kw7]'iw7^'nw7^'gx7^'`y7^'hw7^'ex7]'gx7^'dx7^/cy8Z/jy8Z/my8Z/oy8Y/jy8Y/ay8Y/jx8Y/gx8Y/ex8Z/jx8Z/cy8Z/ly8Z/dx8Z/ay8Y/cy8Z/`y8Z1ch5J1gh5J1jh5J1hh5J1gh5I1ch5I1og5I1hg5J1jg5J1og5J1ch5J1ih5J1ig5J1ch5I1ch5J1ah5J+g~;S+n~;S+a;S+c;R+n~;R+e~;R+n};R+k};R+i};S+n};S+g~;S+`;S+h};S+e~;R+g~;S+d~;S(`g<](kg<\(ng<\(lg<\(kg<[(bg<[(kf<[(df<\(ff<\(kf<\(`g<](mg<\(ef<\(bg<[(`g<](ag<\+er9]+lr9]+cs9\+as9\+lr9\+gr9[+lq9\+iq9\+kq9\+lq9]+er9]+bs9\+jq9\+gr9[+er9]+fr9\.dw>O.cx>O.dw>O.kv>O.dw>O.ax>N.dw>O.iv>N,cn4S,jn4S,mn4S,on4R,jn4R,an4R,jm4R,gm4R,em4S,jm4S,cn4S,ln4S,dm4S,an4R,cn4S,`n4S$`x5E$kx5D$nx5D$lx5D$kx5C$bx5C$kw5C$dw5D$fw5D$kw5D$`x5E$mx5D$ew5D$bx5C$`x5E$ax5D(a~7](h~7](o~7\(m~7\(h~7\(c~7[(h}7\(e}7\(g}7\(h}7](a~7](n~7\(f}7\(c~7[(a~7](b~7\%hy7_%cz7^%fz7^%dz7^%cz7]%jy7]%cy7]%lx7^%nx7^%cy7^%hy7_%ez7^%mx7^%jy7]%hy7_%iy7^1gu:Y1nu:Y1av:Y1cv:X1nu:X1eu:X1nt:X1kt:X1it:Y1nt:Y1gu:Y1`v:Y1ht:Y1eu:X1gu:Y1du:Y,`o['lr>['cs>Z'as>Z'lr>Z'gr>Y'lq>Z'iq>Z'kq>Z'lq>['er>['bs>Z'jq>Z'gr>Y'er>['fr>Z+ag=J+hg=J+og=I+mg=I+hg=I+cg=H+hf=I+ef=I+gf=I+hf=J+ag=J+ng=I+ff=I+cg=H+ag=J+bg=I2iu9O2`v9O2gv9N2ev9N2`v9N2ku9M2`u9N2mt9N2ot9N2`u9O2iu9O2fv9N2nt9N2ku9M2iu9O2ju9N'gi8N'ni8N'aj8N'cj8M'ni8M'ei8M'nh8M'kh8M'ih8N'nh8N'gi8N'`j8N'hh8N'ei8M'gi8N'di8N(fj8T(mj8T(`k8T(bk8S(mj8S(dj8S(mi8S(ji8S(hi8T(mi8T(fj8T(ck8S(ki8S(dj8S(fj8T(gj8S,dg=O,og=N,bh=N,`h=N,og=M,fg=M,of=M,hf=N,jf=N,of=N,dg=O,ah=N,if=N,fg=M,dg=O,eg=N-`x5E-kx5D-nx5D-lx5D-kx5C-bx5C-kw5C-dw5D-fw5D-kw5D-`x5E-mx5D-ew5D-bx5C-`x5E-ax5D&a|3C&h|3C&o|3B&m|3B&h|3B&c|3A&h{3B&e{3B&g{3B&h{3C&a|3C&n|3B&f{3B&c|3A&a|3C&b|3B1cn7F1gn7F1jn7F1hn7F1gn7E1cn7E1om7E1hm7F1jm7F1om7F1cn7F1in7F1im7F1cn7E1cn7F1an7F%bvB+ar>B+dr>B+fr>A+ar>A+mq>A+iq>A+fq>A+dq>B+iq>B+mq>B+gr>A+gq>A+mq>A+mq>B+oq>A0m~;E0d;E0k;D0i;D0d;D0o~;C0d~;D0a~;D0c~;D0d~;E0m~;E0j;D0b~;D0o~;C0m~;E0n~;D%d}2W%o}2V%b~2V%`~2V%o}2U%f}2U%o|2U%h|2V%j|2V%o|2V%d}2W%a~2V%i|2V%f}2U%d}2W%e}2V'aj5_'ej5_'hj5_'jj5^'ej5^'aj5^'mi5^'ji5^'hi5_'mi5_'aj5_'kj5^'ki5^'aj5^'aj5_'cj5^0e}8R0l}8R0c~8Q0a~8Q0l}8Q0g}8P0l|8Q0i|8Q0k|8Q0l|8R0e}8R0b~8Q0j|8Q0g}8P0e}8R0f}8Q*oe4F*cf4F*ff4F*df4F*cf4E*oe4E*ke4E*de4F*fe4F*ke4F*oe4F*ef4F*ee4F*oe4E*oe4F*me4F:/j~ ]/bt Z/j~ ]/`t ^/h~ ^/bu ^/j~!D/`t ^/j~!D/bt!A/h~!E/`t!B/h~ \/h~ ^/j~!D/j~!F/`t Y/`t \/`t!@/bt!C/b{!N/jw!M/hu!M/ht!M/bt!M/`t!O/`u!P/bv!P/`{!O/hw!N/ju!M/jt!M/`t!N/jw!M/by!M/hz!M/`{!L/`{!K/jz!I/by!H/hw!H/`v!H/bu!H/ht!I/`t!J/`t!K/ht!L/`v!M/jw!M/`{!K/hz!J/`y!I/jw!H/ju!H/ht!I/b{!Y/bt!W/hr!W/`q!V/jp!T/hp!S/`q!R/jq!Q/br!Q/hr!R/br!R/hq!R/`{!Y/`t!W/jr!V/bq!U/jp!T/hw!X/`y!X/jz!W/b{!V/b{!U/hz!T/`y!S/jw!R/bv!R/`u!S/jt!S/bt!T/bt!U/jt!V/bv!W/hw!X/b{!U/jz!T/by!S/hw!S/hu!S/jt!S/by![/`z!\/`{!]/b{!^/hz!_/hy!_/jw!^/bt!]/`{!^/jz!^/jy!^/hw!^/`t!]/jw!^/jy!_/jz"@/b{"A/b{"B/jz"C/`z"D/`y"D/`v"C/ht"C/bt"C/b{"B/bz"C/by"C/bv"B/jt"B/`t"C/bt"D/bu"E/`v"F/h~"K/b~"J/h}"K/b~"K/h~"K/`y"G/bz"G/b{"H/`{"J/jz"J/by"J/bv"I/jt"I/`t"J/b{"I/hz"J/`y"J/`v"I/ht"I/bt"I/`t"K/`u"L/bv"L/j~"Q/jw"O/hu"O/ht"O/bt"O/`t"Q/`u"R/bv"R/h~"R/hw"P/ju"O/jt"O/`t"P/b{"N/`{"S/by"T/`z"U/`{"V/b{"W/hz"X/`y"X/`v"W/`u"W/`t"X/`{"W/jz"W/by"W/bv"V/bu"V/ht"W/`t"X/`t"Y/ht"Z/hu"[/hw"\/`{"]/hw"\/ju"[/jt"[/`t"\/bt"]/bu"^/`v"_/b{"]/jw"\/hu"\/ht"\/bt"\/j~#H/jw#F/hu#F/ht#F/bt#F/`t#H/`u#I/bv#I/h~#I/hw#G/ju#F/jt#F/`t#G/jw#F/by#F/hz#F/`{#E/`{#D/jz#B/by#A/hw#A/`v#A/bu#A/ht#B/`t#C/`t#D/ht#E/`v#F/jw#F/`{#D/hz#C/`y#B/jw#A/ju#A/ht#B/h~#G/h~#I/hv#L/`w#N/jw#O/hx#Q/jy#Q/hz#Q/`{#P/b{#N/hz#M/`y#L/jw#K/bv#K/`u#L/jt#L/bt#M/bt#N/ht#P/hu#Q/b{#N/jz#M/by#L/hw#L/hu#L/jt#L.` ^/j` ]/ia \/ka Z/j` Y.` Y.j} Y.k| Z.i| \.j} ].` ^/ja [.j| [.` Y.` ^.b [.my!N/ed!T/oc!R/ob!Q/ga!P.m!P.o}!O.g|!O.mz!P.gz!P.oy!Q.oy!R.ez!T.e{!U.m|!V.g~!V/e`!W/ma!W/gc!V/mc!V/ed!U/ed!T/ed!T/mc!S/mb!R/ea!Q.o!P.m}!P.e|!P.oz!P.oy!Q.oy!R.gz!S.g{!T.o|!U.e~!V/g`!V/oa!V/ec!V/ed!U.hg ^.bi ].aj \.cj Z.bi Y.hg Y.bf Y.ce Z.ae \.bf ].hg ^.bj [.be [.hg Y.hg ^.jg [.eb!N.mj!T.gb!Q.ml!U.eb!R.ml!U.gk!S.ej!R.mi!Q.gk!T.gj!R.mi!Q-cp ]-eq ]-er \-gr Z-gq Y-ap Y-on Y-om Z-mm \-mn ]-cp ]-fr [-nm [-ap Y-cp ]-bp [-mj!N-gs!Q-mr!R-gr!Q-mr!Q-es!Q-gt!Q-mt!R-gu!S-eu!U-ot!V-ms!W-mr!W-oq!V-op!U-mo!T-mn!R-om!P-ol!O-oj!N-eu!U-mt!V-os!V-or!V-mq!V-mp!U-mn!R-mk!O-gl!O-gl!P-ek!S-gk!T-ok!U-ml!V-gl!P-mj!S-oj!T-gk!U-ml!V,ox ],az ],a{ \,c{ Z,cz Y,mx Y,kw Y,kv Z,iv \,iw ],ox ],b{ [,jv [,mx Y,ox ],nx [,is!N,c|!Q,i{!R,c{!Q,i{!Q,a|!Q,c}!Q,i}!R,c~!S,a~!U,k}!V,i|!W,i{!W,kz!V,iy!U,cy!S,a~!U,i}!V,k|!V,k{!V,iz!V,iy!U,cy!R,cy!S,ix!U,cx!U,aw!V,iu!V,kt!U,at!U,ks!S,ks!Q,at!P,kt!O,iu!O,av!O,kv!O,av!P,ku!O,cy!S,kx!T,ax!U,cw!U,ku!U,it!U,ct!T,ks!S,ja ],lb ],hc \,hc [,lb Z,ja Y,d` Z+h [+h \,d` ],ja ],jc [+j [,ja Y,ja ],ja [+e|!N,ef!V+e|!S,of!V+g|!S,of!V+e!O+e!W+jj ]+lk ]+hl \+hl [+lk Z+jj Y+di Z+hh [+hh \+di ]+jj ]+jl [+jh [+jj Y+jj ]+jj [+ee!N+oo!R+mj!P+oo!R+oo!W+go!R+eo!U+oo!W+mj!P+gk!P+mk!R+ok!S+ek!U+oj!U+mi!V+eh!V+of!U+oe!T+ee!S+ge!Q+me!P+gf!O+eg!O+mg!O+gh!O+mg!P+gg!O+ok!S+gk!T+mj!U+oi!U+gh!U+mf!U+me!T+ee!S*is ]*ht ]*du \*du [*ht Z*ks Y*hr Z*lq [*lq \*hr ]*is ]*fu [*nq [*ks Y*is ]*js [*en!N*gw!V*mv!V*gv!V*mv!W*ew!W*gx!V*ox!U*mx!T*gx!R*gw!Q*ou!P*et!P*gr!O*gp!O*eo!P*on!P*gn!Q*en!S*on!T*oo!U*mp!V*er!V*gs!U*ms!U*et!T*gt!R*os!Q*or!P*mq!P*mx!T*ex!S*ew!R*mu!Q*gt!P*er!P*mo!P*on!P*en!S*mn!T*mo!U*op!U*or!U*ms!U)m| ])l} ])h~ \)h~ [)l} Z)o| Y)l{ Z)`{ [)`{ \)l{ ])m| ])j~ [)b{ [)o| Y)m| ])n| [)iw!N*ab!Q)a!P*cb!W*i`!W)a!V)c|!S)kz!R)iy!R)kw!Q)a!V)a|!S)iz!R)ky!Q)iw!Q*k`!P*ab!R*ab!S*k`!U*aa!Q*ia!R*ia!S*k`!U*k`!V*aa!W*cb!W)`f ])cg \)hg \)hg [)ag Z)`f Z)ae Z)hd [)hd \)ce \)`f ])jg [)jd [)`f Z)`f ])bf [)m`!N)gk!S)mj!R)gj!Q)ei!Q)mg!Q)of!Q)gf!R)ef!T)mf!V)gg!V)eh!W)mi!W)oj!V)ek!U)gk!S)gk!S)oj!R)ej!R)gi!Q)og!Q)mf!R)gf!R)ef!T)of!U)eg!V)gh!V)oi!V)mj!V)ek!U)gf!R)oe!P)od!O)mc!O)eb!O)ga!O)m`!Q)m`!S)ea!U)oa!U)mb!V)ed!V)ge!U)me!U)ef!T)gf!R)me!Q)md!P)oc!O)gb!O)ea!P)m`!Q)m`!S)ga!T)ma!U)ob!U)od!U)me!U(ho ](kp \(`q \(`q [(ip Z(ho Z(in Z(`n [(`n \(kn \(ho ](bq [(bn [(ho Z(ho ](jo [(ej!N(gq!V(ep!V(eo!U(mn!T(on!R(go!Q(mo!Q(op!P(gr!P(es!Q(et!R(ot!S(mt!U(et!V(os!V(mr!W(mp!W(on!V(em!V(mk!U(mj!T(gj!R(ej!Q(mj!P(ok!O(gl!O(ml!P(gl!P(mk!P(go!Q(ep!Q(er!Q(gs!Q(gt!R(ot!S(et!V(gs!V(op!V(mn!V(gm!U(ok!T(oj!S(gj!R'cy \'ny \'dz \'dz ['ny Z'ay Z'fx Z'lw ['lw \'fx \'cy \'fz ['nw ['ay Z'cy \'by ['e|!J'os!G'e~!K'ms!H'e~!K'o|!I'm{!H'e{!G'o|!J'o{!H'e{!G'g~!T'm}!S'm|!R'e{!Q'oy!P'mw!P'ev!P'ot!P'et!Q'ms!R'ms!S'gt!T'gu!U'ov!V'ex!W'gz!W'o{!W'e}!W'o}!V'g~!U'g~!T'g~!T'o}!S'o|!R'g{!Q'my!Q'ow!P'gv!P'mt!Q'ms!R'ms!S'et!T'eu!U'mv!V'gx!V'ez!W'm{!W'g}!V'g~!U'ob \'jc \'`d \'`d ['jc Z'mb Z'bb Z'ha ['ha \'bb \'ob \'bd ['ja ['mb Z'ob \'nb ['af!J&k}!G'ah!K&i}!H'ah!K'kf!I'ie!H'ae!G'kf!J'ke!H'ae!G'cf!T&i}!R'ch!U&k}!R'ch!U'if!T'ke!R'ce!Q'if!U'ie!S'ce!Q&jl \&am \&km [&im [&cm Z&jl Z&cl Z&ik [&kk [&al \&jl \&jm [&jk [&jl Z&jl \&jl [&mo!J&gg!G&mq!K&eg!H&mq!K&gp!I&eo!H&mn!G&gp!J&go!H&mn!G&mo!R&go!R&mn!R&go!Q&oo!Q&mp!R&gq!R&mq!T&oq!U&eq!W&gp!W&go!W&en!W&em!V&gl!T&gk!R&ej!Q&ei!P&eg!O&oq!U&gq!V&ep!W&eo!W&gn!V&gm!U&gk!R&gh!O&mh!P&mh!Q&og!S&mg!U&eh!V&gi!V&mh!Q&gg!S&eg!U&mg!V&gi!V%jv \%aw \%kw [%iw [%cw Z%jv Z%cv Z%iu [%ku [%av \%jv \%jw [%ju [%jv Z%jv \%jv [%my!J%gq!G%m{!K%eq!H%m{!K%gz!I%ey!H%mx!G%gz!J%gy!H%mx!G%my!R%gy!R%mx!R%gy!Q%oy!Q%mz!R%g{!R%m{!T%o{!U%e{!W%gz!W%gy!W%ex!W%gw!U%mv!T%o{!U%g{!V%ez!W%ey!W%gx!V%gw!U%mv!S%mv!T%gv!U%mu!V%ot!V%gs!V%er!V%oq!U%eq!T%eq!R%oq!P%er!P%gs!O%os!O%et!P%os!P%es!P%mv!T%ev!U%ou!U%mt!V%es!V%gr!U%mq!U%eq!T%i` \%`a \%ga [%ea [%`a [%k` Z%`` [$m [$o [%`` \%i` \%fa [$n [%k` Z%i` \%j` [%mc!J$g{!G%me!K$e{!H%me!K%gd!I%ec!H%mb!G%gd!J%gc!H%mb!G%ge!V$g{!S%me!W$e{!T%me!W$g~!O$g~!W$mj \$dk \$kk [$ik [$dk [$oj Z$dj [$aj [$cj [$dj \$mj \$jk [$bj [$oj Z$mj \$nj [$an!J$ke!G$ap!K$ie!H$ap!K$kn!I$im!H$am!G$kn!J$km!H$am!G$ap!S$ck!P$ap!S$ap!X$io!S$ko!U$ap!X$ck!P$ik!Q$cl!R$al!T$kk!U$ak!V$cj!V$kh!V$ag!V$af!U$ke!S$ie!R$cf!P$if!P$kg!O$ch!O$ih!P$ch!P$ig!P$al!T$ik!U$ck!U$aj!V$ih!V$cg!U$cf!T$ke!S#`u \#du \#ku [#iu [#du [#`u [#lt [#it [#kt [#lt \#`u \#ju [#jt [#`u [#`u \#bu [#ex!J#oo!G#ez!K#mo!H#ez!K#ox!I#mw!H#ew!G#ox!J#ow!H#ew!G#mx!W#gx!V#mw!W#gx!W#ox!W#my!W#ez!V#gz!T#my!S#mx!R#ew!Q#ou!P#ms!P#mq!P#op!P#ep!Q#mo!R#oo!S#ep!U#eq!V#gr!V#os!V#mt!V#gu!U#ou!T#mu!S#eu!R#et!Q#gs!P#gz!T#oy!S#ox!R#gw!Q#mu!Q#os!P#gq!P#ep!Q#oo!S#gp!T#gq!U#er!V#et!V#gu!U8: am-O cn-N co-M ko-L ko-J co-I cn-H am-H kk-G ci-G ig-H kf-H ke-I ce-J ce-L ke-M kf-N ig-O ko-U ko-T co-S im-S ae-S cl-Q al-U io-[ ae-W io-[ ae-_ kh-X kh-] ce.I an.R ao.Q ko.O ko.M ao.L an.K am.K cl.K ik.L ak.M aj.P ii.Q ci.Q ah.R if.R ie.Q ce.O ce.M ie.L if.K ko.U ce.U ko.\ kh.U ak.X ce.\ ko.^ kj/B ce/B ko/F kj/B io/I ae/I io/I ae/M io/Q ae/M io/Q ae/Q ko/W ce/S ko/W ce/[ ih/U ih/Z io/^ ae/^ io/^ ko0B ao0D kn0D im0E al0E ck0D ij0D cj0B aj/^ ce0P io0W ih0R kh0Y io0W ae0W af0] ke0\ ae0] ke0] af0] cn1G ao1G ko1E ko1D ao1C im1B ck1A kh1A if1B ie1C ce1D ae1E ke1F kf1G ah1H ih1H cj1G ck1F ik1E kk1D ak1C aj1B kh1A ce1S cl1U ce1U ci1U ij1V ik1W al1X cl1Y al1\ ag1\ ke1\ ce1] ae1_ ie2@ cg2A cl2A ce2A cl2E ce2E cj2E ik2G al2H cl2I kk2J aj2K ae2K ae2W ko2] kh2X ih3@ ko2] ce2] ae3K io3M ae3M io3M ae3T io3T ae3T al3Z ik3Y ij3X ci3W ch3W if3X ie3Y ae3Z ce3[ ke3\ kf3] ah3^ ai3^ kj3] kk3\ cl3[ al3Z cl4@ ce4C cl4F ce4C ce4Q km4T cn4U io4W ae4W cl5C ij5C ii5B ci5@ ai5@ ki4^ kj4] al4] il4] cn4] co4^ io5@ ko5@ ao5B an5C cl5C ki5C ag5C ie5B ce5@ ce4_ ie4^ kf4] cl5M ij5M ii5L ci5J ai5J ki5H kj5G al5G il5G cn5G co5H io5J ko5J ao5L an5M cl5M ki5M ag5M ie5L ce5J ce5I ie5H kf5G cl5W ij5W ii5V ci5T ai5T ki5R kj5Q al5Q il5Q cn5Q co5R io5T ko5T ao5V an5W cl5W ki5W ag5W ie5V ce5T ce5S ie5R kf5Q ce6C km6F cn6G io6I ae6I io6T ih6O kh6V io6T ae6T al6Z kk6Y ak6Z kk6Z al6Z af6Z ke6Y ae6Z ke6Z af6Z io6_ ko7D kk7A ik7C ak7D kj7D ai7E ah7E kf7D ke7C ae7B ce7@ ie6_ cf6^ ag6^ io7I ko7N kk7K ik7M ak7N kj7N ai7O ah7O kf7N ke7M ae7L ce7J ie7I cf7H ag7H86db @5`i @07070100037681000081a40000000000000000000000014cc7b61700003f2f000000b500010002ffffffffffffffff0000002900000000root/usr/local/share/tek2plot/skymap.tek99"`k)B"ck;T5cc;T5`c)B"`k)B8:"ck9S"oo9T5bc;T4f~;S"be9@!j{9@"`f9A!h{9A"`f9A!j~8[!j~9C!h{8_!j{9B"mh9F"m`9F"oh9F"o`9F"ce9F"ne9G"bf9H"af9I"ne9J"ce9J"o`9J"af9I"le9J"be9J"n`9J"mh9E"oh9F"m`9E"o`9G"m`9I"l`9L"ce9R!k{9R"af9S!i{9S"af9S!k~9M!k~9U!i{9Q!k{9T"af9["ke9Y"cd9X"ia9X"a`9X!k}9X!c|9Y!i{9[!i{9\!c|9]!k}9^"a`9_"ia9_"cd9^"ke9]"af9\"af9["af9["ie9Z"ce9Y"ad9Y"ka9X"c`9X!i}9Y!k|9Y!a|9Z!i{9[!i{9\!a|9]!k|9]!i}9^"c`9^"ka9^"ad9^"ce9]"ie9]"af9\"bf:B"n`:B"`f:C"l`:C"`e:C"oe:C"cf:D"bf:E"oe:F"`e:G"l`:G"bf:E"me:F"ce:F"o`:F"`e:G"oe:G"`f:I"cf:I"oe:J"ae:K"m`:K"cf:I"ne:J"ce:J"o`:J"bf:A"`f:C"n`:A"l`:D"n`:E"m`:H"o`:I"m`:L"ck6_"bp7@5ac8L4b~8K"af6Y"aa6X"aa6X"ab6Y"kb6Z"ib6\"cb6]"ca6^!i6_!i~6_!c}6^!c|6]!i{6\!k{6Z!a|6Y!k|6X!i}6X!a~6X!k~6X!a~6Y!k}6X"ib6\"ab6]"aa6^!k6^!k~6^!a}6^!a|6]!i{6\"af6Y"af6^"ie6Y"ke6["af6^"nh7B"n`7B"lh7C"l`7C"`e7C"oe7C"cf7D"bf7E"oe7F"`e7G"l`7G"bf7E"me7F"ce7F"o`7F"nh7A"lh7C"n`7A"l`7D"n`7E"m`7H"ck4L"dp4M5ac5A4l}5A"`f3V"`a3U"`a3U"`b3V"jb3W"hb3Y"bb3Z"ba3[!h3\!h~3\!b}3[!b|3Z!h{3Y!j{3W!`|3V!j|3U!h}3U!`~3U!j~3U!`~3V!j}3U"hb3Y"`b3Z"`a3[!j3[!j~3[!`}3[!`|3Z!h{3Y"`f3V"`f3["he3V"je3X"`f3["mh3_"m`3_"oh3_"o`3_"ce3_"ne4@"bf4A"af4B"ne4C"ce4C"o`4C"af4B"le4C"be4C"n`4C"mh3^"oh3_"m`3^"o`4@"m`4B"l`4E"cd4G"ic4H"cc4G"ic4G"ad4G"ce4G"ie4H"cf4I"cf4K"ie4M"ce4M"ad4N"ac4N"cb4M"aa4L"c`4I!k4H!k~4G!a}4G!i{4G"cf4K"ke4L"ae4M"cd4M"cc4M"ab4M"ca4K"c`4I!i|4G!c}4G!c}4H!a|4K!c|4L!k|4M!a}4N!c}4H!i{4K!i{4M!c|4M!a}4N!a~4N"af4T"ke4R"cd4Q"ia4Q"a`4Q!k}4Q!c|4R!i{4T!i{4U!c|4V!k}4W"a`4X"ia4X"cd4W"ke4V"af4U"af4T"af4T"ie4S"ce4R"ad4R"ka4Q"c`4Q!i}4R!k|4R!a|4S!i{4T!i{4U!a|4V!k|4V!i}4W"c`4W"ka4W"ad4W"ce4V"ie4V"af4U"bf4["n`4["`f4\"l`4\"`e4\"oe4\"cf4]"bf4^"oe4_"`e5@"l`5@"bf4^"me4_"ce4_"o`4_"`e5@"oe5@"`f5B"cf5B"oe5C"ae5D"m`5D"cf5B"ne5C"ce5C"o`5C"bf4Z"`f4\"n`4Z"l`4]"n`4^"m`5A"o`5B"m`5E"bk1Z"jp1Z5cc1T4k}1T"cf1C"ca1B"ca1B"cb1C"ib1E"kb1F"ab1H"aa1I!k1I!k~1I!a}1I!a|1H!k{1F!i{1E!c|1C!i|1C!k}1B!c~1B!i~1C!c~1C!i}1C"kb1F"cb1G"ca1H!i1I!i~1I!c}1H!c|1G!k{1F"cf1C"cf1H"ke1C"ie1F"cf1H"lh1M"l`1M"nh1M"n`1M"be1M"me1N"af1O"`f1P"me1Q"be1Q"n`1Q"`f1P"oe1P"ae1Q"m`1Q"lh1L"nh1M"l`1L"n`1N"l`1P"o`1R"be1Y!j{1Y"`f1Z!h{1Z"`f1Z!j~1T!j~1\!h{1X!j{1["`f2B"je2@"bd1_"ha1_"``1_!j}1_!b|2@!h{2B!h{2C!b|2D!j}2E"``2F"ha2F"bd2E"je2D"`f2C"`f2B"`f2B"he2A"be2@"`d2@"ja1_"b`1_!h}2@!j|2@!`|2A!h{2B!h{2C!`|2D!j|2D!h}2E"b`2E"ja2E"`d2E"be2D"he2D"`f2C"af2I"m`2I"cf2I"o`2I"ce2I"ne2J"bf2K"af2L"ne2M"ce2M"o`2M"af2L"le2M"be2M"n`2M"ce2M"ne2N"cf2O"bf2P"ne2Q"`e2R"l`2R"bf2P"me2Q"be2Q"n`2Q"af2H"cf2I"m`2H"o`2J"m`2L"l`2O"n`2P"l`2S"`k/I"jp/H5`c.H4j}.H"jd/G"`d/G"jc/G"`d/H"hd/H"je/G"bf/F"`f/E"je/C"jd/B"hc/B"ja/A!j~/A!`}/B!`|/C!j{/D!j{/E!`|/G!`}/H!j~/H!b/H"h`/H"ha/G"bb/E"`b/E"ja/C"j`/B!`/B"`f/E"he/D"hd/C"jc/B"ha/B!h~/B!b}/B!b|/C!j{/D!j{/E!b|/F!b}/G!h~/H!`/H"j`/G"ja/F"bb/E"oh/K"o`/K"mh/L"m`/L"ae/L"le/M"`f/N"cf/N"le/P"ae/P"m`/P"cf/N"ne/O"`e/P"l`/P"oh/J"mh/L"o`/J"m`/M"o`/N"n`/Q"ak,U"ep,T5cc*Z4o}*["jd,C"`d,C"jc,C"`d,D"hd,D"je,C"bf,B"`f,A"je+_"jd+^"hc+^"ja+]!j~+]!`}+^!`|+_!j{,@!j{,A!`|,C!`},D!j~,D!b,D"h`,D"ha,C"bb,A"`b,A"ja+_"j`+^!`+^"`f,A"he,@"hd+_"jc+^"ha+^!h~+^!b}+^!b|+_!j{,@!j{,A!b|,B!b},C!h~,D!`,D"j`,C"ja,B"bb,A"oh,G"o`,G"mh,H"m`,H"ae,H"le,I"`f,J"cf,J"le,L"ae,L"m`,L"cf,J"ne,K"`e,L"l`,L"oh,F"mh,H"o`,F"m`,I"o`,J"n`,M"ad,P"kc,P"ac,P"kc,O"cd,O"ae,P"ke,P"af,R"af,T"ke,U"ae,V"cd,V"cc,V"ab,V"ca,T"a`,R!i,Q!i~,P!c},O!k{,O"af,T"ie,U"ce,U"ad,V"ac,V"cb,U"aa,T"a`,R!k|,O!a},P!a},Q!c|,S!a|,U!i|,V!c},V!a},Q!k{,S!k{,U!a|,V!c},V!c~,V"cf,\"ie,["ad,Z"ka,Y"c`,Y!i},Z!a|,[!k{,\!k{,]!a|,_!i}-@"c`-@"ka-@"ad-@"ie,_"cf,]"cf,\"cf,\"ke,["ae,["cd,Z"ia,Z"a`,Z!k},Z!i|,[!c|,[!k{,\!k{,]!c|,^!i|,_!k},_"a`-@"ia-@"cd,_"ae,_"ke,^"cf,]"`f-D"l`-D"bf-D"n`-D"be-D"me-E"af-F"`f-G"me-H"be-H"n`-H"`f-G"oe-G"ae-H"m`-H"be-H"me-I"bf-J"af-K"me-L"ce-L"o`-L"af-K"le-L"ae-L"m`-L"`f-C"bf-D"l`-C"n`-E"l`-G"o`-I"m`-K"o`-M%ll)B%ll)L%cm;T%cm;J%`l'U%`l'^%br(A%bo(A%bp(A%`q(B%`r(C%`r(D%jp(F%jp(G%`q(H%br(H%`q(B%hq(C%hq(D%jp(F%br(H%jp(H%`o(H%hl(F%jk(E%`j(E%hg(E%`o(H%jl(E%hk(E%bj(D%jg(D%`p(L%jo(L%`o(L%jo(K%bp(K%`q(L%jq(L%`r(N%`r(P%jq(Q%`q(R%bp(R%bo(R%`n(R%bm(P%`l(N%hk(M%hj(L%bi(K%jg(K%`r(P%hq(Q%bq(Q%`p(R%`o(R%bn(Q%`m(P%`l(N%jh(K%`i(L%`i(M%bh(O%`h(Q%hh(R%bi(R%`i(M%jg(O%jg(Q%`h(R%bi(R%bj(R%br(W%mq(V%bq(U%mo(U%ao(U%bn(U%em(V%nl(W%ml(X%em(Y%`n(Z%bo(Z%no(Z%`q(Z%mq(Y%ar(X%br(W%br(W%oq(V%`q(V%no(U%bo(U%`n(V%gm(V%nl(W%ml(X%dm(Y%cn(Y%`o(Z%lo(Z%cq(Y%lq(Y%ar(X)hh)B)hh)L)ci;T)ci;J)mg'S)mg'\)om'_)oj'_)ok'_)ml(@)mm(A)mm(B)gl(D)gl(E)ml(F)om(F)ml(@)em(A)em(B)gl(D)om(F)gl(F)mj(F)eh(D)gg(C)me(C)ec(C)mj(F)gh(C)eg(C)oe(B)gc(B)om(L)em(K)mk(J)gi(I)og(I)ee(J)mc(K)gc(L)gc(M)mc(O)ee(P)og(P)gi(P)mk(P)em(O)om(M)om(L)om(L)gm(K)ml(K)ok(J)ei(J)mg(J)ge(J)ed(K)oc(K)gc(L)gc(M)oc(N)ed(O)ge(O)mg(P)ei(P)ok(O)ml(O)gm(N)om(M)om(U)jm(T)ol(S)jk(S)nj(S)oi(S)bi(T)kh(U)jh(V)bi(W)mi(X)oj(X)kk(X)ml(X)jm(W)nm(V)om(U)om(U)hm(U)ml(T)kk(S)oj(S)mi(T)`i(U)kh(U)jh(V)ai(W)li(X)mj(X)ik(X)ll(X)im(W)nm(V-lc)B-mc)L-cd;T-bd;J-`c'R-`c'[-jg(D-`g(D-jf(D-`g(E-hg(E-jh(D-bi(C-`i(B-jh(@-jg'_-hf'_-jd'^-ja'^-``'_,`(@,j~(A,j~(B,`(D-``(E-ja(E-bb(E-hc(E-hd(D-be(B-`e(B-jd(@-jc'_-`b'_-`i(B-hh(A-hg(@-jf'_-hd'_-ha'_-b`'_,b(@,j~(A,j~(B,b(C-b`(D-ha(E-`b(E-jc(D-jd(C-be(B-`i(K-jh(I-hg(I-`f(I-be(I-hd(K-hd(M-be(N-`f(O-hg(O-jh(N-`i(M-`i(K-`i(K-hh(J-jg(I-bf(I-`e(J-hd(K-hd(M-`e(N-bf(N-jg(N-hh(N-`i(M-hd(K-bd(I-hc(I-jb(H-j`(H,h(I,b(I,h~(K,h~(M,b(N,h(O-j`(O-jb(O-hc(O-bd(N-hd(M-hd(K-`d(J-jc(I-hb(I-h`(I,j(I,`(J,h~(K,h~(M,`(N,j(N-h`(O-hb(O-jc(N-`d(N-hd(M-bi(T-mh(S-bh(R-mf(R-af(R-be(R-ed(S-nc(T-mc(U-ed(V-`e(W-bf(W-nf(W-`h(W-mh(V-ai(U-bi(T-bi(T-oh(S-`h(S-nf(R-bf(R-`e(S-gd(S-nc(T-mc(U-dd(V-ce(V-`f(W-lf(W-ch(V-lh(V-ai(U0h)B0h)L0k~;T0k~;J0n~'U0n~'^1dc(H1nb(G1db(H1nb(H1fc(H1dd(H1ld(G1nd(E1dd(D1dc(C1fb(B1d`(B0d}(B0n{(B0nz(C0dz(E0dz(F0nz(G0n{(H0d}(I0l}(I0f(H1f`(G1l`(F1n`(E1d`(D0d(C0n}(B1nd(E1fd(D1fc(C1db(C1f`(B0f}(B0l{(C0lz(D0dz(E0dz(F0lz(G0l{(H0f}(H0n}(H0d(H1d`(G1l`(F1dc(R1nb(Q1db(R1nb(R1fc(R1dd(R1ld(Q1nd(O1dd(N1dc(M1fb(L1d`(L0d}(L0n{(L0nz(M0dz(O0dz(P0nz(Q0n{(R0d}(S0l}(S0f(R1f`(Q1l`(P1n`(O1d`(N0d(M0n}(L1nd(O1fd(N1fc(M1db(M1f`(L0f}(L0l{(M0lz(N0dz(O0dz(P0lz(Q0l{(R0f}(R0n}(R0d(R1d`(Q1l`(P1ld(X1kd(V1lc(V1kb(U1oa(U1l`(V1c`(V0h(X0k(X1c`(Y1n`(Z1la([1hb([1nc(Z1kd(Y1od(X1ld(X1ld(X1id(W1nc(V1hb(V1la(V1n`(V1a`(W0h(X0k(X1b`(Y1m`(Z1na(Z1jb(Z1mc(Z1jd(Y1od(X8+lc&B+jb&A+ba&A*l~&B*e}&D*n|&F*n|&H*d}&J*c~&J*j&K+ba&K+gc&J+jd&H+fe&F+ee&D+kd&B+ma%_+ca%]+aa%\+na%[+fc%[+id%\+cf%]+ba&A*h&B*a~&D*f}&F*e}&I*c~&J+ba&K+kb&J+nc&H+jd&F+jd&C+lc&B+hb&@+na%^+la%]+ib%\+mc%\+cf%]+hk&J+il&I+gn&G+dn&S+im&H+hm&S+hk&S+dp&S+n{&K+e{&M+az&N+kx&N+cx&N+ev&N+eu&M+nt&K+lt&K+eu&I+ev&H+cx&G+cy&G+iz&H+m{&I+d|&K+e|&N+n{&P+f{&Q+bz&R+hx&S+lv&S+nu&R+fu&Q+du&Q+nu&P+dv&Q+nu&Q+cx&N+mv&N+mu&M+fu&K+du&K+mu&I+mv&H+cx&G+cy&G+az&H+e{&I+l{&K+m{&N+f{&P+jz&Q+jy&R+hx&S,k`&G+i&M+i&M,h`&L,fb&K,nc&K,he&L,if&M,cg&N,cg&O,jf&Q,je&R,lc&S,db&S,j`&R,``&R+h&Q+j&P,c`&O,j`&P,``&Q,nc&K,`e&L,af&M,kf&N,kf&O,bf&Q,be&R,lc&S,k`&G,cf&G,i`&H,ec&H,cf&G,km&G,al&H,lj&J,fj&L,ej&N,lj&Q,bl&R,hm&S,ln&S,fp&R,dq&Q,ar&N,br&L,dq&J,ep&H,on&G,km&G,km&G,il&H,cl&H,hk&J,nj&L,mj&N,hk&Q,`l&R,jl&R,hm&S,ln&S,no&R,dp&R,lp&Q,eq&N,fq&L,lp&J,gp&H,mo&H,on&G!gl1T!nk1R!ej1Q!nh1P!kf1O!kd1O!bc1P!fb1R!db1T!bc1U!ge1W!dg1Y!fj1Z!el1[!gl1T!mk1S!gj1Q!mh1Q!jf1P!jd1P!ac1Q!fb1R!gl1T!el1V!ok1W!ej1X!kd1Y!bc1Z!eb1[!el1V!lk1W!gj1W!hd1Y!cc1Y!eb1[!db1\!bd2A!jd2B!`f2D lz2D!je2C nz2C nz2A mz2F!gb2Q!l`2Q h2P b2N c2M i2L!m`2K!fb2J!nb2J!id2K!ie2L!cf2M!`f2O!je2P!kd2Q!mb2R i2R k}2Q d|2Q d{2P nz2N oz2L g{2K e|2K m|2K k}2K m|2L g|2K c2M k2L!o`2K!eb2K!mb2K!kd2K!ke2L!cf2M!`f2O!he2P!hd2Q!ob2Q k2Q h}2Q f|2P f{2O nz2N!bf2V!n`2U!n`2U!na2V!eb2X!gb2Y!na2[!n`2\ `2] `~2] f|2\ f{2[ oz2Y mz2X f{2V l{2V n|2U j}2U `~2V j}2V l|2V!gb2Y!oa2Z!l`2\ b2\ b~2\ d|2\ g{2Z oz2Y!bf2V!`f2\!je2V!ie2Y!`f2\!bf3C!he3B!cd3@!ea3@ i3@ o|3@ d{3B nz3C nz3D e{3F m|3G k3G!ga3G!ad3G!ie3F!bf3D!bf3C!bf3C!je3B!`e3B!ad3A!ga3@ k3@ m|3A l{3B f{3B nz3C nz3D g{3E m{3F o|3F i3G!ea3G!cd3F!ae3F!ke3E!bf3D89:967dw @8`d.\7dw.\8bd.\7fw.\8i`/@7i{/@8ad.Z8`d/D8h`/D8ad/C7b~.\7a~/@7ew.Z7dw/D7`{/D7ew/C8bd/G7fw/O8ad/H7ew/P8ad/P7fw/G8ad/F8`d/J8cd/M8ad/Q7ew/F7dw/J7gw/M7ew/Q8`d/U7dw/U8cd/U7gw/U8ad/S8bd/W7ew/S7fw/W8ad/^7ew/^8cd/^7gw/^8bd/Z8h`/Z8`d/Z8`d0C8h`0C8bd0B7ew/\7gw0@8ad0G7ew0G8`d0H7dw0H8k`0K7k{0K8bd0E8ad0O8i`0O8cd0N7`~0H7c~0K7fw0E7ew0O7a{0O7gw0N7ew0]7i~1E7l1F7d}1F7i~1E7g1D7n1C7l1A7g0_7i~0_7e}0_7o|0_7d|1A7`{1D7ez1E7ly1F7a~0_7g}0_7l|1A7h{1D7a{1E7dz1F7hx1F7mw1E7dw1D7gw1A7nw1@7kx0_7my0_7ew0_7kx0_7m1M7f1K7a~1J7f|1I7b{1I7ay1J7nw1K7ew1M7fw1N7mw1P7by1Q7a{1R7e|1R7b~1Q7e1P7n1N7m1M7m1M7d1L7c~1J7e|1J7a{1J7cy1J7lw1L7ew1M7fw1N7ow1O7`y1Q7b{1Q7f|1Q7`~1Q7g1O7n1N7l1W7`y1W7ow1W7fw1Y7gw1Z7nw1\7cy1]7o1W7cy1W7mw1X7fw1Y7o1]7gw1]7m1^7ew1^7m1U7o1W7l1\7m1^7gw1]7ew2@7n2D7fw2D7l2E7dw2E7d|2E7c~2E7d2G7m2H7l2J7f2J7j~2J7`~2J7i~2I7d2J7o2B7l2E7gw2B7dw2G7`~2U7e}2T7l|2U7f}2U7b~2U7e2T7m2S7m2Q7f2O7a~2N7g|2M7c{2M7ay2N7nw2O7ew2Q7fw2R7mw2T7by2U7m2Q7d2P7c~2N7e|2N7a{2N7cy2N7lw2P7ew2Q7g|2Y7e|3A7e}3A7j~3@7d3@7o2^7l2]7d2[7c~2Y7e|2Y7a{2Y7cy2Y7lw2[7dw2]7ew2^7lw3@7ay3A7f|3@7b~3@7d3@7l2]7g2[7b~2Z7g|2Y7c{2Y7by2Z7ow2[7dw2]7h~3K7n3K7f}3K7h~3K7e3J7m3I7o3F7f3E7k~3D7g}3D7n|3E7g|3F7c{3I7dz3K7ny3K7c~3D7f}3E7o|3F7k{3I7`{3K7fz3K7jx3K7lw3K7gw3I7ew3G7lw3F7jx3E7oy3D7gw3D7jx3E7gw3Y8if4@8ee3_8hc3^8ca3\7`~3\7h{3\7kx3\7`v3^7et3_7as4@8ee3_8lb3^8aa3]7c~3\7k{3\7ix3]7lv3^7et3_7g|4D7d|4L7d}4L7i~4K7g4J7n4I7o4G7g4E7c~4D7d|4D7`{4D7cy4D7ow4E7gw4G7dw4I7ow4J7`y4L7e|4K7a~4K7g4J7o4G7f4F7a~4E7g|4D7c{4D7ay4E7nw4F7gw4G7m4P7dw4W7o4P7fw4W7n4W7ew4P7l4O7o4R7m4U7o4X7dw4O7gw4R7ew4U7gw4X8`d4]8jc4\8lb4]8kc4]8`d4]7l4]7dw4]7o4]7gw4]7m4[7o4]7ew4[7fw4_8cd5C7oy5C7nw5D7gw5E7gw5F7lw5H7cy5H8bd5D7ny5D7lw5E7gw5E7l5B7o5F7e|5L7g|5S7g}5S7h~5S7f5R7m5Q7n5O7f5M7a~5L7g|5K7c{5K7ay5L7nw5M7fw5O7gw5P7nw5R7cy5S7d|5S7`~5S7f5R7n5O7e5N7`~5M7e|5L7a{5L7`y5M7mw5N7fw5O8if5W8fe5X8kc5Y8`a5[7c~5[7k{5[7hx5[7cv5Y7ft5X7as5W8fe5X8ob5Y8ba5Z7`~5[7h{5[7jx5Z7ov5Y7ft5X47j}.L7h}.T7j}.L8be.L7j}.L7h}.E7j}.L7bv.L:+bw2K+`w2S+bw2K+j~2K+bw2K+`w2D+bw2K+jo2K+nu2T+nu2Z+nv2Z+lw2Z+fx2Y+nx2X+lx2W+dx2V+dw2U+nu2T+nt2T+ds2U+dr2V+lq2W+nq2X+fr2Y+fs2Z+nx2]+lq3C+lx3C+nq2]+d|3F+n{3F+d|3G+n|3F+d|3F+nx3F+nq3F+d|3K+ls3K+fr3K+nq3L+nq3M+nx3I+lx3M+lu3P+lu3V+lv3V+nw3U+dx3U+lx3T+nx3R+fx3Q+fw3P+lu3P+lt3P+fs3P+fr3Q+nq3R+lq3T+dr3U+ds3V+nq4A+fz4D+nz4E+d|4G+lq4G*mz1U*oz1\*mz1U+eb1U*mz1U*oz1M*mz1U*es1U*iy1^*iy2D*iz2D*k{2C*a|2C*i|2B*k|2@*c|1_*c{1^*iy1^*ix1^*cw1^*cv1_*ku2@*iu2B*av2C*aw2D*i|2G*ku2L*k|2L*iu2G+c`2O*i2P+c`2P+i`2P+c`2O*i|2P*iu2P+c`2T*kw2T*av2U*iu2V*iu2W*i|2S*k|2V*ky2Y*ky2_*kz2_*i{2_*c|2^*k|2]*i|2\*a|2[*a{2Z*ky2Y*kx2Y*aw2Z*av2[*iu2\*ku2]*cv2^*cw2_*iu3K*iu3U*i}3W*a~3W*c3W*i3X+a`3Y+a`3[*i3\*c3\*a~3]*a}3]*c|3\*kz3[*ku3V*ku3]967h` @7dm,W7h`,W7fm,W7j`,W7mi,[7md,[7dm,U7gm,^7oi,^7em,^7fg,W7eg,[7h`,U7k`,^7gd,^7i`,^7fm-B7j`-J7em-C7h`-K7dm-K7j`-B7em-A7dm-E7gm-H7em-L7i`-A7h`-E7k`-H7i`-L7dm-P7h`-P7fm-P7j`-P7em-N7fm-R7i`-N7j`-R7em-Y7i`-Y7gm-Y7k`-Y7fm-U7oi-T7gm-T7dm-^7li-^7fm-]7i`-W7j`-[7em.B7i`.B7dm.C7h`.C7ni.F7nd.F7fm.@7em.J7mi.J7gm.I7dg.C7fg.F7j`.@7i`.J7ed.J7k`.I7i`.X7mg/@7ci/@7kf/@7mg/@7kh._7bi.^7`i.\7kh.Z7mg.Z7if.Z7cf.Z7he.\7dd._7ic/@7cc/@7eg.Z7kf.Z7`f.\7ld._7ed/@7kc/@7oa/@7aa/@7h`._7j`.\7aa.[7oa.Z7ac.Z7i`.Z7oa.Z7ai/H7ih/F7eg/E7je/D7fd/D7eb/E7aa/F7i`/H7j`/I7aa/K7fb/L7dd/M7he/M7fg/L7ih/K7bi/I7ai/H7ai/H7hh/G7gg/E7ie/E7ed/E7gb/E7`a/G7i`/H7j`/I7ca/J7gb/K7fd/L7je/L7gg/K7kh/J7bi/I7`i/R7db/R7ba/R7j`/T7k`/U7ba/W7gb/X7bi/R7fb/R7aa/S7j`/T7ci/X7k`/X7ai/Y7i`/Y7ai/P7bi/R7ci/V7ai/Y7k`/X7i`/[7bi/_7j`/_7`i0@7h`0@7he0@7gg0@7kh0A7`i0C7`i0E7jh0E7ng0E7dg0E7mg0D7hh0E7bi/]7`i0@7j`/]7k`0A7dg0P7if0O7`f0P7jf0P7fg0P7ih0O7`i0N7ai0L7jh0J7eg0I7je0H7fd0H7eb0I7ba0J7i`0L7j`0M7aa0O7fb0P7ai0L7hh0K7gg0I7ie0I7ed0I7gb0I7`a0K7i`0L7ke0T7ie0\7if0\7ng0[7hh0[7ci0Y7ci0W7hh0V7gg0T7ie0T7ed0T7gb0T7`a0V7k`0W7h`0Y7`a0[7eb0\7je0[7fg0[7hh0[7ci0W7kh0V7fg0U7ke0T7gd0T7fb0U7ca0V7k`0W7i`1J7ke1L7he1T7hf1T7mg1S7kh1R7bi1Q7ci1O7kh1M7gg1L7he1L7dd1L7gb1L7ca1M7k`1O7h`1Q7ca1R7db1T7ie1S7eg1S7kh1R7ci1O7jh1N7eg1M7ke1L7gd1L7eb1M7ba1N7k`1O7ci1X7k`1X7bi1Y7j`1Y7je1Y7dg1Z7ih1[7bi1\7ai1^7hh1_7lg1_7eg1^7og1]7ih1^7`i1W7bi1Y7h`1W7i`1[7ai2C7i`2C7ci2C7k`2C7ke2C7fg2D7kh2E7`i2G7ci2H7ih2I7mg2I7gg2H7mg2H7kh2H7bi2A7ci2C7j`2A7k`2E7`i2P7ih2N7dg2M7je2L7fd2L7db2M7aa2N7h`2P7i`2Q7aa2S7eb2T7dd2U7he2U7eg2T7ih2S7ai2Q7`i2P7`i2P7kh2N7gg2M7he2M7dd2M7gb2M7ca2N7h`2P7i`2Q7ba2R7gb2S7ed2T7ie2T7gg2S7jh2R7ai2Q7ci2Y7k`2Y7bi2Z7j`2Z7je2Z7dg2[7ih2\7bi2]7ai2_7hh3@7lg3@7eg2_7og2^7ih2_7`i2X7bi2Z7h`2X7i`2\7j`3M7fg3V7hf3V7bf3V7if3W7eg3W7hh3V7ci3T7`i3S7hh3Q7gg3O7ie3O7ed3O7gb3O7`a3Q7h`3S7i`3T7`a3V7eb3W7`i3S7kh3Q7fg3P7ke3O7gd3O7fb3P7ca3Q7h`3S7dm3\7nl3[7`l3\7ol3\7dm3\7`i3\7h`3\7ci3\7k`3\7ai3Z7ci3\7i`3Z7j`3^7ci4B7k`4B7bi4C7j`4C7je4C7dg4D7ih4E7bi4F7ai4H7hh4I7lg4I7eg4H7og4G7ih4H7`i4A7bi4C7h`4A7i`4E7eg4S7kf4R7af4S7hf4T7dg4T7kh4R7bi4Q7ci4O7kh4M7fg4L7he4L7dd4L7fb4L7ca4M7k`4O7k`4P7ca4R7db4T7ci4O7jh4N7eg4M7je4L7fd4L7eb4M7ba4N7k`4O7gm4X7k`4X7fm4Y7j`4Y7dm4W7fm4Y7h`4W7i`4[7he4_7ie5F7if5F7og5E7hh5E7ci5C7`i5B7ih5@7dg4_7ie4^7ed4^7db4_7aa5@7h`5B7i`5C7`a5E7eb5F7ke5E7gg5E7hh5E7`i5B7kh5@7fg4_7he4_7dd4_7fb4_7ca5@7h`5B7lg5P7ci5P7kf5P7lg5P7jh5O7ai5N7ci5K7jh5J7lg5J7hf5J7bf5J7ke5K7gd5N7hc5P7cc5P7dg5J7jf5J7cf5K7od5N7dd5P7kc5P7oa5P7`a5P7k`5N7i`5L7aa5K7na5J7`c5J7h`5J7na5J7k`5^7no6E7in6D7ll6C7gj6A7eg6A7md6A7oa6A6d6C6i}6D6f|6E7in6D7`l6C7ej6B7gg6A7od6A7ma6B7``6C6i}6D7ke6I7he6Q7hf6Q7ng6P7kh6O7bi6N7ci6L7hh6K7gg6I7he6I7dd6I7gb6I7`a6K7k`6L7h`6N7ca6O7db6Q7je6P7fg6P7kh6O7ci6L7jh6K7eg6J7ke6I7gd6I7eb6J7ba6K7k`6L7ai6U7h`6\7`i6V7k`6\7ci6\7i`6U7`i6T7ci6W7ai6Z7ci6]7h`6T7k`6W7i`6Z7k`6]7em7B7nl7A7al7B7ol7B7em7B7ai7B7i`7B7ci7B7k`7B7ai7@7ci7B7i`7@7j`7D7gm7H7cc7H7ba7I7k`7J7h`7L7aa7M7gb7M7fm7I7bc7I7`a7J7k`7J7`i7G7`i7L7je7Q7ke7X7kf7X7mg7X7jh7W7ai7V7bi7T7kh7R7fg7Q7ke7P7gd7P7fb7Q7ca7R7j`7T7k`7U7ba7W7gb7X7ie7X7eg7X7jh7W7bi7T7ih7S7dg7R7je7Q7fd7Q7db7R7aa7S7j`7T7no7\7kn7]7ol7^7dj8@7gg8@7od8@7la8@6g7^6k}7]6f|7\7kn7]7cl7^7fj7_7dg8@7ld8@7na7_7c`7^6k}7]4+hn-V,da-U,bt-V-kf-Z-ex.A.ai.J.lx.V/of/C/nr/S/m|0E0id0X0mi1L0hl2A0hl2V0oi3J0kd3^/o|4Q/nr5C/mf5S.lx6A.ci6L-gx6U-if6\,bt7@,ga7A+hn7A*b|6]*`j6X)nx6P)mh6G(my5\(kl5O(i`5B'kv4S'fn4D'ch3T'mc3D'oa2S'ma2C'oc1R'ah1B'fn0R'iv0C(k`/T(il/G(oy.Z)oh.O)nx.F*`j-_*b|-Y+hn-V*io-@+gb,^+`u-@,kg-C,hy-J-kj-R-dz-^.jh.K.au.[.g/L/jg/_/bm0S/ap1H/ip1]/an2R/fi3F/na3Y.bx4K.bl4[-f~5I-ao5U,g~5^,jl6E+gz6I+kg6K*lt6K*`b6H)cp6B(n~5[(in5R'j5G'nq4['me4N&k{3_&cs3P&hl3A&ch2P&ie2@&ge1O&ag0_&`k0O&`q/_&by/O'ob/@'en.S'j{.F(ej-[(cz-Q)gk-I)`}-D*io-@: `m-P bn-O bo-N jo-M jo-K bo-J bn-I `m-I jk-H bi-H hg-I jf-I je-J be-K be-M je-N jf-O hg-P jo-V jo-U bo-T hm-T `e-T bl-R `l-V ho-\ `e-X ho-\ `e.@ jh-Y jh-^ be.J `n.S `o.R jo.P jo.N `o.M `n.L `m.L bl.L hk.M `k.N `j.Q hi.R bi.R `h.S hf.S he.R be.P be.N he.M hf.L jo.V be.V jo.] jh.V `k.Y be.] jo._ jj/C be/C jo/G jj/C ho/J `e/J ho/J `e/N ho/R `e/N ho/R `e/R jo/X be/T jo/X be/\ hh/V hh/[ ho/_ `e/_ ho/_ jo0C `o0E jn0E hm0F `l0F bk0E hj0E bj0C `j/_ be0Q ho0X hh0S jh0Z ho0X `e0X `f0^ je0] `e0^ je0^ `f0^ bm1B jm1B hn1C bo1C jo1D jo1F bo1G hn1H jm1H jl1H hk1H `j1G `e1B `e1I be1T bl1V be1V bi1V hj1W hk1X `l1Y bl1Z `l1] `g1] je1] be1^ `e2@ he2A bg2B bl2B be2B bl2F be2F bj2F hk2H `l2I bl2J jk2K `j2L `e2L `e2X jo2Z ho3@ hk2] jk2^ bk2_ hj3@ bi3@ bh3@ hf3@ he2_ be2] `e2\ je2Z `f2Z bg2Y `e3L ho3R hg3R bf3Q he3Q `e3P `e3O he3N bf3M hg3M hh3M `l3V `g3V je3V be3W `e3Y he3Z bg3[ bl3[ be3[ bl3_ be3_ bj3_ hk4A `l4B bl4C jk4D `j4E `e4E `e4Q hm4T `n4U jo4V be4V `l5C jj5B ji5A `i5@ bi4_ hi4^ hj4] bl4\ jl4\ `n4] `o4^ jo4_ ho5@ bo5A bn5B `l5C hi5C bg5B je5A `e5@ `e4_ je4] hf4] `l5M jj5L ji5K `i5J bi5I hi5H hj5G bl5F jl5F `n5G `o5H jo5I ho5J bo5K bn5L `l5M hi5M bg5L je5K `e5J `e5I je5G hf5G jo5W be5R jo5P jo5W `e6C hm6F `n6G jo6H be6H `n6U bo6T ho6S ho6R bo6P jm6O `k6O hh6O jf6O je6P `e6R be6R he6T hf6U bh6U jh6U `j6U `k6T jk6R hk6R bk6P bj6O hh6O bl6Y hk6Y bk6Y hk6Z bl6Y bf6Y he6Y be6Y he6Z bf6Y jo7C jo6^ `k6^ jk6^ `l7@ bl7A hk7C hj7D bi7D bh7D hf7D he7C be7A `e7@ je6^ `f6^ bg6] jo7H ho7N hk7K jk7L bk7M hj7N bi7N bh7N hf7N he7M be7K `e7J je7H `f7H bg7G86li @5`s @0707010003767d000081a40000000000000000000000014cc7b61700000056000000b500010002ffffffffffffffff0000002a00000000root/usr/local/share/tek2plot/imtesth.tek `` @ c`?_ c`?_8om?_8om?_8lm @8lm @ `` @!`r#D(0,0) `` @8om?_ c`?_8lm @,`p @ 0707010003767c000081a40000000000000000000000014cc7b61700003f69000000b500010002ffffffffffffffff0000002900000000root/usr/local/share/tek2plot/fotest.tek :#`n%Vdn7Y5qY`q%V#nVn)JhwJ5gJ`qJ#n,^hw^5g^`q^#n0RhwR5gR`qR#dn4EwE5gEqE&he%V`e&@e7PY)hx%V`x&@x7PY,ho%V`o&@o7PdoY/`g%Vg&@g7PY2z%Vz&@z7PY#c%V HHHHHHJJJJJJJJJJ0 -x- 10 DDDDDDEEEEEEEEEE HHHHHHJJJJJJJJJJ  DDDDDDEEEEEEEEEE HHHHHHJJJJJJJJJJ10 -log y- 1000 DDDDDDEEEEEEEEEE&|(\\he'VV`q*RR%a%VV*ho)CCdb(UU&h|'ZZ+`a)II%i%VV+hf+^^'xZZ&`e(II+hp%VV-hVV)`v(QQlbGG'hx'__*`}(TT(vEE+hd)FF)`v(GG0dq.SS(`h(HH){JJ&kLL1w%VV%x(FF*hfRRlqSS-`h*\\){)NN%q(BB'dt']])`h(II'tHH&h|FF)leOO(`vUU)hbRR(rBB%`q'ZZVV*dk(SS-k+MM&h|(KK`wMM%q'^^(v(KK-hc*JJ'`t(NN*kNN)hsJJ&`q'\\)hh(KK%`qAA'hx%VV%dx(UU'`xII(hLL2hr5__0`c.PP+ls)[[`cFF,lj[['ha(BB*`{XX)d{WW'`aMMh|GG`xLL)h}GG%`qFF+ls)CC(`|(AA&heOO+k^^.d`+CC(h)__*`o(UU&wAA*diOO%`a@@(hKK%`iJJ-d*II+~)JJhpCC(`r(DD/q,\\(h`(RR|BB*`m)]]+hf([[(`'\\/dh/]],`{*TT*dy)II(`o(UU+)LL&hk(JJ%`qAA-lj*OO&`q(DD%a'^^&q(ZZ%a'\\.h~,RR+)FF*`f(LL+p)DD'|(EE-da*MM)hk(FF,`w*@@(|(HH+ddYY(rII*huNN(dFF%`q']]*i)NN&he'ZZ/c,JJ+dh(]]&`w'^^%q(NN'ha*WW&k(FF(drAA.`l0JJ(ho(NN&`|AA)q[['xAA(d)TT*hm(RR(`EErXX+h^^%dx[['`|'XX&dkQQ%a(AA+`k]]%qFF'lo*WW)`n(DD(dhAA)hbJJ%dx']](lk*[[&`k'TT'ho(ZZ*``JJ,lj)SS(h|(OOlrWW%`qBB&w'XX'fUU&he^^*df(QQhfNN(d'^^'dt)[[*ho(ZZ'xFF(d+FFk(BB'fZZ(o'__)d{)KK+`c(ZZ)}LL%)AA(h(FF*h{[[(`VV&k'ZZ*`s(MM'oHH+du)GG&`q(PP.hw,CC(r(BB&|FF'`aAA,i)RR(h|FF*`u(PP'haCC%`KK-m*TT+z)HHd*II&`|(EE+{*HH(o(PP&eMM'lo'__%`aVV't(VV+dh]],lf)OO(hd'__'f(GG%`BB*d)MM`s(QQ(hkZZ*diSS&q'__+`j(XX%qCC)d{II(`y'^^'ho(BB)`xHH*hu)FF+lvGG1`q.^^'|(AA%qHH)eLL+d~)KK%`a(BB'WW&w\\'lo__*`f(LL'AA%dx)SS,`hRR+~*NN(h(GG)`hII'loWW&`wRR+fYY'aPP+j)HH'o(@@*dkOOb]],x)[[0lq-WW.``+BB*ho(OO+`h\\'hx'WW%di]]&q(OO*iQQ+hn)BB%`x(^^*sXX+ls)CC&`w'^^)he(NN+`c*GG)hh(NN.`q.AA%q(MM)n)FF*(XX%a)HHda&[[*h}(VVwWW+`a__'k'^^,h)MM(v(@@+aXX'|II+~)HH)n(JJhxKK%`aLL(hGG`IIlr'__`v(EE&wFF'dt[[-hb,RR)de(YY(`vTT){)FF,nUU%q(DD)kHH'hfBB%`xTT.hn+RR&`e(@@%@@+m)@@*hs(OO`fLL&dqGG)hkJJ(`yBB'hoVV)`{LL%q)DD.l+PP(h`'ZZ%da]](ho(CC'dkEE&`qJJ%di'AA(k(II+x)EE)`v(MM&q'^^'hf^^%dxYY,`h)PP(dh,EE-lj*SS+`j(\\%dx'WW*k(QQ`dMM'aII+lv)GG)d{(GG(h`FFoWW*`mPP/f,ZZ)n(JJ}MM+c)II%a'TT)x(HH*d)GG)hk-JJ'do(II-hj*VVlkKK*f(KKyWWdUU)`bPP'o@@)kDD%q'RR+z)MM*(ZZ'haFF)sSS*`k)RR'ha(SS,dj)UU(hdFF,drYY+`rDD-hg*NN&eBB,`d)LL(`(LL)nMMqJJ&q)RR'do']]hf(JJ*lf*[[(dy(CC%i)II`q(KKZZ)vJJ&dqCC'hf'^^(`o(HH*`)AA&k'\\e(AA*{XX+dh[[)lb'__'o(GG)`n)DD'hx(VVdoMM+`d\\&wFF%qFF*dkOO&lk)__%`i(BBqQQ*`YY+d~)OO&`k'@@(dy(II)`qCC-z/QQ*db(__)h})RR+lvGG*hw(VV)`nII(h`KK,`n)XX(|(HH'h|GG(`|HH*d[[&h|CC+`n)DD)hh(JJ*sNN'`xDD%q'LL3h1LL&dq'[[*hw(VV,y)WW%`a'ZZ&qXX(hr(RR'doII(`*UU+ln+SS(`d(II%EE&h|SS'`tHH*dUU'`aHHhoJJ)`kEE%qFFaZZa)LL+zII%da(OO*`}XX-dg*MM(``'YY'dk(MM*`iNN)kMMeDD'k@@/dh-AA*lf(OO'`kRR(|YY2l~0OO0`~/LL&w)HH*h{(WW'do']]+`~)XX'tBB+a(ZZ)vII(dr']]*lu([[hdOO,n)VV'`o(@@%q)VVi(LL*hs)OO(``MM+c(YY&hk'FF%`iFF,hb)[[(lr(GG*dkSS%`HH&e'QQ*m(TT(hdFF%`'XX,dr)YY`bLL&h|(SS'`k)XX,dNN-c*@@%a(LL(h`KK|GG'a'__%`q)GGq(@@HH't^^*oPPhdJJluWW'`o)HH+hpKK)`n(GGh}VV%di']]'`x*@@){NN(o(II)q\\'k@@(|DD%i)TTdx(EE(`dUU*oMM+dv)EE)lb(CC(`HH+h{)FF'f(BB(`DDh|JJ/dk,QQ-hw/RR+{)KK)`x(MM'dt'YY`k^^*h{(WW%`qPPaBBi'XX*}(YY%'DD&w(PP)qII%diUU&`eQQ(oAA%di'QQ.`j+KK(dk(EE%iAA'`tZZ)nAAhAA,d)NN%']])})TTq(AA'do)YY(`dAA)hk(GG&`wAA(h'\\)he(BB'dkMM(hrFF%`a*XX*}(YY&dq)OO*q(QQ)`nNN,a)KK&lk(OO(hoGG`'__/dv0[[*i*MM(`h)@@%aNN*LL)q(JJ%da'__'t*__*`m(MM&q)RR-df0EE*`o(PP)sEE'a+DD&q(HH(drEE*``JJ&w@@%qBB'hoJJ)sKK(`|QQho'__lk(KK)e+SS'dk)[[&`w'__%q*RRq'__((QQ'o'\\lo(CC)hs__&`eAA(lk'[[*dk(OO(`o-XXd(DDhk'^^%`q]]&q(DD+k)UU)q(JJ'kBB%i'ZZ+a(YY*lfOO,`l)XX%(LL)n^^(lr[[`d+DD)lb*__'`x'\\+dv.II*``(MM-z+RR.di/YY)`h)LL(hd(ZZ``PP,}*BB+c(WW&hk'^^+`h)\\'hf(GG+d)II)`n(PP&dqII1`e/OO'x(@@*h}WW(`kDD+m)@@'h|(OO%di'[['hx^^&|(CC'`xEE,l)TT((HH&he'[[lk)GG%daAA/`y/YY,h*SS(|)AAho(JJ%`aHH&dqCC*`uPP'h|'__,lt)[[)hs(OO%`'RRq]](ho(KK%`qKK)hkJJ`qFF+ln)CC%dxWW*hf(ZZ(r+VV)`s(MMnYY(h)LL.h{+VV(`y(FF%xLL+f)YY)v(GG&h|JJ)x)^^'`|(PP,b)PP'dk(MM)bMM`vRR'f']]*ho(SS'`kDD(d*AA%(DDdi'QQ(`h(NNy.XX+a(\\)nCC%da)GG&he(SS+`z)DDhRR*hw([[.`n,@@*`(PPdXX&wOO(vFF'|IIh|'^^%da(CC+hf*SS)`})@@*lyGG&`e'HH'hx(CC&lkKK)`sLL{FF+a)@@(lr'__%`q(LL&w'__*b(XX)k)PP*di(WW-hp*ZZ(lk(CC%`aRR)hxJJ&|JJ)`{HH,d{*AA+u)EE&`k'\\+d*@@%di'WW'h|(GG(`BB.`v,OO+d)XX)s,PP(o(LLdr']]&hk(BB+`c)SS*db(SS(`hBBh|CC)`vII+u)FF)q(__+d|)II%`x(ZZ,~*BB*hy)FF`u(\\+z)FF%i(HH'haJJa'__)h(KK(``EE&hk'VV(`(NN%`iFF'hf__%`q'ZZq(@@'oTT%daEE(`yPP%qMM&kLL%a)@@,eNN(hr(ZZ%da']],e)KK%`q(PP(y+RR&he(VV*uVV'|CCdtQQo)YY&k']],m)SS%`(HH)hxKK'`fDD-c-II(h`(SS*lqKK,`h)NN(h(JJ,hj*RR&`q'^^%q(CC*huRRdyUUhmWW'fKK)`n[['hoZZ`fMM+aXX(`)\\%q(@@q'__*du(QQ+ln,WW%`(II*hoRR%`q'YY(h(KK+`u)FF0k.HH)k(TTnAA&h|NN`w'^^'lo__`|(EE+l|)SS|.SS,`h+^^*hd)FF%`q(FF)}*XX+r)DD)h+YYh}(KK%`i\\*h{ZZ&`kDD(dkMM*`oUU&dkMM-`*II*`d(LL%q'^^*`)__'hx(GG-o+FF)s(KK+`aVV%iJJ&w+HHhk(FF,`b)LL%x(ZZ'dtCC%`xBB)sII(hr)^^)`v(II}LL%aDDq*__&he(GG%`FF&kDD+dh)WW*ly(WW&h|)BB,`lVV*lu(SS(h*KK*`b(NN&dq'SS%`i^^*m(UU)hQQ%qAA(vMM%aFFq'^^a(LL'hoBB)sKKJJ%`q'WW/g+HH%a'^^+u)FF(v(FF&w)II,hPP(dy(AA+hf)VV(`d(]]*hsNN+`f)@@*lf(SS`XX'hx)KK*`b(VV&dqII'`fYY,w-EE&h|(NN`eII)hhJJ(|)OO&`w(LL(rTThkVV'dtII*`kPP(v)DD)lb(GG,`b)MMa-OO&|(LLw*@@(h(VV-{*PP&w(BBkHH(dhUU'`x)@@&hk'NN'`f(EE){JJ(rTT%xZZ'h|JJ&`wFF%qBB4p1NN'f(QQ&q'ZZ%q(@@&lk'GG,t)WW+`h(^^s.DD'dt([[&`qJJ'hx)^^,deOO*`s(QQ%daUU(h`KK+`a)DD,ljSS'hf(RR(`hHH%q'^^+p)AA&lkGG*`w(\\'hfFF&`|II,hu)^^&lk'__(``(TT-m*II%dx'[[+`u)DD(hr(ZZ`vUU%a'TT-k*XX%i(VVdi)]]'`t(FF*h{[[(`v@@*hsVV)eZZ'`a)@@&dq(EE,`1TT'dk)__%x(AA+`m)BB&w(UU*mLLhs*BB'do'YY%`q__,b*TTdzAA(hd.[['x(VV&`e'XX'|)DD%di(CC`aHH.`+HH'h|(CC+`|)HH)v(QQ(d)AA*ho(VV'`a+@@(dy(GG&lkSS*``,SS(hd(^^*fNN&dkAA*huRR&dkMM+`r/ZZ*hq(RR'`fTT(h`NN*``LL'xEE,l)UU+dd(YY*ly__+`z,HH%x'\\(h)^^%x(RR+n)@@&q(RR(lr'__+n)CC%`q'UU'h|ZZ-b*KK%`q(GG-ln*OO%`x(FF**DD%i(FF'xAA(vOO&h|'__'dk(QQ)hx^^(`GG%`'__)db-EE'k(EE.`k+II+j*BB&lk)SS%`aFF&lk'__k(CC%da'__&hk(JJ*duUU'h|WW%`IIaBB&h|)^^*lq(WW'oGGhf'__%`\\&w(NN-di*II)hx-[[&|(SS%`iHH*hoVV)`n,JJ'f'YY%a(BB(hd__%`iTT,j)TT'k'VV(h(XXdkII)hxJJ'`xXX,hn)RR*di(MM&heCCdk*YY.la.WW(`v)EE'k(ZZ%aFF-d`*II'h|(SS*luOO(`yDD+dx)EE,hb+[[&`|(EEhkVV+`p)@@*hs(OO'dtSS%`@@+hf)NNdnEE'hf(FF*`bJJ(dy[[%`EE)h}KK+d~)GG,eOOlfOO)`q+\\'dt*QQ%a(WW-hs2RR)`x,QQ}(HHhxOO'`aDD%di']](hd^^'dt(QQ)h})OO*dqII(h(EEho'^^+`~)LL&|'\\*)BB(hd(KK%`q@@+ld__ddYY&`e']]+l|)GG&hk'^^`w(RR,hf)NN%`q'TT*h{(VV'dtKK(hk'^^'`k(@@*h}VV%`x@@'hfJJ`xDD%BB(hkVV%`EE)eDD*}XXlqOO'dk'[[(lk[[*h}(VV'`kPP,})__+z*ZZ)q(PP'aDD*m)AA,x*LL&lk(KK(``*YY+a(WW'haJJ%daII)`qHH%HH)heNNsWW(`rLL*hs)JJ{(WW``)GG'ha(NN(dk*YY*`(VV'hxJJ&dqOO,hb)KK((FF-d}+AA't(AAloGG(hdSS.`n+EE+z)GG/df+KK'h|(NN&`eUU'dkKK(hkBB*yVV-f*BB)d{(KK`qLL,ht*VV)`n(ZZ'h|CC(`|LLvII)heBB+ld[[,`x)^^*hd(RR-`b*DD)n(JJ%aXX(hFFrDD-da/]](`v(NNdkMM'`xYYAA.v.XX*`)JJ)n,@@s(LL*{XX(hk)BB|(FF,`}*CC'|)IIx+TT*d(QQ'fEE/}3PP+k)]]*s\\&wGG+j(^^&heGG'`|EE%qJJ&e'YY(k(@@+{)DD*du(QQ``ZZ.ho+ZZ)`n(II'oDD&k@@%xDD*iNN%aBB+u+BB*dk)CC&`k(TT(h`BB`yDD*fHHhwSS'`o@@(LL%KK)vFF+j]]'dkSS,`e)NN)x(EE'dkUU(k']]hd(OO&`k@@*`)RR,}+@@(v(SS%PP&dqCC2`{1VV0dz0QQ'ha(ZZ/dv/AA'h|(SS%`II(hRR-hi*NN*`})TT%di(MM*`\\-lr*__*di(KKhfZZ(`h^^*dy.QQ(ho(RR4lh7WW(`h+@@3r4YY((YY2de0]](`v)AA/d{.MM%`q(VV)xUU*oPP(h`VV'`k'^^dt(GG&`wJJ+h{)GG`uHH&lk(CC%di-WW&he(GG(oGG'dkIIhfCC|GG0`h-OO,l)SS)vNN%dx(OO'`k+@@,dmGG)hx(^^%`q'ZZ&w]](hr(BB'`aYY(dhKK)hsRR+`f)@@kPP)q(DD+h)@@'h|(GG+dm)KK'ha(BB(|CC&`eMM+d~)KK){(OO&q)EE/hm-ZZ,`w+TT&dq(CC/`a-RR*}*HH%i(@@/t1DD-hi+NN)`v(\\&e@@'|)@@&e(UUw@@'haJJ)`xII'dtQQ*`o)@@)h(HHv)PP%dx'__)`h(DD(vFF'xAA&heFF%di'YY)`x)PP%q'PP'h|(NN,`w)[['hxFF+ds*UU'ha'__%`(EEqVVSS(hBB&|HH%di)CC)`q(FF(d'\\&q(VV)d{OOh}FF'doEE+`r)EE/hv,RR'dt'UU)hk(JJ*`b)FF+f@@)hk(GG&dq'YY/v,UU+`x)HH*h{(SS)kNN+`h\\%diAA*kKK'hxBB,`~*EE*k(TTlyWW%diQQ&`w'^^((@@*lqWW,`d)MM&he'^^'o(FF0`c.OO-`*^^&w(GG-do/UU,hf)VV)`b(\\%diCC'`|UU(ho[[o-JJ-c*JJ*`y(TT&lkGG`kDD)he)JJ,`mXX&k(DD()EE'a'\\*hm(WW`})@@&dq'YY*lf(__'dkQQ`tRR*hoRR%`qDD+c)@@'do(AA+`r)BB)hs(NN%`iFF.q.LL*`)SS(dh(]]*`kNN&dqCC*fMM%`x@@da'WW*hd)RR'aNN(`y(FF'|UUtJJ+ds)EE(k(QQ*`})@@%i(RR+l)OO(`(@@)kLL3l4@@1hz0NN*lf)__%da(CC)`qJJleCC.`h+UU&dq'[[`e(MM%i)@@,lRR(h|(FF)kGG%`MM)qSS.i+FF%da(EE&he'SS(`r(XX,s)XX&he'ZZ)`h(EEnRR(h`)ZZ)`}(II'ho+ZZ(`*YY*dy/MM&`|*QQq(HH%@@(`HH-hu*^^(`(CC*o)OO-`v-LL+r*NN%a(ZZda'YY`a(RR(v'__)q(OO+du)CC%a(CC*huVV(oOO+p)CC)de(EE+ls)GG%`x(LL'aHH/hy+^^%`x(NN'x)XX*lf(KK&`|HH*hw)GG+lsSS(h`(CC,`~+YY(`(HH%aDD&|@@*hqRR'`xYY*k+XX(dr'YY't(II)eAA`k)EE,dz+YY&`q'^^+hd(ZZ%da']]*`b(NN&k)\\(dy*II&q(AA(hdFF+d|+EE)`}(LL&k'\\(dy(]]%`xPP+k)DD/j0YY,}*JJ+h)HHrDD%dx'UU0h`-FF(`|(]]&wLLlk[[(`oDD+k]]*{UUwTT(y)JJ*di(SSk__/`s-JJ*o(PP%aJJ&qFF)s)QQ(hd(KK,n-RR(`v(NN'fDD%q']]&\\)v(GG(dPP.i+PP'|']]%ZZ*(ZZ)xLL%i@@+k)AA&w(RR)qYY(hrNN'f)OO+`~JJ)e(HHde']]+`c(ZZ&he'[[*`w(PP'haGG-dq*UU%`i(DD,n)XXdi[[)`}(II*dbQQ'haGG%`x)LL(`(HH&kLL'dk'__%`(BB)db)MM&h|(KK)hFF`v^^-hq.JJ&`w(HH(`TTo\\EE)hx)[['x(CC`a'YY)n(DD(vHH,h-CC(h(RR'tHH+r)EE){(ZZ(o@@%JJ&heGG0`j2TT,d{*UU+x,EE`a(YY'xMM*wQQ)eLL(h`'__+`j*IIr+CC'|'UU%dx+II&`k(PP(hkBB&dqEE-le*OO'dk(]]*`{)UUhs*CC)s(GG&`k)TT%dx'[[&`|(@@(hFF*`qPP%PP'|AA-ln/SS*ho(ZZ)`xTT&lk'[[(`h(DD&h|JJ'`oTT&wAA)hkJJleGG*`wUU(hoFF'`f)MM*i(TT(r)PP)h}(RR%di*__&he(VV+|*RR*`s(QQ&eYY)hhOO%`a'^^x(LL*lfOO'hxFF&|SS%`q@@(dyGG%`i'XX(h*BB&he(JJ'`fAAdkGG%`aJJi@@*sTT-dq*QQ)hx(JJ,`f*PP&w(AA(dAA-hw/CC+`j)FF)s(LL*hmSS(oCC%`OO+dm)CC(h`(BB%`qUU+cZZ%x)HHda(GG(y,CC%`i(@@'ha'[[*`k(NN)nHH&e)@@'hf(RR(`d@@'aAA(vOO%FF(`*XX*(ZZhfVV&`|*UU%(LL'kBB%diCC+`z)JJ)h}(VV*`bTT+hf__dx)IIldGG(h`(FFdrAA&`wGG*h})CC`dMMm(LLwUU,b)MM4t3UU0do0UU+`a+ZZ)h(UU(`PP'hxSS)`kEE(DD+dh__&hk'ZZlk(KK,`s)\\'kBB,d__)hk(RR,`t)\\)h}(JJ'`a'\\(h(VV'x@@*h{)VV`u(PP(oQQ+aXX%BB&hkJJ(`o\\/hi5CC(k(JJ+`p*@@*m)LL(|(TT/o.NN,i)RReRR((@@3c0FF(h`(GG&`|'PPhk(BB(`o+@@&hk(BB(`SS*u*^^%`(NN)e@@'h|)JJ`xAA*w+@@%(AA)b@@(ho'__%da__'`t(@@)}LL-hg*JJ'`f(MM(dyAAhdGG%`FF*duQQ&heOO)`}II*{TT(h`RR%`iDD*hdOO``)AA&dkYY.`o+TT(k(@@&lk'__+`n(\\%diOO&`wBB%dxKK(`hNN)hkBB%di'UU'hx(BB(`vWW'dt']](`)YY*hw(RR,`t)\\*hu(RR`i)FF'a(XX-dh*II%`x(DDdx'WW`aRR((PP,b.@@)n(LL(hoBB&`k'XX.j+LL(`)UU+c([['hf'VVdt(II*hdKK`bLL%diEE&`wPP*mUU)hhOO&`|)HH%(FFdx)WW)`n(DD*lfOO,`d,FF(y(FF)x]],lu)__+`m@@&h|(CC+`s0LLd|,QQ`a-YY*k(NN.},TT&w)EE'ho(NN|)BB&`e(EE(h`CC`o']]-z*__%di(KKi'UU)hk(GG%`qPP,l)VV*ho(SS'dkKK*hmSS%`i'VV*s)YY%x(^^q'YY0hv.NN&`w(^^(h|NN%`MM*dfMM&`e)\\-di-YY'`a(XX%qHH(`AA%'SS)hh(^^'dtOO(h`OO`LL,hy*BB(`JJo(ZZ&`e'YY+hf)FF'dk(CC-ht,BB,`l)RR.a*\\,dr)YY*i(QQ)`hEE+k]]'o'\\)q)ZZde(AA+`h)@@'ho*ZZ`a(MM*dqUU,e*EE+`a)BB%(LL){)JJ(y(JJhJJvMM%qEE&dq)GG*`o(QQ+h)NN*wFF%`a(BBHHdxQQ*hy^^)`vSS*oLL&|)QQ-|+DD*w(QQ'hxOO`|]]&wGG'oHH+x)FF)}(MM,d*CC&h|(CC*`{.II't*FF%da']]+hp)BB)`b(HH'h|BB+`k)@@d~MM`m(^^)d{KK+`c[[)hs)RR%`q'[[+c(\\*dq)EE%i(GG'`|]]hx)JJ,yZZ*`b(PPhdOO``KK&qBB*}TT+dm)EE(ho-CC)`q(MM(vBB+ls)CC(h|(JJ.o+SS&dq(EE)`vJJ%iBBII)hkZZ*}__+dh]])hh)ZZ%da(KK*``PP&|AA*dWW)hbNN+l|)KK&dk'YY*hs+GG-i*JJ(o(BB,`h)SS-lj*SS(`h(BB.ho+[[)db(II*``NN%q'^^__&|(LL%q']]q(QQ*duMM%x__)hs)JJ'`t(FF)hkGG(drMM,hb)OO(dy,GG&`|(LL+du)EE)b(II&h|RR%di'__.`w+UU'do(QQ)hhCC(`yFF)hsKK'`oPP&|TT-u*]]+k(]]&dq)CC*b(QQ0hv1NN)`{*FFqAA%a&VV(h|'__)lb(OO%`xNN(dyCC%xUU)`kPP-b*II)hh(JJ*`{YY'hx)WW)`n(JJvOO'h|*NN%dx(II'h|SS%diGG*`i)TT(hr(VVkNN+`r)OO-o+\\(dy)II%`a(BB)xMM+f)DD(ho(JJ)`vFF't\\&he'__%`q\\x(JJ,r+RR.t2TT'hf*CC*m(RR``)EEdk(]]%x'YY)hh(WW,`~*BB-heFF)`e(DD%qLL+~)LL,aNN&heWW(`(KK`h'ZZ&h|(JJ2d/KK*dk+SS)hx(RR%`qCC(hBB&eFF*{VV-j*RR)}(__xGG(`hJJ%di'[[,`q)ZZ-h|+FF(`y(XX)hsOO(`hPPh`CC+`h^^)d{SS(h|^^'x'__%`q]]+c(\\&|)\\%xDD&wII,j,DD(v*CC+x,^^(y(VV'kZZ-h1OO&dq(YY'hfGG%`x'ZZa(@@'loGG(hdJJ%`qVV+{)]]/k,XX)q(MM+cYY&|EE)qHH%a'\\+hn*BB&`wMM%da'[[(hd^^-`u+UU)k(TT1{1XX/j-TT(o(]]%aDD*sTT'x'\\*i(NN'aAA(hJJ)le[[`qDD+c[['h|+GG/`}-DD'x(@@)vHH&heNN*`dPP)hkKK*dk)GG(`(DDvHH%q)KK*d(__-p*QQ(`o(QQ&eHH)hsKK*diKK-}1MM+h(__*`iZZ)x+AAh)HH.l+LL(hr(VV&dkAA'`fMM&h|GG,`h)QQ'ha(FF+ds+MM)hs(RR%`a'LL)d{(GG*hm)BB,dr]]&`w(NN+ds)EE,`z*HH*di(KK%`qSS'dkEEhf'^^*`k(TT(\\%q'SS+hf(ZZ'oFF%diGG)`nLL&qPP'fYY-hv+NN*lq)WW'hf(KK*`{QQ+hXX)eLL.y,LL)hx(JJ%`i'TT*d(YY%`q'YY(lk(GG+`u)JJ((AA-m+\\+hd)JJ(`k(HH'dtMM`fAA.h.@@+a*DD&dq(CC(lk'[[*ho(NN(`RRoNN)hFF'fWWdtQQ(``)MM+ln(__'`tHH%x@@,hu)ZZ)k(FF%`FF'f'UUhaVV*`o(QQ+h^^,a)KK(lk(GG,`b+TT*hm)NN&dq(GG*`iNN+k]](h|NN*dbMM%`FF'dtWW&`wLL*kRR%da'__.`o0TT%q(EE*diOO'`f-LL(ho(VV&dkYY+hp)CC`j(]]'lo+GG,`m*BB'hf(JJ+`d\\,h)RR)db(II(hoNN`rLL%daSSxCC&qKK'tGG&kIIqKK*hy.ZZ(([[%dx'__.`n/MM*i)NN)v^^%q'XX&lk(CChkFF`w)PP+jAAln(__,du*EE%`(DD'|DD*h}VV``SS)hsCC%`'ZZ&hkZZ*q(VV,`n)XX&dkMM)hhSS&`|(PP,m.@@*hm(OO%`xXX(dyKK*hs*RR&dk']]%`q(MM*o-QQ)s(]]hxKK&`qBB(oII*bHH&dqAA){MM*luSS'`k@@*ly__)`qII'f'YY&w(OO*dfQQ(`vTT+hf[['WW*`oTT(dy+UU%`i(NN)d{KK(h'__&`k(PP%GG.b+HH+v*LL'|(QQ,dj)QQ4l}2__%`q(XX(hr)RR%`x(BB(dhGG'`a)PP(`(AA&|YY)bTTnLLde)QQ%a'KK,hb)JJ*``YYy(XX%qNN*h}RR'fCC(`d)TT&|(XX%da'__*hw(VV%`q']],m)XX*hq(RR(`dHH,m)ZZ%q(TT'dt)II+sEE%`q(QQ*dPP%@@*h{*GG&`q'^^,d)RR'hf(BB%`q)GGq(EEdxOO){II'loSS)h}KK%dxGG+`aUU%q'VV'ha__o(RR-`p*\\df/II0`i3VV,o,@@*lu*CCh{(RR,`w-CC*b(LLhsOO%`CC0m.@@/h,@@'hxKK(`(FF+v)JJ&`w(CC%a'^^+dx)MM.``+BB0r-]],{*@@'hf(BB*{)CC%`i'JJ&wNN%aTTa(@@qDD*lq)GG)`}(PP%q'JJ&k(LL,d*CC&he'^^*u(RR&`q'XX)db)EE`{(JJ+hdZZ'xBB+d)RR%`(VViBBq'DD+r)EE*w+TTb(NN'hxVVa)[[`|(TTk@@%DD*diQQkQQ+`s)DD)d{(MM'oQQ*hdOO+`a*MM,de)OO+`{+EE%)MM1ly2SS,`a)NN*lf(KK(`oPPhd'__.l,GG%da(CC)`sII/g,QQ*hf(VV&`q'\\*hs(SS}SS&`wHH,l)YY&e(HH(yNN'oHH(XX*w)@@&q(HH(`AA&dk']]k(UU'hfCCxFF+kZZ`|)HH&hk(VV(d)FF`|(AA*hoRR'dt'__)`k(XX't'RR,hf*FFn[[(`r(XX%a@@*i)@@)d{(KK(`|EE)db]](h`GG%di'YY*hs)[[(`v(NN-s0\\*`-DD'hf(FFdtEE` `` @ 07070100037680000081a40000000000000000000000014cc7b6170000332f000000b500010002ffffffffffffffff0000002800000000root/usr/local/share/tek2plot/scale.tek84f`!X3bq!X4e`!Y3aq!Y4e`!T3n{!S4f`!S4e`!^3m{!^4f`!]3aq!V3bq![3nv"B3mv"K3ex"K3ny"J3kz"I3b{"H3a{"F3hz"D3by"B3lv"B3du"B3fs"B3lq"D3aq"F3cq"G3oq"I3es"K3nv"J3by"J3kz"I3a{"F3kz"D3ay"C3nv"B3fu"B3es"C3oq"D3aq"F4d`"Q3`q"Q4g`"Q3cq"Q3`{"Y3ct"Q3nv"U3cq"Y3ov"T3`q"Y4d`"O4g`"Q3c{"V3a{"[3`q"O3`q"T3cq"V3aq"[4e`#@3at#@3lq#A3bq#B3cq#C3mq#E3ds#F4d`#A3`t#A3oq#A3bq#B3`{"^3c{#C3`{#K3`q#K3c{#K3cq#K3ov#K3by#L3hz#N3b{#O3b{#Q3iz#R3my#R3by#Q3oy#P3jz#Q3`{#I3c{#K3`q#I3`q#N3a{#Z3hz#X3by#V3lv#V3du#V3fs#V3lq#X3aq#Z3cq#[3oq#]3es#_3du$@3lv$@3ay#_3kz#]3c{#[3a{#Z3a{#Z3kz#X3ay#W3nv#V3fu#V3es#W3oq#X3aq#Z3cq#[3lq#]3fs#^3eu#_3mv#_3by#^3hz#]3c{#[3c{$E3cq$E3b{$F3bq$F3by$F3hz$H3`{$J3b{$K3kz$M3by$N3bq$N3b{$K3hz$M3cy$M3cq$M3b{$C3b{$F3bq$C3cq$H3bq$K3bq$P4g`$U3h$U3o~$U3j$V4g`$U3c{$U3cq$U3b{$V3bq$V3b{$S3b{$V3bq$S3bq$X3`{$]3cq%D3b{$]3bq%E3b{%E3`q$]3b{$[3c{$_3c{%B3`{%G3bq$[3cq$_3cq%B3`q%G3`q%W4f`%Z3bq%Z4e`%[3aq%[3ay%[3kz%\3c{%^3a{&@3jz&B3ay&C3aq&C3a{&@3kz&A3by&B3bq&B4e`%X4e`%[3aq%X3bq%]3aq&@3aq&E3ny&J3by&J3cy&I3oy&I3jz&J3c{&K3c{&N3iz&P3ly&Q3fx&Q3fs&Q3mq&R3`q&S3ly&Q3ds&Q3nq&Q3`q&S3cq&S3dx&Q3iw&P3ov&K3cv&I3ht&I3ds&I3oq&I3cq&K3`q&N3nq&O3ds&Q3ov&K3bv&J3kt&I3gs&I3nq&J3cq&K3c{&X3cq&X3b{&Y3bq&Y3nv&Y3ay&Z3kz&[3a{&]3a{&_3hz'@3ly'@3ay&_3ny&^3iz&_3c{&V3b{&Y3cq&V3cq&[4e`'L3aq'L4d`'M3`q'M3ay'L3hz'K3b{'I3`{'H3kz'E3by'D3ov'C3gu'C3fs'D3oq'E3`q'H3bq'I3lq'K3es'L3`{'H3jz'F3`y'E3nv'D3fu'D3ds'E3nq'F3`q'H4e`'J4d`'M3aq'L3aq'O3`q'_3`y(J3ex(I3hw(J3gx(J3cy(J3iz(I3c{(G3b{(E3jz(C3`y(B3mv(A3eu(A3ds(B3nq(C3bq(E3`q(G3mq(I3gs(J3b{(E3iz(D3cy(B3lv(B3du(B3gs(B3mq(D3bq(E3a{(S3iz(Q3cy(O3lv(O3du(O3gs(O3mq(Q3aq(S3cq(T3lq(W3fs(X3du(Y3lv(Y3by(X3hz(W3c{(T3a{(S3a{(S3hz(R3by(P3ov(O3gu(O3fs(P3lq(R3aq(S3cq(T3mq(V3gs(W3fu(X3nv(X3cy(W3iz(V3c{(T3`{(_3`l(_3b{(_3bl(_3by(_3hz)A3b{)B3`{)D3hz)F3by)G3mv)H3eu)H3fs)G3lq)F3`q)D3bq)B3lq)A3fs(_3`{)D3jz)E3cy)F3nv)G3fu)G3gs)F3nq)E3`q)D3c{(\3b{(_3cl(\3cl)A3a{)M3cq)Q3`{)N3kr)Q3`{)V3cq)Q3an)P3ol)N3al)M3bl)L3ll)L3jm)L3ml)M3`{)L3a{)P3`{)S3b{)W3bq*F3ly*P3c{*P3gx*P3ly*P3iz*O3c{*M3`{*K3jz*I3oy*H3gx*H3jw*I3lv*K3fu*N3ht*P3ct*P3cy*H3fx*I3hw*K3bv*N3du*P3kt*P3kr*P3lq*P3bq*N3cq*K3mq*J3jr*I3ct*H3cq*H3jr*I3cy*]3dx*]3kw*]3fx*^3by*^3hz*]3b{*[3b{*Y3iz*W3cy*U3lv*U3du*U3gs*U3mq*W3bq*Y3cq*Z3lq*]3fs*^3b{*Y3hz*X3by*V3ov*U3gu*U3fs*V3lq*X3bq*Y3my+D3ay+D3by+C3ny+C3iz+D3c{+E3b{+H3hz+J3oy+J3fx+K3fs+K3mq+L3`q+M3oy+J3gs+J3nq+K3`q+M3bq+M3gx+J3hw+J3ov+E3bv+C3kt+B3gs+B3nq+C3cq+E3cq+G3mq+I3gs+J3ov+E3av+D3jt+C3fs+C3mq+D3cq+E4g`+R3cq+R4f`+S3bq+S4f`+P4f`+S3bq+P3bq+U4f`+Z3h+Z3n~+Z3i+[4f`+Z3b{+Z3bq+Z3a{+[3aq+[3b{+X3a{+[3bq+X3bq+]3b{,B3bq,B3a{,C3aq,C3ay,C3kz,D3`{,G3a{,H3jz,J3ay,K3aq,K3a{,H3kz,I3by,J3bq,J3b{,@3a{,C3bq,@3bq,E3aq,H3bq,M3b{,T3iz,S3ny,R3gx,Q3ov,Q3fu,R3it,S3bt,T3`t,V3jt,W3eu,X3lv,Y3dx,Y3my,X3jz,W3`{,V3b{,T3iz,S3by,R3bv,R3it,S3jt,W3av,X3ay,X3jz,W3my,X3hz,Y3b{,Z3jz,Z3hz,Y3fu,R3kt,Q3ds,Q3hr,Q3cq,Q3dp,T3fp,W3ko,Y3nn,Z3hr,Q3oq,Q3`q,T3bq,W3gp,Y3nn,Z3bn,Z3ol,Y3bl,W3al,S3ll,Q3an,P3mn,P3dp,Q3aq,S3`q-K4f`-N3bt-N3mq-O3cq-P3aq-R3oq-S3fs-T4e`-O3at-O3lq-P3cq-P3b{-L3a{-R3ov-X3nv.A3fx.A3oy.@3hz.@3b{-^3a{-\3iz-Z3cy-X3lv-X3du-X3gs-X3mq-Z3aq-\3cq-]3lq.@3fs.A3ov.@3cy.@3hz.@3a{-\3hz-[3by-Y3ov-X3gu-X3fs-Y3lq-[3aq-\3a{.G3aq.G3`{.H3`q.H3`y.H3iz.I3b{.K3`{.M3hz.O3cy.O3cq.O3`{.M3jz.N3`y.O3`q.O3cy.O3iz.Q3b{.S3`{.U3hz.W3cy.W3cq.W3`{.U3iz.V3`y.W3`q.W3`{.E3`{.H3`q.E3`q.J3`q.M3`q.R3`q.U3`q.Z3`{._3`l._3c{._3cl._3cy._3iz/A3b{/B3`{/D3iz/F3cy/G3nv/H3fu/H3gs/G3mq/F3`q/D3bq/B3mq/A3gs._3`{/D3jz/E3`y/G3ov/G3gu/G3ds/G3nq/E3`q/D3c{.\3c{._3cl.\3`l/B4e`/N3aq/N4d`/O3`q/O4d`/L4d`/O3`q/L3`q/Q3ly/V3`y/V3by/U3ny/U3hz/V3b{/W3b{/Z3hz/\3ny/\3ex/]3es/]3lq/^3cq/^3ny/\3fs/\3mq/]3cq/^3bq/_3fx/\3hw/\3nv/W3bv/U3kt/T3gs/T3nq/U3bq/W3cq/Y3mq/[3fs/\3nv/W3`v/V3jt/U3fs/U3lq/V3bq/W4f`0D3bt0D3mq0E3cq0F3aq0H3nq0I3es0J4e`0E3at0E3lq0F3cq0F3b{0B3a{0H3ov0N3mv0W3ex0W3ny0V3hz0V3b{0T3a{0R3hz0P3cy0N3lv0N3du0N3gs0N3lq0P3aq0R3cq0S3lq0V3es0W3nv0V3by0V3hz0V3a{0R3kz0P3by0O3ov0N3gu0N3fs0O3oq0P3aq0R: `` @ `` Y `y Y `y @ `` @!di!A!dh!@!lf _!ld ^!fb ]!f` ] l} ^ l{ _ dz!@ dy!A!dh!@!df _!nd ^!db ^!d` ^ n} ^ d| _ dz!@!fe!E!ne!F!dg!H l|!H!nf!G n|!G n|!E l|!J!dg!Q!nf!O!fe!N!lb!N!da!N n~!N f}!O l|!Q l|!R f}!S n~!T!da!U!lb!U!fe!T!nf!S!dg!R!dg!Q!dg!Q!lf!P!ff!O!de!O!nb!N!fa!N l~!O n}!O d}!P l|!Q l|!R d}!S n}!S l~!T!fa!T!nb!T!de!T!ff!S!lf!S!dg!R!dg![!nf!Y!fe!X!lb!X!da!X n~!X f}!Y l|![ l|!\ f}!] n~!^!da!_!lb!_!fe!^!nf!]!dg!\!dg![!dg![!lf!Z!ff!Y!de!Y!nb!X!fa!X l~!Y n}!Y d}!Z l|![ l|!\ d}!] n}!] l~!^!fa!^!nb!^!de!^!ff!]!lf!]!dg!\ l|"C f}"B l}"C f}"C f|"C d{"C nz"B!fe"H!ne"I!dg"K l|"K!nf"J n|"J n|"H l|"M!dg"T!nf"R!fe"Q!lb"Q!da"Q n~"Q f}"R l|"T l|"U f}"V n~"W!da"X!lb"X!fe"W!nf"V!dg"U!dg"T!dg"T!lf"S!ff"R!de"R!nb"Q!fa"Q l~"R n}"R d}"S l|"T l|"U d}"V n}"V l~"W!fa"W!nb"W!de"W!ff"V!lf"V!dg"U!dg"^!nf"\!fe"[!lb"[!da"[ n~"[ f}"\ l|"^ l|"_ f}#@ n~#A!da#B!lb#B!fe#A!nf#@!dg"_!dg"^!dg"^!lf"]!ff"\!de"\!nb"[!fa"[ l~"\ n}"\ d}"] l|"^ l|"_ d}#@ n}#@ l~#A!fa#A!nb#A!de#A!ff#@!lf#@!dg"_!di#E!dh#F!lf#G!ld#H!fb#H!f`#H l}#H l{#G dz#F dy#E!dh#F!df#G!nd#G!db#H!d`#H n}#G d|#G dz#F `` @ ``#]#`}#]#`} @ `` @$dm$E$dl$D$lj$C$lh$B$ff$A$fd$A$la$B#l$C#d~$D#d}$E$dl$D$dj$C$nh$B$df$B$dd$B$na$B$d`$C#d~$D$dk$I$df$H$df$H$dg$I$ng$J$lg$L$fg$M$ff$N$ld$O$lc$O$fb$N$fa$M$l`$L$n`$J$da$I$na$H$lb$H$dc$H$nc$H$dc$I$nb$H$lg$L$dg$M$df$N$nd$N$nc$N$db$N$da$M$l`$L$dk$I$dk$N$lj$I$nj$K$dk$N$dk$U$nj$S$fi$R$lf$R$de$R$nb$R$fa$S$l`$U$l`$V$fa$W$nb$X$de$Y$lf$Y$fi$X$nj$W$dk$V$dk$U$dk$U$lj$T$fj$S$di$S$nf$R$fe$R$lb$S$na$S$da$T$l`$U$l`$V$da$W$na$W$lb$X$fe$X$nf$X$di$X$fj$W$lj$W$dk$V$dk$_$nj$]$fi$\$lf$\$de$\$nb$\$fa$]$l`$_$l`%@$fa%A$nb%B$de%C$lf%C$fi%B$nj%A$dk%@$dk$_$dk$_$lj$^$fj$]$di$]$nf$\$fe$\$lb$]$na$]$da$^$l`$_$l`%@$da%A$na%A$lb%B$fe%B$nf%B$di%B$fj%A$lj%A$dk%@$l`%G$fa%F$la%G$fa%G$f`%G#d%G#n~%F$dk%L$df%K$df%K$dg%L$ng%M$lg%O$fg%P$ff%Q$ld%R$lc%R$fb%Q$fa%P$l`%O$n`%M$da%L$na%K$lb%K$dc%K$nc%K$dc%L$nb%K$lg%O$dg%P$df%Q$nd%Q$nc%Q$db%Q$da%P$l`%O$dk%L$dk%Q$lj%L$nj%N$dk%Q$dk%X$nj%V$fi%U$lf%U$de%U$nb%U$fa%V$l`%X$l`%Y$fa%Z$nb%[$de%\$lf%\$fi%[$nj%Z$dk%Y$dk%X$dk%X$lj%W$fj%V$di%V$nf%U$fe%U$lb%V$na%V$da%W$l`%X$l`%Y$da%Z$na%Z$lb%[$fe%[$nf%[$di%[$fj%Z$lj%Z$dk%Y$dk&B$nj&@$fi%_$lf%_$de%_$nb%_$fa&@$l`&B$l`&C$fa&D$nb&E$de&F$lf&F$fi&E$nj&D$dk&C$dk&B$dk&B$lj&A$fj&@$di&@$nf%_$fe%_$lb&@$na&@$da&A$l`&B$l`&C$da&D$na&D$lb&E$fe&E$nf&E$di&E$fj&D$lj&D$dk&C$dm&I$dl&J$lj&K$lh&L$ff&L$fd&L$la&L#l&K#d~&J#d}&I$dl&J$dj&K$nh&K$df&L$dd&L$na&K$d`&K#d~&J `` @ ``'Z'`z'Z'`z @ `` @(dj(B(di(A(lg(@(le'_(fc'^(fa'^'l~'_'l|(@'d{(A'dz(B(di(A(dg(@(ne'_(dc'_(da'_'n~'_'d}(@'d{(A(ff(F(nf(G(dh(I'l}(I(ng(H'n}(H'n}(F'l}(K(dh(R(ng(P(ff(O(lc(O(db(O'n(O'f~(P'l}(R'l}(S'f~(T'n(U(db(V(lc(V(ff(U(ng(T(dh(S(dh(R(dh(R(lg(Q(fg(P(df(P(nc(O(fb(O'l(P'n~(P'd~(Q'l}(R'l}(S'd~(T'n~(T'l(U(fb(U(nc(U(df(U(fg(T(lg(T(dh(S(dh(\(ng(Z(ff(Y(lc(Y(db(Y'n(Y'f~(Z'l}(\'l}(]'f~(^'n(_(db)@(lc)@(ff(_(ng(^(dh(](dh(\(dh(\(lg([(fg(Z(df(Z(nc(Y(fb(Y'l(Z'n~(Z'd~(['l}(\'l}(]'d~(^'n~(^'l(_(fb(_(nc(_(df(_(fg(^(lg(^(dh(](dh)F(ng)D(ff)C(lc)C(db)C'n)C'f~)D'l})F'l})G'f~)H'n)I(db)J(lc)J(ff)I(ng)H(dh)G(dh)F(dh)F(lg)E(fg)D(df)D(nc)C(fb)C'l)D'n~)D'd~)E'l})F'l})G'd~)H'n~)H'l)I(fb)I(nc)I(df)I(fg)H(lg)H(dh)G'l})N'f~)M'l~)N'f~)N'f})N'd|)N'n{)M(ff)S(nf)T(dh)V'l})V(ng)U'n})U'n})S'l})X(dh)_(ng)](ff)\(lc)\(db)\'n)\'f~)]'l})_'l}*@'f~*A'n*B(db*C(lc*C(ff*B(ng*A(dh*@(dh)_(dh)_(lg)^(fg)](df)](nc)\(fb)\'l)]'n~)]'d~)^'l})_'l}*@'d~*A'n~*A'l*B(fb*B(nc*B(df*B(fg*A(lg*A(dh*@(dh*I(ng*G(ff*F(lc*F(db*F'n*F'f~*G'l}*I'l}*J'f~*K'n*L(db*M(lc*M(ff*L(ng*K(dh*J(dh*I(dh*I(lg*H(fg*G(df*G(nc*F(fb*F'l*G'n~*G'd~*H'l}*I'l}*J'd~*K'n~*K'l*L(fb*L(nc*L(df*L(fg*K(lg*K(dh*J(dh*S(ng*Q(ff*P(lc*P(db*P'n*P'f~*Q'l}*S'l}*T'f~*U'n*V(db*W(lc*W(ff*V(ng*U(dh*T(dh*S(dh*S(lg*R(fg*Q(df*Q(nc*P(fb*P'l*Q'n~*Q'd~*R'l}*S'l}*T'd~*U'n~*U'l*V(fb*V(nc*V(df*V(fg*U(lg*U(dh*T(dj*Z(di*[(lg*\(le*](fc*](fa*]'l~*]'l|*\'d{*['dz*Z(di*[(dg*\(ne*\(dc*](da*]'n~*\'d}*\'d{*[ `` @ ``/T/`t/T/`t @ `` @0dd/\0dc/[0la/Z/l/Y/f}/X/f{/X/lx/Y/lv/Z/du/[/dt/\0dc/[0da/Z/n/Y/d}/Y/d{/Y/nx/Y/dw/Z/du/[0f`/_/l0@/f/_/l/_0d`/_0fa/_0la0@0fb0A0fb0C0la0E0fa0E0d`0F/d0F/f~0E/d}0D/f|0A/n{0@/nz/_/dy/_/lw/_0fb0C0na0D0da0E0f`0E/f0E/d~0E/f}0C/f|0A/lx/_/fy/_/fy0@/dx0C/fx0D/nx0E/dy0F/fy0@/lw0C/lw0E/fx0E/dy0F/dz0F0db0L0na0J0f`0I/l}0I/d|0I/ny0I/fx0J/lw0L/lw0M/fx0N/ny0O/d|0P/l}0P0f`0O0na0N0db0M0db0L0db0L0la0K0fa0J0d`0J/n}0I/f|0I/ly0J/nx0J/dx0K/lw0L/lw0M/dx0N/nx0N/ly0O/f|0O/n}0O0d`0O0fa0N0la0N0db0M0db0V0na0T0f`0S/l}0S/d|0S/ny0S/fx0T/lw0V/lw0W/fx0X/ny0Y/d|0Z/l}0Z0f`0Y0na0X0db0W0db0V0db0V0la0U0fa0T0d`0T/n}0S/f|0S/ly0T/nx0T/dx0U/lw0V/lw0W/dx0X/nx0X/ly0Y/f|0Y/n}0Y0d`0Y0fa0X0la0X0db0W0db1@0na0^0f`0]/l}0]/d|0]/ny0]/fx0^/lw1@/lw1A/fx1B/ny1C/d|1D/l}1D0f`1C0na1B0db1A0db1@0db1@0la0_0fa0^0d`0^/n}0]/f|0]/ly0^/nx0^/dx0_/lw1@/lw1A/dx1B/nx1B/ly1C/f|1C/n}1C0d`1C0fa1B0la1B0db1A/lw1H/fx1G/lx1H/fx1H/fw1H/dv1H/nu1G0f`1L/l1M/f1L/l1L0d`1L0fa1L0la1M0fb1N0fb1P0la1R0fa1R0d`1S/d1S/f~1R/d}1Q/f|1N/n{1M/nz1L/dy1L/lw1L0fb1P0na1Q0da1R0f`1R/f1R/d~1R/f}1P/f|1N/lx1L/fy1L/fy1M/dx1P/fx1Q/nx1R/dy1S/fy1M/lw1P/lw1R/fx1R/dy1S/dz1S0db1Y0na1W0f`1V/l}1V/d|1V/ny1V/fx1W/lw1Y/lw1Z/fx1[/ny1\/d|1]/l}1]0f`1\0na1[0db1Z0db1Y0db1Y0la1X0fa1W0d`1W/n}1V/f|1V/ly1W/nx1W/dx1X/lw1Y/lw1Z/dx1[/nx1[/ly1\/f|1\/n}1\0d`1\0fa1[0la1[0db1Z0db2C0na2A0f`2@/l}2@/d|2@/ny2@/fx2A/lw2C/lw2D/fx2E/ny2F/d|2G/l}2G0f`2F0na2E0db2D0db2C0db2C0la2B0fa2A0d`2A/n}2@/f|2@/ly2A/nx2A/dx2B/lw2C/lw2D/dx2E/nx2E/ly2F/f|2F/n}2F0d`2F0fa2E0la2E0db2D0db2M0na2K0f`2J/l}2J/d|2J/ny2J/fx2K/lw2M/lw2N/fx2O/ny2P/d|2Q/l}2Q0f`2P0na2O0db2N0db2M0db2M0la2L0fa2K0d`2K/n}2J/f|2J/ly2K/nx2K/dx2L/lw2M/lw2N/dx2O/nx2O/ly2P/f|2P/n}2P0d`2P0fa2O0la2O0db2N0dd2T0dc2U0la2V/l2W/f}2W/f{2W/lx2W/lv2V/du2U/dt2T0dc2U0da2V/n2V/d}2W/d{2W/nx2V/dw2V/du2U `` @ ``7N7`n7N7`n @ `` @7d~7V7d}7U7l{7T7ly7S7fw7R7fu7R7lr7S7lp7T7do7U7dn7V7d}7U7d{7T7ny7S7dw7S7du7S7nr7S7dq7T7do7U7fz7Y7ly7Z7fy7Y7ly7Y7dz7Y7f{7Y7l{7Z7f|7[7f|7]7l{7_7nz7_7fy7_7dx7_7nw7]7lw7\7f|7]7n{7^7lz7_7dy7_7fx7^7nw7]7nw7]7fw7^7fv7_7du8@7ls8@7nr7_7dr7_7nq7]7nq7[7dr7Z7nr7Y7ls7Y7dt7Y7nt7Y7dt7Z7ns7Y7lv7_7fu7_7ns7_7lr7_7fr7^7nq7]7d|8F7n{8D7fz8C7lw8C7dv8C7ns8C7fr8D7lq8F7lq8G7fr8H7ns8I7dv8J7lw8J7fz8I7n{8H7d|8G7d|8F7d|8F7l{8E7f{8D7dz8D7nw8C7fv8C7ls8D7nr8D7dr8E7lq8F7lq8G7dr8H7nr8H7ls8I7fv8I7nw8I7dz8I7f{8H7l{8H7d|8G7d|8P7n{8N7fz8M7lw8M7dv8M7ns8M7fr8N7lq8P7lq8Q7fr8R7ns8S7dv8T7lw8T7fz8S7n{8R7d|8Q7d|8P7d|8P7l{8O7f{8N7dz8N7nw8M7fv8M7ls8N7nr8N7dr8O7lq8P7lq8Q7dr8R7nr8R7ls8S7fv8S7nw8S7dz8S7f{8R7l{8R7d|8Q7d|8Z7n{8X7fz8W7lw8W7dv8W7ns8W7fr8X7lq8Z7lq8[7fr8\7ns8]7dv8^7lw8^7fz8]7n{8\7d|8[7d|8Z7d|8Z7l{8Y7f{8X7dz8X7nw8W7fv8W7ls8X7nr8X7dr8Y7lq8Z7lq8[7dr8\7nr8\7ls8]7fv8]7nw8]7dz8]7f{8\7l{8\7d|8[7lq9B7fr9A7lr9B7fr9B7fq9B7dp9B7no9A7fz9F7ly9G7fy9F7ly9F7dz9F7f{9F7l{9G7f|9H7f|9J7l{9L7nz9L7fy9L7dx9L7nw9J7lw9I7f|9J7n{9K7lz9L7dy9L7fx9K7nw9J7nw9J7fw9K7fv9L7du9M7ls9M7nr9L7dr9L7nq9J7nq9H7dr9G7nr9F7ls9F7dt9F7nt9F7dt9G7ns9F7lv9L7fu9L7ns9L7lr9L7fr9K7nq9J7d|9S7n{9Q7fz9P7lw9P7dv9P7ns9P7fr9Q7lq9S7lq9T7fr9U7ns9V7dv9W7lw9W7fz9V7n{9U7d|9T7d|9S7d|9S7l{9R7f{9Q7dz9Q7nw9P7fv9P7ls9Q7nr9Q7dr9R7lq9S7lq9T7dr9U7nr9U7ls9V7fv9V7nw9V7dz9V7f{9U7l{9U7d|9T7d|9]7n{9[7fz9Z7lw9Z7dv9Z7ns9Z7fr9[7lq9]7lq9^7fr9_7ns:@7dv:A7lw:A7fz:@7n{9_7d|9^7d|9]7d|9]7l{9\7f{9[7dz9[7nw9Z7fv9Z7ls9[7nr9[7dr9\7lq9]7lq9^7dr9_7nr9_7ls:@7fv:@7nw:@7dz:@7f{9_7l{9_7d|9^7d|:G7n{:E7fz:D7lw:D7dv:D7ns:D7fr:E7lq:G7lq:H7fr:I7ns:J7dv:K7lw:K7fz:J7n{:I7d|:H7d|:G7d|:G7l{:F7f{:E7dz:E7nw:D7fv:D7ls:E7nr:E7dr:F7lq:G7lq:H7dr:I7nr:I7ls:J7fv:J7nw:J7dz:J7f{:I7l{:I7d|:H7d~:N7d}:O7l{:P7ly:Q7fw:Q7fu:Q7lr:Q7lp:P7do:O7dn:N7d}:O7d{:P7ny:P7dw:Q7du:Q7nr:P7dq:P7do:O `` @ ``?H7`n?H7`n @ `` @7f~D7l{>C7dz>B7nw>A7fv>A7ls>B7dr>C7nq>D7nq>E7dr>G7ls>H7fv>H7nw>H7dz>H7l{>G7f|>E7f|>D7f|>D7n{>C7d{>C7fz>B7lw>B7dv>B7ns>B7lr>C7fr>C7nq>D7nq>E7fr>F7lr>G7ns>G7dv>H7lw>H7fz>G7d{>G7n{>F7f|>E7f|>N7l{>M7dz>L7nw>K7fv>K7ls>L7dr>M7nq>N7nq>O7dr>Q7ls>R7fv>R7nw>R7dz>R7l{>Q7f|>O7f|>N7f|>N7n{>M7d{>M7fz>L7lw>L7dv>L7ns>L7lr>M7fr>M7nq>N7nq>O7fr>P7lr>Q7ns>Q7dv>R7lw>R7fz>Q7d{>Q7n{>P7f|>O7f|>X7l{>W7dz>V7nw>U7fv>U7ls>V7dr>W7nq>X7nq>Y7dr>[7ls>\7fv>\7nw>\7dz>\7l{>[7f|>Y7f|>X7f|>X7n{>W7d{>W7fz>V7lw>V7dv>V7ns>V7lr>W7fr>W7nq>X7nq>Y7fr>Z7lr>[7ns>[7dv>\7lw>\7fz>[7d{>[7n{>Z7f|>Y7f~>_7f}?@7n{?A7ny?B7dw?C7du?C7nr?B7np?A7fo?@7fn>_7f}?@7f{?A7ly?B7fw?B7fu?B7lr?B7fq?A7fo?@0707010003767f000081a40000000000000000000000014cc7b61700000cec000000b500010002ffffffffffffffff0000002900000000root/usr/local/share/tek2plot/ocpred.tek+gd5U+fd6T+fi6T*f6T+fd6T+dd7S+di7S*d7S+dd7S+gd8Q+gi8Q*g8Q+gd8Q+ed9P+ei9P*e9P+ed9P+dd:O+di:O*d:O+dd:O+fd;M+fi;M*f;M+fd;M+edI+fi>I*f>I+fd>I+dd?H+di?H*d?H+dd?H+dd?H+gd5U,cc5U,cc5Z,cc5P,cc5U-ka5U-ka5Z-ka5P-ka5U.g`5U.g`5Z.g`5P.g`5U.o~5U.o~5Z.o~5P.o~5U/k}5U/k}5Z/k}5P/k}5U0c|5U0c|5Z0c|5P0c|5U1oz5U1oz5Z1oz5P1oz5U2gy5U2gy5Z2gy5P2gy5U3cx5U3cx5Z3cx5P3cx5U4kv5U4kv5Z4kv5P4kv5U4kv5U+gd5U+ed4W*e4W+ei4W+ed4W+fd3X*f3X+fi3X+fd3X+dd2Z*d2Z+di2Z+dd2Z+ed1[*e1[+ei1[+ed1[+gd0\*g0\+gi0\+gd0\+dd/^*d/^+di/^+dd/^+fd._*f._+fi._+fd._+gd.@*g.@+gi.@+gd.@+ed-B*e-B+ei-B+ed-B+fd,C*f,C+fi,C+fd,C+fd,C+gd5U*oe5U*oe5P*oe5Z*oe5U)cg5U)cg5P)cg5Z)cg5U(kh5U(kh5P(kh5Z(kh5U'oi5U'oi5P'oi5Z'oi5U&gk5U&gk5P&gk5Z&gk5U%kl5U%kl5P%kl5Z%kl5U$cn5U$cn5P$cn5Z$cn5U#go5U#go5P#go5Z#go5U"op5U"op5P"op5Z"op5U!cr5U!cr5P!cr5Z!cr5U!cr5U4kv5U4k{5PN+fd,C*hl,FE!cr5U cy5PS+dd?H*hl>YW%`o @,cc5U,nb5T,nb5S,mb5R,ib5Q,db5P,`b5O,oa5M,ka5L,fa5K,o`5J,k`5I,``5I+h5H+`5G+h~5F+a~5E+j}5D+c}5C+g|5B+h{5B+a{5A+fz5@+ky4_+lx4_+bx4^+gw4]+iv4]+ju4\+lt4\+bt4[+ds4[+fr4Z+dq4Z+fp4Y+eo4Y+kn4X+fm4X+el4X+`k4X+cj4W+nh4W+mg4W+if4W+ie4W+ed4W+ac4W+ab4W+m`4W*n4W*k~4W*h}4X*e|4X*f{4X*cz4X*ey4Y*fx4Y*hw4Z*jv4Z*hu4[*jt4[*ls4\*bs4\*dr4]*gq4]*jp4^*lo4_*co4_*fn5@*im5A*`m5B*gl5B*nk5C*bk5D*ij5E*`j5F*ki5F*ci5G*kh5H*ch5I*og5J*fg5K*cg5L*of5M*hf5O*df5P*af5Q*me5R*ne5S*ne5T*oe5U*le5W*le5X*me5Y*af5Z*ff5[*jf5\*of5]*cg5^*dg6@*og6@*og6@*ch6A*jh6B*bi6C*ji6D*bj6E*ij6F*`k6G*kk6G*gl6H*bm6I*im6J*dn6K*co6K*no6L*hp6M*gq6M*ar6N*`s6O*ns6O*ht6P*fu6P*dv6Q*fw6Q*dx6R*ey6R*cz6R*d{6S*e|6S*j}6S*k~6S*l6T+m`6T+ab6T+ac6T+fd6T+ie6T+if6T+mg6T+lh6T+cj6S+bk6S+el6S+dm6S+kn6R+eo6R+dp6R+bq6Q+`r6Q+bs6P+`t6P+nt6O+hu6O+fv6N+gw6M+`x6M+nx6L+ky6K+dz6K+a{6J+j{6I+g|6H+l|6H+h}6G+a~6F+j~6E+c6D+k6C,c`6B,k`6A,o`6@,da6@,ka5^,oa5],bb5\,fb5[,ib5Z,mb5Y,lb5X,lb5W,cc5U$`l?@$`l?J$`l?E%`u?E%`u?@%`u?J%`j9Y 0.1"$`t9Y 2148 km#`v9YStar position#``9Yin sky plane"`j9YFrom 2:40: 0!`t9YEach 0: 1: 0+fd,C+fi,RSUN->.ke7[.di7[.na7\.ke7[-k{8@SAA.ke7[.`b7L.me7K-g~7L.`b7L-h~6\.eb6[-oz6\-h~6\-lz6L-i~6K-cw6L-lz6L-dw5\-a{5[-ks5\-dw5\-ms5L-jw5K-`p5M-ms5L-ap4\-ns4[-dl4]-ap4\-il4L-fp4K-lh4M-il4L-ai3\-nl3[-de3]-ai3\-fe3L-ci3K-ia3M-fe3L-na2\-ke2[,a~2]-na2\,b~2L-oa2K,ez2M,b~2L,kz1\,d~1\,nv1],kz1\,cw1L,lz1L,fs1M,cw1L,ds0],aw0\,ko0],ds0],lo0M,is0L,cl0M,lo0M,dl/],ap/\,kh/],dl/],ih/M,fl/L,ld/N,ih/M,ae.],nh.\,da.^,ae.],fa.M,ce.L+i}.N,fa.M+n}-],ka-\+az-^+n}-]+gz-M+`~-M+jv-N+gz-M+kv,]+dz,]+nr,^+kv,]+`s,N+mv,M+go,N+`s,N7lv @May 4 1986 Occultation of nepklem 1026 by Triton (N1)7h` @Observed from SAAO Sutherland 74" Long= -20 48 44.3 Lat= -32 22 43.46dj @13.11-magnitude star at RA= 18h 24m 16.1231s Dec=-22d 13' 22.807" 5`t @ (1950) RA= 18h 22m 5.3070s Dec=-22d 14' 27.910" 4l} @Closest at 2:45:30 U.T. 4hg @ Radial= 4158.7 km = 0.19"3dq @ Planet= 1600.0 km = 0.07"2`{ @ ET - UT = 56.1709 sec DE-1182ld @ P.A.= 12.7 deg.1hn @ Phase = 1.5 deg = 100.0%0dx @ Alt= 75 d, Az= -36 d0`b @ Sun alt=-30 d, Az= 90 d/lk @ Sun:127.8 d, Moon: 11.9 d.hu @ V =0.0007 "/s = 14.22 km/s-d @ D = 29.619079 A.U.-`i @Doug Mink 16: 4 Nov 11 1985-`i @ 07070100037683000081a40000000000000000000000014cc7b61700001b1b000000b500010002ffffffffffffffff0000002800000000root/usr/local/share/tek2plot/usmap.tek ;)f{+Z*kc)Y,cm*Eag+Ona,_)kxXf{+Z,g}2K`{QexScs3EKdoPcmPogPhhSieRnaT+l|P`yPd{SnTW,heYmg[lg\ad[+kwVcsVnmTajU*k}SlsVbq2OfuId{HbI+fdFiFikDeo1^cs\jtXlyQ,dcQffRiOknQdrWi|Vn~Xd}\n~2@-kbHmaJ,k|Hg}K)fp8DokF`hFgm7]ok]gg](XfVmwTQeyNlnLehHofIbcGn`BkaA'i~@c}6[i~Zk{Ul}R(iaQhaOlcLakFepFotJhxJ`}Lf|MazNk{Oh~O)cbOeRbeVlk[ow[m|Zj}\l_nn7M`eObkSckUlnXfm[io\lq8@fpD/ml%_`o&@ml%_`o&ChpCimB`oCdkCijBdkCmfElfCgbChaFe`EdbCmfBaiEmfE-et'_nm^isEhs&]arQksOmrHluFdw@nu%YlxU.aUcdRodOkhLjhJmiHboJkjIekKgqLfqJetKdtOkvLmuK/hdLniJhpLkpLgkRlf[]id_`c&@ge@cc@mcBf`A.m~%_/f`^.a{ZnxYhy]iyZ`{[i&BB/aB.`~Cc~@ez%_jy&Aau%_fw^et\`x]lu[jvYgtXdt[`r[et\or]lu&@hvCb~D/iaHnfGliFniDekEoiFblGnoG`oFisEdtFbc(I-et'_(jl7JemK`zOcwRhxU)a`W(gX)g]m]`h8FokFbkJnhJleRobR(c}OmzQb}SdyWgyZ`w]ku9@cq@q8]dvWhuWko]jo9Aan8_em9B`kChl@dj@ki@fj8^gmZdmZak\fh9AehBofCjdAnf8^gh]ZhiZfhXhgZ]ge]kd9@bcAocCgeCidH'~K(c`I'j~Jl}Iiu7\dn6Gol5[fs6EowG(iaQ'b}Si{W~Zb}\(c`7AkaAacEbcGofIehHjlJdy9InzLirKhoIaiHgjFlnFntGhuIdyIh{NixMh{N,ojN`sNjJ-ie:B,`~C{Cnv9^as_kh]+f{^`y:@nv9U,dfQjeOojN(g(H*k}Tcv)\kcY)n*T'huK(a(CgH$iy,Z'ac-@o`.L%i|KkyOmxTdzUaxWmuWgt]`u/@nrAgtCetHgqIcoIenKhpOkmRcoTkmTalVenVipYm\lo]km]ek0BgnFfnJipMaoPhpTnlXjj^di1@E$lEngIodH#kKd}NiwMhnKkhK`dHjbI"o|0Zn^cZ#ad\faXmaV"`Wf{XayVcyTjtRbjAnjAapKnpJmDcpCjnAcp@om@in/_eo\am\el_kk]lj0@mh/\hkZajYdgZceWggW`eWneSgdR!nS"i`N!nPb|P`|RovOfuMexNguLxIitKduOcsOfmMleO mQoRk}Rn|SM`IbD!k`@nb.^ob[ceXmeTanQiqNduOb|MmH"aeEkiA`mAit-]jt\e{ZbV#j`SmaTgaRmdQheOdfGmgCgfAef,]"bYo|XdxUoyPa|Om|Lg~JlG#ff+_ik]hq^kyYb~T$jhKnjHapFbrCuCp,YiyZ&fw5YhsX`rUhmUoi4Pcf2\i_hm_jm]`o_gn_lr3Bft@wC`xEd|Em}Do}EdE'ocEiaGmc[ig[mf4Abl5Yhp6X`lXofRO`cLkdJaG&gGaz@fw5Y*{-Vj},\,`s-Akn0@hh/]ec0B+aB`b@*l|@izBas/_nn0Aio/_`s]bvU`vOhtL`yFf{-V&eb6NnfKbiEdkDloGnuPax7EmuEgwFcrIetZbf8Me`H%`{FfzDlxFivEftAgn7]mo\al\kjXhhXmgTbdSgfOibQoaR$n~P%d`LffJkhFcoCip@ft6\jv\b{V`~R&ebN+jk:U`hWneUkfTdiTfiRedS`bNknK`pQikSjkU)`t8Ijl6_*`vXo|7AfxB+hc8]*m9Bg{CmyHhtFjqDfjDgjFjcL)i}He{EBhx@`t8I,dx'ZcsTdoTkkW+meMg~$O,i`NknOavTn{Y-am%@luDa{Ec{F.fcGldIhhIffJgfOodOlaU-xUmuZlu&FmrHcrThs]mr'BisEnm^ld(C,n{'[dxZ&oo0]%jj^nlXhpTjpRaoPipMfnJgnFfkAkm/]lo]dnZipYboXlUooThmRfqMenKcoIbrGetHgtCnrA`u@gt.]muWdzUmxTkyOm{Ni|K'o`L`c-AolA`i/]ni0[&oo](kr5[`tXkrUotM`zJgyD*ji4_fj5QokShXejZki[fgYnh\eg6@ckJepN`vX)j}\a|Zgv[ejZbeVcbO(h~Ok{OazN`}LhxJotJmqIepFgsAiu@kr5[,er-N`sA.fkEbg/X-axY`m],o{]`v0@kn@cp.Xer-N'nq9Rm}Ki~KnqRmq7Ciu\h~9Ij{Ji{KevMbzJcwKjxGcwIdvIcwFjuGiuEfsDjrAot@w@mw8_hu9@jrApAoqFgsIirKmoKgnKfnJnqL`tNmqPdnQmiMjjLkgKigHaiHkgF`iFdkFoiCjgDfh8^mf_lf9C`fCbfGocFmcEl`F&gC'ia8_m`_&j~9Ak~F'``F&fG'iaH&dI'jaJ&eKh{IozFd|Fgy@az8_`x9@jv8^hv]fy[iv\`u]ooWliWalVkgTbfMet7ZcrIgwFmuEaxEnu6PloGhm5U`rUgtXox[az6@gG'kdJbcMofOnfSclU`lXhpXmq7C*nn9RilSlkQnnRgpTcsWvZ]y:Ek}Hn|IgxEhwHf{Ik}No|NjqAaq9_cv:Eer9_mVkoWcnTgpT{7UfxBo|A+`hLjkJmmHiqHmsNguXns[gu]hw8F`|Ih}L,kbIecKieKgfI`dIagHkwRo{Wj9J`sNinMjeOkeQ+bvU*k}WizYexVrVfrUguT{C+a@ic8\*g{7U&ai*D'huKm,Uol-A`cA$bp,Ycu+BdqDet*JglHhn)\&ai*D)bt9RemPgmNcqNnqLaqK`tFcwCf{D*jcLgjFbkDjqDmyHguTosTlkQejSnkU`hW)W*icV)oyTlyTbtR,fl:OObdUcaTj`R+o|N`y@f{9^,kh]iw_`{:C~C-f`AbjAglE,flO'mt'E)hx%XkzX+do&F*k}(T'gs@kp']ctWjrUkgTgbT&eS'mtE*ae,Zj}\`y/FnsM`vOduWgr]io_an0BlhCobF)`FcFgyIonIjfLm`P`/Njc-SevTkx,X*aeZ,lg)_ie^agUngTjeRogNjeLmgJamJbpFdxEa~D-d`B,k|(\o~Z-ad\md^bj]mr)Ar(^ft]et\hW.bdR`gTcoQ/baU.`u*So,Afk-E,na,_la^ag+Ocm*EecDfi@lg)_(f0U)bbOoeNjfLmkKgm2BmhG(eGjxLotQgmSlnYjlZciYncWfbWc`Y'm}^hx3EjrFdqEllHclKkgKmcJgeHiaGncFccEn`F&o}Em}Dh{EfyCox2Y'a`^db\b`0[(q[nqXhxT~WfU$ei2PnjOojQfoRnpTfqTopQgqQdtVfwRkvSySoxQa{SjRl~Q%hbQjeRdfQjhRmgPdiQihPjjOimPjmRorQgtSmuSivUgwSdzVl{Y&d`Y%jZ&haYjd]cf\eh3[cf\$hn\#dr_grYnsWpQhqPjnNinLlvHj|Ic{2KkK$jbLhbNkeNagMeiP,hh/]om0@`v@o{/]-`m]axY.`aZbgXcg0QkmQmlVkbWca]d`1C-`~C.baI-hQe}PSkyTj|XezYdw_w2Ba{GcxHlxQkvSewXbmFefA,i|1VdrWlmQjhOffRdcQ+lyQjtXcs\eo^fi2FicGea0B,cBhh/]-dc4GheSe`R,hV-ca[,i|]cy5Aex@ay4XfuWxTcyMbvKduDfrCkn3_`p_ns4@bs3]eo[ms[cpYndTbdTieRhRhhPcmPdoPapLcsKosBfx2R`{Qo{N-laVib[je3@bjC`jEamGinJfoNnmNbjIheHjeFaaGheKfcIndNfcQ,a~Ul~Ye}[b~]e}^j4@-dcG+`5Md{MkzJeuIhtGmpFomG`mJapLfuNhwSlvUmsWce[*l|[bYh}XayWlvUdrUjlQi4_dgDhqJbyK+eaIcjDnmEdrD`yGi}F,jbHadLjhN`NldPi`OgcPiPikR`mVcpSasUjtWfr_`p5AmJihLlgJ+`Mh;HegDbhFgiE`hHch:_le\hf\fi]ch_lm\nm[bhXlhWjkUikS`pQbj9UnvUo|:N,j`RcaT+o|Wb|UhwTfuUavYbs[kqZjn]hn_bp;CsCfu@duBrEcmEomBcj:\lm\)aq7Whx9@cbFkcN({Nh{NeMnzLowFixEozFd|Fk{CgCc}CeBa}Bj~8^)c`]ab_kc]ob9@me8_ae\lh]kl]fm[`q]mq_lt9@ju8^lt]mq\gpZioYemYanVlkZbkX`hZbhXeXl`Z(h~]m}\)b`X(}[`}]jx^mz\bz[j{XozWe|Vj{Un}SmzQg|O)c`OjfSdgRhfOnhJbkJokFjoDbqDmq7_io\fm[cnXmnWckUbkS`eOnnMaqW-b~;Lc~QaxSjvTgwV`uYarXeq[lmYknVcmVbmTnjTojQgQihPePlgNbgLkeKndImaJjbFfcF`dHcgEecD,}Dh|EjyCezAa{Ajw@dx:_kw\os\bv[itYkqWapYdoWjeUheTmjP-glEHoHdoKgqHfzLl~K.jhLoxQlxT`uWox\ky\dz_ou;E-b~L#iw1Md}NhK$ecJodHdiHlEhE%d`2Q$l~QjRk|Qa{SoxQkvSjvRdtVbrTgqQapSeqUbpTfoRojQbjOdiQefMhbNjbLe`M#kKc{Kh|3Hn{IjtIlmMfoFopBfo@dl2_nj3@F`mHamJelJomKglKiHmgLkkMlmSmjRgiSbgQ`gPdcM"nNj}Qk}Sn|Tc|VhzVjzTfxTlySkwPjzQm|Oe~LJ#j`IF"o|Ea|GbyCl|Bf{@m|2^e{^byZizUnR#i`P"oN#naLadMgcHieGfcCgaE"lB#j`1]cdQjbI`dHglKdrKiwM'ci4SmfAig3[mc[dbHgeHhdKclKmlJkpKgqMfnTjpTntTgvYazXi~[^c}_(`_'g4B`}G(kaJ'gM(m`OidOjdQbfQebUncWdhYem]aq]fs5EntElwDfyE`zJjxKotMkrUes]hu6AepFakFlcLhaOiaQ'g|LowGfsEirCjpBbl5Yci4S(ev0VnqXbq['ni[`i/]li.Ucl-O)jcSm`/Nda0Q(h~TfUd|WhxTevV*d{2HfuIanSilSgjVceVj`T)h}Qo|KdyKmtMlnKjlFmhGgmBmk0KonIgyIcF`F*meElhCanBms/_iz0Bl|@+`b@ic2G*bId{H)ct5A(lwDfsEep@aq4]biZigXncWebUmcRbfQidO'gM(haJ'`}G(c`3_'`}_i~[e|[g|Ym}X(bcZfZ`f\cn_hr_ku\i~^*neZdd_g4Dfj_)ct5Aoe2EjlFlnKevMo|K*j`TceV`kVbqOls3VnVneZ(az^ku\cn_`f\kdY'~Ym}Xg|YeyXgvYntToqSjpTdnSgqMkpKalJkmHllHdqElwEzBf|2](jaWncWjlZlnYhoVgmSanSotQeG)oeE,i'_-mg(Bnm'^et_/bc(IaU.gnQldTbdR-oxZet\mr^ar)Aj(^bj]og\md^ad\,o~Zk|\-d`)B,a~DdxEmsGkqEinGamJmgJjeLogNjeRngTagUie^fi*@ecD*cv)\+me'M,keTkWmmVdoTcsTjwXby[i_#o~6Gc~5U$ffQmrO`xPezRo~P%mdL&gkAlo6GhjDmfInfK%`~Rb{VcxXjv\ft\ip7@boDkhFdcL$hLa~Qo{Ob{MezN`xLnuMetKgtLmpKopIcmImmHojIikKcjIjeJndGefCcdA#e}C@$f`6_#o~Ge}7C$jeBgfCmdK#l~LmsQlgXfc["c|]dg8ImeK!nMmnNfpM`kLggLedKcbFk`@ab7_ed_mb8B`eCne7^ilZanWemTonRvOgxLe~KlLmHo|Im|H"j`DfBeg@ohAjAknCmpCknAq6^do^in7@jk6_nm\s\`y^m]n\#da^ieZgfUfiSojOlmOdoLrJjtEit@kq5^bp_\dlXbmVkkU`jPflNinOljPglPeoOdrJkqMdrMasIhtJguGhtGjtHfrHnv4\v5BdxAfx4\ov[itRmvUfxTcvSfxQlsP`sMeuOkyM|Jo~J$dc5S#c~U$f`6_#d}7Ae}C)dg8RjfSddRjfPdgRaq9Bhx@e{BEctCbqGckIggNahMbeLkcNcbFaqB+mbVbjUkn:KobN*H+i`G*k}@d~@jz9^cyZovWexVizY+mbV'gq+Mhu*K)nTev-T'clOgq+M)fm$SpSjoVrShrR`nRfmPioNesLkrJevLgvLjxK*neE`hGfuH`|G+h`DgdDflKjnK`vOjzMg~Odo&F)hx%X&e'SftUnoXdkQncOfbL%h|L`xNluLez&Ea~Ef}D&acEciCis%\`uXeyW`}O'kdIeh$]`l[jp\ev]lw[g|[(ebWmkTioQltR`wUlzUo}O)daO`hOokOlkRmhQaeTceUokRfmS$j2Ch1E%diE@jj0^&bl^'`[gb2\a`^&f|]oxYfy3C`xEcuBft@lrBkm2_`o_jm]ll_hg_of\c\`aY%jZ&d`Y%`{YgwSmuUSrSorQhmQolQjmOjOlgQjhRdfQfcRhbQd`Q$jC'lc*H$hn)\mr(\%ar'HouI`xN{Nh|L&fbLeePclQjpXlzT'`TgbTkgTesVfsXjp^gs(@(haC'u*KlcH#gz4DfrC`s3_$hn\&cf\dh\gk5A%baN$o~P{PezRmrOffQdcS#o~4Jk|JyMeuOrLlpGnpEfrHitFgzDitF jd DnjDjdDkdJ7m}?Un}[jw[n}[4w ACD/2000 :DAIPAC602:DAC ) 0707010003767b000081a40000000000000000000000014cc7b61700007102000000b500010002ffffffffffffffff0000002800000000root/usr/local/share/tek2plot/dmerc.tek :*hi?H*hi T*hl [-60-``?H-`` T-`c [-40.d?H.d T/db [-200lv?H0lv T0ly [ 02dn?H2dn T2dq [204hm?H4hm T4hp [407`d?H7`d T6`p [60*hi?H7`d?H7`g>Y180*ji=Q7bd=Q7bg=B200*hi;[7`d;[7`g;L220*ji:D7bd:D7bg9U240*hi8N7`d8N7`g7_260*ki6W7cd6W7cg6H280*ii5A7ad5A7ag4R300*ki3J7cd3J7cg2[320*ii1T7ad1T7ag1E340*hi/^7`d/^7`g/O 0*ki.G7cd.G7cg-X20*ii,Q7ad,Q7ag,B40*ki*Z7cd*Z7cg*K60*ii)D7ad)D7ag(U80*hi'N7`d'N7`g&_100*ji%W7bd%W7bg%H120*hi$A7`d$A7`g#R140*ji"J7bd"J7bg![160*hi T7`d T7`g E1800d.BP0f|4@0fh1PP+200f|4@1ga4@1kf4@1kk4@1lp4A1cv4@1g{4@2j`4@2me4@2dk4@2kp3_2av3_2k{3^3da3^3bg3]3nl3\3or3[3ox3Z3n~3Y4ae3X4hk3W4ar3U4ox3S4k3Q5jf3O5mm3M5cu3J5o|3G6jd3D6kl3@6cu2\6i}2X6i})K6cu)F6kl)B6hd(_5o|([5`u(Y5mm(V5hf(T4h(R4lx(P4ar(N4kk(L4ae(K3l~(J3lx(I3lr(H3ll(G3ag(F3fa(E2h{(E2av(D2hp(D2fk(C2me(C2h`(C1g{(B1cv(B1op(B1kk(B1kf(B1da(C0e|(C0bw(C0gr(C0am(D0bh(D0lb(E/o}(E/ix(F/ds(G/gn(G/ci(H/kc(I.g~(J.cy(K.hs(M.bn(N.kh(O.mb(Q-d}(S-kw(T-kq(V-hk(Y-ie([,k(],ey)@,mr)C,jl)F,cf)I+f)M+jx)Q+lq)V+oj)Z+lc*@*o|*E*`v*L*co*R*co1P*bv1W*o|1]+nc2C+oj2H+oq2M+hx2R+d2V,cf2Y,il2],mr3@,ey3C,h3F-je3H-kk3J-kq3L-kw3N-f}3P.mb3R.kh3S.an3U.js3V.cy3W.d~3Y/hc3Z/ci3Z/gn3[/fs3\/ix3]/l}3^0nb3^0`h3_0bm3_0gr3_0aw4@0f|4@/gt7US0js>O/j;_S-100js>O0jx>N0m}>M1`c>L1gh>J1im>I1lr>H1bx>F1d}>E2nb>C2ch>A2im>@2bs=^2kx=\2c~=Z3kc=X3gi=V3bo=T3`u=R3b{=O4`a=M4ag=J4em=G4ls=D4cz=@5l`<]5eg_.hf>^.hl>].dr>\.ax>[.m}>Z/ec>Y/mh>X/en>W/ms>V/dy>U/h~>T0lc>S0ci>Q0gn>P0js>O+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+ge*C+mr*B,kb*K,ih*F,mv*Q,iy*M,e|*U-gd*T-fd*_-gk+C-js*_-cr+G-lr+K.fe+Y.`o+Z.gw,K/l`,R/at,U/o,^0oe,^0jh,]0ln,R0lp,I0ln,E0mr,D0ot+\0dr+X0er+S0or+X0dv+Z0gv+T0ft+P0az+U0i{+U0h+R1be+N1ef+F1oi*^1om*Z1gm*X1`p*X1ds*T1`t*V1at*O1mr*Q1es*K1es*D1dv*A1dx)_1dv)_1ot)\1fo)[1do)Z1gv)Z1kw)\1ay)\1fx)Y1nt)P1kl)M1kp)G1gq)E+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+i`*M+ob*E+ad*@+ma)^+ge)Z+lh)V+em)S+ls)R+fy)P,hb)P,hc)T,hg)T,jg)P,hj)R,ki)V,`v)X,lx)X,hy)V-m`)U-dd)V-ii)U-lm)X-j|)Y.be)[.jm)[.nu)].l{)_/ic)^/jh)Y/dl)R/jp)N/aq)M/c})I0fe)P0if)O0ek)O0`n)R0ho)R0ap)O0et)O0lx)R0oz)G0b~)H1f`)J1cg)K1hl)I1hn)G1gq)E1gq)E1gq)E1gq)E1gq)E1gq)E1gq)E1gq)E1gq)E1gq)E1gq)E1gq)E1gq)E1gq)E1gq)E1gq)E1gq)E1gq)E1gq)E1gq)E1ap)D1hn)A1hn(_1nt(Y2b`([2cb(X2ob(T2bb(L2hj(P2dn(P2ip(Q2ir(Q2kr(I2kp(G2ll(G2bj']2jj'Y2fn'W2kr'T2lz'T2n}'U3fb'U3jg'Y3fi'[3nj'[3oj'\3cj'\3jk'_3lj(C3kk(C3oj(E3gi(E3fi(H3gi(K3nj(J3bm(H3am(M3ln(N3fl(N3am(Q3am(U3oj(V3gl(X3ei(\3kd(\3eb(^2n})A2l})C3ia)D3lj)A3ep)@3et)B3hw)G3gy)I3k{)K3k|)M3f})L3e})O3a)O4n`)L4n`)N4gb)M4gc)M4ae)M4oe)M4gh)K4ig)M4ol)M4gh)M4me)O4dc)P4hg)R4ak)S4ko)T4ko)X4dp)Z4gp)T4br)Y4cr)Z4bt)[4bs)]4bs)]4`s)_4lt)_4at)^4nu)]4iz)^4f~*H5ba*H5bd*N5cb*M5ab*Q5ca*M4g~*I4e{*K4e~*O5b`*W5ca*V5bd*[5cf*Z5bf*Y5bh*Y5bf*W5bb*W5`b*V5`c*V5`d*P5`e*P5ah*M5ch*K5bk*N5ak*M5cj*K5`l*I5bm*J5cl*K5`n*P5`p*P5aq*M5bp*H5an*D5`l*A5bf)[5bk)_5ao*B5`q*E5`q*G5du*I5fu*N5et*Q5eu*U5gt*V5gt*Z5ly+C5o{+E5e+F6ib+F6oc+G6od+C6nc+A6`f+C6bf*_6kb*\6kb*X6cf*\6fg*_6eh+B6nk*Y6dn*Z6lp*V6br*W6jt*W6ou*T6dx*V7ea*O7`d*P7lc*M7gc*L7cc*L7kb*L7gb*L7na*L7fa*L7ba*L7i`*L7e`*L6m*L6e*L6`*L6h~*L6d~*L6l}*L6g}*K6nz*H6m~*B6e*B6i*B7b`*B7j`*B7ba*B7ja*B7bb*B7jb*B7bc*B7gc*B7oc*B7bd)L7nc)L7jc)L7fc)L7bc)L7bc)L7nb)L7fb)N7fb)L7ga)I7c`)I6o~)G6ky)K6kt)M6io)M6gk)I6nj)H6dh)E6he)G6ha)G5b~)H5d{)G5ly)G5cz)E5oz)E5my)D5ly)C5m{)B5b}(_5b~)@6n`(]6ed(^6dk(_6hl(V6`m(V6ho(P6np(N6fs(J6kt(E6gs(A6iy(B6e~(@6f}']6m~']6m~'Z7a`'\7ad'\7bd!_7lb!_7mb"B7mb"B7ac"B7ac"B7ec"B7ec"B7jc"B7nc"B7nc"B7bd"B7cd"C7oc"C7nc"C7jc"C7fc"C7fc"C7bc"C7mb"C7mb"C7ib"C7eb"C7eb"C7ab"C7la"C7da"C6k"B6h}"C6`|"E6a|"F6e}"G6n~"I6j}"I6`}"K6e~"L6a}"L6e{"M6d{"N6b}"M6`"O6g}"N6i|"O6g~"R6iy"P6`v"P6es"M6fp"I6io"I6gn"I6`n"H6eo"G6km"C6`l"C6gk"@6gj"@6fk"D6`m"F6kl"F6fk"F6jl"I6cn"J6il"K6kn"L6ko"N6ip"O6op"N6as"R6et"T6iu"T6iu"S6kv"V6iy"Z6a{"Z6k|"\6k}"\6e"Z7l`"\7j`"\7ad"^7cd#A7nc#A7jc#A7jc#A7ec#A7ec#A7ac#A7lb#A7lb#A7hb#A7hb#A7ja#A7ha#C6e#@6a#B6o#C7l`#D7da#F7ic#H7kc#I7oc#I7oc#I7`d#J7cd#V7jc#Y7bd#[7ob#_7`d$C7kb$C7da$C7lb$B7c`$A6j$D6c}$G6i{$I6b{$J6j|$J6e}$I6n~$I6e}$J6d}$L6b{$L6mz$N6n{$N6f$M7``$L7e`$M6n~$N6b|$O6iz$O6hz$Q6i|$R6j}$R6m~$S6k~$S6c}$R6f}$R6bw$S6dx$R6ou$R6du$R6ds$T6mp$W6ap$V6mm$U6jm$V6bo$W6ko$X6dn$Z6il$Z6lk$Y6nj$Y6jb$W6jb$W6jb$W6jb$W6jb$W6jb$W6jb$W6jb$W6jb$W6jb$W6jb$W6jb$W6jb$W6jb$W6jb$W6jb$W6jb$W6jb$W6jb$W6jb$W6ja$U5j}$W5o|$X5g}$Y5n}$Y5i~$X5g$X5h$X6ba$W6ia$X6jb$W6fg$W6fg$W6fg$W6fg$W6fg$W6fg$W6fg$W6fg$W6fg$W6fg$W6fg$W6fg$W6fg$W6fg$W6fg$W6fg$W6fg$W6fg$W6fg$W6fg$W6mf$V6`d$U6nf$U6lf$S6ke$R6be$S6`c$S6hb$U6bb$U6fc$W6fg$W6on$X6on$X6on$X6on$X6on$X6on$X6on$X6on$X6on$X6on$X6on$X6on$X6on$X6on$X6on$X6on$X6on$X6on$X6on$X6on$X6kn$W6ml$W6al$X6fm$Y6on$X6`p$S6`p$S6`p$S6`p$S6`p$S6`p$S6`p$S6`p$S6`p$S6`p$S6`p$S6`p$S6`p$S6`p$S6`p$S6`p$S6`p$S6`p$S6`p$S6`p$S6ho$R6cm$R6gi$T6di$V6lj$V6`n$T6`p$S6ds$R6ds$R6ds$R6ds$R6ds$R6ds$R6ds$R6ds$R6ds$R6ds$R6ds$R6ds$R6ds$R6ds$R6ds$R6ds$R6ds$R6ds$R6ds$R6ds$R6gs$P6cq$P6aq$Q6ko$P6io$Q6hp$R6ds$R6bz$O6bz$O6bz$O6bz$O6bz$O6bz$O6bz$O6bz$O6bz$O6bz$O6bz$O6bz$O6bz$O6bz$O6bz$O6bz$O6bz$O6bz$O6bz$O6bz$O6kt$O6aw$Q6nw$P6ex$Q6bz$O6mu$O6mu$O6mu$O6mu$O6mu$O6mu$O6mu$O6mu$O6mu$O6mu$O6mu$O6mu$O6mu$O6mu$O6mu$O6mu$O6mu$O6mu$O6mu$O6mu$O6hv$N6mu$M6ht$N6es$M6`q$N6cp$O6ht$P6it$O6mu$O6`|"_6`|"_6`|"_6`|"_6`|"_6`|"_6`|"_6`|"_6`|"_6`|"_6`|"_6`|"_6`|"_6`|"_6`|"_6`|"_6`|"_6`|"_6`|"_6`|"_6ky"\6dz#A6b{#@6nz"_6`|"_6dx"_6dx"_6dx"_6dx"_6dx"_6dx"_6dx"_6dx"_6dx"_6dx"_6dx"_6dx"_6dx"_6dx"_6dx"_6dx"_6dx"_6dx"_6dx"_6dx"_6`y"]6bx"\6ix"[6ev"[6ew"Z6ou"X6gs"X6at"Z6hr"Z6iu"]6mu"]6nu"^6`w#@6aw"^6dx"_6`h!]6`h!]6`h!]6`h!]6`h!]6`h!]6`h!]6`h!]6`h!]6`h!]6`h!]6`h!]6`h!]6`h!]6`h!]6`h!]6`h!]6`h!]6`h!]6`h!]6mg!^6fi!_6hh"A6oj!_6mj!^6`h!]6od!Y6od!Y6od!Y6od!Y6od!Y6od!Y6od!Y6od!Y6od!Y6od!Y6od!Y6od!Y6od!Y6od!Y6od!Y6od!Y6od!Y6od!Y6od!Y6od!Y6`f!X6ke!V6jd!W6gb!T6fc!U6od!Y6`d!T6`d!T6`d!T6`d!T6`d!T6`d!T6`d!T6`d!T6`d!T6`d!T6`d!T6`d!T6`d!T6`d!T6`d!T6`d!T6`d!T6`d!T6`d!T6`d!T6kc!T6`a!R6kc!R6`d!T6k`!P6k`!P6k`!P6k`!P6k`!P6k`!P6k`!P6k`!P6k`!P6k`!P6k`!P6k`!P6k`!P6k`!P6k`!P6k`!P6k`!P6k`!P6k`!P6k`!P5e~!O6a`!O6c`!P6k`!P6c`!N6c`!N6c`!N6c`!N6c`!N6c`!N6c`!N6c`!N6c`!N6c`!N6c`!N6c`!N6c`!N6c`!N6c`!N6c`!N6c`!N6c`!N6c`!N6c`!N6d`!N5e!M5g!M6c`!N5f~!H5f~!H5f~!H5f~!H5f~!H5f~!H5f~!H5f~!H5f~!H5f~!H5f~!H5f~!H5f~!H5f~!H5f~!H5f~!H5f~!H5f~!H5f~!H5f~!H5a~!G5i}!H5a~!I5f~!H5g}!F5g}!F5g}!F5g}!F5g}!F5g}!F5g}!F5g}!F5g}!F5g}!F5g}!F5g}!F5g}!F5g}!F5g}!F5g}!F5g}!F5g}!F5g}!F5g}!F5k|!F5i|!E5b}!D5g}!F5f!D5f!D5f!D5f!D5f!D5f!D5f!D5f!D5f!D5f!D5f!D5f!D5f!D5f!D5f!D5f!D5f!D5f!D5f!D5f!D5g!C5k|!A5k|!C5f!D5h| ]5h| ]5h| ]5h| ]5h| ]5h| ]5h| ]5h| ]5h| ]5h| ]5h| ]5h| ]5h| ]5h| ]5h| ]5h| ]5h| ]5h| ]5h| ]5h| ]5fz [5k{ ]5h| ]5m{ [5m{ [5m{ [5m{ [5m{ [5m{ [5m{ [5m{ [5m{ [5m{ [5m{ [5m{ [5m{ [5m{ [5m{ [5m{ [5m{ [5m{ [5m{ [5m{ [5`{ Z5hz Z5j{ [5m{ [5m{ Y5m{ Y5m{ Y5m{ Y5m{ Y5m{ Y5m{ Y5m{ Y5m{ Y5m{ Y5m{ Y5m{ Y5m{ Y5m{ Y5m{ Y5m{ Y5m{ Y5m{ Y5m{ Y5m{ Y5e{ X5dz Y5m{ Y5oz?E5oz?E5oz?E5oz?E5oz?E5oz?E5oz?E5oz?E5oz?E5oz?E5oz?E5oz?E5oz?E5oz?E5oz?E5oz?E5oz?E5oz?E5oz?E5oz?E5fz?E5oy?F5my?G5oz?E5c|?@5c|?@5c|?@5c|?@5c|?@5c|?@5c|?@5c|?@5c|?@5c|?@5c|?@5c|?@5c|?@5c|?@5c|?@5c|?@5c|?@5c|?@5c|?@5c|?@5n{?@5k{>]5mz>_5j{?@5c|?@7ad!V7bd!V7nc!V7oc!V7lc!W7lc!W7ic!W7jc!W7jc!W7gc!W7gc!W7dc!X7ec!X7ac!X7bc!X7cc!X7cc!X7lb!Y7mb!Y7mb!Y7`d![6jy$N6jy$N6jy$N6jy$N6jy$N6jy$N6jy$N6jy$N6jy$N6jy$N6jy$N6jy$N6jy$N6jy$N6jy$N6jy$N6jy$N6jy$N6jy$N6jy$N6gy$L6kz$L6gz$J6`y$K6cy$I6lv$K6`v$R6ex$L6mv$O6jy$N5lz+G5lz+G5lz+G5lz+G5lz+G5lz+G5lz+G5lz+G5lz+G5lz+G5lz+G5lz+G5lz+G5lz+G5lz+G5lz+G5lz+G5lz+G5lz+G5lz+G5my+D5iv+B5er+@5an*\5an*^5ak*\5aj*\5`j+E5`i+E5ai+F5`j+G5bj+H5cg+E5`g+G5bj+J5cf+K5cf+M5ak+O5cm+M5`k+K5co+M5`o+K5er+M5fs+H5gr+E5dt+G5du+E5ds+C5lz+G5`h*P5`h*P5`h*P5`h*P5`h*P5`h*P5`h*P5`h*P5`h*P5`h*P5`h*P5`h*P5`h*P5`h*P5`h*P5`h*P5`h*P5`h*P5`h*P5`h*P5af*O5ae*Q5be*R5`d*T5`f*V5af*Q5`h*P2ct(V2ct(V2ct(V2ct(V2ct(V2ct(V2ct(V2ct(V2ct(V2ct(V2ct(V2ct(V2ct(V2ct(V2ct(V2ct(V2ct(V2ct(V2ct(V2ct(V2bt(Y2nt(Y2gv(\2iu(^2hr)G2bq)H2no)L2gn)I2`o)T2aq)O2mq)O2nw)A2nw([2ct(V2bg)H2bg)H2bg)H2bg)H2bg)H2bg)H2bg)H2bg)H2bg)H2bg)H2bg)H2bg)H2bg)H2bg)H2bg)H2bg)H2bg)H2bg)H2bg)H2bg)H2ff)H2ie)K2je)N2ff)N2ng)L2ng)J2bg)H2cj*G2cj*G2cj*G2cj*G2cj*G2cj*G2cj*G2cj*G2cj*G2cj*G2cj*G2cj*G2cj*G2cj*G2cj*G2cj*G2cj*G2cj*G2cj*G2cj*G2kh*G2og*I2ei*K2aj*K2jj*J2cj*G2gk)R2gk)R2gk)R2gk)R2gk)R2gk)R2gk)R2gk)R2gk)R2gk)R2gk)R2gk)R2gk)R2gk)R2gk)R2gk)R2gk)R2gk)R2gk)R2gk)R2cj)R2kh)T2hh)Z2cg)Z2ih)\2aj)\2jj)]2ei)^2di*C2gk*C2gn)\2gn)V2ll)X2hj)X2kj)V2gk)R1hn)G1hn)G1hn)G1hn)G1hn)G1hn)G1hn)G1hn)G1hn)G1hn)G1hn)G1hn)G1hn)G1hn)G1hn)G1hn)G1hn)G1hn)G1hn)G1hn)G1go)E1em)B1ck)C1jj)A1hl)A1nk(_1fm(]1kl(\1mm(\1gm(Z1mm(Z1in(Z1lr(V1gq(V1or(T1ct(T1`t(T1hu(T1jy(N1ez(O1n{(N1`{(N1l{(I1`}(G1h|(E2ic'^2nb']2ic'\2fd'[2nb'Y2lb'T2ke'K2ih'I2kh'G2kj'C2dk'C2`l'A2bo&]2fs&_2`t&_2dv&_2g|&X2d|&X2l}&X2j~&U2f&U2g&T3``&T3ka&T3ha&T3eb&S3cc&R3id&Q3af&O3nj&L3fp&J3bq&H3oq&G3oq&E3dl&G3ig&K3kd&K3`c&N3ha&N3ja&N2i~&O2o}&P2mz&Q2h{&R2ey&S2ow&R2lw&R2c}&K3o`&K3cc&I3eb&I3fe&D3de&G3bf&F3hg&G3gi&E3gi&E3ik&B3am&B3lr%_3av%^3dx%]3oz%X3lz%V3d}%V4o`%R4gb%R4ec%Q4oe%P4`e%R4hf%R4kg%R4ig%Q4kf%P4dh%N4ak%M4im%M4jn%L4fp%L4`r%N4iw%K4e}%M5`d%N5ae%M5bf%N5bi%L5`m%L5bm%N5bk%N5ak%O5ai%O5cj%P5ao%Q5ap%O5er%O5bq%N5bq%L5dr%N5du%N5eu%M5es%M5ds%L5du%L5jw%J5gu%I5jv%F5iw%I5kw%C5oy%C5m{%B5f%D5d%A6lc$_6jb$]6af$\6fg$]6gg$Z6eh$Z6bm$]6nj$Y5bn%N5bn%N5bn%N5bn%N5bn%N5bn%N5bn%N5bn%N5bn%N5bn%N5bn%N5bn%N5bn%N5bn%N5bn%N5bn%N5bn%N5bn%N5bn%N5bn%N5an%M5bp%H5bq%F5fr%F5hv%A5hw%A5iw%B5fu%F5et%I5fr%J5ap%M5bn%N4fq&L4fq&L4fq&L4fq&L4fq&L4fq&L4fq&L4fq&L4fq&L4fq&L4fq&L4fq&L4fq&L4fq&L4fq&L4fq&L4fq&L4fq&L4fq&L4fq&L4gp&K4fq&J4br&J4cs&I4ct&I4bs&J4ct&K4fq&L4d})P4d})P4d})P4d})P4d})P4d})P4d})P4d})P4d})P4d})P4d})P4d})P4d})P4d})P4d})P4d})P4d})P4d})P4d})P4d})P4jz)N4ky)I4hy)E4kz)E4f|)H4g|)I4e{)K4f})L4d~)P4d})P4cw)E4cw)E4cw)E4cw)E4cw)E4cw)E4cw)E4cw)E4cw)E4cw)E4cw)E4cw)E4cw)E4cw)E4cw)E4cw)E4cw)E4cw)E4cw)E4cw)E4mt)B4bt)A4as)@4ar(\4as(\4bs([4ct(Z4mt(\4bt(]4nt(_4lv)A4`v)C4lv)C4cw)E5cg(I5cg(I5cg(I5cg(I5cg(I5cg(I5cg(I5cg(I5cg(I5cg(I5cg(I5cg(I5cg(I5cg(I5cg(I5cg(I5cg(I5cg(I5cg(I5cg(I5lf(G5ch(G5hg(G5cg(E5gg(C5ci(E5bj(F5`k(I5al(J5cn(J5jn(L5cm(K5cn(L5am(M5hn(N5mo(M5`p(N5kn(P5ao(Q5bo(R5bl(S5kk(T5`l(V5bj(W5kf(V5ce(X5be(_5bd(_5bd)A5bb)A5`b)C4d~)C4f~)A5`a)@5`a(_4e~(_4ky(^4kx(\4g|(\4f|([4g{(Z4e{(Z4f~([5b`([5ba(Z5ia(Y5kb(V5ab(U5ca(U4h(T5h`(T4g}(R4lv(S4at(Q4`t(P4nv(N4d{(P4e|(O5aa(Q4h}(N5a`(O5jc(P5hc(R5hb(R5ad(S5ed(U5gc(V5ed(X5ke(V5ae(U5ef(U5if(S5`f(R5ff(O5eg(M5ii(O5ei(M5bh(K5cg(I5gu'V5gu'V5gu'V5gu'V5gu'V5gu'V5gu'V5gu'V5gu'V5gu'V5gu'V5gu'V5gu'V5gu'V5gu'V5gu'V5gu'V5gu'V5gu'V5gu'V5hv'X5k{'W5b}'V6e`'U6kb'T6dc'T6ld'T6be'U6jf'U6af'S6bg'S6gg'T6fh'S6gg'R6ge'R6af'P6ia'O6da'R6f`'P6a`'Q5j{'S5i}'T5b{'U5oy'T5mz'V5oy'V5hx'V5gw'V5gu'V6cb'J6cb'J6cb'J6cb'J6cb'J6cb'J6cb'J6cb'J6cb'J6cb'J6cb'J6cb'J6cb'J6cb'J6cb'J6cb'J6cb'J6cb'J6cb'J6cb'J6`a'K5k'K6i`'L5d~'M5e'N5j}'N5e}'M5a{'M5gz'O5jy'P5mw'P5`v'R5ot'Q5lt'S5mu'S5ow'R5nw'Q5kx'Q5mz'P5h}'P5e{'O5d}'O5f~'O6d`'O6ma'M6cb'J7m`&]7m`&]7m`&]7m`&]7m`&]7m`&]7m`&]7m`&]7m`&]7m`&]7m`&]7m`&]7m`&]7m`&]7m`&]7m`&]7m`&]7m`&]7m`&]7m`&]7jb&W7fa&W7o`&U7hb&V7nb&T7a`&Q6c&P6`~&N6e}&R6i~&R6o&T6f&U6n&X7f`&X7g`&[6m&\7m`&]2ik"V2ik"V2ik"V2ik"V2ik"V2ik"V2ik"V2ik"V2ik"V2ik"V2ik"V2ik"V2ik"V2ik"V2ik"V2ik"V2ik"V2ik"V2ik"V2ik"V2bl"W2cl"X2ao"W2`o"V2dn"V2im"U2bl"U2ik"V2mo"T2mo"T2mo"T2mo"T2mo"T2mo"T2mo"T2mo"T2mo"T2mo"T2mo"T2mo"T2mo"T2mo"T2mo"T2mo"T2mo"T2mo"T2mo"T2mo"T2jp"S2bq"S2`q"T2kp"T2mo"U2mo"T2mq"R2mq"R2mq"R2mq"R2mq"R2mq"R2mq"R2mq"R2mq"R2mq"R2mq"R2mq"R2mq"R2mq"R2mq"R2mq"R2mq"R2mq"R2mq"R2mq"R2jq"R2hq"T2lq"T2br"R2mq"R2`r"O2`r"O2`r"O2`r"O2`r"O2`r"O2`r"O2`r"O2`r"O2`r"O2`r"O2`r"O2`r"O2`r"O2`r"O2`r"O2`r"O2`r"O2`r"O2`r"O2lr"O2nr"P2fr"P2`r"O2gt"J2gt"J2gt"J2gt"J2gt"J2gt"J2gt"J2gt"J2gt"J2gt"J2gt"J2gt"J2gt"J2gt"J2gt"J2gt"J2gt"J2gt"J2gt"J2gt"J2lt"K2ht"L2ct"K2gt"J/hg?D/hg?D/hg?D/hg?D/hg?D/hg?D/hg?D/hg?D/hg?D/hg?D/hg?D/hg?D/hg?D/hg?D/hg?D/hg?D/hg?D/hg?D/hg?D/hg?D/kg?C/`g?C/jg?B/eg?A/de?@/fd?@/ed?A/ed?C/me?D/bg?D/hg?D-bi?D-bi?D-bi?D-bi?D-bi?D-bi?D-bi?D-bi?D-bi?D-bi?D-bi?D-bi?D-bi?D-bi?D-bi?D-bi?D-bi?D-bi?D-bi?D-bi?D-li?C-ji?A-kg>_-`h>_-ch>]-`l>]-ol>[-dj>\-mj>[-cl>Z-om>Y-fp>Y-`q>X-as>V-cs>T-op>U-oo>U-el>X-nl>Y-ok>Y-ek>Y-lh>Z-bg>Y-ad>Y-eb>W-ba>W-o`>X,c>Z,h{>Z,hz>[,f|>]-`a?@-fa>_-ac?@-mb?A-`d?B-nd?A-de?C-eg?D-ah?D-bi?D,cy>W,cy>W,cy>W,cy>W,cy>W,cy>W,cy>W,cy>W,cy>W,cy>W,cy>W,cy>W,cy>W,cy>W,cy>W,cy>W,cy>W,cy>W,cy>W,cy>W,j{>W,k{>V,c}>V,c|>T,g}>T,j}>S,l~>T,c~>R,g|>R,iz>P,mx>P,gt>L,fr>I,mp>G,io>G,lm>F,il>D,kj>B,lh>C,mh>E,ji>E,fh>F,nh>G,bh>J,hi>N,en>P,mo>P,gq>Q,fr>T,cs>T,ds>T,`t>T,mv>V,cy>W,kw ocpred.ps to translate it to Postscript. The text will be rendered in HersheyGothicEnglish, which is an Old English font. HersheyGothicEnglish is not a fixed-width font, unlike the original Tektronix font. But if you add the `--position-chars' option on the command line, each character will be positioned individually, so as to match the position of the corresponding character in the original font. Similarly, you may do: tek2plot -Tps usmap.tek > usmap.ps to prepare a Postscript version of the USA map. You would use the `-T X' option, instead of `-T ps', to display the specified Tektronix file in a popped-up X window. To get a list of additional output formats that are supported by `tek2plot', type `tek2plot --help'. 07070100037666000041ed0000000000000000000000024cc7b6fb00000000000000b500010002ffffffffffffffff0000001900000000root/usr/local/share/ode07070100037667000081a40000000000000000000000014cc7b616000002ec000000b500010002ffffffffffffffff0000002000000000root/usr/local/share/ode/READMEThis directory contains sample input files for `ode', originally written by Nicholas B. Tufillaro 1982-1994 . GNU enhancements by Robert S. Maier , copyright (C) 1996-2008 Free Software Foundation, Inc. Documentation, and instructions on how to run `ode' and display the resulting output, appears at the head of each file. The documentation in each of the files refers to `graph -T X', the command that will display a graph in a window on an X Window System display. You may substitute `graph -T ps' to obtain Postscript output, `graph -T tek' to draw the plot in a Tektronix emulator window, and so forth. The file lunar.sh is an executable shell script that calls `ode', rather than an `ode' input file. 07070100037674000081a40000000000000000000000014cc7b61600000165000000b500010002ffffffffffffffff0000002100000000root/usr/local/share/ode/qcd.ode# You may run this example by doing # # ode < qcd.ode | graph -T X -C # # This simulates a coupled system of ordinary differential equations that # arises in the mathematical theory of quantum chromodynamics (QCD). # # Source: Griffiths et al., J. Math. Phys. f' = fp fp' = -f*g*g g' = gp gp' = g*f*f f = 0 fp = -1 g = 1 gp = -1 print t, f step 0, 5 07070100037677000081a40000000000000000000000014cc7b616000002b1000000b500010002ffffffffffffffff0000002500000000root/usr/local/share/ode/viscous.ode# This example simulates a bead sliding on a smooth circular wire. The # output displays the height of the bead as a function of time. There is # viscous damping, so the bead should settle toward the equilibrium point # (i.e. ordinate = 0). # You may run this example by doing: # # ode < viscous.ode | graph -T X -C # # or alternatively, to get a real-time plot, # # ode < viscous.ode | graph -T X -C -x 0 20 -y 0 2.5 a = 1 # radius of circular wire g = 10 # acceleration due to gravity w = 10 # angular velocity of circular wire b = 1 # damping coefficient the' = vthe vthe' = (w^2)*sin(the)*cos(the) - (g/a)*sin(the) - b * vthe the = 0.1 vthe = 0 print t, the step 0, 20 0707010003766c000081a40000000000000000000000014cc7b61600000284000000b500010002ffffffffffffffff0000002200000000root/usr/local/share/ode/ddho.ode# You may run this example by doing: # # ode < ddho.ode | graph -T X -C # # or alternatively, to get a real-time plot, # # ode < ddho.ode | graph -T X -C -x 0 25 -y -0.5 1 0.5 # # This example simulates a dam-driven harmonic oscillator (DDHO) with # damping, the equation for which is # # y'' = -k/m * y - R/m * y' + cos(w*t) # # If R^2 > 4km, motion is overdamped # If R^2 = 4km, motion is critically damped # If R^2 < 4km, motion is damped # # With the choice of parameters below, motion is damped but not # overdamped. y' = vy vy' = -k/m * y - R/m * vy + cos(w*t) y = 1 vy = 0 k = 1 m = 1 R = 0.5 w = 2*PI print t, y step 0,25 07070100037670000081a40000000000000000000000014cc7b616000002fd000000b500010002ffffffffffffffff0000002400000000root/usr/local/share/ode/lorenz.ode# This example displays a beautiful strange attractor: the Lorenz # attractor. # You may run this example by doing: # # ode < lorenz.ode | graph -T X -C # # or alternatively, to get a real-time plot, # # ode < lorenz.ode | graph -T X -C -x -10 10 -y -10 10 # # You may also produce and print a Postscript version by doing # # ode < lorenz.ode | graph -T ps -C -x -10 10 -y -10 10 -W 0 | lpr # # The `-W 0' sets the line width for the Postscript plot to # be zero. That means that the thinnest line possible will be used. # The Lorenz model, a third order system. # Interesting cases are r = 26, 2.5 C --> D # # The output displays the concentration of the species `C' # as a function of time. # # You may run this example by doing: # # ode < chem.ode | graph -T X -C # # or alternatively, to get a real-time plot, # # ode < chem.ode | graph -T X -C -x 0 10 -y 0 0.03 # # To improve the shape of the plotted curve, you may # wish to spline it, by doing e.g. # # ode < chem.ode | spline | graph -T X -C # # Alternatively, you could remove the `every 10' clause below. # The three rate constants are: # kf : A + 2B --> C # kb : C --> A + 2B # kd : C --> D a' = kb*c - kf*a*b^2 b' = kb*c - kf*a*b^2 c' = kf*a*b^2 - kb*c - kd*c d' = kd*c c = 0 d = 0 a = 0.1 b = 1 kf = 1 kb = 1 kd = 1 print t,c every 10 step 0,10 07070100037668000081a40000000000000000000000014cc7b616000006f5000000b500010002ffffffffffffffff0000002500000000root/usr/local/share/ode/atwoods.ode# This example simulates a `swinging Atwood's machine'. An Atwood's # machine consists of two masses joined by a taut length of cord. The cord # is suspended from a pulley. The heavier mass (M) would normally win # against the lighter mass (m), and pull it upward. A `swinging' Atwood's # machine is an Atwood's machine with an additional degree of freedom: it # allows the lighter mass to swing back and forth in a plane, at the same # time as it is being drawn upward. # Let `a' denote the angle by which the cord extending to the lighter mass # deviates from the vertical. Let `l' denote the distance along the cord # between the pulley and the lighter mass. Then the system of differential # equations below will describe the evolution of the system. # You may run this example, with output to an X window in real time, by doing # # ode < atwoods.ode | graph -T X -x 9 11 -y -1 1 -m 0 -S 1 # # The plot will trace out `l' and `ldot' (its time derivative). The `-m 0 # -S 1' option requests that successive datapoints not be joined by line # segments, but rather that marker symbol #1 (a point) be plotted at the # location of each datapoint. # You may have some difficulty believing the results of this simulation. # Allowing the lighter mass to swing, it turns out, may prevent the heavier # mass from winning against it. The system may oscillate, # non-periodically. m = 1 # lighter mass M = 1.0625 # heavier mass a = 0.5 # initial angle of cord from vertical, in radians adot = 0 l = 10 # initial distance along cord from pulley to mass m ldot = 0 g = 9.8 # acceleration due to gravity ldot' = ( m * l * adot * adot - M * g + m * g * cos(a) ) / (m + M) l' = ldot adot' = (-1/l) * (g * sin(a) + 2 * adot * ldot) a' = adot print l, ldot step 0, 400 07070100037669000081a40000000000000000000000014cc7b61600000217000000b500010002ffffffffffffffff0000002200000000root/usr/local/share/ode/bead.ode# This example simulates a bead sliding on a smooth circular wire. The # output displays the height of the bead as a function of time. # # You may run this example by doing: # # ode < bead.ode | graph -T X -C # # or alternatively, to get a real-time plot, # # ode < bead.ode | graph -T X -C -x 0 5 -y 0 2.5 # a = 1 # radius of circular wire g = 10 # acceleration due to gravity w = 10 # angular velocity of circular wire the' = vthe vthe' = (w^2)*sin(the)*cos(the) - (g/a)*sin(the) the = 0.1 vthe = 0 print t, the step 0,5 07070100037672000081a40000000000000000000000014cc7b6160000040c000000b500010002ffffffffffffffff0000002300000000root/usr/local/share/ode/orbit.ode# This example does a planetary orbit simulation, with two suns situated at # (0,0) and (-5,0) and one planet starting out at (1,0). You may run it by # typing # ode -f orbit.ode | graph -T X -C -y -1 3 -x -6 2 # step 0,10 # step 10,20 # step 20,30 # step 30,40 # step 40,50 # step 50,60 # . # The planet's orbit will be traced out incrementally. If you are using a # color X Window System display, each segment of the orbit will be a # different color. This is a feature provided by `graph', which normally # changes the linemode after each dataset it reads. If you do not like this # feature, you may turn it off by using `graph -B' instead of `graph'. # x and y are positions # vx and vy are velocities vx' = -x/((x^2+y^2)^(3/2)) -(x+5)/(((x+5)^2+y^2)^(3/2)) vy' = -y/((x^2+y^2)^(3/2)) -y/(((x+5)^2+y^2)^(3/2)) y' = vy x' = vx x = 1 y = 0 print x,y every 5 # these values seem to give a nice orbit: # vx = 0 # vy = 1.142 # a more exciting result can be obtained from: vx = 0 vy = 1.165 #step 0,20 07070100037673000081a40000000000000000000000014cc7b61600000260000000b500010002ffffffffffffffff0000002800000000root/usr/local/share/ode/population.ode# This is an example from population biology (the predator-prey # equations of Lotka and Volterra). You may run it by doing: # # ode < population.ode | graph -T X -C # # or alternatively, to get a real-time plot, # # ode < population.ode | graph -T X -C -x 0 10 -y 0 3 # # The plot shows the population of the prey as a function of time. # The curve oscillates, because as the prey die out, the predators # starve. # The differential equations are: # x' = (A - By) x # y' = (Cx - D) y # A,B,C,D > 0 x' = (A - B*y) * x y' = (C*x - D) * y A = 1 B = 1 C = 1 D = 1 x = 3 y = 1 print t, x step 0, 10 0707010003766e000081a40000000000000000000000014cc7b61600000296000000b500010002ffffffffffffffff0000002300000000root/usr/local/share/ode/henon.ode# You may run this example by doing: # # ode < henon.ode | graph -T X -C # # or alternatively, to get a real-time plot, # # ode < henon.ode | graph -T X -C -x -0.6 0.6 -y -0.6 0.6 # # This example shows a simple center with complicated orbits: # the system investigated by Henon and Heiles. # The Poincare plot is a graph of p1(t) vs. q1(t). # Initial condations: # stable: p1 = 1/3, q1 = 1/4, p2 = 0.1293144, q2 = 1/5 # unstable: p1 = 0.1, q1 = 0.1, p2 = 0.467618, q2 = 0.1 qone' = pone qtwo' = ptwo pone' = -qone - 2*qone*qtwo ptwo' = -qtwo - qone*qone + qtwo*qtwo pone = 1/3 qone = 1/4 ptwo = 0.1293144 qtwo = 1/5 print pone, qone step 0,250 07070100037675000081a40000000000000000000000014cc7b6160000050b000000b500010002ffffffffffffffff0000002300000000root/usr/local/share/ode/rumor.ode# This example simulates the spread of a rumor through a closed # population. The percentage of people who have not heard the # rumor, as a function of time, is plotted. # # You may run this example by doing: # # ode < rumor.ode | graph -T X -C # # or alternatively, to get a real-time plot, # # ode < rumor.ode | graph -T X -C -x 0 .25 -y 0 100 # The theoretical background for this model is as follows. # # Suppose a rumor spreads through a closed population of constant size # N+1. At time t the total population can be classified into three categories: # x persons who are ignorant of the rumor; # y persons who are actively spreading the rumor; # z persons who have heard the rumor but have stopped spreading it; # # Suppose that if two persons who are spreading the rumor meet then they stop # spreading it. # Suppose also that the contact rate between any two categories is constant, u. # # The equations # x' = -u * x * y, # y' = u * (x*y - y*(y - 1) - y*z) # give a deterministic model of the problem. # # When initially y = 1 and x = N, the number of people # who ultimately never hear the rumor is s, where s satisfies # 2N + 1 - 2s + N log(s/N) = 0. x' = -u * x * y y' = u * (x*y - y*(y-1) - y*( 100 + 1 - y - x)) x = 100 y = 1 u = 1 print t, x step 0, 0.25 07070100037671000081a40000000000000000000000014cc7b6160000044f000000b500010002ffffffffffffffff0000002200000000root/usr/local/share/ode/lunar.sh#!/bin/sh : lunar lander shell script using ode to solve equations of motion echo "*** lunar lander ***" echo -n "grav (m/sec/sec): "; read grav echo "velocity starts at zero empty weight 1000 kg" vel=0 echo -n "available impulse is 10^4 n-sec/kg total fuel (kg): " if read fuel; then :; else exit 0; fi echo -n " starting height (m): " if read height; then :; else exit 0; fi (echo "y'=v;v'=thrust*1000/m-$grav;m'=-thrust/10" dur=0 while : ; do sleep 2 sleep $dur echo -n " thrust (kn): " 1>&2 if read thrust; then :; else break; fi echo -n " duration (sec): " 1>&2 if read dur; then :; else break; fi echo "y=$height;v=$vel;thrust=$thrust;m=$fuel+1000 print y,v,m from $dur;step 0,$dur" done) | ode -r 1e-5 | while read height vel mass; do echo $mass echo "velocity=${vel}m/sec; mass=${mass}kg" echo $mass fuel=`echo "5k$mass 1000-pq"|dc` case $fuel in -*|0) echo out of fuel; exit 1 ;; *) echo fuel=${fuel}kg ;; esac case $height in -*|0) case $vel in -[0-9][0-9]*) echo too fast; exit 1 ;; *) echo good landing; exit 0 ;; esac ;; *) echo height=${height}m ;; esac done 0707010003766f000081a40000000000000000000000014cc7b616000002d2000000b500010002ffffffffffffffff0000002800000000root/usr/local/share/ode/limitcycle.ode# This example shows a nonlinear system with a stable limit cycle. # You may run it by typing # ode -f limitcycle.ode | graph -T X -C -x -2 2 -y -2 2 # step 0,2 # step 2,4 # step 4,6 # step 6,8 # . # An orbit converging on the limit cycle will be traced out incrementally. # If you are using a color X Window System display, each segment of the # orbit will be a different color. This is a feature provided by `graph', # which normally changes the linemode after each dataset it reads. If you # do not like this feature, you may turn it off by using `graph -B' instead # of `graph'. yone' = yone + ytwo - yone*(yone*yone+ytwo*ytwo) ytwo' = -yone + ytwo - ytwo*(yone*yone+ytwo*ytwo) yone = 1 ytwo = 2 print yone, ytwo 0707010003766d000081a40000000000000000000000014cc7b616000002aa000000b500010002ffffffffffffffff0000002400000000root/usr/local/share/ode/dynamo.ode# This is a disk dynamo simulation of the earth's magnetic field. # It attempts to simulate the dramatic switch in the polarity # of the field that takes place every eon or so. # # Source: Michael Steele, B.A. thesis, Reed College, 1981 (Physics) # You may run this example by doing: # # ode < dynamo.ode | graph -T X -C # # or alternatively, to get a real-time plot, # # ode < dynamo.ode | graph -T X -C -x 0 10 -y -10 10 # # The equations are: # # w' = Q -zy - Vw # y' = S( Az - y) # z' = wy - z # S = 5 # V = 1 # Q = 14.625 # A = 1 A = 1 V = 1 Q = 14.625 S = 5 w' = Q - z * y - V * w y' = S * ( A * z - y) z' = w * y - z w = 1 y = 1 z = 1 print t, z step 0, 10, .01 0707010003766b000081a40000000000000000000000014cc7b61600000360000000b500010002ffffffffffffffff0000002500000000root/usr/local/share/ode/coupled.ode# This example simulates two similar pendulums, coupled with a horizontal # spring. The motion is taken to be undamped. # # The plot shows the displacement of one of the pendulums, as a function of # time. It illustrates how energy (e.g. maximum displacement) oscillates # back and forth between the two. # You may run this example by doing: # # ode < coupled.ode | graph -T X -C # # or alternatively, to get a real-time plot, # # ode < coupled.ode | graph -T X -C -x 0 50 -y -0.6 0.6 # The equations are: # m*x1'' = - m*g*x1/l + k(x2 - x1) # m*x2'' = - m*g*x2/l - k(x2 - x1) xone' = vxone xtwo' = vxtwo vxone' = -g*xone/lone + k/mone * ( xtwo - xone) vxtwo' = -g*xtwo/ltwo - k/ltwo * ( xtwo - xone) k = 1 g = 9.8 # acceleration due to gravity lone = 5 ltwo = 5 mone = 1 mtwo = 1 xone = 0.0 xtwo = 0.3 vxone = 0 vxtwo = 0 print t, xone step 0,50 07070100037676000081a40000000000000000000000014cc7b616000001b0000000b500010002ffffffffffffffff0000002500000000root/usr/local/share/ode/soliton.ode# You may run this example by doing: # # ode < soliton.ode | graph -T X -C # # or alternatively, to create a real-time plot, # # ode < soliton.ode | graph -T X -C -x 5 15 5 -y -3 3 # This example numerically solves an initial value problem arising in # John Selker's soliton thesis: # # x'' = (2 / t) * x' + B * x # B = -1 # x(5) = 0 # x'(5) = 1 x' = vx vx' = 2 / t * vx + B * x B = -1 x = 0 vx = 1 print t, x step 5, 15 07070100037657000041ed0000000000000000000000024cc7b6fb00000000000000b500010002ffffffffffffffff0000001d00000000root/usr/local/share/libplot0707010003765d000081a40000000000000000000000014cc7b61800000dd5000000b500010002ffffffffffffffff0000002600000000root/usr/local/share/libplot/kana.txtThe table below displays the encodings for the Japanese Kana (syllabic characters) that are built into the GNU libplot library and the GNU plotting utilities based on it, such as `graph'. They were digitized by Dr. Allen V. Hershey of the U.S. Naval Surface Weapons Center (Dahlgren, VA) in the mid-1960s. For details, see his technical report "Calligraphy for Computers". (Available from the U.S. National Technical Information Service at +1 703 487 4650; ask for item number AD662398.) These Kana are part of the HersheyEUC font, which is employed for drawing multibyte Japanese text strings. But you may also use these Kana while drawing text strings in any other Hershey font, by inserting the appropriate escape sequences. For example, you may label in Kana the axes of a graph prepared with `graph'. There are 83 Hiragana (cursive characters) and 86 Katakana (block characters). The indexing of the Kana is specified in the JIS X0208 standard. In that standard the Hiragana appear as 0x2421..0x2473 and the Katakana as 0x2521..0x2576. Here `0x' means that the number that follows is in base 16, or hexadecimal. For full information on the JIS standard, see "Understanding Japanese Information Processing", by Ken Lunde (O'Reilly, 1993). The Hiragana and Katakana are indexed in the table below as 0x21..0x73 and 0x21..0x76, respectively. A transliteration of each Kana is included, according to the Hepburn system. For example, the Kana `ka' is listed as 0x2b. The corresponding Hiragana would be 0x242b, and the corresponding Katakana would be 0x252b. To draw Hiragana `ka', you would use the escape sequence "\#J242b". To draw Katakana `ka', you would use the escape sequence "\#J252b". These escape sequences would be valid whenever the current font is a Hershey font other than HersheyEUC. By using the table below, you should find it easy to draw a phonetic representation of most Japanese words, syllable by syllable. You should be aware that in Japanese, many words are normally written with ideographic characters (Kanji) rather than Kana. However, any Japanese word may be rendered (possibly inelegantly) in terms of Kana. For example, "Mitsubishi" would be mi-tsu-bi-shi, i.e., "\#J245f\#J2444\#J2453\#J2437" in terms of Hiragana. You are cautioned that there are some special rules for combinations of sounds, e.g. consonant + diphthong. The `small' Kana are used for such combinations. Also, the `small tsu' Kana before a Kana beginning with the consonant k, s, t, or p is interpreted not as a syllable, but as a sign that that consonant should be doubled. Code Kana transliteration ---- -------------------- 0x21 a [small] 0x22 a 0x23 i [small] 0x24 i 0x25 u [small] 0x26 u 0x27 e [small] 0x28 e 0x29 o [small] 0x2a o 0x2b ka 0x2c ga 0x2d ki 0x2e gi 0x2f ku 0x30 gu 0x31 ke 0x32 ge 0x33 ko 0x34 go 0x35 sa 0x36 za 0x37 shi 0x38 ji 0x39 su 0x3a zu 0x3b se 0x3c ze 0x3d so 0x3e zo 0x3f ta 0x40 da 0x41 chi 0x42 dji 0x43 tsu [small] 0x44 tsu 0x45 dzu 0x46 te 0x47 de 0x48 to 0x49 do 0x4a na 0x4b ni 0x4c nu 0x4d ne 0x4e no 0x4f ha 0x50 ba 0x51 pa 0x52 hi 0x53 bi 0x54 pi 0x55 fu 0x56 bu 0x57 pu 0x58 he 0x59 be 0x5a pe 0x5b ho 0x5c bo 0x5d po 0x5e ma 0x5f mi 0x60 mu 0x61 me 0x62 mo 0x63 ya [small] 0x64 ya 0x65 yu [small] 0x66 yu 0x67 yo [small] 0x68 yo 0x69 ra 0x6a ri 0x6b ru 0x6c re 0x6d ro 0x6e wa [small] 0x6f wa 0x70 wi 0x71 we 0x72 wo 0x73 n KATAKANA only: 0x74 vu 0x75 ka [small] 0x76 ke [small] 07070100037659000081a40000000000000000000000014cc7b61800003af8000000b500010002ffffffffffffffff0000002800000000root/usr/local/share/libplot/colors.txtThe following table lists the 665 color names recognized by the GNU libplot library and by the GNU plotting utilities, such as `graph'. The representation of each color in the RGB color model is also listed. Names are case-insensitive, and spaces in names are ignored, so that "antiquewhite1", "antique white 1" and "AntiqueWhite1" are equivalent. The recognized color names are essentially the names recognized by recent releases of the X Windows System. However for every color name containing the string "gray", a version containing "grey" is included. The R, G, and B numbers for each color are the intensities of its red, green, and blue components, in a 24-bit color model (255=full intensity, 0=none). To convert to the corresponding intensities in the 48-bit color model used by GNU libplot, multiply each intensity by 257. R G B Color Name --------------------------- 240 248 255 aliceblue 250 235 215 antiquewhite 255 239 219 antiquewhite1 238 223 204 antiquewhite2 205 192 176 antiquewhite3 139 131 120 antiquewhite4 127 255 212 aquamarine 127 255 212 aquamarine1 118 238 198 aquamarine2 102 205 170 aquamarine3 69 139 116 aquamarine4 240 255 255 azure 240 255 255 azure1 224 238 238 azure2 193 205 205 azure3 131 139 139 azure4 245 245 220 beige 255 228 196 bisque 255 228 196 bisque1 238 213 183 bisque2 205 183 158 bisque3 139 125 107 bisque4 0 0 0 black 255 235 205 blanchedalmond 0 0 255 blue 0 0 255 blue1 0 0 238 blue2 0 0 205 blue3 0 0 139 blue4 138 43 226 blueviolet 165 42 42 brown 255 64 64 brown1 238 59 59 brown2 205 51 51 brown3 139 35 35 brown4 222 184 135 burlywood 255 211 155 burlywood1 238 197 145 burlywood2 205 170 125 burlywood3 139 115 85 burlywood4 95 158 160 cadetblue 152 245 255 cadetblue1 142 229 238 cadetblue2 122 197 205 cadetblue3 83 134 139 cadetblue4 127 255 0 chartreuse 127 255 0 chartreuse1 118 238 0 chartreuse2 102 205 0 chartreuse3 69 139 0 chartreuse4 210 105 30 chocolate 255 127 36 chocolate1 238 118 33 chocolate2 205 102 29 chocolate3 139 69 19 chocolate4 255 127 80 coral 255 114 86 coral1 238 106 80 coral2 205 91 69 coral3 139 62 47 coral4 100 149 237 cornflowerblue 255 248 220 cornsilk 255 248 220 cornsilk1 238 232 205 cornsilk2 205 200 177 cornsilk3 139 136 120 cornsilk4 0 255 255 cyan 0 255 255 cyan1 0 238 238 cyan2 0 205 205 cyan3 0 139 139 cyan4 0 0 139 darkblue 0 139 139 darkcyan 184 134 11 darkgoldenrod 255 185 15 darkgoldenrod1 238 173 14 darkgoldenrod2 205 149 12 darkgoldenrod3 139 101 8 darkgoldenrod4 169 169 169 darkgray 0 100 0 darkgreen 169 169 169 darkgrey 189 183 107 darkkhaki 139 0 139 darkmagenta 85 107 47 darkolivegreen 202 255 112 darkolivegreen1 188 238 104 darkolivegreen2 162 205 90 darkolivegreen3 110 139 61 darkolivegreen4 255 140 0 darkorange 255 127 0 darkorange1 238 118 0 darkorange2 205 102 0 darkorange3 139 69 0 darkorange4 153 50 204 darkorchid 191 62 255 darkorchid1 178 58 238 darkorchid2 154 50 205 darkorchid3 104 34 139 darkorchid4 139 0 0 darkred 233 150 122 darksalmon 143 188 143 darkseagreen 193 255 193 darkseagreen1 180 238 180 darkseagreen2 155 205 155 darkseagreen3 105 139 105 darkseagreen4 72 61 139 darkslateblue 47 79 79 darkslategray 151 255 255 darkslategray1 141 238 238 darkslategray2 121 205 205 darkslategray3 82 139 139 darkslategray4 47 79 79 darkslategrey 151 255 255 darkslategrey1 141 238 238 darkslategrey2 121 205 205 darkslategrey3 82 139 139 darkslategrey4 0 206 209 darkturquoise 148 0 211 darkviolet 255 20 147 deeppink 255 20 147 deeppink1 238 18 137 deeppink2 205 16 118 deeppink3 139 10 80 deeppink4 0 191 255 deepskyblue 0 191 255 deepskyblue1 0 178 238 deepskyblue2 0 154 205 deepskyblue3 0 104 139 deepskyblue4 105 105 105 dimgray 105 105 105 dimgrey 30 144 255 dodgerblue 30 144 255 dodgerblue1 28 134 238 dodgerblue2 24 116 205 dodgerblue3 16 78 139 dodgerblue4 178 34 34 firebrick 255 48 48 firebrick1 238 44 44 firebrick2 205 38 38 firebrick3 139 26 26 firebrick4 255 250 240 floralwhite 34 139 34 forestgreen 220 220 220 gainsboro 248 248 255 ghostwhite 255 215 0 gold 255 215 0 gold1 238 201 0 gold2 205 173 0 gold3 139 117 0 gold4 218 165 32 goldenrod 255 193 37 goldenrod1 238 180 34 goldenrod2 205 155 29 goldenrod3 139 105 20 goldenrod4 190 190 190 gray 0 0 0 gray0 3 3 3 gray1 5 5 5 gray2 8 8 8 gray3 10 10 10 gray4 13 13 13 gray5 15 15 15 gray6 18 18 18 gray7 20 20 20 gray8 23 23 23 gray9 26 26 26 gray10 28 28 28 gray11 31 31 31 gray12 33 33 33 gray13 36 36 36 gray14 38 38 38 gray15 41 41 41 gray16 43 43 43 gray17 46 46 46 gray18 48 48 48 gray19 51 51 51 gray20 54 54 54 gray21 56 56 56 gray22 59 59 59 gray23 61 61 61 gray24 64 64 64 gray25 66 66 66 gray26 69 69 69 gray27 71 71 71 gray28 74 74 74 gray29 77 77 77 gray30 79 79 79 gray31 82 82 82 gray32 84 84 84 gray33 87 87 87 gray34 89 89 89 gray35 92 92 92 gray36 94 94 94 gray37 97 97 97 gray38 99 99 99 gray39 102 102 102 gray40 105 105 105 gray41 107 107 107 gray42 110 110 110 gray43 112 112 112 gray44 115 115 115 gray45 117 117 117 gray46 120 120 120 gray47 122 122 122 gray48 125 125 125 gray49 127 127 127 gray50 130 130 130 gray51 133 133 133 gray52 135 135 135 gray53 138 138 138 gray54 140 140 140 gray55 143 143 143 gray56 145 145 145 gray57 148 148 148 gray58 150 150 150 gray59 153 153 153 gray60 156 156 156 gray61 158 158 158 gray62 161 161 161 gray63 163 163 163 gray64 166 166 166 gray65 168 168 168 gray66 171 171 171 gray67 173 173 173 gray68 176 176 176 gray69 179 179 179 gray70 181 181 181 gray71 184 184 184 gray72 186 186 186 gray73 189 189 189 gray74 191 191 191 gray75 194 194 194 gray76 196 196 196 gray77 199 199 199 gray78 201 201 201 gray79 204 204 204 gray80 207 207 207 gray81 209 209 209 gray82 212 212 212 gray83 214 214 214 gray84 217 217 217 gray85 219 219 219 gray86 222 222 222 gray87 224 224 224 gray88 227 227 227 gray89 229 229 229 gray90 232 232 232 gray91 235 235 235 gray92 237 237 237 gray93 240 240 240 gray94 242 242 242 gray95 245 245 245 gray96 247 247 247 gray97 250 250 250 gray98 252 252 252 gray99 255 255 255 gray100 0 255 0 green 0 255 0 green1 0 238 0 green2 0 205 0 green3 0 139 0 green4 173 255 47 greenyellow 190 190 190 grey 0 0 0 grey0 3 3 3 grey1 5 5 5 grey2 8 8 8 grey3 10 10 10 grey4 13 13 13 grey5 15 15 15 grey6 18 18 18 grey7 20 20 20 grey8 23 23 23 grey9 26 26 26 grey10 28 28 28 grey11 31 31 31 grey12 33 33 33 grey13 36 36 36 grey14 38 38 38 grey15 41 41 41 grey16 43 43 43 grey17 46 46 46 grey18 48 48 48 grey19 51 51 51 grey20 54 54 54 grey21 56 56 56 grey22 59 59 59 grey23 61 61 61 grey24 64 64 64 grey25 66 66 66 grey26 69 69 69 grey27 71 71 71 grey28 74 74 74 grey29 77 77 77 grey30 79 79 79 grey31 82 82 82 grey32 84 84 84 grey33 87 87 87 grey34 89 89 89 grey35 92 92 92 grey36 94 94 94 grey37 97 97 97 grey38 99 99 99 grey39 102 102 102 grey40 105 105 105 grey41 107 107 107 grey42 110 110 110 grey43 112 112 112 grey44 115 115 115 grey45 117 117 117 grey46 120 120 120 grey47 122 122 122 grey48 125 125 125 grey49 127 127 127 grey50 130 130 130 grey51 133 133 133 grey52 135 135 135 grey53 138 138 138 grey54 140 140 140 grey55 143 143 143 grey56 145 145 145 grey57 148 148 148 grey58 150 150 150 grey59 153 153 153 grey60 156 156 156 grey61 158 158 158 grey62 161 161 161 grey63 163 163 163 grey64 166 166 166 grey65 168 168 168 grey66 171 171 171 grey67 173 173 173 grey68 176 176 176 grey69 179 179 179 grey70 181 181 181 grey71 184 184 184 grey72 186 186 186 grey73 189 189 189 grey74 191 191 191 grey75 194 194 194 grey76 196 196 196 grey77 199 199 199 grey78 201 201 201 grey79 204 204 204 grey80 207 207 207 grey81 209 209 209 grey82 212 212 212 grey83 214 214 214 grey84 217 217 217 grey85 219 219 219 grey86 222 222 222 grey87 224 224 224 grey88 227 227 227 grey89 229 229 229 grey90 232 232 232 grey91 235 235 235 grey92 237 237 237 grey93 240 240 240 grey94 242 242 242 grey95 245 245 245 grey96 247 247 247 grey97 250 250 250 grey98 252 252 252 grey99 255 255 255 grey100 240 255 240 honeydew 240 255 240 honeydew1 224 238 224 honeydew2 193 205 193 honeydew3 131 139 131 honeydew4 255 105 180 hotpink 255 110 180 hotpink1 238 106 167 hotpink2 205 96 144 hotpink3 139 58 98 hotpink4 205 92 92 indianred 255 106 106 indianred1 238 99 99 indianred2 205 85 85 indianred3 139 58 58 indianred4 255 255 240 ivory 255 255 240 ivory1 238 238 224 ivory2 205 205 193 ivory3 139 139 131 ivory4 240 230 140 khaki 255 246 143 khaki1 238 230 133 khaki2 205 198 115 khaki3 139 134 78 khaki4 230 230 250 lavender 255 240 245 lavenderblush 255 240 245 lavenderblush1 238 224 229 lavenderblush2 205 193 197 lavenderblush3 139 131 134 lavenderblush4 124 252 0 lawngreen 255 250 205 lemonchiffon 255 250 205 lemonchiffon1 238 233 191 lemonchiffon2 205 201 165 lemonchiffon3 139 137 112 lemonchiffon4 173 216 230 lightblue 191 239 255 lightblue1 178 223 238 lightblue2 154 192 205 lightblue3 104 131 139 lightblue4 240 128 128 lightcoral 224 255 255 lightcyan 224 255 255 lightcyan1 209 238 238 lightcyan2 180 205 205 lightcyan3 122 139 139 lightcyan4 238 221 130 lightgoldenrod 255 236 139 lightgoldenrod1 238 220 130 lightgoldenrod2 205 190 112 lightgoldenrod3 139 129 76 lightgoldenrod4 250 250 210 lightgoldenrodyellow 211 211 211 lightgray 144 238 144 lightgreen 211 211 211 lightgrey 255 182 193 lightpink 255 174 185 lightpink1 238 162 173 lightpink2 205 140 149 lightpink3 139 95 101 lightpink4 255 160 122 lightsalmon 255 160 122 lightsalmon1 238 149 114 lightsalmon2 205 129 98 lightsalmon3 139 87 66 lightsalmon4 32 178 170 lightseagreen 135 206 250 lightskyblue 176 226 255 lightskyblue1 164 211 238 lightskyblue2 141 182 205 lightskyblue3 96 123 139 lightskyblue4 132 112 255 lightslateblue 119 136 153 lightslategray 119 136 153 lightslategrey 176 196 222 lightsteelblue 202 225 255 lightsteelblue1 188 210 238 lightsteelblue2 162 181 205 lightsteelblue3 110 123 139 lightsteelblue4 255 255 224 lightyellow 255 255 224 lightyellow1 238 238 209 lightyellow2 205 205 180 lightyellow3 139 139 122 lightyellow4 50 205 50 limegreen 250 240 230 linen 255 0 255 magenta 255 0 255 magenta1 238 0 238 magenta2 205 0 205 magenta3 139 0 139 magenta4 176 48 96 maroon 255 52 179 maroon1 238 48 167 maroon2 205 41 144 maroon3 139 28 98 maroon4 102 205 170 mediumaquamarine 0 0 205 mediumblue 186 85 211 mediumorchid 224 102 255 mediumorchid1 209 95 238 mediumorchid2 180 82 205 mediumorchid3 122 55 139 mediumorchid4 147 112 219 mediumpurple 171 130 255 mediumpurple1 159 121 238 mediumpurple2 137 104 205 mediumpurple3 93 71 139 mediumpurple4 60 179 113 mediumseagreen 123 104 238 mediumslateblue 0 250 154 mediumspringgreen 72 209 204 mediumturquoise 199 21 133 mediumvioletred 25 25 112 midnightblue 245 255 250 mintcream 255 228 225 mistyrose 255 228 225 mistyrose1 238 213 210 mistyrose2 205 183 181 mistyrose3 139 125 123 mistyrose4 255 228 181 moccasin 255 222 173 navajowhite 255 222 173 navajowhite1 238 207 161 navajowhite2 205 179 139 navajowhite3 139 121 94 navajowhite4 0 0 128 navy 0 0 128 navyblue 253 245 230 oldlace 107 142 35 olivedrab 192 255 62 olivedrab1 179 238 58 olivedrab2 154 205 50 olivedrab3 105 139 34 olivedrab4 255 165 0 orange 255 165 0 orange1 238 154 0 orange2 205 133 0 orange3 139 90 0 orange4 255 69 0 orangered 255 69 0 orangered1 238 64 0 orangered2 205 55 0 orangered3 139 37 0 orangered4 218 112 214 orchid 255 131 250 orchid1 238 122 233 orchid2 205 105 201 orchid3 139 71 137 orchid4 238 232 170 palegoldenrod 152 251 152 palegreen 154 255 154 palegreen1 144 238 144 palegreen2 124 205 124 palegreen3 84 139 84 palegreen4 175 238 238 paleturquoise 187 255 255 paleturquoise1 174 238 238 paleturquoise2 150 205 205 paleturquoise3 102 139 139 paleturquoise4 219 112 147 palevioletred 255 130 171 palevioletred1 238 121 159 palevioletred2 205 104 137 palevioletred3 139 71 93 palevioletred4 255 239 213 papayawhip 255 218 185 peachpuff 255 218 185 peachpuff1 238 203 173 peachpuff2 205 175 149 peachpuff3 139 119 101 peachpuff4 205 133 63 peru 255 192 203 pink 255 181 197 pink1 238 169 184 pink2 205 145 158 pink3 139 99 108 pink4 221 160 221 plum 255 187 255 plum1 238 174 238 plum2 205 150 205 plum3 139 102 139 plum4 176 224 230 powderblue 160 32 240 purple 155 48 255 purple1 145 44 238 purple2 125 38 205 purple3 85 26 139 purple4 255 0 0 red 255 0 0 red1 238 0 0 red2 205 0 0 red3 139 0 0 red4 188 143 143 rosybrown 255 193 193 rosybrown1 238 180 180 rosybrown2 205 155 155 rosybrown3 139 105 105 rosybrown4 65 105 225 royalblue 72 118 255 royalblue1 67 110 238 royalblue2 58 95 205 royalblue3 39 64 139 royalblue4 139 69 19 saddlebrown 250 128 114 salmon 255 140 105 salmon1 238 130 98 salmon2 205 112 84 salmon3 139 76 57 salmon4 244 164 96 sandybrown 46 139 87 seagreen 84 255 159 seagreen1 78 238 148 seagreen2 67 205 128 seagreen3 46 139 87 seagreen4 255 245 238 seashell 255 245 238 seashell1 238 229 222 seashell2 205 197 191 seashell3 139 134 130 seashell4 160 82 45 sienna 255 130 71 sienna1 238 121 66 sienna2 205 104 57 sienna3 139 71 38 sienna4 135 206 235 skyblue 135 206 255 skyblue1 126 192 238 skyblue2 108 166 205 skyblue3 74 112 139 skyblue4 106 90 205 slateblue 131 111 255 slateblue1 122 103 238 slateblue2 105 89 205 slateblue3 71 60 139 slateblue4 112 128 144 slategray 198 226 255 slategray1 185 211 238 slategray2 159 182 205 slategray3 108 123 139 slategray4 112 128 144 slategrey 198 226 255 slategrey1 185 211 238 slategrey2 159 182 205 slategrey3 108 123 139 slategrey4 255 250 250 snow 255 250 250 snow1 238 233 233 snow2 205 201 201 snow3 139 137 137 snow4 0 255 127 springgreen 0 255 127 springgreen1 0 238 118 springgreen2 0 205 102 springgreen3 0 139 69 springgreen4 70 130 180 steelblue 99 184 255 steelblue1 92 172 238 steelblue2 79 148 205 steelblue3 54 100 139 steelblue4 210 180 140 tan 255 165 79 tan1 238 154 73 tan2 205 133 63 tan3 139 90 43 tan4 216 191 216 thistle 255 225 255 thistle1 238 210 238 thistle2 205 181 205 thistle3 139 123 139 thistle4 255 99 71 tomato 255 99 71 tomato1 238 92 66 tomato2 205 79 57 tomato3 139 54 38 tomato4 64 224 208 turquoise 0 245 255 turquoise1 0 229 238 turquoise2 0 197 205 turquoise3 0 134 139 turquoise4 238 130 238 violet 208 32 144 violetred 255 62 150 violetred1 238 58 140 violetred2 205 50 120 violetred3 139 34 82 violetred4 245 222 179 wheat 255 231 186 wheat1 238 216 174 wheat2 205 186 150 wheat3 139 126 102 wheat4 255 255 255 white 245 245 245 whitesmoke 255 255 0 yellow 255 255 0 yellow1 238 238 0 yellow2 205 205 0 yellow3 139 139 0 yellow4 154 205 50 yellowgreen 0707010003765e000081a40000000000000000000000014cc7b61800008982000000b500010002ffffffffffffffff0000002700000000root/usr/local/share/libplot/kanji.txtThe table below lists the Kanji (Japanese ideographic characters) that are built into the GNU libplot library and the GNU plotting utilities based on it, such as `graph'. For each Kanji, the table lists its index according to three different numbering schemes, and one or more possible meanings. In all, 603 Kanji are available. They include 596 of the 2965 Level 1 (i.e., frequently used) Kanji, and seven additional Level 2 Kanji. The 603 Kanji were digitized by Dr. Allen V. Hershey of the U.S. Naval Surface Weapons Center (Dahlgren, VA) in the mid-1960s. They include many Kanji used in scientific writing. For an explanation of how the 603 were chosen, see his technical report "Calligraphy for Computers". (Available from the U.S. National Technical Information Service at +1 703 487 4650; ask for item number AD662398.) These Kanji are part of the HersheyEUC font, which is employed for drawing multibyte Japanese text strings. But you may also use these Kanji while drawing text strings in any other Hershey font, by inserting the appropriate escape sequences. For example, you may use Kanji to label the axes of a graph prepared with `graph'. The first column of the table lists the hexadecimal index of each Kanji in the 2-byte encoding specified by the JIS X0208 standard, and the second column lists its index in the 2-byte Unicode encoding. For information on the JIS X0208 standard, see Ken Lunde's "Understanding Japanese Information Processing" (O'Reilly, 1993), or his on-line supplement, http://www.ora.com/people/authors/lunde/cjk_inf.html . Once you know the hexadecimal JIS code for a Kanji, you may use it when drawing a text string in any of the non-Japanese Hershey fonts built into GNU libplot and GNU `graph'. For example, Kanji J3021 would be specified, when drawing a text string in any non-Japanese Hershey font, by the escape sequence "\#J3021". Four hexadecimal digits are needed after the "\#J". They may be in upper or lower case; e.g. "\#J6D55" is equivalent to "\#J6d55". If you are using the HersheyEUC font for multibyte encoding of Japanese, you would encode Kanji J3021 as, instead, the pair of successive bytes `0xb0' and `0xa1'. That is because 0x80 + 0x30 = 0xb0 and 0x80 + 0x21 = 0xa1. The third column lists the index of each Kanji, in decimal, as specified in the "Modern Reader's Japanese-English Character Dictionary", edited by A. N. Nelson. (C. E. Tuttle and Co., 1962, available as ISBN 0-8048-0408-7 for approximately US$50; a revised edition [ISBN 0-8048-2036-8] appeared in 1997, but uses a different numbering.) GNU libplot supports the specification of Kanji by decimal `Nelson index', as well as by hexadecimal JIS code. As you can see from the table, Kanji N0001 is equivalent to Kanji J306c. This Kanji could be specified, when drawing a text string in any non-Japanese Hershey font, by the escape sequence "\#N0001", as well as by the escape sequence "\#J306c". Four decimal digits are required. The table was constructed with the aid of the KANJIDIC file prepared by Jim Breen . The KANJIDIC file is a text file that contains comprehensive information about each Japanese Kanji, with one line for each Kanji listed in the JIS X0208 standard. Correspondences to other numberings (Unicode, Nelson, etc.) are given. The KANJIDIC file is available at ftp://ftp.monash.edu.au/pub/nihongo/kanjidic.gz , and documentation on its format is available at ftp://ftp.monash.edu.au/pub/nihongo/kanjidic.doc . Level 1 Kanji (total number: 596) --------------------------------- JIS Unicode Nelson Meaning(s) --- ------ ------ ---------- J3021 U4e9c N0043 {Asia} {rank next} {come after} {-ous} J3026 U611b N2829 {love} {affection} {favourite} J302d U60aa N0062 {bad} {vice} {rascal} {false} {evil} {wrong} J3035 U5727 N0818 {pressure} {push} {overwhelm} {oppress} {dominate} J303f U6216 N1802 {some} {one} {or} {possibly} {a certain} J3045 U6697 N2154 {darkness} {disappear} {shade} {informal} {grow dark} {be blinded} J304c U4f4d N0401 {rank} {grade} {throne} {crown} {about} {some} J3057 U6613 N2107 {easy} {fortune-telling} {ready to} {simple} {divination} J3059 U70ba N0138 {do} {change} {make} {benefit} {welfare} {be of use} {reach to} {try} {practice} {cost} {serve as} {good} {advantage} {as a result of} J305b U7570 N3008 {uncommon} {queerness} {strangeness} {wonderful} {curious} {unusual} J305e U7def N3579 {horizontal} {woof} {left & right} {latitude} J3061 U8863 N4214 {garment} {clothes} {dressing} J306c U4e00 N0001 {one} J3070 U7a32 N3294 {rice plant} J3078 U56e0 N1026 {cause} {factor} {be associated with} {depend on} {be limited to} J307a U5f15 N1562 {pull} {tug} {jerk} {admit} {install} {quote} {refer to} J3122 U9670 N5006 {shade} {yin} {negative} {sex organs} {secret} {shadow} J3126 U53f3 N0878 {right} J3127 U5b87 N1280 {eaves} {roof} {house} {heaven} J3129 U7fbd N3673 {feathers} J312b U96e8 N5042 {rain} J3132 U6e26 N2629 {whirlpool} {eddy} {vortex} J313b U74dc N2973 {melon} J313f U904b N4725 {carry} {luck} {destiny} {fate} {lot} {transport} {progress} {advance} J3140 U96f2 N5046 {cloud} J314a U6c38 N0130 {eternity} {long} {lengthy} J3155 U6db2 N2599 {fluid} {liquid} {juice} {sap} {secretion} J315f U5186 N0617 {circle} {yen} {round} J3173 U9060 N4733 {distant} {far} J3176 U5869 N1125 {salt} J3177 U65bc N2083 {at} {in} {on} {as for} J317e U5fdc N1504 {apply} {answer} {yes} {OK} {reply} {accept} J3221 U62bc N1885 {push} {stop} {check} {subdue} {attach} {seize} {weight} {shove} {press} {seal} {do in spite of} J3223 U6a2a N2361 {sideways} {side} {horizontal} {width} {woof} J3226 U738b N2922 {king} {rule} {magnate} J322b U9ec4 N5399 {yellow} J322f U5104 N0551 {hundred million} {10**8} J3235 U4e59 N0260 {the latter} {duplicate} {strange} {witty} J3239 U6e29 N2634 {warm} J323b U97f3 N5110 {sound} {noise} J323c U4e0b N0009 {below} {down} {descend} {give} {low} {inferior} J323d U5316 N0350 {change} {take the form of} {influence} {enchant} {delude} {-ization} J323f U4f55 N0409 {what} J3241 U4fa1 N0422 {value} {price} J3243 U52a0 N0716 {add} {addition} {increase} {join} {include} {Canada} J3244 U53ef N0024 {can} {passable} {mustn't} {should not} {do not} J3246 U590f N0058 {summer} J3248 U5bb6 N1311 {house} {home} J324a U79d1 N3272 {department} {course} {section} J324c U679c N0107 {fruit} {reward} {carry out} {achieve} {complete} {end} {finish} {succeed} J324f U6cb3 N2530 {river} J3250 U706b N2743 {fire} J3256 U82b1 N3909 {flower} J3259 U8377 N3956 {baggage} {shoulder-pole load} {bear (a burden)} {shoulder (a gun)} {load} {cargo} {freight} J3261 U904e N4723 {overdo} {exceed} {go beyond} {error} J3267 U7259 N2848 {tusk} {fang} J3268 U753b N0050 {brush-stroke} {picture} J3272 U89e3 N4306 {unravel} {notes} {key} {explanation} {understanding} {untie} {undo} {solve} {answer} {cancel} {absolve} {explain} {minute} J3273 U56de N1028 {-times} {round} {game} {revolve} J3323 U68b0 N2264 {contraption} {fetter} {machine} {instrument} J3324 U6d77 N2553 {sea} {ocean} J3326 U754c N2998 {world} J3328 U7d75 N3537 {picture} {drawing} {painting} {sketch} J332b U958b N4950 {open} {unfold} {unseal} J332d U8c9d N4486 {shellfish} J3330 U5916 N1168 {outside} J3346 U5404 N1163 {each} {every} {either} J334b U6838 N2254 {nucleus} {core} {kernel} J3351 U89d2 N4301 {angle} {corner} {square} J3353 U8f03 N4623 {contrast} {compare} J3357 U9769 N5088 {leather} {become serious} {skin} {hide} {pelt} J3358 U5b66 N1271 {study} {learning} {science} J335a U697d N2324 {music} {comfort} {ease} J3364 U5272 N0703 {proportion} {comparatively} {divide} {cut} {separate} {split} J3424 U74e6 N2977 {tile} {gram} J3428 U5bd2 N1322 {cold} J342c U5dfb N1466 {scroll} {volume} {book} {part} {roll up} {wind up} {tie} {coil} J3433 U5e72 N1492 {dry} {parch} J3434 U5e79 N0790 {tree-trunk} J3436 U611f N1731 {emotion} {feeling} {sensation} J3437 U6163 N1756 {accustomed} {get used to} {become experienced} J3445 U7518 N2988 {sweet} {coax} {pamper} {be content} {sugary} J3449 U7ba1 N3416 {pipe} {tube} {wind instrument} {drunken talk} J3454 U9084 N4750 {send back} {return} J3456 U9593 N4949 {interval} {space} J3458 U95a2 N4958 {connection} {barrier} {gateway} {involve} {concerning} J346f U5668 N0994 {utensil} {vessel} {receptacle} {implement} {instrument} {ability} {container} {tool} {set} J3470 U57fa N1098 {fundamentals} {radical (chem)} {counter for machines} {foundation} J3476 U5e7e N1496 {how many} {how much} {how far} {how long} J347c U671f N3785 {period} {time} {date} {term} J3521 U6a5f N2379 {mechanism} {opportunity} {occasion} {machine} {airplane} J3522 U5e30 N1582 {homecoming} {arrive at} {lead to} {result in} J3524 U6c17 N2480 {spirit} {mind} J3525 U6c7d N2507 {vapor} {steam} J352d U8a18 N4318 {scribe} {account} {narrative} J3530 U8ecc N4610 {rut} {wheel} {track} {model} {way of doing} J3534 U9b3c N5276 {ghost} {devil} J3535 U4e80 N5445 {tortoise} {turtle} J3546 U83ca N3981 {chrysanthemum} J3555 U9006 N4685 {inverted} {reverse} {opposite} {wicked} J355a U53ca N0154 {reach out} {exert} {exercise} {cause} J355b U5438 N0885 {suck} {imbibe} {inhale} {sip} J355d U5f13 N1560 {bow} {bow (archery, violin)} J3565 U7403 N2941 {ball} {sphere} J3566 U7a76 N3314 {research} {study} J3569 U7d1a N3496 {class} {rank} {grade} J356d U725b N2852 {cow} J356e U53bb N1051 {gone} {past} {quit} {leave} {elapse} {eliminate} {divorce} J356f U5c45 N1387 {reside} {to be} {exist} {live with} J3575 U865a N4109 {void} {emptiness} {unpreparedness} {crack} {fissure} {untruth} J3577 U8ddd N4548 {long-distance} J357b U9b5a N5281 {fish} J357e U4eac N0295 {capital} {10**16} J3621 U4f9b N0431 {submit} {offer} {present} {serve (meal)} {accompany} J3626 U5171 N0581 {together} {both} {neither} {all} {and} {alike} {with} J362d U5883 N1135 {boundary} {border} {region} J362f U5f37 N1571 {strong} J3635 U6559 N2052 {teach} {faith} {doctrine} J3636 U6a4b N2378 {bridge} J364a U66f2 N0103 {bend} {music} {melody} {composition} {pleasure} {injustice} {fault} {curve} {crooked} {perverse} {lean} J364b U6975 N2305 {poles} {settlement} {conclusion} {end} {highest rank} {electric poles} {very} {extremely} {most} {highly} {10**48} J364c U7389 N2923 {jewel} {ball} J3651 U5747 N1065 {level} {average} J3661 U8fd1 N4671 {near} {early} {akin} {tantamount} J3662 U91d1 N4815 {gold} J3664 U9280 N4855 {silver} J3665 U4e5d N0146 {nine} J3671 U5177 N3128 {tool} {utensil} {means} {possess} {ingredients} J3675 U7a7a N3317 {empty} {sky} {void} {vacant} {vacuum} J367e U5c48 N1386 {yield} {bend} {flinch} {submit} J3738 U4fc2 N0449 {person in charge} {connection} {duty} {concern oneself} J3739 U50be N0534 {lean} {incline} {tilt} {trend} {wane} {sink} {ruin} {bias} J373e U73ea N2937 {jade scepter or tablet (authority symbol)} J373f U578b N1077 {mould} {type} {model} J3741 U5f62 N1589 {shape} {form} {style} J3742 U5f84 N1602 {diameter} {path} {method} J374f U7cfb N0195 {lineage} {system} J3750 U7d4c N3523 {sutra} {longitude} {pass thru} {expire} {warp} J3757 U8a08 N4312 {plot} {plan} {scheme} {measure} J375a U8efd N4620 {lightly} {trifling} {unimportant} J3767 U6b20 N2412 {lack} {gap} {fail} J3768 U6c7a N2509 {decide} {fix} {agree upon} {appoint} J376a U7a74 N3313 {hole} {aperture} {slit} {cave} {den} J376b U7d50 N3540 {tie} {bind} {contract} {join} {organize} {do up hair} {fasten} J376c U8840 N4205 {blood} J376e U6708 N2169 {month} {moon} J3777 U570f N1045 {sphere} {circle} {radius} {range} J3824 U72ac N2868 {dog} J3826 U7814 N3180 {polish} {study of} {sharpen} J3828 U7d79 N3543 {silk} J382b U898b N4284 {see} {hopes} {chances} {idea} {opinion} {look at} {visible} J3833 U9a13 N5220 {verification} {effect} {testing} J3835 U5143 N0275 {beginning} {former time} {origin} J3836 U539f N0825 {meadow} {original} {primitive} {field} {plain} {prairie} {tundra} {wilderness} J3839 U5f26 N1568 {bowstring} {chord} {hypotenuse} J383a U6e1b N2637 {dwindle} {decrease} {reduce} {decline} {curtail} {get hungry} J383b U6e90 N2656 {source} {origin} J383d U73fe N2943 {present} {existing} {actual} J3840 U8a00 N4309 {say} J3842 U9650 N4987 {limit} {restrict} {to best of ability} J3845 U53e4 N0770 {old} J3847 U56fa N1036 {harden} {set} {clot} {curdle} J384c U5f27 N1567 {arc} {arch} {bow} J384d U6238 N1817 {door} J384e U6545 N2044 {happenstance} {especially} {intentionally} {reason} {cause} {circumstances} {the late} {therefore} {consequently} J385d U9f13 N5415 {drum} {beat} {rouse} {muster} J385e U4e94 N0015 {five} J3861 U5348 N0162 {noon} J3865 U5f8c N1610 {behind} {back} {later} J3866 U5fa1 N1628 {honorable} {manipulate} {govern} J386c U8a9e N4374 {word} {speech} {language} J3872 U4ea4 N0290 {mingle} {mixing} {association} {coming & going} J3877 U5149 N1358 {ray} {light} J3878 U516c N0579 {public} {prince} {official} {governmental} J387d U53e3 N0868 {mouth} J387e U5411 N0101 {yonder} {facing} {beyond} {confront} {defy} {tend toward} {approach} J3929 U5de5 N1451 {craft} {construction} J3931 U6052 N1683 {constancy} {always} J393d U69cb N2343 {posture} {build} {pretend} J3943 U7532 N0092 {armor} {high (voice)} {A grade} {1st class} {former} {instep} {carapace} J394d U8003 N3684 {consider} {think over} J3954 U884c N4213 {going} {journey} J3955 U8861 N1641 {equilibrium} {measuring rod} {scale} J395b U9271 N4843 {mineral} {ore} J395d U92fc N4883 {steel} J395f U964d N4994 {descend} {precipitate} {fall} {surrender} J3960 U9805 N1459 {paragraph} {nape of neck} {clause} {item} {term (expression)} J3961 U9999 N5188 {incense} {smell} {perfume} J3962 U9ad8 N5248 {tall} {high} {expensive} J3966 U53f7 N0882 {nickname} {number} {item} {title} {pseudonym} {name} {call} J3967 U5408 N0383 {fit} {suit} {join} {0.1} J3971 U56fd N1037 {country} J3975 U9ed2 N5403 {black} J397c U9aa8 N5236 {skeleton} {bone} {remains} {frame} J397e U8fbc N4660 {crowded} {mixture} {in bulk} {included} {(kokuji)} J3a21 U6b64 N2430 {this} {current} {next} {coming} {last} {past} J3a23 U4eca N0352 {now} J3a2c U6839 N2261 {root} {radical} {head (pimple)} J3a38 U5de6 N1455 {left} J3a39 U5dee N3662 {distinction} {difference} {variation} {discrepancy} {margin} {balance} J3a42 U5ea7 N1515 {squat} {seat} {cushion} {gathering} {sit} J3a46 U518d N0035 {again} {twice} {second time} J3a47 U6700 N2146 {utmost} {most} {extreme} J3a59 U7d30 N3522 {dainty} {get thin} {taper} {slender} {narrow} J3a5f U5728 N1055 {exist} {outskirts} {suburbs} {located in} J3a6e U4f5c N0407 {make} {production} {prepare} {build} J3a72 U6628 N2119 {yesterday} {previous} J3a79 U685c N2256 {cherry tree} J3b2e U76bf N3113 {dish} {a helping} {plate} J3b30 U4e09 N0008 {three} J3b33 U5c71 N1407 {mountain} J3b36 U6563 N2056 {scatter} {disperse} {spend} {squander} J3b3b U7b97 N3415 {calculate} {divining} {number} {abacus} {probability} J3b40 U9178 N4789 {acid} {bitterness} {sour} {tart} J3b45 U4ed5 N0362 {attend} {doing} {official} {serve} J3b4d U56db N1025 {four} J3b4e U58eb N1160 {gentleman} {samurai} J3b4f U59cb N1208 {commence} {begin} J3b52 U5b50 N1264 {child} J3b54 U5e02 N0284 {market} {city} {town} J3b57 U601d N3001 {think} J3b58 U6307 N1904 {finger} {point to} {indicate} {put into} {play (chess)} {measure (ruler)} J3b59 U652f N2039 {branch} {support} {sustain} J3b5e U679d N2211 {bough} {branch} {twig} {limb} J3b5f U6b62 N2429 {stop} {halt} J3b60 U6b7b N2439 {death} {die} J3b61 U6c0f N2478 {family name} {surname} {clan} J3b64 U79c1 N3265 {private} {I} {me} J3b65 U7cf8 N3492 {thread} J3b66 U7d19 N3510 {paper} J3b6a U81f3 N3845 {climax} {arrive} {proceed} {reach} {attain} {result in} J3b73 U96cc N2435 {feminine} {female} J3b75 U6b6f N5428 {tooth} {cog} J3b76 U4e8b N0272 {matter} {thing} {fact} {business} {reason} {possibly} J3b7a U5b57 N1281 {character} {letter} {word} {section of village} J3b7d U6301 N1903 {hold} {have} J3b7e U6642 N2126 {time} {hour} J3c21 U6b21 N0638 {next} {order} {sequence} J3c27 U78c1 N3209 {magnet} {porcelain} J3c28 U793a N3228 {show} {indicate} {point out} {express} {display} J3c2a U8033 N3697 {ear} J3c2b U81ea N3841 {oneself} J3c2d U8f9e N3860 {resign} {word} {term} {expression} J3c2f U9e7f N5375 {deer} J3c30 U5f0f N1556 {style} {ceremony} {rite} {fn} {method} {system} {form} {expr} J3c34 U8ef8 N4619 {axis} {pivot} {stem} {stalk} J3c37 U4e03 N0261 {seven} J3c3c U5ba4 N1300 {room} {apartment} {chamber} {greenhouse} {cellar} J3c3e U6e7f N2631 {damp} {wet} {moist} J3c41 U8cea N4518 {substance} {quality} {matter} {temperament} J3c42 U5b9f N1297 {reality} {truth} J3c4d U5c04 N4603 {shoot} {shine into} {onto} {archery} J3c50 U659c N2074 {diagonal} {slanting} {oblique} J3c54 U8005 N3685 {someone} {person} J3c56 U8eca N4608 {car} J3c5c U5c3a N1377 {shaku} {Japanese foot} {measure} {scale} {rule} J3c61 U91c8 N4809 {explanation} J3c63 U82e5 N3926 {young} {if} {perhaps} {possibly} {low number} {immature} J3c67 U4e3b N0285 {lord} {chief} {master} {main thing} {principal} J3c68 U53d6 N3699 {take} {fetch} {take up} J3c6a U624b N1827 {hand} J3c6f U7a2e N3295 {species} {kind} {class} {variety} {seed} J3c72 U9152 N2573 {sake} {alcohol} J3c73 U9996 N5186 {neck} J3c7e U5468 N0622 {circumference} {circuit} {lap} J3d29 U79cb N3273 {autumn} J3d2a U7d42 N3521 {end} {finish} J3d2e U821f N3863 {boat} {ship} J3d39 U919c N4798 {ugly} {unclean} {shame} {bad looking} J3d3d U5341 N0768 {ten} J3d3e U5f93 N1613 {accompany} {obey} {submit to} {comply} {follow} {secondary} {incidental} {subordinate} J3d44 U7e26 N3597 {vertical} {length} {height} {self-indulgent} {wayward} J3d45 U91cd N0224 {heavy} {heap up} {pile up} {nest of boxes} {-fold} J3d50 U51fa N0097 {exit} {leave} J3d51 U8853 N1621 {art} {technique} {skill} {means} {trick} {resources} {magic} J3d55 U6625 N2122 {springtime} {spring (season)} J3d60 U6e96 N0791 {semi-} {correspond to} {proportionate to} {conform} {imitate} J3d63 U7d14 N3509 {genuine} {purity} {innocence} {net (profit)} J3d68 U51e6 N1162 {dispose} {manage} {deal with} {sentence} {condemn} {act} {behave} J3d6b U6691 N2138 {sultry} {hot} {summer heat} J3d71 U66f8 N3719 {write} J3d77 U5973 N1185 {woman} {female} J3d7c U9664 N4993 {exclude} {division (x/3)} {remove} {abolish} {cancel} {except} J3e26 U5546 N0321 {make a deal} {selling} {dealing in} {merchant} J3e2e U5c0f N1355 {little} {small} J3e2f U5c11 N0166 {few} {little} J3e3d U6676 N2137 {sparkle} {clear} {crystal} J3e3e U677e N2212 {pine tree} J3e46 U713c N2772 {bake} {burning} J3e4b U785d N3192 {nitrate} {saltpeter} J3e4e U79f0 N3280 {appellation} {praise} {admire} {name} {title} {fame} J3e57 U885d N1638 {collide} {brunt} {highway} {opposition (astronomy)} {thrust} {pierce} {stab} {prick} J3e5a U8a3c N4341 {evidence} {proof} {certificate} J3e5d U8c61 N4472 {elephant} {pattern after} {imitate} {image} {shape} {sign (of the times)} J3e65 U4e0a N0798 {above} {up} J3e68 U4e57 N0223 {ride} {power} {multiplication} {record} {no. of vehicles} {board} {mount} {join} J3e6c U5834 N1113 {location} {place} J3e6f U5e38 N1364 {usual} {ordinary} {normal} {regular} J3e75 U72b6 N2839 {status quo} {conditions} {circumstances} {form} {appearance} J3e78 U84b8 N4002 {steam} {heat} {sultry} {foment} {get musty} J3f22 U690d N2303 {plant} J3f27 U8272 N3889 {color} J3f29 U98df N5154 {eat} {food} J3f2d U4f38 N0403 {expand} {stretch} {extend} {lengthen} {increase} J3f34 U5fc3 N1645 {heart} {mind} {spirit} J3f36 U632f N1920 {shake} {wave} {wag} {swing} J3f37 U65b0 N2080 {new} J3f39 U68ee N2301 {forest} {woods} J3f3f U771f N0783 {true} {reality} {Buddhist sect} J3f43 U81e3 N3837 {retainer} {subject} J3f48 U8eab N4601 {somebody} {person} {one's station in life} J3f49 U8f9b N4646 {spicy} {bitter} {hot} {acrid} J3f4a U9032 N4709 {advance} {proceed} {progress} {promote} J3f4c U9707 N5055 {quake} {shake} {tremble} {quiver} {shiver} J3f4d U4eba N0339 {person} J3f5e U56f3 N1034 {map} {drawing} {plan} {unexpected} {accidentally} J3f62 U5782 N0211 {droop} {suspend} {hang} {slouch} J3f65 U6c34 N2482 {water} J3f69 U7fe0 N3676 {green} J3f74 U6570 N2057 {number} {strength} {fate} {law} {figures} J402d U6027 N1666 {sex} {gender} {nature} J402e U6210 N1799 {turn into} {become} {get} {grow} {elapse} {reach} J4030 U6574 N2436 {organize} {arranging} {tune} {tone} {meter} {key (music)} J4031 U661f N2121 {star} {spot} {dot} {mark} J4032 U6674 N2143 {clear up} J4035 U6b63 N0027 {correct} {justice} {righteous} {10**40} J4038 U751f N2991 {life} {genuine} {birth} J403e U897f N4273 {west} {Spain} J4044 U9752 N5076 {blue} {green} J4045 U9759 N5077 {quiet} J404e U6614 N2108 {once upon a time} {antiquity} {old times} J404f U6790 N2194 {chop} {divide} {tear} {analyze} J4050 U77f3 N3176 {stone} J4051 U7a4d N3306 {volume} {product (x*y)} {acreage} {contents} {pile up} {stack} {load} {amass} J4056 U8d64 N4534 {red} J405a U5207 N0667 {cut} {cutoff} {be sharp} J405c U63a5 N1951 {touch} {contact} {adjoin} {piece together} J405e U6298 N1855 {fold} {break} {fracture} {bend} {yield} {submit} J4063 U96ea N5044 {snow} J4064 U7d76 N3539 {discontinue} {beyond} {sever} {cut off} {abstain} {interrupt} {suppress} J4065 U820c N3855 {tongue} {reed} {clapper} J4068 U5148 N0571 {before} {ahead} {previous} {future} {precedence} J4069 U5343 N0156 {thousand} J406e U5ddd N1447 {stream} {river} J4070 U6247 N1823 {fan} {folding fan} J407e U7dda N3580 {line} {track} J4125 U8239 N3873 {ship} {boat} J4130 U524d N0595 {in front} {before} J4133 U7136 N2770 {sort of thing} {so} {if so} {in that case} {well} J4134 U5168 N0384 {whole} {entire} {all} {complete} {fulfill} J4147 U7d20 N3511 {elementary} {principle} {naked} {uncovered} J4148 U7d44 N3520 {association} {braid} {plait} {construct} {assemble} {unite} {cooperate} {grapple} J4150 U53cc N0859 {pair} {set} {comparison} {no. of pairs} J4158 U5c64 N1402 {stratum} {social class} {layer} {story} {floor} J415b U60f3 N1728 {concept} {think} {idea} {thought} J4161 U65e9 N2100 {early} {fast} J416a U76f8 N2241 {inter-} {mutual} {together} {each other} {minister of state} {councillor} {aspect} {phase} {physiognomy} J416d U7dcf N3567 {general} {whole} {all} {full} {total} J4170 U8349 N3939 {grass} {weeds} {herbs} {pasture} {write} {draft} J4175 U88c5 N4234 {attire} {dress} {pretend} {disguise} {profess} J4176 U8d70 N4539 {run} J417c U50cf N0540 {statue} {picture} {image} {figure} {portrait} J417d U5897 N1137 {increase} {add} {augment} {gain} {promote} J4224 U9020 N4701 {create} {make} {structure} {physique} J4226 U5074 N0509 {side} {lean} {oppose} {regret} J422b U675f N0196 {bundle} {sheaf} {ream} {tie in bundles} {govern} {manage} {control} J422c U6e2c N2632 {fathom} {plan} {scheme} {measure} J422d U8db3 N4546 {leg} {foot} {be sufficient} J422e U901f N4700 {quick} {fast} J4233 U7d9a N3544 {continue} {series} {sequel} J4236 U5176 N0590 {that} J4238 U5b58 N1267 {suppose} {be aware of} {believe} {feel} J423e U4ed6 N0361 {other} {another} {the others} J423f U591a N1169 {many} {frequent} {much} J4240 U592a N1172 {plump} {thick} {big around} J424a U6955 N2313 {ellipse} J424e U4f53 N0405 {body} {substance} {object} {reality} J4250 U5bfe N2067 {vis-a-vis} {opposite} {even} {equal} {versus} {anti-} {compare} J4256 U614b N1743 {attitude} {condition} {figure} {appearance} {voice (of verbs)} J4265 U4ee3 N0364 {substitute} {change} {convert} {replace} {period} {age} {generation} {charge} {rate} {fee} J4267 U5927 N1171 {large} {big} J4268 U7b2c N3385 {No.} {residence} J426a U984c N2164 {topic} {subject} J426c U6edd N2655 {waterfall} {rapids} {cascade} J4274 U6ca2 N2503 {swamp} J4323 U9054 N4721 {accomplished} {reach} {arrive} {attain} J432b U8c37 N4458 {valley} J432f U8ab0 N4384 {who} {someone} {somebody} J4331 U5358 N0139 {simple} {one} {single} {merely} J433a U70ad N1418 {charcoal} {coal} J433b U77ed N3172 {short} {brevity} {fault} {defect} {weak point} J4346 U5f3e N1575 {bullet} {twang} {flip} {snap} J434b U7537 N2996 {male} J434d U5024 N0488 {price} {cost} {value} J434e U77e5 N3169 {know} {wisdom} J434f U5730 N1056 {ground} {earth} J4356 U7f6e N3644 {placement} {put} {set} {deposit} {leave behind} {keep} {employ} {pawn} J4359 U9045 N4722 {slow} {late} {back} {later} J435d U7af9 N3366 {bamboo} J4362 U7a92 N3325 {plug up} {obstruct} J4363 U8336 N3940 {tea} J4365 U7740 N3665 {don} {arrive} {wear} {counter for suits of clothing} J4366 U4e2d N0081 {in} {inside} {middle} {mean} {center} J4368 U5b99 N1291 {mid-air} {air} {space} {sky} {memorization} {interval of time} J436b U663c N0053 {daytime} {noon} J436c U67f1 N2236 {pillar} {post} {cylinder} {support} J436e U866b N4115 {insect} {bug} {temper} J442b U671d N3788 {morning} {dynasty} {regime} {epoch} {period} {(North) Korea} J442c U6f6e N2702 {tide} {salt water} {opportunity} J4436 U8d85 N4543 {transcend} {super-} {ultra-} J4439 U9577 N4938 {long} {leader} J443b U9ce5 N5340 {bird} {chicken} J443e U76f4 N0775 {straightaway} {honesty} {frankness} {fix} {repair} J444c U901a N4703 {traffic} {pass through} {avenue} {commute} J4463 U4f4e N0406 {lower} {short} {humble} J446a U5b9a N1296 {determine} {fix} {establish} {decide} J446c U5e95 N1508 {bottom} {sole} {depth} {bottom price} {base} {kind} {sort} J446d U5ead N1514 {courtyard} {garden} {yard} J4472 U633a N1914 {no. of guns} {tools} {candles} {oars} {palanquins} {rickshaws} {bravely volunteer} J4478 U7a0b N3285 {extent} {degree} {law} {formula} {distance} {limits} {amount} J4479 U7de0 N3581 {tighten} {tie} {shut} {lock} {fasten} J4526 U6458 N1987 {pinch} {pick} {pluck} {trim} {clip} {summarize} J452a U7684 N3097 {bull's eye} {mark} {target} {object} {adjective ending} J452f U54f2 N0931 {philosophy} {clear} J4534 U9244 N4844 {iron} J4535 U5178 N0588 {code} {ceremony} {law} {rule} J4537 U5929 N0016 {heavens} {sky} {imperial} J453e U8ee2 N4615 {revolve} {turn around} {change} J4540 U70b9 N0804 {spot} {point} {mark} {speck} {decimal point} J4544 U7530 N2994 {rice field} {rice paddy} J4545 U96fb N5050 {electricity} J454c U5f92 N1614 {junior} {emptiness} {vanity} {futility} {uselessness} {ephemeral thing} {gang} {set} {party} {people} J4559 U5ea6 N1511 {degrees} {occurrence} {time} J455a U571f N1050 {soil} {earth} {ground} {Turkey} J455f U51ac N1161 {winter} J4561 U5200 N0665 {sword} {saber} {knife} J4563 U5854 N1109 {pagoda} {tower} {steeple} J4567 U5cf6 N0230 {island} J456c U6771 N0213 {east} J4574 U706f N2745 {lamp} {a light} {light} {no. of lights} J4576 U5f53 N1359 {hit} {right} {appropriate} {himself} J4579 U7b49 N3396 {etc.} {and so forth} {class (1st)} {quality} {equal} {similar} J4626 U8c46 N4465 {beans} {pea} {midget} J4630 U52d5 N0730 {move} {motion} {change} {confusion} {shift} {shake} J4631 U540c N0619 {same} {agree} {equal} J4633 U5c0e N1354 {guidance} {leading} {conduct} {usher} J463b U9053 N4724 {road-way} {street} {district} {journey} {course} {moral} {teachings} J463c U9285 N4853 {copper} J4643 U7279 N2860 {special} J4649 U8aad N4375 {read} J465e U66c7 N2160 {cloudy weather} {cloud up} J4662 U5185 N0082 {inside} {within} {between} {among} {house} {home} J466e U5357 N0778 {south} J4671 U96e3 N5038 {difficult} {impossible} {trouble} {accident} {defect} J4673 U4e8c N0273 {two} J4679 U8089 N3724 {meat} J467c U65e5 N2097 {day} {sun} {Japan} J467e U5165 N0574 {enter} {insert} J4721 U5982 N1189 {likeness} {like} {such as} {as if} {better} {best} {equal} J472e U71b1 N2797 {heat} {temperature} {fever} {mania} {passion} J472f U5e74 N0188 {year} J4733 U71c3 N2808 {burn} {blaze} {glow} J4734 U7c98 N3472 {sticky} {glutinous} {greasy} {persevere} J4748 U6ce2 N2529 {waves} {billows} {Poland} J474f U99ac N5191 {horse} J4769 U79e4 N3275 {balances} {scales} {steelyard} J4772 U767d N3095 {white} J477e U9ea6 N5385 {barley} {wheat} J4821 U51fd N0049 {box (archaic)} J482c U516b N0577 {eight} J482f U767a N3092 {discharge} {departure} {publish} {emit} {start from} {disclose} J483e U534a N0132 {half} {middle} {odd number} {semi-} {part-} J483f U53cd N0817 {anti-} J4841 U5e06 N1469 {sail} J484c U822c N3865 {carrier} {carry} {all} J4856 U756a N4811 {turn} {number in a series} J4860 U5f7c N1604 {he} {that} {the} J4866 U6bd4 N2470 {compare} {race} {ratio} {Phillipines} J4869 U76ae N3109 {pelt} {skin} {hide} {leather} J4873 U975e N5080 {un-} {mistake} {negative} {injustice} {non-} J4874 U98db N5152 {fly} {skip (pages} {scatter} J4878 U5c3e N1383 {tail} {end} {no. of fish} {lower slope of mtn} J4879 U5fae N1631 {delicate} {minuteness} {insignificance} J487e U7f8e N3658 {beauty} {beautiful} J4921 U9f3b N5421 {nose} {snout} J492e U7b46 N3397 {writing brush} {writing} {painting brush} {handwriting} J4934 U767e N0033 {hundred} J4938 U6a19 N2359 {signpost} {seal} {mark} {stamp} {imprint} {symbol} {emblem} {trademark} {evidence} {souvenir} {target} J4939 U6c37 N0131 {icicle} {ice} {hail} {freeze} {congeal} J493d U8868 N0108 {surface} {table} {chart} {diagram} J4942 U75c5 N3042 {ill} {sick} J4943 U79d2 N3271 {second (1/60 minute)} J494a U54c1 N0923 {goods} {refinement} {dignity} {article} J4954 U4e0d N0017 {negative} {non-} {bad} {ugly} {clumsy} J495b U5e03 N1468 {linen} {cloth} J4963 U7236 N2832 {father} J4969 U8ca0 N4488 {defeat} {negative} {-} {minus} {bear} {owe} {assume a responsibility} J4977 U98a8 N5148 {wind} {air} {style} {manner} J497d U5e45 N1484 {hanging scroll} {width} J4a23 U8907 N4255 {duplicate} {double} {compound} {multiple} J4a26 U5f17 N0173 {dollar} J4a2a U7269 N2857 {thing} {object} {matter} J4a2c U5206 N0578 {part} {minute of time} {segment} {share} {degree} {one's lot} {duty} {understand} {know} {rate} {1%} {chances} {shaku/10} J4a38 U6587 N2064 {sentence} {literature} {style} {art} {decoration} {figures} {plan} J4a39 U805e N4959 {hear} {ask} {listen} J4a3f U5e73 N0026 {even} {flat} {peace} J4a42 U4e26 N0589 {row} {and} {besides} {as well as} {line up} {rank with} {rival} {equal} J4a44 U9589 N4945 {closed} {shut} J4a46 U7c73 N3461 {rice} {USA} J4a50 U504f N0511 {partial} {side} {left-side radical} {inclining} {biased} J4a51 U5909 N0306 {unusual} {change} {strange} J4a52 U7247 N2842 {one-sided} {leaf} {sheet} J4a55 U8fba N4661 {environs} {boundary} {border} {vicinity} {(kokuji)} J4a6c U6bcd N2466 {mama} {mother} J4a7c U653e N2084 {set free} {release} {fire} {shoot} {emit} {banish} {liberate} J4a7d U65b9 N2082 {direction} {person} {alternative} J4b21 U6cd5 N2535 {method} {law} {rule} {principle} {model} {system} J4b26 U80de N3749 {placenta} {sac} {sheath} J4b4c U5317 N0751 {north} J4b4f U58a8 N5404 {black ink} {India ink} {ink stick} {Mexico} J4b5c U672c N0096 {book} {present} {main} {true} {real} {no. of long things} J4b63 U9ebb N5390 {hemp} {flax} J4b68 U6bce N2467 {every} J4b74 U53c8 N0855 {or again} {furthermore} {on the other hand} J4b7c U4e07 N0007 {ten thousand} J4c23 U5473 N0913 {flavor} {taste} J4c24 U672a N0179 {un-} {not yet} {hitherto} {still} {even now} J4c29 U5bc6 N1316 {secrecy} {density (pop)} {minuteness} {carefulness} J4c35 U7121 N2773 {nothingness} {none} {ain't} {nothing} {nil} {not} J4c37 U77db N3164 {halberd} {arms} {festival float} J4c3e U540d N1170 {name} {noted} {distinguished} {reputation} J4c40 U660e N2110 {bright} {light} J4c4c U9762 N5087 {mask} {face} {features} {surface} J4c53 U6bdb N2473 {fur} {hair} {feather} {down} J4c5a U6728 N2170 {tree} {wood} J4c5c U76ee N3127 {eye} {class} {look} {insight} {experience} {care} {favor} J4c64 U554f N4944 {question} {ask} {problem} J4c67 U9580 N4940 {gates} J4c6b U591c N0298 {night} {evening} J4c70 U77e2 N3168 {dart} {arrow} J4c72 U5f79 N1598 {duty} {war} {campaign} {drafted labor} {office} {service} {role} J4c74 U85ac N4074 {medicine} {chemical} {enamel} {gunpowder} {benefit} J4c78 U67f3 N2233 {willow} J4c7d U6cb9 N2534 {oil} {fat} J4d2d U6709 N3727 {possess} {have} {exist} {happen} {occur} {approx} J4d30 U6d8c N2565 {boil} {ferment} {seethe} {uproar} {breed} J4d3a U96c4 N5030 {masculine} {male} {hero} {leader} {superiority} {excellence} J4d3c U5915 N1167 {evening} J4d3e U4f59 N0408 {too much} {myself} {surplus} {other} {remainder} J4d4f U6eb6 N2659 {melt} {dissolve} {thaw} J4d51 U7528 N2993 {utilize} {business} {service} {use} {employ} J4d53 U7f8a N3656 {sheep} J4d55 U8449 N4001 {leaf} {plane} {lobe} {needle} {blade} {spear} {no. of flat things} J4d57 U8981 N4274 {need} {main point} {essence} {pivot} {key to} J4d5b U967d N5012 {sunshine} {yang principle} {positive} {male} {heaven} {daytime} J4d63 U7ffc N3680 {wing} {plane} {flank} J4d68 U6765 N0202 {come} {due} {next} {cause} {become} J4d6b U96f7 N5049 {thunder} {lightening bolt} J4d70 U4e71 N3856 {riot} {war} {disorder} {disturb} J4d71 U5375 N0199 {egg} {ovum} {spawn} {roe} J4d72 U5d50 N1431 {storm} {tempest} J4d78 U5229 N3264 {profit} {advantage} {benefit} J4d7d U7406 N2942 {logic} {arrangement} {reason} {justice} {truth} J4e24 U91cc N4813 {ri} {village} {parent's home} {league} J4e25 U96e2 N5040 {detach} {separation} {disjoin} {digress} J4e26 U9678 N5005 {land} J4e28 U7387 N0319 {ratio} {rate} {proportion} {%} {coefficient} {factor} J4e29 U7acb N3343 {stand up} J4e2e U6d41 N2576 {current} {a sink} {flow} {forfeit} J4e32 U786b N3191 {sulphur} J4e33 U7c92 N3471 {grains} {drop} {counter for tiny particles} J4e35 U7adc N5440 {dragon} {imperial} J4e3e U4e21 N0034 {both} {old Japanese coin} {no. of vehicles} {two} J4e41 U6599 N3468 {fee} {materials} J4e49 U826f N3885 {good} {pleasing} {skilled} J4e4c U91cf N2141 {quantity} {measure} {weight} {amount} J4e4f U529b N0715 {power} {strong} {strain} {bear up} {exert} J4e53 U6797 N2210 {grove} {forest} J4e55 U71d0 N2807 {phosphorus} J4e58 U8f2a N4630 {wheel} {ring} {circle} {link} {loop} J4e60 U985e N5138 {sort} {kind} {variety} {class} {genus} J4e63 U4f8b N0428 {example} {custom} {usage} {precedent} J4e64 U51b7 N0642 {cool} {cold (beer, person)} {chill} J4e6d U96f6 N5048 {zero} {spill} {overflow} {nothing} {cipher} J4e6e U970a N5056 {spirits} {soul} J4e73 U5217 N2438 {file} {row} {rank} {tier} {column} J4f22 U9023 N4702 {take along} {lead} {join} {connect} {party} {gang} {clique} J4f27 U7089 N2750 {hearth} {furnace} {kiln} {reactor} J4f29 U8def N4561 {path} {route} {road} {distance} J4f37 U8001 N3683 {old man} {old age} {grow old} J4f3b U516d N0283 {six} J4f40 U8ad6 N4391 {argument} {discourse} J4f42 U548c N3268 {harmony} {Japanese style} {peace} {soften} {Japan} J4f43 U8a71 N4358 {tale} {talk} J4f44 U6b6a N0054 {warp} {bend} {strained} {distort} J4f47 U60d1 N1710 {beguile} {delusion} {perplexity} Level 2 Kanji (total number: 7) ------------------------------- JIS Unicode Nelson Meaning(s) --- ------ ------ ---------- J534c U55c5 N0973 {smell} {sniff} {scent} J5879 U6208 N1794 {halberd} {arms} {festival car} {float} J5960 U6369 N1942 {screw} {twist} {wrench} {distort} J626f U787c N3200 {sound of stones struck together} {boron} J6446 U7c60 N3458 {basket} {devote onself} {seclude oneself} {cage} {coop} {implied} J6647 U7fe1 N5083 {kingfisher} J6d55 U8f3b N4633 {spoke (wheel)} 0707010003765c000081a40000000000000000000000014cc7b61800001027000000b500010002ffffffffffffffff0000002900000000root/usr/local/share/libplot/hershey.bib@TechReport{Dick83, author = {C. E. Dick and Joseph Hilsenrath}, title = {Utility Programs for Generating the {Hershey} Character Fonts on Microcomputers and Laboratory Plotters}, institution = {U.S. National Bureau of Standards}, year = {1983}, type = {Technical Note}, number = {TN--1176}, OPTnote = {US NTIS stock number PB83220467} } @MastersThesis{Doyle77, author = {Patrick M. Doyle}, title = {An Adaptation of the {Hershey} Digitized Character Set for Use in Computer Graphics and Typesetting}, school = {U.S. Naval Postgraduate School}, year = {1977}, address = {Monterey, CA}, month = {Jun}, OPTnote = {Advisor, G. L. Barksdale, Jr.} OPTnote = {US NTIS stock number ADA042291} } @TechReport{Hershey67, author = {Allen V. Hershey}, title = {Calligraphy for Computers}, institution = {U.S. Naval Weapons Laboratory}, address = {Dahlgren, VA}, month = {Aug}, year = {1967}, type = {Report}, number = {TR--2101}, OPTnote = {US NTIS stock number AD662398}, } @TechReport{Hershey71, author = "Allen V. Hershey", title = "Auxiliary Programming for the {Fortran} Typographic System", number = "TR--2645", institution = "U.S. Naval Weapons Laboratory", address = {Dahlgren, VA}, month = "Oct", year = "1971", OPTnote = "US NTIS stock number AD733989", } @Article{Hershey72, author = {Allen V. Hershey}, title = {A Computer System for Scientific Typography}, journal = {Computer Graphics and Image Processing}, year = {1972}, volume = {1}, number = {4}, pages = {373--385}, } @TechReport{Hershey79, author = {Allen V. Hershey}, title = {Terrestrial and Celestial Cartography}, month = {May}, year = {1979}, institution = {U.S. Naval Surface Weapons Center}, address = {Dahlgren, VA}, number = {NSWC-DL-TR--3789}, OPTnote = {US NTIS stock number ADA082663} } @TechReport{Hershey95, author = {Allen V. Hershey}, title = {Cartography and Typography with {True} {Basic}}, institution = {U.S. Naval Postgraduate School}, year = {1995}, number = {NPS-09-95-003}, address = {Monterey, CA}, month = {Sep}, OPTnote = {US NTIS stock number ADA299505} } @TechReport{Hershey:advanced-typography, author = "Allen V. Hershey", title = "Advanced Computer Typography", number = "NPS012-81-005", institution = "U.S. Naval Postgraduate School", address = "Monterey, CA", month = "Dec", year = "1981", OPTnote = "US NTIS stock number ADA112985", } @TechReport{Hershey:fortran-cartography, author = "Allen V. Hershey", title = "{FORTRAN} {IV} Programming for Cartography and Typography", number = "TR--2339", institution = "U.S. Naval Weapons Laboratory", address = {Dahlgren, VA}, month = "Sep", year = "1969", OPTnote = "US NTIS stock number AD703220", } @TechReport{Hershey:fortran-typography, author = "Allen V. Hershey", title = "Preparation of Reports with the {Fortran} Typographic System", type = {Technical Note}, number = "TN--K/27-70", institution = "U.S. Naval Weapons Laboratory", address = {Dahlgren, VA}, month = "Sep", year = "1970", } @TechReport{Wolcott76, author = {Norman M. Wolcott and Joseph Hilsenrath}, title = {A Contribution to Computer Typesetting Techniques: Tables of Coordinates for {Hershey's} Repertory of Occidental Type Fonts and Graphic Symbols}, institution = {U.S. National Bureau of Standards}, month = {Apr}, year = {1976}, type = {Special Publication}, number = {424}, OPTnote = {US NTIS stock number PB251845}, } @TechReport{Wolcott78, author = {Norman M. Wolcott}, title = {Fortran {IV} Enhanced Character Graphics}, institution = {U.S. National Bureau of Standards}, month = {Apr}, year = {1976}, type = {Special Publication}, number = {500--32}, OPTnote = {US NTIS stock number PB279939}, } 0707010003765b000081a40000000000000000000000014cc7b618000024da000000b500010002ffffffffffffffff0000002a00000000root/usr/local/share/libplot/h-glyphs.txtThe GNU libplot library and the plotting utilities based on it, such as GNU `graph', can display text strings in any of 21 `Hershey fonts', such as HersheySerif and HersheySerif-Bold. Hershey fonts are built from `Hershey glyphs'. There are two sorts of glyph: standard (`occidental') and Japanese (`oriental'). The glyphs were digitized by Dr. Allen V. Hershey at what is now the U.S. Naval Surface Weapons Center in Dahlgren, VA (formerly the U.S. Naval Weapons Laboratory), mostly during the late 1960's. There are many glyphs that are not part of any Hershey font. Such glyphs must be referred to by number. For example, the string "\#H0744\#H0745" uses escape sequences to refer to Hershey glyphs #744 and #745, which are a shamrock and a fleur-de-lys respectively. All occidental Hershey glyphs have numbers in the 0..3999 range, but there are many gaps. In this file we explain how the array of occidental glyphs now in GNU libplot was constructed, and give more information on the numbering scheme. The array was assembled in large part from earlier (pre-GNU) public distributions of the occidental glyphs. These included the following. #0. Distributions by Dr. Hershey himself, in the late 1960's and 1970's. These were distributions of his typographic software, of which the glyph distribution was a part. Initial distributions were on punched cards and later ones were on magnetic tape. At least 120 copies of the typographic software were distributed. It is not known how many distinct releases there were, either of the software or of the glyphs. #1. The U.S. NBS [U.S. National Bureau of Standards, since renamed the National Institute of Standards and Technology] publication "A Contribution to Computer Typesetting Techniques", dated 1976, and the accompanying magnetic tape. This presumably included all glyphs in use at that time. In Figure 15 of that publication, 43 additional glyphs (digitized by Norman Wolcott at NBS) were shown, but the data for them were not given. (Glyphs 2250, 2260 were probably included in Figure 15 erroneously; they were also listed among the standard glyphs). #2. The Usenet distribution of Pete Holzmann and Jim Hurt (to the newsgroup mod.sources, now defunct). Circa 1985, but based on the above 1976 tape. It introduced the scheme for encoding vector glyphs as strings which is now used in libplot. Almost identical to the above (none of the 43 new Wolcott glyphs), but included three additional glyphs: 997, 998, 999. These were merely horizontal strokes. #3. The glyph database incorporated in the PGPLOT subroutine library of Tim Pearson , still available from ftp://ftp.astro.caltech.edu and from the astro.caltech.edu web server. This was probably based, c. 1980, on a distribution obtained either from Nelson Beebe (see #4 below) or directly from Dr. Hershey. It included data for the 43 new Wolcott glyphs, and 10 additional glyphs numbered 236 (an cartographic-sized `@'), 590 (an underscore), 2078 (Aring), 3330, 3331, 3332, 3430, 3431, 3432 (umlaut-accented German letters), and 4000 (a boxed inverted questionmark). The last of these (#4000) apparently did not originate with Dr. Hershey, but the others may have. The horizontal stroke glyphs 997, 998, 999 from distribution #2 were not present. Ten glyphs were revised: 1225, 1226, 1407, 1408, 2225, 2226, 2407, 2408, 3010, and 3159. The first eight of these were braces. There were 1642 separately indexed glyphs in all. #4. The glyph database incorporated in the PLOT79 utility of Nelson Beebe . Also dates back to c. 1980; based on a tape from Dr. Hershey himself, with local additions. All the 1642 glyphs from #3 are present, except that 590 (an underscore) and 2078 (Aring) are missing. (The Hershey tape may have been a slightly earlier one than the tape used for #3?) Also, 911..922 (twelve outline and filled arrows) and 923..926 (four large pointing hands) were added by Dr. Beebe. As well, 256 small fixed-width glyphs (marker symbols taken from a plotter in the 1970's, and low-resolution alphabets based on the plotter alphabet) in the 1500..1627 and 1700..1827 ranges were added. There were 1912 separately indexed glyphs in all. #5. The glyph database accompanying Dr. Hershey's distribution in the 1980's of typographic software in True Basic, for PC's. For details, see his 1981 technical report `Advanced Computer Typography' and his 1995 technical report `Cartography and Typography with True Basic'. The 43 Wolcott glyphs (see above) were not present, and the 10 extra glyphs from the PGPLOT distribution were not present either. However, an entire new alphabet (Triplex Greek) was included. The small upper-case alphabet (`Cartographic Roman') was extended to include lower-case characters, and a small `Cartographic Italic' alphabet was added as well. Many alphabets were extended by crafting such characters as @, <, >, #, and % for them. Also, several glyphs were revised. 13 cartographic symbols in the 700..899 range were dropped, probably inadvertently. The glyph array built into GNU libplot, and accessible to the GNU plotting utilities, is a merged version. It includes all glyphs from distribution #5, the 43 Wolcott glyphs, and 7 of the 10 additional glyphs from distribution #3, i.e., 2078 (Aring), and 3330, 3331, 3332, 3430, 3431, 3432 (umlaut-accented German letters). The 13 cartographic symbols in the 700..899 range that were inadvertently dropped from distribution #5 have been restored. Many non-Hershey glyphs were also included in the GNU libplot array of occidental glyphs, to facilitate the construction of ISO-Latin-1 Hershey fonts. The 4000..4194 range contains a large number of such non-Hershey glyphs. Nelson Beebe's large pointing hands (923..926 in distribution #4) were included as 4040..4043. An important source of non-Hershey glyphs was Robert Beach's UGS [Unified Graphics System], which was developed at the SLAC [Stanford Linear Accelerator Center] Computation Research Group in the 1970's. (See Computer Graphics, Fall 1974, pp. 22-23. The UGS source code may still be available at ftp://ftp.slac.stanford.edu/software/ugs77/ .) A number of glyphs in the 4000..4025 range were taken from the UGS glyph repertory. The following is a breakdown of the original Hershey glyphs (defined to include the 43 Wolcott glyphs and the 10 additional glyphs mentioned above). They occupy the 1..3926 range of the occidental array, and may be accessed individually by escape sequences in the range "\#H0001".."\#H3926". They fall into the following groups: 0001..0284 alphanumeric symbols, cartographic [small] size 0501..0746 alphanumeric symbols, principal [large] size 0750..0909 centered symbols 0910 alphanumeric symbols, principal [large] size 1001..1295 alphanumeric symbols, indexical [medium] size 1401..2312 alphanumeric symbols, principal [large] size 2317..2382 centered symbols 2401..3926 alphanumeric symbols, principal [large] size `Alphanumeric symbols' means not just alphabetic symbols and numerals, but also punctuation marks, mathematical symbols, etc.; in general, any symbol that can be viewed as having a well-defined `baseline', and which could appear in a string of characters resting on that baseline. `Centered symbols' are different. In practice they would seldom be displayed in such a way that they are resting on a baseline. Instead, they would be drawn so as to be centered on a specified point. Also, they would seldom appear in a string. An example would be the `sand' symbol, Hershey glyph #0764, which is clearly designed to be drawn on a map rather than to appear in text. In the original distributions of the Hershey glyphs, no distinction was made between alphanumeric symbols and centered symbols. That was possible because in the coordinate system used by Dr. Hershey, all are centered on the point (0,0). The `baseline' concept was not used. Each alphanumeric symbols had a well-defined baseline, but the baselines differed for the three sizes. When strings are drawn with the alabel() function of GNU libplot, e.g., when GNU `graph' labels axes, a baseline must be chosen. For alphanumeric symbols of all kinds and also centered symbols, we have chosen it to be the baseline appropriate for the principal [large] size alphanumeric symbols. This determines a choice of vertical elevation of each symbol, when it is rendered as an element of a string. If the `x' option to alabel() is used, to place characters on a baseline, the vertical elevation may not be appropriate for indexical [medium] and cartographic [small] alphanumeric symbols. But nowadays the indexical and cartographic glyphs are seldom accessed. The only reason for drawing smaller characters is to draw superscripts and subscripts, and our rendering algorithm uses miniaturized principal-size characters for that. If you are using the alabel() function to display strings, you may specify `c' as the third argument to obtain vertical centering, instead of the usual `x', which places characters on a baseline. You would use `c' to place a centered symbol at a specified point. For example, the function call alabel ('c', 'c', "\#H0764"); would place the `sand' symbol, glyph #764, at the current position. The first argument `c' requests horizontal centering, so the symbol will be centered both horizontally and vertically. 07070100037658000081a40000000000000000000000014cc7b61800001360000000b500010002ffffffffffffffff0000002400000000root/usr/local/share/libplot/READMEThis directory contains supplementary documentation on GNU libplot, the drawing library on which several of the executables in the GNU plotting utilities ("plotutils") package, such as graph, plot, tek2plot, plotfont, and hersheydemo, are based. ./colors.txt: A listing of the color names recognized by libplot, and hence by each of the above plotting utilities. A 24-bit RGB representation for each color is given. For example, you may pop up a simple graph, drawn in a chocolate color, by typing the command echo 0 0 1 1 2 0 | graph -T X --frame-color chocolate This is because "chocolate" is one of the listed color names. In the 24-bit RGB scheme, "chocolate" means (210,105,30). The strength of each of R (red), G (green), and B (blue) is represented as an 8-bit quantity, i.e., an integer in the range 0..255. ./h-fonts.txt: A listing of the 22 Hershey fonts supported by GNU libplot and executables based on it. Hershey fonts are vector ("stroked") fonts, in which each character is made up of thickened line segments. They can look good on high-resolution output devices (on which they have a hand-lettered appearance) and on medium-resolution output devices (where they may be competitive with other types of font). This is especially the case if anti-aliasing is used. To see a demo page illustrating the Hershey fonts, do hersheydemo -Tps > page.ps to produce the page in PS (Postscript format), or hersheydemo -Tsvg --pen-color blue > page.svg in SVG (scaled vector graphics) format. You can send the former to a printer, and display the latter from the command line by invoking on it, e.g., a Web browser such as firefox, or the `svgdisplay' or `display' executables. (They come respectively from KDE and the ImageMagick package.) The result should look good. If you do hersheydemo -TX --rotation 45 --bitmap-size 800x800 --bg-color brown to see the demo page (rotated) in a popped-up 800pixel-by-800pixel X window, the result may look less good, as your X display may not use anti-aliasing. That means that every pixel in the window will be either black or white, with no gradations that make characters more legible. The 22 Hershey fonts built into GNU libplot were assembled from glyphs in the large family of vector glyphs designed by Dr. Allen V. Hershey in the early days of computer graphics, beginning in the 1960s. His glyphs predate modern outline fonts, but are not just of historical interest. The demo page is taken from his 1972 article in Computer Graphics and Image Processing (vol. 1, no. 4, pp. 373-385). Plotting utilities such as `graph' can use Hershey fonts, as well as, e.g., such Postscript fonts as Times-Roman. By doing echo 0 0 1 1 2 0 | graph -T ps -F Times-Roman -L 'A Graph' > graph.ps echo 0 0 1 1 2 0 | graph -T ps -F HersheySerif -L 'A Graph' > graph.ps echo 0 0 1 1 2 0 | graph -T ps -F HersheyGothic-English -L 'A Graph' > graph.ps etc., you can generate graphs with labels and titles in various fonts. Use the --help-fonts option to get a list of fonts, which is output-format-specific (though Hershey fonts are supported in all output formats). The Hershey glyph repertory, built into GNU libplot, includes various symbols in addition to occidental and Japanese characters. Some symbol glyphs do not belong to any font. If the current font is a Hershey font, you may access any glyph by its number, even if it is not a character in the font, in the conventional sense. For instance, echo 0 0 1 1 2 0 | graph -T ps --font-name HersheyGothic-English -L '\#H0745\#H0745' > graph.ps would label the graph being drawn with a title line consisting of two fleurs-de-lys. That is because the fleur-de-lys is Hershey glyph #745. The following files are relevant to the Hershey glyph repertory built into GNU libplot. The ./h-glyphs.txt: A high-level survey of the `occidental' Hershey glyphs, in great detail. Includes an extensive comparison with earlier (pre-GNU) distributions of the Hershey glyphs, and an explanation of how the glyph array was assembled. ./hershey.bib: A bibliography, in BibTeX format, of publications dealing with the Hershey glyphs and with Allen Hershey's system for scientific typography, which was designed to use them. Most of the cited items are technical reports that are available from the U.S. National Technical Information Service (+1 703 487 4650). Stock numbers are given. ./kana.txt: The encodings used for the Hershey Hiragana and Katakana (syllabic Japanese characters). These are part of the HersheyEUC font, but may also be accessed by number. ./kanji.txt: The encoding of the 603 available Japanese Kanji (ideographic characters), and their meaning. These are part of the HersheyEUC font, but may also be accessed by number. 0707010003765a000081a40000000000000000000000014cc7b61800000d50000000b500010002ffffffffffffffff0000002900000000root/usr/local/share/libplot/h-fonts.txtThe 22 Hershey fonts supported by GNU libplot and executables based on it utilities are enhanced versions of the Hershey fonts that have been incorporated in many software packages over the years. They have been extended, by the addition of accented and other special characters, to provide virtually full support for the ISO-Latin-1 character set. They have been given new, modern-style names. The following table lists the modern names and the traditional names. Modern Name Traditional Name ----------- ---------------- HersheySerif Complex Roman HersheySerif-Italic Complex Italic HersheySerif-Bold Triplex Roman HersheySerif-BoldItalic Triplex Italic HersheySans Simplex Roman HersheySans-Oblique Simplex Roman [obliqued] HersheySans-Bold Duplex Roman HersheySans-BoldOblique Duplex Roman [obliqued] HersheyScript Simplex Script HersheyScript-Bold Complex Script HersheyGothicEnglish Gothic English HersheyGothicGerman Gothic German HersheyGothicItalian Gothic Italian HersheySerifSymbol Complex Greek HersheySerifSymbol-Oblique Complex Greek [obliqued] HersheySerifSymbol-Bold Triplex Greek HersheySerifSymbol-BoldOblique Triplex Greek [obliqued] HersheySansSymbol Simplex Greek HersheySansSymbol Simplex Greek [obliqued] HersheyCyrillic Complex Cyrillic, Roman HersheyCyrillic-Oblique Complex Cyrillic, Roman [obliqued] HersheyEUC [based on Japanese repertory] The `obliqued' versions have been obtained by performing an anamorphic transformation on the underlying font, to slant each character. The following are excerpts from Allen Hershey's 1967 technical report, `Calligraphy for Computers'. They explain the origin of many of the fonts. The names of the fonts have been modernized. "[The HersheySans fonts] are adaptations of the alphabets on Le Roy lettering sets. [The HersheySerif fonts, the Greek characters in the Hershey symbol fonts, and the Cyrillic characters in HersheyCyrillic] are adaptations of the alphabets to be observed in newspapers, text books, and dictionaries. (1,2)" "[The HersheyScript fonts] been adapted from a Headliner Typemaster of the Varityper Corporation. [HersheyGothicEnglish] has been adapted from a Le Roy lettering set for Old English... [HersheyGothicItalian] represents a large family of alphabets for which there does not seem to be a consistent nomenclature. Some writers refer to it as Gothic uncial while others call it Lombardic Gothic. It seems to have been developed in Lombardy while the best examples (3,4) come from Spain. The present version is an adaptation of a font [the `Missal Initials' font] of the American Type Founders Company (5)... [HersheyGothicGerman] is an adaptation of Fraktur (6)." Notes: (1) Webster's [New] International Dictionary [of the English Language]. Second Edition. (G. and C. Merriam Company, Springfield, Mass., 1959) p. 75, p. 2750, p. 3001. (2) Specimens of Type Faces. (U. S. Government Printing Office, Washington, D. C.) (3) Alphabets, Ancient and Modern. J. B. Russell (Padell Book Co., New York, 1945) (4) Lettering from A to Z. C. P. Hornung (Wm. Penn Publishing Corporation, New York, 1954) (5) Specimen Book and Catalog. (American Type Founders Company, Jersey City, N. J. 1923) p. 785 (6) Treasury of Alphabets and Lettering. J. Tschichold (Reinhold Publishing Corporation, New York, 1966) 0707010003765f000041ed0000000000000000000000034cc7b6fb00000000000000b500010002ffffffffffffffff0000001900000000root/usr/local/share/man07070100037660000041ed0000000000000000000000024cc7b6fb00000000000000b500010002ffffffffffffffff0000001e00000000root/usr/local/share/man/man107070100037663000081a40000000000000000000000014cc7b618000049fc000000b500010002ffffffffffffffff0000002900000000root/usr/local/share/man/man1/plotfont.1.TH PLOTFONT 1 "Jun 2000" "FSF" "GNU Plotting Utilities" .SH NAME plotfont \- produce character maps of fonts supported by the plotting utilities .\" Not all man macros define SB .de SB \&\fB\s-1\&\\$1 \\$2\s0\fR .. .SH SYNOPSIS .B plotfont [ .I options ] .I fonts .SH DESCRIPTION .LP .B plotfont produces a character map for any font that is supported by the plotting utilities, which include .BR graph (1), .BR plot (1), .BR pic2plot (1), .BR tek2plot (1), and the GNU libplot 2-D graphics export library (see .BR plot (3)). Which fonts are supported depends on the output format, which is specified by the .BR \-T " option." A listing of the fonts available in any specified output format may be obtained with the .B \-\-help\-fonts option (see below). .LP The character map, or maps, will be written to standard output in the specified format. For example, the Times-Roman font is available when producing Postscript output. The command .B plotfont \-T ps Times\-Roman > charmap.ps will yield a character map of the Times-Roman font, in a Postscript format that can be viewed or edited with the .BR idraw (1) drawing editor. The Times-Roman font is also available when producing Fig output, which can be viewed or edited with the .BR xfig (1) drawing editor. The command .B plotfont \-T fig Times\-Roman > charmap.fig will yield the same character map, but in Fig format rather than in Postscript format. .LP As another example, the Univers font is available when producing PCL 5 output. The command .B plotfont \-T pcl Univers > charmap.pcl will produce a character map of the Univers font, in PCL 5 format. .LP When producing output for the X Window System, i.e., for a popped-up window, any scalable X Window System font that has an XLFD (i.e., X Logical Font Description) name is supported. For example, the command .B plotfont \-T X utopia\-medium\-r\-normal will pop up a window, and draw a character map of the Utopia-Regular font. "utopia-medium-r-normal" is a truncated version of the Utopia-Regular font's XLFD name. The Utopia-Regular font is available on most X Window System displays. .SH OPTIONS .SS General Options .TP .BI \-T " type" .br .ns .TP .BI \-\-output\-format " type" Select .I type as the output format. It may be "X", "png", "pnm", "gif", "svg", "ai", "ps", "cgm", "fig", "pcl", "hpgl", "regis", "tek", or "meta" (the default). These refer respectively to the X Window System, PNG (Portable Network Graphics) format, portable anymap format (PBM/PGM/PPM), a pseudo-GIF format that does not use LZW encoding, the new XML-based Scalable Vector Graphics format, the format used by Adobe Illustrator, Postscript or Encapsulated Postscript (EPS) that can be edited with .BR idraw (1), CGM format (by default, confirming to the WebCGM profile), the format used by the .BR xfig (1) drawing editor, the Hewlett\-Packard PCL 5 printer language, the Hewlett\-Packard Graphics Language, ReGIS graphics format (which can be displayed by the .BR dxterm (1) terminal emulator or by a VT330 or VT340 terminal), Tektronix format (which can be displayed by the .BR xterm (1) terminal emulator), and device-independent GNU metafile format itself. Unless \fItype\fP\^ is "X", an output file is produced and written to standard output. .IP "" Files in PNG, PNM, pseudo-GIF, AI, or Fig format contain only a single page of graphics. So if the .B \-T png option, the .B \-T pnm option, the .B \-T gif option, the .B \-T ai option, or the .B \-T fig option is used, the output file will contain a character map for only the first-specified font. .IP "" A listing of the fonts available in any specified output format may be obtained with the .B \-\-help\-fonts option (see below). If a requested font is unavailable, a default font will be substituted. The default font is "Helvetica" for "X", "svg", "ai", "ps", "cgm", and "fig", "Univers" for "pcl", and "HersheySerif" for "png", "pnm", "gif", "hpgl", "regis", "tek", and "meta". .TP .B \-1 .br .ns .TP .B \-\-lower\-half Generate a character map for the lower half of each specified font. This is the default. .TP .B \-2 .br .ns .TP .B \-\-upper\-half Generate a character map for the upper half of each specified font. .TP .B \-o .br .ns .TP .B \-\-octal Number the characters in octal rather than in decimal (the default). .TP .B \-x .br .ns .TP .B \-\-hexadecimal Number the characters in hexadecimal rather than in decimal (the default). .TP .B \-\-box Surround each character with a box, showing its extent to left and right. The default is not to do this. .TP .BI \-j " row" .br .ns .TP .BI \-\-jis\-row " row" Generate a character map for row .I row of a Japanese font arranged according to JIS [Japanese Industrial Standard] X0208. The only such font currently available is the HersheyEUC [Extended Unix Code] font. If used, this option overrides the .B \-1 and .B \-2 options. The valid rows are 1.\|.\|.94. In the JIS X0208 standard, Roman characters are located in row 3, and Japanese syllabic characters (Hiragana and Katakana) are located in rows 4 and 5. Greek and Cyrillic characters are located in rows 6 and 7. Japanese ideographic characters (Kanji) are located in rows 16.\|.\|.84. .TP .BI \-\-bg\-color " name" Set the color used for the background to be .IR name . This is relevant only to .BR "plotfont \-T X" , .BR "plotfont \-T png" , .BR "plotfont \-T pnm" , .BR "plotfont \-T gif" , .BR "plotfont \-T svg" , .BR "plotfont \-T cgm" , and .BR "plotfont \-T regis" . An unrecognized name sets the color to the default, which is "white". The environment variable .SB BG_COLOR can equally well be used to specify the background color. .IP "" If the .B \-T png or .B \-T gif option is used, a transparent PNG file or a transparent pseudo-GIF, respectively, may be produced by setting the .SB TRANSPARENT_COLOR environment variable to the name of the background color. If the .B \-T svg or .B \-T cgm option is used, an output file without a background may be produced by setting the background color to "none". .TP .BI \-\-bitmap\-size " bitmap_size" Set the size of the graphics display in which the character map(s) will be drawn, in terms of pixels, to be .IR bitmap_size . The default is "570x570". This is relevant only to .BR "plotfont \-T X" , .BR "plotfont \-T png" , .BR "plotfont \-T pnm" , and .BR "plotfont \-T gif" , all of which produce bitmaps. If you choose a rectangular (non-square) window size, the fonts in the character map(s) will be scaled anisotropically, i.e., by different factors in the horizontal and vertical directions. For .BR "plotfont \-T X" , this requires an X11R6 display. Any font that cannot be scaled in this way will be replaced by a default scalable font, such as the vector font "HersheySerif". .IP "" The environment variable .SB BITMAPSIZE can equally well be used to specify the window size. For backward compatibility, the X resource .B Xplot.geometry may be used instead. .TP .BI \-\-emulate\-color " option" If .I option is .IR yes , replace each color in the output by an appropriate shade of gray. This is seldom useful, except when using .B plotfont \-T pcl to prepare output for a PCL 5 device. (Many monochrome PCL 5 devices, such as monochrome LaserJets, do a poor job of emulating color on their own.) You may equally well request color emulation by setting the environment variable .SB EMULATE_COLOR to "yes". .TP .BI \-\-numbering\-font " name" Set the font used for the numbering of the characters in the character map(s) to be .IR name , rather than the default. .TP .BI \-\-page\-size " pagesize" Set the size of size of the page on which the character map(s) will be positioned. This is relevant only to .BR "plotfont \-T svg" , .BR "plotfont \-T ai" , .BR "plotfont \-T ps" , .BR "plotfont \-T cgm" , .BR "plotfont \-T fig" , .BR "plotfont \-T pcl" , and .BR "plotfont \-T hpgl" . The default is "letter", which means an 8.5 inch by 11 inch page. Any ISO page size in the range "a0".\|.\|."a4" or ANSI page size in the range "a".\|.\|."e" may be specified ("letter" is an alias for "a" and "tabloid" is an alias for "b"). "legal" and "ledger" are recognized page sizes also. The environment variable .SB PAGESIZE can equally well be used to specify the page size. .IP "" The graphics display in which each character map is drawn will be a square region that would occupy nearly the full width of the specified page. An alternative size for the graphics display can be specified. For example, the page size could be specified as "letter,xsize=4in,ysize=6in", or "a4,xsize=5.0cm,ysize=100mm". For all of the above except .BR "plotfont \-T hpgl" , the graphics display will, by default, be centered on the page. For all of the above except .B "plotfont \-T svg" and .BR "plotfont \-T cgm" , the graphics display may be repositioned manually, by specifying the location of its lower left corner, relative to the lower left corner of the page. For example, the page size could be specified as "letter,xorigin=2in,yorigin=3in", or "a4,xorigin=0.5cm,yorigin=0.5cm". It is also possible to specify an offset vector. For example, the page size could be specified as "letter,xoffset=1in", or "letter,xoffset=1in,yoffset=1.2in", or "a4,yoffset=\-1cm". In SVG format and WebCGM format it is possible to specify the size of the graphics display, but not its position. .TP .BI \-\-rotation " angle" Rotate the graphics display by .IR angle " degrees." Recognized values are "0", "90", "180", and "270". "no" and "yes" are equivalent to "0" and "90", respectively. The environment variable .SB ROTATION can also be used to specify a rotation angle. .TP .BI \-\-pen\-color " name" Set the pen color to be .IR name . An unrecognized name sets the pen color to the default, which is "black". .SS Options for Metafile Output .LP The following option is relevant only if the .B \-T option is omitted or if .B "\-T meta" is used. In this case the output of .B plotfont will be in GNU graphics metafile format. It may be translated to other formats by invoking .BR plot (1). .TP .B \-O .br .ns .TP .B \-\-portable\-output Output the portable (human-readable) version of GNU metafile format, rather than the binary version (the default). The format of the binary version is machine-dependent. .SS Informational Options .TP .B \-\-help Print a list of command-line options, and exit. .TP .B \-\-help\-fonts Print a table of available fonts, and exit. The table will depend on which output format is specified with the .B \-T option. .BR "plotfont \-T X" , .BR "plotfont \-T svg" , .BR "plotfont \-T ai" , .BR "plotfont \-T ps" , .BR "plotfont \-T cgm" , and .B plotfont \-T fig each support the 35 standard Postscript fonts. .BR "plotfont \-T svg" , .BR "plotfont \-T pcl" , and .B plotfont \-T hpgl support the 45 standard PCL 5 fonts, and the latter two support a number of Hewlett\-Packard vector fonts. All seven support a set of 22 Hershey vector fonts, as do .BR "plotfont \-T png" , .BR "plotfont \-T pnm" , .BR "plotfont \-T gif" , .BR "plotfont \-T regis" , and .BR "plotfont \-T tek" . .B plotfont without a .B \-T option in principle supports any of these fonts, since its output must be translated to other formats by invoking .BR plot (1). .TP .B \-\-list\-fonts Like .BR \-\-help\-fonts , but lists the fonts in a single column to facilitate piping to other programs. If no output format is specified with the .B \-T option, the full set of supported fonts is listed. .TP .B \-\-version Print the version number of .B plotfont and the plotting utilities package, and exit. .SH "ENVIRONMENT" The environment variables .SB BITMAPSIZE, .SB PAGESIZE, .SB BG_COLOR, .SB EMULATE_COLOR, and .SB ROTATION serve as backups for the options .BR \-\-bitmap\-size , .BR \-\-page\-size , .BR \-\-bg\-color , .BR \-\-emulate\-color , and .BR \-\-rotation , respectively. The remaining environment variables are specific to individual output formats. .LP .BR "plotfont \-T X" , which pops up a window on an X Window System display for each character map, checks the .SB DISPLAY environment variable. Its value determines the display that will be used. .LP .BR "plotfont \-T png" and .BR "plotfont \-T gif" , which produce output in PNG format and pseudo-GIF format respectively, are affected by the .SB INTERLACE environment variable. If its value is "yes", the output will be interlaced. Also, if the .SB TRANSPARENT_COLOR environment variable is set to the name of a color, that color will be treated as transparent in the output. .LP .BR "plotfont \-T pnm" , which produces output in portable anymap (PBM/PGM/PPM) format, is affected by the .SB PNM_PORTABLE environment variable. If its value is "yes", the output will be in a human-readable format rather than binary (the default). .LP .BR "plotfont \-T cgm" , which produces output in CGM (Computer Graphics Metafile) format, is affected by the .SB CGM_MAX_VERSION and .SB CGM_ENCODING environment variables. By default, it produces a binary-encoded version of CGM version 3 format. For backward compatibility, the version number may be reduced by setting .SB CGM_MAX_VERSION to "2" or "1". Irrespective of version, the output CGM file will use the human-readable clear text encoding if .SB CGM_ENCODING is set to "clear_text". However, only binary-encoded CGM files conform to the WebCGM profile. .LP .BR "plotfont \-T pcl" , which produces PCL 5 output for Hewlett\-Packard printers and plotters, is affected by the environment variable .SB PCL_ASSIGN_COLORS. It should be set to "yes" when producing PCL 5 output for a color printer or other color device. This will ensure accurate color reproduction by giving the output device complete freedom in assigning colors, internally, to its "logical pens". If it is "no" then the device will use a fixed set of colored pens, and will emulate other colors by shading. The default is "no" because monochrome PCL 5 devices, which are much more common than colored ones, must use shading to emulate color. .LP .BR "plotfont \-T hpgl" , which produces Hewlett\-Packard Graphics Language output, is affected by several environment variables. The most important is .SB HPGL_VERSION, which may be set to "1", "1.5", or "2" (the default). "1" means that the output should be generic HP-GL, "1.5" means that the output should be suitable for the HP7550A graphics plotter and the HP758x, HP7595A and HP7596A drafting plotters (HP-GL with some HP-GL/2 extensions), and "2" means that the output should be modern HP-GL/2. If the version is "1" or "1.5" then the only available fonts will be vector fonts, and all lines will be drawn with a default width. Additionally, if the version is "1" then the filling of arbitrary curves with solid color will not be supported (circles and rectangles aligned with the coordinate axes may be filled, though). .LP The position of the .B plotfont \-T hpgl graphics display on the page can be rotated 90 degrees counterclockwise by setting the .SB HPGL_ROTATE environment variable to "yes". This is not the same as the rotation obtained with the .B \-\-rotation option, since it both rotates the graphics display and repositions its lower left corner toward another corner of the page. Besides "no" and "yes", recognized values for .SB HPGL_ROTATE are "0", "90", "180", and "270". "no" and "yes" are equivalent to "0" and "90", respectively. "180" and "270" are supported only if .SB HPGL_VERSION is "2" (the default). .LP By default, .B plotfont \-T hpgl will draw with a fixed set of pens. Which pens are present may be specified by setting the .SB HPGL_PENS environment variable. If .SB HPGL_VERSION is "1", the default value of .SB HPGL_PENS is "1=black"; if .SB HPGL_VERSION is "1.5" or "2", the default value of .SB HPGL_PENS is "1=black:2=red:3=green:4=yellow:5=blue:6=magenta:7=cyan". The format should be self-explanatory. By setting .SB HPGL_PENS you may specify a color for any pen in the range #1.\|.\|.#31. All color names recognized by the X Window System may be used. Pen #1 must always be present, though it need not be black. Any other pen in the range #1.\|.\|.#31 may be omitted. .LP If .SB HPGL_VERSION is "2" then .B plotfont \-T hpgl will also be affected by the environment variable .SB HPGL_ASSIGN_COLORS. If its value is "yes", then .B plotfont \-T hpgl will not be restricted to the palette specified in .SB HPGL_PENS: it will assign colors to "logical pens" in the range #1.\|.\|.#31, as needed. The default value is "no" because other than color LaserJet printers and DesignJet plotters, not many HP-GL/2 devices allow the assignment of colors to logical pens. .LP Opaque filling and the drawing of visible white lines are supported only if .SB HPGL_VERSION is "2" and the environment variable .SB HPGL_OPAQUE_MODE is "yes" (the default). If its value is "no" then white lines (if any), which are normally drawn with pen #0, will not be drawn. This feature is to accommodate older HP-GL/2 devices. HP-GL/2 pen plotters, for example, do not support opacity or the use of pen #0 to draw visible white lines. Some older HP-GL/2 devices may, in fact, malfunction if asked to draw opaque objects. .LP .BR "plotfont \-T tek" , which produces output for a Tektronix terminal or emulator, checks the .SB TERM environment variable. If the value of .SB TERM is a string beginning with "xterm", "nxterm", or "kterm", it is taken as a sign that .B plotfont is running in an X Window System VT100 terminal emulator: a copy of .BR xterm (1), .BR nxterm (1), or .BR kterm (1). Before drawing graphics, .B plotfont \-T tek will emit an escape sequence that causes the terminal emulator's auxiliary Tektronix window, which is normally hidden, to pop up. After the graphics are drawn, an escape sequence that returns control to the original VT100 window will be emitted. The Tektronix window will remain on the screen. .LP If the value of .SB TERM is a string beginning with "kermit", "ansi.sys", or "nansi.sys", it is taken as a sign that .B plotfont is running in the VT100 terminal emulator provided by the MS-DOS version of .BR kermit (1). Before drawing graphics, \fBplotfont \-T tek\fP will emit an escape sequence that switches the terminal emulator to Tektronix mode. Also, some of the Tektronix control codes emitted by \fBplotfont \-T tek\fP will be \fBkermit\fP-specific. There will be a limited amount of color support, which is not normally the case (the 16 `ansi.sys' colors will be supported). After drawing graphics, \fBplotfont \-T tek\fP will emit an escape sequence that returns the emulator to VT100 mode. The key sequence `ALT minus' can be employed manually within \fBkermit\fP to switch between the two modes. .SH "SEE ALSO" .BR graph (1), .BR pic2plot (1), .BR tek2plot (1), .BR plot (1), .BR plot (3), and "The GNU Plotting Utilities Manual". .SH AUTHORS .B plotfont was written by Robert S. Maier (\fBrsm@math.arizona.edu\fP). .SH BUGS Email bug reports to .BR bug\-gnu\-utils@gnu.org . 07070100037662000081a40000000000000000000000014cc7b61800005382000000b500010002ffffffffffffffff0000002500000000root/usr/local/share/man/man1/plot.1.TH PLOT 1 "Jun 2000" "FSF" "GNU Plotting Utilities" .SH NAME plot \- translate GNU metafiles to other graphics formats .\" Not all man macros define SB .de SB \&\fB\s-1\&\\$1 \\$2\s0\fR .. .SH SYNOPSIS .B plot [ .I options ] [ .I files ] .SH DESCRIPTION .LP .B plot translates files in GNU metafile format to other graphics formats, or displays them on an X Window System display. GNU metafile format is a device-independent format for the storage of graphic data. It is the default output format of the programs .BR graph (1), .BR pic2plot (1), .BR tek2plot (1), and .BR plotfont (1), and is further documented in .BR plot (5), since it is an enhanced version of the traditional .BR plot (5) format found on non-GNU systems. It can also be produced by the GNU libplot 2-D graphics export library (see .BR plot (3)). .LP The output format is specified with the .BR \-T " option." The possible output formats and display types are the same as those supported by .BR graph (1), .BR plotfont (1), .BR pic2plot (1), and .BR tek2plot (1). If an output file is produced, it is written to standard output. .LP Options and file names may be interspersed on the command line, but the options are processed before the file names are read. If .B \-\- is seen, it is interpreted as the end of the options. If no file names are specified, or the file name .B \- is encountered, the standard input is read. .SH OPTIONS .SS General Options .TP .BI \-T " type" .br .ns .TP .BI \-\-output\-format " type" Select .I type as the output format. It may be "X", "png", "pnm", "gif", "svg", "ai", "ps", "cgm", "fig", "pcl", "hpgl", "regis", "tek", or "meta" (the default). These refer respectively to the X Window System, PNG (Portable Network Graphics) format, portable anymap format (PBM/PGM/PPM), a pseudo-GIF format that does not use LZW encoding, the new XML-based Scalable Vector Graphics format, the format used by Adobe Illustrator, Postscript or Encapsulated Postscript (EPS) that can be edited with .BR idraw (1), CGM format (by default, confirming to the WebCGM profile), the format used by the .BR xfig (1) drawing editor, the Hewlett\-Packard PCL 5 printer language, the Hewlett\-Packard Graphics Language, ReGIS graphics format (which can be displayed by the .BR dxterm (1) terminal emulator or by a VT330 or VT340 terminal), Tektronix format (which can be displayed by the .BR xterm (1) terminal emulator), and device-independent GNU metafile format itself. Unless \fItype\fP\^ is "X", an output file is produced and written to standard output. .IP "" Omitting the .B \-T option is equivalent to specifying .BR "\-T meta" . Translating from metafile format to itself is occasionally useful, since there are two versions of metafile format (see the .B \-O option below). .IP "" A listing of the fonts available in any specified output format may be obtained with the .B \-\-help\-fonts option (see below). If a requested font is unavailable, a default font will be substituted. The default font is "Helvetica" for "X", "svg", "ai", "ps", "cgm", and "fig", "Univers" for "pcl", and "HersheySerif" for "png", "pnm", "gif", "hpgl", "regis", "tek", and "meta". .TP .BI \-p " n" .br .ns .TP .BI \-\-page\-number " n" Output only page number .IR n , within the metafile or sequence of metafiles that is being translated. .IP "" Metafiles may consist of one or more pages, numbered beginning with 1. Also, each page may contain multiple `frames'. .BR "plot \-T X" , .BR "plot \-T regis" , and .BR "plot \-T tek" , which plot in real time, will separate successive frames by screen erasures. .BR "plot \-T png" , .BR "plot \-T pnm" , .BR "plot \-T gif" , .BR "plot \-T svg" , .BR "plot \-T ai" , .BR "plot \-T ps" , .BR "plot \-T cgm" , .BR "plot \-T fig" , .BR "plot \-T pcl" , and .BR "plot \-T hpgl" , which do not plot in real time, will output only the last frame of any multi-frame page. .IP "" The default behavior, if \fB\-p\fP is not used, is to output all pages. For example, \fBplot \-T X\fP displays each page in its own X window. If the .BR "\-T png" , .BR "\-T pnm" , .BR "\-T gif" , .BR "\-T ai" , or .B \-T fig option is used, the default behavior is to output only the first nonempty page, since files in those output formats contain only a single page of graphics. .IP "" Metafiles produced by .BR graph (1) and .BR plotfont (1) contain only a single page (page #1), which consists of two frames: an empty frame to clear the display, and a second frame that contains the graphics. .TP .B \-s .br .ns .TP .B \-\-merge\-pages Merge all displayed pages into a single page, and also merge all `frames'. .IP "" This option is useful when merging together single-page plots from different sources. For example, it can be used to merge together plots obtained from separate invocations of .BR graph (1). .TP .BI \-\-bitmap\-size " bitmap_size" Set the size of the graphics display in which the plot will be drawn, in terms of pixels, to be .IR bitmap_size . The default is "570x570". This is relevant only to .BR "plot \-T X" , .BR "plot \-T png" , .BR "plot \-T pnm" , and .BR "plot \-T gif" , all of which produce bitmaps. If you choose a rectangular (non-square) window size, the fonts in the plot will be scaled anisotropically, i.e., by different factors in the horizontal and vertical directions. For .BR "plot \-T X" , this requires an X11R6 display. Any font that cannot be scaled in this way will be replaced by a default scalable font, such as the vector font "HersheySerif". .IP "" The environment variable .SB BITMAPSIZE can equally well be used to specify the window size. For backward compatibility, the X resource .B Xplot.geometry may be used instead. .TP .BI \-\-emulate\-color " option" If .I option is .IR yes , replace each color in the output by an appropriate shade of gray. This is seldom useful, except when using .B plot \-T pcl to prepare output for a PCL 5 device. (Many monochrome PCL 5 devices, such as monochrome LaserJets, do a poor job of emulating color on their own.) You may equally well request color emulation by setting the environment variable .SB EMULATE_COLOR to "yes". .TP .BI \-\-max\-line\-length " max_line_length" Set the maximum number of points that a polygonal line may contain, before it is flushed out, to be .IR max_line_length . If this flushing occurs, the polygonal line will be split into two or more sub-lines, though the splitting should not be noticeable. The default value of \fImax_line_length\fP\^ is 500. .IP "" The reason for splitting long polygonal lines is that some display devices (e.g., old Postscript printers and pen HP-GL plotters) have limited buffer sizes. The environment variable .SB MAX_LINE_LENGTH can also be used to specify the maximum line length. .TP .BI \-\-page\-size " pagesize" Set the size of the page on which the plot will be positioned. This is relevant only to .BR "plot \-T svg" , .BR "plot \-T ai" , .BR "plot \-T ps" , .BR "plot \-T cgm" , .BR "plot \-T fig" , .BR "plot \-T pcl" , and .BR "plot \-T hpgl" . The default is "letter", which means an 8.5 inch by 11 inch page. Any ISO page size in the range "a0".\|.\|."a4" or ANSI page size in the range "a".\|.\|."e" may be specified ("letter" is an alias for "a" and "tabloid" is an alias for "b"). "legal" and "ledger" are recognized page sizes also. The environment variable .SB PAGESIZE can equally well be used to specify the page size. .IP "" The graphics display in which the plot is drawn will, by default, be a square region that occupies nearly the full width of the specified page. An alternative size for the graphics display can be specified. For example, the page size could be specified as "letter,xsize=4in,ysize=6in", or "a4,xsize=5.0cm,ysize=100mm". For all of the above except .BR "plot \-T hpgl" , the graphics display will, by default, be centered on the page. For all of the above except .B "plot \-T svg" and .BR "plot \-T cgm" , the graphics display may be repositioned manually, by specifying the location of its lower left corner, relative to the lower left corner of the page. For example, the page size could be specified as "letter,xorigin=2in,yorigin=3in", or "a4,xorigin=0.5cm,yorigin=0.5cm". It is also possible to specify an offset vector. For example, the page size could be specified as "letter,xoffset=1in", or "letter,xoffset=1in,yoffset=1.2in", or "a4,yoffset=\-1cm". In SVG format and WebCGM format it is possible to specify the size of the graphics display, but not its position. .TP .BI \-\-rotation " angle" Rotate the graphics display by .IR angle " degrees." Recognized values are "0", "90", "180", and "270". "no" and "yes" are equivalent to "0" and "90", respectively. The environment variable .SB ROTATION can also be used to specify a rotation angle. .SS "Parameter Initialization Options" The following options set the initial values of drawing parameters. However, all of these may be overridden by directives in a metafile. In fact, these options are useful primarily when plotting old metafiles in the traditional (pre-GNU) .BR plot (5) format, which did not support such directives. .TP .BI \-\-bg\-color " name" Set the color initially used for the background to be .IR name . This is relevant only to .BR "plot \-T X" , .BR "plot \-T png" , .BR "plot \-T pnm" , .BR "plot \-T gif" , .BR "plot \-T svg" , .BR "plot \-T cgm" , and .BR "plot \-T regis" . An unrecognized name sets the color to the default, which is "white". The environment variable .SB BG_COLOR can equally well be used to specify the background color. .IP "" If the .B \-T png or .B \-T gif option is used, a transparent PNG file or a transparent pseudo-GIF, respectively, may be produced by setting the .SB TRANSPARENT_COLOR environment variable to the name of the background color. If the .B \-T svg or .B \-T cgm option is used, an output file without a background may be produced by setting the background color to "none". .TP .BI \-f " size" .br .ns .TP .BI \-\-font\-size " size" Set the size of the font initially used for rendering text, as a fraction of the width of the graphics display, to be .IR size . The default is 0.0525. .TP .BI \-F " name" .br .ns .TP .BI \-\-font\-name " name" Set the font initially used for text to be .IR name . Font names are case-insensitive. If the specified font is not available, the default font will be used. Which fonts are available, and the default font, depend on which \fB\-T\fP option is specified (see above). A list of available fonts can be obtained with the .B \-\-help\-fonts option (see below). .TP .BI \-W " line_width" .br .ns .TP .BI \-\-line\-width " line_width" Set the initial width of lines, as a fraction of the width of the display, to be .IR line_width . A negative value means that a default value should be used. This value is format-dependent. The interpretation of zero line width is also format-dependent (in some output formats, a zero-width line is the thinnest line that can be drawn; in others, a zero-width line is invisible). .TP .BI \-\-pen\-color " name" Set the initial pen color to be .IR name . An unrecognized name sets the pen color to the default, which is "black". .SS Options for Metafile Output .LP The following option is relevant only if the .B \-T option is omitted or if .B "\-T meta" is used. In this case the output of .BR plot , like the input, will be in GNU graphics metafile format. .TP .B \-O .br .ns .TP .B \-\-portable\-output Output the portable (human-readable) version of GNU metafile format, rather than the binary version (the default). The format of the binary version is machine-dependent. .SS Options for Backward Compatibility By default, \fBplot\fP assumes that its input file(s) are in either the binary version or the portable version of GNU metafile format. You may specify that the input is, instead, in the traditional Unix (pre-GNU) graphics metafile format, which is documented in .BR plot (5). The traditional graphics metafile format was produced by pre-GNU versions of .BR graph (1). .TP .B \-h .br .ns .TP .B \-\-high\-byte\-first\-input Input file(s) are assumed to be in the binary, `high byte first' version of traditional metafile format. This variant is uncommon. .TP .B \-l .br .ns .TP .B \-\-low\-byte\-first\-input Input file(s) are assumed to be in the binary, `low byte first' version of traditional metafile format. This variant is the most common. .TP .B \-A .br .ns .TP .B \-\-ascii\-input Input file(s) are assumed to be in the .SM ASCII (human-readable) variant of traditional metafile format. On some older Unix systems, this variant was produced by .BR plottoa (1). .SS Informational Options .TP .B \-\-help Print a list of command-line options, and exit. .TP .B \-\-help\-fonts Print a table of available fonts, and exit. The table will depend on which output format is specified with the .B \-T option. .BR "plot \-T X" , .BR "plot \-T svg" , .BR "plot \-T ai" , .BR "plot \-T ps" , .BR "plot \-T cgm" , and .B plot \-T fig each support the 35 standard Postscript fonts. .BR "plot \-T svg" , .BR "plot \-T pcl" , and .B plot \-T hpgl support the 45 standard PCL 5 fonts, and the latter two support a number of Hewlett\-Packard vector fonts. All seven support a set of 22 Hershey vector fonts, as do .BR "plot \-T png" , .BR "plot \-T pnm" , .BR "plot \-T gif" , .BR "plot \-T regis" , and .BR "plot \-T tek" . .B plot without a .B \-T option in principle supports any of these fonts, since its output must be translated to other formats by a further invocation of .BR plot . .IP "" The .BR plotfont (1) utility may be used to obtain a character map of any supported font. .TP .B \-\-list\-fonts Like .BR \-\-help\-fonts , but lists the fonts in a single column to facilitate piping to other programs. If no output format is specified with the .B \-T option, the full set of supported fonts is listed. .TP .B \-\-version Print the version number of .B plot and the plotting utilities package, and exit. .SH "ENVIRONMENT" The environment variables .SB BITMAPSIZE, .SB PAGESIZE, .SB BG_COLOR, .SB EMULATE_COLOR, .SB MAX_LINE_LENGTH and .SB ROTATION serve as backups for the options .BR \-\-bitmap\-size , .BR \-\-page\-size , .BR \-\-bg\-color , .BR \-\-emulate\-color , .BR \-\-max\-line\-length , and .BR \-\-rotation , respectively. The remaining environment variables are specific to individual output formats. .LP .BR "plot \-T X" , which pops up a window on an X Window System display and draws graphics in it, checks the .SB DISPLAY environment variable. Its value determines the display that will be used. .LP .BR "plot \-T png" and .BR "plot \-T gif" , which produce output in PNG format and pseudo-GIF format respectively, are affected by the .SB INTERLACE environment variable. If its value is "yes", the output will be interlaced. Also, if the .SB TRANSPARENT_COLOR environment variable is set to the name of a color, that color will be treated as transparent in the output. .LP .BR "plot \-T pnm" , which produces output in portable anymap (PBM/PGM/PPM) format, is affected by the .SB PNM_PORTABLE environment variable. If its value is "yes", the output will be in a human-readable format rather than binary (the default). .LP .BR "plot \-T cgm" , which produces output in CGM (Computer Graphics Metafile) format, is affected by the .SB CGM_MAX_VERSION and .SB CGM_ENCODING environment variables. By default, it produces a binary-encoded version of CGM version 3 format. For backward compatibility, the version number may be reduced by setting .SB CGM_MAX_VERSION to "2" or "1". Irrespective of version, the output CGM file will use the human-readable clear text encoding if .SB CGM_ENCODING is set to "clear_text". However, only binary-encoded CGM files conform to the WebCGM profile. .LP .BR "plot \-T pcl" , which produces PCL 5 output for Hewlett\-Packard printers and plotters, is affected by the environment variable .SB PCL_ASSIGN_COLORS. It should be set to "yes" when producing PCL 5 output for a color printer or other color device. This will ensure accurate color reproduction by giving the output device complete freedom in assigning colors, internally, to its "logical pens". If it is "no" then the device will use a fixed set of colored pens, and will emulate other colors by shading. The default is "no" because monochrome PCL 5 devices, which are much more common than colored ones, must use shading to emulate color. .LP .BR "plot \-T hpgl" , which produces Hewlett\-Packard Graphics Language output, is affected by several environment variables. The most important is .SB HPGL_VERSION, which may be set to "1", "1.5", or "2" (the default). "1" means that the output should be generic HP-GL, "1.5" means that the output should be suitable for the HP7550A graphics plotter and the HP758x, HP7595A and HP7596A drafting plotters (HP-GL with some HP-GL/2 extensions), and "2" means that the output should be modern HP-GL/2. If the version is "1" or "1.5" then the only available fonts will be vector fonts, and all lines will be drawn with a default width (the .B \-W option will not work). Additionally, if the version is "1" then the filling of arbitrary curves with solid color will not be supported (circles and rectangles aligned with the coordinate axes may be filled, though). .LP The position of the .B plot \-T hpgl graphics display on the page can be rotated 90 degrees counterclockwise by setting the .SB HPGL_ROTATE environment variable to "yes". This is not the same as the rotation obtained with the .B \-\-rotation option, since it both rotates the graphics display and repositions its lower left corner toward another corner of the page. Besides "no" and "yes", recognized values for .SB HPGL_ROTATE are "0", "90", "180", and "270". "no" and "yes" are equivalent to "0" and "90", respectively. "180" and "270" are supported only if .SB HPGL_VERSION is "2" (the default). .LP By default, .B plot \-T hpgl will draw with a fixed set of pens. Which pens are present may be specified by setting the .SB HPGL_PENS environment variable. If .SB HPGL_VERSION is "1", the default value of .SB HPGL_PENS is "1=black"; if .SB HPGL_VERSION is "1.5" or "2", the default value of .SB HPGL_PENS is "1=black:2=red:3=green:4=yellow:5=blue:6=magenta:7=cyan". The format should be self-explanatory. By setting .SB HPGL_PENS you may specify a color for any pen in the range #1.\|.\|.#31. All color names recognized by the X Window System may be used. Pen #1 must always be present, though it need not be black. Any other pen in the range #1.\|.\|.#31 may be omitted. .LP If .SB HPGL_VERSION is "2" then .B plot \-T hpgl will also be affected by the environment variable .SB HPGL_ASSIGN_COLORS. If its value is "yes", then .B plot \-T hpgl will not be restricted to the palette specified in .SB HPGL_PENS: it will assign colors to "logical pens" in the range #1.\|.\|.#31, as needed. The default value is "no" because other than color LaserJet printers and DesignJet plotters, not many HP-GL/2 devices allow the assignment of colors to logical pens. .LP Opaque filling and the drawing of visible white lines are supported only if .SB HPGL_VERSION is "2" and the environment variable .SB HPGL_OPAQUE_MODE is "yes" (the default). If its value is "no" then white lines (if any), which are normally drawn with pen #0, will not be drawn. This feature is to accommodate older HP-GL/2 devices. HP-GL/2 pen plotters, for example, do not support opacity or the use of pen #0 to draw visible white lines. Some older HP-GL/2 devices may, in fact, malfunction if asked to draw opaque objects. .LP .BR "plot \-T tek" , which produces output for a Tektronix terminal or emulator, checks the .SB TERM environment variable. If the value of .SB TERM is a string beginning with "xterm", "nxterm", or "kterm", it is taken as a sign that .B plot is running in an X Window System VT100 terminal emulator: a copy of .BR xterm (1), .BR nxterm (1), or .BR kterm (1). Before drawing graphics, .B plot \-T tek will emit an escape sequence that causes the terminal emulator's auxiliary Tektronix window, which is normally hidden, to pop up. After the graphics are drawn, an escape sequence that returns control to the original VT100 window will be emitted. The Tektronix window will remain on the screen. .LP If the value of .SB TERM is a string beginning with "kermit", "ansi.sys", or "nansi.sys", it is taken as a sign that .B plot is running in the VT100 terminal emulator provided by the MS-DOS version of .BR kermit (1). Before drawing graphics, \fBplot \-T tek\fP will emit an escape sequence that switches the terminal emulator to Tektronix mode. Also, some of the Tektronix control codes emitted by \fBplot \-T tek\fP will be \fBkermit\fP-specific. There will be a limited amount of color support, which is not normally the case (the 16 `ansi.sys' colors will be supported). After drawing graphics, \fBplot \-T tek\fP will emit an escape sequence that returns the emulator to VT100 mode. The key sequence `ALT minus' can be employed manually within \fBkermit\fP to switch between the two modes. .SH "SEE ALSO" .BR graph (1), .BR pic2plot (1), .BR tek2plot (1), .BR plotfont (1), .BR plot (3), .BR plot (5), and "The GNU Plotting Utilities Manual". .SH AUTHORS .B plot was written by Robert S. Maier (\fBrsm@math.arizona.edu\fP). .SH BUGS Email bug reports to .BR bug\-gnu\-utils@gnu.org . 07070100037661000081a40000000000000000000000014cc7b61800001bd1000000b500010002ffffffffffffffff0000002400000000root/usr/local/share/man/man1/ode.1.TH ODE 1 "Dec 1998" "FSF" "GNU Plotting Utilities" .SH NAME ode \- numerical solution of ordinary differential equations .\" Not all man macros define SB .de SB \&\fB\s-1\&\\$1 \\$2\s0\fR .. .SH SYNOPSIS .B ode [ .I options ] [ .I file ] .SH DESCRIPTION .LP .B ode is a tool that solves, by numerical integration, the initial value problem for a specified system of first-order ordinary differential equations. Three distinct numerical integration schemes are available: Runge\-Kutta\-Fehlberg (the default), Adams\-Moulton, and Euler. The Adams\-Moulton and Runge\-Kutta schemes are available with adaptive step size. .LP The operation of .B ode is specified by a program, written in its input language. The program is simply a list of expressions for the derivatives of the variables to be integrated, together with some control statements. Some examples are given in the .SB EXAMPLES section. .LP .B ode reads the program from the specified file, or from standard input if no file name is given. If reading from standard input, \fBode\fP will stop reading and exit when it sees a single period on a line by itself. .LP At each time step, the values of variables specified in the program are written to standard output. So a table of values will be produced, with each column showing the evolution of a variable. If there are only two columns, the output can be piped to .BR graph (1) or a similar plotting program. .SH OPTIONS .SS Input Options .TP .BI \-f " file" .br .ns .TP .BI \-\-input\-file " file" Read input from \fIfile\fP\^ before reading from standard input. This option makes it possible to work interactively, after reading a program fragment that defines the system of differential equations. .SS Output Options .TP .BI \-p " prec" .br .ns .TP .BI \-\-precision " prec" When printing numerical results, use \fIprec\fP\^ significant digits (the default is 6). If this option is given, the print format will be scientific notation. .TP .B \-t .br .ns .TP .B \-\-title Print a title line at the head of the output, naming the variables in each column. If this option is given, the print format will be scientific notation. .SS Integration Scheme Options The following options specify the numerical integration scheme. Only one of the three basic options \fB\-R\fP, \fB\-A\fP, \fB\-E\fP may be specified. The default is \fB\-R\fP (Runge\-Kutta\-Fehlberg). .TP .BI \-R " [stepsize]" .br .ns .TP .BI \-\-runge\-kutta " [stepsize]" Use a fifth-order Runge\-Kutta\-Fehlberg algorithm, with an adaptive stepsize unless a constant stepsize is specified. When a constant stepsize is specified and no error analysis is requested, then a classical fourth-order Runge\-Kutta scheme is used. .TP .BI \-A " [stepsize]" .br .ns .TP .BI \-\-adams\-moulton " [stepsize]" Use a fourth-order Adams\-Moulton predictor-corrector scheme, with an adaptive stepsize unless a constant stepsize, \fIstepsize\fP\^, is specified. The Runge\-Kutta\-Fehlberg algorithm is used to get past `bad' points (if any). .TP .BI \-E " [stepsize]" .br .ns .TP .BI \-\-euler " [stepsize]" Use a `quick and dirty' Euler scheme, with a constant stepsize. The default value of \fIstepsize\fP\^ is 0.1. Not recommended for serious applications. .IP "" The error bound options \fB\-r\fP and \fB\-e\fP (see below) may not be used if \fB\-E\fP is specified. .TP .BI \-h " hmin [hmax]" .br .ns .TP .BI \-\-step\-size\-bound " hmin [hmax]" Use a lower bound \fIhmin\fP\^ on the stepsize. The numerical scheme will not let the stepsize go below \fIhmin\fP\^. The default is to allow the stepsize to shrink to the machine limit, i.e., the minimum nonzero double-precision floating point number. .IP "" The optional argument \fIhmax\fP\^, if included, specifies a maximum value for the stepsize. It is useful in preventing the numerical routine from skipping quickly over an interesting region. .SS Error Bound Options .TP .BI \-r " rmax [rmin]" .br .ns .TP .BI \-\-relative\-error\-bound " rmax [rmin]" The \fB\-r\fP option sets an upper bound on the relative single-step error. If the \fB\-r\fP option is used, the relative single-step error in any dependent variable will never exceed \fIrmax\fP\^ (the default for which is 10^-9). If this should occur, the solution will be abandoned and an error message will be printed. If the stepsize is not constant, the stepsize will be decreased `adaptively', so that the upper bound on the single-step error is not violated. Thus, choosing a smaller upper bound on the single-step error will cause smaller stepsizes to be chosen. A lower bound \fIrmin\fP\^ may optionally be specified, to suggest when the stepsize should be increased (the default for \fIrmin\fP\^ is \fIrmax\fP\^/1000). .TP .BI \-e " emax [emin]" .br .ns .TP .BI \-\-absolute\-error\-bound " emax [emin]" Similar to \fB\-r\fP, but bounds the absolute rather than the relative single-step error. .TP .B \-s .br .ns .TP .B \-\-suppress\-error\-bound Suppress the ceiling on single-step error, allowing \fBode\fP to continue even if this ceiling is exceeded. This may result in large numerical errors. .SS Informational Options .TP .B \-\-help Print a list of command-line options, and exit. .TP .B \-\-version Print the version number of \fBode\fP and the plotting utilities package, and exit. .SH DIAGNOSTICS .LP Mostly self-explanatory. The biggest exception is `syntax error', meaning there is a grammatical error. Language error messages are of the form .LP .RS .B ode: nnn: message\|.\|.\|. .RE .LP where `nnn' is the number of the input line containing the error. If the .B \-f option is used, the phrase "(file)" follows the `nnn' for errors encountered inside the file. Subsequently, when \fBode\fP begins reading the standard input, line numbers start over from 1. .LP No effort is made to recover successfully from syntactic errors in the input. However, there is a meager effort to resynchronize so more than one error can be found in one scan. .LP Run-time errors elicit a message describing the problem, and the solution is abandoned. .SH EXAMPLES The program .LP .RS .B y' = y .br .B y = 1 .br .B print t, y .br .B step 0, 1 .RE .LP solves an initial value problem whose solution is \fIy=e^t\fP\^. When \fBode\fP runs this program, it will write two columns of numbers to standard output. Each line will show the value of the independent variable \fIt\fP\^, and the variable \fIy\fP\^, as \fIt\fP\^ is stepped from 0 to 1. .LP A more sophisticated example would be .LP .RS .B sine' = cosine .br .B cosine' = \-sine .br .B sine = 0 .br .B cosine = 1 .br .B print t, sine .br .B step 0, 2*PI .RE .LP This program solves an initial value problem for a system of two differential equations. The initial value problem turns out to define the sine and cosine functions. The program steps the system over a full period. .SH AUTHORS \fBode\fP was written by Nicholas B. Tufillaro .RB ( nbt@reed.edu ), and slightly enhanced by Robert S. Maier .RB ( rsm@math.arizona.edu ) to merge it into the GNU plotting utilities. .SH "SEE ALSO" "The GNU Plotting Utilities Manual". .SH BUGS Email bug reports to .BR bug\-gnu\-utils@gnu.org . 07070100037665000081a40000000000000000000000014cc7b618000047f1000000b500010002ffffffffffffffff0000002900000000root/usr/local/share/man/man1/tek2plot.1.TH TEK2PLOT 1 "Jun 2000" "FSF" "GNU Plotting Utilities" .SH NAME tek2plot \- translate Tektronix files to other graphics formats .\" Not all man macros define SB .de SB \&\fB\s-1\&\\$1 \\$2\s0\fR .. .SH SYNOPSIS .B tek2plot [ .I options ] [ .I files ] .SH DESCRIPTION .LP .B tek2plot translates Tektronix graphics files to other formats, or displays them on an X Window System display. The output format is specified with the .BR \-T " option." The possible output formats are the same as those supported by .BR graph (1), .BR plot (1), .BR pic2plot (1), and .BR plotfont (1). If an output file is produced, it is written to standard output. .LP Options and file names may be interspersed on the command line, but the options are processed before the file names are read. If .B \-\- is seen, it is interpreted as the end of the options. If no file names are specified, or the file name .B \- is encountered, the standard input is read. .SH OPTIONS .SS General Options .TP .BI \-T " type" .br .ns .TP .BI \-\-output\-format " type" Select .I type as the output format. It may be "X", "png", "pnm", "gif", "svg", "ai", "ps", "cgm", "fig", "pcl", "hpgl", "regis", "tek", or "meta" (the default). These refer respectively to the X Window System, PNG (Portable Network Graphics) format, portable anymap format (PBM/PGM/PPM), a pseudo-GIF format that does not use LZW encoding, the new XML-based Scalable Vector Graphics format, the format used by Adobe Illustrator, Postscript or Encapsulated Postscript (EPS) that can be edited with .BR idraw (1), CGM format (by default, confirming to the WebCGM profile), the format used by the .BR xfig (1) drawing editor, the Hewlett\-Packard PCL 5 printer language, the Hewlett\-Packard Graphics Language, ReGIS graphics format (which can be displayed by the .BR dxterm (1) terminal emulator or by a VT330 or VT340 terminal), Tektronix format itself, and device-independent GNU metafile format. Unless \fItype\fP\^ is "X", an output file is produced and written to standard output. .IP "" Omitting the .B \-T option is equivalent to specifying .BR "\-T meta" . GNU metafile format may be translated to other formats with .BR plot (1). .TP .BI \-p " n" .br .ns .TP .BI \-\-page\-number " n" Output only page number .IR n , within the Tektronix file or sequence of Tektronix files that is being translated. \fIn\fP\^ must be a non-negative integer, since a Tektronix file may consist of one or more pages, numbered beginning with zero. .IP "" The default behavior if the .B \-p option is not used is to output all nonempty pages in succession. For example, .B tek2plot \-T X displays each Tektronix page in its own X window. If the .BR "\-T png" , .BR "\-T pnm" , .BR "\-T gif" , .BR "\-T ai" , or .B \-T fig option is used, the default behavior is to output only the first nonempty Tektronix page, since files in those output formats contain only a single page of graphics. .IP "" Most Tektronix files consist of either one page (page #0) or two pages (an empty page #0, and page #1). Tektronix files produced by the GNU plotting utilities (e.g., by .BR "graph \-T tek" ) are normally of the latter sort. .TP .BI \-F " name" .br .ns .TP .BI \-\-font\-name " name" Use the font \fIname\fP\^ for rendering the native Textronix fonts, if it is available. The default font is "Courier" except for .BR "tek2plot \-T png" , .BR "tek2plot \-T pnm" , .BR "tek2plot \-T gif" , .BR "tek2plot \-T hpgl" , .BR "tek2plot \-T regis" , and .BR "tek2plot \-T tek" , for which it is "HersheySerif". A list of available fonts can be obtained with the .B \-\-help\-fonts option (see below). If a font outside the Courier family is used, the .B \-\-position\-chars option (see below) should probably be specified. .IP "" The .B \-F option is useful only if you have a Tektronix file that draws text using native Tektronix fonts. Tektronix files produced by the GNU plotting utilities (e.g., by .BR "graph \-T tek" ) do not use native Tektronix fonts: they use Hershey vector fonts instead. .TP .BI \-W " line_width" .br .ns .TP .BI \-\-line\-width " line_width" Set the width of lines, as a fraction of the width of the display, to be .IR line_width . A negative value means that a default value should be used. This value is format-dependent. The interpretation of zero line width is also format-dependent (in some output formats, a zero-width line is the thinnest line that can be drawn; in others, a zero-width line is invisible). .TP .BI \-\-bg\-color " name" Set the color used for the background to be .IR name . This is relevant only to .BR "tek2plot \-T X" , .BR "tek2plot \-T png" , .BR "tek2plot \-T pnm" , .BR "tek2plot \-T gif" , .BR "tek2plot \-T svg" , .BR "tek2plot \-T cgm" , and .BR "tek2plot \-T regis" . An unrecognized name sets the color to the default, which is "white". The environment variable .SB BG_COLOR can equally well be used to specify the background color. If the .B \-T svg or .B \-T cgm option is used, an output file without a background may be produced by setting the background color to "none". .IP "" If the .B \-T png or .B \-T gif option is used, a transparent PNG file or a transparent pseudo-GIF, respectively, may be produced by setting the .SB TRANSPARENT_COLOR environment variable to the name of the background color. .TP .BI \-\-bitmap\-size " bitmap_size" Set the size of the graphics display in which the plot will be drawn, in terms of pixels, to be .IR bitmap_size . The default is "570x570". This is relevant only to .BR "plot \-T X" , .BR "plot \-T png" , .BR "plot \-T pnm" , and .BR "plot \-T gif" . If you choose a rectangular (non-square) window size, the fonts in the plot will be scaled anisotropically, i.e., by different factors in the horizontal and vertical directions. For .BR "plot \-T X" , this requires an X11R6 display. Any font that cannot be scaled in this way will be replaced by a default scalable font, such as the vector font "HersheySerif". .IP "" The environment variable .SB BITMAPSIZE can equally well be used to specify the window size. For backward compatibility, the X resource .B Xplot.geometry may be used instead. .TP .BI \-\-emulate\-color " option" If .I option is .IR yes , replace each color in the output by an appropriate shade of gray. This is seldom useful, except when using ` .B tek2plot -T pcl to prepare output for a PCL 5 device. (Many monochrome PCL 5 devices, such as monochrome LaserJets, do a poor job of emulating color on their own.) You may equally well request color emulation by setting the environment variable .SB EMULATE_COLOR to "yes". .TP .BI \-\-max\-line\-length " max_line_length" Set the maximum number of points that a polygonal line may contain, before it is flushed out, to be .IR max_line_length . If this flushing occurs, the polygonal line will be split into two or more sub-lines, though the splitting should not be noticeable. The default value of \fImax_line_length\fP\^ is 500. .IP "" The reason for splitting long polygonal lines is that some display devices (e.g., old Postscript printers and HP-GL pen plotters) have limited buffer sizes. The environment variable .SB MAX_LINE_LENGTH can also be used to specify the maximum line length. .TP .BI \-\-page\-size " pagesize" Set the size of the page on which the plot will be positioned. This is relevant only to .BR "tek2plot \-T svg" , .BR "tek2plot \-T ai" , .BR "tek2plot \-T ps" , .BR "tek2plot \-T cgm" , .BR "tek2plot \-T fig" , .BR "tek2plot \-T pcl" , and .BR "tek2plot \-T hpgl" . The default is "letter", which means an 8.5 inch by 11 inch page. Any ISO page size in the range "a0".\|.\|."a4" or ANSI page size in the range "a".\|.\|."e" may be specified ("letter" is an alias for "a" and "tabloid" is an alias for "b"). "legal" and "ledger" are recognized page sizes also. The environment variable .SB PAGESIZE can equally well be used to specify the page size. .IP "" The graphics display in which the plot is drawn will be a square region that would occupy nearly the full width of the specified page. An alternative size for the graphics display can be specified. For example, the page size could be specified as "letter,xsize=4in,ysize=6in", or "a4,xsize=5.0cm,ysize=100mm". For all of the above except .BR "tek2plot \-T hpgl" , the graphics display will, by default, be centered on the page. For all of the above except .B "tek2plot \-T svg" and .BR "tek2plot \-T cgm" , the graphics display may be repositioned manually, by specifying the location of its lower left corner, relative to the lower left corner of the page. For example, the page size could be specified as "letter,xorigin=2in,yorigin=3in", or "a4,xorigin=0.5cm,yorigin=0.5cm". It is also possible to specify an offset vector. For example, the page size could be specified as "letter,xoffset=1in", or "letter,xoffset=1in,yoffset=1.2in", or "a4,yoffset=\-1cm". In SVG format and WebCGM format it is possible to specify the size of the graphics display, but not its position. .TP .BI \-\-pen\-color " name" Set the pen color to be .IR name . An unrecognized name sets the pen color to the default, which is "black". .TP .B \-\-position\-chars Position the characters in each text string individually. If the text font is not a member of the Courier family, and especially if it is not a fixed-width font, this option is recommended. It will improve the appearance of text strings, at the price of making it difficult to edit the output file with .BR xfig (1), .BR idraw (1), or Illustrator. .TP .BI \-\-rotation " angle" Rotate the graphics display by .IR angle " degrees." Recognized values are "0", "90", "180", and "270". "no" and "yes" are equivalent to "0" and "90", respectively. The environment variable .SB ROTATION can also be used to specify a rotation angle. .TP .B \-\-use\-tek\-fonts Use the bitmap fonts that were used on the original Tektronix 4010/4014 terminal. This option is relevant only to .BR "tek2plot \-T X" . The four relevant bitmap fonts are distributed with most versions of the GNU plotting utilities, under the names "tekfont0".\|.\|."tekfont3". They can easily be installed on any modern X Window System display. For this option to work properly, you must also select a window size of .if t 1024\(mu1024 .if n 1024x1024 pixels, either by using the .B \-\-bitmap\-size 1024x1024 option or by setting the value of the .B Xplot.geometry resource. This is because bitmap fonts, unlike the scalable fonts that .B tek2plot normally uses, cannot be rescaled. .IP "" This option is useful only if you have a file in Tektronix format that draws text using native Tektronix fonts. Tektronix files produced by the GNU plotting utilities (e.g., by .BR "graph \-T tek" ) do not use native Tektronix fonts: they use Hershey vector fonts instead. .SS Options for Metafile Output .LP The following option is relevant only if the .B \-T option is omitted or if .B "\-T meta" is used. In this case .B tek2plot outputs a GNU graphics metafile, which must be translated to other formats with .BR plot (1). .TP .B \-O .br .ns .TP .B \-\-portable\-output Output the portable (human-readable) version of GNU metafile format, rather than a binary version (the default). The format of the binary version is machine-dependent. .SS Informational Options .TP .B \-\-help Print a list of command-line options, and exit. .TP .B \-\-help\-fonts Print a table of available fonts, and exit. The table will depend on which output format is specified with the .B \-T option. .BR "tek2plot \-T X" , .BR "tek2plot \-T svg" , .BR "tek2plot \-T ai" , .BR "tek2plot \-T ps" , .BR "tek2plot \-T cgm" , and .B tek2plot \-T fig each support the 35 standard Postscript fonts. .BR "tek2plot \-T svg" , .BR "tek2plot \-T pcl" , and .B tek2plot \-T hpgl support the 45 standard PCL 5 fonts, and the latter two support a number of Hewlett\-Packard vector fonts. All seven support a set of 22 Hershey vector fonts, as do .BR "tek2plot \-T png" , .BR "tek2plot \-T pnm" , .BR "tek2plot \-T gif" , .BR "tek2plot \-T regis" , and .BR "tek2plot \-T tek" . .B tek2plot without a .B \-T option in principle supports any of these fonts, since its output must be translated to other formats with .BR plot (1). .IP "" The .BR plotfont (1) utility may be used to obtain a character map of any supported font. .TP .B \-\-list\-fonts Like .BR \-\-help\-fonts , but lists the fonts in a single column to facilitate piping to other programs. If no output format is specified with the .B \-T option, the full set of supported fonts is listed. .TP .B \-\-version Print the version number of .B tek2plot and the plotting utilities package, and exit. .SH "ENVIRONMENT" The environment variables .SB BITMAPSIZE, .SB PAGESIZE, .SB BG_COLOR, .SB EMULATE_COLOR, .SB MAX_LINE_LENGTH and .SB ROTATION serve as backups for the options .BR \-\-bitmap\-size , .BR \-\-page\-size , .BR \-\-bg\-color , .BR \-\-emulate\-color , .BR \-\-max\-line\-length , and .BR \-\-rotation , respectively. The remaining environment variables are specific to individual output formats. .LP .BR "tek2plot \-T X" , which pops up a window on an X Window System display and draws graphics in it, checks the .SB DISPLAY environment variable. Its value determines the display that will be used. .LP .BR "tek2plot \-T png" and .BR "tek2plot \-T gif" , which produce output in PNG format and pseudo-GIF format respectively, are affected by the .SB INTERLACE environment variable. If its value is "yes", the output will be interlaced. Also, if the .SB TRANSPARENT_COLOR environment variable is set to the name of a color, that color will be treated as transparent in the output. .LP .BR "tek2plot \-T pnm" , which produces output in portable anymap (PBM/PGM/PPM) format, is affected by the .SB PNM_PORTABLE environment variable. If its value is "yes", the output will be in a human-readable format rather than binary (the default). .LP .BR "tek2plot \-T cgm" , which produces output in CGM (Computer Graphics Metafile) format, is affected by the .SB CGM_MAX_VERSION and .SB CGM_ENCODING environment variables. By default, it produces a binary-encoded version of CGM version 3 format. For backward compatibility, the version number may be reduced by setting .SB CGM_MAX_VERSION to "2" or "1". Irrespective of version, the output CGM file will use the human-readable clear text encoding if .SB CGM_ENCODING is set to "clear_text". However, only binary-encoded CGM files conform to the WebCGM profile. .LP .BR "tek2plot \-T pcl" , which produces PCL 5 output for Hewlett\-Packard printers and plotters, is affected by the environment variable .SB PCL_ASSIGN_COLORS. It should be set to "yes" when producing PCL 5 output for a color printer or other color device. This will ensure accurate color reproduction by giving the output device complete freedom in assigning colors, internally, to its "logical pens". If it is "no" then the device will use a fixed set of colored pens, and will emulate other colors by shading. The default is "no" because monochrome PCL 5 devices, which are much more common than colored ones, must use shading to emulate color. .LP .BR "tek2plot \-T hpgl" , which produces Hewlett\-Packard Graphics Language output, is affected by several environment variables. The most important is .SB HPGL_VERSION, which may be set to "1", "1.5", or "2" (the default). "1" means that the output should be generic HP-GL, "1.5" means that the output should be suitable for the HP7550A graphics plotter and the HP758x, HP7595A and HP7596A drafting plotters (HP-GL with some HP-GL/2 extensions), and "2" means that the output should be modern HP-GL/2. If the version is "1" or "1.5" then the only available fonts will be vector fonts, and all lines will be drawn with a default width (the .B \-W option will not work). .LP The position of the .B tek2plot \-T hpgl graphics display on the page can be rotated 90 degrees counterclockwise by setting the .SB HPGL_ROTATE environment variable to "yes". This is not the same as the rotation obtained with the .B \-\-rotation option, since it both rotates the graphics display and repositions its lower left corner toward another corner of the page. Besides "no" and "yes", recognized values for .SB HPGL_ROTATE are "0", "90", "180", and "270". "no" and "yes" are equivalent to "0" and "90", respectively. "180" and "270" are supported only if .SB HPGL_VERSION is "2" (the default). .LP By default, .B tek2plot \-T hpgl will draw with a fixed set of pens. Which pens are present may be specified by setting the .SB HPGL_PENS environment variable. If .SB HPGL_VERSION is "1", the default value of .SB HPGL_PENS is "1=black"; if .SB HPGL_VERSION is "1.5" or "2", the default value of .SB HPGL_PENS is "1=black:2=red:3=green:4=yellow:5=blue:6=magenta:7=cyan". The format should be self-explanatory. By setting .SB HPGL_PENS you may specify a color for any pen in the range #1.\|.\|.#31. All color names recognized by the X Window System may be used. Pen #1 must always be present, though it need not be black. Any other pen in the range #1.\|.\|.#31 may be omitted. .LP If .SB HPGL_VERSION is "2" then .B tek2plot \-T hpgl will also be affected by the environment variable .SB HPGL_ASSIGN_COLORS. If its value is "yes", then .B tek2plot \-T hpgl will not be restricted to the palette specified in .SB HPGL_PENS: it will assign colors to "logical pens" in the range #1.\|.\|.#31, as needed. The default value is "no" because other than color LaserJet printers and DesignJet plotters, not many HP-GL/2 devices allow the assignment of colors to logical pens. .LP The drawing of visible white lines is supported only if .SB HPGL_VERSION is "2" and the environment variable .SB HPGL_OPAQUE_MODE is "yes" (the default). If its value is "no" then white lines (if any), which are normally drawn with pen #0, will not be drawn. This feature is to accommodate older HP-GL/2 devices. HP-GL/2 pen plotters, for example, do not support the use of pen #0 to draw visible white lines. Some older HP-GL/2 devices may, in fact, malfunction if asked to draw opaque objects. .SH "SEE ALSO" .BR plot (1), .BR plotfont (1), and "The GNU Plotting Utilities Manual". .SH AUTHORS .B tek2plot was written by Robert S. Maier (\fBrsm@math.arizona.edu\fP). It incorporates a Tektronix parser written by Edward Moy (\fBmoy@parc.xerox.com\fP). .SH BUGS Email bug reports to .BR bug\-gnu\-utils@gnu.org . 07070100037664000081a40000000000000000000000014cc7b61800002cde000000b500010002ffffffffffffffff0000002700000000root/usr/local/share/man/man1/spline.1.TH SPLINE 1 "Dec 1998" "FSF" "GNU Plotting Utilities" .SH NAME spline \- interpolate datasets using splines under tension .SH SYNOPSIS .B spline [ .I options ] [ .I files ] .SH DESCRIPTION .LP .B spline reads datasets from standard input or from one or more files, and fits a smooth curve (a "spline") through each dataset. An interpolated version of each dataset, consisting of points from the smooth curve, is written to standard output. .LP Unless the .B \-a or .B \-A options are used (see below), each dataset should be a sequence of values for a vector-valued function of a single scalar variable. That is, each dataset should be a sequence of data points, given as alternating \fIt\fP\^ and \fIy\fP\^ values. \fIt\fP\^ is a scalar independent variable, and \fIy\fP\^ is a vector-valued dependent variable. The dimensionality of \fIy\fP\^ is specified with the .B \-d option (the default dimensionality is 1). Between each data point and the next, \fIt\fP\^ should increase. .LP An input file may contain more than a single dataset. If an input file is in .SM ASCII format (the default), its datasets should be separated by blank lines. The \fIt\fP\^ and \fIy\fP\^ values of the data points in each dataset may be arranged arbitrarily, so long as they are separated by white space. Besides datasets, an input file may contain any number of comment lines, which should begin with the comment character `#'. Comment lines are ignored. They are not treated as blank, i.e., they do not interrupt a dataset in progress. .LP Options and file names may be interspersed on the command line, but the options are processed before the file names are read. If .B \-\- is seen, it is interpreted as the end of the options. If no file names are specified, or the file name .B \- is encountered, the standard input is read. .LP The type of interpolation, and the format of the input and output files, may be selected by command-line options. .SH OPTIONS .SS "Interpolation-Related Options" .TP .B \-f .br .ns .TP .B \-\-filter Use a local interpolation algorithm (the cubic Bessel algorithm), so that .B spline can be used as a real-time filter. The slope of the interpolating curve at each point in a dataset will be chosen by fitting a quadratic function through that point and the two adjacent points in the dataset. If .B \-f is specified then the .B \-t option, otherwise optional, must be used as well. Also, if .B \-f is specified then the \fB\-k\fP, \fB\-p\fP, and \fB\-T\fP options may not be used. .IP "" If .BR \-f is \fInot\fP\^ specified, then the default (global) interpolation algorithm will be used. .TP .BI \-k " k" .br .ns .TP .BI \-\-boundary\-condition " k" Set the boundary condition parameter for each constructed spline to be .IR k . (The default value is 1.0.) In each of its components, the spline will satisfy the two boundary conditions y"[0]=ky"[1] and y"[n]=ky"[n-1]. Here y[0] and y[1] signify the values of a specified component of the vector-valued dependent variable \fIy\fP\^ at the first two points of a dataset, and y[n-1] and y[n] the values at the last two points. Setting \fIk\fP\^ to zero will yield a "natural" spline, i.e., one that has zero curvature at the two ends of the dataset. The \fB\-k\fP option may not be used if \fB\-f\fP or \fB\-p\fP is specified. .TP .BI \-n " n" .br .ns .TP .BI \-\-number\-of\-intervals " n" Subdivide the interval over which interpolation occurs into \fIn\fP\^ subintervals. The number of data points computed, and written to the output, will be .IR n+1 . The default value for \fIn\fP\^ is 100. .TP .B \-p .br .ns .TP .B \-\-periodic Construct a periodic spline. If this option is specified, the \fIy\fP\^ values for the first and last points in each dataset must be equal. The \fB\-f\fP and \fB\-k\fP options may not be used if \fB\-p\fP is specified. .TP .BI \-T " tension" .br .ns .TP .BI \-\-tension " tension" Each interpolating curve will be a spline under tension. This option sets the tension value (the default is 0.0). .IP "" If \fItension\fP\^ equals zero, the curve will be a piecewise cubic spline. Increasing the tension above zero makes the curve "tighter", and reduces the likelihood of spurious inflection points. That is because between each pair of successive points in a dataset, the curve will satisfy the fourth-order differential equation y""=sgn(\fItension\fP\^)*(\fItension\fP\^^2)y" in each of its components. As \fItension\fP\^ increases to positive infinity, it will converge to a polygonal line. The \fB\-T\fP option may not be used if \fB\-f\fP is specified. .TP .B \-t \fItmin tmax [tspacing]\fP .br .ns .TP .B \-\-t\-spacing \fItmin tmax [tspacing]\fP For each dataset, set the interval over which interpolation occurs to be the interval between \fItmin\fP\^ and .IR tmax . If \fItspacing\fP\^ is not specified, the interval will be divided into the number of subintervals specified by the \fB\-n\fP option. .IP "" If the \fB\-t\fP option is not used, the interval over which interpolation occurs will be the entire range of the independent variable in the dataset. The \fB\-t\fP option must always be used if the \fB\-f\fP option is used to request filter-like behavior (see above). .SS "Format-Related Options" .TP .BI \-d " dimension" .br .ns .TP .BI \-\-y\-dimension " dimension" Set the dimensionality of the dependent variable .IR y " in" the input and output files to be .IR dimension . The default dimension is 1. .TP .BI \-I " data-format" .br .ns .TP .BI \-\-input\-format " data-format" Set the data format for the input file(s) to be .IR data-format , which may be one of the following. .RS .TP .B a .SM ASCII format (the default). Each file is a sequence of floating point numbers, interpreted as the \fIt\fP\^ and \fIy\fP\^ coordinates of the successive data points in a dataset. If \fIy\fP\^ is \fId\fP\^-dimensional, there will be \fId+1\fP\^ numbers for each point. The \fIt\fP\^ and \fIy\fP\^ coordinates of a point need not appear on the same line, and points need not appear on different lines. But if a blank line occurs (i.e., two newlines in succession are seen), it is interpreted as the end of a dataset, and the beginning of the next. .TP .B f Single precision binary format. Each file is a sequence of floating point numbers, interpreted as the \fIt\fP\^ and \fIy\fP\^ coordinates of the successive data points in a dataset. If \fIy\fP\^ is \fId\fP\^-dimensional, there will be \fId+1\fP\^ numbers for each point. Successive datasets are separated by a single occurrence of the quantity .SM FLT_MAX, which is the largest possible single precision floating point number. On most machines this is approximately 3.4x10^38. .TP .B d Double precision binary format. Each file is a sequence of double precision floating point numbers, interpreted as the \fIt\fP\^ and \fIy\fP\^ coordinates of the successive data points in a dataset. If \fIy\fP\^ is \fId\fP\^-dimensional, there will be \fId+1\fP\^ numbers for each point. Successive datasets are separated by a single occurrence of the quantity .SM DBL_MAX, which is the largest possible double precision floating point number. On most machines this is approximately 1.8x10^308. .TP .B i Integer binary format. Each file is a sequence of integers, interpreted as the \fIt\fP\^ and \fIy\fP\^ coordinates of the successive data points in a dataset. If \fIy\fP\^ is \fId\fP\^-dimensional, there will be \fId+1\fP\^ numbers for each point. Successive datasets are separated by a single occurrence of the quantity .SM INT_MAX, which is the largest possible integer. On most machines this is 2^31\-1. .RE .TP .B \-a \fI[step_size [lower_limit]]\fP .br .ns .TP .B \-\-auto\-abscissa \fI[step_size [lower_limit]]\fP Automatically generate values for .IR t , the independent variable (the default values of \fIstep_size\fP\^ and \fIlower_limit\fP\^ are 1.0 and 0.0, respectively). .IP "" Irrespective of data format (`a', `f', `d', or `i'), this option specifies that the values of \fIt\fP\^ are missing from the input file: the dataset(s) to be read contain only values of .IR y , the dependent variable. So if \fIy\fP\^ is \fId\fP\^-dimensional, there will be only \fId\fP\^ numbers for each point. The increment from each \fIt\fP\^ value to the next will be .IR step_size , and the first \fIt\fP\^ value will be .IR lower_limit . This option is useful, e.g., when interpolating curves rather than functions. .TP .B \-A .br .ns .TP .B \-\-auto\-dist\-abscissa Automatically generate values for .IR t , the independent variable. This is a variant form of the \fB\-a\fP option. The increment from each \fIt\fP\^ value to the next will be the distance in \fId\fP\^-dimensional space between the corresponding \fIy\fP\^ values, and the first \fIt\fP\^ value will be 0.0. That is, \fIt\fP\^ will be "polygonal arclength". This option is useful when interpolating curves rather than functions. .TP .BI \-O " data-format" .br .ns .TP .BI \-\-output\-format " data-format" Set the data format for the output file to be .IR data-format . The interpretation of \fIdata-format\fP\^ is the same as for the \fB\-I\fP option. The default is `a', i.e., .SM ASCII format. .TP .BI \-P " significant-digits" .br .ns .TP .BI \-\-precision " significant-digits" Set the numerical precision for the \fIt\fP\^ and \fIy\fP\^ values in the output file to be .IR significant-digits . This takes effect only if the output file is written in `a' format, i.e., in .SM ASCII. \fIsignificant-digits\fP\^ must be a positive integer (the default is 6). .TP .B \-s .br .ns .TP .B \-\-suppress\-abscissa Omit the independent variable \fIt\fP\^ from the output file; for each point, supply only the dependent variable .IR y . If \fIy\fP\^ is \fId\fP\^-dimensional, there will be only \fId\fP\^ numbers for each point, not .IR d+1 . This option is useful when interpolating curves rather than functions. .SS Informational Options .TP .B \-\-help Print a list of command-line options, and exit. .TP .B \-\-version Print the version number of .B spline and the plotting utilities package, and exit. .SH EXAMPLES .LP Typing .LP .RS .B echo 0 0 1 1 2 0 \||\| spline .RE .LP will produce on standard output an interpolated dataset consisting of 101 data points. If graphed, this interpolated dataset will yield a parabola. .LP It is sometimes useful to interpolate between a sequence of arbitrarily placed points in \fId\fP\^-dimensional space, i.e., to "spline a curve" rather than a function. The .B \-a and .B \-s options are used for this. For example, .LP .RS .B echo 0 0 1 0 1 1 0 1 \||\| spline \-d 2 \-a \-s .RE .LP will produce on standard output a 101-point dataset that interpolates between the four points (0,0), (1,0), (1,1), and (0,1). The .B \-d 2 option specifies that the dependent variable \fIy\fP\^ is two-dimensional. The .B \-a option specifies that the \fIt\fP\^ values are missing from the input and should be automatically generated. The .B \-s option specifies that the \fIt\fP\^ values should be stripped from the output. .SH AUTHORS .B spline was written by Robert S. Maier (\fBrsm@math.arizona.edu\fP), starting with an earlier version by Rich Murphey (\fBrich@freebsd.org\fP). The algorithms for constructing splines under tension are similar to those used in the FITPACK subroutine library, and are ultimately due to Alan K. Cline (\fBcline@cs.utexas.edu\fP). .SH "SEE ALSO" "The GNU Plotting Utilities Manual". .SH BUGS Email bug reports to .BR bug\-gnu\-utils@gnu.org . 0707010003764f000041ed0000000000000000000000024cc7b6fb00000000000000b500010002ffffffffffffffff0000001300000000root/usr/local/lib07070100037652000081ed0000000000000000000000014cc7b617001a9354000000b500010002ffffffffffffffff0000002400000000root/usr/local/lib/libplot.so.2.2.4ELF44 (o-0-00000&&88 GE  "#$%&(*+/0245678:;<=ABCEFGHJLMOQRSVWYZ\]_abfghkmnprsuwxyz|}~  !#%')*-0123578<>BDFGIKLNOQRUVXZ\]^_`abefghijmnoprsvwxy{~     !"$&'()+,-./2378:;<=>BDEGIJNOPQSTUVWY\]_abcdefhijlmnpstuvwxz{|~   !&'()+,-./1235679;=>?AB !'),-.139>?@DIKNPTUX[^`cdeijloqtv{    "$&(+,./469:;=?@ACEHJMPSTWY[cdklqtuz|} #%*014569?@ACFHKLMRXZ[^`gkoqry}   "#$%*048:<@CDTVx  $O <^> MAt ^DO g{ q} (  X q H   #1hD AHg> U  ga w/ D:Ї H l D \*f 1H \QG @TM #* 38c$NА  _s$ \n <@    ,}Z T k; e !Lig ;O L,x v?v RW 0a v 4@ G 3x 0C 2F %0 HTo; ]h iw  V l[x :p:  ]3 l  3 D i> D}  f> $.n 5pD F`[ Qit z H -* tm 4% ! Vx W (R  '(I  ?}T QL8 ay0Z&bP QA xQ$ Э  & H: 8lM # 8, h D L \$ [ (U t 2x % ̤ l TJ   -0 Ds  =  #  5 ) V 0  k w  LG  ȃ2  a q P3 'J $    GF  ' bP 3 l C 4! T ` > x \s   OM dV  H09 -q E H_4  K $ p  E  V = s 2@ x T\ dY l 4kA ( x  |  o; . (:= ?  V Z Hi' l x {  i> ,{ HX Ux XEP OI  E 0^f * ,5y K a w}nA v*  l  @  X pJ  h -F < j KgA Wv* g,  p /& }E O D (@  4@O .:Xd B_d N]A [ i >x ܇, ),  Ek Q@ m, |a la\ ]M `  -D J  X=x .58\ PP `f> ip {0.z = H%  < 4M  Xqu DWx {  4  TwH jf  LQ L   _d   i 9mq $ 1 F\ Wla iu {00 P <v w    3&  3(S> @p Z`b iYZ   t   cP  < &6p OlJ `,%  ror LgG xj (cP Hq 8 ?  PGF P*  ka " .F =  U`&k }GA   5Cs > |M  4x t= $  5;?ԧ Qm a|p  {2@ B H  SM p Hw X^> *  !1Xs ?L< ^ZP gPA r}D;` ! ? <]E d7   (h pQ - S 9x5 G Vp{ bO l( x[P h8u   2d * X   l&Z J 4=  do< L m =  _L 0G Py y )^E 8Tz FQ, k  dx   O h> x=  & ( +? :) YE&ou ~ <8 x ? 5 b ̥s ).=NM D\G U _lQ { Z k [x = :  XhG x$ <2 = U; F = \ h}Q i q ܲ* N ĩs    L' 41 !xoq '!x 8!RA A! Q!<K h!x0.H ! &!!|mt ! !00 !!hA !hSA !pY "4`F ""/" e= D"pj U"l g"T  y" "Ў  ""Ed " "8C ) ""# # &#|s 9#$x F#&\#` m#z# #X' t (#\ #8. #L # Fy #R #= Ȯ $ (s $$I #$ 7$ H$h  i$$xk; $0 $$\L $8O $dA $HW $$ %2 %_ '%d) :%A%g  U% i%h {%%40 %ıB %9%i %F %w %`=  %paF &pi; &  %&0 4&̶ D&deM R&b> ^&p* n&,F }&  &G &s &@ & &TJ &TZx &'X 1'g1 @'DV~ ]'c'j'V by' N Z ''B  'P '@`  'SA 'PM 'B ' ((Xb> #(T 2(\ K(H@ f(,iA q(hpW (Tw (\r (dNA (c (8] (`[ (V(gG )@:)N #) { 7)O C)T S)0 e)@  t)z })D[ )XE )x )$pA )^> )̧ ) FF )a * * U /*dD  J>*r N*vG ]*lR; j*< z* *Dba *Xa *  **v~ *b +TvQ +\ .++  ?+T+a[ b+P^ q+{++kG ++Mu +t[  ++ +lw +x(x +8Yd ,& ,m 7,s G,( \,% m,,| ~, ,Dj ,N ,,DU,,jA ,D , 0  -QG V-\\t .-8-aP A-\? R-&h-m }--D3U -l> -8  -: -X  --:--K .Df> .. ` ..`&D.|`; O.nA `.P> o..ds .G ..O_ .&.Q> .w  .| .HOM .OS //NM /+/ 9/I J/4  [/|Q X w/  / /  /d /d /d /( 0(RA 0c +0= 80E0C V0]0j0 0  00T/ 0P< 00P  1 1K +14lW ;1t4 J1d` `18. n1| y1j> 1l> 1* 1 L 1 1K 1  1dx 1xcF 2 2&12|q V2i2YZ t2t/ 2 2(5 2G 2(U; 2` 2dd 2 2LK 3eP 33D] *353:?3% Y3(c i3FQ y3dU; 3oW 33a 3У 3ԇ 3( 3|| 44X XwH .4;4J4R4hG _4`z p4jM }4l  40  4  4a 44 4:5<\ U +5;x :5 R5? e5| r5~58= 5ni 5tP 5  55`c6  6@; )6TR <6W Q6R; \6 l6? pl_farcrel_pl_a_erase_pagememset_pl_f_paint_text_stringpl_fillcolorname_pl_s_initializepl_box_rpl_farc_r_pl_i_write_gif_headerXdbeQueryExtension_pl_g_pcl_typeface_infoacospl_ellipse_rXtAppSetFallbackResourcespl_color_r_pl_p_paint_text_stringpng_write_end_pl_g_paint_markerXtOpenDisplay_pl_s_terminatestrchrpl_linewidth_pl_b_paint_pointpl_bezier2rel_r_pl_b_begin_page_xplotterspl_capmod_r_pl_x_maybe_get_new_colormappl_fontname_r_pl_p_set_pen_color_pl_g_create_first_drawing_state_update_bboxpl_boxrelpl_ellarcrel_pl_a_terminate_pl_g_stick_spacing_tables_pl_i_paint_pathXtToolkitInitialize_pl_x_initializepl_fellipserel_pl_r_paint_point_pl_x_draw_elliptic_arcpl_textangle_r_pl_h_hpgl2_maybe_update_font_set_bezier2_bboxpl_savestate_pl_g_paint_text_string_pl_g_flabelwidth_hershey_pl_c_initialize_pl_x_delete_gcs_from_first_drawing_statepl_pentype_r_pl_miFillSppPolypl_arcrel_r_pl_a_end_page_pl_r_maybe_prepaint_segmentspl_frotate_r_cgm_emit_unsigned_integer_known_params_pl_g_paint_point_pl_s_end_pagestrcasecmp_pl_t_path_is_flushable_pl_miDrawRectangles_pl_xmallocXCreatePixmapXFillRectangle_pl_b_paint_path_pl_c_erase_pagepl_fellarc_plotters_mutexpl_setplparampl_bezier3rel_pl_r_set_pen_colorpl_fellipse_pl_f_paint_paths_pl_g_occidental_hershey_glyphs_pl_h_initialize_pl_t_tek_vector_compressed_pl_f_fig_color_pl_miClearPaintedSet_pl_g_get_text_width_pl_c_paint_markerfwritepl_fbezier2_rpl_fbezier2rel_rXFreeGC_pl_g_variable_width_spacings_pl_get_hershey_font_infopl_point_pl_miSetGCDashes_cgm_emit_unsigned_integer_8bitpl_pencolorname_set_page_type_pl_XAffDrawRotString_pl_x_set_fill_color_pl_miZeroPolyArc_rpthread_mutex_unlock_pl_h_paint_pointpl_outfilestrcmp_pl_i_end_page_pl_i_write_gif_imagepl_labelwidthXFillPolygon_pl_r_paint_path_pl_s_erase_pagepl_fmarker_default_plotter_params_pl_h_parse_pen_stringXtDisplay_pl_g_error_pl_f_compute_line_styleXDrawPoint_pl_r_terminate_add_circle_as_lines_pl_x_paint_pointstrncpyforkpl_fbezier2pl_fbezier3_pl_y_begin_page_pl_a_paint_text_string_add_arc_as_lines_pl_i_terminateXChangeWindowAttributes_pl_r_default_plotterpl_fpointpl_circleXtAppProcessEvent_pl_miFillRectangles_internal_pl_g_controlifyXSetFillStyle_pl_q_default_plotter_xplotters_mutexpl_space2_DYNAMIC_pl_b_draw_elliptic_arcsprintf_pl_t_tek_mode_pl_miUniquifyPaintedSet_cgm_emit_integer_pl_i_new_image_pl_p_set_fill_color_add_ellipse_as_ellarcspl_ellipseapplicationShellWidgetClasssscanf_etextpl_fellarcrel_rpl_point_rXtDestroyWidget_pl_m_paint_point_pl_b_draw_elliptic_arc_internal_pl_m_set_attributesXDrawStringfprintfpl_ftranslate_rstrncmp_pl_i_scan_pixelstrcpypl_arc_rpl_fconcat_r_pl_miNewPaintedSet_pl_r_end_page_pl_get_ps_font_infoXCopyGCpl_fmoverel_rXmbufQueryExtensionpl_fmoverelpl_ftextangle_r_pl_f_begin_pageXInternAtom_get_default_plot_parampl_bezier3_r_pl_h_hpgl_maybe_update_fontXSyncpl_bezier2rel_pl_miWideLine_delete_outbuf_new_outbufpl_closepath_r_pl_g_line_stylesXFreeFont_delete_color_name_cache_pl_g_hershey_accented_char_info_pl_t_initialize_pl_g_free_params_in_plotter_pl_t_kermit_bgcolor_escapes_pl_miDeletePaintedSet_pl_miCopyGC_pl_p_paint_path_pl_a_set_pen_colorpl_pointrel_pl_a_paint_paths_add_closepath_pl_g_pcl_font_infosqrt_pl_miFillArcs_message_mutex_pl_g_path_is_flushableasinpl_restorestate_r_pl_miStepDashpng_set_IHDRpl_orientation_pl_m_emit_floatpl_fbezier3relpl_farcpl_fcirclerel_r_pl_h_end_page_pl_f_set_fill_colorXInitThreadspl_newpl_r_pl_c_begin_page_pl_z_terminatestrerror_pl_miNewEllipseCache_add_ellipse_as_lines_pl_get_pcl_font_infofputc_pl_miDrawLines_pl_q_terminate_write_bytes_pl_miFillGeneralPolypl_fbox_rpng_create_info_structXFillArc_pl_g_erase_page_pl_f_paint_path_pl_y_initialize_pl_n_write_ppmpl_newplparams_pl_m_end_pagepl_linedash_pl_h_terminate_pl_f_draw_arc_internal_pl_p_erase_page_pl_m_paint_path_pl_y_default_plotterXMaxRequestSize_add_circlefputspl_linerel_rceil___errno_pl_c_set_pen_color_pl_r_path_is_flushablepl_filltype_rXFreePixmappl_fboxpl_flinerelpl_fillcolorpl_linedash_rpl_label_rpl_flinerel_r_pl_c_paint_path_pl_b_erase_pagepng_create_write_struct_pl_x_push_state_pl_m_paint_marker_pl_miSetPixelMerge2_pl_miSetPixelMerge3_pl_i_initialize_add_bezier3_as_linesXmbufDisplayBuffers_pl_g_hershey_typeface_info_pl_g_render_non_hershey_string_pl_i_start_scan_pl_h_default_plotter_pl_r_paint_paths_default_drawstate_pl_miFillPolygon_reset_plPathpl_havecap_cgm_emit_color_component_add_ellarc_as_bezier3_pl_x_maybe_handle_x_events_pl_xcalloc_libplot_color_to_svg_color_pl_miZeroDashpl_space2_rgetenvXtParseTranslationTable_pl_h_hpgl_pseudocolorpl_ffontsize_pl_g_ps_font_to_cgm_font_idXCreateImage_pl_r_erase_page_pl_s_paint_pathsetjmp_cgm_emit_indexmemcpy_pl_g_render_simple_stringpl_endsubpath_rpl_label_pl_c_paint_point_pl_r_begin_pagepl_pointrel_r_pl_t_tek_move_clip_line_pl_n_maybe_output_image_pl_y_terminate_pl_miDrawRectangles_internalpl_fbezier2rel_pl_c_set_fill_color_pl_t_set_attributes_pl_g_fixed_width_spacings_pl_h_maybe_switch_to_hpgl_pl_f_draw_ellipse_internal_pl_h_set_pen_colorpl_erase_r_pl_p_terminatepl_fline_truecenter_pl_b_paint_paths_pl_g_draw_hershey_stroke_old_api_global_plotter_params_pl_mi_xmallocpl_fellarc_r_pl_c_set_attributespl_fmiterlimit_r_pl_miSetGCPixels_pl_s_paint_point_GLOBAL_OFFSET_TABLE__pl_h_maybe_switch_from_hpgl_pl_i_delete_image_add_lineXdbeFreeVisualInfo_pl_g_terminatelocaltimeXtAppCreateShell_pl_t_default_plotter_pl_f_retrieve_fontpl_colorname_pl_i_draw_elliptic_arc_2pl_colorname_rXtCreateApplicationContextpl_fcirclerel_pl_h_set_position_pl_miDrawPoints_internalXGetGCValues_codestring_len_pl_a_paint_pathpl_fscale_pl_i_draw_elliptic_arc_pl_p_initialize_pl_n_default_plotter_pl_miDrawLines_internalpl_flabelwidth_r_pl_x_paint_paths_pl_g_draw_hershey_glyphpl_linerel_pl_g_pop_statepl_fpointrel_pl_miCopyCanvasgmtime_pl_m_emit_op_code_pl_g_paint_pathspl_fpointrel_r_pl_g_begin_pagepl_fspace_r_pl_t_paint_point_pl_c_end_page_pl_m_path_is_flushable_pl_g_default_plotter_add_box_as_lines_set_ellipse_bbox_pl_miAddSpansToPaintedSet_pl_g_hershey_font_infopl_farcrel_r_add_arc_as_bezier3pl_deletepl_pl_t_end_pagepl_flinewidth_rpl_cont_r_pl_p_emit_common_attributesXFreepow_pl_i_paint_point_pl_mi_xrealloc_pl_g_draw_hershey_string_pl_t_kermit_fgcolor_escapes_pl_m_paint_pathspl_copyplparamspl_ellarc_pl_x_add_gcs_to_first_drawing_statepl_fscale_rpl_fillmod_pl_x_select_xlfd_font_carefullyXmbufGetVersionpl_fellipse_rXGetSubImage_pl_h_paint_pathspl_fcontpl_bgcolorXTextWidth_pl_g_copy_params_to_plotter_pl_f_erase_page_pl_g_paint_pathpl_ffontname_write_bytepl_bgcolor_r_add_ellarc_as_linesfmod_pl_x_terminate_cgm_emit_string_pl_x_select_font_carefully_write_string_pl_miWideDash_add_ellarcpl_line_rpl_openpl_rpl_fcontrel_cgm_emit_pointsXSetFont_pl_x_set_pen_color_bbox_of_outbuf_pl_f_terminate_pl_m_emit_integer_pl_a_begin_page_xatan2_pl_s_default_plotter_pl_miNewGCXVisualIDFromVisualXDrawArc_pl_g_variable_width_katakana_spacingsXClearArea_pl_g_maybe_replace_arcpl_ffontsize_r_add_circle_as_bezier3s_pl_r_regis_move_pl_g_delete_first_drawing_stateXtShellStringspl_flinedash_pl_b_delete_image_add_bezier2_add_bezier3pl_flabelwidth_pl_g_warningXSetDashes_pl_b_draw_elliptic_arc_2_pl_g_stick_typeface_infopl_fspace2_pl_t_kermit_stdcolors_set_line_join_bboxXGetAtomNamepl_linemodpl_moverel_rpl_fbezier3_rXDrawRectangle_pl_b_default_plotter_pl_p_idraw_stdshadings_pl_b_end_page_pl_g_flush_plotter_outstreams_pl_a_default_plottercloseXSetForeground_pl_micomputeWAET_pl_s_set_matrix_pl_a_set_attributes_pl_g_maybe_prepaint_segmentspng_get_error_ptr_cgm_emit_pointpl_fcircle_rfflush_pl_h_paint_text_stringctimepng_write_infopl_arc_pl_s_begin_page_rle_init_pl_p_compute_idraw_bgcolor_pl_x_set_bg_color_pl_h_set_hpgl_pen_pl_xreallocpl_fellarcrelselect_pl_x_paint_text_stringfabsXGetFontPropertyXSetBackgroundpl_marker_pl_g_cgm_font_properties_pl_z_maybe_output_imagepl_erase_pl_m_emit_terminator_add_ellipsememmove_pl_n_terminate_pl_XAffDrawAffStringpl_bgcolorname_r_pl_p_paint_point_pl_f_fig_stdcolors_pl_i_set_fill_color_pl_r_set_attributes_update_buffer_by_added_bytes_pl_q_initialize_pl_p_begin_pagepl_color_pl_n_write_pbm_pl_miSetCanvasTexture_pl_p_idraw_stdcolornames_pl_m_default_plotterkill_pl_mi_xcalloc_merge_pathspl_fillcolorname_rXdbeAllocateBackBufferNamepl_movepl_cont_pl_h_begin_pagepl_flinewidthXtParentXtRealizeWidget_pl_g_alabel_hershey_pl_g_push_state_grayscale_approx_pl_s_paint_paths_pl_m_emit_string_pl_g_cgm_font_id_to_ps_fontXtAppMainLooppl_fellipserel_r_pl_m_begin_page_pl_x_get_text_widthlabelWidgetClassXtStrings_angle_of_arc_matrix_product_pl_t_set_bg_colorpl_closepl_r_pl_i_default_plotter_pl_a_initializepng_set_tRNSpl_havecap_r_pl_x_retrieve_font_pl_a_set_fill_color_cgm_emit_command_headerpl_flushpl_rpl_deletepl_r_add_bezier2_as_lines_pl_miFreeStoragepl_fmove_rpl_alabel_r_pl_i_set_pen_color_pl_i_erase_page_pl_x_draw_elliptic_arc_internalXtToolkitThreadInitializepl_restorestatepl_pencolorname_rXdbeGetVisualInfo_pl_miDeleteGCpl_space_r_pl_miCreateETandAET_set_bezier3_bboxpl_fmarker_r_bbox_of_outbufs_pl_f_initialize_pl_r_set_bg_colorperror_pl_g_retrieve_font_pl_miInsertionSort_pl_c_paint_pathsXmbufCreateBuffers_freeze_outbuf_rle_do_pixel_plotters_lenpl_orientation_rpl_circle_r_pl_h_set_font_pl_x_pop_statepl_fmiterlimitpl_openpl_pl_g_ps_typeface_info_update_buffer_pl_n_write_pgmpl_ftextanglepl_fontsize_pl_m_terminatepl_circlerel_rpl_linemod_rpl_deleteplparams_pl_t_set_pen_color_pl_f_draw_box_internal_pl_t_maybe_prepaint_segmentspl_ellipserelpl_fconcatpng_destroy_write_struct_add_ellipse_as_bezier3spl_savestate_r_cgm_emit_command_terminator__iobstrlen_rle_terminate_pl_y_erase_pageXtSetValues_pl_h_set_attributespl_fillmod_r_pl_mi_libxmi_verpl_contrel_pl_q_maybe_switch_from_hpglpl_fpoint_rXAllocColorXGetGeometrypl_fontnamepl_fillcolor_r_pl_h_set_hpgl_fill_type_cgm_emit_real_fixed_pointpl_moverel_pl_miDrawArcs_r_internal_add_moveto_compute_ndc_to_device_mappl_alabel_pl_miloadAET_string_to_color_pl_b_maybe_output_image_edatapl_line_xplotters_len_pl_t_erase_page_pl_f_set_pen_colorpl_boxrel_r_matrix_inverse_pl_f_paint_pointpl_ffontname_r_add_arc_pl_h_set_hpgl_pen_type_pl_t_begin_page_pl_m_initialize_pl_miDrawArcs_rpl_filltype_pl_i_paint_pathspl_fcontrel_rpl_bezier2_r_pl_c_paint_text_string_pl_miQuickSortSpansY_pl_y_end_page_pl_miPolyArc_r_delete_plPathpl_closepath_get_plot_param_pl_i_new_color_index_pl_miFillPolygon_internalpl_ellarcrel_r_pl_x_draw_elliptic_arc_2free_pl_s_paint_text_string_pl_h_hpgl_shaded_pseudocolor_new_plPath_pl_miSetGCAttribs_pl_r_initializeXCopyColormapAndFreepl_fmarkerrel_pl_g_set_fontXCopyArea_pl_g_ps_font_infopl_spacefloorpl_selectpl_pl_y_maybe_get_new_colormap_pl_c_terminate_pl_miCopyPaintedSetToCanvasXtGetValuespl_fboxrel_pl_p_default_plotter_add_circle_as_ellarcspl_bezier3rel_r_pl_r_set_fill_color_pl_t_tek_vector_pl_i_begin_page_pl_z_initialize_pl_n_write_pnm_pl_miDeleteCanvasXtWindow_pl_g_oriental_hershey_glyphspl_pencolor_pl_x_set_attributes_pl_g_stick_kerning_tablespl_box_pl_miSetGCAttribXDrawLinepl_fmove_pl_h_paint_path_pl_z_default_plotter_pl_x_retrieve_colorexitpl_outfile_rpl_parampl_pl_p_end_page_pl_b_initializepl_libplot_verXCreateGCpl_libplot_error_handlerXtAppAddActions_matrix_normpl_joinmodXPutImage_pl_miNewCanvas_pl_c_default_plotterpl_flushpl_pl_miDrawPointspl_bgcolornameXdbeSwapBuffers_vscalepl_marker_rXFlush_cgm_emit_real_floating_point_pl_f_default_plotterpl_capmod_pl_h_erase_page_add_boxpl_bezier2pl_bezier3XSetTSOriginpl_arcrelXSetStipplepl_fontsize_r_pl_m_erase_page_pl_x_paint_path_pl_y_set_data_for_quitting_pl_g_end_page_pl_g_initialize_set_common_mi_attributes_pl_i_set_bg_color_pl_g_paint_text_string_with_escapespl_pencolor_r_pl_a_paint_pointpl_circlerel_pl_miFillConvexPolypl_contrel_rXTextExtentspl_fbezier3rel_rstrcatXtAppPending_pl_i_draw_elliptic_arc_internal_pl_p_idraw_stdcolorswaitpid_create_color_name_cache_matrix_sing_valspng_set_interlace_handling_pl_m_paint_path_internal_pl_x_end_page_set_line_end_bboxpl_fsetmatrix_rpl_linewidth_r_pl_miSetGCMiterLimit_reset_outbufpl_fline_rpl_pentypepl_textangle_pl_t_terminate_pl_x_path_is_flushablepl_flinedash_r_pl_miSetCanvasStipple_pl_x_erase_pagepl_fsetmatrixpl_frotate_pl_p_paint_paths_pl_x_default_plotter_pl_m_paint_text_string_with_escapespthread_mutex_lockpl_fcircle_pl_i_write_gif_trailer_pl_m_maybe_prepaint_segments_pl_b_terminatepl_markerrel_rpl_endpathpl_fcont_rpl_fspace_pl_x_begin_pagepl_newplpl_ftranslatepng_init_iopl_fboxrel_rXDrawLines_plotters_PROCEDURE_LINKAGE_TABLE__pl_b_new_imagepl_fmarkerrel_rpl_endsubpath_pl_miFillRectanglespng_write_rows_pl_p_fellipse_internal_flatten_path_pl_q_maybe_switch_to_hpgl_pl_miZeroLine_pl_miDeleteEllipseCacheXChangeGCpl_ellipserel_rpng_set_textXLoadQueryFontlongjmppl_markerrel_pl_n_initializepl_fspace2_r_pl_x_maybe_prepaint_segments_pl_f_fig_line_style_pl_f_fig_join_stylepl_ellarc_rXtCreateManagedWidgetpl_endpath_rpl_libplot_warning_handler_pl_y_maybe_handle_x_events_cgm_emit_enum_pl_get_stick_font_info_pl_x_flush_outputpl_joinmod_rXFreeColorspl_move_r_pl_g_draw_hershey_penup_stroke_pl_miFillArcs_internal_pl_f_fig_cap_styleXdbeDeallocateBackBufferName_pl_g_stick_font_info_pl_g_flush_output_pl_f_end_page_pl_c_set_bg_color_pl_h_set_fill_colorpl_closeplpl_labelwidth_r_pl_i_write_short_intlibm.so.2SUNW_1.1libc.so.1SUNW_0.9libXaw.so.7libXmu.so.6libXt.so.6libSM.so.6libICE.so.6libXext.so.0libX11.so.6libsocket.so.1libnsl.so.1libpng14.so.14libz.solibplot.so.2/usr/local/lib6 '= 66(= 6t55;5-5,66$68s848|8T01`0ld0:h0>2 2E2 22r222=22$2L33D3H33F3>33355 54447p8t8X0W`:h:p:x::::::::::::::::;;;; ;(;0;8;@;H;P;X;`;h;p;x;;;;;;;;;;;;;;;;;<<<< <(<0<8<@<H<P<X<`<h<p<x<<<<<<<<<<<<<<<<<==== =(=0=8=@=H=P=X=`=h=p=x=================>>>> >(>0>8>@>H>P>X>`>h>p>x>>>>>>>>>>>>>>>>>???? ?(?0?8?@?H?P?X?`?h?p?x?????????????????@@@@ @(@0@8@@@H@P@X@`@h@p@x@@@@@@@@@@@@@@@@@AAAA A(A0A8A@AHAPAXA`AhApAxAAAAAAAAAAAAAAAAABBBB B(B0B8B@BHBPBXB`BhBpBxBBBBBBBBBBBBBBBBBCCCC C(C0C8C@CHCPCXC`ChCpCxCCCCCCCCCCCCCCCCCDDDD D(D0D8D@DHDPDXD`DhDpDxDDDDDDDDDDDDDDDDDEEEE E(E0E8E@EHEPEXE`EhEpExEEEEEEEEEEEEEEEEEFFFF F(F0F8F@FHFPFXF`FhFpFxFFFFFFFFFFFFFFFFFGGGG G(G0G8G@GHGPGXG`GhGpGxGGGGGGGGGGGGGGGGGHHHH H(H0H8H@HHHPHXH`HhHpHxHHHHHHHHHHHHHHHHHIIII I(I0I8I@IHIPIXI`IhIpIxIIIIIIIIIIIIIIIIIJJJJ J(J0J8J@JHJPJXJ`JhJpJxJJJJJJJJJJJJJJJJJKKKK K(K0K8K@KHKPKXK`KhKpKxKKKKKKKKKKKKKKKKKLLLL L(L0L8L@LHLPLXL`LhLpLxLLLLLLLLLLLLLLLLLMMMM M(M0M8M@MHMPMXM`MhMpMxMMMMMMMMMMMMMMMMMNNNN N(N0N8N@NHNPNXN`NhNpNxNNNNNNNNNNNNNNNNNOOOO O(O0O8O@OHOPOXO`OhOpOxOOOOOOOOOOOOOP PP$P0P> >d3>tZ>d>T>D>>>TE>l>4>$>>` h3xZhXHXEl8( 0`o o ol3o|Zolo\oLooo\Eolo<o,oo o0o@c4XcLcWG CCC<<<  } J     m     03v 3$3(3|,3tD3>H3PP3k@Z0Z4Zr8Z*tEt P}~ tGt P~tGt P~$tG t PN0GEEE{~0tGt P ux3e_^[ÐUSV[Û h h0VNUB+ȋ3+ȁBFBFB F BFBFBFBFB F B$F$B(F(B,F,B0F0B4F4B8F8B8>u 6uuu u E䋋 ~3Eȃ>2E@E;|PUQOȍ } EЋ06E;|OE+ǃE܋E+E; E܋E+EЃE̋E+E; E̋}܅u EEЋFE;|dEHE;u}Gʋ;u~3|(Eԃ3҉QQQ QQ;~;uF;u~ EԋEԉ UEȉe_^[ÐUSVW [ E|7 ;}- t 3~ 9>t@;|􉋸  Pe_^[ÐUSV[ç u|X; }P Ƌt?; t P 30 P+ XPe^[ÐUS[ $t uЃuP( Pe[US[ý u(uu u e[ÐUS[y uuuuuu u t e[ÐUS[) uuuuuu u 4 e[ÐUS[ uDuuuuu u e[ÐUS[É uuuuuu u e[ÐUS[9 u u$u uuuuu u n0e[ÐUS[ uP u$u uuuuu u *0e[ÐUS[Ñ uuu u e[ÐUS[M uu e[ÐUS[ ux uuu u e[ÐUS[ u0 uuu u V e[ÐUS[} uu 'e[ÐUS[= uuu u e[ÐUS[ uduu u e[ÐUS[õ u