OSDN Git Service

Add gnuplot as util/bin
authorTakuo Yasunaga <yasunaga@bio.kyutech.ac.jp>
Tue, 5 Aug 2014 02:23:13 +0000 (11:23 +0900)
committerTakuo Yasunaga <yasunaga@bio.kyutech.ac.jp>
Tue, 5 Aug 2014 02:23:13 +0000 (11:23 +0900)
At present, we are trying to get utilities by wget/curl.

42 files changed:
util/X86MAC64/bin/gnuplot [new file with mode: 0755]
util/X86MAC64/libexec/gnuplot/4.6/gnuplot_x11 [new file with mode: 0755]
util/X86MAC64/share/emacs/site-lisp/gnuplot-gui.el [new file with mode: 0644]
util/X86MAC64/share/emacs/site-lisp/gnuplot-gui.elc [new file with mode: 0644]
util/X86MAC64/share/emacs/site-lisp/gnuplot.el [new file with mode: 0644]
util/X86MAC64/share/emacs/site-lisp/gnuplot.elc [new file with mode: 0644]
util/X86MAC64/share/gnuplot/4.6/PostScript/8859-1.ps [new file with mode: 0644]
util/X86MAC64/share/gnuplot/4.6/PostScript/8859-15.ps [new file with mode: 0644]
util/X86MAC64/share/gnuplot/4.6/PostScript/8859-2.ps [new file with mode: 0644]
util/X86MAC64/share/gnuplot/4.6/PostScript/8859-9.ps [new file with mode: 0644]
util/X86MAC64/share/gnuplot/4.6/PostScript/aglfn.txt [new file with mode: 0644]
util/X86MAC64/share/gnuplot/4.6/PostScript/cp1250.ps [new file with mode: 0644]
util/X86MAC64/share/gnuplot/4.6/PostScript/cp1251.ps [new file with mode: 0644]
util/X86MAC64/share/gnuplot/4.6/PostScript/cp437.ps [new file with mode: 0644]
util/X86MAC64/share/gnuplot/4.6/PostScript/cp850.ps [new file with mode: 0644]
util/X86MAC64/share/gnuplot/4.6/PostScript/cp852.ps [new file with mode: 0644]
util/X86MAC64/share/gnuplot/4.6/PostScript/koi8r.ps [new file with mode: 0644]
util/X86MAC64/share/gnuplot/4.6/PostScript/koi8u.ps [new file with mode: 0644]
util/X86MAC64/share/gnuplot/4.6/PostScript/prologue.ps [new file with mode: 0644]
util/X86MAC64/share/gnuplot/4.6/PostScript/utf-8.ps [new file with mode: 0644]
util/X86MAC64/share/gnuplot/4.6/app-defaults/Gnuplot [new file with mode: 0644]
util/X86MAC64/share/gnuplot/4.6/colors_default.gp [new file with mode: 0644]
util/X86MAC64/share/gnuplot/4.6/colors_mono.gp [new file with mode: 0644]
util/X86MAC64/share/gnuplot/4.6/colors_podo.gp [new file with mode: 0644]
util/X86MAC64/share/gnuplot/4.6/gnuplot.gih [new file with mode: 0644]
util/X86MAC64/share/gnuplot/4.6/gnuplot.pdf [new file with mode: 0644]
util/X86MAC64/share/gnuplot/4.6/gnuplotrc [new file with mode: 0644]
util/X86MAC64/share/gnuplot/4.6/js/README [new file with mode: 0644]
util/X86MAC64/share/gnuplot/4.6/js/canvasmath.js [new file with mode: 0644]
util/X86MAC64/share/gnuplot/4.6/js/canvastext.js [new file with mode: 0644]
util/X86MAC64/share/gnuplot/4.6/js/gnuplot_common.js [new file with mode: 0644]
util/X86MAC64/share/gnuplot/4.6/js/gnuplot_dashedlines.js [new file with mode: 0644]
util/X86MAC64/share/gnuplot/4.6/js/gnuplot_mouse.css [new file with mode: 0644]
util/X86MAC64/share/gnuplot/4.6/js/gnuplot_mouse.js [new file with mode: 0644]
util/X86MAC64/share/gnuplot/4.6/js/gnuplot_svg.js [new file with mode: 0644]
util/X86MAC64/share/gnuplot/4.6/js/grid.png [new file with mode: 0644]
util/X86MAC64/share/gnuplot/4.6/js/help.png [new file with mode: 0644]
util/X86MAC64/share/gnuplot/4.6/js/nextzoom.png [new file with mode: 0644]
util/X86MAC64/share/gnuplot/4.6/js/previouszoom.png [new file with mode: 0644]
util/X86MAC64/share/gnuplot/4.6/js/textzoom.png [new file with mode: 0644]
util/X86MAC64/share/gnuplot/4.6/lua/gnuplot-tikz.lua [new file with mode: 0644]
util/X86MAC64/share/man/man1/gnuplot.1 [new file with mode: 0644]

diff --git a/util/X86MAC64/bin/gnuplot b/util/X86MAC64/bin/gnuplot
new file mode 100755 (executable)
index 0000000..dc3e9c6
Binary files /dev/null and b/util/X86MAC64/bin/gnuplot differ
diff --git a/util/X86MAC64/libexec/gnuplot/4.6/gnuplot_x11 b/util/X86MAC64/libexec/gnuplot/4.6/gnuplot_x11
new file mode 100755 (executable)
index 0000000..af30dd6
Binary files /dev/null and b/util/X86MAC64/libexec/gnuplot/4.6/gnuplot_x11 differ
diff --git a/util/X86MAC64/share/emacs/site-lisp/gnuplot-gui.el b/util/X86MAC64/share/emacs/site-lisp/gnuplot-gui.el
new file mode 100644 (file)
index 0000000..8552050
--- /dev/null
@@ -0,0 +1,1750 @@
+;;;; gnuplot-gui.el -- GUI interface to setting options in gnuplot-mode
+
+;; Copyright (C) 1998-2000 Bruce Ravel
+
+;; Author:     Bruce Ravel <ravel@phys.washington.edu>
+;; Maintainer: Bruce Ravel <ravel@phys.washington.edu>
+;; Created:    19 December 1998
+;; Updated:    16 November 2000
+;; Version:    (same as gnuplot.el)
+;; Keywords:   gnuplot, plotting, interactive, GUI
+
+;; This file is not part of GNU Emacs.
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; This program is free software; you can 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.
+;;
+;; This lisp script 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.
+;;
+;; Permission is granted to distribute copies of this lisp script
+;; provided the copyright notice and this permission are preserved in
+;; all copies.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with this program; if not, you can either send email to this
+;; program's maintainer or write to: The Free Software Foundation,
+;; Inc.; 675 Massachusetts Avenue; Cambridge, MA 02139, USA.
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; send bug reports to the authors (ravel@phys.washington.edu)
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;; Commentary:
+;;
+;; This file provides a graphical user interface to setting arguments
+;; to gnuplot commands.  Positioning point near a command and invoking
+;; `gnuplot-gui-set-options-and-insert' (C-c C-c or shift-mouse-2)
+;; will pop open a frame with widgets for setting the various
+;; arguments appropriate the the item that was near point.  The goal
+;; is to provide point-and-click functionality to gnuplot-mode.
+;;
+;; gnuplot-gui is designed for gnuplot 3.7, but since much of 3.7 is
+;; backward compatible to 3.5, it will work well for that version
+;; also.
+;;
+;; gnuplot-gui.el was developed using Emacs 19.34 and is known to work
+;; on Emacs 20.x and XEmacs 20.x.  I do not know what is the earliest
+;; version for which it will work, but I make no guarantees for
+;; versions before 19.34.  Note that this makes heavy use of the
+;; widget package, so this will not work on Emacs 19.34 unless you
+;; install the widget package separately.
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;; To do:
+;;
+;; Widgets I need:
+;; -- 'position: two or three comma separated numbers used to denote a
+;;               position or a tic start/end/increment (see arrow,
+;;               need a prefix)
+;; -- 'modifier: colon separated fields used for datafile modifiers
+;;
+;; command types which are currently unsupported or contain mistakes
+;; -- unsupported: cntrparam
+;; -- plot, splot, fit: rather lame
+;; -- label: position information missing
+;; -- label: font string handled in overly simple manner
+;; -- hidden3d: not really suited to 'list, but all options are exclusive...
+;; -- pointstyle argument to "set label"
+;;
+;; overall:
+;; -- continuation lines (ugh!)
+;; -- multiple frames end up displaying same window after setting options
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; Code:
+
+(require 'gnuplot)
+(eval-and-compile
+  (condition-case ()
+      (progn
+       (require 'widget)
+       (require 'wid-edit))
+    (error nil)))
+(require 'cl)
+(eval-when-compile                     ; suppress some compiler warnings
+  (defvar gnuplot-xemacs-p nil)
+  (defvar gnuplot-quote-character nil)
+  (defvar gnuplot-info-display nil)
+  (defvar gnuplot-mode-map nil))
+
+;; (eval-when-compile
+;;   (require 'wid-edit))
+
+(eval-and-compile                      ; I need this!
+  (if (fboundp 'split-string)
+      ()
+    (defun split-string (string &optional pattern)
+      "Return a list of substrings of STRING which are separated by PATTERN.
+If PATTERN is omitted, it defaults to \"[ \\f\\t\\n\\r\\v]+\"."
+      (or pattern
+         (setq pattern "[ \f\t\n\r\v]+"))
+      ;; The FSF version of this function takes care not to cons in case
+      ;; of infloop.  Maybe we should synch?
+      (let (parts (start 0))
+       (while (string-match pattern string start)
+         (setq parts (cons (substring string start (match-beginning 0)) parts)
+               start (match-end 0)))
+       (nreverse (cons (substring string start) parts)))) ))
+
+
+\f
+;;; customizable variables
+
+(defgroup gnuplot-gui nil
+  "Graphical interface to setting arguments in gnuplot scrips."
+  :prefix "gnuplot-gui-"
+  :group 'gnuplot)
+
+(defcustom gnuplot-gui-popup-flag nil
+  "*Non-nil means to open arguments pop-ups automatically.
+This would be done after menu insertion of Gnuplot commands."
+  :group 'gnuplot-gui
+  :type 'boolean)
+
+(defvar gnuplot-gui-frame nil
+  "Frame used to hold the buffer for setting options.")
+(defcustom gnuplot-gui-frame-plist
+  '(height 18 width 65 border-width 0
+          user-position t top 150 left 150
+          internal-border-width 0 unsplittable t
+          default-toolbar-visible-p nil has-modeline-p nil
+          menubar-visible-p nil)
+  "Frame plist for the input run-time display frame in XEmacs."
+  :type '(repeat (group :inline t
+                       (symbol :tag "Property")
+                       (sexp :tag "Value")))
+  :group 'gnuplot-gui)
+(defcustom gnuplot-gui-frame-parameters
+  '((height . 18)
+    (width . 65)
+    (user-position . t)
+    (top . 150)
+    (left . 150)
+    (border-width . 0)
+    (menu-bar-lines . 0)
+    (unsplittable . t))
+  "Frame parameters for the input run-time display frame in Emacs."
+  :group 'gnuplot-gui
+  :type '(repeat (sexp :tag "Parameter:")))
+
+(defcustom gnuplot-gui-fontname-list
+  '(" " "\"Helvetica\"" "\"Times-Roman\"")
+  "List of known font names.
+These *must* be quoted, like so \"\\\"Helvetica\\\"\".  This allows
+for fonts with names like \"\\\"Arial Bold Italic\\\"\" to be treated
+as single entries in the menu-buttons.  And it is really important that
+the first entry in the list be a blank string."
+  :group 'gnuplot-gui
+  :type '(repeat (string :tag "Font name:")))
+
+;; some global variables
+(defvar gnuplot-current-frame nil)
+(defvar gnuplot-current-buffer nil)
+(defvar gnuplot-current-buffer-point nil)
+(defvar gnuplot-gui-alist nil)
+(defvar gnuplot-gui-current-string nil)
+
+\f
+;;; various tools for handling data structures and text in the buffer
+
+;; tools for accessing the elements of the lists in `gnuplot-gui-all-types'
+(defsubst gnuplot-gui-type-tag     (obj) (elt obj 0))
+(defsubst gnuplot-gui-type-symbol  (obj) (elt obj 1))
+(defsubst gnuplot-gui-type-default (obj) (elt obj 2))
+(defsubst gnuplot-gui-type-prefix  (obj) (elt obj 3)) ; also 'range seperator
+(defsubst gnuplot-gui-type-fourth  (obj) (elt obj 4))
+(defsubst gnuplot-gui-type-list    (obj) (cddr obj))
+
+(defun gnuplot-this-word ()
+  "Return the word under point."
+  (let ((begin (save-excursion (beginning-of-line) (point-marker)))
+       (end   (save-excursion (end-of-line)       (point-marker))))
+    (save-excursion
+      (or (looking-at "\\<") (= (current-column) 0) (forward-word -1))
+      (if (> (point) begin) (setq begin (point-marker)))
+      (forward-word 1)
+      (if (> (point) end) (goto-char end))
+      (buffer-substring-no-properties begin (point)))))
+
+
+\f
+;;; data structures containing regarding options in Gnuplot 3.7
+
+;; various constants used for options that take the same sorts of arguments
+(defconst gnuplot-gui-mtics-list
+  '(("FREQUENCY"   'number " ")
+    ("DEFAULT"     'list " " "default")))
+(defconst gnuplot-gui-data-list
+  '(("DATA TYPE"   'list " " "time")))
+(defconst gnuplot-gui-label-list
+  '(("LABEL"       'string " ")
+    ("POSITION"    'position " " "" 2)
+    ("FONTNAME"    'list " " gnuplot-gui-fontname-list)
+    ("FONTSIZE"    'fontsize " ")))
+(defconst gnuplot-gui-range-list
+  '(("RANGE"       'range (" " . " ") ":")
+    ("REVERSE"     'list " " "reverse" "noreverse")
+    ("WRITEBACK"   'list " " "writeback" "nowriteback")))
+(defconst gnuplot-gui-tics-list
+  '(("WHERE"       'list " " "axis" "border")
+    ("MIRROR"      'list " " "mirror" "nomirror")
+    ("ROTATE"      'list " " "rotate" "norotate")
+    ("SERIES"      'position " " "" 3)
+    ("LABEL ARRAY" 'labels () )))
+(defconst gnuplot-gui-zeroaxis-list
+  '(("LINETYPE"    'number " ")))
+
+(defvar gnuplot-gui-terminal-types nil
+  "Associated list of terminal descriptions.
+See the doc-string for `gnuplot-gui-all-types'.")
+(setq gnuplot-gui-terminal-types
+      (list (cons "aifm"
+                 '(("COLOR"     'list " " "monochrome" "gray" "color")
+                   ("FONTNAME"  'list " " gnuplot-gui-fontname-list)
+                   ("FONTSIZE"  'fontsize " ")))
+           (cons "cgm"
+                 '(("MODE"      'list   " " "landscape" "portrait" "default")
+                   ("COLOR"     'list   " " "color" "monochrome")
+                   ("ROTATION"  'list   " " "rotate" "norotate")
+                   ("WIDTH"     'number " " "width")
+                   ("LINEWIDTH" 'number " " "linewidth")
+                   ("FONTNAME"  'list   " " "\"Arial\"" "\"Arial Italic\""
+                    "\"Arial Bold\"" "\"Arial Bold Italic\""
+                    "\"Times Roman\"" "\"Times Roman Italic\""
+                    "\"Times Roman Bold\"" "\"Times Roman Bold Italic\""
+                    "\"Helvetica\"" "\"Roman\"")
+                   ("FONTSIZE"  'fontsize " ")))
+           (cons "corel"
+                 '(("COLOR"            'list " " "default" "color" "monochrome")
+                   ("FONTNAME"         'list " " "\"SwitzerlandLight\""
+                    "\"Helvetica\"" "\"Times-Roman\"")
+                   ("FONTSIZE "        'number " ")
+                   ("X-SIZE   "        'number " ")
+                   ("Y-SIZE   "        'number " ")
+                   ("LINEWIDTH"        'number " ")))
+           (cons "dumb"
+                 '(("LINEFEED"         'list   " " "feed" "nofeed")
+                   ("X-SIZE"           'number " ")
+                   ("Y-SIZE"           'number " ")))
+           (cons "emf"
+                 '(("COLOR"            'list " " "color" "monochrome")
+                   ("LINE"             'list " " "solid" "dashed")
+                   ("FONTNAME"         'string " ")
+                   ("FONTSIZE"         'number " ")))
+           (cons "emtex"
+                 '(("FONTNAME"         'list     " " "courier" "roman")
+                   ("FONTSIZE"         'fontsize " ")))
+           (cons "fig"
+                 '(("COLOR"            'list   " " "color" "monochrome")
+                   ("FRAMESIZE"        'list   " " "small" "big")
+                   ("POINTSMAX"        'number " " "pointsmax")
+                   ("ORIENTATION"      'list   " " "landscape" "portrait")
+                   ("UNITS"            'list   " " "metric" "inches")
+                   ("FONT SIZE"        'number " " "fontsize")
+                   ("SIZE"             'pair   (" " . " ") "size")
+                   ("LINE THICKNESS"   'number " " "thickness")
+                   ("LAYER DEPTH"      'number " " "depth")))
+           (cons "hp500c"
+                 '(("RESOLUTION"       'list " " "75" "100" "150" "300")
+                   ("COMPRESSION"      'list " " "rle" "tiff")))
+           (cons "hpgl"
+                 '(("PENS"             'number " ")
+                   ("EJECT"            'list   " " "eject")))
+           (cons "hpdj"
+                 '(("RESOLUTION"       'list " " "75" "100" "150" "300")))
+           (cons "hpljii"
+                 '(("RESOLUTION"       'list " " "75" "100" "150" "300")))
+           (cons "hppj"
+                 '(("FONT"             'list " " "FNT9X17" "FNT5X9" "FNT13X25")))
+           (cons "imagen"
+                 '(("FONT SIZE"        'number " ")
+                   ("LAYOUT"           'list   " " "portrait" "landscape")
+                   ("NUMBER OF GRAPHS" 'range (" " . " ") ",")))
+           (cons "gpic"
+                 '(("X ORIGIN"         'number " ")
+                   ("Y ORIGIN"         'number " " ",")))
+           (cons "latex"
+                 '(("FONTNAME"         'list " " "courier" "roman")
+                   ("FONTSIZE"         'fontsize " ")))
+           (cons "mif"
+                 '(("COLOUR"           'list " " "colour" "monochrome")
+                   ("LINETYPE"         'list " " "polyline" "vectors")))
+           (cons "nec-cp6"
+                 '(("MODE"             'list " " "monochrome" "colour" "draft")))
+           (cons "pbm"
+                 '(("SIZE"      'list " " "small" "medium" "large")
+                   ("COLOR"     'list " " "monochrome" "gray" "color")))
+           (cons "pcl5L"
+                 '(("MODE"      'list " " "landscape" "portrait")
+                   ("FONTNAME"  'list " " "stick" "univers" "cg_times")
+                   ("FONTSIZE"  'fontsize " ")))
+           (cons "png"
+                 '(("SIZE"      'list " " "small" "medium" "large")
+                   ("COLOR"     'list " " "monochrome" "gray" "color")))
+           (cons "postscript"
+                 '(("MODE"      'list " " "landscape" "portrait" "eps" "default")
+                   ("ENHANCED"  'list " " "enhanced" "noenhanced")
+                   ("COLOR"     'list " " "color" "monochrome")
+                   ("SOLID"     'list " " "solid" "dashed")
+                   ("DUPLEXING" 'list " " "defaultplex" "simplex" "duplex")
+                   ("FONTNAME"  'list " " gnuplot-gui-fontname-list)
+                   ("FONTSIZE"  'fontsize " ")))
+           (cons "pslatex"
+                 '(("COLOR"     'list " " "monochrome" "color")
+                   ("DASHED"    'list " " "dashed")
+                   ("ROTATION"  'list " " "rotate" "norotate")
+                   ("AUXFILE"   'list " " "auxfile")))
+           (cons "pstex"
+                 '(("COLOR"     'list " " "monochrome" "color")
+                   ("DASHED"    'list " " "dashed")
+                   ("ROTATION"  'list " " "rotate" "norotate")
+                   ("AUXFILE"   'list " " "auxfile")))
+           (cons "pstricks"
+                 '(("HACK TEXT"        'list " " "hacktext" "nohacktext")
+                   ("PLOT SCALING"     'list " " "nounit" "unit")))
+           (cons "regis"
+                 '(("COLOR DEPTH"      'list "4" "16")))
+           (cons "tgif"
+                 '(("LAYOUT"           'list   " " "portrait" "landscape")
+                   ("NUMBER OF GRAPHS" 'range (" " . " ") ",")
+                   ("LINE TYPE"        'list " " "solid" "dashed")
+                   ("FONTNAME"         'list " " gnuplot-gui-fontname-list)
+                   ("FONTSIZE"         'fontsize " ")))
+           (cons "tpic"
+                 '(("POINTSIZE"        'number " ")
+                   ("LINEWIDTH"        'number " ")
+                   ("INTERVAL "        'number " ")))
+           (cons "vgagl"               ; for pm3d patch (also persist, raise in x11) <MT>
+                 '(("BACKGROUND"       'position  " " "background" 3)
+                   ("INTERPOLATION"    'list " " "uniform" "interpolate")
+                   ("DUMP"             'file " ")
+                   ("MODE"             'string  " " "")))
+           (cons "x11"
+                 '(("RESET"            'list " " "reset")
+                   ("TERMINAL NUMBER"  'number " ")
+                   ("PERSIST"          'list " " "persist" "nopersist")
+                   ("RAISE"            'list " " "raise" "noraise"))) ))
+
+(defvar gnuplot-gui-terminal-list nil)
+(setq gnuplot-gui-terminal-list
+      (append (list " ") (mapcar 'car gnuplot-gui-terminal-types)))
+
+(defvar gnuplot-gui-set-types nil
+  "Associated list of set option descriptions.
+See the doc-string for `gnuplot-gui-all-types'.")
+(setq gnuplot-gui-set-types
+      (list (cons "angles"
+                 '(("UNITS" 'list " " "degrees" "radians")))
+           (cons "arrow"
+                 '(("TAG"       'tag " ")
+                   ("FROM"      'position " " "from" 3)
+                   ("TO"        'position " " "to" 3)
+                   ("HEAD"      'list " " "head" "nohead")
+                   ("LINESTYLE" 'number " " "ls")
+                   ("LINETYPE " 'number " " "lt")
+                   ("LINEWIDTH" 'number " " "lw")))
+           (cons "noarrow"
+                 '(("TAG" 'tag " ")))
+           (cons "autoscale"
+                 '(("AXIS" 'list " " "x" "y" "z" "x2" "y2" "xy"
+                    "xmin" "ymin" "zmin" "x2min" "y2min" "xymin"
+                    "xmax" "ymax" "zmax" "x2max" "y2max" "xymax")))
+           (cons "noautoscale"
+                 '(("AXIS" 'list " " "x" "y" "z" "x2" "y2" "xy"
+                    "xmin" "ymin" "zmin" "x2min" "y2min" "xymin"
+                    "xmax" "ymax" "zmax" "x2max" "y2max" "xymax")))
+           (cons "bar"
+                 '(("SIZE" 'list " " "small" "large")))
+           (cons "border"
+                 '(("BORDER CODE" 'number " ")
+                   ("LINE STYLE"  'list   " " "lines"
+                    "dots" "points" "linespoints")
+                   ("LINESTYLE"   'number " " "ls")
+                   ("LINETYPE"    'number " " "lt")
+                   ("LINEWIDTH"   'number " " "lw")
+                   ))
+           (cons "boxwidth"
+                 '(("WIDTH" 'number " ")))
+           (cons "clabel"
+                 '(("FORMAT" 'format " ")))
+           (cons "clip"
+                 '(("CLIP TYPE" 'list " " "points" "one" "two")))
+           (cons "noclip"
+                 '(("CLIP TYPE" 'list " " "points" "one" "two")))
+           ;;(cons "cntrparam"
+               ;;  '(("INTERPOLATION" 'list " " "linear" "cubicspline" "bspline")
+               ;;    ("POINTS" 'number " " "points")
+               ;;    ("ORDER"  'number " " "order")))
+           (cons "contour"
+                 '(("WHERE"     'list " " "base" "surface" "both")))
+           (cons "dgrid3d"
+                  '(("ROW,COLUMN,NORM" 'position " " "" 3)))
+           (cons "encoding"
+                 '(("ENCODING" 'list " " "default" "iso_8859_1"
+                    "cp850" "cp437")))
+           (cons "format"
+                 '(("AXIS"   'list " " "x" "y" "z" "xy" "x2" "y2")
+                   ("FORMAT" 'format  " ")))
+           (cons "dummy"
+                 '(("VAR 1" 'string " " "")
+                   ("VAR 2" 'string " " ",")))
+           (cons "grid"
+                 '(("XTICS"  'list " " "xtics" "mxtics" "noxtics" "nomxtics")
+                   ("YTICS"  'list " " "ytics" "mytics" "noytics" "nomytics")
+                   ("ZTICS"  'list " " "ztics" "mztics" "noztics" "nomztics")
+                   ("X2TICS" 'list " " "x2tics" "mx2tics" "nox2tics" "nomx2tics")
+                   ("Y2TICS" 'list " " "y2tics" "my2tics" "noy2tics" "nomy2tics")
+                   ("POLAR"  'number " " "polar")
+                   ("MAJOR LINETYPE" 'number " ")
+                   ("MINOR LINETYPE" 'number " ")))
+           (cons "hidden3d"
+                 '(("ALGORITHM" 'list " " "defaults"
+                    "offset"
+                   "nooffset"
+                    ;;"trianglepattern  # bitpattern between 0 and 7"
+                   "trianglepattern 0" "trianglepattern 1"
+                    "trianglepattern 2" "trianglepattern 3"
+                    "trianglepattern 4" "trianglepattern 5"
+                    "trianglepattern 6" "trianglepattern 7"
+                    ;;"undefined        # level between 0 and 3"
+                   "undefined 0" "undefined 1" "undefined 2" "undefined 3"
+                   "noundefined" "altdiagonal" "noaltdiagonal"
+                   "bentover" "nobentover")))
+           (cons "historysize"
+                 '(("SIZE" 'number " ")))
+           (cons "isosamples"
+                 '(("ISO_U LINES" 'number " ")
+                   ("ISO_V LINES" 'number " " ",")))
+           (cons "key"
+                 '(("LOCATION"      'list " " "left" "right" "top" "bottom"
+                                          "outside" "below")
+                   ("POSITION"      'position  " " "" 3)
+                   ("JUSTIFICATION" 'list " " "Left" "Right")
+                   ("REVERSE"       'list " " "reverse" "noreverse")
+                   ("SAMPLE LENGTH" 'number " " "samplen")
+                   ("SPACING"       'number " " "spacing")
+                   ("WIDTH"         'number " " "width")
+                   ("TITLE"         'string " " "title ")
+                   ("BOX LINETYPE"  'number " " "box") ;; linetype data
+                   ("NOBOX"         'list   " " "nobox")))
+           (cons "label"
+                 '(("TAG" 'tag " ")
+                   ("LABEL TEXT" 'string " ")
+                   ("POSITION"   'position " " "at" 3)
+                   ;; first, second, graph, screen
+                   ("JUSTIFICATION" 'list " " "left" "right" "center")
+                   ("ROTATE"        'list " " "rotate" "norotate")
+                   ("FONT"          'string " " "font"))) ;; font "name,size"
+           (cons "nolabel"
+                 '(("TAG"        'tag " ")))
+           (cons "linestyle"
+                 '(("TAG      "  'tag " ")
+                   ("LINE STYLE" 'list " " "boxerrorbars" "boxes"
+                    "boxxyerrorbars" "candlesticks" "dots"
+                    "financebars" "fsteps" "histeps" "impulses"
+                    "lines" "linespoints" "points" "steps" "vector"
+                    "xerrorbars" "xyerrorbars" "yerrorbars")
+                   ("LINETYPE " 'number " " "lt")
+                   ("LINEWIDTH" 'number " " "lw")
+                   ("POINTTYPE" 'number " " "pt")
+                   ("POINTSIZE" 'number " " "ps")))
+           (cons "locale"
+                 '(("LOCALE" 'string " ")))
+           (cons "logscale"
+                 '(("AXIS" 'list " " "x" "y" "z" "xy" "xz" "yz" "xyz"
+                    "x2" "y2")
+                   ("BASE" 'number " ")))
+           (cons "nologscale"
+                 '(("AXIS" 'list " " "x" "y" "z" "xy" "xz" "yz" "xyz"
+                    "x2" "y2")))
+           (cons "mapping"
+                 '(("COORDINATE SYSTEM" 'list " " "cartesian" "spherical"
+                    "cylindrical")))
+                                       ; _margin
+           (cons "bmargin"
+                 '(("BOTTOM MARGIN" 'number " ")))
+           (cons "lmargin"
+                 '(("LEFT MARGIN"   'number " ")))
+           (cons "rmargin"
+                 '(("RIGHT MARGIN"  'number " ")))
+           (cons "tmargin"
+                 '(("TOP MARGIN"    'number " ")))
+
+           (cons "missing"
+                 '(("CHARACTER" 'string " " 1)))
+                                       ; m_tics
+           (cons "mxtics"  gnuplot-gui-mtics-list)
+           (cons "mytics"  gnuplot-gui-mtics-list)
+           (cons "mztics"  gnuplot-gui-mtics-list)
+           (cons "mx2tics" gnuplot-gui-mtics-list)
+           (cons "my2tics" gnuplot-gui-mtics-list)
+
+                                       ; pm3d additions <MT>
+           (cons "mouse"
+                 '(("DOUBLECLICK"     'number " " "doubleclick")
+                   ("ZOOM"            'list   " " "zoomcoordinates" "nozoomcoordinates")
+                   ("POLAR"           'list   " " "polarcoordinates" "nopolarcoordinates")
+                   ("FORMAT"          'string " " "format")
+                   ("CLIPBOARDFORMAT" 'string " " "clipboardformat")
+                   ("MOUSEFORMAT"     'string " " "mouseformat")
+                   ("LABELS"          'list   " " "labels" "nolabels")
+                   ("LABELOPTIONS"    'string " " "labeloptions")
+                   ("ZOOMJUMP"        'list   " " "zoomjump" "nozoomjump")
+                   ("VERBOSE"         'list   " " "verbose" "noverbose")))
+           (cons "palette"
+                 '(("COLOR"       'list     " " "gray" "color")
+                   ("RGBFORMULAE" 'position " " "rgbformulae" 3)
+                   ("PARITY"      'list     " " "positive" "negative")
+                   ("FORMULAE"    'list     " " "nops_allcF" "ps_allcF")
+                   ("MAXCOLORS"   'number   " ")
+                   ("COLOR_BOX"   'list     " " "nocb" "cbdefault" "cbuser")
+                   ("ORIENTATION" 'list     " " "cbvertical" "cbhorizontal")
+                   ("ORIGIN"      'position " " "origin" 2)
+                   ("SIZE"        'position " " "size" 2)
+                   ("BORDER"      'number   " ")
+                   ("NOBORDER"    'list     " " "bdefault" "noborder")))
+           (cons "pm3d"
+                 '(("AT"         'list*  " " "b" "s" "t" "bs" "bt" "st" "bst")
+                   ("SCANS"      'list   " " "scansautomatic" "scansforward" "scansbackward")
+                   ("FLUSH"      'list*  " " "begin" "center" "end")
+                   ("CLIP"       'list   " " "clip1in" "clip4in")
+                   ("ZRANGE"     'range (" " . " ") ":")
+                   ("HIDDEN3D"   'number " ")
+                   ("NOHIDDEN3D" 'list   " " "nohidden3d")
+                   ("FILLING"    'list   " " "transparent" "solid")
+                   ("MAP"        'list   " " "map")))
+
+           (cons "offsets"
+                 '(("LEFT  " 'number " ")
+                   ("RIGHT " 'number " " ",")
+                   ("TOP   " 'number " " ",")
+                   ("BOTTOM" 'number " " ",")))
+           (cons "origin"
+                 '(("X ORIGIN"   'number " ")
+                   ("Y ORIGIN"   'number " " ",")))
+           (cons "output"
+                 '(("FILENAME"   'file " ")))
+           (cons "pointsize"
+                 '(("MULTIPLIER" 'number " ")))
+           (cons "samples"
+                 '(("2D PLOT"    'number " ")
+                   ("3D PLOT"    'number " " ",")))
+           (cons "size"
+                 '(("ASPECT"           'list " " "square" "nosquare"
+                                                 "ratio" "noratio")
+                   ("X-SCALE OR RATIO" 'number " ")
+                   ("Y-SCALE"          'number " " ",")))
+           (cons "style"
+                 '(("DATA TYPE"  'list " " "data" "function")
+                   ("PLOT STYLE" 'list " " "boxerrorbars" "boxes"
+                    "boxxyerrorbars" "candlesticks" "dots"
+                    "financebars" "fsteps" "histeps" "impulses"
+                    "lines" "linespoints" "points" "steps" "vector"
+                    "xerrorbars" "xyerrorbars" "yerrorbars")))
+           (cons "terminal"
+                 '(("TERMINAL TYPE" 'list " " gnuplot-gui-terminal-list)))
+           (cons "tics"
+                 '(("DIRECTION"  'list " " "in" "out")))
+           (cons "ticslevel"
+                 '(("RELATIVE HEIGHT" 'number " ")))
+           (cons "ticscale"
+                 '(("MAJOR" 'number " ")
+                   ("MINOR" 'number " ")))
+           (cons "timestamp"
+                 '(("FORMAT STRING" 'format " ")
+                   ("WHERE"         'list " " "top" "bottom")
+                   ("ROTATE"        'list " " "rotate" "norotate")
+                   ("X-OFFSET"      'number " ")
+                   ("Y-OFFSET"      'number " " ",")
+                   ("FONTNAME"      'list " " gnuplot-gui-fontname-list)))
+           (cons "timefmt"
+                 '(("FORMAT STRING" 'string " ")))
+           (cons "title"
+                 '(("TITLE" 'string " ")))
+           (cons "view"
+                 '(("X-ROTATION" 'number " ")
+                   ("Z-ROTATION" 'number " " ",")
+                   ("SCALE"      'number " " ",")
+                   ("Z-SCALE"    'number " " ",")))
+           ;; ("SCALE" 'position " " "," 4)
+                                       ; _data
+           (cons "xdata"      gnuplot-gui-data-list)
+           (cons "ydata"      gnuplot-gui-data-list)
+           (cons "zdata"      gnuplot-gui-data-list)
+           (cons "x2data"     gnuplot-gui-data-list)
+           (cons "y2data"     gnuplot-gui-data-list)
+                                       ; _label
+           (cons "xlabel"     gnuplot-gui-label-list)
+           (cons "ylabel"     gnuplot-gui-label-list)
+           (cons "zlabel"     gnuplot-gui-label-list)
+           (cons "x2label"    gnuplot-gui-label-list)
+           (cons "y2label"    gnuplot-gui-label-list)
+                                       ; _range, note that the [] syntax for
+                                       ;         the writeback argument is
+                                       ;         not properly supported
+           (cons "xrange"     gnuplot-gui-range-list)
+           (cons "yrange"     gnuplot-gui-range-list)
+           (cons "zrange"     gnuplot-gui-range-list)
+           (cons "x2range"    gnuplot-gui-range-list)
+           (cons "y2range"    gnuplot-gui-range-list)
+           (cons "trange"     gnuplot-gui-range-list)
+           (cons "rrange"     gnuplot-gui-range-list)
+           (cons "urange"     gnuplot-gui-range-list)
+           (cons "vrange"     gnuplot-gui-range-list)
+                                       ; _tics
+           (cons "xtics"      gnuplot-gui-tics-list)
+           (cons "ytics"      gnuplot-gui-tics-list)
+           (cons "ztics"      gnuplot-gui-tics-list)
+           (cons "x2tics"     gnuplot-gui-tics-list)
+           (cons "y2tics"     gnuplot-gui-tics-list)
+                                       ; zeroaxis
+           (cons "zeroaxis"   gnuplot-gui-zeroaxis-list)
+           (cons "xzeroaxis"  gnuplot-gui-zeroaxis-list)
+           (cons "yzeroaxis"  gnuplot-gui-zeroaxis-list)
+           (cons "y2zeroaxis" gnuplot-gui-zeroaxis-list)
+           (cons "x2zeroaxis" gnuplot-gui-zeroaxis-list)
+
+           (cons "zero"
+                 '(("THRESHOLD" 'number " ")))
+           ))
+
+(defvar gnuplot-gui-command-types nil
+  "Associated list of command descriptions.
+See the doc-string for `gnuplot-gui-all-types'.")
+(setq gnuplot-gui-command-types
+      (list (cons "cd"
+                 '(("FILENAME"       'file   " ")))
+           (cons "call"
+                 '(("INPUT FILE"     'file   " ")
+                   ("PARAMETER LIST" 'string " ")))
+           (cons "load"
+                 '(("INPUT FILE"     'file   " ")))
+           (cons "pause"
+                 '(("TIME"           'number " ")
+                   ("MESSAGE"        'string " ")))
+           (cons "print"
+                 '(("EXPRESSION"     'string " ")))
+           (cons "save"
+                 '(("SAVE"           'list   " " "functions" "variables" "set")
+                   ("FILE"           'file   " ")))
+           (cons "update"
+                 '(("INITIAL FILE"   'file   " " t)
+                   ("UPDATED FILE"   'file   " " t))) ))
+
+
+(defcustom gnuplot-gui-plot-splot-fit-style 'simple
+  "Control the complexity of the GUI display for plot, splot, and fit.
+The values are 'simple, which causes a limited set of plot, splot, or
+fit options to be displayed, and 'complete, which attempts to display
+all options.  The 'complete setting is prone to making errors when
+parsing values already in the script buffer."
+  :group 'gnuplot-gui
+  :type '(radio (const :tag "Simple listing"   simple)
+               (const :tag "Complete listing" complete)))
+
+
+(defconst gnuplot-gui-plot-simple-list
+  '(("X RANGE"     'range (" " . " ") ":")
+    ("Y RANGE"     'range (" " . " ") ":")
+    ("DATA FILE"   'file   " ")
+    ("THRU"        'string* " " "thru")
+    ("USING"       'modifier " ")
+    ("TITLE"       'string " ")
+    ("WITH"        'list* " " "boxerrorbars" "boxes"
+     "boxxyerrorbars" "candlesticks" "dots" "financebars"
+     "fsteps" "histeps" "impulses" "lines" "linespoints"
+     "points" "steps" "vector" "xerrorbars" "xyerrorbars"
+     "yerrorbars")))
+(defconst gnuplot-gui-plot-full-list
+  '(;;("T RANGE"     'range (" " . " ") ":")
+    ("X RANGE"     'range (" " . " ") ":")
+    ("Y RANGE"     'range (" " . " ") ":")
+    ("xa"          'text   "\t---------------------")
+    ("FUNCTION"    'string " ")
+    ("xc"          'text   "   or")
+    ("DATA FILE"   'file   " ")
+    ("INDEX"       'modifier " ")
+    ("EVERY"       'modifier " ")
+    ("THRU"        'string* " " "thru")
+    ("USING"       'modifier " ")
+    ("SMOOTH"      'list* " " "unique" "csplines" "acsplines"
+     "bezier" "sbezier")
+    ;; datafile modifiers
+    ("AXES"        'list* " " "x1y1" "x2y2" "x1y2" "x2y1")
+    ("TITLE"       'string " ")
+    ("NOTITLE"     'list   " " "notitle")
+    ("xf"          'text   "\t---------------------")
+    ("xi"          'text   "Select a standard plotting style")
+    ("WITH"        'list* " " "boxerrorbars" "boxes"
+     "boxxyerrorbars" "candlesticks" "dots" "financebars"
+     "fsteps" "histeps" "impulses" "lines" "linespoints"
+     "points" "steps" "vector" "xerrorbars" "xyerrorbars"
+     "yerrorbars")
+    ("xo"          'text   "     or a previously defined style")
+    ("LINE STYLE " 'number " " "ls")
+    ("xr"          'text   "     or specify a style in-line")
+    ("LINE TYPE  " 'number " " "lt")
+    ("LINE WIDTH " 'number " " "lw")
+    ("POINT TYPE " 'number " " "pt")
+    ("POINT STYLE" 'number " " "ps")
+    ))
+(defconst gnuplot-gui-splot-simple-list
+  '(("DATA FILE"   'file   " ")
+    ("TITLE"       'string " ")
+    ("WITH"        'list* " " "lines" "linespoints" "points" "dots" "impulses")))
+(defconst gnuplot-gui-splot-full-list
+  '(;;("U RANGE"     'range (" " . " ") ":")
+    ;;("V RANGE"     'range (" " . " ") ":")
+    ("X RANGE"     'range (" " . " ") ":")
+    ("Y RANGE"     'range (" " . " ") ":")
+    ("Z RANGE"     'range (" " . " ") ":")
+    ("xa"          'text   "\t---------------------")
+    ("FUNCTION"    'string " ")
+    ("xc"          'text   "   or")
+    ("DATA FILE"   'file   " ")
+    ("INDEX"       'modifier " ")
+    ("EVERY"       'modifier " ")
+    ("THRU"        'string* " " "thru")
+    ("USING"       'modifier " ")
+    ("SMOOTH"      'list* " " "unique" "csplines" "acsplines"
+     "bezier" "sbezier")
+    ("TITLE"       'string " ")
+    ("NOTITLE"     'list   " " "notitle")
+    ("WITH"        'list* " " "lines" "linespoints" "points" "dots" "impulses")))
+(defconst gnuplot-gui-fit-simple-list
+  '(("FUNCTION"     'string* " " "")
+    ("DATA FILE"    'file    " ")
+    ("VIA (params)" 'string* " " "via") ))
+(defconst gnuplot-gui-fit-full-list
+  '(("X RANGE"      'range  (" " . " ") ":")
+    ("Y RANGE"      'range  (" " . " ") ":")
+    ("xa"           'text    "----- fitting functionn and file --------")
+    ("FUNCTION"     'string* " " "")
+    ("DATA FILE"    'file    " ")
+    ("xb"           'text    "----- datafile modifiers ----------------")
+    ("INDEX"        'modifier " ")
+    ("EVERY"        'modifier " ")
+    ("THRU"         'string* " " "thru")
+    ("USING"        'modifier " ")
+    ("SMOOTH"       'list* " " "unique" "csplines" "acsplines"
+     "bezier" "sbezier")
+    ("xc"           'text    "----- parameters (file or parameters) ---")
+    ("VIA (file)"   'string  " " "via")
+    ("VIA (params)" 'string* " " "via") ))
+
+(defvar gnuplot-gui-plot-splot-fit nil
+  "Associated list of plot, splot, and fit descriptions.
+See the doc-string for `gnuplot-gui-all-types'.")
+(setq gnuplot-gui-plot-splot-fit
+      (list (cons "plot"  (if (equal gnuplot-gui-plot-splot-fit-style 'complete)
+                             gnuplot-gui-plot-full-list
+                           gnuplot-gui-plot-simple-list))
+           (cons "splot" (if (equal gnuplot-gui-plot-splot-fit-style 'complete)
+                             gnuplot-gui-splot-full-list
+                           gnuplot-gui-splot-simple-list))
+           (cons "fit"   (if (equal gnuplot-gui-plot-splot-fit-style 'complete)
+                             gnuplot-gui-fit-full-list
+                           gnuplot-gui-fit-simple-list))) )
+
+
+(defvar gnuplot-gui-test-type nil)
+(setq gnuplot-gui-test-type
+      (list (cons "test"
+                 '(("TAG"      'tag      " ")
+                   ("LIST"     'list     " " "1" "2" "3")
+                   ("LIST*"    'list*    " " "1" "2" "3")
+                   ("NUMBER"   'number   " " "number")
+                   ("RANGE"    'range   (" " . " ") ":")
+                   ("PAIR"     'pair    (" " . " ") "pair")
+                   ("LABELS"   'labels   ())
+                   ("FILE"     'file     " ")
+                   ("TEXT"     'text     "this is text")
+                   ("STRING"   'string   " ")
+                   ("STRING*"  'string*  " " "string*")
+                   ("FORMAT"   'format   " ")
+                   ("POSITION" 'position " " "at" 3)
+                   ("FONTSIZE" 'fontsize " ") ))))
+
+(defvar gnuplot-gui-all-types nil
+    "Associated list of terminal, set option, and command arguments.
+
+Each entry in the list is a cons cell of the form
+      (OPTION . ALIST)
+where OPTION is one of the recognized options in Gnuplot, either a
+command, something that is set, or a terminal type.  Only those
+commands, set options, and terminal types that actually take arguments
+are in this associated list.
+
+ALIST is itself an associated list where each entry is of the form:
+
+      (TAG TYPE DEFAULT REST)
+
+TAG is the name used on the widget and indicates one of the options
+for this command, set option, or terminal type.
+
+TYPE is one of
+     'list       a menu-list of strings
+     'list*      a menu-list of strings with a prefix
+     'number     a number with an optional prefix
+     'tag        like number but must be the first argument
+     'fontsize   like number but must be the last argument
+     'range      a pair of numbers like [#,#] or [#:#]
+     'pair       a pair of numbers with no punctuation and a prefix
+     'file       a quoted string and a file browser
+     'string     a quoted string with an optional prefix
+     'string*    an unquoted string with a prefix
+     'format     a quoted string and an info-link to (gnuplot)format
+     'labels     an array as needed for xtics, ytics, etc
+     'position   2 or 3 comma separated numbers with an optional prefix
+
+DEFAULT is the default value for this option.  Note that the default
+for 'range and 'pair is a cons cell and the default for 'labels is a
+list.  For most things, the best choice of DEFAULT is a string of
+white space or a cons cell of two strings of white space.  Strings of
+white space are better defaults than empty strings or nil.
+
+The value of REST depends upon TYPE:
+
+  For 'list &    REST is the list of options that will go into the
+      'list*       menu-button.  This can also be a symbol which
+                   evaluates to a list containing the options to go into
+                   the menu-button.  This list variable must contain the
+                   DEFAULT.
+  For 'number    REST is the prefix string (if it exists) for that number.
+  For 'range     REST is the separator, \":\" for plot ranges and
+                   \",\" for plot dimensions (see for example the tgif
+                   terminal type)
+  For 'string &  REST may a number denoting the width of the editable-text
+      'string*     field or it may be a string denoting a prefix.  By
+                   default, the width is half the width of the frame
+                   and there is no prefix.  It may be useful to
+                   specify \"1\" when the input is a single character
+                   as in 'set missing'.
+  For 'file      REST determines the label placed before the file insertion
+                   field.  If non-nil, then TAG is used.  If nil, then
+                   the default \"File\" is used.
+  For 'position  REST is the prefix and the number of comma separated numbers
+  For others     REST is not used.
+
+Here is an example entry for the png terminal type:
+
+  (cons \"png\"
+       '((\"SIZE\"  'list \" \" \"small\" \"medium\" \"large\")
+         (\"COLOR\" 'list \" \" \"monochrome\" \"gray\" \"color\")))
+
+This alist is formed at load time by appending together
+`gnuplot-gui-terminal-types', `gnuplot-gui-set-types' and
+`gnuplot-gui-command-types'.")
+
+(setq gnuplot-gui-all-types (append gnuplot-gui-terminal-types
+                                   gnuplot-gui-set-types
+                                   gnuplot-gui-command-types
+                                   gnuplot-gui-plot-splot-fit
+                                   gnuplot-gui-test-type
+                                   ))
+
+
+(defun gnuplot-gui-swap-simple-complete ()
+  (interactive)
+  (setq gnuplot-gui-plot-splot-fit-style
+       (if (equal gnuplot-gui-plot-splot-fit-style 'complete)
+           'simple 'complete))
+  (if (equal gnuplot-gui-plot-splot-fit-style 'complete)
+      (progn
+       (setcdr (assoc "plot"  gnuplot-gui-all-types) gnuplot-gui-plot-full-list)
+       (setcdr (assoc "splot" gnuplot-gui-all-types) gnuplot-gui-splot-full-list)
+       (setcdr (assoc "fit"   gnuplot-gui-all-types) gnuplot-gui-fit-full-list))
+    (setcdr (assoc "plot"  gnuplot-gui-all-types) gnuplot-gui-plot-simple-list)
+    (setcdr (assoc "splot" gnuplot-gui-all-types) gnuplot-gui-splot-simple-list)
+    (setcdr (assoc "fit"   gnuplot-gui-all-types) gnuplot-gui-fit-simple-list))
+  (message "Using %s lists for plot, splot, and fit."
+          gnuplot-gui-plot-splot-fit-style) )
+
+
+
+\f
+;;; user interface to the widget-y stuff
+
+(defun gnuplot-gui-mouse-set (event)
+  "Use the mouse to begin setting options using a GUI interface.
+EVENT is a mouse event.  Bound to \\[gnuplot-gui-mouse-set]
+Note that \"plot\", \"splot\", \"fit\", and \"cntrparam\" are not
+currently supported."
+  (interactive "@e")
+  (when (fboundp 'widget-create)
+    (save-excursion
+      (mouse-set-point event)
+      (gnuplot-gui-set-options-and-insert))))
+
+(defun gnuplot-gui-get-frame-param (param)
+  (if gnuplot-xemacs-p
+      (plist-get gnuplot-gui-frame-plist param)
+    (cdr (assoc param gnuplot-gui-frame-parameters))))
+(defun gnuplot-gui-set-frame-param (param value)
+  (if gnuplot-xemacs-p
+      (plist-put gnuplot-gui-frame-plist param value)
+    (setcdr (assoc param gnuplot-gui-frame-parameters) value)))
+
+(defun gnuplot-gui-set-options-and-insert ()
+  "Insert arguments using a GUI interface.
+Determine contents of current line and set up the appropriate GUI
+frame.  Bound to \\[gnuplot-gui-set-options-and-insert]
+Note that \"cntrparam\" is not currently supported."
+  (interactive)
+  (when (fboundp 'widget-create)
+    (let ((begin  (save-excursion (beginning-of-line) (point-marker)))
+         (end    (save-excursion (end-of-line)       (point-marker)))
+         (termin (concat "\\(,\\s-*" (regexp-quote "\\") "\\|;\\)"))
+         (set nil) (term nil))
+      (save-excursion
+       ;; there can be more then one command per line
+       (if (search-backward ";" begin "to_limit")
+           (progn (forward-char  1) (setq begin (point-marker))))
+       (if (re-search-forward termin end "to_limit")
+           (progn (backward-char (length (match-string 1)))
+                  (setq end (point-marker))))
+       (goto-char begin)
+       (skip-syntax-forward "-" end)
+       ;; various constructions are recognized here. at the end of this
+       ;; cond, point should be just after the word whose arguments are
+       ;; to be set
+       (cond ((looking-at "set\\s-+")
+              (setq set t)
+              (goto-char (match-end 0))
+              (if (looking-at "\\sw+") (goto-char (match-end 0)))
+              (when (string-match "^ter" (gnuplot-this-word)) ; terminal?
+                (setq term t)
+                (forward-word 1))
+              (when (string-match "^\\(da\\|fu\\)" (gnuplot-this-word))
+                (unless (looking-at "\\s-+st")
+                  (insert " style") (forward-word 1))
+                (forward-word 1)))
+             ((looking-at (concat "\\(cd\\|ca\\|lo\\|pa\\|pr\\|sa\\|u\\)"
+                                  "\\w*"
+                                  "[\\s-\\']"))
+              (forward-word 1))
+             ;;(goto-char (match-end 0)))
+             (t
+              (forward-word 1)))
+       (if (> (point) end) (goto-char end))
+       (let* ((w (gnuplot-this-word))
+              (wd (try-completion w gnuplot-gui-all-types))
+              (word "") wrd list)
+         (cond ((equal wd t)                     (setq word w))
+               ((equal wd nil)                   (setq word w))
+               ((assoc wd gnuplot-gui-all-types) (setq word wd))
+               (t                                (setq wd nil)))
+         (cond ((equal (string-match "^\\s-*$" w) 0)
+                (message "Blank line"))
+               ((and wd (stringp word))
+                (gnuplot-gui-correct-command word set term begin)
+                (setq gnuplot-gui-alist nil
+                      gnuplot-gui-current-string
+                      (buffer-substring-no-properties (point) end))
+                (gnuplot-gui-set-alist word gnuplot-gui-current-string)
+                (let* ((old-height (gnuplot-gui-get-frame-param 'height))
+                       (old-top    (gnuplot-gui-get-frame-param 'top)))
+                  (when (or
+                         (and (equal gnuplot-gui-plot-splot-fit-style 'complete)
+                              (member* word '("plot" "splot" "fit")
+                                       :test 'string=))
+                         (equal word "test"))
+                    (gnuplot-gui-set-frame-param 'height 32)
+                    (gnuplot-gui-set-frame-param 'top    50))
+                  (gnuplot-gui-prompt-for-frame word)
+                  (when (or
+                         (and (equal gnuplot-gui-plot-splot-fit-style 'complete)
+                              (member* word '("plot" "splot" "fit")
+                                       :test 'string=))
+                         (equal word "test"))
+                    (gnuplot-gui-set-frame-param 'height old-height)
+                    (gnuplot-gui-set-frame-param 'top    old-top)) ))
+               ((setq wrd (car (all-completions w '(("cntrparam")))))
+                (message
+                 "Setting arguments for %S is currently unsuported in gnuplot-mode"
+                 wrd))
+               ((setq list (all-completions w gnuplot-gui-all-types))
+                (message "%S could be one of %S" w list))
+               (t
+                (message
+                 "%S is not a gnuplot command which takes options" w)))) ))))
+
+(defun gnuplot-gui-toggle-popup ()
+  (interactive)
+  (setq gnuplot-gui-popup-flag (not gnuplot-gui-popup-flag))
+  (message (if gnuplot-gui-popup-flag
+              "Argument popup will appear after insertions."
+            "Argument popup will no longer appear after insertions.")))
+
+
+(defun gnuplot-gui-y-n (foo))
+(if gnuplot-xemacs-p
+    (defalias 'gnuplot-gui-y-n 'y-or-n-p-maybe-dialog-box)
+  (defalias 'gnuplot-gui-y-n 'y-or-n-p))
+
+(defun gnuplot-gui-correct-command (word set term begin)
+  "Check syntax of set command and terminal specifications.
+WORD is the item being set. SET and TERM are non-nil if the words
+\"set\" and \"terminal\" were found preceding WORD in the buffer.
+BEGIN is the beginning of the command."
+  (save-excursion
+    (cond ((assoc word gnuplot-gui-terminal-types)
+          (when (and (not (and set term))
+                     (gnuplot-gui-y-n
+                      (format
+                       "%S must be preceded by \"set terminal\".  Add it? "
+                       word)))
+            (backward-word 1)
+            (let ((e (point-marker)))
+              (goto-char begin)
+              (skip-syntax-forward "-" e)
+              (delete-region (point) e)
+              (insert "set terminal "))))
+         ((assoc word gnuplot-gui-set-types)
+          (when (and (not set)
+                     (gnuplot-gui-y-n
+                      (format
+                       "%S must be preceded by \"set\".  Add \"set\"? " word)))
+            (backward-word 1)
+            (let ((e (point-marker)))
+              (goto-char begin)
+              (skip-syntax-forward "-" e)
+              (delete-region (point) e)
+              (insert "set "))))))
+  (message nil))
+
+
+\f
+;;; handle the actual arguments
+
+(defun gnuplot-gui-fix-arg-list (list)
+  "Correct the result of splitting `gnuplot-gui-current-string'.
+LIST is the split string.  This removes empty and all-blank strings
+from the list and concatenates the strings that are part of a quoted
+argument, for example an axis label or a font name.  It also replaces
+bounding single quotes with double quotes, since double quotes are
+used in `gnuplot-gui-all-types'."
+  (let (fixed-list quote quoted)       ; remove blanks
+    (setq list (remove* "\\s-+" list :test 'string-match)
+         list (remove* ""      list :test 'string=))
+    (while list                                ; concatinate parts of quoted string
+      (if (not (string-match "^\\([\]\[()'\"]\\)" (car list)))
+         (setq fixed-list (append fixed-list (list (car list))))
+       (setq quote (match-string 1 (car list))
+             quoted (car list))
+       (if (string= quote "[") (setq quote "]"))
+       (if (string= quote "(") (setq quote ")"))
+       (while (and list
+                   (or (equal (length quoted) 1)
+                       (not (string-match (concat (regexp-quote quote) "$")
+                                          quoted))))
+         (setq quoted (concat quoted " " (cadr list))
+               list (cdr list)))
+       (if (string= quote "'")
+           (setq quoted (concat "\"" (substring quoted 1))
+                 quoted (concat (substring quoted 0 -1) "\"")))
+       (setq fixed-list (append fixed-list (list quoted))))
+      (setq list (cdr list)) )
+    fixed-list))
+
+(defun gnuplot-gui-set-alist (word string)
+  "Set defaults for arguments, using text from buffer if appropriate.
+WORD is the Gnuplot expression whose arguments are being set.  STRING
+is text from the buffer containing the previous values for WORD's
+arguments."
+  (let ((alist    (cdr (assoc word gnuplot-gui-all-types)))
+       (arg-list (gnuplot-gui-fix-arg-list (split-string string)) ))
+    ;; arg-list contains the arguments taken from the buffer
+    (setq gnuplot-gui-alist nil)
+    (while alist
+      (let* ((list      (car alist))
+            (tag       (gnuplot-gui-type-tag     list))
+            (symbol    (eval (gnuplot-gui-type-symbol list)))
+            (default   (gnuplot-gui-type-default list))
+            (prefix    (gnuplot-gui-type-prefix  list))
+            (values    (gnuplot-gui-type-list    list))
+            (this-cons (cond ((stringp default) (cons tag default))
+                             ((consp default) ; set cons valued default w/care
+                              (cons tag (cons (car default) (cdr default))))
+                             (t (cons tag default))))
+            (temp-list arg-list) )
+       ;;(message "%S" temp-list)      ; want to lop values off arg-list
+                                       ; as they are found
+       (if (symbolp (cadr values))
+         (setq values (symbol-value (cadr values))))
+       ;; check if an argument of this type is in arg-list
+       ;; set the current cons cell if it is
+       (while temp-list
+         (cond
+          ;; ---------------------------- list
+          ((member* symbol '(list list*) :test 'equal)
+           (let* ((case-fold-search nil)
+                  (match-cons (member* (concat "^" (car temp-list))
+                                       values :test 'string-match)))
+             (if (and (car match-cons) ; " " may be first elem. of list
+                      (not (string= " " (car match-cons))))
+                 (setq this-cons (cons tag (car match-cons))
+                       arg-list (remove* (car temp-list) arg-list
+                                         :test 'string= :count 1)
+                       temp-list nil)
+               (setq temp-list (cdr temp-list)))))
+          ;; ---------------------------- tag (first number in list)
+          ((equal symbol 'tag)
+           (if (string-match "^[-0-9.]+$" (car arg-list))
+               (setq this-cons (cons  tag (car arg-list))
+                     temp-list nil)
+             (setq temp-list (cdr temp-list))) )
+          ;; ---------------------------- fontsize (last number in list)
+          ((equal symbol 'fontsize)
+           (if (string-match "^[-0-9.]+$" (car (last arg-list)))
+               (setq this-cons (cons  tag (car (last arg-list)))
+                     temp-list nil)
+             (setq temp-list (cdr temp-list))) )
+          ;; ---------------------------- number with prefix
+          ((equal symbol 'number)
+           (cond ((and (string= prefix (car temp-list))
+                       (string-match "^[-0-9.]+$" (cadr temp-list)))
+                  (setq this-cons (cons tag (cadr temp-list))
+                        arg-list (remove* (car temp-list) arg-list
+                                          :test 'string= :count 1)
+                        arg-list (remove* (cadr temp-list) arg-list
+                                          :test 'string= :count 1)
+                        temp-list nil))
+                 ;; --------------------- number without prefix
+                 ((and (not prefix)
+                       (string-match "^[-0-9.]+$" (car temp-list)))
+                  (setq this-cons (cons tag (car temp-list))
+                        arg-list (remove* (car temp-list) arg-list
+                                          :test 'string= :count 1)
+                        temp-list nil))
+                 (t
+                  (setq temp-list (cdr temp-list)))))
+          ;; ---------------------------- pair with prefix
+          ((equal symbol 'pair)
+           (if (and (string= prefix (car temp-list))
+                    (string-match "^[-0-9.]+$" (cadr temp-list)))
+               (let ((this-car (cadr temp-list))
+                     (this-cdr (if (string-match "^[-0-9.]+$" (caddr temp-list))
+                                   (caddr temp-list) "")))
+                 (setq this-cons (cons tag (cons this-car this-cdr))
+                       temp-list nil))
+             (setq temp-list (cdr temp-list))))
+          ;; ---------------------------- range
+          ((equal symbol 'range)
+           (if (string-match (concat "\\[\\s-*" ; opening bracket
+                                     "\\([^:, \t]*\\)" ; first argument
+                                     "\\s-*[:,]\\s-*" ; separator
+                                     "\\([^\] \t]*\\)" ; second argument
+                                     "\\s-*\\]") ; closing bracket
+                             (car temp-list))
+               (setq this-cons
+                     (cons tag (cons (match-string 1 (car temp-list))
+                                     (match-string 2 (car temp-list))))
+                     arg-list (remove* (car temp-list) arg-list
+                                       :test 'string= :count 1)
+                     temp-list nil)
+             (setq temp-list (cdr temp-list)) ))
+          ;; ---------------------------- labels
+          ((equal symbol 'labels)
+           (if (string-match (concat "(" ; opening paren
+                                     "\\([^\)]*\\)" ; string
+                                     ")") ; closing paren
+                             (car temp-list))
+               (let* ((list (split-string (car temp-list) "[ \t(),]+"))
+                      (list (remove* "" list :test 'string=))
+                      (return ()))
+                 (while list
+                   (if (string-match "['\"]\\([^'\"]*\\)['\"]" (car list))
+                       (setq return (append return
+                                            (list (match-string 1 (car list))))
+                             list (cdr list)
+                             return (append return (list (car list))) )
+                     (setq return (append return (list "" (car list)))))
+                   (setq list (cdr list)) )
+                 (setq this-cons (cons tag return)
+                       arg-list (remove* (car temp-list) arg-list
+                                         :test 'string= :count 1)
+                       temp-list nil))
+             (setq temp-list (cdr temp-list))) )
+          ;; ---------------------------- string, file, format
+          ((member* symbol '(string file format) :test 'equal)
+           (if (string-match (concat "['\"]" ; opening quote
+                                     "\\([^'\"]*\\)" ; string
+                                     "['\"]") ; closing quote
+                             (car temp-list))
+               (setq this-cons (cons tag (match-string 0 (car temp-list)))
+                     arg-list (remove* (car temp-list) arg-list
+                                       :test 'string= :count 1)
+                     temp-list nil)
+             (setq temp-list (cdr temp-list)) ))
+          ;; ---------------------------- string*
+          ((equal symbol 'string*)
+           (if (string= prefix (car temp-list))
+               (setq this-cons (cons tag (cadr temp-list))
+                     arg-list (remove* (car temp-list) arg-list
+                                       :test 'string= :count 1)
+                     arg-list (remove* (cadr temp-list) arg-list
+                                       :test 'string= :count 1)
+                     temp-list nil)
+             (setq temp-list (cdr temp-list)) ) )
+          ;; ---------------------------- other or unknown
+          (t
+           (setq temp-list nil))
+          ))
+       (setq gnuplot-gui-alist
+             (append gnuplot-gui-alist (list this-cons))))
+      (setq alist (cdr alist))) ))
+
+
+(defun gnuplot-gui-post-process-alist (type)
+  "A few types need some additional processing.
+'range, 'pair, and 'labels are cons or list valued and need to b made
+into strings.  This is called right before inserting the arguments
+into the buffer.  TYPE is the object whose arguments are being set."
+  (let ((alist gnuplot-gui-alist)
+       (types (cdr (assoc type gnuplot-gui-all-types))) )
+    (while alist  ;; loop thru alist looking for tyeps needing post-processing
+      (let* ((list   (assoc (caar alist) types))
+            (value  (cdr (assoc (caar alist) gnuplot-gui-alist)))
+            (prefix (gnuplot-gui-type-prefix list))
+            (symb   (gnuplot-gui-type-symbol list)) )
+       (cond
+        ;;-------------------------- flat text
+        ((equal (eval symb) 'text)
+         (setcdr (assoc (caar alist) gnuplot-gui-alist) ""))
+        ;;-------------------------- range [#:#] or [#,#]
+        ((equal (eval symb) 'range)
+         (if (and (string-match "^\\s-*$" (car value))
+                  (string-match "^\\s-*$" (cdr value)))
+             (setcdr (assoc (caar alist) gnuplot-gui-alist) "")
+           (setcdr (assoc (caar alist) gnuplot-gui-alist)
+                   (concat "[" (car value) prefix (cdr value) "]")) ) )
+        ;;-------------------------- pair
+        ((equal (eval symb) 'pair)
+         (if (and (string-match "^\\s-*$" (car value))
+                  (string-match "^\\s-*$" (cdr value)))
+             (setcdr (assoc (caar alist) gnuplot-gui-alist) "")
+           (setcdr (assoc (caar alist) gnuplot-gui-alist)
+                   (concat prefix " " (car value) " " (cdr value) )) ) )
+        ;;-------------------------- labels
+        ((equal (eval symb) 'labels)
+         (if (consp value)
+             (let ((word "") (list value))
+               (while list
+                 (if (string-match "^\\s-*$" (car list))
+                     (setq word (concat word (format "%s, " (cadr list))))
+                   (setq word (concat word (format "%S %s, " (car list)
+                                                   (cadr list)))))
+                 (setq list (cddr list)) )
+               (setq value (concat "(" (substring word 0 -2) ")")))
+           (setq value "") )
+         (setcdr (assoc (caar alist) gnuplot-gui-alist) value) ))
+
+       (setq alist (cdr alist))) )))
+
+\f
+;;; GUI frames
+
+(defun gnuplot-gui-prompt-for-frame (&optional option save-frame)
+  (setq option (or option (completing-read "Option: " gnuplot-gui-all-types
+                                          nil t nil t)))
+  (gnuplot-gui-make-frame
+   option (cdr (assoc option gnuplot-gui-all-types)) save-frame) )
+
+
+(defface gnuplot-gui-error-face '((((class color) (background light))
+                                 (:foreground "grey30"))
+                                (((class color) (background dark))
+                                 (:foreground "grey70")))
+  "Face used to display message about unknown widget types."
+  :group 'gnuplot-faces)
+
+(defface gnuplot-gui-flat-text-face '((((class color) (background light))
+                                      (:foreground "MediumBlue"))
+                                     (((class color) (background dark))
+                                      (:foreground "LightSteelBlue")))
+  "Face used to display message about unknown widget types."
+  :group 'gnuplot-faces)
+
+(defun gnuplot-gui-make-frame (item alist &optional save-frame)
+  "Open the frame and populate it with widgets.
+ITEM is the object for which arguments are being set.  ALIST is
+the alist of arguments for ITEM taken from `gnuplot-gui-all-types'.
+SAVE-FRAME is non-nil when the widgets are being reset."
+  (unless save-frame
+    (setq gnuplot-current-frame (selected-frame)
+         gnuplot-current-buffer (current-buffer)
+         gnuplot-current-buffer-point (point-marker))
+    (unless (and gnuplot-gui-frame (frame-live-p gnuplot-gui-frame))
+      (setq gnuplot-gui-frame (if gnuplot-xemacs-p
+                                 (make-frame gnuplot-gui-frame-plist)
+                               (make-frame gnuplot-gui-frame-parameters))))
+    (select-frame gnuplot-gui-frame)
+    ;;(set-frame-position gnuplot-gui-frame 150 150) ;; so herky-jerky
+    (if gnuplot-xemacs-p
+       (set-mouse-position (selected-window) 0 0)
+      (set-mouse-position gnuplot-gui-frame 0 0)))
+  (kill-buffer (get-buffer-create "*Gnuplot GUI*"))
+  (switch-to-buffer (get-buffer-create "*Gnuplot GUI*"))
+  (kill-all-local-variables)
+  (if gnuplot-xemacs-p
+      (progn
+       (set (make-local-variable 'frame-title-format)
+            "Set Gnuplot Options")
+       (set (make-local-variable 'frame-icon-title-format)
+            "Set Gnuplot Options"))
+    (modify-frame-parameters (selected-frame)
+                            '((title . "Set Gnuplot Options"))) )
+  (widget-insert "\nSet options for \"" item "\"  ")
+  (let (tag help val)
+    (cond ((string-match "^[xyz]2?tics" item)
+          (setq tag  "info on tic labels"
+                help "Open a frame displaying the info entry for tic labels"
+                val  "xtics"))
+         ((string-match "^no" item)
+          (setq tag  (concat "info on " (substring item 2))
+                help (format "Open a frame displaying the info entry for %S"
+                             item)
+                val  item))
+         (t
+          (setq tag  (concat "info on " item)
+                help (format "Open a frame displaying the info entry for %S"
+                             item)
+                val  item)))
+    (widget-create 'gnuplot-gui-info-link :tag tag :help-echo help :value val))
+
+  (widget-insert "\n\n")
+  (while alist
+    (let* ((this    (car   alist))
+          (tag     (gnuplot-gui-type-tag    this))
+          (wtype   (gnuplot-gui-type-symbol this))
+          (prefix  (gnuplot-gui-type-prefix this))
+          (default (cdr (assoc tag gnuplot-gui-alist)))
+          (list    (gnuplot-gui-type-list   this)))
+      (if (symbolp (cadr list))
+         (setq list (symbol-value (cadr list))))
+      (widget-insert "\t")             ; insert the appropriate widget
+      (cond
+       ;;------------------------------ list, list* ------------
+       ((member* (eval wtype) '(list list*) :test 'equal)
+       (let ((starred (if (equal (eval wtype) 'list*) t nil)))
+         (gnuplot-gui-menu-choice tag default list starred)))
+       ;;------------------------------ number, tag, fontsize --
+       ((member* (eval wtype) '(number tag fontsize) :test 'equal)
+       (gnuplot-gui-number tag default prefix))
+       ;;------------------------------ position ---------------
+       ;;------------------------------ range, pair ------------
+       ((member* (eval wtype) '(range pair) :test 'equal)
+       (let ((is-range (equal (eval wtype) 'range)))
+         (gnuplot-gui-range tag default prefix is-range)))
+       ;;------------------------------ string, string* --------
+       ((member* (eval wtype) '(string string*) :test 'equal)
+       (let ((starred (if (equal (eval wtype) 'string) nil t)))
+         (gnuplot-gui-string tag default prefix starred)))
+       ;;------------------------------ format -----------------
+       ((equal (eval wtype) 'format)
+       (gnuplot-gui-format tag default))
+       ;;------------------------------ file -------------------
+       ((equal (eval wtype) 'file)
+       (gnuplot-gui-file tag default prefix))
+       ;;------------------------------ labels -----------------
+       ((equal (eval wtype) 'labels)
+       (gnuplot-gui-labels tag default))
+       ;;------------------------------ text -------------------
+       ((equal (eval wtype) 'text)
+       (let ((str (gnuplot-gui-type-default this)))
+         (put-text-property 0 (length str) 'face 'gnuplot-gui-flat-text-face str)
+         (widget-insert str "\n")))
+       ;;------------------------------ unknown ----------------
+       (t
+       (let ((str (concat "<" (downcase tag) "> ('"
+                          (symbol-name (eval wtype))
+                          " arguments are not yet supported)\n")))
+         (put-text-property 0 (length str) 'face 'gnuplot-gui-error-face str)
+         (widget-insert str)) )))
+    (setq alist (cdr alist)))
+  ;; insert control buttons: [Set options]   [Reset]   [Clear]   [Cancel]
+  (widget-insert "\n\t")
+  (widget-create 'push-button
+                :value "Set options"
+                :doc item
+                :button-face 'gnuplot-gui-button-face
+                :help-echo "Push this button to set options"
+                :notify
+                (lambda (widget &rest ignore)
+                  (kill-buffer (get-buffer-create "*Gnuplot GUI*"))
+                  (delete-frame)
+                  (select-frame gnuplot-current-frame)
+                  (switch-to-buffer gnuplot-current-buffer)
+                  (goto-char gnuplot-current-buffer-point)
+                  (gnuplot-gui-post-process-alist
+                   (widget-get widget :doc))
+                  (let ((alist gnuplot-gui-alist) marker
+                        (eol (save-excursion (end-of-line) (point-marker) )) )
+                    (if (re-search-forward ";" eol "to_limit")
+                        (backward-char 1))
+                    (delete-region gnuplot-current-buffer-point (point-marker))
+                    (delete-horizontal-space)
+                    (setq marker (point-marker))
+                    (while alist
+                      (let ((val (cdar alist)))
+                        (if (string-match "^\\s-+$" val) ()
+                          (if (string-match "^['\"]\\(.*\\)['\"]$" val)
+                              (setq val (concat gnuplot-quote-character
+                                                (match-string 1 val)
+                                                gnuplot-quote-character)))
+                          (insert (format " %s" val))))
+                      (setq alist (cdr alist)))
+                    (setq eol (point-marker))
+                    (goto-char marker)
+                    (while (< (point) eol) ; a few odd cases
+                      (unless (looking-at (concat "[" (regexp-quote "(")
+                                                  (regexp-quote "*") ",]"))
+                        (just-one-space))
+                      (forward-sexp)))
+                  (delete-horizontal-space)
+                  (if (string= "terminal" (widget-get widget :doc))
+                      (gnuplot-gui-set-options-and-insert)) ))
+  (widget-insert "   ")
+  (widget-create 'push-button :value "Reset"
+                :help-echo "Push this button to reset all values"
+                :button-face 'gnuplot-gui-button-face
+                :doc item
+                :notify
+                (lambda (widget &rest ignore)
+                  (let ((word (widget-get widget :doc)))
+                    (gnuplot-gui-set-alist word gnuplot-gui-current-string)
+                    (gnuplot-gui-prompt-for-frame word t))))
+  (widget-insert "   ")
+  (widget-create 'push-button :value "Clear"
+                :help-echo "Push this button to clear all values"
+                :button-face 'gnuplot-gui-button-face
+                :doc item
+                :notify
+                (lambda (widget &rest ignore)
+                  (let* ((word (widget-get widget :doc))
+                         (alist (cdr (assoc word gnuplot-gui-all-types))))
+                    (while alist
+                      (setcdr (assoc (gnuplot-gui-type-tag (car alist))
+                                     gnuplot-gui-alist)
+                              (gnuplot-gui-type-default (car alist)))
+                      (setq alist (cdr alist)))
+                    (gnuplot-gui-prompt-for-frame word t))) )
+  (widget-insert "   ")
+  (widget-create 'push-button :value "Cancel"
+                :help-echo "Quit setting options and dismiss frame"
+                :button-face 'gnuplot-gui-button-face
+                :notify (lambda (widget &rest ignore)
+                          (kill-buffer (get-buffer-create "*Gnuplot GUI*"))
+                          (setq gnuplot-gui-alist nil
+                                gnuplot-gui-current-string nil)
+                          (delete-frame)
+                          (select-frame gnuplot-current-frame)))
+  (goto-char (point-min))
+  (use-local-map widget-keymap)
+  (widget-setup))
+
+\f
+;;; widgets
+
+(defface gnuplot-gui-menu-face '((((class color) (background light))
+                                 (:bold t :foreground "darkolivegreen"))
+                                (((class color) (background dark))
+                                 (:bold t :foreground "seagreen"))
+                                (t
+                                 (:italic t)))
+  "Face used for menu-buttons."
+  :group 'gnuplot-faces)
+(defface gnuplot-gui-button-face '((((class color) (background light))
+                                 (:bold t :foreground "sienna"))
+                                (((class color) (background dark))
+                                 (:bold t :foreground "tan"))
+                                (t
+                                 (:italic t)))
+  "Face used for push-buttons.
+Only used in Emacs.  XEmacs displays push-buttons with a pixmap."
+  :group 'gnuplot-faces)
+(defface gnuplot-gui-labels-face '((((class color) (background light))
+                                   (:bold t :foreground "darkslateblue"))
+                                  (((class color) (background dark))
+                                   (:bold t :foreground "lightslateblue"))
+                                  (t
+                                   (:italic t)))
+  "Face used for insert and delete button in the labels widget."
+  :group 'gnuplot-faces)
+
+(defun gnuplot-gui-menu-choice (item default list &optional starred)
+  "Create a menu widget for the Gnuplot GUI.
+ITEM is the object whose arguments are set by this widget, DEFAULT
+is the default argument value, LIST contains the items for the pop-up
+menu.  STARRED is true if this a 'list* widget."
+  (let ((widget
+        (apply 'widget-create
+               'menu-choice :value default :tag item :doc starred
+               :button-face 'gnuplot-gui-menu-face
+               :button-prefix "[" :button-suffix "]"
+               :help-echo (format "Mouse-2 to view the %S menu" (downcase item))
+               :notify
+               (lambda (widget &rest ignore)
+                 (let ((lab (if (widget-get widget :doc)
+                                (concat (downcase (widget-get widget :tag)) " ")
+                              "" )))
+                   (setcdr (assoc (widget-get widget :tag) gnuplot-gui-alist)
+                           (if (string= (widget-value widget) " ") ""
+                             (format "%s%s" lab (widget-value widget))) )))
+               (mapcar (lambda (x) (list 'item :value x))
+                       list))))
+    (widget-value-set widget default)
+    (if (and starred (not (string-match "^\\s-*$" default)))
+       (setcdr (assoc item gnuplot-gui-alist)
+               (format "%s %s" (downcase item) default)))
+    widget))
+
+(defun gnuplot-gui-number (item default &optional prefix)
+  "Create a number widget for the Gnuplot GUI.
+ITEM is the object whose arguments are set by this widget, DEFAULT
+is the default value for the widget, PREFIX is a text string preceding
+the numerical argument."
+  (let ((help-label (or prefix (downcase item))))
+    (widget-insert (capitalize item) ": ")
+    (widget-create 'editable-field
+                  :size 2 :tag item :value default :doc prefix
+                  :help-echo (format "Insert new value of %S here" help-label)
+                  :notify (lambda (widget &rest ignore)
+                            (let ((val (widget-value widget))
+                                  (pre (concat (widget-get widget :doc) " ")))
+                              (setcdr (assoc (widget-get widget :tag)
+                                             gnuplot-gui-alist)
+                                      (if (string-match
+                                           "^\\s-*[-0-9.*]+\\s-*$" val)
+                                          (format "%s%s" pre val) "") )))))
+  (unless (string-match "^\\s-*$" default)
+    (setcdr (assoc item gnuplot-gui-alist) (format "%s %s" prefix default)))
+  (widget-insert " " (make-string (- 40 (current-column)) ?.)
+                " (numeric value)\n"))
+
+(defun gnuplot-gui-string (item default &optional width_or_prefix starred)
+  "Create a string widget for the Gnuplot GUI.
+ITEM is the object whose arguments are set by this widget, DEFAULT is
+the default value for the widget, and WIDTH_OR_PREFIX is the width of
+the text entry field (which defaults to half the frame width) or the
+prefix for the string.  STARRED is t if quotes are not to be used."
+  (let ((help-label (downcase item)) width (prefix "") (pp ""))
+    (cond ((stringp width_or_prefix)
+          (setq prefix width_or_prefix
+                pp prefix)
+          (if starred (setq prefix (concat prefix "_star"))) )
+         ((numberp width_or_prefix)
+          (setq width width_or_prefix)))
+    (setq width (or width (/ (frame-width) 2)))
+    (if (string-match "^['\"]" default)
+       (setq default (replace-match "" nil nil default)))
+    (if (string-match "['\"]$" default)
+       (setq default (replace-match "" nil nil default)))
+    (widget-insert (capitalize item) ": ")
+    (widget-create
+     'editable-field
+     :size width :tag item :doc prefix :value default
+     :help-echo (format "Insert new value of %S here" help-label)
+     :notify (lambda (widget &rest ignore)
+              (let ((val (widget-value widget))
+                    (q gnuplot-quote-character)
+                    (p (widget-get widget :doc)) )
+                (setcdr (assoc (widget-get widget :tag) gnuplot-gui-alist)
+                        (if (string-match "^\\s-*$" val)
+                            ""
+                          (progn
+                            (if (string-match "_star$" p)
+                                (setq p (concat (substring p 0 -5) " ")
+                                      q ""))
+                            (if (string-match "^\\s-+" val)
+                                (setq val (replace-match "" nil nil val)))
+                            (if (string-match "\\s-+$" val)
+                                (setq val (replace-match "" nil nil val)))
+                            (format "%s%s%s%s" p q val q)))))))
+    (unless (string-match "^\\s-*$" default)
+      (setcdr (assoc item gnuplot-gui-alist) (format "%s %s" pp default)))
+    (widget-insert "\n")))
+
+(defun gnuplot-gui-format (item default)
+  "Create a string widget for the Gnuplot GUI.
+ITEM is the object whose arguments are set by this widget, DEFAULT is
+the default value for the widget, and WIDTH_OR_PREFIX is the width of
+the text entry field (which defaults to half the frame width) or the
+prefix for the string."
+  (if (string-match "^['\"]" default)
+      (setq default (replace-match "" nil nil default)))
+  (if (string-match "['\"]$" default)
+      (setq default (replace-match "" nil nil default)))
+  (widget-insert (capitalize item) ": ")
+  (widget-create 'editable-field
+                :size (/ (frame-width) 3) :tag item :value default
+                :help-echo (format "Insert new format string here")
+                :notify (lambda (widget &rest ignore)
+                          (let ((val (widget-value widget)))
+                            (setcdr (assoc (widget-get widget :tag)
+                                           gnuplot-gui-alist)
+                                    (format "%s%s%s"
+                                            gnuplot-quote-character
+                                            val
+                                            gnuplot-quote-character)))))
+  (widget-insert "   ")
+  (widget-create 'gnuplot-gui-info-link
+                :tag (concat "info on format")
+                :help-echo "Open a frame displaying the info entry for format"
+                :value "format")
+  (widget-insert "\n"))
+
+
+;; swiped from widget-color-complete
+(defun gnuplot-gui-file-completion (widget)
+  "Complete the filename in WIDGET."
+  (let* ((str (buffer-substring-no-properties (widget-field-start widget)
+                                             (point)))
+        (file (or (file-name-nondirectory str) ""))
+        (dir  (or (file-name-directory str) "./"))
+        (val  (file-name-completion file dir)) )
+    (cond ((eq val t)
+          (message "Exact match"))
+         ((null val)
+          (error "Can't find completion for \"%s\"" str))
+         ((not (string-equal str val))
+          (insert (substring val (length file))))
+         (t
+          (message "Making completion list...")
+          (let ((list (file-name-all-completions file dir)))
+            (with-output-to-temp-buffer "*Completions*"
+              (display-completion-list list)))
+          (message "Making completion list...done")))))
+
+(defun gnuplot-gui-file (item default &optional tag)
+  "Create a file widget for the Gnuplot GUI.
+ITEM is the object whose arguments is set by this widget, DEFAULT is
+the default value for the argument.  TAG is non-nil if ITEM rather than
+\"File:\" is to be used as the tag."
+  (setq tag (if tag (capitalize item) "File"))
+  (if (string-match "^['\"]" default)
+      (setq default (replace-match "" nil nil default)))
+  (if (string-match "['\"]$" default)
+      (setq default (replace-match "" nil nil default)))
+  (let ((widg (widget-create
+              'file
+              :value default :tag tag
+              :size (- (/ (frame-width) 2) 3)
+              :doc item :help-echo "Insert a filename here"
+              :complete 'gnuplot-gui-file-completion
+              :notify
+              (lambda (widget &rest ignore)
+                (setcdr (assoc (widget-get widget :doc) gnuplot-gui-alist)
+                        (format "%s%s%s" gnuplot-quote-character
+                                (widget-value widget)
+                                gnuplot-quote-character)) )) ))
+    (widget-insert " ")
+    (widget-create
+     'push-button :value "Browse"
+     :doc item :help-echo "Browse directories for a filename."
+     :parent widg
+     :notify (lambda (widget &rest ignore)
+              (let ((fname (file-relative-name (read-file-name "File: ")
+                                               default-directory))
+                    (q gnuplot-quote-character))
+                (widget-value-set (widget-get widget :parent) fname)
+                (setcdr (assoc (widget-get widget :doc) gnuplot-gui-alist)
+                        (format "%s%s%s" q fname q))
+                (widget-setup))))
+    (widget-insert "\n")))
+
+(defun gnuplot-gui-labels (item default)
+  "Create a labels widget for the Gnuplot GUI.
+ITEM is the object whose arguments is set by this widget, DEFAULT is
+the default value for the argument."
+  (widget-create
+   '(editable-list
+     (list :inline t :tag "Tic label"
+          (string :tag "label" :size 10
+                  :help-echo "Enter the tic label here" )
+          (string :tag "  position" :size 10
+                  :help-echo "Enter an expression for the tic location here" )))
+                :tag (capitalize item)
+                :value default
+                :format "%{%t%}:\n%v\t  %i\n"
+                :entry-format "\t  %i %d %v\n"
+                :button-face 'gnuplot-gui-labels-face
+                :notify (lambda (widget &rest ignore)
+                          (setcdr (assoc (upcase (widget-get widget :tag))
+                                         gnuplot-gui-alist)
+                                  (widget-value widget)))))
+
+(defun gnuplot-gui-range (item default separator is-range)
+  "Create a range or pair widget for the Gnuplot GUI.
+ITEM is the object whose arguments are set by this widget, DEFAULT is
+the default value for the widget, SEPARATOR is a text string preceding
+the numerical argument, or the prefix for a pair operator.  IS-RANGE
+is non-nil if this is a 'range widget."
+  (widget-insert (capitalize item) ": ")
+  (if is-range (widget-insert "["))
+  (widget-create 'editable-field
+                :size 4 :tag item :value (car default)
+                :help-echo (format "Insert the first value of the %S here"
+                                   (downcase item))
+                :notify (lambda (widget &rest ignore)
+                          (setcar (cdr (assoc (widget-get widget :tag)
+                                              gnuplot-gui-alist))
+                                  (format "%s" (widget-value widget)))))
+  (if is-range (widget-insert separator) (widget-insert "  "))
+  (widget-create 'editable-field
+                :size 4 :tag item :value (cdr default)
+                :help-echo (format "Insert the second value of the %S here"
+                                   (downcase item))
+                :notify (lambda (widget &rest ignore)
+                          (setcdr (cdr (assoc (widget-get widget :tag)
+                                              gnuplot-gui-alist))
+                                  (format "%s" (widget-value widget)))))
+  (if is-range (widget-insert "]"))
+  (widget-insert " " (make-string (- 39 (current-column)) ?.)
+                " (numeric values)\n"))
+
+
+;; suppress compiler warning
+;;(eval-when-compile (defun gnuplot-info-lookup-symbol (sym mode)))
+(define-widget 'gnuplot-gui-info-link 'info-link
+  "A link to an info file for the Gnuplot GUI."
+  :action '(lambda (widget &optional event)
+            (let ((gnuplot-info-display 'frame))
+              (if gnuplot-keywords-pending             ; <HW>
+                  (gnuplot-setup-info-look))
+              (gnuplot-info-lookup-symbol (widget-value widget)
+                                          'gnuplot-mode))))
+
+\f
+;;; just about done
+
+(provide 'gnuplot-gui)
+;;;============================================================================
+;;;
+;;; gnuplot-gui.el ends here
diff --git a/util/X86MAC64/share/emacs/site-lisp/gnuplot-gui.elc b/util/X86MAC64/share/emacs/site-lisp/gnuplot-gui.elc
new file mode 100644 (file)
index 0000000..4df7392
Binary files /dev/null and b/util/X86MAC64/share/emacs/site-lisp/gnuplot-gui.elc differ
diff --git a/util/X86MAC64/share/emacs/site-lisp/gnuplot.el b/util/X86MAC64/share/emacs/site-lisp/gnuplot.el
new file mode 100644 (file)
index 0000000..66c7b75
--- /dev/null
@@ -0,0 +1,2578 @@
+;;;; gnuplot.el -- drive gnuplot from within emacs
+
+;; Copyright (C) 1998 Phil Type and Bruce Ravel, 1999-2002 Bruce Ravel
+
+;; Author:     Bruce Ravel <ravel@phys.washington.edu> and Phil Type
+;; Maintainer: Bruce Ravel <ravel@phys.washington.edu>
+;; Created:    June 28 1998
+;; Updated:    December 13, 2002
+;; Version:    0.6.0
+;; Keywords:   gnuplot, plotting
+
+;; This file is not part of GNU Emacs.
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; This program is free software; you can 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.
+;;
+;; This lisp script 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.
+;;
+;; Permission is granted to distribute copies of this lisp script
+;; provided the copyright notice and this permission are preserved in
+;; all copies.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with this program; if not, you can either send email to this
+;; program's maintainer or write to: The Free Software Foundation,
+;; Inc.; 675 Massachusetts Avenue; Cambridge, MA 02139, USA.
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; send bug reports to the author (ravel@phys.washington.edu)
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; Commentary:
+;;
+;; This is a major mode for composing gnuplot scripts and displaying
+;; their results using gnuplot.  It is optimized for use with gnuplot
+;; 3.7 or one of the later patchlevels of "version 3.6".  It should
+;; also work very handily with version 3.5.  This mode offers several
+;; tools to help you compose your scripts, including syntax
+;; colorization using either font-lock or hilit19, a syntax table
+;; appropriate to gnuplot, key bindings, pull-down menus, indentation,
+;; keyword completions and variable customization using the Custom
+;; package.  Once the script is composed, there are several function
+;; for sending some or all of the script to gnuplot.  The interaction
+;; with the gnuplot process is within a comint buffer.
+;;
+;;    C-c C-l       send current line to gnuplot
+;;    C-c C-v       send current line to gnuplot and move forward 1 line
+;;    C-c C-r       send current region to gnuplot
+;;    C-c C-b       send entire buffer to gnuplot
+;;    C-c C-f       send a file to gnuplot
+;;    C-c C-i       insert filename at point
+;;    C-c C-n       negate set option on current line
+;;    C-c C-c       comment region
+;;    C-c C-o       set arguments for command at point
+;;   S-mouse-2      set arguments for command under mouse cursor
+;;    C-c C-h       read the gnuplot info file
+;;    C-c C-e       show-gnuplot-buffer
+;;    C-c C-k       kill gnuplot process
+;;    C-c C-u       submit a bug report about gnuplot-mode
+;; M-tab or M-ret   complete keyword before point
+;;      ret         newline and indent
+;;      tab         indent current line
+;;
+;; Gnuplot-mode adds two key bindings to the comint buffer:
+;;     M-C-p        plot the current script buffer line-by-line
+;;     M-C-f        save the current script buffer and load that file
+;;
+;; These two functions are useful for starting up gnuplot-mode.
+;;
+;; M-x gnuplot-mode
+;;         start gnuplot-mode in the current buffer
+;;
+;; M-x gnuplot-make-buffer
+;;         open a new buffer (which is not visiting a file) and start
+;;         gnuplot-mode in that buffer
+;;
+;; ---------------------------------------------------------------------
+;;
+;; Other lisp files used by gnuplot.el
+;;
+;; info-look.el (comes with GNU Emacs 20):
+;;   This provides the interface to the gnuplot-info file and provides
+;;   on-line help and keyword completion functionality.  The version
+;;   of info-look.el that comes with version 20.2 of Emacs contains a
+;;   bug that will impede its interaction with the gnuplot info file.
+;;   You should use the version from the gnuplot-mode homepage
+;;   instead.  info-look is not distributed with XEmacs and so should
+;;   be installed along with gnuplot-mode when using XEmacs.
+;;
+;; gnuplot-gui.el (written by Bruce):
+;;   Defines the GUI interface for setting setting arguments to
+;;   gnuplot options.  This uses the widget package extensively.
+;;
+;; ---------------------------------------------------------------------
+;;
+;; This mode was inspired by the original gnu-plot-mode by Gershon
+;; Elber, which is distributed with gnuplot itself and which dates
+;; back to the early 90's.  Although this mode encompasses the
+;; functionality of the original, the two share no code and the
+;; current implementation takes advantage of many features of modern
+;; versions of emacs and adheres (or so I intend) to the major mode
+;; conventions described in the emacs-lisp reference for version 19
+;; and later.
+;;
+;; ---------------------------------------------------------------------
+;;
+;;                         Installation
+;;                         ============
+;;
+;; A recent version of this file can be found at
+;;   http://feff.phys.washington.edu/~ravel/software/gnuplot-mode/
+;;
+;; To autoload gnuplot-mode on any file with gp extension, put this in
+;; your .emacs file
+;;   (autoload 'gnuplot-mode "gnuplot" "gnuplot major mode" t)
+;;   (autoload 'gnuplot-make-buffer "gnuplot" "open a buffer in gnuplot-mode" t)
+;;
+;; Something like
+;;   (setq auto-mode-alist (append '(("\\.gp$" . gnuplot-mode))
+;;                                auto-mode-alist))
+;; is useful for having files ending in .gp start up in gnuplot-mode.
+;;
+;; Something like
+;;   (global-set-key [(f9)] 'gnuplot-make-buffer)
+;; may be useful.  This binds f9 to the function that opens a scratch
+;; buffer (i.e. one that is not visiting a file) in gnuplot-mode.
+;; This is handy for your quick 'n' dirty plotting chores.
+;;
+;; To use the `gnuplot-info-lookup-symbol' function, the file
+;; gnuplot.info MUST be installed somewhere that info can find it.
+;; This means you must either:
+;;   1.  Copy gnuplot.info to the normal info directory or
+;;   2.  Make sure info can find gnuplot.info by putting this in your
+;;       .emacs file:
+;;         (setenv "INFOPATH"
+;;           (concat (getenv "INFOPATH") ":"
+;;                    (expand-file-name "/path/to/file")))
+;;       where "/path/to/file" is the location of gnuplot.info
+;;
+;; This had been tested extensively with Emacs 19.34 and 20.2 and
+;; XEmacs 20.3 and in a limited manner with Emacs 19.30 and XEmacs
+;; 19.14.
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; History:
+;;
+;;  0.1   Jun 25 1998 Finished with initial release.
+;;  0.2   Sep  4 1998 Added filename insertion, indentation, and
+;;        colorization/completion in comint buffer. <BR>
+;;  0.2a  Sep 11 1998 made `indent-line-function' buffer-local (whoops!)
+;;        and fixed some stuff in the installation script <BR>
+;;  0.3   Sep 12 1998 include insertions menu <BR>
+;;  0.3a  Sep 14 1998 fixed bug finding info file if missing, fixed bug
+;;        starting font-lock, fixed bug re overwriting files in
+;;        installation script <BR>
+;;  0.3b  Sep 15 1998 Added (require 'info) to `(eval-and-compile'
+;;        clause, Added (kill-all-local-variables) to `gnuplot-mode',
+;;        altered order of:-
+;;            (provide 'gnuplot)
+;;            (run-hooks 'gnuplot-load-hook)
+;;        at the end of the file in case something in the load hook
+;;        requires gnuplot (oh not that old one again...), added
+;;        `gnuplot-comint-setup-hook', corrected `gnuplot-mark-active'
+;;        which caused an error to be raised by (mark) when the mark
+;;        was inactive <DB>  Some changes to font-lock rules <LB>&<BR>
+;;  0.4   Nov 14 1998 <BR> Use info-look for info interface.  No
+;;        change to gnuplot-mode user interface, but cleaner code.
+;;        With info-look, the help funcion works regardless of the
+;;        version number of gnuplot.  Also, `gnuplot-keywords' (used
+;;        for help, keyword-completion, and hilit19 highlighting) is
+;;        now generated automatically.
+;;  0.4a  Nov 18 1998 <BR> info-look leaves a couple of really useless
+;;        buffers lying around so I cleaned them up.  Also fixed
+;;        font-lock rules so that things in quotes get highlighted
+;;        correctly and the surrounding text is unhighlighted.  Fixed
+;;        up font-lock rules for plot and splot.  Added
+;;        `gnuplot-send-line-and-forward' as suggested by <MD>.
+;;  0.4b  Nov 21 1998 <BR> added toolbar for xemacs -- see file
+;;        gnuplot-toolbar.el.  fixed error message in plot line
+;;        function when line is empty.  option added to display the
+;;        comint buffer showing the gnuplot process in a separate
+;;        frame
+;;  0.4c  Minor stuff: Nov 30 1998 <BR> fixed highlighting in comint
+;;        buffer.  fixed frame behavior.  added "[:]" to range
+;;        insertions.  added :link to defgroup.  Dec 1 1998 <BR> fixed
+;;        some mismatched defcustoms.  added a few lines to suppress
+;;        some compile-time warnings.  Dec 3 1998 <BR> Fixed behavior
+;;        of filename insertion function.  Added more :links to
+;;        defgroup.
+;;  0.4d  Dec 6 1998 <BR> Added function gnuplot-setup-info-look and
+;;        variable gnuplot-info-hook to handle various versions of the
+;;        gnuplot info file.
+;;  0.4e  Dec 12 1998 <BR> Split up gnuplot-insertions-menu for ease of
+;;        custimization, put menubar initialization in a function.
+;;  0.4f  Dec 14 1998 <BR> defcustom the insertions submenus, add
+;;        gnuplot-insertion-menu-flag, intelligent Makefile knows
+;;        which info-look to compile
+;;  0.5   Dec 27 1998 <BR> wrote initial draft of gnuplot-gui.el,
+;;        included it in insertions menu and in `gnuplot-insert'.
+;;        Negate option function, bound to C-c C-n. Dec 29 1998 <BR>
+;;        C-c C-h with no response goes to Commands menu.  Transparent
+;;        toolbar icons.  Replace kw-compl with a simple completion
+;;        function.  Put gnuplot-toolbar code in gnuplot.el.
+;;  0.5a  Jan 23 1999 <BR> send file uses the load command.  add
+;;        gnuplot-plot-from-comint and
+;;        gnuplot-save-and-plot-from-comint and keybindings in the
+;;        comint buffer.  do (process-kill-without-query
+;;        gnuplot-process nil).  `gnuplot-negate-option' checks if set
+;;        option has a negated form.
+;;  0.5b  `gnuplot-kill-gnuplot-buffer' made more robust.  fixed a bug
+;;        in `gnuplot-plot-from-comint'.  fixed description of
+;;        gnuplot-faces group.
+;;  0.5c  update copyright information, update gpelcard
+;;  0.5d  Mar 20 1999 <BR> adopt installation materials from <LH>.  Add
+;;        some support for hidden3d.  Use constants in types alists in
+;;        gui.  Various other minor improvements to the types alists.
+;;  0.5e  Apr 6 1999 <BR> at the suggestion of <SE> I did away with the
+;;        gnuplot-which-highlight variable and revamped how
+;;        colorization gets turned on.  This is a bit tricky since I
+;;        want it to work with font-lock under emacs and xemacs and
+;;        with hilit19.  Apr 11 1999 <BR> insert space at end of
+;;        unique completion.  add a few GUI types, rewrite some stuff
+;;        in the GUI interface.  primitive support for plot, splot,
+;;        and fit.  Fixed completion in file widget.
+;;  0.5f  May 15 1999 <BR> Add pgnuplot.c and Win9x install instructions
+;;        to the distribution.  Fixed a defface bug.  Added
+;;        `gnuplot-keywords-when' allowing deferral of parsing the
+;;        info file.
+;;  0.5g  May 27 1999 <BR> Fixed font-locking of strings and
+;;        comments.  Figure out gnuplot-version number from startup
+;;        message and set `gnuplot-echo-command-line-flag'
+;;        accordingly.  Added `gnuplot-program-version' variable.
+;;        Check that font-lock is actually a feature, as suggested by
+;;        <KL>
+;;  0.5h  Aug 15 1999 <BR> Added `gnuplot-determine-gnuplot-version' so
+;;        that the gnuplot version number and `comint-process-echos'
+;;        actually get set correctly.  Actually, the first time
+;;        something is plotted, the echoing might not work, but the
+;;        second time it will.
+;;  0.5i  Sep  2 1999 <BR> Once again changed how
+;;        `comint-process-echos' gets set.  Maybe I got it right this
+;;        time?  Also fixed certain situations where the info file
+;;        did notget properly loaded (insertion with info toggle on
+;;        and info button in GUI).
+;;  0.5j  Sep  9 1999 <BR> Do a more robust check for the gnuplot
+;;        process before killing the gnuplot buffer, as suggested by
+;;        <SE>.
+;;  0.5k  Sep 22 1999 <BR> make `gnuplot-send-line-and-forward' skip
+;;        over blank and comment lines as suggested by <SE>.  Jan 10
+;;        2000 Bound C-c C-j to `gnuplot-forward-script-line'.
+;;  0.5l  Nov 16 2000 <BR> support for pm3d in gnuplot-gui and in plot
+;;        options insertions menu.  mentioned pm3d in gpelcard. gui
+;;        support for x11 pm3d and vgagl terms.
+;;        `gnuplot-negate-option' works with new syntax.
+;;  0.5m  Nov 17 2000 <BR> add colorization and gui support for new
+;;        commands in 3.8.  gui support for emf term. gui support for
+;;        new "set style" syntax.  much better scheme for determining
+;;        gnuplot version number + make better use of it.
+;;  0.5n  Jan 4 2001 <BR> corrected a serious problem interacting with
+;;        speedbar
+;;  0.5o  skipped
+;;  0.5p  Mar 14 2001 <BR> fixed problem with toolbar creation and
+;;        speedbar clicking
+;;  0.5q  May 30 2001 <BR> added font-lock bindings for words associated
+;;        with plotting
+;;  0.5r  Oct 17 2001 <BR> Incorporate two suggestions by <RF>, bind
+;;        C-c C-c to comment-region and C-c C-o to the GUI, also make
+;;        C-c C-l respect continuation lines
+;;        April 12, 2002 <BR> added feature to trim length of gnuplot
+;;        process buffer
+;;  0.5s  Jun 7 2002 <BR> Yet again changed how `comint-process-echos'
+;;        gets set.  It really needs to be nil on NTEmacs 21.1 or
+;;        comint gets stuck in an infinate loop.
+;;  0.5t  Sep 16 2002 <BR> Fixed a problem with C-c C-v jumping
+;;        forward 2 lines at a time
+;;  0.6.0 Dec 13 2002 <BR> Changed numbering scheme to accommodate
+;;        gnuplot packaging requirements
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; Acknowledgements:
+;;    David Batty       <DB> (numerous corrections)
+;;    Laurent Bonnaud   <LB> (suggestions regarding font-lock rules)
+;;    Markus Dickebohm  <MD> (suggested `gnuplot-send-line-and-forward')
+;;    Stephen Eglan     <SE> (suggested the use of info-look,
+;;                            contributed a bug fix regarding shutting
+;;                            down the gnuplot process, improvement to
+;;                            `gnuplot-send-line-and-forward')
+;;    Robert Fenk       <RF> (suggested respecting continuation lines)
+;;    Michael Karbach   <MK> (suggested trimming the gnuplot process buffer)
+;;    Alex Chan Libchen <AL> (suggested font-lock for plotting words)
+;;    Kuang-Yu Liu      <KL> (pointed out buggy dependence on font-lock)
+;;    Hrvoje Niksic     <HN> (help with defcustom arguments for insertions)
+;;    Andreas Rechtsteiner <AR> (pointed out problem with C-c C-v)
+;;    Michael Sanders   <MS> (help with the info-look interface)
+;;    Jinwei Shen       <JS> (suggested functionality in comint buffer)
+;;    Michael M. Tung   <MT> (prompted me to add pm3d support)
+;;    Holger Wenzel     <HW> (suggested using `gnuplot-keywords-when')
+;;    Wolfgang Zocher   <WZ> (pointed out problem with gnuplot-mode + speedbar)
+;;  and especially to Lars Hecking <LH> for including gnuplot-mode
+;;  with the gnuplot 3.7-beta distribution and for providing me with
+;;  installation materials
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; To Do:
+;;
+;; 1. Since `gnuplot-display-process' can be nil, it would be
+;;    handy to have a function to put on
+;;    `gnuplot-after-plot-buffer-hook' to check and see if the script
+;;    executed properly.  Alas I am not sure how gnuplot signals its
+;;    errors.
+;; 2. improve plot, splot, fit in GUI
+;; 3. interface to setting bind command using `read-key-sequence'.
+;;    this is a pain because the nomenclature is really different in
+;;    gnuplot than in `read-key-sequence'
+;;
+;;; Bugs:
+;;
+;; -- indentation is not quite right (but close)
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; Code:
+
+(require 'comint)
+(require 'easymenu)
+
+\f
+;;; --- variable definitions + eval-and-compile clauses
+
+;; handle defcustom
+(eval-and-compile
+  (condition-case ()
+      (require 'custom)
+    (error nil))
+  (if (and (featurep 'custom) (fboundp 'custom-declare-variable))
+      nil ;; We've got what we needed
+    ;; We have the old custom-library, hack around it!
+    (if (fboundp 'defgroup)
+        nil
+      (defmacro defgroup (&rest args)
+        nil))
+    (if (fboundp 'defface)
+        nil
+      (defmacro defface (var values doc &rest args)
+        `(progn
+             (defvar (, var) (quote (, var)))
+             ;; To make colors for your faces you need to set your .Xdefaults
+             ;; or set them up ahead of time in your .emacs file.
+             (make-face (, var))
+             )))
+    (if (fboundp 'defcustom)
+        nil
+      (defmacro defcustom (var value doc &rest args)
+        `(defvar (, var) (, value) (, doc))))))
+
+;; (eval-and-compile
+;;   (condition-case ()
+;;       (require 'kw-compl)
+;;     (error nil)))
+(eval-and-compile  ;; <DB>
+  (require 'info))
+(eval-and-compile
+  (condition-case ()
+      (require 'info-look)
+    (error nil)))
+;; this just gets rid of an annoying compile time error message
+;; (eval-when-compile
+;;   (defun gnuplot-dummy ())
+;;   (defalias 'hilit-set-mode-patterns 'gnuplot-dummy))
+
+
+(defconst gnuplot-xemacs-p (string-match "XEmacs" (emacs-version)))
+(defconst gnuplot-ntemacs-p (string-match "msvc" (emacs-version)))
+(defvar   gnuplot-three-eight-p "")
+
+(defconst gnuplot-maintainer "Bruce Ravel")
+(defconst gnuplot-maintainer-email "ravel@phys.washington.edu")
+(defconst gnuplot-maintainer-url
+  "http://feff.phys.washington.edu/~ravel/software/gnuplot-mode/")
+(defconst gnuplot-version "0.6.0")
+
+(defgroup gnuplot nil
+  "Gnuplot-mode for Emacs."
+  :prefix "gnuplot-"
+  :group 'processes
+  :group 'applications
+  :group 'local
+  :link '(emacs-library-link :tag "Lisp File" "gnuplot.el")
+  :link '(url-link :tag "Homepage"
+                  "http://feff.phys.washington.edu/~ravel/software/gnuplot-mode/")
+  :link '(custom-manual "(gnuplot)Top")
+  :link '(emacs-commentary-link :tag "Commentary" "gnuplot.el") )
+(defgroup gnuplot-insertions nil
+  "Insert commands into gnuplot-scripts from a pull-down menu."
+  :prefix "gnuplot-insertions-"
+  :group 'gnuplot)
+(defgroup gnuplot-hooks nil
+  "Hook variables used by `gnuplot-mode'."
+  :prefix "gnuplot-"
+  :group 'gnuplot)
+
+(defcustom gnuplot-mode-hook nil
+  "*Hook run when `gnuplot-mode' is entered."
+  :group 'gnuplot-hooks
+  :type 'hook)
+(defcustom gnuplot-load-hook nil
+  "*Hook run when gnuplot.el is first loaded."
+  :group 'gnuplot-hooks
+  :type 'hook)
+(defcustom gnuplot-after-plot-hook nil
+  "*Hook run after gnuplot plots something.
+This is the last thing done by the functions for plotting a line, a
+region, a buffer, or a file."
+  :group 'gnuplot-hooks
+  :type 'hook)
+(defcustom gnuplot-info-hook nil
+  "*Hook run before setting up the info-look interface.
+This hook is necessary to handle inconsistencies in versions of and
+sources of the gnuplot info file.  If Gnuplot-mode can find the info
+file generated from the 3.6beta patchlevel 347 (or later) release of
+Gnuplot, then this hook probably is not necessary.  Some versions of
+the info file may have a General Index session, which can be used by
+info-look.  In that case the following (or something similar with the
+value of `info-lookup-symbol-alist' altered appropriately) should be
+placed in the .emacs file.
+
+Emacs version 20.2 ships with a different version of info-look that
+does 20.3.  If you use any version of Emacs 19, you must use the
+version from 20.2.  Any version of XEmacs 20 or 21 should use the
+version from 20.3 but can use either.  XEmacs 19 should use the
+version 20.2.
+
+For the newer version of info-look, do this:
+
+  (add-hook \'gnuplot-info-hook
+           \'(lambda ()
+              (let ((elem (assoc \'gnuplot-mode info-lookup-alist)))
+                (delete elem info-lookup-alist)
+                (info-lookup-maybe-add-help
+                 :mode 'gnuplot-mode :topic 'symbol
+                 :regexp \"[a-zA-Z][_a-zA-Z0-9]*\"
+                 :doc-spec '((\"(gnuplot)General Index\" nil
+                              \"[_a-zA-Z0-9]+\"))))))
+
+For the older version of info-look, do this:
+
+  (add-hook \'gnuplot-info-hook
+           \'(lambda ()
+              (let ((elem (assoc \'gnuplot-mode info-lookup-alist)))
+                (delete elem info-lookup-alist)
+                (setq info-lookup-alist
+                      (append info-lookup-alist
+                              \'((gnuplot-mode
+                                 \"[a-zA-Z][_a-zA-Z0-9]*\" nil
+                                 ((\"(gnuplot)General Index\" nil
+                                   \"[_a-zA-Z0-9]+\" )))))))))"
+  :group 'gnuplot-hooks
+  :type 'hook)
+;; comint hook suggested by <DB>
+(defcustom gnuplot-comint-setup-hook nil
+  "*Hook run after setting up the gnuplot buffer in comint mode.
+So the configuration can be customised by the user."
+  :group 'gnuplot-hooks
+  :type 'hook)
+(defvar gnuplot-recently-sent nil
+  "This is a record of the most recent kind of text sent to gnuplot.
+It takes as its value nil, 'line, 'region, 'buffer, or 'file.  It is
+useful for functions included in `gnuplot-after-plot-hook'.")
+(make-variable-buffer-local 'gnuplot-recently-sent)
+
+(defcustom gnuplot-program "gnuplot"
+  "*The name of the gnuplot executable."
+  :group 'gnuplot
+  :type 'string)
+(defvar gnuplot-program-version nil
+  "Version number of gnuplot.
+This is found using `gnuplot-determine-gnuplot-version")
+(defcustom gnuplot-process-name "gnuplot"
+  "Name given to the gnuplot buffer and process."
+  :group 'gnuplot
+  :type 'string)
+(defvar gnuplot-buffer nil
+  "*The name of the buffer displaying the gnuplot process.")
+(defvar gnuplot-process nil
+  "Variable holding the process handle.")
+(defvar gnuplot-process-frame nil
+  "The frame for displaying the gnuplot process.
+This is used when `gnuplot-display-process' is equal to 'frame.")
+(defvar gnuplot-comint-recent-buffer nil
+  "The most recently plotted gnuplot script buffer.
+This is used by the function that plot from the comint buffer.  It is
+reset every time something is plotted from a script buffer.")
+
+(defcustom gnuplot-gnuplot-buffer "plot.gp"
+  "*The name of the gnuplot scratch buffer opened by 'gnuplot-make-buffer'."
+  :group 'gnuplot
+  :type 'string)
+
+(defcustom gnuplot-display-process 'window
+  "This controls how the gnuplot process buffer is displayed.
+The values are
+   'frame    display gnuplot process in a separate frame
+   'window   display gnuplot process in this frame but in another window
+   nil       `gnuplot-process' is in the current frame but not displayed"
+  :group 'gnuplot
+  :type '(radio (const :tag "Separate frame"  frame)
+               (const :tag "Separate window" window)
+               (const :tag "Not displayed"   nil)))
+(defcustom gnuplot-info-display 'window
+  "*Determines how `gnuplot-info-lookup-symbol' displays the info file.
+The values are
+   'frame    display info file in a separate frame
+   'window   display info file in another window
+   nil       display info file in the current window"
+  :group 'gnuplot
+  :type '(radio (const :tag "Separate frame"  frame)
+               (const :tag "Separate window" window)
+               (const :tag "This window"     nil)))
+
+(defcustom gnuplot-echo-command-line-flag (not gnuplot-ntemacs-p)
+  "*This sets the fall-back value of `comint-process-echos'.
+If `gnuplot-mode' cannot figure out what version number of gnuplot
+this is, then the value of this variable will be used for
+`comint-process-echos'.  It seems that gnuplot 3.5 wants this to be
+nil and 3.7 wants it to be t.  If lines that you send to gnuplot from
+the `gnuplot-mode' buffer are not appearing at the gnuplot prompt in
+the process buffer, try toggling it.  Also see the document string for
+`comint-process-echos'.  If you change this, kill the gnuplot process
+and start it again."
+  :group 'gnuplot
+  :type 'boolean)
+(defcustom gnuplot-insertions-show-help-flag nil
+  "*Non-nil means to display certain help messages automatically.
+These messages are shown after menu insertion of gnuplot commands."
+  :group 'gnuplot-insertions
+  :type 'boolean)
+
+(defcustom gnuplot-delay 0.01
+  "*Amount of time to delay before sending a new line to gnuplot.
+This is needed so that the the line is not written in the gnuplot
+buffer in advance of its prompt.  Increase this number if the
+prompts and lines are displayed out of order."
+  :group 'gnuplot
+  :type 'number)
+(defcustom gnuplot-buffer-max-size 1000
+  "*The maximum size in lines of the gnuplot process buffer.
+Each time text is written in the gnuplot process buffer, lines are
+trimmed from the beginning of the buffer so that the buffer is this
+many lines long.  The lines are deleted after the most recent lines
+were interpretted by gnuplot.  Setting to 0 turns off this feature
+(i.e. no lines get trimmed)."
+  :group 'gnuplot
+  :type 'integer)
+(defcustom gnuplot-quote-character "\'"
+  "*Quotation character used for inserting quoted strings.
+Gnuplot can use single or double quotes.  If you prefer to have the
+filename insertion function never insert quotes for you, set this
+to the empty string."
+  :group 'gnuplot
+  :type '(radio (const :tag "double quote"  "\"")
+               (const :tag "single quote"  "\'")
+               (const :tag "none"          ""  )))
+;; (defcustom gnuplot-gnuplot-version nil
+;;   "*Force gnuplot-mode to behave for this version of gnuplot."
+;;   :group 'gnuplot
+;;   :type '(radio (const :tag "unspecified"   nil)
+;;             (const :tag "3.8 or newer" "3.8")
+;;             (const :tag "3.7 or older" "3.7")))
+
+(defvar gnuplot-info-frame nil)
+(defvar gnuplot-info-nodes '())
+
+(defvar gnuplot-first-call t)
+
+;; with info-look, there is no need to carry this list around -- it
+;; can be generated on the fly appropriate to the currently installed
+;; version of gnuplot.info
+(defvar gnuplot-keywords nil
+  "A list of keywords used in GNUPLOT.
+These are set by `gnuplot-set-keywords-list' from the values in
+`info-lookup-cache'.")
+(defvar gnuplot-keywords-pending t     ;; <HW>
+  "A boolean which gets toggled when the info file is probed.")
+(defcustom gnuplot-keywords-when 'deferred ;; 'immediately
+  "This variable controls when the info file is parsed.
+The choices are immediately upon starting gnuplot-mode or the first
+time that data is needed.  If you use hilit19, then the info file is
+parsed immediately regardless of the value of this variable.  But
+you're not using that musty old thing, are you..."
+  :group 'gnuplot
+  :type
+  '(radio (const :tag "Parse info file when gnuplot-mode starts"    immediately)
+         (const :tag "Parse info file the first time it is needed" deferred)))
+
+(defgroup gnuplot-faces nil
+  "Text faces used by gnuplot-mode."
+  :prefix "gnuplot-"
+  :group 'gnuplot)
+
+(cond ((and (featurep 'custom) (fboundp 'custom-declare-variable))
+       (defface gnuplot-prompt-face '((((class color))
+                                      (:foreground "firebrick"))
+                                     (t
+                                      (:bold t :underline t)))
+        "Face used for the prompt in the gnuplot process buffer."
+        :group 'gnuplot-faces))
+      (t
+       (make-face 'gnuplot-prompt-face)
+       (set-face-foreground 'gnuplot-prompt-face "firebrick")))
+
+\f
+;;; --- key bindings and menus
+
+(defvar gnuplot-mode-map nil)
+(if gnuplot-mode-map
+    ()
+  (setq gnuplot-mode-map (make-sparse-keymap))
+  (define-key gnuplot-mode-map "\C-c\C-b" 'gnuplot-send-buffer-to-gnuplot)
+  (define-key gnuplot-mode-map "\C-c\C-c" 'comment-region) ; <RF>
+  (define-key gnuplot-mode-map "\C-c\C-o" 'gnuplot-gui-set-options-and-insert)
+  (define-key gnuplot-mode-map "\C-c\C-d" 'gnuplot-show-version)
+  (define-key gnuplot-mode-map "\C-c\C-e" 'gnuplot-show-gnuplot-buffer)
+  (define-key gnuplot-mode-map "\C-c\C-f" 'gnuplot-send-file-to-gnuplot)
+  (define-key gnuplot-mode-map "\C-c\C-h" 'gnuplot-info-lookup-symbol)
+  (define-key gnuplot-mode-map "\C-c\C-i" 'gnuplot-insert-filename)
+  (define-key gnuplot-mode-map "\C-c\C-j" 'gnuplot-forward-script-line)
+  (define-key gnuplot-mode-map "\C-c\C-k" 'gnuplot-kill-gnuplot-buffer)
+  (define-key gnuplot-mode-map "\C-c\C-l" 'gnuplot-send-line-to-gnuplot)
+  (define-key gnuplot-mode-map "\C-c\C-n" 'gnuplot-negate-option)
+  (define-key gnuplot-mode-map "\C-c\C-p" 'gnuplot-show-gnuplot-version)
+  (define-key gnuplot-mode-map "\C-c\C-r" 'gnuplot-send-region-to-gnuplot)
+  ;;(define-key gnuplot-mode-map "\C-c\C-t" 'gnuplot-gui-swap-simple-complete)
+  (define-key gnuplot-mode-map "\C-c\C-u" 'gnuplot-bug-report)
+  (define-key gnuplot-mode-map "\C-c\C-v" 'gnuplot-send-line-and-forward)
+  (define-key gnuplot-mode-map "\C-c\C-z" 'gnuplot-customize)
+  (define-key gnuplot-mode-map "\M-\r"    'gnuplot-complete-keyword)
+  (define-key gnuplot-mode-map "\M-\t"    'gnuplot-complete-keyword)
+  (define-key gnuplot-mode-map "\C-i"     'indent-for-tab-command)
+  (define-key gnuplot-mode-map "\C-m"     'newline-and-indent)
+  ;;(define-key gnuplot-mode-map "\C-m"     'reindent-then-newline-and-indent)
+  ;;(if (featurep 'kw-compl)
+  ;;    (define-key gnuplot-mode-map "\M-\r" 'kw-compl-abbrev)))
+  (cond (gnuplot-xemacs-p
+        (define-key gnuplot-mode-map '(shift button2)
+          'gnuplot-gui-mouse-set))
+       (t
+        (define-key gnuplot-mode-map [S-mouse-2]
+          'gnuplot-gui-mouse-set))) )
+
+(defvar gnuplot-mode-menu nil)
+(defvar gnuplot-menu nil
+  "Menu for `gnuplot-mode'.")
+(setq gnuplot-menu
+      '("Gnuplot"
+       ["Send line to gnuplot"             gnuplot-send-line-to-gnuplot   t]
+       ["Send line & move forward"         gnuplot-send-line-and-forward (not (eobp))]
+       ["Send region to gnuplot"           gnuplot-send-region-to-gnuplot
+        (gnuplot-mark-active)]
+       ["Send buffer to gnuplot"           gnuplot-send-buffer-to-gnuplot t]
+       ["Send file to gnuplot"             gnuplot-send-file-to-gnuplot t]
+       "---"
+       ["Insert filename at point"         gnuplot-insert-filename t]
+       ["Negate set option"                gnuplot-negate-option t]
+       ;;["Set key binding"             gnuplot-set-binding gnuplot-three-eight-p]
+       ["Keyword help"                     gnuplot-info-lookup-symbol
+        (or gnuplot-keywords gnuplot-keywords-pending)]
+       ["Show gnuplot process buffer"      gnuplot-show-gnuplot-buffer t]
+       ["Set arguments at point"           gnuplot-gui-set-options-and-insert
+        (fboundp 'gnuplot-gui-set-options-and-insert)]
+       ["Swap plot/splot/fit lists in GUI" gnuplot-gui-swap-simple-complete
+        (fboundp 'gnuplot-gui-swap-simple-complete)]
+       "---"
+       ["Customize gnuplot"                gnuplot-customize t]
+       ["Submit bug report"                gnuplot-bug-report t]
+       ["Show gnuplot-mode version"        gnuplot-show-version t]
+       ["Show gnuplot version"             gnuplot-show-gnuplot-version t]
+       "---"
+       ["Kill gnuplot"                     gnuplot-kill-gnuplot-buffer t]
+       ))
+
+\f
+;;; --- insertions variables and menus
+
+;;(load-library "gnuplot-insertions")
+(defvar gnuplot-mode-insertions-menu nil)
+(defvar gnuplot-insertions-menu nil
+  "Menu for insertions in `gnuplot-mode'.
+
+The insertions menu is composed of several sub-menus.  The variables
+describing the sub-menus are:
+  `gnuplot-insertions-adornments'
+  `gnuplot-insertions-plot-options'
+  `gnuplot-insertions-terminal'
+  `gnuplot-insertions-x-axis'
+  `gnuplot-insertions-y-axis'
+  `gnuplot-insertions-z-axis'
+  `gnuplot-insertions-x2-axis'
+  `gnuplot-insertions-y2-axis'
+  `gnuplot-insertions-parametric-plots'
+  `gnuplot-insertions-polar-plots'
+  `gnuplot-insertions-surface-plots'
+These variables can be customized by the user.  For example, there are
+many terminal types which are not in the terminal submenu but which
+may be compiled into a user's copy of gnuplot.
+
+Each of these variables is a list whose first element is a string and
+all the rest are vectors as described in the document string for
+`easy-menu-define'.  The callback used throughout these menus is
+`gnuplot-insert' which inserts the appropriate set expression and,
+optionally, looks up that item in the gnuplot info file.
+
+The easiest way to customize the submenus is to use the custom
+package.  Just type \\[gnuplot-customize] and follow your nose.
+
+You can also add new items to any of these sub-menus by adding to the
+`gnuplot-load-hook' in your .emacs file.  Here is an example of adding
+the \"regis\" terminal type to the terminal sub-menu:
+
+ (add-hook
+  'gnuplot-load-hook
+  '(lambda ()
+      (setq gnuplot-insertions-terminal
+           (append gnuplot-insertions-terminal
+                   (list
+                    [\"regis\"
+                      (gnuplot-insert \"set terminal regis\")
+                       t])))))")
+
+(defvar gnuplot-insertions-top ()
+  "Top part of insertions menu.
+See the document string for `gnuplot-insertions-menu'")
+
+(defcustom gnuplot-insertions-menu-flag t
+  "*Non-nil means to place the insertion menu in the menubar.
+Changing this will not effect a change in any currently existing
+`gnuplot-mode' buffer.  You will see the change the next time you
+create a `gnuplot-mode' buffer."
+  :group 'gnuplot-insertions
+  :type 'boolean)
+
+(defcustom gnuplot-insertions-adornments ; this is icky...
+  (if gnuplot-three-eight-p
+      '("adornments"
+       ["arrow"       (gnuplot-insert "set arrow ")          t]
+       ["bar"         (gnuplot-insert "set bar")             t]
+       ["border"      (gnuplot-insert "set border")          t]
+       ["boxwidth"    (gnuplot-insert "set boxwidth ")       t]
+       ["format"      (gnuplot-insert "set format ")         t]
+       ["grid"        (gnuplot-insert "set grid")            t]
+       ["key"         (gnuplot-insert "set key ")            t]
+       ["label"       (gnuplot-insert "set label ")          t]
+       ["pointsize"   (gnuplot-insert "set pointsize ")      t]
+       ["samples"     (gnuplot-insert "set samples ")        t]
+       ["size"        (gnuplot-insert "set size ")           t]
+       ["style"       (gnuplot-insert "set style ")          t]
+       ["tics"        (gnuplot-insert "set tics ")           t]
+       ["timefmt"     (gnuplot-insert "set timefmt ")        t]
+       ["timestamp"   (gnuplot-insert "set timestamp ")      t]
+       ["title"       (gnuplot-insert "set title ")          t]
+       ["zeroaxis"    (gnuplot-insert "set zeroaxis")        t] )
+    '("adornments"
+      ["data style"     (gnuplot-insert "set data style ")     t]
+      ["function style" (gnuplot-insert "set function style ") t]
+      ["arrow"          (gnuplot-insert "set arrow ")         t]
+      ["bar"           (gnuplot-insert "set bar")             t]
+      ["border"         (gnuplot-insert "set border")         t]
+      ["boxwidth"       (gnuplot-insert "set boxwidth ")       t]
+      ["format"         (gnuplot-insert "set format ")        t]
+      ["grid"          (gnuplot-insert "set grid")            t]
+      ["key"           (gnuplot-insert "set key ")            t]
+      ["label"          (gnuplot-insert "set label ")         t]
+      ["pointsize"      (gnuplot-insert "set pointsize ")      t]
+      ["samples"        (gnuplot-insert "set samples ")               t]
+      ["size"           (gnuplot-insert "set size ")          t]
+      ["tics"           (gnuplot-insert "set tics ")          t]
+      ["timefmt"        (gnuplot-insert "set timefmt ")        t]
+      ["timestamp"      (gnuplot-insert "set timestamp ")      t]
+      ["title"          (gnuplot-insert "set title ")         t]
+      ["zeroaxis"       (gnuplot-insert "set zeroaxis")        t] ))
+  "Adornments submenu in the insertions menu.
+See the document string for `gnuplot-insertions-menu'
+Changing this will not effect a change in any currently existing
+`gnuplot-mode' buffer.  You will see the change the next time you
+create a `gnuplot-mode' buffer."
+       :group 'gnuplot-insertions
+       :type '(list (string :tag "Title")
+                    (repeat :inline t
+                            (vector (string   :tag "Name")
+                                    (function :tag "Callback")
+                                    (boolean  :tag "Enabled" t)))))
+
+
+
+(defcustom gnuplot-insertions-plot-options
+  '("plot options"
+    ["autoscale"  (gnuplot-insert "set autoscale ")         t]
+    ["clip"      (gnuplot-insert "set clip ")               t]
+    ["encoding"   (gnuplot-insert "set encoding ")          t]
+    ["locale"     (gnuplot-insert "set locale ")            t]
+    ["logscale"          (gnuplot-insert "set logscale ")           t]
+    ["multiplot"  (gnuplot-insert "set multiplot")          t]
+    ["missing"   (gnuplot-insert "set missing \"\"")        t]
+    ["palette"    (gnuplot-insert "set palette ")            t]        ; <MT>
+    ["pm3d"       (gnuplot-insert "set pm3d ")               t]
+    ["offsets"   (gnuplot-insert "set offsets ")            t]
+    ["output"     (gnuplot-insert "set output ")            t]
+    ["zero"      (gnuplot-insert "set zero ")               t] )
+  "Plot options submenu in the insertions menu.
+See the document string for `gnuplot-insertions-menu'
+Changing this will not effect a change in any currently existing
+`gnuplot-mode' buffer.  You will see the change the next time you
+create a `gnuplot-mode' buffer."
+  :group 'gnuplot-insertions
+  :type '(list (string :tag "Title")
+              (repeat :inline t
+                      (vector (string   :tag "Name")
+                              (function :tag "Callback")
+                              (boolean  :tag "Enabled" t)))))
+
+
+(defcustom gnuplot-insertions-terminal
+  '("terminal"
+    ["eepic"      (gnuplot-insert "set terminal eepic")      t]
+    ["fig"        (gnuplot-insert "set terminal fig")        t]
+    ["gpic"       (gnuplot-insert "set terminal gpic")       t]
+    ["latex"      (gnuplot-insert "set terminal latex")      t]
+    ["linux"      (gnuplot-insert "set terminal linux")      t]
+    ["pbm"        (gnuplot-insert "set terminal pbm")        t]
+    ["png"        (gnuplot-insert "set terminal png")        t]
+    ["postscript" (gnuplot-insert "set terminal postscript") t]
+    ["pslatex"    (gnuplot-insert "set terminal pslatex")    t]
+    ["table"      (gnuplot-insert "set terminal table")      t]
+    ["tek40xx"    (gnuplot-insert "set terminal tek40xx")    t]
+    ["tkcanvas"   (gnuplot-insert "set terminal tkcanvas")   t]
+    ["tpic"       (gnuplot-insert "set terminal tpic")       t]
+    ["vgagl"      (gnuplot-insert "set terminal vgagl")      t]        ; for pm3d patch
+    ["vttek"      (gnuplot-insert "set terminal vttek")      t]
+    ["x11"        (gnuplot-insert "set terminal x11")        t] )
+  "Terminal submenu in the insertions menu.
+See the document string for `gnuplot-insertions-menu'
+Changing this will not effect a change in any currently existing
+`gnuplot-mode' buffer.  You will see the change the next time you
+create a `gnuplot-mode' buffer."
+  :group 'gnuplot-insertions
+  :type '(list (string :tag "Title")
+              (repeat :inline t
+                      (vector (string   :tag "Name")
+                              (function :tag "Callback")
+                              (boolean  :tag "Enabled" t)))))
+
+
+(defcustom gnuplot-insertions-x-axis
+  '("x-axis"
+    ["xdata"     (gnuplot-insert "set xdata ")              t]
+    ["xlabel"    (gnuplot-insert "set xlabel ")             t]
+    ["xrange"    (gnuplot-insert "set xrange [:]")          t]
+    ["xtics"     (gnuplot-insert "set xtics ")              t]
+    ["mxtics"    (gnuplot-insert "set mxtics ")             t]
+    ["xzeroaxis"  (gnuplot-insert "set xzeroaxis ")         t]
+    ["xdtics"    (gnuplot-insert "set xdtics ")             t]
+    ["xmtics"    (gnuplot-insert "set xmtics ")             t])
+  "X-axis submenu in the insertions menu.
+See the document string for `gnuplot-insertions-menu'
+Changing this will not effect a change in any currently existing
+`gnuplot-mode' buffer.  You will see the change the next time you
+create a `gnuplot-mode' buffer."
+  :group 'gnuplot-insertions
+  :type '(list (string :tag "Title")
+              (repeat :inline t
+                      (vector (string   :tag "Name")
+                              (function :tag "Callback")
+                              (boolean  :tag "Enabled" t)))))
+
+
+(defcustom gnuplot-insertions-x2-axis
+  '("x2-axis"
+    ["x2data"    (gnuplot-insert "set xdata ")              t]
+    ["x2label"   (gnuplot-insert "set xlabel ")             t]
+    ["x2range"   (gnuplot-insert "set xrange [:]")          t]
+    ["x2tics"    (gnuplot-insert "set xtics ")              t]
+    ["mx2tics"   (gnuplot-insert "set mxtics ")             t]
+    ["x2zeroaxis" (gnuplot-insert "set xzeroaxis ")         t]
+    ["x2dtics"   (gnuplot-insert "set xdtics ")             t]
+    ["x2mtics"   (gnuplot-insert "set xmtics ")             t])
+  "X2-axis submenu in the insertions menu.
+See the document string for `gnuplot-insertions-menu'
+Changing this will not effect a change in any currently existing
+`gnuplot-mode' buffer.  You will see the change the next time you
+create a `gnuplot-mode' buffer."
+  :group 'gnuplot-insertions
+  :type '(list (string :tag "Title")
+              (repeat :inline t
+                      (vector (string   :tag "Name")
+                              (function :tag "Callback")
+                              (boolean  :tag "Enabled" t)))))
+
+
+(defcustom gnuplot-insertions-y-axis
+  '("y-axis"
+    ["ydata"     (gnuplot-insert "set ydata ")              t]
+    ["ylabel"    (gnuplot-insert "set ylabel ")             t]
+    ["ymtics"    (gnuplot-insert "set ymtics ")             t]
+    ["yrange"    (gnuplot-insert "set yrange [:]")          t]
+    ["ytics"     (gnuplot-insert "set ytics ")              t]
+    ["yzeroaxis"  (gnuplot-insert "set yzeroaxis ")         t]
+    ["ydtics"    (gnuplot-insert "set ydtics ")             t]
+    ["mytics"    (gnuplot-insert "set mytics ")             t])
+  "Y-axis submenu in the insertions menu.
+See the document string for `gnuplot-insertions-menu'
+Changing this will not effect a change in any currently existing
+`gnuplot-mode' buffer.  You will see the change the next time you
+create a `gnuplot-mode' buffer."
+  :group 'gnuplot-insertions
+  :type '(list (string :tag "Title")
+              (repeat :inline t
+                      (vector (string   :tag "Name")
+                              (function :tag "Callback")
+                              (boolean  :tag "Enabled" t)))))
+
+(defcustom gnuplot-insertions-y2-axis
+  '("y2-axis"
+    ["y2data"    (gnuplot-insert "set ydata ")              t]
+    ["y2label"   (gnuplot-insert "set ylabel ")             t]
+    ["y2range"   (gnuplot-insert "set yrange [:]")          t]
+    ["y2tics"    (gnuplot-insert "set ytics ")              t]
+    ["my2tics"   (gnuplot-insert "set mytics ")             t]
+    ["y2zeroaxis"  (gnuplot-insert "set yzeroaxis ")        t]
+    ["y2mtics"   (gnuplot-insert "set ymtics ")             t]
+    ["y2dtics"   (gnuplot-insert "set ydtics ")             t])
+  "Y2-axis submenu in the insertions menu.
+See the document string for `gnuplot-insertions-menu'
+Changing this will not effect a change in any currently existing
+`gnuplot-mode' buffer.  You will see the change the next time you
+create a `gnuplot-mode' buffer."
+  :group 'gnuplot-insertions
+  :type '(list (string :tag "Title")
+              (repeat :inline t
+                      (vector (string   :tag "Name")
+                              (function :tag "Callback")
+                              (boolean  :tag "Enabled" t)))))
+
+
+
+(defcustom gnuplot-insertions-z-axis
+  '("z-axis"
+    ["zdata"     (gnuplot-insert "set zdata ")              t]
+    ["zlabel"    (gnuplot-insert "set zlabel ")             t]
+    ["zrange"    (gnuplot-insert "set zrange [:]")          t]
+    ["ztics"     (gnuplot-insert "set ztics ")              t]
+    ["mztics"    (gnuplot-insert "set mztics ")             t]
+    ["zdtics"    (gnuplot-insert "set zdtics ")             t]
+    ["zmtics"    (gnuplot-insert "set zmtics ")             t] )
+  "Z-axis submenu in the insertions menu.
+See the document string for `gnuplot-insertions-menu'
+Changing this will not effect a change in any currently existing
+`gnuplot-mode' buffer.  You will see the change the next time you
+create a `gnuplot-mode' buffer."
+  :group 'gnuplot-insertions
+  :type '(list (string :tag "Title")
+              (repeat :inline t
+                      (vector (string   :tag "Name")
+                              (function :tag "Callback")
+                              (boolean  :tag "Enabled" t)))))
+
+
+(defcustom gnuplot-insertions-parametric-plots
+  '("parametric plots"
+    ["parametric" (gnuplot-insert "set parametric")         t]
+    ["isosamples" (gnuplot-insert "set isosamples ")        t]
+    ["dummy"     (gnuplot-insert "set dummy ")              t]
+    ["trange"    (gnuplot-insert "set trange [:]")          t]
+    ["urange"    (gnuplot-insert "set urange [:]")          t]
+    ["vrange"    (gnuplot-insert "set vrange [:]")          t] )
+  "Parametric plots submenu in the insertions menu.
+See the document string for `gnuplot-insertions-menu'
+Changing this will not effect a change in any currently existing
+`gnuplot-mode' buffer.  You will see the change the next time you
+create a `gnuplot-mode' buffer."
+  :group 'gnuplot-insertions
+  :type '(list (string :tag "Title")
+              (repeat :inline t
+                      (vector (string   :tag "Name")
+                              (function :tag "Callback")
+                              (boolean  :tag "Enabled" t)))))
+
+
+(defcustom gnuplot-insertions-polar-plots
+  '("polar plots"
+    ["polar"     (gnuplot-insert "set polar")               t]
+    ["angles"    (gnuplot-insert "set angles ")             t]
+    ["rrange"    (gnuplot-insert "set rrange [:]")          t] )
+  "Polar plots submenu in the insertions menu.
+See the document string for `gnuplot-insertions-menu'
+Changing this will not effect a change in any currently existing
+`gnuplot-mode' buffer.  You will see the change the next time you
+create a `gnuplot-mode' buffer."
+  :group 'gnuplot-insertions
+  :type '(list (string :tag "Title")
+              (repeat :inline t
+                      (vector (string   :tag "Name")
+                              (function :tag "Callback")
+                              (boolean  :tag "Enabled" t)))))
+
+
+(defcustom gnuplot-insertions-surface-plots
+  '("surface plots"
+    ["clabel"    (gnuplot-insert "set clabel ")             t]
+    ["cntrparam"  (gnuplot-insert "set cntrparam ")         t]
+    ["contour"   (gnuplot-insert "set contour")             t]
+    ["dgrid3d"   (gnuplot-insert "set dgrid3d ")            t]
+    ["hidden3d"          (gnuplot-insert "set hidden3d ")           t]
+    ["mapping"   (gnuplot-insert "set mapping ")            t]
+    ["surface"   (gnuplot-insert "set surface ")            t]
+    ["view"      (gnuplot-insert "set view ")               t] )
+  "Surface plots submenu in the insertions menu.
+See the document string for `gnuplot-insertions-menu'
+Changing this will not effect a change in any currently existing
+`gnuplot-mode' buffer.  You will see the change the next time you
+create a `gnuplot-mode' buffer."
+  :group 'gnuplot-insertions
+  :type '(list (string :tag "Title")
+              (repeat :inline t
+                      (vector (string   :tag "Name")
+                              (function :tag "Callback")
+                              (boolean  :tag "Enabled" t)))))
+
+
+
+(defvar gnuplot-insertions-bottom ()
+  "Bottom part of the insertions menu.
+This part contains the toggle buttons for displaying info or
+opening an argument-setting popup.")
+(setq gnuplot-insertions-bottom
+      '("---"
+       ["Display of info with insertion" gnuplot-toggle-info-display
+        :style toggle :selected gnuplot-insertions-show-help-flag]
+       ["Display GUI popup with insertion" gnuplot-gui-toggle-popup
+        :active (fboundp 'gnuplot-gui-toggle-popup)
+        :style toggle :selected (and (fboundp 'gnuplot-gui-toggle-popup)
+                                     gnuplot-gui-popup-flag)] ))
+
+
+;; Regarding a comment by <DB>:
+;;
+;; This is from the header in easymenu.el distributed with XEmacs:
+;;
+;; ;; - Function: easy-menu-add MENU [ MAP ]
+;; ;;     Add MENU to the current menubar in MAP.
+;; ;;
+;; ;; - Function: easy-menu-remove MENU
+;; ;;     Remove MENU from the current menubar.
+;; ;;
+;; ;; Emacs 19 never uses `easy-menu-add' or `easy-menu-remove', menus
+;; ;; automatically appear and disappear when the keymaps specified by
+;; ;; the MAPS argument to `easy-menu-define' are activated.
+;; ;;
+;; ;; XEmacs will bind the map to button3 in each MAPS, but you must
+;; ;; explicitly call `easy-menu-add' and `easy-menu-remove' to add and
+;; ;; remove menus from the menu bar.
+;;
+;; in Emacs, easy-menu-add is defined like this:
+;;      (defun easy-menu-add (menu &optional map))
+
+(defun gnuplot-setup-menubar ()
+  "Initial setup of gnuplot and insertions menus."
+  (if gnuplot-insertions-menu-flag     ; set up insertions menu
+      (progn
+       (if gnuplot-xemacs-p
+           (setq gnuplot-insertions-top
+                 '("insert set expression" "--:doubleLine"))
+         (setq gnuplot-insertions-top
+               '("insert set expression" "---")))
+       (setq gnuplot-insertions-menu
+             (append (list "Insertions")
+                     gnuplot-insertions-top
+                     (list gnuplot-insertions-adornments)
+                     (list gnuplot-insertions-plot-options)
+                     (list gnuplot-insertions-terminal)
+                     (list gnuplot-insertions-x-axis)
+                     (list gnuplot-insertions-y-axis)
+                     (list gnuplot-insertions-z-axis)
+                     (list gnuplot-insertions-x2-axis)
+                     (list gnuplot-insertions-y2-axis)
+                     (list gnuplot-insertions-parametric-plots)
+                     (list gnuplot-insertions-polar-plots)
+                     (list gnuplot-insertions-surface-plots)
+                     gnuplot-insertions-bottom))
+       (easy-menu-define gnuplot-mode-insertions-menu gnuplot-mode-map
+                         "Insertions menu used in Gnuplot-mode"
+                         gnuplot-insertions-menu)
+       (easy-menu-add gnuplot-mode-insertions-menu gnuplot-mode-map)))
+  (easy-menu-define                    ; set up gnuplot menu
+   gnuplot-mode-menu gnuplot-mode-map "Menu used in gnuplot-mode"
+   gnuplot-menu)
+  (easy-menu-add gnuplot-mode-menu gnuplot-mode-map) )
+
+;; There is no `mark-active' variable in XEmacs.  Hassle!  This is not
+;; only replicates mark-active, but it only returns true if the region
+;; is of non-zero width.
+;; Error checking suggested by <DB>
+(defun gnuplot-mark-active ()
+  "Return non-nil if the mark is active and it is not equal to point."
+  (condition-case nil
+      (and (mark) (/= (mark) (point)))
+    (error nil)))
+
+\f
+;;; --- XEmacs toolbar
+
+(defgroup gnuplot-toolbar nil
+  "Toolbar used by XEmacs."
+  :prefix "gnuplot-toolbar-"
+  :group 'gnuplot)
+
+(defcustom gnuplot-toolbar-display-flag gnuplot-xemacs-p
+  "*Non-nil means to display display a toolbar in XEmacs."
+  :group 'gnuplot-toolbar
+  :type 'boolean)
+
+(defcustom gnuplot-toolbar-use-toolbar (if (featurep 'toolbar) 'left-toolbar nil)
+  "*If nil, do not use a toolbar.
+If it is non-nil, it must be a toolbar.  The five legal values are
+`default-toolbar', `top-toolbar', `bottom-toolbar', `right-toolbar',
+and `left-toolbar', although choosing `default-toolbar' or
+`top-toolbar' may be a bad idea since either will make the GNUPLOT
+toolbar replace the standard toolbar.  Changing this will not change
+the toolbar in a currently existing buffer, but it will take effect
+the next time you use `gnuplot-mode' and emacs.
+
+This is only used if a toolbar can be displayed, thus this is used in
+XEmacs and ignored in FSF Emacs."
+  :type '(choice (const default-toolbar)
+                (const top-toolbar)
+                (const bottom-toolbar)
+                (const left-toolbar)
+                (const right-toolbar)
+                (const :tag "No toolbar" nil))
+  :group 'gnuplot-toolbar)
+
+(defvar gnuplot-toolbar-location "")
+
+(defun gnuplot-toolbar-setup-toolbar (toolbar)
+  "Setup function for the `gnuplot-mode' toolbar.
+TOOLBAR contains the toolbar specification.
+This is basically swiped from VM."
+  (let ((width 46) (height 46)
+       (buffer (current-buffer))
+       (frame (selected-frame))
+       (tag-set '(win)))
+    (cond
+     ((eq (symbol-value gnuplot-toolbar-use-toolbar) right-toolbar)
+      (setq gnuplot-toolbar-location       "right")
+      (set-specifier right-toolbar         toolbar buffer)
+      (set-specifier right-toolbar-width   width frame  tag-set))
+     ((eq (symbol-value gnuplot-toolbar-use-toolbar) left-toolbar)
+      (setq gnuplot-toolbar-location       "left")
+      (set-specifier left-toolbar          toolbar buffer)
+      (set-specifier left-toolbar-width    width frame  tag-set))
+     ((eq (symbol-value gnuplot-toolbar-use-toolbar) bottom-toolbar)
+      (setq gnuplot-toolbar-location       "bottom")
+      (set-specifier bottom-toolbar        toolbar buffer)
+      (set-specifier bottom-toolbar-height height frame tag-set))
+     ((eq (symbol-value gnuplot-toolbar-use-toolbar) top-toolbar)
+      (setq gnuplot-toolbar-location       "top")
+      (set-specifier top-toolbar           toolbar buffer)
+      (set-specifier top-toolbar-height    height frame tag-set))) ))
+
+(defvar gnuplot-line-xpm
+  (if (featurep 'xpm)
+      (toolbar-make-button-list
+       "/* XPM */
+static char *line[] = {
+/* width height num_colors chars_per_pixel */
+\"    40    40        5           1\",
+/* colors */
+\". c #000000\",
+\"a c #bebebe s backgroundToolBarColor\",
+\"b c #2f4f4f\",
+\"c c #ff6347\",
+\"d c #0000ff\",
+/* pixels */
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaa..a..aaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaa..aaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaa..a..a....aaa...aaaaaaaaaaaa\",
+\"aaaaaaaaaaaa..a..a..a..a..a..aaaaaaaaaaa\",
+\"aaaaaaaaaaaa..a..a.aa..a.....aaaaaaaaaaa\",
+\"aaaaaaaaaaa..a..a..a..a..aaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaa..a..a..a..a..a..aaaaaaaaaaaa\",
+\"aaaaaaaaaaa..a..a..a..aa...aaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaa..aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaaadaaaaaaaa\",
+\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaadaaaaaaaaa\",
+\"aaaaaaa..aaaaaaaaaaaaaaaaaaaadaaaaaaaaaa\",
+\"aaaaaaaa.aaaaaaaaaaaaaaaaaaadaaaaaaaaaaa\",
+\"aaaaaaaa.aaaaaaaaaacaaaadaadaaaaaaaaaaaa\",
+\"aaaaaaaa.caaadaaaccaccadaddaaaaaccaaaaaa\",
+\"aaaaaaa..accdaddcaaaaaccaaaaaaccaaaaaaaa\",
+\"aaaaaaaa.aadcaccdaaaadaaccaaccaaaaaaaaaa\",
+\"aaaaaaaa.adaacaaaddadaaaaaccaaaaaaaaaaaa\",
+\"aaaaaaaa.daaaaaaaaadaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaa..aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaa............................aaaaaa\",
+\"aaaaaaaa.aaaa.aaaa.aaaa.aaaa.aaaaaaaaaaa\",
+\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"};")
+  "XPM format image used for the \"plot line\" button"))
+
+(defvar gnuplot-region-xpm
+  (if (featurep 'xpm)
+      (toolbar-make-button-list
+       "/* XPM */
+static char *region[] = {
+/* width height num_colors chars_per_pixel */
+\"    40    40        5           1\",
+/* colors */
+\". c #000000\",
+\"a c #bebebe s backgroundToolBarColor\",
+\"b c #2f4f4f\",
+\"c c #ff6347\",
+\"d c #0000ff\",
+/* pixels */
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaa..aaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaa.a..a...aaa....a..aa...aa....aaaaa\",
+\"aaaaaa...a..a..a..a..a..a..a..a..a..aaaa\",
+\"aaaaaa..aa.....a.aa..a....aa..a.aa..aaaa\",
+\"aaaaa..a...aaaa..aa.a..a..aa....a..aaaaa\",
+\"aaaaa..a...a..a..a..a..a..a..a..a..aaaaa\",
+\"aaaa..aaaa...aaa....a..aa...aa..a..aaaaa\",
+\"aaaaaaaaaaaaaaaaa..aaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaa...aaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaaadaaaaaaaa\",
+\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaadaaaaaaaaa\",
+\"aaaaaaa..aaaaaaaaaaaaaaaaaaaadaaaaaaaaaa\",
+\"aaaaaaaa.aaaaaaaaaaaaaaaaaaadaaaaaaaaaaa\",
+\"aaaaaaaa.aaaaaaaaaacaaaadaadaaaaaaaaaaaa\",
+\"aaaaaaaa.caaadaaaccaccadaddaaaaaccaaaaaa\",
+\"aaaaaaa..accdaddcaaaaaccaaaaaaccaaaaaaaa\",
+\"aaaaaaaa.aadcaccdaaaadaaccaaccaaaaaaaaaa\",
+\"aaaaaaaa.adaacaaaddadaaaaaccaaaaaaaaaaaa\",
+\"aaaaaaaa.daaaaaaaaadaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaa..aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaa............................aaaaaa\",
+\"aaaaaaaa.aaaa.aaaa.aaaa.aaaa.aaaaaaaaaaa\",
+\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"};")
+  "XPM format image used for the \"plot region\" button"))
+
+(defvar gnuplot-buffer-xpm
+  (if (featurep 'xpm)
+      (toolbar-make-button-list
+       "/* XPM */
+static char *buffer[] = {
+/* width height num_colors chars_per_pixel */
+\"    40    40        5           1\",
+/* colors */
+\". c #000000\",
+\"a c #bebebe s backgroundToolBarColor\",
+\"b c #2f4f4f\",
+\"c c #ff6347\",
+\"d c #0000ff\",
+/* pixels */
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaa..aaaaaaaaaa......aaaaaaaaaaaaaa\",
+\"aaaaaaaa..aaaaaaaaa..a..aaaaaaaaaaaaaaaa\",
+\"aaaaaaa....aa..a.........a...aa.a.aaaaaa\",
+\"aaaaaaa..a..a..a..a..a..a..a..a...aaaaaa\",
+\"aaaaaaa.aa....aa..a..a..a.....a..aaaaaaa\",
+\"aaaaaa...a.a..a..a..a..a..aaaa..aaaaaaaa\",
+\"aaaaaa.....a..a..a..a..a..a..a..aaaaaaaa\",
+\"aaaaaa....aaa..a.a..a..aa...aa..aaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaaadaaaaaaaa\",
+\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaadaaaaaaaaa\",
+\"aaaaaaa..aaaaaaaaaaaaaaaaaaaadaaaaaaaaaa\",
+\"aaaaaaaa.aaaaaaaaaaaaaaaaaaadaaaaaaaaaaa\",
+\"aaaaaaaa.aaaaaaaaaacaaaadaadaaaaaaaaaaaa\",
+\"aaaaaaaa.caaadaaaccaccadaddaaaaaccaaaaaa\",
+\"aaaaaaa..accdaddcaaaaaccaaaaaaccaaaaaaaa\",
+\"aaaaaaaa.aadcaccdaaaadaaccaaccaaaaaaaaaa\",
+\"aaaaaaaa.adaacaaaddadaaaaaccaaaaaaaaaaaa\",
+\"aaaaaaaa.daaaaaaaaadaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaa..aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaa............................aaaaaa\",
+\"aaaaaaaa.aaaa.aaaa.aaaa.aaaa.aaaaaaaaaaa\",
+\"aaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"};")
+  "XPM format image used for the \"plot buffer\" button"))
+
+(defvar gnuplot-doc-xpm
+  (if (featurep 'xpm)
+      (toolbar-make-button-list
+       "/* XPM */
+static char *book_index[] = {
+/* width height num_colors chars_per_pixel */
+\"    40    40        6            1\",
+/* colors */
+\". c #000000\",
+\"a c #bebebe s backgroundToolBarColor\",
+\"b c #2f4f4f\",
+\"c c #ff0000\",
+\"d c #ffffff\",
+\"e c #708090\",
+/* pixels */
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaa.........bbeaaaebb..........aaaaaa\",
+\"aaaaaa.ddddddddaaebebeaaddddddddd.aaaaaa\",
+\"aaaa...dab.bddeebadbdaeebedeeeeed...aaaa\",
+\"aaaa.c.dbaddddebeedbdeebeedebebed.c.aaaa\",
+\"aaaa.c.d.de.edeebeabdbbeeddebbbed.c.aaaa\",
+\"aaaa.c.dbad.ddebeadbdeeebeddeeeed.c.aaaa\",
+\"aaaa.c.dab..ddeeeedbdebeeedebebed.c.aaaa\",
+\"aaaa.c.dddddddeebeabdebebedeebedd.c.aaaa\",
+\"aaaa.c.debebedebeedbdbebeedbeeeeb.c.aaaa\",
+\"aaaa.c.debeeedeeeaabdaaddddebedbb.c.aaaa\",
+\"aaaa.c.deebeddbebedbdbaa.adeeedeb.c.aaaa\",
+\"aaaa.c.ddeebedeeebaba.dd.dddeeedd.c.aaaa\",
+\"aaaa.c.debeebdbeeedbd....ddeebeed.c.aaaa\",
+\"aaaa.c.deebeedeebadbd.dd.ddeeeedd.c.aaaa\",
+\"aaaa.c.dbbebddeeeeabd.aa.adebebbd.c.aaaa\",
+\"aaaa.c.deeeeedeebeabaedddddeeeedd.c.aaaa\",
+\"aaaa.c.dbebbbdebeadbdaeeeedebeeed.c.aaaa\",
+\"aaaa.c.deeebddeeebdbdeebeedeebeed.c.aaaa\",
+\"aaaa.c.debeeedebeeabdebebedebeebd.c.aaaa\",
+\"aaaa.c.deebbedeeeedbdeeeeddeeeeed.c.aaaa\",
+\"aaaa.c.dddddddddaadbdaddddddddddd.c.aaaa\",
+\"aaaa.c..........beabaeb...........c.aaaa\",
+\"aaaa.c.bbbbbbbbbb.bbbbbbbbbbbbbbb.c.aaaa\",
+\"aaaa.c.bbbbbbbbbb..e.bbbbbbbbbbbb.c.aaaa\",
+\"aaaa.c.bbbbbbbbbb.b.bbbbbbbbbbbbb.c.aaaa\",
+\"aaaa.c............e.e.............c.aaaa\",
+\"aaaa.cccccccccccc.a.a.ccccccccccccc.aaaa\",
+\"aaaa................................aaaa\",
+\"aaaaaaaaaaaaaaaaaa...aaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"};")
+  "XPM format image used for the \"document\" button"))
+
+(defvar gnuplot-help-xpm
+  (if (featurep 'xpm)
+      (toolbar-make-button-list
+       "/* XPM */
+static char *help_btn[] = {
+/* width height num_colors chars_per_pixel */
+\"    40    40        3            1\",
+/* colors */
+\"a c #bebebe s backgroundToolBarColor\",
+\"b c #000000\",
+\"c c #ff0000\",
+/* pixels */
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaabbbbbbbbaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaabbbccccccccbbbaaaaaaaaaaaaa\",
+\"aaaaaaaaaaabbccccccccccccccbbaaaaaaaaaaa\",
+\"aaaaaaaaaabccccccccccccccccccbaaaaaaaaaa\",
+\"aaaaaaaaabccccccccccccccccccccbaaaaaaaaa\",
+\"aaaaaaaabcccccccbbbbbbbbcccccccbaaaaaaaa\",
+\"aaaaaaaabccccbbbaaaaaaaabbbccccbaaaaaaaa\",
+\"aaaaaaabccccbaaaaaaaaaaaaaabccccbaaaaaaa\",
+\"aaaaaaabcccbaaaaaaaaaaaaaaaabcccbaaaaaaa\",
+\"aaaaaaabcccbaaaaaaaaaaaaaaaabcccbaaaaaaa\",
+\"aaaaaaabcccbaaaaaaaaaaaaaaaabcccbaaaaaaa\",
+\"aaaaaaabbbbbaaaaaaaaaaaaaaabccccbaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaabbbccccbaaaaaaaa\",
+\"aaaaaaaaaaaaaaaabbbbbbbbcccccccbaaaaaaaa\",
+\"aaaaaaaaaaaaaaaabcccccccccccccbaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaabccccccccccccbaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaabccccccccccbbaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaabccccbbbbbbaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaabccccbaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaabccccbaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaabbbbbbaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaabbbbbbaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaabccccbaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaabccccbaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaabccccbaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaabbbbbbaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",
+\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"};")
+  "XPM format image used for the \"help\" button"))
+
+(defvar gnuplot-toolbar
+  '([gnuplot-line-xpm
+     gnuplot-line-fn     t     "Plot the line under point"]
+    [gnuplot-region-xpm
+     gnuplot-region-fn   t     "Plot the selected region"]
+    [gnuplot-buffer-xpm
+     gnuplot-buffer-fn   t     "Plot the entire buffer"]
+    [:style 3d :size 8]
+    [gnuplot-help-xpm
+     gnuplot-help-fn     t     "Look at the gnuplot process buffer"]
+    [gnuplot-doc-xpm
+     gnuplot-doc-fn      t     "Look at the gnuplot document"])
+  "The gnuplot toolbar.")
+
+(fset 'gnuplot-line-fn   'gnuplot-send-line-and-forward)
+(fset 'gnuplot-region-fn 'gnuplot-send-region-to-gnuplot)
+(fset 'gnuplot-buffer-fn 'gnuplot-send-buffer-to-gnuplot)
+(fset 'gnuplot-help-fn   'gnuplot-show-gnuplot-buffer)
+(fset 'gnuplot-doc-fn    'gnuplot-info-lookup-symbol)
+
+(defvar gnuplot-all-buttons-defined
+  (and (listp gnuplot-line-xpm)   (listp gnuplot-region-xpm)
+       (listp gnuplot-buffer-xpm) (listp gnuplot-doc-xpm)
+       (listp gnuplot-help-xpm)))
+
+
+(defun gnuplot-make-toolbar-function ()
+  (if (and gnuplot-xemacs-p gnuplot-all-buttons-defined)
+      (progn
+       ;;(remove-specifier gnuplot-toolbar-use-toolbar (current-buffer))
+       (gnuplot-toolbar-setup-toolbar gnuplot-toolbar)
+       (add-spec-to-specifier (symbol-value gnuplot-toolbar-use-toolbar)
+                              gnuplot-toolbar
+                              (current-buffer) ))))
+
+;;(defalias 'gnuplot-make-toolbar 'gnuplot-make-toolbar-function)
+
+
+\f
+;;; --- syntax colorization, syntax table
+
+(defvar gnuplot-mode-syntax-table nil
+  "Syntax table in use in `gnuplot-mode' buffers.
+This is the same as the standard syntax table except that ' is a
+string quote character, ` and _ are word characters, and math
+operators are punctuation characters.")
+(if gnuplot-mode-syntax-table
+    ()
+  (setq gnuplot-mode-syntax-table (make-syntax-table))
+  (modify-syntax-entry ?* "."  gnuplot-mode-syntax-table)
+  (modify-syntax-entry ?+ "."  gnuplot-mode-syntax-table)
+  (modify-syntax-entry ?- "."  gnuplot-mode-syntax-table)
+  (modify-syntax-entry ?/ "."  gnuplot-mode-syntax-table)
+  (modify-syntax-entry ?% "."  gnuplot-mode-syntax-table)
+  ;;(modify-syntax-entry ?& "."  gnuplot-mode-syntax-table) ; rarely used
+  ;;(modify-syntax-entry ?^ "."  gnuplot-mode-syntax-table) ; operators
+  ;;(modify-syntax-entry ?| "."  gnuplot-mode-syntax-table) ; in gnuplot,
+  ;;(modify-syntax-entry ?& "."  gnuplot-mode-syntax-table) ; (by me,
+  ;;(modify-syntax-entry ?? "."  gnuplot-mode-syntax-table) ;  anyway...)
+  ;;(modify-syntax-entry ?~ "."  gnuplot-mode-syntax-table) ;
+  (modify-syntax-entry ?' "\"" gnuplot-mode-syntax-table)
+  (modify-syntax-entry ?` "w"  gnuplot-mode-syntax-table)
+  (modify-syntax-entry ?_ "w"  gnuplot-mode-syntax-table))
+
+
+(defvar gnuplot-font-lock-keywords nil)
+(defvar gnuplot-font-lock-keywords-1 nil)
+(defvar gnuplot-font-lock-keywords-2 nil)
+
+;; used make-regexp to generate the regular expression strings
+;; this is all pattern based
+;; (insert (format "%s"
+;;             (regexp-quote
+;;              (make-regexp
+;;               '("abs" "acos" "acosh" "arg" "asin" "asinh" "atan"
+;;                 "atan2" "atanh" "besj0" "besj1" "besy0" "besy1"
+;;                 "ceil" "cos" "cosh" "erf" "erfc" "exp" "floor"
+;;                 "gamma" "ibeta" "inverf" "igamma" "imag" "invnorm"
+;;                 "int" "lgamma" "log" "log10" "norm" "rand" "real"
+;;                 "sgn" "sin" "sinh" "sqrt" "tan" "tanh" "column"
+;;                 "tm_hour" "tm_mday" "tm_min" "tm_mon" "tm_sec"
+;;                 "tm_wday" "tm_yday" "tm_year" "valid")))))
+
+;; Set up colorization for gnuplot.
+;; This handles font-lock for emacs and xemacs.
+;; hilit19 is handled in `gnuplot-mode'.
+;; These regular expressions treat the gnuplot vocabulary as complete
+;; words.  Although gnuplot will recognise unique abbreviations, these
+;; regular expressions will not."
+(if (featurep 'font-lock)              ; <KL>
+    (setq gnuplot-font-lock-keywords
+         (list
+                                       ; comments
+          '("#.*$" . font-lock-comment-face)
+                                       ; quoted things
+          ;'("['\"]\\([^'\"\n]*\\)['\"]"
+          ;  1 font-lock-string-face)
+          '("'[^'\n]*'?" . font-lock-string-face)
+                                       ; stuff in brackets, sugg. by <LB>
+          '("\\[\\([^]]+\\)\\]"
+            1 font-lock-reference-face)
+                                       ; variable/function definitions
+          '("\\(\\<[a-z]+[a-z_0-9()]*\\)[ \t]*="
+            1 font-lock-variable-name-face)
+                                       ; built-in function names
+          (cons (concat
+                 "\\<\\("
+                 "a\\(bs\\|cosh\?\\|rg\\|sinh\?\\|"
+                 "tan\\(\\|\[2h\]\\)\\)\\|"
+                 "bes\\(j\[01\]\\|y\[01\]\\)\\|"
+                 "c\\(eil\\|o\\(lumn\\|sh\?\\)\\)\\|"
+                 "e\\(rfc\?\\|xp\\)\\|floor\\|gamma\\|"
+                 "i\\(beta\\|gamma\\|mag\\|"
+                 "n\\(t\\|v\\(erf\\|norm\\)\\)\\)\\|"
+                 "l\\(gamma\\|og\\(\\|10\\)\\)\\|"
+                 "norm\\|r\\(and\\|eal\\)\\|"
+                 "s\\(gn\\|inh\?\\|qrt\\)\\|"
+                 "t\\(anh\?\\|m_\\(hour\\|m\\(day\\|in\\|on\\)\\|"
+                 "sec\\|wday\\|y\\(day\\|ear\\)\\)\\)\\|"
+                 "valid"
+                 "\\)\\>")
+                font-lock-function-name-face)
+                                       ; reserved words associated with
+                                       ; plotting <AL>
+          '("\\<\\(axes\\|every\\|index\\|l\\(\[stw\]\\|ine\\(style\\|type\\|width\\)\\)\\|notitle\\|p\\(\[st\]\\|oint\\(size\\|type\\)\\)\\|smooth\\|t\\(hru\\|itle\\)\\|using\\|with\\)\\>" . font-lock-type-face)
+          '("\\<\\(box\\(e\\(rrorbars\\|s\\)\\|xyerrorbars\\)\\|candlesticks\\|dots\\|errorbars\\|f\\(inancebars\\|steps\\)\\|histeps\\|impulses\\|lines\\(\\|points\\)\\|points\\|steps\\|vector\\|x\\(errorbars\\|yerrorbars\\)\\|yerrorbars\\)\\>" . font-lock-function-name-face)
+                                       ; (s)plot -- also thing (s)plotted
+          '("\\<s?plot\\>" . font-lock-keyword-face)
+          '("\\<s?plot\\s-+\\([^'\" ]+\\)[) \n,\\\\]"
+            1 font-lock-variable-name-face)
+                                       ; other common commands
+                                       ; miscellaneous commands
+          (cons (concat "\\<\\("
+                        "bind\\|"
+                        "c\\(d\\|lear\\)\\|exit\\|fit\\|h\\(elp\\|istory\\)\\|load\\|"
+                        "p\\(ause\\|rint\\|wd\\)\\|quit\\|replot\\|"
+                        "s\\(ave\\|et\\|how\\)\\|unset"
+                        "\\)\\>\\|!.*$")
+                font-lock-reference-face))
+         gnuplot-font-lock-keywords-1 gnuplot-font-lock-keywords
+         gnuplot-font-lock-keywords-2 gnuplot-font-lock-keywords) )
+
+(if (and gnuplot-xemacs-p (featurep 'font-lock))
+    (put 'gnuplot-mode 'font-lock-defaults
+        '((gnuplot-font-lock-keywords
+           gnuplot-font-lock-keywords-1
+           gnuplot-font-lock-keywords-2)
+          t t ((?_ . "w")) )))
+
+;; these two lines get rid of an annoying compile time error
+;; message.  that function gets non-trivially defalias-ed in
+;; gnuplot-toolbar.el
+;; (defun gnuplot-make-toolbar-dummy ())
+;; (defalias 'gnuplot-make-toolbar 'gnuplot-make-toolbar-dummy)
+
+\f
+;;; --- functions for sending commands to gnuplot
+
+(defun gnuplot-split-string (string)
+  "Break STRING at each carriage return, returning a list of lines."
+  (let ((list ()) (line "") (index 0))
+    (while (< index (length string))
+      (if (char-equal (elt string index) ?\n)
+         (setq list (append list (list line))
+               line "")
+       (setq line (concat line (char-to-string (elt string index)))))
+      (setq index (1+ index)) )
+    list))
+
+;; -- the calls to `sleep-for' are to allow enough time for gnuplot
+;;    to write to the buffer before the next line is inserted
+;; -- note that the input string is split into lines and each line is
+;;    sent to gnuplot individually.  this is a bit slow, but it puts
+;;    each line on the comint history.
+(defun gnuplot-send-string-to-gnuplot (string text)
+  "Sends STRING to the gnuplot program.
+If no gnuplot process exists, a new one is created.  TEXT indicates
+the type of text being sent to gnuplot and is typically one of
+nil, 'line, 'region, 'buffer, or 'file.  TEXT may be useful for
+functions in `gnuplot-after-plot-hook'.  `gnuplot-after-plot-hook' is
+called by this function after all of STRING is sent to gnuplot."
+  (gnuplot-make-gnuplot-buffer)        ; make sure a gnuplot buffer exists
+  (or gnuplot-program-version
+      (progn
+       (message "Determining gnuplot version number (sitting for 2 seconds)")
+       (gnuplot-fetch-version-number)
+       (sit-for 2)))
+  (setq gnuplot-comint-recent-buffer (current-buffer))
+  (if (equal gnuplot-display-process 'frame)
+      (or (and gnuplot-process-frame
+              (frame-live-p gnuplot-process-frame))
+         (let ((frame (selected-frame)))
+           (setq gnuplot-process-frame (make-frame))
+           (select-frame gnuplot-process-frame)
+           (switch-to-buffer gnuplot-buffer)
+           (delete-other-windows)
+           (select-frame frame))) )
+  (let ((buffer  (current-buffer))
+       (gbuffer (get-buffer gnuplot-buffer))
+       (list    (gnuplot-split-string string)))
+    (set-buffer gbuffer)
+    (goto-char (point-max))
+    ;; bruce asks: what is this next line for?
+    (set-marker (process-mark gnuplot-process) (point-marker))
+    (sleep-for (* 20 gnuplot-delay))
+    (while list
+      (insert (car list))
+      (comint-send-input)
+      (sleep-for gnuplot-delay)
+      (setq list (cdr list))
+      (goto-char (point-max)))
+    (set-buffer buffer)
+    (cond ((equal gnuplot-display-process 'window)
+          (select-window (display-buffer gbuffer))
+          (goto-char (point-max))
+          (or (pos-visible-in-window-p (point) (selected-window))
+              (recenter 5))
+          (other-window 1))
+         ((equal gnuplot-display-process 'frame)
+          ;;(raise-frame gnuplot-process-frame)
+          (select-frame gnuplot-process-frame)
+          (display-buffer gbuffer)
+          (goto-char (point-max))
+          (or (pos-visible-in-window-p (point) (selected-window))
+              (recenter 5))))
+    ;;(process-send-string gnuplot-program string)
+    (setq gnuplot-recently-sent text)
+    (run-hooks 'gnuplot-after-plot-hook)))
+
+(defun gnuplot-send-region-to-gnuplot (&optional begin end text)
+  "Sends a selected region to the gnuplot program.
+If BEGIN and END are not specified, point and mark are used.  TEXT
+indicates the type of text being sent to gnuplot.  This will be
+'region unless explicitly set by a function calling this one.  Other
+typical values are of nil, 'line, 'buffer, or 'file.  TEXT may be
+useful for function in `gnuplot-after-plot-hook'."
+  (interactive "r")
+  (let (string (txt (or text 'region)))
+    (cond ((equal major-mode 'gnuplot-mode)
+          (setq string (buffer-substring-no-properties begin end))
+          (if (string= (substring string -1) "\n") ()
+            (setq string (concat string "\n")))
+          (gnuplot-send-string-to-gnuplot string txt))
+         (t
+          (message (concat "You can only send regions from "
+                           "gnuplot-mode buffers to gnuplot."))))))
+
+(defun gnuplot-send-line-to-gnuplot ()
+  "Sends the current line to the gnuplot program.
+Respects continuation lines.
+This sets `gnuplot-recently-sent' to 'line."
+  (interactive)
+  (cond ((equal major-mode 'gnuplot-mode)
+        (let ((start (save-excursion (beginning-of-line)   (point-marker)))
+              end
+              ;(end   (save-excursion (beginning-of-line 2) (point-marker)))
+              )
+           (save-excursion
+            (goto-char start)
+            (end-of-line)
+            (backward-char 1)
+            (while (looking-at "\\\\") ; go to end of last continuation line
+              (end-of-line 2)
+              (backward-char 1))
+            (beginning-of-line 2)
+            (setq end (point-marker)))
+          (if (not (string-match "\\`\\s-*\\'"
+                                 (buffer-substring-no-properties start end)))
+              (gnuplot-send-region-to-gnuplot start end 'line))
+          end))
+       (t
+        (message "You can only send lines in gnuplot-mode buffers to gnuplot.")
+        nil)))
+
+;; I chose a very easy to type but slightly non-mnemonic key-binding
+;; for this (C-c C-v).  It seems like the kind of thing one would want
+;; to do repeatedly without incurring RSI. 8^)
+(defun gnuplot-send-line-and-forward (&optional num)
+  "Call `gnuplot-send-line-to-gnuplot' and move forward 1 line.
+You can use a numeric prefix to send more than one line.  Blank lines and
+lines with only comments are skipped when moving forward."
+  (interactive "p")
+  (let (end)
+    (while (> num 0)
+      (setq end (gnuplot-send-line-to-gnuplot))
+      (goto-char end)
+      (backward-char 1)                        ; <AR>
+      (gnuplot-forward-script-line 1)
+      (setq num (1- num)))))
+
+
+(defun gnuplot-forward-script-line (&optional num) ; <SE>
+  "Move forward my NUM script lines.
+Blank lines and commented lines are not included in the NUM count."
+  (interactive "p")
+  (while (> num 0)
+    (and (not (eobp)) (forward-line 1))
+    (while (and (not (eobp))
+               (or (looking-at "^\\s-*$")
+                   (looking-at "^\\s-*#")))
+      (forward-line 1))
+    (setq num (1- num))) )
+
+(defun gnuplot-send-buffer-to-gnuplot ()
+  "Sends the entire buffer to the gnuplot program.
+This sets `gnuplot-recently-sent' to 'buffer."
+  (interactive)
+  (if (equal major-mode 'gnuplot-mode)
+      (gnuplot-send-region-to-gnuplot (point-min) (point-max) 'buffer)
+    (message "You can only send gnuplot-mode buffers to gnuplot.")))
+
+(defun gnuplot-send-file-to-gnuplot ()
+  "Sends a selected file to the gnuplot program using the \"load\" command.
+This sets `gnuplot-recently-sent' to 'file."
+  (interactive)
+  (let ((string (read-file-name "Name of file to send to gnuplot > " nil nil t)))
+    (setq string (concat "load '" (expand-file-name string) "'\n"))
+    (message "%S" string)
+    (gnuplot-make-gnuplot-buffer)      ; make sure a gnuplot buffer exists
+    (gnuplot-send-string-to-gnuplot string 'file)))
+
+;; suggested by <JS>
+(defun gnuplot-plot-from-comint ()
+  "Send the contents of a script to gnuplot from the process buffer.
+This inserts the contents of the most recently used gnuplot script
+into the process buffer and sends those lines to gnuplot.  It does
+this by copying the script line by line."
+  (interactive)
+  (if (equal major-mode 'comint-mode)
+      (let (string list (buffer (current-buffer)))
+       (set-buffer gnuplot-comint-recent-buffer)
+       (setq string (buffer-substring-no-properties (point-min) (point-max))
+             string (concat string "\n")
+             list   (gnuplot-split-string string))
+       (set-buffer buffer)
+       (while list
+         (insert (car list))
+         (comint-send-input)
+         (sleep-for gnuplot-delay)
+         (setq list (cdr list)))
+       (comint-send-input))
+    (message
+     "`gnuplot-plot-from-comint' only works in the gnuplot process buffer")))
+
+(defun gnuplot-save-and-plot-from-comint ()
+  "Send a current script to gnuplot from the process buffer.
+This sends the most recently used gnuplot script to gnuplot using the
+\"load\" command.  This function first saves the script buffer to a
+file, prompting for a filename if one is not associated with the script
+buffer.  Then it sends a load command to gnuplot using the name of the
+file visited by the script buffer."
+  (interactive)
+  (if (equal major-mode 'comint-mode)
+      (let (fname (buffer (current-buffer)))
+       (set-buffer gnuplot-comint-recent-buffer)
+       (save-buffer)
+       (setq fname (buffer-file-name))
+       (set-buffer buffer)
+       (goto-char (point-max))
+       (insert (format "load '%s'" fname))
+       (comint-send-input))
+    (message (concat "`gnuplot-save-and-plot-from-comint' only works "
+                    "in the gnuplot process buffer"))))
+
+
+(defun gnuplot-trim-gnuplot-buffer ()
+  "Trim lines form the beginning of the *gnuplot* buffer.
+This keeps that buffer from growing excessively in size.  Normally,
+this function is attached to `gnuplot-after-plot-hook'"
+  (if (> gnuplot-buffer-max-size 0)
+      (save-excursion
+       (set-buffer gnuplot-buffer)
+       (let ((nlines (count-lines (point-min) (point-max)))
+             (kill-whole-line t))
+         (while (> nlines gnuplot-buffer-max-size)
+           (goto-char (point-min))
+           (kill-line)
+           (setq nlines (1- nlines)))
+         (goto-char (point-max)) ))))
+(add-hook 'gnuplot-after-plot-hook 'gnuplot-trim-gnuplot-buffer nil nil)
+
+\f
+;;; --- functions controlling the gnuplot process
+
+;; use of comint-setup-hook suggested by <DB>
+(defun gnuplot-comint-start-function ()
+  "Function run when comint/gnuplot started.
+This sets font-lock and keyword completion in the comint/gnuplot
+buffer.  Further customization is possible via
+`gnuplot-comint-setup-hook'."
+  ;;(if (not (fboundp 'hilit-set-mode-patterns))
+  (if (featurep 'font-lock)
+      (progn
+       (make-variable-buffer-local 'font-lock-defaults)
+       (setq font-lock-defaults '(gnuplot-font-lock-keywords t t))
+       (if gnuplot-xemacs-p (turn-on-font-lock))))
+  ;;(if (featurep 'kw-compl)
+  ;;    (progn
+  ;;   (setq kw-compl-list gnuplot-keywords
+  ;;         kw-compl-upper-case nil)
+  ;;   (define-key comint-mode-map "\M-\r" 'kw-compl-abbrev)))
+  (define-key comint-mode-map "\M-\C-p" 'gnuplot-plot-from-comint)
+  (define-key comint-mode-map "\M-\C-f" 'gnuplot-save-and-plot-from-comint)
+  (define-key comint-mode-map "\C-d"    'gnuplot-delchar-or-maybe-eof)
+  (define-key comint-mode-map "\M-\r"   'gnuplot-complete-keyword)
+  (define-key comint-mode-map "\M-\t"   'gnuplot-complete-keyword)
+  (run-hooks 'gnuplot-comint-setup-hook))
+
+(defun gnuplot-make-gnuplot-buffer ()
+  "Switch to the gnuplot program buffer or create one if none exists."
+  (or (and gnuplot-process (get-process gnuplot-process)
+          gnuplot-buffer (get-buffer gnuplot-buffer))
+      (progn
+       (message "Starting gnuplot plotting program...")
+       (setq gnuplot-buffer (make-comint gnuplot-process-name gnuplot-program)
+             gnuplot-process (get-process gnuplot-process-name))
+       (process-kill-without-query gnuplot-process nil)
+       (save-excursion
+         (set-buffer gnuplot-buffer)
+         (when (featurep 'xemacs)
+           ;; XEmacs needs the call to make-local-hook
+           (make-local-hook 'kill-buffer-hook))
+         (add-hook 'kill-buffer-hook 'gnuplot-close-down nil t)
+         (gnuplot-comint-start-function)
+          (make-local-variable 'comint-output-filter-functions)
+          (setq comint-output-filter-functions
+                (append comint-output-filter-functions
+                        '(comint-postoutput-scroll-to-bottom
+                          gnuplot-protect-prompt-fn)))
+         (message "Starting gnuplot plotting program...Done")))))
+
+
+(defun gnuplot-fetch-version-number ()
+  ;;(interactive)
+  (message "gnuplot-mode %s -- determining gnuplot version ......"
+          gnuplot-version)
+  (let* ((command (concat "echo \"show version\" | " gnuplot-program))
+        (process (start-process-shell-command "gnuplot-version"
+                                              "*gnuplot-version*"
+                                              command)))
+    (set-process-sentinel process 'gnuplot-determine-version-number)))
+
+(defun gnuplot-determine-version-number (process event)
+  (save-excursion
+    (let (version)
+      (if (string-match "SPEEDBAR" (format "%S" (current-buffer))) ;; <WZ>
+         (if (fboundp 'speedbar-switch-buffer-attached-frame)
+             (speedbar-switch-buffer-attached-frame "*gnuplot-version*")
+           (progn
+             (speedbar-select-attached-frame)
+             (switch-to-buffer "*gnuplot-version*")))
+       (switch-to-buffer "*gnuplot-version*"))
+      (goto-char (point-min))
+      (re-search-forward "[Vv]ersion\\s-+" (point-max) t)
+      (if (looking-at "[0-9]\\.[0-9]+")
+         (setq version (match-string 0))
+       (setq version "3.7"))
+      (kill-buffer (get-buffer "*gnuplot-version*"))
+      ;;(and (interactive-p) (message "You are using gnuplot version %s" version))
+      (setq gnuplot-program-version version
+           gnuplot-three-eight-p (>= (string-to-number gnuplot-program-version) 3.8))
+      (gnuplot-setup-menu-and-toolbar)
+      )))
+
+(defun gnuplot-setup-menu-and-toolbar ()
+  ;; set up the menubar (possibly dependent on version number)
+  (gnuplot-setup-menubar)
+  ;; set up the toolbar (possibly dependent on version number)
+  (if (and gnuplot-xemacs-p gnuplot-toolbar-display-flag)
+      (condition-case ()               ; deal with the toolbar
+         (and (require 'toolbar)
+              (require 'xpm)
+              (gnuplot-make-toolbar-function))
+       (error nil)))
+  (message "gnuplot-mode %s (gnuplot %s) -- report bugs with %S"
+          gnuplot-version gnuplot-program-version
+          (substitute-command-keys "\\[gnuplot-bug-report]"))
+  )
+
+
+
+;; (defun gnuplot-determine-gnuplot-version ()
+;;   "Figure out which version of gnuplot we are running."
+;;   (interactive)
+;;   (cond (gnuplot-gnuplot-version
+;;      (setq comint-process-echoes nil          ;; t
+;;            gnuplot-program-version gnuplot-gnuplot-version))
+;;     (t
+;;      (let ((counter 0))
+;;        (save-excursion
+;;          (set-buffer gnuplot-buffer)
+;;          (goto-char (point-min))
+;;          ;; it may take a while for emacs to display the gnuplot start-up
+;;          ;; message.  since we need this to determine the version number
+;;          ;; and hence the value of `comint-process-echoes', we must wait
+;;          ;; for this to happen.
+;;          (while (and (equal (point-max) (point-min)) (< 10 counter))
+;;            (1+ counter)
+;;            (sleep-for 0.1))
+;;          (if (re-search-forward "[Vv]ersion" (point-max) t)
+;;              (progn
+;;                (cond ((or (looking-at "\\s-*3.8") (looking-at "\\s-*4"))
+;;                       (setq comint-process-echoes nil          ;; t
+;;                             gnuplot-program-version "3.8"))
+;;                      ((looking-at "\\s-*3.7")
+;;                       (setq comint-process-echoes nil          ;; t
+;;                             gnuplot-program-version "3.7"))
+;;                      (t
+;;                       (setq comint-process-echoes nil
+;;                             gnuplot-program-version "3.5") )))
+;;            (setq comint-process-echoes gnuplot-echo-command-line-flag)))))))
+
+(defun gnuplot-protect-prompt-fn (string)
+  "Prevent the Gnuplot prompt from being deleted or overwritten.
+STRING is the text as originally inserted in the comint buffer."
+  (save-excursion
+    (let ((b (progn
+               (goto-char (point-max))
+               (beginning-of-line)
+               (point)))
+          e)
+      (if (re-search-forward "^gnuplot> " (point-max) t)
+          (progn
+            (setq e (point))
+            (put-text-property b e 'rear-nonsticky '(read-only intangible face))
+            (put-text-property b e 'intangible t)
+            (put-text-property b e 'face 'gnuplot-prompt-face)
+            ;;(put-text-property b e 'read-only t)
+           )) )))
+
+(defun gnuplot-close-down ()
+  "Tidy up when deleting the gnuplot buffer."
+  (if (eq (process-status gnuplot-process) 'run);; <SE>
+      (kill-process gnuplot-process))
+  (setq gnuplot-process nil
+        gnuplot-buffer nil))
+
+(defun gnuplot-delchar-or-maybe-eof (arg)
+  "Delete ARG characters forward, or (if at eob) send an EOF to subprocess.
+This is very similar to `comint-delchar-or-maybe-eof'."
+  (interactive "p")
+  (if (eobp)
+      (gnuplot-kill-gnuplot-buffer)
+    (delete-char arg)))
+
+(defun gnuplot-kill-gnuplot-buffer ()
+  "Kill the gnuplot process and its display buffers."
+  (interactive)
+  (if (and gnuplot-process
+          (eq (process-status gnuplot-process) 'run))  ;; <SE>
+      (kill-process gnuplot-process))
+  (if (and gnuplot-buffer (get-buffer gnuplot-buffer))
+      (progn
+       (if (one-window-p) ()
+         (delete-window (get-buffer-window gnuplot-buffer)))
+       (kill-buffer gnuplot-buffer)))
+  (setq gnuplot-process nil
+        gnuplot-buffer nil))
+
+
+(defun gnuplot-show-gnuplot-buffer ()
+  "Switch to the buffer containing the gnuplot process.
+When `gnuplot-display-process' is nil this will switch to
+the gnuplot process buffer.  When that variable is non-nil, the
+gnuplot process buffer will be displayed in a window."
+  (interactive)
+  (if (and gnuplot-buffer (get-buffer gnuplot-buffer))
+      (cond ((equal gnuplot-display-process 'window)
+            (switch-to-buffer-other-window gnuplot-buffer))
+           ((equal gnuplot-display-process 'frame)
+            (or (and gnuplot-process-frame
+                     (frame-live-p gnuplot-process-frame))
+                (setq gnuplot-process-frame (make-frame)))
+            (raise-frame gnuplot-process-frame)
+            (select-frame gnuplot-process-frame)
+            (switch-to-buffer gnuplot-buffer))
+           (t
+            (switch-to-buffer gnuplot-buffer)))
+    (message "There is not an active Gnuplot process.")))
+
+\f
+;;; --- miscellaneous functions: insert file name, indentation, negation
+
+(defun gnuplot-insert-filename ()
+  "Insert a filename at point, prompting for name in the minibuffer.
+This inserts a filename relative to the buffer's default directory.
+Uses completion and the value of `gnuplot-quote-character'.
+Bound to \\[gnuplot-insert-filename]"
+  (interactive)
+  (insert gnuplot-quote-character
+         (file-relative-name (read-file-name "Filename > " "")
+                             default-directory)
+         gnuplot-quote-character) )
+
+;; is this more complicated than it need be ...?
+;; this doesn't quite do plot lists correctly:
+;;   plot sin(x),\
+;;        cos(x)         # ok
+;;        set auto       # not ok, should be under "p" (but does it matter?)
+
+(defun gnuplot-indent-line ()
+  "Set indentation in gnuplot buffer.
+For most lines, set indentation to previous level of indentation.
+Attempt to add additional indentation for continued plot and splot
+lines."
+  (interactive)
+  (let ((indent 0))
+    (save-excursion
+      (save-excursion
+       (end-of-line 0)
+       (if (bobp) ()
+         (re-search-backward "^[ \t]*." (point-min) "to_limit")
+         (back-to-indentation)
+         (setq indent (current-column))
+         (if (looking-at "s?pl\\(o?\\|\\(ot\\)?\\)[ \t]+.?")
+             (let ((plus (1- (length (match-string 0)))))
+               (end-of-line)
+               (backward-char 1)
+               (if (looking-at (regexp-quote "\\"))
+                   (setq indent  (+ plus indent)))))))
+      (if (= (current-indentation) indent)
+         ()
+       (beginning-of-line)
+       (delete-horizontal-space)
+       (insert (make-string indent ? ))))
+    (if (looking-at "[ \t]+$")
+       (end-of-line))))
+
+;; FWIW, here are all the options which can be negated:
+;; (insert (format "%s"
+;;             (regexp-quote
+;;              (make-regexp
+;;               '("arrow" "autoscale" "border" "clabel" "clip"
+;;                 "contour" "dgrid3d" "grid" "hidden3d" "key" "label"
+;;                 "linestyle" "logscale" "multiplot" "mxtics"
+;;                 "mytics" "mztics" "mx2tics" "my2tics"
+;;                 "offsets" "polar" "surface" "timestamp" "title"
+;;                 "xdtics" "ydtics" "zdtics" "x2dtics" "y2dtics"
+;;                 "xmtics" "ymtics" "zmtics" "x2mtics" "y2mtics"
+;;                 "xtics" "ytics" "ztics" "x2tics" "y2tics"
+;;                 "xzeroaxis" "yzeroaxis" "zzeroaxis" "x2zeroaxis"
+;;                 "y2zeroaxis")))))
+
+(defun gnuplot-negate-option ()
+  "Append \"no\" to or remove \"no\" from the set option on the current line.
+This checks if the set option is one which has a negated form."
+  (interactive)
+  (let ((begin (save-excursion (beginning-of-line) (point-marker)))
+       (end   (save-excursion (end-of-line)       (point-marker)))
+       (regex "a\\(rrow\\|utoscale\\)\\|border\\|c\\(l\\(abel\\|ip\\)\\|ontour\\)\\|dgrid3d\\|grid\\|hi\\(dden3d\\|storysize\\)\\|key\\|l\\(abel\\|inestyle\\|ogscale\\)\\|m\\(ouse\\|ultiplot\\|x\\(2tics\\|tics\\)\\|y\\(2tics\\|tics\\)\\|ztics\\)\\|offsets\\|polar\\|surface\\|ti\\(mestamp\\|tle\\)\\|x\\(2\\(dtics\\|mtics\\|tics\\|zeroaxis\\)\\|dtics\\|mtics\\|tics\\|zeroaxis\\)\\|y\\(2\\(dtics\\|mtics\\|tics\\|zeroaxis\\)\\|dtics\\|mtics\\|tics\\|zeroaxis\\)\\|z\\(dtics\\|mtics\\|tics\\|zeroaxis\\)"))
+    (save-excursion
+      (if (search-backward ";" begin t)
+         (progn (forward-char  1) (setq begin (point-marker))))
+      (if (search-forward  ";" end   t)
+         (progn (forward-char -1) (setq end   (point-marker))))
+      (goto-char begin)
+      (skip-syntax-forward "-" end)
+      (if (looking-at "\\(un\\)?set\\s-+")
+         (cond ((and gnuplot-program-version
+                     (> (string-to-number gnuplot-program-version) 3.7))
+                (cond ((looking-at "unset")
+                       (delete-char 2))
+                      ((looking-at (concat "set\\s-+\\(" regex "\\)"))
+                       (insert "un"))
+                      (t
+                       (message "There is not a negatable set option on this line"))))
+               (t
+                (goto-char (match-end 0))
+                (if (> (point) end) (goto-char end))
+                (cond ((looking-at "no")
+                       (delete-char 2))
+                      ((looking-at regex)
+                       (insert "no"))
+                      (t
+                       (message "There is not a negatable set option on this line")))))
+       (message "There is not a set option on this line")) )))
+
+;; (defun gnuplot-set-binding ()
+;;   "Interactively select a key sequence for binding to a plot function.
+;; This is only useful in gnuplot 3.8 and for plot terminals which support
+;; key bindings (i.e. those covered by pm3d)."
+;;   (interactive)
+;;   (let ((keyseq (read-key-sequence "Choose a key sequence now"))
+;;     (command (read-string "Bind to this command > ")))
+;;     (setq keyseq (format "%S" keyseq))
+;;     (string-match "keypress-event\\s-+" keyseq)
+;;     (setq keyseq (substring keyseq (match-end 0) -2))
+;;     ;; need to convert from emacs nomenclature to gnuplot.  what a pain.
+;;     (let* ((alist '(("backspace" . "Backspace") ("tab" . "Tab") ("linefeed" . "Linefeed")
+;;                 ("clear" . "Clear") ("return" . "Return") ("pause" . "Pause")
+;;                 ("scroll-lock" . "Scroll_Lock") ("SysReq" . "sys-req")
+;;                 ("escape" . "Escape") ("delete" . "Delete") ("home" . "Home")
+;;                 ("left" . "Left") ("right" . "Right") ("up" . "Up") ("down" . "Down")
+;;                 ("prior" . "PageUp") ("next" . "PageDown") ("end" . "End")
+;;                 ("begin". "Begin")))
+;;        (match (assoc keyseq alist)))
+;;       (if match (setq keyseq (cdr match)))
+;;
+;;     (insert (format "bind \"%s\" \"%s\"" keyseq command)))))
+
+
+(defun gnuplot-customize ()
+  "Customize `gnuplot-mode'."
+  (interactive)
+  (if (fboundp 'customize-group)
+      (customize-group "gnuplot")
+    (message "The Custom library is not installed.")))
+
+
+\f
+;;; --- help from the info file, keyword list + completion, insert function
+
+
+;; set up stuff for info-look (as suggested by <SE>)
+;; modified with suggestion from <MS>
+(defun gnuplot-setup-info-look ()
+  "Setup info-look in the gnuplot buffer.
+Also set the variable `gnuplot-keywords' and do something sensible if
+info-look was not available.
+See the comments in `gnuplot-info-hook'."
+  (interactive)
+  (setq gnuplot-keywords-pending nil)
+  (if (featurep 'info-look)
+      (progn
+       (cond ((boundp 'info-lookup-symbol-alist) ; older version
+              (setq info-lookup-symbol-alist
+                    (append
+                     info-lookup-symbol-alist
+                     '((gnuplot-mode
+                        "[a-zA-Z][_a-zA-Z0-9]*" nil
+                        (("(gnuplot)Top"           nil "[_a-zA-Z0-9]+")
+                         ("(gnuplot)Commands"      nil "[_a-zA-Z0-9]+")
+                         ("(gnuplot)Functions"     nil "[_a-zA-Z0-9]+")
+                         ("(gnuplot)plot"          nil "[_a-zA-Z0-9]+")
+                         ("(gnuplot)set-show"      nil "[_a-zA-Z0-9]+")
+                         ("(gnuplot)data-file"     nil "[_a-zA-Z0-9]+")
+                         ("(gnuplot)smooth"        nil "[_a-zA-Z0-9]+")
+                         ("(gnuplot)style"         nil "[_a-zA-Z0-9]+")
+                         ("(gnuplot)terminal"      nil "[_a-zA-Z0-9]+")
+                         ;;("(gnuplot)General Index" nil "[_a-zA-Z0-9]+")
+                         ) "[_a-zA-Z0-9]+" ))) ))
+             (t                        ; newer version
+              (info-lookup-maybe-add-help
+               :mode 'gnuplot-mode :topic 'symbol
+               :regexp "[a-zA-Z][_a-zA-Z0-9]*"
+               :doc-spec '(("(gnuplot)Top"           nil "[_a-zA-Z0-9]+")
+                           ("(gnuplot)Commands"      nil "[_a-zA-Z0-9]+")
+                           ("(gnuplot)Functions"     nil "[_a-zA-Z0-9]+")
+                           ("(gnuplot)plot"          nil "[_a-zA-Z0-9]+")
+                           ("(gnuplot)set-show"      nil "[_a-zA-Z0-9]+")
+                           ("(gnuplot)data-file"     nil "[_a-zA-Z0-9]+")
+                           ("(gnuplot)smooth"        nil "[_a-zA-Z0-9]+")
+                           ("(gnuplot)style"         nil "[_a-zA-Z0-9]+")
+                           ("(gnuplot)terminal"      nil "[_a-zA-Z0-9]+")
+                           ) )))
+       ;; this hook is my best way of working with info-look and
+       ;; allowing multiple versions of the gnuplot-info file.
+       ;; yes, this is a hassle.
+       (run-hooks 'gnuplot-info-hook)
+       (let ((there (bufferp (get-buffer "*info*"))))
+         (info-lookup-setup-mode 'symbol 'gnuplot-mode)
+         (or there (and (get-buffer "*info*") (kill-buffer "*info*")))
+         ;; why are these buffers here?  I think that the general
+         ;; user will not want them lying around
+         (and (get-buffer "info dir")    (kill-buffer "info dir"))
+         (and (get-buffer "info dir<2>") (kill-buffer "info dir<2>")))
+       (setq gnuplot-keywords (gnuplot-set-keywords-list))
+       )
+
+    ;; or do something sensible if info-look is not installed
+    (defun info-lookup-interactive-arguments (symbol)
+      (message
+       "Help is not available.  The gnuplot info file could not be found.")
+      (list nil nil))) )
+
+
+(defun gnuplot-set-keywords-list ()
+  "Set `gnuplot-keywords' from `info-lookup-cache'.
+Return a list of keywords."
+  (let* ((list (cdr (assoc 'symbol info-lookup-cache)))
+        (list (cdr (cdr (assoc 'gnuplot-mode list))))
+        (list (car list))
+        (store ()) item)
+    (while list
+      (setq item (car (car list))
+           item (format "%s" item) ; keep this line for the sake of
+           store (append (list item) store) ; info-look.el w/o my patch
+           list  (cdr list)))
+    (delete "nil" store)
+    store ))
+
+
+(defun gnuplot-complete-keyword ()
+  "Perform completion on keyword preceding point.
+This is a pretty simple minded completion function.  It is loosely
+adapted from `lisp-complete-symbol'."
+  (interactive)
+  (if gnuplot-keywords-pending         ; <HW>
+      (gnuplot-setup-info-look))
+  (let* ((end (point))
+        (beg (unwind-protect (save-excursion (backward-sexp 1) (point))))
+        (patt (buffer-substring beg end))
+        (pattern (if (string-match "\\([^ \t]*\\)\\s-+$" patt)
+                     (match-string 1 patt) patt))
+        (alist (mapcar 'list gnuplot-keywords))
+        (completion (try-completion pattern alist)))
+    (cond ((eq completion t))
+         ((null completion)
+          (message "No gnuplot keywords complete \"%s\"" pattern))
+         (t
+          (when (not (string= pattern completion))
+            (delete-region beg end)
+            (insert completion))
+          (let* ((list (all-completions pattern alist))
+                 (mess (format "%S could be one of %S" pattern list))
+                 (orig (current-buffer))
+                 (buff (get-buffer-create " *gnuplot-completions*")))
+            (if (= (length list) 1) (insert " "))
+            (if (< (length mess) (frame-width))
+                (if (> (length list) 1) (message mess))
+              (switch-to-buffer-other-window buff)
+              (insert mess)
+              (fill-region (point-min) (point-max))
+              (goto-char (point-min))
+              (enlarge-window
+               (+ 2 (- (count-lines (point-min) (point-max))
+                       (window-height))))
+              (sit-for (max (length list) 15))
+              (switch-to-buffer orig)
+              (kill-buffer buff)
+              (delete-other-windows) ))) )))
+
+(defun gnuplot-info-lookup-symbol (symbol &optional mode)
+  "Wrapper for `info-lookup-symbol'.
+Takes SYMBOL and MODE as arguments exactly as `info-lookup-symbol'.
+After doing the info lookup, this displays the info file in a window
+frame as specified by the value of `gnuplot-info-display'.  If
+`gnuplot-info-display' is 'window, then the window will be shrunk to
+the size of the info entry if it is smaller than half the height of
+the frame."
+  (interactive
+   (cond (gnuplot-keywords
+         (info-lookup-interactive-arguments 'symbol))
+        (gnuplot-keywords-pending      ; <HW>
+         (gnuplot-setup-info-look)
+         (info-lookup-interactive-arguments 'symbol))
+        (t
+         (list nil (message
+       "Help is not available.  The gnuplot info file could not be found.")))))
+  (if (and (featurep 'info-look) gnuplot-keywords)
+      (let ((buff (current-buffer))
+           (info-lookup-other-window-flag
+            (if gnuplot-info-display t nil)))
+       (if symbol () (setq symbol "Commands"))
+       (info-lookup-symbol symbol mode)
+       (cond ((equal gnuplot-info-display 'window)
+              (let ((sw (selected-window))
+                    (window-min-height 2))
+                (other-window 1)
+                (enlarge-window
+                 (min (- (count-lines (point-min) (point-max)) (window-height))
+                      (- (/ (frame-height) 2) (window-height))))
+                (select-window sw)))
+             ((equal gnuplot-info-display 'frame)
+              (switch-to-buffer buff)
+              (delete-other-windows)
+              (or (and gnuplot-info-frame
+                       (frame-live-p gnuplot-info-frame))
+                  (setq gnuplot-info-frame (make-frame)))
+              (select-frame gnuplot-info-frame)
+              (raise-frame gnuplot-info-frame)
+              (if gnuplot-xemacs-p (setq toolbar-info-frame gnuplot-info-frame))
+              (switch-to-buffer "*info*") )) )))
+
+
+(defun gnuplot-insert (string)
+  "Insert STRING at point and display help for for STRING.
+Help is not shown if `gnuplot-insertions-show-help-flag' is nil.  The
+help shown is for STRING unless STRING begins with the word \"set\" or
+\"show\", in which case help is shown for the thing being set or
+shown."
+  (interactive)
+  (cond ((and (not gnuplot-three-eight-p)
+             (string-match "\\(emf\\|p\\(alette\\|m3d\\)\\|vgagl\\)" string))
+        (message "%S is an option introduced in gnuplot 3.8 (You are using %s)"
+                 string gnuplot-program-version) )
+       (t
+        (insert string)
+        (let ((topic string) term)
+          (if (string-match
+               "\\(set\\|show\\)[ \t]+\\([^ \t]+\\)\\(\\s-+\\([^ \t]+\\)\\)?"
+               string)
+              (progn
+                (setq topic (downcase (match-string 2 string))
+                      term            (match-string 4 string))
+                (if (string= topic "terminal") (setq topic (downcase term)))))
+          (cond ((and (fboundp 'gnuplot-gui-set-options-and-insert)
+                      gnuplot-gui-popup-flag)
+                 (gnuplot-gui-set-options-and-insert))
+                (gnuplot-insertions-show-help-flag
+                 (if gnuplot-keywords-pending          ; <HW>
+                     (gnuplot-setup-info-look))
+                 (gnuplot-info-lookup-symbol topic)) ) )) ) )
+
+(defun gnuplot-toggle-info-display ()
+  (interactive)
+  (setq gnuplot-insertions-show-help-flag (not gnuplot-insertions-show-help-flag))
+  (message (if gnuplot-insertions-show-help-flag
+              "Help will be displayed after insertions."
+            "Help no longer displayed after insertions.")))
+
+\f
+;;; --- bug reports
+;; grep '(defcustom' gnuplot.el gnuplot-gui.el | awk '{print $2}'
+(defun gnuplot-bug-report ()
+  "Submit a bug report about `gnuplot-mode' by email.
+Please do not send any bug reports about gnuplot itself to the
+maintainer of `gnuplot-mode'."
+  (interactive)
+  (let ((line (make-string 62 ?-)))
+    (require 'reporter)
+    (and (y-or-n-p
+         "Do you really want to submit an email report about gnuplot? ")
+        (y-or-n-p
+         (concat "Variable values will be written to the message.  "
+                 "Don't erase them.  OK? "))
+        (reporter-submit-bug-report
+         (format "%s <%s>" gnuplot-maintainer gnuplot-maintainer-email)
+         (format "gnuplot-mode (version %s)" gnuplot-version)
+         (append      ; variables to display values of in mail
+          '(gnuplot-mode-hook
+            gnuplot-load-hook
+            gnuplot-after-plot-hook
+            gnuplot-info-hook
+            gnuplot-comint-setup-hook
+            gnuplot-program
+            gnuplot-program-version
+            gnuplot-process-name
+            gnuplot-gnuplot-buffer
+            gnuplot-display-process
+            gnuplot-info-display
+            gnuplot-echo-command-line-flag
+            gnuplot-insertions-show-help-flag
+            gnuplot-delay
+            gnuplot-quote-character
+            gnuplot-keywords-when
+            ;;gnuplot-insertions-menu-flag
+            ;;gnuplot-insertions-adornments
+            ;;gnuplot-insertions-plot-options
+            ;;gnuplot-insertions-terminal
+            ;;gnuplot-insertions-x-axis
+            ;;gnuplot-insertions-x2-axis
+            ;;gnuplot-insertions-y-axis
+            ;;gnuplot-insertions-y2-axis
+            ;;gnuplot-insertions-z-axis
+            ;;gnuplot-insertions-parametric-plots
+            ;;gnuplot-insertions-polar-plots
+            ;;gnuplot-insertions-surface-plots
+            gnuplot-toolbar-display-flag
+            gnuplot-toolbar-use-toolbar
+            gnuplot-gui-popup-flag
+            gnuplot-gui-frame-plist
+            gnuplot-gui-frame-parameters
+            gnuplot-gui-fontname-list
+            gnuplot-gui-plot-splot-fit-style
+            ;; plus a few more...
+            gnuplot-comint-recent-buffer
+            gnuplot-version
+            Info-directory-list
+            exec-path
+            features ))
+         nil                           ; pre-hooks
+         nil                           ; post-hooks
+         (concat line                  ; salutation
+          "\nInsert your description of the gnuplot-mode bug here.\n"
+          "Please be as specific as possible.\n\n"
+          "There are several known shortcomings of gnuplot-mode.\n"
+          "Many of these have to do with the complicated and inconsistent\n"
+          "syntax of gnuplot itself.  See the document string for the\n"
+          "function `gnuplot-mode' (use `"
+          (substitute-command-keys "\\[describe-function]")
+          "') for details.\n\n"
+          "Note that this bug report form should be used for problems\n"
+          "with gnuplot-mode only.  Problems with gnuplot itself should\n"
+          "be addressed directly to the developers of gnuplot.\n"
+          "The maintainer of gnuplot-mode will not field questions about\n"
+          "gnuplot itself.  Thank you.\n"
+          line)
+         ))))
+
+
+\f
+;;; --- autoloaded functions: gnuplot-mode and gnuplot-make-buffer
+
+;;;###autoload
+(defun gnuplot-mode ()
+  "Major mode for editing and executing GNUPLOT scripts.
+This was written with version 3.7 of gnuplot in mind but it should
+work fine with version 3.5 and the various 3.6 beta versions.
+
+Report bugs in `gnuplot-mode' using \\[gnuplot-bug-report].
+
+                           ------O------
+
+The help functions, keyword completion, and several other features
+depend upon having the info file properly installed.  The info file
+can be made in the document directory of the gnuplot distribution or
+is available at the `gnuplot-mode' web page:
+    http://feff.phys.washington.edu/~ravel/software/gnuplot-mode/
+
+If the help function does not work properly, you may have an older
+version of the gnuplot info file.  Try the suggestion in the document
+string for the variable `gnuplot-info-hook'.  See the `gnuplot-mode'
+web page for more details.
+
+                           ------O------
+
+There are several known shortcomings of `gnuplot-mode', version 0.5g
+and up.  Many of the shortcomings involve the graphical interface
+(refered to as the GUI) to setting arguments to plot options.  Here is
+a list:
+
+ 1.  Currently there is no way for `gnuplot-mode' to know if information
+     sent to gnuplot was correctly plotted.
+ 2.  Indentation is sometimes a bit flaky.
+ 3.  \"plot\", \"splot\", and \"fit\" are handled in the GUI, but are
+     a bit flaky.  Their arguments may not be read correctly from
+     existing text, and continuation lines (common for plot and splot)
+     are not supported.
+ 4.  The GUI does not know how to read from continuation lines.
+ 5.  Comma separated position arguments to plot options are
+     unsupported in the GUI.  Colon separated datafile modifiers (used
+     for plot, splot, and fit) are not supported either.  Arguments
+     not yet supported by the GUI generate messages printed in grey
+     text.
+ 6.  The GUI handling of \"hidden3d\" is flaky and \"cntrparam\" is
+     unsupported.
+
+                           ------O------
+
+ Key bindings:
+ \\{gnuplot-mode-map}"
+  (interactive)
+  (kill-all-local-variables)
+  (use-local-map gnuplot-mode-map)
+  (setq major-mode 'gnuplot-mode
+       mode-name "Gnuplot")
+  (set (make-local-variable 'comment-start) "# ")
+  (set (make-local-variable 'comment-end) "")
+  (set (make-local-variable 'comment-column) 32)
+  (set (make-local-variable 'comment-start-skip) "#[ \t]*")
+  (set (make-local-variable 'indent-line-function) 'gnuplot-indent-line)
+  (set-syntax-table gnuplot-mode-syntax-table)
+  (if (or (fboundp 'hilit-set-mode-patterns)
+         (equal gnuplot-keywords-when 'immediately)) ; <HW>
+      (gnuplot-setup-info-look)) ;; <SE>
+  (if (fboundp 'hilit-set-mode-patterns) ; deal with hilit19 (ho hum!)
+      (let ((keywords (concat "\\b\\(" (mapconcat 'identity
+                                                 gnuplot-keywords "\\|")
+                             "\\)\\b")))
+       (hilit-set-mode-patterns
+        'gnuplot-mode
+        `(("#.*$" nil comment)
+          ("\\([a-zA-Z0-9_-]+\\)\\(([^)]*)\\)?\\s *=" nil define)
+          ,(list keywords 'nil 'keyword)
+          (hilit-string-find ?\\ string)
+          ))) )
+  ;;(if (featurep 'kw-compl)           ; old-style keyword completion
+  ;;    (setq kw-compl-list gnuplot-keywords
+  ;;       kw-compl-upper-case nil)) ; gnuplot keywords must be lower case
+  (if gnuplot-xemacs-p                 ; deal with font-lock
+      (if (fboundp 'turn-on-font-lock) (turn-on-font-lock))
+    (progn
+      (make-variable-buffer-local 'font-lock-defaults)
+      (setq font-lock-defaults '(gnuplot-font-lock-keywords t t))))
+;;   (if (and gnuplot-xemacs-p gnuplot-toolbar-display-flag)
+;;       (condition-case ()            ; deal with the toolbar
+;;       (and (require 'toolbar)
+;;            (require 'xpm)
+;;            (gnuplot-make-toolbar-function))
+;;     (error nil)))
+  (if (fboundp 'widget-create)         ; gunplot-gui
+      (condition-case ()
+         (require 'gnuplot-gui)
+       (error nil)))
+  (setq gnuplot-first-call nil         ; a few more details ...
+       gnuplot-comint-recent-buffer (current-buffer)
+        comint-process-echoes        gnuplot-echo-command-line-flag)
+  (run-hooks 'gnuplot-mode-hook)
+  ;; the first time we need to figure out which gnuplot we are running
+  (if gnuplot-program-version
+      (gnuplot-setup-menu-and-toolbar)
+    (gnuplot-fetch-version-number)))
+
+;;;###autoload
+(defun gnuplot-make-buffer ()
+  "Open a new buffer in `gnuplot-mode'.
+When invoked, it switches to a new, empty buffer visiting no file
+and then starts `gnuplot-mode'.
+
+It is convenient to bind this function to a global key sequence.  For
+example, to make the F10 key open a gnuplot script buffer, put the
+following in your .emacs file:
+     (autoload 'gnuplot-make-buffer \"gnuplot\"
+               \"open a buffer in gnuplot mode\" t)
+     (global-set-key [(f10)] 'gnuplot-make-buffer)"
+  (interactive)
+  (switch-to-buffer gnuplot-gnuplot-buffer)
+  (gnuplot-mode))
+
+(defun gnuplot-show-version ()
+  "Show version number in echo area"
+  (interactive)
+  (message "gnuplot-mode %s -- URL: %s" gnuplot-version gnuplot-maintainer-url))
+
+(defun gnuplot-show-gnuplot-version ()
+  "Show gnuplot program and version number in echo area"
+  (interactive)
+  (message "You are calling gnuplot %s as %s" gnuplot-program-version gnuplot-program))
+
+
+;;; That's it! ----------------------------------------------------------------
+
+\f
+;;; --- final chores: provide 'gnuplot and run load-hook
+;; provide before run-hooks suggested by <DB>
+(provide 'gnuplot)
+(run-hooks 'gnuplot-load-hook)
+
+;;;============================================================================
+;;;
+;;; gnuplot.el ends here
diff --git a/util/X86MAC64/share/emacs/site-lisp/gnuplot.elc b/util/X86MAC64/share/emacs/site-lisp/gnuplot.elc
new file mode 100644 (file)
index 0000000..ac382c1
Binary files /dev/null and b/util/X86MAC64/share/emacs/site-lisp/gnuplot.elc differ
diff --git a/util/X86MAC64/share/gnuplot/4.6/PostScript/8859-1.ps b/util/X86MAC64/share/gnuplot/4.6/PostScript/8859-1.ps
new file mode 100644 (file)
index 0000000..c7a251e
--- /dev/null
@@ -0,0 +1,43 @@
+%
+% Encoding for ISO-8859-1 (also called Latin1)
+%
+/reencodeISO {
+dup dup findfont dup length dict begin
+{ 1 index /FID ne { def }{ pop pop } ifelse } forall
+currentdict /CharStrings known {
+       CharStrings /Idieresis known {
+               /Encoding ISOLatin1Encoding def } if
+} if
+currentdict end definefont
+} def
+/ISOLatin1Encoding [
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
+/parenleft/parenright/asterisk/plus/comma/minus/period/slash
+/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
+/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
+/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
+/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
+/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
+/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
+/ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar
+/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
+/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
+/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
+/guillemotright/onequarter/onehalf/threequarters/questiondown
+/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
+/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
+/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
+/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
+/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
+/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
+/yacute/thorn/ydieresis
+] def
diff --git a/util/X86MAC64/share/gnuplot/4.6/PostScript/8859-15.ps b/util/X86MAC64/share/gnuplot/4.6/PostScript/8859-15.ps
new file mode 100644 (file)
index 0000000..6e90aef
--- /dev/null
@@ -0,0 +1,43 @@
+%
+% Encoding for ISO-8859-15 (also called Latin9)
+%
+/reencodeISO15 {
+dup dup findfont dup length dict begin
+{ 1 index /FID ne { def }{ pop pop } ifelse } forall
+currentdict /CharStrings known {
+       CharStrings /Idieresis known {
+               /Encoding ISOLatin15Encoding def } if
+} if
+currentdict end definefont
+} def
+/ISOLatin15Encoding [
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
+/parenleft/parenright/asterisk/plus/comma/minus/period/slash
+/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
+/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
+/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
+/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
+/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
+/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
+/ogonek/caron/space/exclamdown/cent/sterling/Euro/yen/Scaron
+/section/scaron/copyright/ordfeminine/guillemotleft/logicalnot
+/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
+/Zcaron/mu/paragraph/periodcentered/zcaron/onesuperior/ordmasculine
+/guillemotright/OE/oe/Ydieresis/questiondown
+/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
+/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
+/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
+/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
+/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
+/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
+/yacute/thorn/ydieresis
+] def
diff --git a/util/X86MAC64/share/gnuplot/4.6/PostScript/8859-2.ps b/util/X86MAC64/share/gnuplot/4.6/PostScript/8859-2.ps
new file mode 100644 (file)
index 0000000..3fd5fdd
--- /dev/null
@@ -0,0 +1,46 @@
+%
+% Encoding for ISO-8859-2 (also called Latin2), with
+% minor differences to "true" ISO-8859-2 (*commaaccent 
+% instead of *cedilla for sStT -> incorrect in ISO-8859-2,
+% the standard will probably be modified in this respect)
+%      Levente Novak <novak@jaguar.dote.hu>
+
+/reencodeISO2 {
+dup dup findfont dup length dict begin
+{ 1 index /FID ne { def }{ pop pop } ifelse } forall
+currentdict /CharStrings known {
+       CharStrings /Idieresis known {
+               /Encoding ISOLatin2Encoding def } if
+} if
+currentdict end definefont
+} def
+/ISOLatin2Encoding [
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
+/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash
+/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
+/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M
+/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
+/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
+/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/nbspace/Aogonek/breve/Lslash/currency/Lcaron/Sacute/section
+/dieresis/Scaron/Scommaaccent/Tcaron/Zacute/hyphen/Zcaron/Zdotaccent
+/degree/aogonek/ogonek/lslash/acute/lcaron/sacute/caron/cedilla
+/scaron/scommaaccent/tcaron/zacute/hungarumlaut/zcaron/zdotaccent
+/Racute/Aacute/Acircumflex/Abreve/Adieresis/Lacute/Cacute/Ccedilla
+/Ccaron/Eacute/Eogonek/Edieresis/Ecaron/Iacute/Icircumflex/Dcaron
+/Dcroat/Nacute/Ncaron/Oacute/Ocircumflex/Ohungarumlaut/Odieresis
+/multiply/Rcaron/Uring/Uacute/Uhungarumlaut/Udieresis/Yacute
+/Tcommaaccent/germandbls/racute/aacute/acircumflex/abreve/adieresis
+/lacute/cacute/ccedilla/ccaron/eacute/eogonek/edieresis/ecaron
+/iacute/icircumflex/dcaron/dcroat/nacute/ncaron/oacute/ocircumflex
+/ohungarumlaut/odieresis/divide/rcaron/uring/uacute/uhungarumlaut
+/udieresis/yacute/tcommaaccent/dotaccent
+] def
diff --git a/util/X86MAC64/share/gnuplot/4.6/PostScript/8859-9.ps b/util/X86MAC64/share/gnuplot/4.6/PostScript/8859-9.ps
new file mode 100644 (file)
index 0000000..b105eb6
--- /dev/null
@@ -0,0 +1,44 @@
+%
+% Encoding for ISO_8859_9 (also called Latin5)
+% Plus code points 80-9F used in Codepage 1254
+%
+/reencodeISO9 {
+dup dup findfont dup length dict begin
+{ 1 index /FID ne { def }{ pop pop } ifelse } forall
+currentdict /CharStrings known {
+       CharStrings /Idieresis known {
+               /Encoding ISOLatin5Encoding def } if
+} if
+currentdict end definefont
+} def
+/ISOLatin5Encoding [
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
+/parenleft/parenright/asterisk/plus/comma/minus/period/slash
+/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
+/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
+/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
+/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
+/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde
+/Euro/.notdef/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl
+/circumflex/perthousand/Scaron/guilsinglleft/OE/.notdef/.notdef/.notdef
+/.notdef/quoteleft/quoteright/quotedblleft/quotedblright/bullet/endash/emdash
+/tilde/trademark/scaron/guilsinglright/oe/.notdef/.notdef/Ydieresis
+/.notdef/space/exclamdown/cent/sterling/currency/yen/brokenbar
+/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
+/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
+/acute/mu/paragraph/bullet/cedilla/onesuperior/ordmasculine
+/guillemotright/onequarter/onehalf/threequarters/questiondown
+/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
+/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
+/Idieresis/Gbreve/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Idotaccent
+/Scedilla/germandbls/agrave/aacute/acircumflex/atilde/adieresis
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
+/iacute/icircumflex/idieresis/gbreve/ntilde/ograve/oacute/ocircumflex
+/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
+/dotlessi/scedilla/ydieresis
+] def
diff --git a/util/X86MAC64/share/gnuplot/4.6/PostScript/aglfn.txt b/util/X86MAC64/share/gnuplot/4.6/PostScript/aglfn.txt
new file mode 100644 (file)
index 0000000..feda60c
--- /dev/null
@@ -0,0 +1,933 @@
+# This document was obtained from http://www.adobe.com/devnet/opentype/archives/aglfn.txt
+# ###################################################################################
+# Copyright (c) 2003,2005,2006,2007 Adobe Systems Incorporated
+# 
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this documentation file to use, copy, publish, distribute,
+# sublicense, and/or sell copies of the documentation, and to permit
+# others to do the same, provided that:
+# - No modification, editing or other alteration of this document is
+# allowed; and
+# - The above copyright notice and this permission notice shall be
+# included in all copies of the documentation.
+# 
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this documentation file, to create their own derivative works
+# from the content of this document to use, copy, publish, distribute,
+# sublicense, and/or sell the derivative works, and to permit others to do
+# the same, provided that the derived work is not represented as being a
+# copy or version of this document.
+# 
+# Adobe shall not be liable to any party for any loss of revenue or profit
+# or for indirect, incidental, special, consequential, or other similar
+# damages, whether based on tort (including without limitation negligence
+# or strict liability), contract or other legal or equitable grounds even
+# if Adobe has been advised or had reason to know of the possibility of
+# such damages.Ê The Adobe materials are provided on an "AS IS" basis.Ê
+# Adobe specifically disclaims all express, statutory, or implied
+# warranties relating to the Adobe materials, including but not limited to
+# those concerning merchantability or fitness for a particular purpose or
+# non-infringement of any third party rights regarding the Adobe
+# materials.
+# ###################################################################################
+# Name:          Adobe Glyph List For New Fonts
+# Table version: 1.6
+# Date:          30 Januaury 2006
+#
+# Description:
+#
+#   The Adobe Glyph List For New Fonts (AGLFN) is meant to provide a list of 
+#   base glyph names which are compatible with the AGL specification at
+#   http://partners.adobe.com/asn/developer/type/unicodegn.html.
+#   and which can be used as described in section 6 of that document.
+#
+#   This list comprises the set of glyph names from the AGLv2,0 which map
+#   to via the AGL rules to the semanticly correct Unicode value. For
+#   example, Asmall is omitted as the AGL maps this to the Unicode
+#   Private Use Area value F761, rather than to the Unicode value for the
+#   character "A". "ffi" is also omitted, as the AGL maps this to the
+#   Alphabetic Presentation Forms Area value FB03, rather than
+#   decomposing it to the three-value Unicode sequence 0066,0066,0069.
+#    See section 7.1 of the Unicode Standard 4.0 on this issue.
+#   "arrowvertex" is omitted becuase this now has a real Unicode
+#   character value, and the AGL is now incorrect in mapping this to the 
+#   Private Use Area value  F8E6.
+#
+#  If you do not find an appropriate name for your glyph in this list,
+#  then please refer to section 6 of the document:
+#   http://partners.adobe.com/asn/developer/typeforum/unicodegn.html.
+#
+#      The Unicode values and names are given for convenience.
+#
+# Format: Semicolon-delimited fields:
+#
+#   (1) Standard UV or CUS UV. (4 uppercase hexadecimal digits)
+#
+#   (2) Glyph name. (upper- and lowercase letters, digits)
+#
+#   (3) Character names: Unicode character names for standard UVs, and
+#       descriptive names for CUS UVs. (uppercase letters, hyphen, space)
+#
+#   The entries are sorted by glyph name in increasing ASCII order; entries
+#   with the same glyph name are sorted in decreasing priority order.
+#
+#   Lines starting with "#" are comments; blank lines should be ignored.
+#
+#   1.6  [30 January 2006]
+#      - Completed work intended in 1.5
+#
+#   1.5  [23 November 2005]
+#      - removed duplicated block at end of file
+#      - changed mappings:
+#            2206;Delta;INCREMENT changed to 0394;Delta;GREEK CAPITAL LETTER DELTA
+#            2126;Omega;OHM SIGN changed to 03A9;Omega;GREEK CAPITAL LETTER OMEGA
+#            03BC;mu;MICRO SIGN changed to 03BC;mu;GREEK SMALL LETTER MU
+#      - corrected statement above about why ffi is omitted.
+
+#   1.4  [24 September 2003]  Changed version to 1.4, to avoid confusion 
+#              with the AGL 1.3
+#                      fixed spelling errors in the header
+#                      fully removed arrowvertex, as it is mapped only to a PUA Unicode value in some fonts.
+#
+#   1.1  [17 April 2003]  Renamed [Tt]cedilla back to [Tt]commaaccent:
+#
+#   1.0  [31 Jan 2003]  Original version. Derived from the AGLv1.2 by:
+#      -  removing the PUA area codes
+#      - removing duplicate Unicode mappings, and 
+#      - renaming tcommaaccent to tcedilla and Tcommaaccent to Tcedilla 
+#
+0041;A;LATIN CAPITAL LETTER A
+00C6;AE;LATIN CAPITAL LETTER AE
+01FC;AEacute;LATIN CAPITAL LETTER AE WITH ACUTE
+00C1;Aacute;LATIN CAPITAL LETTER A WITH ACUTE
+0102;Abreve;LATIN CAPITAL LETTER A WITH BREVE
+00C2;Acircumflex;LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+00C4;Adieresis;LATIN CAPITAL LETTER A WITH DIAERESIS
+00C0;Agrave;LATIN CAPITAL LETTER A WITH GRAVE
+0391;Alpha;GREEK CAPITAL LETTER ALPHA
+0386;Alphatonos;GREEK CAPITAL LETTER ALPHA WITH TONOS
+0100;Amacron;LATIN CAPITAL LETTER A WITH MACRON
+0104;Aogonek;LATIN CAPITAL LETTER A WITH OGONEK
+00C5;Aring;LATIN CAPITAL LETTER A WITH RING ABOVE
+01FA;Aringacute;LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+00C3;Atilde;LATIN CAPITAL LETTER A WITH TILDE
+0042;B;LATIN CAPITAL LETTER B
+0392;Beta;GREEK CAPITAL LETTER BETA
+0043;C;LATIN CAPITAL LETTER C
+0106;Cacute;LATIN CAPITAL LETTER C WITH ACUTE
+010C;Ccaron;LATIN CAPITAL LETTER C WITH CARON
+00C7;Ccedilla;LATIN CAPITAL LETTER C WITH CEDILLA
+0108;Ccircumflex;LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+010A;Cdotaccent;LATIN CAPITAL LETTER C WITH DOT ABOVE
+03A7;Chi;GREEK CAPITAL LETTER CHI
+0044;D;LATIN CAPITAL LETTER D
+010E;Dcaron;LATIN CAPITAL LETTER D WITH CARON
+0110;Dcroat;LATIN CAPITAL LETTER D WITH STROKE
+0394;Delta;GREEK CAPITAL LETTER DELTA
+0045;E;LATIN CAPITAL LETTER E
+00C9;Eacute;LATIN CAPITAL LETTER E WITH ACUTE
+0114;Ebreve;LATIN CAPITAL LETTER E WITH BREVE
+011A;Ecaron;LATIN CAPITAL LETTER E WITH CARON
+00CA;Ecircumflex;LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+00CB;Edieresis;LATIN CAPITAL LETTER E WITH DIAERESIS
+0116;Edotaccent;LATIN CAPITAL LETTER E WITH DOT ABOVE
+00C8;Egrave;LATIN CAPITAL LETTER E WITH GRAVE
+0112;Emacron;LATIN CAPITAL LETTER E WITH MACRON
+014A;Eng;LATIN CAPITAL LETTER ENG
+0118;Eogonek;LATIN CAPITAL LETTER E WITH OGONEK
+0395;Epsilon;GREEK CAPITAL LETTER EPSILON
+0388;Epsilontonos;GREEK CAPITAL LETTER EPSILON WITH TONOS
+0397;Eta;GREEK CAPITAL LETTER ETA
+0389;Etatonos;GREEK CAPITAL LETTER ETA WITH TONOS
+00D0;Eth;LATIN CAPITAL LETTER ETH
+20AC;Euro;EURO SIGN
+0046;F;LATIN CAPITAL LETTER F
+0047;G;LATIN CAPITAL LETTER G
+0393;Gamma;GREEK CAPITAL LETTER GAMMA
+011E;Gbreve;LATIN CAPITAL LETTER G WITH BREVE
+01E6;Gcaron;LATIN CAPITAL LETTER G WITH CARON
+011C;Gcircumflex;LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+0122;Gcommaaccent;LATIN CAPITAL LETTER G WITH CEDILLA
+0120;Gdotaccent;LATIN CAPITAL LETTER G WITH DOT ABOVE
+0048;H;LATIN CAPITAL LETTER H
+25CF;H18533;BLACK CIRCLE
+25AA;H18543;BLACK SMALL SQUARE
+25AB;H18551;WHITE SMALL SQUARE
+25A1;H22073;WHITE SQUARE
+0126;Hbar;LATIN CAPITAL LETTER H WITH STROKE
+0124;Hcircumflex;LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+0049;I;LATIN CAPITAL LETTER I
+0132;IJ;LATIN CAPITAL LIGATURE IJ
+00CD;Iacute;LATIN CAPITAL LETTER I WITH ACUTE
+012C;Ibreve;LATIN CAPITAL LETTER I WITH BREVE
+00CE;Icircumflex;LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+00CF;Idieresis;LATIN CAPITAL LETTER I WITH DIAERESIS
+0130;Idotaccent;LATIN CAPITAL LETTER I WITH DOT ABOVE
+2111;Ifraktur;BLACK-LETTER CAPITAL I
+00CC;Igrave;LATIN CAPITAL LETTER I WITH GRAVE
+012A;Imacron;LATIN CAPITAL LETTER I WITH MACRON
+012E;Iogonek;LATIN CAPITAL LETTER I WITH OGONEK
+0399;Iota;GREEK CAPITAL LETTER IOTA
+03AA;Iotadieresis;GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+038A;Iotatonos;GREEK CAPITAL LETTER IOTA WITH TONOS
+0128;Itilde;LATIN CAPITAL LETTER I WITH TILDE
+004A;J;LATIN CAPITAL LETTER J
+0134;Jcircumflex;LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+004B;K;LATIN CAPITAL LETTER K
+039A;Kappa;GREEK CAPITAL LETTER KAPPA
+0136;Kcommaaccent;LATIN CAPITAL LETTER K WITH CEDILLA
+004C;L;LATIN CAPITAL LETTER L
+0139;Lacute;LATIN CAPITAL LETTER L WITH ACUTE
+039B;Lambda;GREEK CAPITAL LETTER LAMDA
+013D;Lcaron;LATIN CAPITAL LETTER L WITH CARON
+013B;Lcommaaccent;LATIN CAPITAL LETTER L WITH CEDILLA
+013F;Ldot;LATIN CAPITAL LETTER L WITH MIDDLE DOT
+0141;Lslash;LATIN CAPITAL LETTER L WITH STROKE
+004D;M;LATIN CAPITAL LETTER M
+039C;Mu;GREEK CAPITAL LETTER MU
+004E;N;LATIN CAPITAL LETTER N
+0143;Nacute;LATIN CAPITAL LETTER N WITH ACUTE
+0147;Ncaron;LATIN CAPITAL LETTER N WITH CARON
+0145;Ncommaaccent;LATIN CAPITAL LETTER N WITH CEDILLA
+00D1;Ntilde;LATIN CAPITAL LETTER N WITH TILDE
+039D;Nu;GREEK CAPITAL LETTER NU
+004F;O;LATIN CAPITAL LETTER O
+0152;OE;LATIN CAPITAL LIGATURE OE
+00D3;Oacute;LATIN CAPITAL LETTER O WITH ACUTE
+014E;Obreve;LATIN CAPITAL LETTER O WITH BREVE
+00D4;Ocircumflex;LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+00D6;Odieresis;LATIN CAPITAL LETTER O WITH DIAERESIS
+00D2;Ograve;LATIN CAPITAL LETTER O WITH GRAVE
+01A0;Ohorn;LATIN CAPITAL LETTER O WITH HORN
+0150;Ohungarumlaut;LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+014C;Omacron;LATIN CAPITAL LETTER O WITH MACRON
+03A9;Omega;GREEK CAPITAL LETTER OMEGA
+038F;Omegatonos;GREEK CAPITAL LETTER OMEGA WITH TONOS
+039F;Omicron;GREEK CAPITAL LETTER OMICRON
+038C;Omicrontonos;GREEK CAPITAL LETTER OMICRON WITH TONOS
+00D8;Oslash;LATIN CAPITAL LETTER O WITH STROKE
+01FE;Oslashacute;LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+00D5;Otilde;LATIN CAPITAL LETTER O WITH TILDE
+0050;P;LATIN CAPITAL LETTER P
+03A6;Phi;GREEK CAPITAL LETTER PHI
+03A0;Pi;GREEK CAPITAL LETTER PI
+03A8;Psi;GREEK CAPITAL LETTER PSI
+0051;Q;LATIN CAPITAL LETTER Q
+0052;R;LATIN CAPITAL LETTER R
+0154;Racute;LATIN CAPITAL LETTER R WITH ACUTE
+0158;Rcaron;LATIN CAPITAL LETTER R WITH CARON
+0156;Rcommaaccent;LATIN CAPITAL LETTER R WITH CEDILLA
+211C;Rfraktur;BLACK-LETTER CAPITAL R
+03A1;Rho;GREEK CAPITAL LETTER RHO
+0053;S;LATIN CAPITAL LETTER S
+250C;SF010000;BOX DRAWINGS LIGHT DOWN AND RIGHT
+2514;SF020000;BOX DRAWINGS LIGHT UP AND RIGHT
+2510;SF030000;BOX DRAWINGS LIGHT DOWN AND LEFT
+2518;SF040000;BOX DRAWINGS LIGHT UP AND LEFT
+253C;SF050000;BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+252C;SF060000;BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+2534;SF070000;BOX DRAWINGS LIGHT UP AND HORIZONTAL
+251C;SF080000;BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+2524;SF090000;BOX DRAWINGS LIGHT VERTICAL AND LEFT
+2500;SF100000;BOX DRAWINGS LIGHT HORIZONTAL
+2502;SF110000;BOX DRAWINGS LIGHT VERTICAL
+2561;SF190000;BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+2562;SF200000;BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+2556;SF210000;BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+2555;SF220000;BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+2563;SF230000;BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+2551;SF240000;BOX DRAWINGS DOUBLE VERTICAL
+2557;SF250000;BOX DRAWINGS DOUBLE DOWN AND LEFT
+255D;SF260000;BOX DRAWINGS DOUBLE UP AND LEFT
+255C;SF270000;BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+255B;SF280000;BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+255E;SF360000;BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+255F;SF370000;BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+255A;SF380000;BOX DRAWINGS DOUBLE UP AND RIGHT
+2554;SF390000;BOX DRAWINGS DOUBLE DOWN AND RIGHT
+2569;SF400000;BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+2566;SF410000;BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+2560;SF420000;BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+2550;SF430000;BOX DRAWINGS DOUBLE HORIZONTAL
+256C;SF440000;BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+2567;SF450000;BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+2568;SF460000;BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+2564;SF470000;BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+2565;SF480000;BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+2559;SF490000;BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+2558;SF500000;BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+2552;SF510000;BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+2553;SF520000;BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+256B;SF530000;BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+256A;SF540000;BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+015A;Sacute;LATIN CAPITAL LETTER S WITH ACUTE
+0160;Scaron;LATIN CAPITAL LETTER S WITH CARON
+015E;Scedilla;LATIN CAPITAL LETTER S WITH CEDILLA
+015C;Scircumflex;LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+0218;Scommaaccent;LATIN CAPITAL LETTER S WITH COMMA BELOW
+03A3;Sigma;GREEK CAPITAL LETTER SIGMA
+0054;T;LATIN CAPITAL LETTER T
+03A4;Tau;GREEK CAPITAL LETTER TAU
+0166;Tbar;LATIN CAPITAL LETTER T WITH STROKE
+0164;Tcaron;LATIN CAPITAL LETTER T WITH CARON
+0162;Tcommaaccent;LATIN CAPITAL LETTER T WITH CEDILLA
+0398;Theta;GREEK CAPITAL LETTER THETA
+00DE;Thorn;LATIN CAPITAL LETTER THORN
+0055;U;LATIN CAPITAL LETTER U
+00DA;Uacute;LATIN CAPITAL LETTER U WITH ACUTE
+016C;Ubreve;LATIN CAPITAL LETTER U WITH BREVE
+00DB;Ucircumflex;LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+00DC;Udieresis;LATIN CAPITAL LETTER U WITH DIAERESIS
+00D9;Ugrave;LATIN CAPITAL LETTER U WITH GRAVE
+01AF;Uhorn;LATIN CAPITAL LETTER U WITH HORN
+0170;Uhungarumlaut;LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+016A;Umacron;LATIN CAPITAL LETTER U WITH MACRON
+0172;Uogonek;LATIN CAPITAL LETTER U WITH OGONEK
+03A5;Upsilon;GREEK CAPITAL LETTER UPSILON
+03D2;Upsilon1;GREEK UPSILON WITH HOOK SYMBOL
+03AB;Upsilondieresis;GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+038E;Upsilontonos;GREEK CAPITAL LETTER UPSILON WITH TONOS
+016E;Uring;LATIN CAPITAL LETTER U WITH RING ABOVE
+0168;Utilde;LATIN CAPITAL LETTER U WITH TILDE
+0056;V;LATIN CAPITAL LETTER V
+0057;W;LATIN CAPITAL LETTER W
+1E82;Wacute;LATIN CAPITAL LETTER W WITH ACUTE
+0174;Wcircumflex;LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+1E84;Wdieresis;LATIN CAPITAL LETTER W WITH DIAERESIS
+1E80;Wgrave;LATIN CAPITAL LETTER W WITH GRAVE
+0058;X;LATIN CAPITAL LETTER X
+039E;Xi;GREEK CAPITAL LETTER XI
+0059;Y;LATIN CAPITAL LETTER Y
+00DD;Yacute;LATIN CAPITAL LETTER Y WITH ACUTE
+0176;Ycircumflex;LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+0178;Ydieresis;LATIN CAPITAL LETTER Y WITH DIAERESIS
+1EF2;Ygrave;LATIN CAPITAL LETTER Y WITH GRAVE
+005A;Z;LATIN CAPITAL LETTER Z
+0179;Zacute;LATIN CAPITAL LETTER Z WITH ACUTE
+017D;Zcaron;LATIN CAPITAL LETTER Z WITH CARON
+017B;Zdotaccent;LATIN CAPITAL LETTER Z WITH DOT ABOVE
+0396;Zeta;GREEK CAPITAL LETTER ZETA
+0061;a;LATIN SMALL LETTER A
+00E1;aacute;LATIN SMALL LETTER A WITH ACUTE
+0103;abreve;LATIN SMALL LETTER A WITH BREVE
+00E2;acircumflex;LATIN SMALL LETTER A WITH CIRCUMFLEX
+00B4;acute;ACUTE ACCENT
+0301;acutecomb;COMBINING ACUTE ACCENT
+00E4;adieresis;LATIN SMALL LETTER A WITH DIAERESIS
+00E6;ae;LATIN SMALL LETTER AE
+01FD;aeacute;LATIN SMALL LETTER AE WITH ACUTE
+2015;afii00208;HORIZONTAL BAR
+0410;afii10017;CYRILLIC CAPITAL LETTER A
+0411;afii10018;CYRILLIC CAPITAL LETTER BE
+0412;afii10019;CYRILLIC CAPITAL LETTER VE
+0413;afii10020;CYRILLIC CAPITAL LETTER GHE
+0414;afii10021;CYRILLIC CAPITAL LETTER DE
+0415;afii10022;CYRILLIC CAPITAL LETTER IE
+0401;afii10023;CYRILLIC CAPITAL LETTER IO
+0416;afii10024;CYRILLIC CAPITAL LETTER ZHE
+0417;afii10025;CYRILLIC CAPITAL LETTER ZE
+0418;afii10026;CYRILLIC CAPITAL LETTER I
+0419;afii10027;CYRILLIC CAPITAL LETTER SHORT I
+041A;afii10028;CYRILLIC CAPITAL LETTER KA
+041B;afii10029;CYRILLIC CAPITAL LETTER EL
+041C;afii10030;CYRILLIC CAPITAL LETTER EM
+041D;afii10031;CYRILLIC CAPITAL LETTER EN
+041E;afii10032;CYRILLIC CAPITAL LETTER O
+041F;afii10033;CYRILLIC CAPITAL LETTER PE
+0420;afii10034;CYRILLIC CAPITAL LETTER ER
+0421;afii10035;CYRILLIC CAPITAL LETTER ES
+0422;afii10036;CYRILLIC CAPITAL LETTER TE
+0423;afii10037;CYRILLIC CAPITAL LETTER U
+0424;afii10038;CYRILLIC CAPITAL LETTER EF
+0425;afii10039;CYRILLIC CAPITAL LETTER HA
+0426;afii10040;CYRILLIC CAPITAL LETTER TSE
+0427;afii10041;CYRILLIC CAPITAL LETTER CHE
+0428;afii10042;CYRILLIC CAPITAL LETTER SHA
+0429;afii10043;CYRILLIC CAPITAL LETTER SHCHA
+042A;afii10044;CYRILLIC CAPITAL LETTER HARD SIGN
+042B;afii10045;CYRILLIC CAPITAL LETTER YERU
+042C;afii10046;CYRILLIC CAPITAL LETTER SOFT SIGN
+042D;afii10047;CYRILLIC CAPITAL LETTER E
+042E;afii10048;CYRILLIC CAPITAL LETTER YU
+042F;afii10049;CYRILLIC CAPITAL LETTER YA
+0490;afii10050;CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+0402;afii10051;CYRILLIC CAPITAL LETTER DJE
+0403;afii10052;CYRILLIC CAPITAL LETTER GJE
+0404;afii10053;CYRILLIC CAPITAL LETTER UKRAINIAN IE
+0405;afii10054;CYRILLIC CAPITAL LETTER DZE
+0406;afii10055;CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+0407;afii10056;CYRILLIC CAPITAL LETTER YI
+0408;afii10057;CYRILLIC CAPITAL LETTER JE
+0409;afii10058;CYRILLIC CAPITAL LETTER LJE
+040A;afii10059;CYRILLIC CAPITAL LETTER NJE
+040B;afii10060;CYRILLIC CAPITAL LETTER TSHE
+040C;afii10061;CYRILLIC CAPITAL LETTER KJE
+040E;afii10062;CYRILLIC CAPITAL LETTER SHORT U
+0430;afii10065;CYRILLIC SMALL LETTER A
+0431;afii10066;CYRILLIC SMALL LETTER BE
+0432;afii10067;CYRILLIC SMALL LETTER VE
+0433;afii10068;CYRILLIC SMALL LETTER GHE
+0434;afii10069;CYRILLIC SMALL LETTER DE
+0435;afii10070;CYRILLIC SMALL LETTER IE
+0451;afii10071;CYRILLIC SMALL LETTER IO
+0436;afii10072;CYRILLIC SMALL LETTER ZHE
+0437;afii10073;CYRILLIC SMALL LETTER ZE
+0438;afii10074;CYRILLIC SMALL LETTER I
+0439;afii10075;CYRILLIC SMALL LETTER SHORT I
+043A;afii10076;CYRILLIC SMALL LETTER KA
+043B;afii10077;CYRILLIC SMALL LETTER EL
+043C;afii10078;CYRILLIC SMALL LETTER EM
+043D;afii10079;CYRILLIC SMALL LETTER EN
+043E;afii10080;CYRILLIC SMALL LETTER O
+043F;afii10081;CYRILLIC SMALL LETTER PE
+0440;afii10082;CYRILLIC SMALL LETTER ER
+0441;afii10083;CYRILLIC SMALL LETTER ES
+0442;afii10084;CYRILLIC SMALL LETTER TE
+0443;afii10085;CYRILLIC SMALL LETTER U
+0444;afii10086;CYRILLIC SMALL LETTER EF
+0445;afii10087;CYRILLIC SMALL LETTER HA
+0446;afii10088;CYRILLIC SMALL LETTER TSE
+0447;afii10089;CYRILLIC SMALL LETTER CHE
+0448;afii10090;CYRILLIC SMALL LETTER SHA
+0449;afii10091;CYRILLIC SMALL LETTER SHCHA
+044A;afii10092;CYRILLIC SMALL LETTER HARD SIGN
+044B;afii10093;CYRILLIC SMALL LETTER YERU
+044C;afii10094;CYRILLIC SMALL LETTER SOFT SIGN
+044D;afii10095;CYRILLIC SMALL LETTER E
+044E;afii10096;CYRILLIC SMALL LETTER YU
+044F;afii10097;CYRILLIC SMALL LETTER YA
+0491;afii10098;CYRILLIC SMALL LETTER GHE WITH UPTURN
+0452;afii10099;CYRILLIC SMALL LETTER DJE
+0453;afii10100;CYRILLIC SMALL LETTER GJE
+0454;afii10101;CYRILLIC SMALL LETTER UKRAINIAN IE
+0455;afii10102;CYRILLIC SMALL LETTER DZE
+0456;afii10103;CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+0457;afii10104;CYRILLIC SMALL LETTER YI
+0458;afii10105;CYRILLIC SMALL LETTER JE
+0459;afii10106;CYRILLIC SMALL LETTER LJE
+045A;afii10107;CYRILLIC SMALL LETTER NJE
+045B;afii10108;CYRILLIC SMALL LETTER TSHE
+045C;afii10109;CYRILLIC SMALL LETTER KJE
+045E;afii10110;CYRILLIC SMALL LETTER SHORT U
+040F;afii10145;CYRILLIC CAPITAL LETTER DZHE
+0462;afii10146;CYRILLIC CAPITAL LETTER YAT
+0472;afii10147;CYRILLIC CAPITAL LETTER FITA
+0474;afii10148;CYRILLIC CAPITAL LETTER IZHITSA
+045F;afii10193;CYRILLIC SMALL LETTER DZHE
+0463;afii10194;CYRILLIC SMALL LETTER YAT
+0473;afii10195;CYRILLIC SMALL LETTER FITA
+0475;afii10196;CYRILLIC SMALL LETTER IZHITSA
+04D9;afii10846;CYRILLIC SMALL LETTER SCHWA
+200E;afii299;LEFT-TO-RIGHT MARK
+200F;afii300;RIGHT-TO-LEFT MARK
+200D;afii301;ZERO WIDTH JOINER
+066A;afii57381;ARABIC PERCENT SIGN
+060C;afii57388;ARABIC COMMA
+0660;afii57392;ARABIC-INDIC DIGIT ZERO
+0661;afii57393;ARABIC-INDIC DIGIT ONE
+0662;afii57394;ARABIC-INDIC DIGIT TWO
+0663;afii57395;ARABIC-INDIC DIGIT THREE
+0664;afii57396;ARABIC-INDIC DIGIT FOUR
+0665;afii57397;ARABIC-INDIC DIGIT FIVE
+0666;afii57398;ARABIC-INDIC DIGIT SIX
+0667;afii57399;ARABIC-INDIC DIGIT SEVEN
+0668;afii57400;ARABIC-INDIC DIGIT EIGHT
+0669;afii57401;ARABIC-INDIC DIGIT NINE
+061B;afii57403;ARABIC SEMICOLON
+061F;afii57407;ARABIC QUESTION MARK
+0621;afii57409;ARABIC LETTER HAMZA
+0622;afii57410;ARABIC LETTER ALEF WITH MADDA ABOVE
+0623;afii57411;ARABIC LETTER ALEF WITH HAMZA ABOVE
+0624;afii57412;ARABIC LETTER WAW WITH HAMZA ABOVE
+0625;afii57413;ARABIC LETTER ALEF WITH HAMZA BELOW
+0626;afii57414;ARABIC LETTER YEH WITH HAMZA ABOVE
+0627;afii57415;ARABIC LETTER ALEF
+0628;afii57416;ARABIC LETTER BEH
+0629;afii57417;ARABIC LETTER TEH MARBUTA
+062A;afii57418;ARABIC LETTER TEH
+062B;afii57419;ARABIC LETTER THEH
+062C;afii57420;ARABIC LETTER JEEM
+062D;afii57421;ARABIC LETTER HAH
+062E;afii57422;ARABIC LETTER KHAH
+062F;afii57423;ARABIC LETTER DAL
+0630;afii57424;ARABIC LETTER THAL
+0631;afii57425;ARABIC LETTER REH
+0632;afii57426;ARABIC LETTER ZAIN
+0633;afii57427;ARABIC LETTER SEEN
+0634;afii57428;ARABIC LETTER SHEEN
+0635;afii57429;ARABIC LETTER SAD
+0636;afii57430;ARABIC LETTER DAD
+0637;afii57431;ARABIC LETTER TAH
+0638;afii57432;ARABIC LETTER ZAH
+0639;afii57433;ARABIC LETTER AIN
+063A;afii57434;ARABIC LETTER GHAIN
+0640;afii57440;ARABIC TATWEEL
+0641;afii57441;ARABIC LETTER FEH
+0642;afii57442;ARABIC LETTER QAF
+0643;afii57443;ARABIC LETTER KAF
+0644;afii57444;ARABIC LETTER LAM
+0645;afii57445;ARABIC LETTER MEEM
+0646;afii57446;ARABIC LETTER NOON
+0648;afii57448;ARABIC LETTER WAW
+0649;afii57449;ARABIC LETTER ALEF MAKSURA
+064A;afii57450;ARABIC LETTER YEH
+064B;afii57451;ARABIC FATHATAN
+064C;afii57452;ARABIC DAMMATAN
+064D;afii57453;ARABIC KASRATAN
+064E;afii57454;ARABIC FATHA
+064F;afii57455;ARABIC DAMMA
+0650;afii57456;ARABIC KASRA
+0651;afii57457;ARABIC SHADDA
+0652;afii57458;ARABIC SUKUN
+0647;afii57470;ARABIC LETTER HEH
+06A4;afii57505;ARABIC LETTER VEH
+067E;afii57506;ARABIC LETTER PEH
+0686;afii57507;ARABIC LETTER TCHEH
+0698;afii57508;ARABIC LETTER JEH
+06AF;afii57509;ARABIC LETTER GAF
+0679;afii57511;ARABIC LETTER TTEH
+0688;afii57512;ARABIC LETTER DDAL
+0691;afii57513;ARABIC LETTER RREH
+06BA;afii57514;ARABIC LETTER NOON GHUNNA
+06D2;afii57519;ARABIC LETTER YEH BARREE
+06D5;afii57534;ARABIC LETTER AE
+20AA;afii57636;NEW SHEQEL SIGN
+05BE;afii57645;HEBREW PUNCTUATION MAQAF
+05C3;afii57658;HEBREW PUNCTUATION SOF PASUQ
+05D0;afii57664;HEBREW LETTER ALEF
+05D1;afii57665;HEBREW LETTER BET
+05D2;afii57666;HEBREW LETTER GIMEL
+05D3;afii57667;HEBREW LETTER DALET
+05D4;afii57668;HEBREW LETTER HE
+05D5;afii57669;HEBREW LETTER VAV
+05D6;afii57670;HEBREW LETTER ZAYIN
+05D7;afii57671;HEBREW LETTER HET
+05D8;afii57672;HEBREW LETTER TET
+05D9;afii57673;HEBREW LETTER YOD
+05DA;afii57674;HEBREW LETTER FINAL KAF
+05DB;afii57675;HEBREW LETTER KAF
+05DC;afii57676;HEBREW LETTER LAMED
+05DD;afii57677;HEBREW LETTER FINAL MEM
+05DE;afii57678;HEBREW LETTER MEM
+05DF;afii57679;HEBREW LETTER FINAL NUN
+05E0;afii57680;HEBREW LETTER NUN
+05E1;afii57681;HEBREW LETTER SAMEKH
+05E2;afii57682;HEBREW LETTER AYIN
+05E3;afii57683;HEBREW LETTER FINAL PE
+05E4;afii57684;HEBREW LETTER PE
+05E5;afii57685;HEBREW LETTER FINAL TSADI
+05E6;afii57686;HEBREW LETTER TSADI
+05E7;afii57687;HEBREW LETTER QOF
+05E8;afii57688;HEBREW LETTER RESH
+05E9;afii57689;HEBREW LETTER SHIN
+05EA;afii57690;HEBREW LETTER TAV
+05F0;afii57716;HEBREW LIGATURE YIDDISH DOUBLE VAV
+05F1;afii57717;HEBREW LIGATURE YIDDISH VAV YOD
+05F2;afii57718;HEBREW LIGATURE YIDDISH DOUBLE YOD
+05B4;afii57793;HEBREW POINT HIRIQ
+05B5;afii57794;HEBREW POINT TSERE
+05B6;afii57795;HEBREW POINT SEGOL
+05BB;afii57796;HEBREW POINT QUBUTS
+05B8;afii57797;HEBREW POINT QAMATS
+05B7;afii57798;HEBREW POINT PATAH
+05B0;afii57799;HEBREW POINT SHEVA
+05B2;afii57800;HEBREW POINT HATAF PATAH
+05B1;afii57801;HEBREW POINT HATAF SEGOL
+05B3;afii57802;HEBREW POINT HATAF QAMATS
+05C2;afii57803;HEBREW POINT SIN DOT
+05C1;afii57804;HEBREW POINT SHIN DOT
+05B9;afii57806;HEBREW POINT HOLAM
+05BC;afii57807;HEBREW POINT DAGESH OR MAPIQ
+05BD;afii57839;HEBREW POINT METEG
+05BF;afii57841;HEBREW POINT RAFE
+05C0;afii57842;HEBREW PUNCTUATION PASEQ
+02BC;afii57929;MODIFIER LETTER APOSTROPHE
+2105;afii61248;CARE OF
+2113;afii61289;SCRIPT SMALL L
+2116;afii61352;NUMERO SIGN
+202C;afii61573;POP DIRECTIONAL FORMATTING
+202D;afii61574;LEFT-TO-RIGHT OVERRIDE
+202E;afii61575;RIGHT-TO-LEFT OVERRIDE
+200C;afii61664;ZERO WIDTH NON-JOINER
+066D;afii63167;ARABIC FIVE POINTED STAR
+02BD;afii64937;MODIFIER LETTER REVERSED COMMA
+00E0;agrave;LATIN SMALL LETTER A WITH GRAVE
+2135;aleph;ALEF SYMBOL
+03B1;alpha;GREEK SMALL LETTER ALPHA
+03AC;alphatonos;GREEK SMALL LETTER ALPHA WITH TONOS
+0101;amacron;LATIN SMALL LETTER A WITH MACRON
+0026;ampersand;AMPERSAND
+2220;angle;ANGLE
+2329;angleleft;LEFT-POINTING ANGLE BRACKET
+232A;angleright;RIGHT-POINTING ANGLE BRACKET
+0387;anoteleia;GREEK ANO TELEIA
+0105;aogonek;LATIN SMALL LETTER A WITH OGONEK
+2248;approxequal;ALMOST EQUAL TO
+00E5;aring;LATIN SMALL LETTER A WITH RING ABOVE
+01FB;aringacute;LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+2194;arrowboth;LEFT RIGHT ARROW
+21D4;arrowdblboth;LEFT RIGHT DOUBLE ARROW
+21D3;arrowdbldown;DOWNWARDS DOUBLE ARROW
+21D0;arrowdblleft;LEFTWARDS DOUBLE ARROW
+21D2;arrowdblright;RIGHTWARDS DOUBLE ARROW
+21D1;arrowdblup;UPWARDS DOUBLE ARROW
+2193;arrowdown;DOWNWARDS ARROW
+2190;arrowleft;LEFTWARDS ARROW
+2192;arrowright;RIGHTWARDS ARROW
+2191;arrowup;UPWARDS ARROW
+2195;arrowupdn;UP DOWN ARROW
+21A8;arrowupdnbse;UP DOWN ARROW WITH BASE
+005E;asciicircum;CIRCUMFLEX ACCENT
+007E;asciitilde;TILDE
+002A;asterisk;ASTERISK
+2217;asteriskmath;ASTERISK OPERATOR
+0040;at;COMMERCIAL AT
+00E3;atilde;LATIN SMALL LETTER A WITH TILDE
+0062;b;LATIN SMALL LETTER B
+005C;backslash;REVERSE SOLIDUS
+007C;bar;VERTICAL LINE
+03B2;beta;GREEK SMALL LETTER BETA
+2588;block;FULL BLOCK
+007B;braceleft;LEFT CURLY BRACKET
+007D;braceright;RIGHT CURLY BRACKET
+005B;bracketleft;LEFT SQUARE BRACKET
+005D;bracketright;RIGHT SQUARE BRACKET
+02D8;breve;BREVE
+00A6;brokenbar;BROKEN BAR
+2022;bullet;BULLET
+0063;c;LATIN SMALL LETTER C
+0107;cacute;LATIN SMALL LETTER C WITH ACUTE
+02C7;caron;CARON
+21B5;carriagereturn;DOWNWARDS ARROW WITH CORNER LEFTWARDS
+010D;ccaron;LATIN SMALL LETTER C WITH CARON
+00E7;ccedilla;LATIN SMALL LETTER C WITH CEDILLA
+0109;ccircumflex;LATIN SMALL LETTER C WITH CIRCUMFLEX
+010B;cdotaccent;LATIN SMALL LETTER C WITH DOT ABOVE
+00B8;cedilla;CEDILLA
+00A2;cent;CENT SIGN
+03C7;chi;GREEK SMALL LETTER CHI
+25CB;circle;WHITE CIRCLE
+2297;circlemultiply;CIRCLED TIMES
+2295;circleplus;CIRCLED PLUS
+02C6;circumflex;MODIFIER LETTER CIRCUMFLEX ACCENT
+2663;club;BLACK CLUB SUIT
+003A;colon;COLON
+20A1;colonmonetary;COLON SIGN
+002C;comma;COMMA
+2245;congruent;APPROXIMATELY EQUAL TO
+00A9;copyright;COPYRIGHT SIGN
+00A4;currency;CURRENCY SIGN
+0064;d;LATIN SMALL LETTER D
+2020;dagger;DAGGER
+2021;daggerdbl;DOUBLE DAGGER
+010F;dcaron;LATIN SMALL LETTER D WITH CARON
+0111;dcroat;LATIN SMALL LETTER D WITH STROKE
+00B0;degree;DEGREE SIGN
+03B4;delta;GREEK SMALL LETTER DELTA
+2666;diamond;BLACK DIAMOND SUIT
+00A8;dieresis;DIAERESIS
+0385;dieresistonos;GREEK DIALYTIKA TONOS
+00F7;divide;DIVISION SIGN
+2593;dkshade;DARK SHADE
+2584;dnblock;LOWER HALF BLOCK
+0024;dollar;DOLLAR SIGN
+20AB;dong;DONG SIGN
+02D9;dotaccent;DOT ABOVE
+0323;dotbelowcomb;COMBINING DOT BELOW
+0131;dotlessi;LATIN SMALL LETTER DOTLESS I
+22C5;dotmath;DOT OPERATOR
+0065;e;LATIN SMALL LETTER E
+00E9;eacute;LATIN SMALL LETTER E WITH ACUTE
+0115;ebreve;LATIN SMALL LETTER E WITH BREVE
+011B;ecaron;LATIN SMALL LETTER E WITH CARON
+00EA;ecircumflex;LATIN SMALL LETTER E WITH CIRCUMFLEX
+00EB;edieresis;LATIN SMALL LETTER E WITH DIAERESIS
+0117;edotaccent;LATIN SMALL LETTER E WITH DOT ABOVE
+00E8;egrave;LATIN SMALL LETTER E WITH GRAVE
+0038;eight;DIGIT EIGHT
+2208;element;ELEMENT OF
+2026;ellipsis;HORIZONTAL ELLIPSIS
+0113;emacron;LATIN SMALL LETTER E WITH MACRON
+2014;emdash;EM DASH
+2205;emptyset;EMPTY SET
+2013;endash;EN DASH
+014B;eng;LATIN SMALL LETTER ENG
+0119;eogonek;LATIN SMALL LETTER E WITH OGONEK
+03B5;epsilon;GREEK SMALL LETTER EPSILON
+03AD;epsilontonos;GREEK SMALL LETTER EPSILON WITH TONOS
+003D;equal;EQUALS SIGN
+2261;equivalence;IDENTICAL TO
+212E;estimated;ESTIMATED SYMBOL
+03B7;eta;GREEK SMALL LETTER ETA
+03AE;etatonos;GREEK SMALL LETTER ETA WITH TONOS
+00F0;eth;LATIN SMALL LETTER ETH
+0021;exclam;EXCLAMATION MARK
+203C;exclamdbl;DOUBLE EXCLAMATION MARK
+00A1;exclamdown;INVERTED EXCLAMATION MARK
+2203;existential;THERE EXISTS
+0066;f;LATIN SMALL LETTER F
+2640;female;FEMALE SIGN
+2012;figuredash;FIGURE DASH
+25A0;filledbox;BLACK SQUARE
+25AC;filledrect;BLACK RECTANGLE
+0035;five;DIGIT FIVE
+215D;fiveeighths;VULGAR FRACTION FIVE EIGHTHS
+0192;florin;LATIN SMALL LETTER F WITH HOOK
+0034;four;DIGIT FOUR
+2044;fraction;FRACTION SLASH
+20A3;franc;FRENCH FRANC SIGN
+0067;g;LATIN SMALL LETTER G
+03B3;gamma;GREEK SMALL LETTER GAMMA
+011F;gbreve;LATIN SMALL LETTER G WITH BREVE
+01E7;gcaron;LATIN SMALL LETTER G WITH CARON
+011D;gcircumflex;LATIN SMALL LETTER G WITH CIRCUMFLEX
+0123;gcommaaccent;LATIN SMALL LETTER G WITH CEDILLA
+0121;gdotaccent;LATIN SMALL LETTER G WITH DOT ABOVE
+00DF;germandbls;LATIN SMALL LETTER SHARP S
+2207;gradient;NABLA
+0060;grave;GRAVE ACCENT
+0300;gravecomb;COMBINING GRAVE ACCENT
+003E;greater;GREATER-THAN SIGN
+2265;greaterequal;GREATER-THAN OR EQUAL TO
+00AB;guillemotleft;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+00BB;guillemotright;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+2039;guilsinglleft;SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+203A;guilsinglright;SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+0068;h;LATIN SMALL LETTER H
+0127;hbar;LATIN SMALL LETTER H WITH STROKE
+0125;hcircumflex;LATIN SMALL LETTER H WITH CIRCUMFLEX
+2665;heart;BLACK HEART SUIT
+0309;hookabovecomb;COMBINING HOOK ABOVE
+2302;house;HOUSE
+02DD;hungarumlaut;DOUBLE ACUTE ACCENT
+002D;hyphen;HYPHEN-MINUS
+0069;i;LATIN SMALL LETTER I
+00ED;iacute;LATIN SMALL LETTER I WITH ACUTE
+012D;ibreve;LATIN SMALL LETTER I WITH BREVE
+00EE;icircumflex;LATIN SMALL LETTER I WITH CIRCUMFLEX
+00EF;idieresis;LATIN SMALL LETTER I WITH DIAERESIS
+00EC;igrave;LATIN SMALL LETTER I WITH GRAVE
+0133;ij;LATIN SMALL LIGATURE IJ
+012B;imacron;LATIN SMALL LETTER I WITH MACRON
+221E;infinity;INFINITY
+222B;integral;INTEGRAL
+2321;integralbt;BOTTOM HALF INTEGRAL
+2320;integraltp;TOP HALF INTEGRAL
+2229;intersection;INTERSECTION
+25D8;invbullet;INVERSE BULLET
+25D9;invcircle;INVERSE WHITE CIRCLE
+263B;invsmileface;BLACK SMILING FACE
+012F;iogonek;LATIN SMALL LETTER I WITH OGONEK
+03B9;iota;GREEK SMALL LETTER IOTA
+03CA;iotadieresis;GREEK SMALL LETTER IOTA WITH DIALYTIKA
+0390;iotadieresistonos;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+03AF;iotatonos;GREEK SMALL LETTER IOTA WITH TONOS
+0129;itilde;LATIN SMALL LETTER I WITH TILDE
+006A;j;LATIN SMALL LETTER J
+0135;jcircumflex;LATIN SMALL LETTER J WITH CIRCUMFLEX
+006B;k;LATIN SMALL LETTER K
+03BA;kappa;GREEK SMALL LETTER KAPPA
+0137;kcommaaccent;LATIN SMALL LETTER K WITH CEDILLA
+0138;kgreenlandic;LATIN SMALL LETTER KRA
+006C;l;LATIN SMALL LETTER L
+013A;lacute;LATIN SMALL LETTER L WITH ACUTE
+03BB;lambda;GREEK SMALL LETTER LAMDA
+013E;lcaron;LATIN SMALL LETTER L WITH CARON
+013C;lcommaaccent;LATIN SMALL LETTER L WITH CEDILLA
+0140;ldot;LATIN SMALL LETTER L WITH MIDDLE DOT
+003C;less;LESS-THAN SIGN
+2264;lessequal;LESS-THAN OR EQUAL TO
+258C;lfblock;LEFT HALF BLOCK
+20A4;lira;LIRA SIGN
+2227;logicaland;LOGICAL AND
+00AC;logicalnot;NOT SIGN
+2228;logicalor;LOGICAL OR
+017F;longs;LATIN SMALL LETTER LONG S
+25CA;lozenge;LOZENGE
+0142;lslash;LATIN SMALL LETTER L WITH STROKE
+2591;ltshade;LIGHT SHADE
+006D;m;LATIN SMALL LETTER M
+00AF;macron;MACRON
+2642;male;MALE SIGN
+2212;minus;MINUS SIGN
+2032;minute;PRIME
+03BC;mu;GREEK SMALL LETTER MU
+00D7;multiply;MULTIPLICATION SIGN
+266A;musicalnote;EIGHTH NOTE
+266B;musicalnotedbl;BEAMED EIGHTH NOTES
+006E;n;LATIN SMALL LETTER N
+0144;nacute;LATIN SMALL LETTER N WITH ACUTE
+0149;napostrophe;LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+0148;ncaron;LATIN SMALL LETTER N WITH CARON
+0146;ncommaaccent;LATIN SMALL LETTER N WITH CEDILLA
+0039;nine;DIGIT NINE
+2209;notelement;NOT AN ELEMENT OF
+2260;notequal;NOT EQUAL TO
+2284;notsubset;NOT A SUBSET OF
+00F1;ntilde;LATIN SMALL LETTER N WITH TILDE
+03BD;nu;GREEK SMALL LETTER NU
+0023;numbersign;NUMBER SIGN
+006F;o;LATIN SMALL LETTER O
+00F3;oacute;LATIN SMALL LETTER O WITH ACUTE
+014F;obreve;LATIN SMALL LETTER O WITH BREVE
+00F4;ocircumflex;LATIN SMALL LETTER O WITH CIRCUMFLEX
+00F6;odieresis;LATIN SMALL LETTER O WITH DIAERESIS
+0153;oe;LATIN SMALL LIGATURE OE
+02DB;ogonek;OGONEK
+00F2;ograve;LATIN SMALL LETTER O WITH GRAVE
+01A1;ohorn;LATIN SMALL LETTER O WITH HORN
+0151;ohungarumlaut;LATIN SMALL LETTER O WITH DOUBLE ACUTE
+014D;omacron;LATIN SMALL LETTER O WITH MACRON
+03C9;omega;GREEK SMALL LETTER OMEGA
+03D6;omega1;GREEK PI SYMBOL
+03CE;omegatonos;GREEK SMALL LETTER OMEGA WITH TONOS
+03BF;omicron;GREEK SMALL LETTER OMICRON
+03CC;omicrontonos;GREEK SMALL LETTER OMICRON WITH TONOS
+0031;one;DIGIT ONE
+2024;onedotenleader;ONE DOT LEADER
+215B;oneeighth;VULGAR FRACTION ONE EIGHTH
+00BD;onehalf;VULGAR FRACTION ONE HALF
+00BC;onequarter;VULGAR FRACTION ONE QUARTER
+2153;onethird;VULGAR FRACTION ONE THIRD
+25E6;openbullet;WHITE BULLET
+00AA;ordfeminine;FEMININE ORDINAL INDICATOR
+00BA;ordmasculine;MASCULINE ORDINAL INDICATOR
+221F;orthogonal;RIGHT ANGLE
+00F8;oslash;LATIN SMALL LETTER O WITH STROKE
+01FF;oslashacute;LATIN SMALL LETTER O WITH STROKE AND ACUTE
+00F5;otilde;LATIN SMALL LETTER O WITH TILDE
+0070;p;LATIN SMALL LETTER P
+00B6;paragraph;PILCROW SIGN
+0028;parenleft;LEFT PARENTHESIS
+0029;parenright;RIGHT PARENTHESIS
+2202;partialdiff;PARTIAL DIFFERENTIAL
+0025;percent;PERCENT SIGN
+002E;period;FULL STOP
+00B7;periodcentered;MIDDLE DOT
+22A5;perpendicular;UP TACK
+2030;perthousand;PER MILLE SIGN
+20A7;peseta;PESETA SIGN
+03C6;phi;GREEK SMALL LETTER PHI
+03D5;phi1;GREEK PHI SYMBOL
+03C0;pi;GREEK SMALL LETTER PI
+002B;plus;PLUS SIGN
+00B1;plusminus;PLUS-MINUS SIGN
+211E;prescription;PRESCRIPTION TAKE
+220F;product;N-ARY PRODUCT
+2282;propersubset;SUBSET OF
+2283;propersuperset;SUPERSET OF
+221D;proportional;PROPORTIONAL TO
+03C8;psi;GREEK SMALL LETTER PSI
+0071;q;LATIN SMALL LETTER Q
+003F;question;QUESTION MARK
+00BF;questiondown;INVERTED QUESTION MARK
+0022;quotedbl;QUOTATION MARK
+201E;quotedblbase;DOUBLE LOW-9 QUOTATION MARK
+201C;quotedblleft;LEFT DOUBLE QUOTATION MARK
+201D;quotedblright;RIGHT DOUBLE QUOTATION MARK
+2018;quoteleft;LEFT SINGLE QUOTATION MARK
+201B;quotereversed;SINGLE HIGH-REVERSED-9 QUOTATION MARK
+2019;quoteright;RIGHT SINGLE QUOTATION MARK
+201A;quotesinglbase;SINGLE LOW-9 QUOTATION MARK
+0027;quotesingle;APOSTROPHE
+0072;r;LATIN SMALL LETTER R
+0155;racute;LATIN SMALL LETTER R WITH ACUTE
+221A;radical;SQUARE ROOT
+0159;rcaron;LATIN SMALL LETTER R WITH CARON
+0157;rcommaaccent;LATIN SMALL LETTER R WITH CEDILLA
+2286;reflexsubset;SUBSET OF OR EQUAL TO
+2287;reflexsuperset;SUPERSET OF OR EQUAL TO
+00AE;registered;REGISTERED SIGN
+2310;revlogicalnot;REVERSED NOT SIGN
+03C1;rho;GREEK SMALL LETTER RHO
+02DA;ring;RING ABOVE
+2590;rtblock;RIGHT HALF BLOCK
+0073;s;LATIN SMALL LETTER S
+015B;sacute;LATIN SMALL LETTER S WITH ACUTE
+0161;scaron;LATIN SMALL LETTER S WITH CARON
+015F;scedilla;LATIN SMALL LETTER S WITH CEDILLA
+015D;scircumflex;LATIN SMALL LETTER S WITH CIRCUMFLEX
+0219;scommaaccent;LATIN SMALL LETTER S WITH COMMA BELOW
+2033;second;DOUBLE PRIME
+00A7;section;SECTION SIGN
+003B;semicolon;SEMICOLON
+0037;seven;DIGIT SEVEN
+215E;seveneighths;VULGAR FRACTION SEVEN EIGHTHS
+2592;shade;MEDIUM SHADE
+03C3;sigma;GREEK SMALL LETTER SIGMA
+03C2;sigma1;GREEK SMALL LETTER FINAL SIGMA
+223C;similar;TILDE OPERATOR
+0036;six;DIGIT SIX
+002F;slash;SOLIDUS
+263A;smileface;WHITE SMILING FACE
+0020;space;SPACE
+2660;spade;BLACK SPADE SUIT
+00A3;sterling;POUND SIGN
+220B;suchthat;CONTAINS AS MEMBER
+2211;summation;N-ARY SUMMATION
+263C;sun;WHITE SUN WITH RAYS
+0074;t;LATIN SMALL LETTER T
+03C4;tau;GREEK SMALL LETTER TAU
+0167;tbar;LATIN SMALL LETTER T WITH STROKE
+0165;tcaron;LATIN SMALL LETTER T WITH CARON
+0163;tcommaaccent;LATIN SMALL LETTER T WITH CEDILLA
+2234;therefore;THEREFORE
+03B8;theta;GREEK SMALL LETTER THETA
+03D1;theta1;GREEK THETA SYMBOL
+00FE;thorn;LATIN SMALL LETTER THORN
+0033;three;DIGIT THREE
+215C;threeeighths;VULGAR FRACTION THREE EIGHTHS
+00BE;threequarters;VULGAR FRACTION THREE QUARTERS
+02DC;tilde;SMALL TILDE
+0303;tildecomb;COMBINING TILDE
+0384;tonos;GREEK TONOS
+2122;trademark;TRADE MARK SIGN
+25BC;triagdn;BLACK DOWN-POINTING TRIANGLE
+25C4;triaglf;BLACK LEFT-POINTING POINTER
+25BA;triagrt;BLACK RIGHT-POINTING POINTER
+25B2;triagup;BLACK UP-POINTING TRIANGLE
+0032;two;DIGIT TWO
+2025;twodotenleader;TWO DOT LEADER
+2154;twothirds;VULGAR FRACTION TWO THIRDS
+0075;u;LATIN SMALL LETTER U
+00FA;uacute;LATIN SMALL LETTER U WITH ACUTE
+016D;ubreve;LATIN SMALL LETTER U WITH BREVE
+00FB;ucircumflex;LATIN SMALL LETTER U WITH CIRCUMFLEX
+00FC;udieresis;LATIN SMALL LETTER U WITH DIAERESIS
+00F9;ugrave;LATIN SMALL LETTER U WITH GRAVE
+01B0;uhorn;LATIN SMALL LETTER U WITH HORN
+0171;uhungarumlaut;LATIN SMALL LETTER U WITH DOUBLE ACUTE
+016B;umacron;LATIN SMALL LETTER U WITH MACRON
+005F;underscore;LOW LINE
+2017;underscoredbl;DOUBLE LOW LINE
+222A;union;UNION
+2200;universal;FOR ALL
+0173;uogonek;LATIN SMALL LETTER U WITH OGONEK
+2580;upblock;UPPER HALF BLOCK
+03C5;upsilon;GREEK SMALL LETTER UPSILON
+03CB;upsilondieresis;GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+03B0;upsilondieresistonos;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+03CD;upsilontonos;GREEK SMALL LETTER UPSILON WITH TONOS
+016F;uring;LATIN SMALL LETTER U WITH RING ABOVE
+0169;utilde;LATIN SMALL LETTER U WITH TILDE
+0076;v;LATIN SMALL LETTER V
+0077;w;LATIN SMALL LETTER W
+1E83;wacute;LATIN SMALL LETTER W WITH ACUTE
+0175;wcircumflex;LATIN SMALL LETTER W WITH CIRCUMFLEX
+1E85;wdieresis;LATIN SMALL LETTER W WITH DIAERESIS
+2118;weierstrass;SCRIPT CAPITAL P
+1E81;wgrave;LATIN SMALL LETTER W WITH GRAVE
+0078;x;LATIN SMALL LETTER X
+03BE;xi;GREEK SMALL LETTER XI
+0079;y;LATIN SMALL LETTER Y
+00FD;yacute;LATIN SMALL LETTER Y WITH ACUTE
+0177;ycircumflex;LATIN SMALL LETTER Y WITH CIRCUMFLEX
+00FF;ydieresis;LATIN SMALL LETTER Y WITH DIAERESIS
+00A5;yen;YEN SIGN
+1EF3;ygrave;LATIN SMALL LETTER Y WITH GRAVE
+007A;z;LATIN SMALL LETTER Z
+017A;zacute;LATIN SMALL LETTER Z WITH ACUTE
+017E;zcaron;LATIN SMALL LETTER Z WITH CARON
+017C;zdotaccent;LATIN SMALL LETTER Z WITH DOT ABOVE
+0030;zero;DIGIT ZERO
+03B6;zeta;GREEK SMALL LETTER ZETA
diff --git a/util/X86MAC64/share/gnuplot/4.6/PostScript/cp1250.ps b/util/X86MAC64/share/gnuplot/4.6/PostScript/cp1250.ps
new file mode 100644 (file)
index 0000000..ac1fa1a
--- /dev/null
@@ -0,0 +1,41 @@
+%
+% Encoding for code page 1250 (Microsoft Windows Central and Eastern European)
+%
+/reencodeCP1250 {
+dup dup findfont dup length dict begin
+{ 1 index /FID ne { def }{ pop pop } ifelse } forall
+currentdict /CharStrings known {
+       CharStrings /Idieresis known {
+               /Encoding CP1250Encoding def } if
+} if
+currentdict end definefont
+} def
+/CP1250Encoding [
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
+/parenleft/parenright/asterisk/plus/comma/minus/period/slash/zero/one
+/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater
+/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z
+/bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft
+/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar
+/braceright/tilde/.notdef/.notdef/.notdef/quotesinglbase/.notdef/quotedblbase
+/ellipsis/dagger/daggerdbl/.notdef/perthousand/Scaron/guilsinglleft/Sacute
+/Tcaron/Zcaron/Zacute/.notdef/quoteleft/quoteright/quotedblleft
+/quotedblright/bullet/endash/emdash/.notdef/trademark/scaron
+/guilsinglright/sacute/tcaron/zcaron/zacute/space/caron/breve/Lslash
+/currency/Aogonek/brokenbar/section/dieresis/copyright/Scedilla
+/guillemotleft/logicalnot/hyphen/registered/Zdotaccent
+/degree/plusminus/ogonek/lslash/acute/mu/paragraph/bullet
+/cedilla/aogonek/scedilla/guillemotright/Lcaron/hungarumlaut/lcaron
+/zdotaccent/Racute/Aacute/Acircumflex/Abreve/Adieresis/Lacute/Cacute
+/Ccedilla/Ccaron/Eacute/Eogonek/Edieresis/Ecaron/Iacute/Icircumflex
+/Dcaron/Eth/Nacute/Ncaron/Oacute/Ocircumflex/Ohungarumlaut/Odieresis
+/multiply/Rcaron/Uring/Uacute/Uhungarumlaut/Udieresis/Yacute/Tcedilla
+/germandbls/racute/aacute/acircumflex/abreve/adieresis/lacute/cacute
+/ccedilla/ccaron/eacute/eogonek/edieresis/ecaron/iacute/icircumflex
+/dcaron/dbar/nacute/ncaron/oacute/ocircumflex/ohungarumlaut/odieresis
+/divide/rcaron/uring/uacute/uhungarumlaut/udieresis/yacute/tcedilla/dotaccent
+] def
diff --git a/util/X86MAC64/share/gnuplot/4.6/PostScript/cp1251.ps b/util/X86MAC64/share/gnuplot/4.6/PostScript/cp1251.ps
new file mode 100644 (file)
index 0000000..89b7165
--- /dev/null
@@ -0,0 +1,52 @@
+%
+% encoding for code page cp1251 (8-bit Russian)
+% version 1.0:  - Mainly letters are mapped. The following positions
+% (JFi)           are left blank (undefined):
+%               -- first 32 positions,
+%               -- frame characters,
+%               -- a few special characters.
+
+/reencodeCP1251 {
+dup dup findfont dup length dict begin
+{ 1 index /FID ne { def }{ pop pop } ifelse } forall
+currentdict /CharStrings known {
+CharStrings /Idieresis known {
+/Encoding CP1251Encoding def } if
+} if
+currentdict end definefont
+} def
+/CP1251Encoding [
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle
+/parenleft /parenright /asterisk /plus /comma /minus /period /slash
+/zero /one /two /three /four /five /six /seven
+/eight /nine /colon /semicolon /less /equal /greater /question
+/at /A /B /C /D /E /F /G
+/H /I /J /K /L /M /N /O
+/P /Q /R /S /T /U /V /W
+/X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
+/grave /a /b /c /d /e /f /g
+/h /i /j /k /l /m /n /o
+/p /q /r /s /t /u /v /w
+/x /y /z /braceleft /bar /braceright /asciitilde /.notdef
+/afii10051 /afii10052 /quotesinglbase /afii10100 /quotedblbase /ellipsis /dagger /daggerdbl
+/Euro /perthousand /afii10058 /guilsinglleft /afii10059 /afii10061 /afii10060 /afii10145
+/afii10099 /quoteleft /quoteright /quotedblleft /quotedblright /bullet /endash /emdash
+/.notdef /trademark /afii10106 /guilsinglright /afii10107 /afii10109 /afii10108 /afii10193
+/space /afii10062 /afii10110 /afii10057 /currency /afii10050 /brokenbar /section
+/afii10023 /copyright /afii10053 /guillemotleft /logicalnot /hyphen /registered /afii10056
+/degree /plusminus /afii10055 /afii10103 /afii10098 /mu /paragraph /periodcentered
+/afii10071 /afii61352 /afii10101 /guillemotright /afii10105 /afii10054 /afii10102 /afii10104
+/afii10017 /afii10018 /afii10019 /afii10020 /afii10021 /afii10022 /afii10024 /afii10025
+/afii10026 /afii10027 /afii10028 /afii10029 /afii10030 /afii10031 /afii10032 /afii10033
+/afii10034 /afii10035 /afii10036 /afii10037 /afii10038 /afii10039 /afii10040 /afii10041
+/afii10042 /afii10043 /afii10044 /afii10045 /afii10046 /afii10047 /afii10048 /afii10049
+/afii10065 /afii10066 /afii10067 /afii10068 /afii10069 /afii10070 /afii10072 /afii10073
+/afii10074 /afii10075 /afii10076 /afii10077 /afii10078 /afii10079 /afii10080 /afii10081
+/afii10082 /afii10083 /afii10084 /afii10085 /afii10086 /afii10087 /afii10088 /afii10089
+/afii10090 /afii10091 /afii10092 /afii10093 /afii10094 /afii10095 /afii10096 /afii10097
+] def
+
diff --git a/util/X86MAC64/share/gnuplot/4.6/PostScript/cp437.ps b/util/X86MAC64/share/gnuplot/4.6/PostScript/cp437.ps
new file mode 100644 (file)
index 0000000..6688ff9
--- /dev/null
@@ -0,0 +1,49 @@
+%
+% encoding for code page 437 (original MSDOS)
+% version 1.0: - Mainly letters are mapped. The following positions
+% (JFi)                  are left blank (undefined):
+%              -- first 32 positions,
+%              -- frame characters,
+%              -- greek characters,
+%              -- some more special characters.
+%
+% version 1.1:  - added some more special characters
+
+/reencodeCP437 {
+dup dup findfont dup length dict begin
+{ 1 index /FID ne { def }{ pop pop } ifelse } forall
+currentdict /CharStrings known {
+       CharStrings /Idieresis known {
+               /Encoding CP437Encoding def } if
+} if
+currentdict end definefont
+} def
+/CP437Encoding [
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
+/parenleft/parenright/asterisk/plus/comma/minus/period/slash
+/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
+/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
+/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
+/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
+/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde/.notdef
+/Ccedilla/udieresis/eacute/acircumflex/adieresis/agrave/aring/ccedilla
+/ecircumflex/edieresis/egrave/idieresis/icircumflex/igrave/Adieresis/Aring
+/Eacute/ae/AE/ocircumflex/odieresis/ograve/ucircumflex/ugrave
+/ydieresis/Odieresis/Udieresis/cent/sterling/yen/.notdef/florin
+/aacute/iacute/oacute/uacute/ntilde/Ntilde/ordfeminine/ordmasculine
+/questiondown/.notdef/logicalnot/onehalf/onequarter/exclamdown/guillemotleft/guillemotright
+/space/space/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/germandbls/.notdef/.notdef/.notdef/.notdef/mu/.notdef
+/.notdef/.notdef/.notdef/.notdef/infinity/.notdef/.notdef/.notdef
+/.notdef/plusminus/greaterequal/lessequal/.notdef/.notdef/divide/.notdef
+/degree/bullet/periodcentered/.notdef/nsuperior/twosuperior/.notdef/.notdef
+] def
diff --git a/util/X86MAC64/share/gnuplot/4.6/PostScript/cp850.ps b/util/X86MAC64/share/gnuplot/4.6/PostScript/cp850.ps
new file mode 100644 (file)
index 0000000..9855e5b
--- /dev/null
@@ -0,0 +1,46 @@
+%
+% encoding for code page 850 (obsolete MSDOS Western Europe)
+% version 1.0:  - Mainly letters are mapped. The following positions
+% (JFi)                  are left blank (undefined):
+%              -- first 32 positions,
+%              -- frame characters,
+%              -- a few special characters.
+
+/reencodeCP850 {
+dup dup findfont dup length dict begin
+{ 1 index /FID ne { def }{ pop pop } ifelse } forall
+currentdict /CharStrings known {
+       CharStrings /Idieresis known {
+               /Encoding CP850Encoding def } if
+} if
+currentdict end definefont
+} def
+/CP850Encoding [
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
+/parenleft/parenright/asterisk/plus/comma/minus/period/slash
+/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
+/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
+/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
+/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
+/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde/.notdef
+/Ccedilla/udieresis/eacute/acircumflex/adieresis/agrave/aring/ccedilla
+/ecircumflex/edieresis/egrave/idieresis/icircumflex/igrave/Adieresis/Aring
+/Eacute/ae/AE/ocircumflex/odieresis/ograve/ucircumflex/ugrave
+/ydieresis/Odieresis/Udieresis/oslash/sterling/Oslash/multiply/florin
+/aacute/iacute/oacute/uacute/ntilde/Ntilde/ordfeminine/ordmasculine
+/questiondown/registered/logicalnot/onehalf/onequarter/exclamdown/guillemotleft/guillemotright
+/space/space/.notdef/.notdef/.notdef/Aacute/Acircumflex/Agrave
+/.notdef/.notdef/.notdef/.notdef/.notdef/cent/yen/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/atilde/Atilde
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/currency
+/eth/Eth/Ecircumflex/Edieresis/Egrave/dotlessi/Iacute/Icircumflex
+/Idieresis/.notdef/.notdef/.notdef/.notdef/brokenbar/Igrave/.notdef
+/Oacute/germandbls/Ocircumflex/Ograve/otilde/Otilde/mu/thorn
+/Thorn/Uacute/Ucircumflex/Ugrave/yacute/Yacute/macron/acute
+/hyphen/plusminus/equal/threequarters/paragraph/section/divide/.notdef
+/degree/.notdef/periodcentered/onesuperior/threesuperior/twosuperior/.notdef/.notdef
+] def
diff --git a/util/X86MAC64/share/gnuplot/4.6/PostScript/cp852.ps b/util/X86MAC64/share/gnuplot/4.6/PostScript/cp852.ps
new file mode 100644 (file)
index 0000000..f3bf506
--- /dev/null
@@ -0,0 +1,41 @@
+%
+% encoding for code page 852 (MSDOS Central European)
+/reencodeCP852 {
+dup dup findfont dup length dict begin
+{ 1 index /FID ne { def }{ pop pop } ifelse } forall
+currentdict /CharStrings known {
+       CharStrings /Idieresis known {
+               /Encoding CP852Encoding def } if
+} if
+currentdict end definefont
+} def
+/CP852Encoding [
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/paragraph/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle
+/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash
+/zero/one/two/three/four/five/six/seven/eight/nine
+/colon/semicolon/less/equal/greater/question
+/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z
+/bracketleft/backslash/bracketright/asciicircum/underscore
+/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w
+/x/y/z/braceleft/bar/braceright/asciitilde/.notdef
+/Ccedilla/udieresis/eacute/acircumflex/adieresis/uring/cacute/ccedilla
+/lslash/edieresis/Ohungarumlaut/ohungarumlaut/icircumflex/Zacute/Adieresis
+/Cacute/Eacute/Lacute/lacute/ocircumflex/odieresis/Lcaron/lcaron/Sacute
+/sacute/Odieresis/Udieresis/Tcaron/tcaron/Lslash/multiply/ccaron
+/aacute/iacute/oacute/uacute/Aogonek/aogonek/Zcaron/zcaron
+/Eogonek/eogonek/.notdef/zacute/Ccaron/scedilla/guillemotleft/guillemotright
+/.notdef/.notdef/.notdef/.notdef/.notdef/Aacute/Acircumflex/Ecaron
+/Scedilla/.notdef/.notdef/.notdef/.notdef/Zdotaccent/zdotaccent/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/Abreve/abreve
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/currency
+/eth/Eth/Dcaron/Edieresis/dcaron/Ncaron/Iacute/Icircumflex
+/ecaron/.notdef/.notdef/.notdef/.notdef/Tcedilla/Uring/.notdef
+/Oacute/germandbls/Ocircumflex/Nacute/nacute/ncaron/Scaron/scaron
+/Racute/Uacute/racute/Uhungarumlaut/yacute/Yacute/tcedilla/acute
+/hyphen/hungarumlaut/ogonek/caron/breve/section/divide/cedilla
+/degree/dieresis/dotaccent/uhungarumlaut/Rcaron/rcaron/.notdef/.notdef
+] def
diff --git a/util/X86MAC64/share/gnuplot/4.6/PostScript/koi8r.ps b/util/X86MAC64/share/gnuplot/4.6/PostScript/koi8r.ps
new file mode 100644 (file)
index 0000000..d590431
--- /dev/null
@@ -0,0 +1,46 @@
+%
+% encoding for code page koi8r (8-bit Russian)
+% version 1.0: - Mainly letters are mapped. The following positions
+% (JFi)                  are left blank (undefined):
+%              -- first 32 positions,
+%              -- frame characters,
+%              -- a few special characters.
+
+/reencodeKOI8R {
+dup dup findfont dup length dict begin
+{ 1 index /FID ne { def }{ pop pop } ifelse } forall
+currentdict /CharStrings known {
+       CharStrings /Idieresis known {
+               /Encoding KOI8REncoding def } if
+} if
+currentdict end definefont
+} def
+/KOI8REncoding [
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
+/parenleft/parenright/asterisk/plus/comma/minus/period/slash
+/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
+/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
+/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
+/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
+/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde/.notdef
+/SF100000/SF110000/SF010000/SF030000/SF020000/SF040000/SF080000/SF090000
+/SF060000/SF070000/SF050000/SF600000/SF570000/SF610000/SF580000/SF590000
+/SF140000/SF150000/SF160000/SS260000/filledbox/bullet/radical/approxequal
+/lessequal/greaterequal/space/SS270000/degree/twosuperior/periodcentered/divide
+/SF430000/SF240000/SF510000/afii10071/SF520000/SF390000/SF220000/SF210000
+/SF250000/SF500000/SF490000/SF380000/SF280000/SF270000/SF260000/SF360000
+/SF370000/SF420000/SF190000/afii10023/SF200000/SF230000/SF470000/SF480000
+/SF410000/SF450000/SF460000/SF400000/SF540000/SF530000/SF440000/copyright
+/afii10096/afii10065/afii10066/afii10088/afii10069/afii10070/afii10086/afii10068
+/afii10087/afii10074/afii10075/afii10076/afii10077/afii10078/afii10079/afii10080
+/afii10081/afii10097/afii10082/afii10083/afii10084/afii10085/afii10072/afii10067
+/afii10094/afii10093/afii10073/afii10090/afii10095/afii10091/afii10089/afii10092
+/afii10048/afii10017/afii10018/afii10040/afii10021/afii10022/afii10038/afii10020
+/afii10039/afii10026/afii10027/afii10028/afii10029/afii10030/afii10031/afii10032
+/afii10033/afii10049/afii10034/afii10035/afii10036/afii10037/afii10024/afii10019
+/afii10046/afii10045/afii10025/afii10042/afii10047/afii10043/afii10041/afii10044
+] def
diff --git a/util/X86MAC64/share/gnuplot/4.6/PostScript/koi8u.ps b/util/X86MAC64/share/gnuplot/4.6/PostScript/koi8u.ps
new file mode 100644 (file)
index 0000000..4fb45c9
--- /dev/null
@@ -0,0 +1,40 @@
+%
+% encoding for code page koi8r (8-bit Ukrainian)
+/reencodeKOI8U {
+dup dup findfont dup length dict begin
+{ 1 index /FID ne { def }{ pop pop } ifelse } forall
+currentdict /CharStrings known {
+       CharStrings /Idieresis known {
+               /Encoding KOI8UEncoding def } if
+} if
+currentdict end definefont
+} def
+/KOI8UEncoding [
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
+/parenleft/parenright/asterisk/plus/comma/minus/period/slash
+/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
+/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
+/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
+/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
+/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde/.notdef
+/SF100000/SF110000/SF010000/SF030000/SF020000/SF040000/SF080000/SF090000
+/SF060000/SF070000/SF050000/SF600000/SF570000/SF610000/SF580000/SF590000
+/SF140000/SF150000/SF160000/SS260000/filledbox/bullet/radical/approxequal
+/lessequal/greaterequal/space/SS270000/degree/twosuperior/periodcentered/divide
+/SF430000/SF240000/SF510000/afii10071/afii10101/SF390000/afii10103/afii10104
+/SF250000/SF500000/SF490000/SF380000/SF280000/afii10098/SF260000/SF360000
+/SF370000/SF420000/SF190000/afii10023/afii10053/SF230000/afii10055/afii10056
+/SF410000/SF450000/SF460000/SF400000/SF540000/afii10050/SF440000/copyright
+/afii10096/afii10065/afii10066/afii10088/afii10069/afii10070/afii10086/afii10068
+/afii10087/afii10074/afii10075/afii10076/afii10077/afii10078/afii10079/afii10080
+/afii10081/afii10097/afii10082/afii10083/afii10084/afii10085/afii10072/afii10067
+/afii10094/afii10093/afii10073/afii10090/afii10095/afii10091/afii10089/afii10092
+/afii10048/afii10017/afii10018/afii10040/afii10021/afii10022/afii10038/afii10020
+/afii10039/afii10026/afii10027/afii10028/afii10029/afii10030/afii10031/afii10032
+/afii10033/afii10049/afii10034/afii10035/afii10036/afii10037/afii10024/afii10019
+/afii10046/afii10045/afii10025/afii10042/afii10047/afii10043/afii10041/afii10044
+] def
diff --git a/util/X86MAC64/share/gnuplot/4.6/PostScript/prologue.ps b/util/X86MAC64/share/gnuplot/4.6/PostScript/prologue.ps
new file mode 100644 (file)
index 0000000..2f1098b
--- /dev/null
@@ -0,0 +1,374 @@
+%
+% Gnuplot Prolog Version 4.6 (September 2012)
+%
+%/SuppressPDFMark true def
+%
+/M {moveto} bind def
+/L {lineto} bind def
+/R {rmoveto} bind def
+/V {rlineto} bind def
+/N {newpath moveto} bind def
+/Z {closepath} bind def
+/C {setrgbcolor} bind def
+/f {rlineto fill} bind def
+/g {setgray} bind def
+/Gshow {show} def   % May be redefined later in the file to support UTF-8
+/vpt2 vpt 2 mul def
+/hpt2 hpt 2 mul def
+/Lshow {currentpoint stroke M 0 vshift R 
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R 
+       Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
+/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def
+  /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def
+/DL {Color {setrgbcolor Solid {pop []} if 0 setdash}
+ {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def
+/BL {stroke userlinewidth 2 mul setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+/AL {stroke userlinewidth 2 div setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+/UL {dup gnulinewidth mul /userlinewidth exch def
+       dup 1 lt {pop 1} if 10 mul /udl exch def} def
+/PL {stroke userlinewidth setlinewidth
+       Rounded {1 setlinejoin 1 setlinecap} if} def
+3.8 setmiterlimit
+% Default Line colors
+/LCw {1 1 1} def
+/LCb {0 0 0} def
+/LCa {0 0 0} def
+/LC0 {1 0 0} def
+/LC1 {0 1 0} def
+/LC2 {0 0 1} def
+/LC3 {1 0 1} def
+/LC4 {0 1 1} def
+/LC5 {1 1 0} def
+/LC6 {0 0 0} def
+/LC7 {1 0.3 0} def
+/LC8 {0.5 0.5 0.5} def
+% Default Line Types
+/LTw {PL [] 1 setgray} def
+/LTb {BL [] LCb DL} def
+/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def
+/LT0 {PL [] LC0 DL} def
+/LT1 {PL [4 dl1 2 dl2] LC1 DL} def
+/LT2 {PL [2 dl1 3 dl2] LC2 DL} def
+/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def
+/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def
+/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def
+/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def
+/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def
+/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def
+/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def
+/Dia {stroke [] 0 setdash 2 copy vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath stroke
+  Pnt} def
+/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V
+  currentpoint stroke M
+  hpt neg vpt neg R hpt2 0 V stroke
+ } def
+/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath stroke
+  Pnt} def
+/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M
+  hpt2 vpt2 neg V currentpoint stroke M
+  hpt2 neg 0 R hpt2 vpt2 V stroke} def
+/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath stroke
+  Pnt} def
+/Star {2 copy Pls Crs} def
+/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath fill} def
+/TriUF {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath fill} def
+/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath stroke
+  Pnt} def
+/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath fill} def
+/DiaF {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath fill} def
+/Pent {stroke [] 0 setdash 2 copy gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath stroke grestore Pnt} def
+/PentF {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath fill grestore} def
+/Circle {stroke [] 0 setdash 2 copy
+  hpt 0 360 arc stroke Pnt} def
+/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def
+/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def
+/C1 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C2 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C3 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C4 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 180 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C5 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc
+       2 copy moveto
+       2 copy vpt 180 270 arc closepath fill
+       vpt 0 360 arc} bind def
+/C6 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C7 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 270 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C8 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 270 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C9 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 270 450 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill
+       2 copy moveto
+       2 copy vpt 90 180 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C11 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 180 arc closepath fill
+       2 copy moveto
+       2 copy vpt 270 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C12 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 180 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C13 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 0 90 arc closepath fill
+       2 copy moveto
+       2 copy vpt 180 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/C14 {BL [] 0 setdash 2 copy moveto
+       2 copy vpt 90 360 arc closepath fill
+       vpt 0 360 arc} bind def
+/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill
+       vpt 0 360 arc closepath} bind def
+/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
+       neg 0 rlineto closepath} bind def
+/Square {dup Rec} bind def
+/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def
+/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def
+/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def
+/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
+/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def
+/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
+/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill
+       exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
+/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def
+/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill
+       2 copy vpt Square fill Bsquare} bind def
+/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def
+/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def
+/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill
+       Bsquare} bind def
+/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill
+       Bsquare} bind def
+/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def
+/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+       2 copy vpt Square fill Bsquare} bind def
+/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+       2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
+/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def
+/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def
+/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def
+/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def
+/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def
+/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def
+/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def
+/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def
+/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def
+/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def
+/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def
+/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def
+/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def
+/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def
+/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def
+/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def
+/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def
+/DiaE {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V closepath stroke} def
+/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V closepath stroke} def
+/TriUE {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V closepath stroke} def
+/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V closepath stroke} def
+/PentE {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  closepath stroke grestore} def
+/CircE {stroke [] 0 setdash 
+  hpt 0 360 arc stroke} def
+/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def
+/DiaW {stroke [] 0 setdash vpt add M
+  hpt neg vpt neg V hpt vpt neg V
+  hpt vpt V hpt neg vpt V Opaque stroke} def
+/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M
+  0 vpt2 neg V hpt2 0 V 0 vpt2 V
+  hpt2 neg 0 V Opaque stroke} def
+/TriUW {stroke [] 0 setdash vpt 1.12 mul add M
+  hpt neg vpt -1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt 1.62 mul V Opaque stroke} def
+/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M
+  hpt neg vpt 1.62 mul V
+  hpt 2 mul 0 V
+  hpt neg vpt -1.62 mul V Opaque stroke} def
+/PentW {stroke [] 0 setdash gsave
+  translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+  Opaque stroke grestore} def
+/CircW {stroke [] 0 setdash 
+  hpt 0 360 arc Opaque stroke} def
+/BoxFill {gsave Rec 1 setgray fill grestore} def
+/Density {
+  /Fillden exch def
+  currentrgbcolor
+  /ColB exch def /ColG exch def /ColR exch def
+  /ColR ColR Fillden mul Fillden sub 1 add def
+  /ColG ColG Fillden mul Fillden sub 1 add def
+  /ColB ColB Fillden mul Fillden sub 1 add def
+  ColR ColG ColB setrgbcolor} def
+/BoxColFill {gsave Rec PolyFill} def
+/PolyFill {gsave Density fill grestore grestore} def
+/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def
+%
+% PostScript Level 1 Pattern Fill routine for rectangles
+% Usage: x y w h s a XX PatternFill
+%      x,y = lower left corner of box to be filled
+%      w,h = width and height of box
+%        a = angle in degrees between lines and x-axis
+%       XX = 0/1 for no/yes cross-hatch
+%
+/PatternFill {gsave /PFa [ 9 2 roll ] def
+  PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate
+  PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec
+  TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse
+  clip
+  currentlinewidth 0.5 mul setlinewidth
+  /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def
+  0 0 M PFa 5 get rotate PFs -2 div dup translate
+  0 1 PFs PFa 4 get div 1 add floor cvi
+       {PFa 4 get mul 0 M 0 PFs V} for
+  0 PFa 6 get ne {
+       0 1 PFs PFa 4 get div 1 add floor cvi
+       {PFa 4 get mul 0 2 1 roll M PFs 0 V} for
+ } if
+  stroke grestore} def
+%
+/languagelevel where
+ {pop languagelevel} {1} ifelse
+ 2 lt
+       {/InterpretLevel1 true def}
+       {/InterpretLevel1 Level1 def}
+ ifelse
+%
+% PostScript level 2 pattern fill definitions
+%
+/Level2PatternFill {
+/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8}
+       bind def
+/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} 
+>> matrix makepattern
+/Pat1 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke
+       0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke}
+>> matrix makepattern
+/Pat2 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L
+       8 8 L 8 0 L 0 0 L fill}
+>> matrix makepattern
+/Pat3 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L
+       0 12 M 12 0 L stroke}
+>> matrix makepattern
+/Pat4 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L
+       0 -4 M 12 8 L stroke}
+>> matrix makepattern
+/Pat5 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L
+       0 12 M 8 -4 L 4 12 M 10 0 L stroke}
+>> matrix makepattern
+/Pat6 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L
+       0 -4 M 8 12 L 4 -4 M 10 8 L stroke}
+>> matrix makepattern
+/Pat7 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L
+       12 0 M -4 8 L 12 4 M 0 10 L stroke}
+>> matrix makepattern
+/Pat8 exch def
+<< Tile8x8
+ /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L
+       -4 0 M 12 8 L -4 4 M 8 10 L stroke}
+>> matrix makepattern
+/Pat9 exch def
+/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def
+/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def
+/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def
+/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def
+/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def
+/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def
+/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def
+} def
+%
+%
+%End of PostScript Level 2 code
+%
+/PatternBgnd {
+  TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse
+} def
+%
+% Substitute for Level 2 pattern fill codes with
+% grayscale if Level 2 support is not selected.
+%
+/Level1PatternFill {
+/Pattern1 {0.250 Density} bind def
+/Pattern2 {0.500 Density} bind def
+/Pattern3 {0.750 Density} bind def
+/Pattern4 {0.125 Density} bind def
+/Pattern5 {0.375 Density} bind def
+/Pattern6 {0.625 Density} bind def
+/Pattern7 {0.875 Density} bind def
+} def
+%
+% Now test for support of Level 2 code
+%
+Level1 {Level1PatternFill} {Level2PatternFill} ifelse
+%
+/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont
+dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall
+currentdict end definefont pop
diff --git a/util/X86MAC64/share/gnuplot/4.6/PostScript/utf-8.ps b/util/X86MAC64/share/gnuplot/4.6/PostScript/utf-8.ps
new file mode 100644 (file)
index 0000000..cd0fd2b
--- /dev/null
@@ -0,0 +1,58 @@
+%
+% Base ISO8859-1 character encoding plus support macros for UTF-8 encoding
+% via the glyphshow operator
+%
+/reencodeISO {
+dup dup findfont dup length dict begin
+{ 1 index /FID ne { def }{ pop pop } ifelse } forall
+currentdict /CharStrings known {
+       CharStrings /Idieresis known {
+               /Encoding ISOLatin1Encoding def } if
+} if
+currentdict end definefont
+} def
+/ISOLatin1Encoding [
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
+/parenleft/parenright/asterisk/plus/comma/minus/period/slash
+/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
+/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
+/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
+/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
+/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
+/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
+/ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar
+/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
+/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
+/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
+/guillemotright/onequarter/onehalf/threequarters/questiondown
+/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
+/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
+/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
+/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
+/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
+/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
+/yacute/thorn/ydieresis
+] def
+
+/Gshow { dup type /stringtype eq { show } { glyphshow } ifelse } def
+
+/Gsall { {Gshow} forall } def
+/Gwidth {
+       dup currentpoint pop exch
+       gsave 6 array currentmatrix nulldevice setmatrix Gsall currentpoint pop grestore sub
+       } def
+/GLshow {currentpoint stroke M 0 vshift R 
+       Blacktext {gsave 0 setgray Gsall grestore} {Gsall} ifelse} def
+/GRshow {currentpoint stroke M dup Gwidth vshift R
+       Blacktext {gsave 0 setgray Gsall grestore} {Gsall} ifelse} def
+/GCshow {currentpoint stroke M dup Gwidth 2 div vshift R 
+       Blacktext {gsave 0 setgray Gsall grestore} {Gsall} ifelse} def
diff --git a/util/X86MAC64/share/gnuplot/4.6/app-defaults/Gnuplot b/util/X86MAC64/share/gnuplot/4.6/app-defaults/Gnuplot
new file mode 100644 (file)
index 0000000..2afe522
--- /dev/null
@@ -0,0 +1,87 @@
+! X resources for gnuplot x11 terminal driver
+! More information available in the gnuplot documentation
+! From inside gnuplot, try 'help set term x11'
+
+! User interface settings
+  gnuplot*exportselection:  on
+  gnuplot*fastrotate:   on
+  gnuplot*feedback:     on
+! gnuplot*ctrlq:        off
+  gnuplot*persist:      off
+! gnuplot*raise:        on
+  gnuplot*dashed:       off
+
+! Default font and font encoding
+! gnuplot*font:        verdana,11,bold
+! gnuplot*encoding:    iso8859-15
+
+! Default line colors
+! gnuplot*background:  white
+  gnuplot*textColor:   black
+  gnuplot*borderColor: black
+  gnuplot*axisColor:   black
+  gnuplot*line1Color:  red
+  gnuplot*line2Color:  green
+  gnuplot*line3Color:  blue
+  gnuplot*line4Color:  magenta
+  gnuplot*line5Color:  cyan
+  gnuplot*line6Color:  sienna
+  gnuplot*line7Color:  orange
+  gnuplot*line8Color:  coral
+
+! Default line widths
+  gnuplot*axisWidth:   0
+  gnuplot*borderWidth: 2
+  gnuplot*line1Width:  1
+  gnuplot*line2Width:  1
+  gnuplot*line3Width:  1
+  gnuplot*line4Width:  1
+  gnuplot*line5Width:  1
+  gnuplot*line6Width:  1
+  gnuplot*line7Width:  1
+  gnuplot*line8Width:  1
+
+! Default point size
+  gnuplot*pointsize:   1
+
+! Default dash patterns for monochrome Displays
+! 0 means a solid line.
+! A two-digit number `jk` means a dashed line with a repeated pattern of 
+! `j` pixels on followed by `k` pixels off.  For example, '16' is a dotted
+! line with one pixel on followed by six pixels off.
+! More elaborate on/off patterns can be specified with a four-digit value.
+! The default values shown below are for monochrome displays
+! or monochrome rendering on color or grayscale displays.  For color displays,
+! the default for each is 0 (solid line) except for `axisDashes`
+  gnuplot*borderDashes:   0
+  gnuplot*axisDashes:    16
+  gnuplot*line1Dashes:    0
+  gnuplot*line2Dashes:   42
+  gnuplot*line3Dashes:   13
+  gnuplot*line4Dashes:   44
+  gnuplot*line5Dashes:   15
+  gnuplot*line6Dashes: 4441
+  gnuplot*line7Dashes:   42
+  gnuplot*line8Dashes:   13
+
+! Colormap usage and preferred visual Display class
+! gnuplot*maxcolors:  <integer>
+! gnuplot*mincolors:  <integer>
+! gnuplot*visual:     <visual name>
+  gnuplot*mono:         off
+  gnuplot*gray:         off
+  gnuplot*reverseVideo: off
+
+! Grayscale setting (only checked if program is invoked as gnuplot -gray)
+  gnuplot*textGray:   black
+  gnuplot*borderGray: gray50
+  gnuplot*axisGray:   gray50
+  gnuplot*line1Gray:  gray100
+  gnuplot*line2Gray:  gray60
+  gnuplot*line3Gray:  gray80
+  gnuplot*line4Gray:  gray40
+  gnuplot*line5Gray:  gray90
+  gnuplot*line6Gray:  gray50
+  gnuplot*line7Gray:  gray70
+  gnuplot*line8Gray:  gray30
+
diff --git a/util/X86MAC64/share/gnuplot/4.6/colors_default.gp b/util/X86MAC64/share/gnuplot/4.6/colors_default.gp
new file mode 100644 (file)
index 0000000..97f7fce
--- /dev/null
@@ -0,0 +1,14 @@
+# Ethan A Merritt - my preference for gnuplot colors
+# 2 3 4 5 6 8 are borrowed from the colors_podo set
+#
+set linetype  1 lc rgb "dark-violet" lw 1
+set linetype  2 lc rgb "#009e73" lw 1
+set linetype  3 lc rgb "#56b4e9" lw 1
+set linetype  4 lc rgb "#e69f00" lw 1
+set linetype  5 lc rgb "#f0e442" lw 1
+set linetype  6 lc rgb "#0072b2" lw 1
+set linetype  7 lc rgb "#e51e10" lw 1
+set linetype  8 lc rgb "black"   lw 1
+set linetype  9 lc rgb "gray50"  lw 1
+set linetype cycle  9
+
diff --git a/util/X86MAC64/share/gnuplot/4.6/colors_mono.gp b/util/X86MAC64/share/gnuplot/4.6/colors_mono.gp
new file mode 100644 (file)
index 0000000..155cb20
--- /dev/null
@@ -0,0 +1,14 @@
+#
+# Provide a consistent set of four distinguishable
+# black line types.
+# NB: This does not work with "set term post mono"
+#
+set termoption dashed
+unset for [i=1:4] linetype i
+set linetype 4 lt 1 lw 2.5 lc rgb "black"
+set linetype 3 lt 3 lw 1 lc rgb "black"
+set linetype 2 lt 2 lw 1 lc rgb "black"
+set linetype 1 lt -1 lw 1 lc rgb "black"
+set linetype cycle 4
+#
+set palette gray
diff --git a/util/X86MAC64/share/gnuplot/4.6/colors_podo.gp b/util/X86MAC64/share/gnuplot/4.6/colors_podo.gp
new file mode 100644 (file)
index 0000000..07b8fd2
--- /dev/null
@@ -0,0 +1,12 @@
+# Palette of colors selected to be easily distinguishable by
+# color-blind individuals with either protanopia or deuteranopia
+# Bang Wong [2011] Nature Methods 8, 441.
+set linetype 1 lc rgb "black"
+set linetype 2 lc rgb "#e69f00"
+set linetype 3 lc rgb "#56b4e9"
+set linetype 4 lc rgb "#009e73"
+set linetype 5 lc rgb "#f0e442"
+set linetype 6 lc rgb "#0072b2"
+set linetype 7 lc rgb "#d55e00"
+set linetype 8 lc rgb "#cc79a7"
+set linetype cycle 8
diff --git a/util/X86MAC64/share/gnuplot/4.6/gnuplot.gih b/util/X86MAC64/share/gnuplot/4.6/gnuplot.gih
new file mode 100644 (file)
index 0000000..4e32ba8
--- /dev/null
@@ -0,0 +1,14309 @@
+?gnuplot
+?copyright
+?license
+     Copyright (C) 1986 - 1993, 1998, 2004, 2007  Thomas Williams, Colin Kelley
+
+ Permission to use, copy, and distribute this software and its
+ documentation for any purpose with or without fee is hereby granted,
+ provided that the above copyright notice appear in all copies and
+ that both that copyright notice and this permission notice appear
+ in supporting documentation.
+
+ Permission to modify the software is granted, but not the right to
+ distribute the complete modified source code.  Modifications are to
+ be distributed as patches to the released version.  Permission to
+ distribute binaries produced by compiling modified sources is granted,
+ provided you
+   1. distribute the corresponding source modifications from the
+    released version in the form of a patch file along with the binaries,
+   2. add special version identification to distinguish your version
+    in addition to the base release version number,
+   3. provide your name and address as the primary contact for the
+    support of your modified version, and
+   4. retain our contact information in regard to use of the base
+    software.
+ Permission to distribute the released version of the source code along
+ with corresponding source modifications in the form of a patch file is
+ granted with same provisions 2 through 4 for binary distributions.
+
+ This software is provided "as is" without express or implied warranty
+ to the extent permitted by applicable law.
+
+
+       AUTHORS
+
+       Original Software:
+          Thomas Williams,  Colin Kelley.
+
+       Gnuplot 2.0 additions:
+          Russell Lang, Dave Kotz, John Campbell.
+
+       Gnuplot 3.0 additions:
+          Gershon Elber and many others.
+
+       Gnuplot 4.0 additions:
+          See list of contributors at head of this document.
+?introduction
+?
+ `Gnuplot` is a portable command-line driven graphing utility for Linux, OS/2,
+ MS Windows, OSX, VMS, and many other platforms. The source code is copyrighted
+ but freely distributed (i.e., you don't have to pay for it). It was originally
+ created to allow scientists and students to visualize mathematical functions
+ and data interactively, but has grown to support many non-interactive uses
+ such as web scripting. It is also used as a plotting engine by third-party
+ applications like Octave. Gnuplot has been supported and under active
+ development since 1986. 
+
+ Gnuplot supports many types of plots in either 2D and 3D. It can draw using
+ lines, points, boxes, contours, vector fields, surfaces, and various
+ associated text. It also supports various specialized plot types.
+
+ Gnuplot supports many different types of output: interactive screen terminals
+ (with mouse and hotkey input), direct output to pen plotters or modern
+ printers, and output to many file formats (eps, emf, fig, jpeg, LaTeX, pdf, png,
+ postscript, ...). Gnuplot is easily extensible to include new output modes.
+ Recent additions include interactive terminals based on wxWidgets (usable
+ on multiple platforms), and Qt.  Mouseable plots embedded in web pages
+ can be generated using the svg or HTML5 canvas terminal drivers.
+
+ The command language of `gnuplot` is case sensitive, i.e. commands and
+ function names written in lowercase are not the same as those written in
+ capitals. All command names may be abbreviated as long as the abbreviation is
+ not ambiguous. Any number of commands may appear on a line, separated by
+ semicolons (;). Strings may be set off by either single or double quotes,
+ although there are some subtle differences.  See `syntax` and `quotes` for
+ more details. Examples:
+
+       load "filename"
+       cd 'dir'
+
+ Commands may extend over several input lines by ending each line but the last
+ with a backslash (\).  The backslash must be the _last_ character on each
+ line.  The effect is as if the backslash and newline were not there.  That
+ is, no white space is implied, nor is a comment terminated.  Therefore,
+ commenting out a continued line comments out the entire command
+ (see `comments`).  But note that if an error occurs somewhere on a multi-line
+ command, the parser may not be able to locate precisely where the error is
+ and in that case will not necessarily point to the correct line.
+
+ In this document, curly braces ({}) denote optional arguments and a vertical
+ bar (|) separates mutually exclusive choices.  `Gnuplot` keywords or `help`
+ topics are indicated by backquotes or `boldface` (where available).  Angle
+ brackets (<>) are used to mark replaceable tokens.  In many cases, a default
+ value of the token will be taken for optional arguments if the token is
+ omitted, but these cases are not always denoted with braces around the angle
+ brackets.
+
+ For built-in help on any topic, type `help` followed by the name of the topic
+ or `help ?` to get a menu of available topics.
+
+ The new `gnuplot` user should begin by reading about `plotting` (if in an
+ interactive session, type `help plotting`).
+
+ See the simple.dem demo, also available together with other demos on the web page
+           http://www.gnuplot.info/demo/
+ `Gnuplot` can be started from a command line or from an icon according to the
+ desktop environment. Running it from command line can take the syntax
+       gnuplot {OPTIONS} file1 file2 ...
+ where file1, file2, etc. are input file as in the `load` command.
+ On X11-based systems, you can use
+       gnuplot {X11OPTIONS} {OPTIONS} file1 file2 ...
+ see your X11 documentation and `x11` in this document.
+
+ Options interpreted by gnuplot may come anywhere on the line.  Files are
+ executed in the order specified, as are commands supplied by the -e option,
+ for example
+       gnuplot   file1.in   -e "reset"   file2.in
+
+ The special filename "-" is used to force reading from stdin.  `Gnuplot` exits
+ after the last file is processed.  If no load files are named, `Gnuplot` takes
+ interactive input from stdin.  See help `batch/interactive` for more details.
+ The options specific to gnuplot can be listed by typing
+       gnuplot --help
+ See `command line options` for more details.
+
+ In sessions with an interactive plot window you can hit 'h' anywhere on the
+ plot for help about `hotkeys` and `mousing` features.
+ Section `seeking-assistance` will help you to find further information, help
+ and FAQ.
+?help-desk
+?seeking-assistance
+?faq
+?FAQ
+ The canonical gnuplot web page can be found at
+           http://www.gnuplot.info
+
+ Before seeking help, please check file FAQ.pdf or the above website for
+           FAQ (Frequently Asked Questions) list.
+
+ If you need help as a gnuplot user, please use the newsgroup
+           comp.graphics.apps.gnuplot
+ We prefer that you read the messages through the newsgroup rather than
+ subscribing to the mailing list which is also available and carries the same
+ set of messages. Instructions for subscribing to gnuplot mailing lists may be
+ found via the gnuplot development website on SourceForge
+           http://sourceforge.net/projects/gnuplot
+
+ The address for mailing to list members is:
+           gnuplot-info@lists.sourceforge.net
+
+ Bug reports and code contributions should be uploaded to the trackers at
+           http://sourceforge.net/projects/gnuplot/support
+ Please check previous bug reports if the bug you want to report has not been
+ already fixed in a newer version of gnuplot.
+
+ A mailing list for those interested in development version of gnuplot is:
+           gnuplot-beta@lists.sourceforge.net
+
+ When posting a question, please include full details of the gnuplot version,
+ the terminal type, and the operating system you are using.  A _small_ script
+ demonstrating the problem may be useful.  Function plots are preferable to
+ datafile plots.
+
+?new-features
+ This section lists major additions since version 4.4.
+ For a more exhaustive list, see the NEWS file.
+
+ This version of gnuplot introduces command iteration and block-structured
+ if/else/while/do constructs.  See `if`, `while`, and `do`.
+ Simple iteration is possible inside `plot` or `set` commands.
+ See `iteration`.  General iteration spanning multiple
+ commands is possible using a block construct as shown below.
+ For a related new feature, see the `summation` expression type.
+ Here is an example using several of these new syntax features:
+       set multiplot layout 2,2
+       fourier(k, x) = sin(3./2*k)/k * 2./3*cos(k*x)
+       do for [power = 0:3] {
+           TERMS = 10**power
+           set title sprintf("%g term Fourier series",TERMS)
+           plot 0.5 + sum [k=1:TERMS] fourier(k,x) notitle 
+       }
+       unset multiplot
+ It is now possible to select a column of data from a data file by
+ matching a label in the first row of the file. See `columnhead`.
+ For example
+       plot for [crop in "Oats Peas Beans"] 'data' using "Year":crop
+
+ You can now customize properties (color, linewidth, point type) of the
+ default sequence of linetypes used in plotting. See `set linetype`.
+ This is normally done in an initialization file, either the system-wide
+ file `gnuplotrc` or a private file `~/.gnuplot`. See `initialization`.
+
+ Most terminals now allow you to set an explicit background color for the plot.
+ The special linetype `bgnd` can be used to draw in this color. See `bgnd`.
+
+ See documentation for plot styles `boxplot`, `circles`, `ellipses`, and
+ `fillsteps`.
+
+ Polar plot mode has been reworked to support additional plot styles.
+ The polar axes can now be drawn and labeled independent of the x and y
+ axes. See `set polar` and `set rrange`.
+
+ New smoothing algorithms have been added for both 2- and 3-dimensional plots.
+ `smooth kdensity` and `smooth cumulative` can be used with `plot` to draw 
+ smooth histograms and cumulative distribution functions.  Several new smoothing
+ kernels have been added to `dgrid3d` for use with `splot`.
+ See `smooth` `dgrid3d`.
+
+ Gnuplot now tracks time to millisecond precision. Time formats have been
+ modified to match this. The new built-in function time() returns the current
+ time of day according to the system clock.
+ Example: print the current time to msec precision
+      print strftime("%H:%M:%.3S %d-%b-%Y",time(0.0))
+      18:15:04.253 16-Apr-2011
+ The new `stats` command reads data from a file using the same syntax as
+ the `plot` or `splot` commands. Rather than drawing a graph, it prints
+ out a statistical summary of the data contained in the column[s] requested.
+ The resulting statistics  min, max, mean, standard deviation, correlation,
+ etc. are also stored in named variables that can be used to compose or modify
+ subsequent plotting commands.  See `stats`.
+
+ The `qt` driver implements an interactive terminal on top of the Qt
+ graphics layer.  It can function either as a window in a full-featured
+ desktop enviroment or as a full-screen application on a Qt-based 
+ embedded device.  The `qt` terminal is new and may still have some
+ rough edges.
+
+ Two terminal types support web-based interactive display. The HTML5 `canvas`
+ terminal was introduced in version 4.4. The `svg` terminal has been extensively
+ revised to include support for mousing and better incorporation of svg plots
+ from gnuplot into larger svg/xml documents.
+
+ The `canvas` terminal driver produces javascript output that draws onto the
+ HTML canvas element of a web page.  It can produce either a complete web page
+ containing a single plot, or a script that can be embedded as part of an
+ externally generated HTML document that perhaps contains multiple plots.
+ The embedded plots support browser-side mousing, including zoom/unzoom.
+
+ The `lua` terminal driver creates data intended to be further processed
+ by a script in the lua programming language.  At this point only one such
+ lua script, gnuplot-tikz.lua, is available.  It produces a TeX document
+ suitable for use with the latex TikZ package.  Other lua scripts could be
+ written to process the gnuplot output for use with other TeX packages,
+ or with other non-TeX tools.
+
+ `set term tikz` is shorthand for `set term lua tikz`.  As decribed above, it
+ uses the generic lua terminal and an external lua script to produce a latex
+ document.
+
+ The `context` terminal driver creates output to be further processed by
+ the ConTeXt TeX macro package. To process its output, you additionally require
+ the gnuplot module for ConTeXt available at
+           http://ctan.org/pkg/context-gnuplot
+
+ The `epscairo` terminal uses the cairo and pango libraries to create
+ encapsulated postscript (eps) ouput. It is an alternative to the `postscript`
+ terminal driver for those who would like to have their eps files look equal
+ to e.g. screen output by the `wxt` terminal.
+
+ The `cairolatex` terminal uses the cairo backend of the `pdfcairo` or 
+ `epscairo` terminal to produce graphs for inclusion in LaTeX documents. It
+ creates pdf or eps graphics but transfers texts to LaTeX in the same way as
+ the `epslatex` terminal.
+ The `windows` terminal driver has been revised to suport transparency,
+ antialiasing, buffered output, multiple graph windows and copying to clipboard
+ and saving of graphs as emf files. It has many new options and a revised user
+ interface. Additionaly, the code of the text console has been largely rewritten
+ to support wrapping of long lines. Help is now provided via HTML.
+
+?backwards compatibility
+?compatibility
+ Gnuplot version 4.0 deprecated certain syntax used in earlier versions, but
+ continued to recognize it.  This is now under the control of a configuration
+ option, and can be enabled as follows:
+
+       ./configure --enable-backwards-compatibility
+
+ Notice: Deprecated syntax items may be removed entirely in some future
+ version of gnuplot.
+
+ One major difference is the introduction of keywords to disambiguate complex
+ commands, particularly commands containing string variables. A notable issue
+ was the use of bare numbers to specify offsets, line and point types.
+ Illustrative examples:
+
+ Deprecated:
+       set title "Old" 0,-1
+       set data linespoints
+       plot 1 2 4               # horizontal line at y=1
+ New:
+       TITLE = "New"
+       set title TITLE offset char 0, char -1
+       set style data linespoints
+       plot 1 linetype 2 pointtype 4
+
+?batch/interactive
+?command line options
+ `Gnuplot` may be executed in either batch or interactive modes, and the two
+ may even be mixed together on many systems.
+
+ Any command-line arguments are assumed to be either program options (first
+ character is -) or names of files containing `gnuplot` commands. The option
+ -e "command" may be used to force execution of a gnuplot command. Each file
+ or command string will be executed in the order specified.  The special
+ filename "-" is indicates that commands are to be read from stdin.
+ `Gnuplot` exits after the last file is processed.  If no load files and no 
+ command strings are specified, `gnuplot` accepts interactive input from
+ stdin.
+
+ Both the `exit` and `quit` commands terminate the current command file and
+ `load` the next one, until all have been processed.
+
+ Examples:
+
+ To launch an interactive session:
+       gnuplot
+
+ To launch a batch session using two command files "input1" and "input2":
+       gnuplot input1 input2
+
+ To launch an interactive session after an initialization file "header" and
+ followed by another command file "trailer":
+       gnuplot header - trailer
+
+ To give `gnuplot` commands directly in the command line, using the "-persist"
+ option so that the plot remains on the screen afterwards:
+       gnuplot -persist -e "set title 'Sine curve'; plot sin(x)"
+
+ To set user-defined variables a and s prior to executing commands from a file:
+       gnuplot -e "a=2; s='file.png'" input.gpl
+
+?canvas size
+?canvas
+?set term size
+
+ In earlier versions of gnuplot, some terminal types used the values from
+ `set size` to control also the size of the output canvas; others did not.
+ The use of 'set size' for this purpose was deprecated in version 4.2.
+ Since version 4.4 almost all terminals now behave as follows:
+
+ `set term <terminal_type> size <XX>, <YY>` controls the size of the output
+ file, or "canvas". Please see individual terminal documentation for allowed
+ values of the size parameters.  By default, the plot will fill this canvas.
+
+ `set size <XX>, <YY>` scales the plot itself relative to the size of the
+ canvas.  Scale values less than 1 will cause the plot to not fill the entire
+ canvas.  Scale values larger than 1 will cause only a portion of the plot to
+ fit on the canvas.  Please be aware that setting scale values larger than 1
+ may cause problems on some terminal types.
+
+ The major exception to this convention is the PostScript driver, which
+ by default continues to act as it has in earlier versions. Be warned that
+ the next version of gnuplot may change the default behaviour of the
+ PostScript driver as well.
+
+ Example:
+
+       set size 0.5, 0.5
+       set term png size 600, 400
+       set output "figure.png"
+       plot "data" with lines
+
+ These commands will produce an output file "figure.png" that is 600 pixels
+ wide and 400 pixels tall. The plot will fill the lower left quarter of this
+ canvas.  This is consistent with the way multiplot mode has always worked.
+
+?line-editing
+?editing
+?command-line-editing
+ Command-line editing and command history are supported using either an
+ external gnu readline library, an external BSD libedit library,  or a
+ built-in equivalent.  This choice is a configuration option at the time
+ gnuplot is built.
+
+ The editing commands of the built-in version are given below. Please note that
+ the action of the DEL key is system-dependent. The gnu readline and BSD libedit
+ libraries have their own documentation.
+
+       `Line-editing`:
+
+       ^B    moves back a single character.
+       ^F    moves forward a single character.
+       ^A    moves to the beginning of the line.
+       ^E    moves to the end of the line.
+       ^H    deletes the previous character.
+       DEL   deletes the current character.
+       ^D    deletes current character, sends EOF if the line is empty.
+       ^K    deletes from current position to the end of line.
+       ^L,^R redraws line in case it gets trashed.
+       ^U    deletes the entire line.
+       ^W    deletes previous word.
+
+       `History`:
+
+       ^P    moves back through history.
+       ^N    moves forward through history.
+
+?comments
+ Comments are supported as follows: a `#` may appear in most places in a line
+ and `gnuplot` will ignore the rest of the line.  It will not have this effect
+ inside quotes, inside numbers (including complex numbers), inside command
+ substitutions, etc.  In short, it works anywhere it makes sense to work.
+
+ See also `set datafile commentschars` for specifying comment characters in
+ data files.  Note that if a comment line ends in '\' then the subsequent
+ line is also treated as a comment.
+?coordinates
+ The commands `set arrow`, `set key`, `set label` and `set object` allow you
+ to draw something at an arbitrary position on the graph.  This position is
+ specified by the syntax:
+
+       {<system>} <x>, {<system>} <y> {,{<system>} <z>}
+
+ Each <system> can either be `first`, `second`, `graph`, `screen`, or
+ `character`.
+
+ `first` places the x, y, or z coordinate in the system defined by the left
+ and bottom axes; `second` places it in the system defined by the second axes
+ (top and right); `graph` specifies the area within the axes---0,0 is bottom
+ left and 1,1 is top right (for splot, 0,0,0 is bottom left of plotting area;
+ use negative z to get to the base---see `set xyplane`); `screen`
+ specifies the screen area (the entire area---not just the portion selected by
+ `set size`), with 0,0 at bottom left and 1,1 at top right; and `character`
+ gives the position in character widths and heights from the bottom left of
+ the screen area (screen 0,0), `character` coordinates depend on the chosen
+ font size.
+
+ If the coordinate system for x is not specified, `first` is used.  If the
+ system for y is not specified, the one used for x is adopted.
+
+ In some cases, the given coordinate is not an absolute position but a
+ relative value (e.g., the second position in `set arrow` ... `rto`).  In
+ most cases, the given value serves as difference to the first position.
+ If the given coordinate resides in a logarithmic axis the value is
+ interpreted as factor. For example,
+
+       set logscale x
+       set arrow 100,5 rto 10,2
+
+ plots an arrow from position 100,5 to position 1000,7 since the x axis is
+ logarithmic while the y axis is linear.
+
+ If one (or more) axis is timeseries, the appropriate coordinate should
+ be given as a quoted time string according to the `timefmt` format string.
+ See `set xdata` and `set timefmt`.  `Gnuplot` will also accept an integer
+ expression, which will be interpreted as seconds from 1 January 2000.
+?datastrings
+ Data files may contain string data consisting of either an arbitrary string
+ of printable characters containing no whitespace or an arbitrary string of
+ characters, possibly including whitespace, delimited by double quotes.
+ The following sample line from a datafile is interpreted to contain four
+ columns, with a text field in column 3:
+
+   1.000 2.000 "Third column is all of this text" 4.00
+
+ Text fields can be positioned within a 2-D or 3-D plot using the commands:
+
+   plot 'datafile' using 1:2:4 with labels
+   splot 'datafile' using 1:2:3:4 with labels
+
+ A column of text data can also be used to label the ticmarks along one or more
+ of the plot axes. The example below plots a line through a series of points
+ with (X,Y) coordinates taken from columns 3 and 4 of the input datafile.
+ However, rather than generating regularly spaced tics along the x axis
+ labeled numerically, gnuplot will position a tic mark along the x axis at the
+ X coordinate of each point and label the tic mark with text taken from column
+ 1 of the input datafile.
+
+   set xtics
+   plot 'datafile' using 3:4:xticlabels(1) with linespoints
+
+ There is also an option that will interpret the first entry in a column of
+ input data (i.e. the column heading) as a text field, and use it as the key
+ title for data plotted from that column. The example given below will use the
+ first entry in column 2 to generate a title in the key box, while processing
+ the remainder of columns 2 and 4 to draw the required line:
+
+   plot 'datafile' using 1:(f($2)/$4) with lines title columnhead(2)
+
+ Another example:
+
+   plot for [i=2:6] 'datafile' using i title "Results for ".columnhead(i)
+
+ See `set style labels`, `using xticlabels`, `plot title`, `using`.
+?enhanced text
+?enhanced
+ Many terminal types support an enhanced text mode in which additional
+ formatting information is embedded in the text string.  For example, "x^2"
+ will write x-squared as we are used to seeing it, with a superscript 2.
+ This mode is normally selected when you set the terminal, e.g.
+ "set term png enhanced", but may also be toggled afterward using
+ "set termoption enhanced", or by marking individual strings as in
+ "set label 'x_2' noenhanced".
+
+  Control      Examples        Explanation
+   ^           a^x             superscript
+   _           a_x             subscript
+   @           @x or a@^b_{cd} phantom box (occupies no width)
+   &           &{space}        inserts space of specified length
+   ~           ~a{.8-}         overprints '-' on 'a', raised by .8
+                               times the current fontsize
+
+
+ Braces can be used to place multiple-character text where a single character
+ is expected (e.g., 2^{10}).  To change the font and/or size, use the full form:
+ {/[fontname][=fontsize | *fontscale] text}.  Thus {/Symbol=20 G} is a 20 pt
+ GAMMA and {/*0.75 K} is a K at three-quarters of whatever fontsize is currently
+ in effect.  (The '/' character MUST be the first character after the '{'.)
+
+ The phantom box is useful for a@^b_c to align superscripts and subscripts
+ but does not work well for overwriting an accent on a letter.  For the latter,
+ it is much better to use an encoding  (e.g. iso_8859_1 or utf8) that contains
+ a large variety of letters with accents or other diacritical marks.  See
+ `set encoding`. Since the box is non-spacing, it is sensible to put the shorter
+ of the subscript or superscript in the box (that is, after the @).
+
+ Space equal in length to a string can be inserted using the '&' character.
+ Thus
+         'abc&{def}ghi'
+ would produce
+         'abc   ghi'.
+
+ The '~' character causes the next character or bracketed text to be
+ overprinted by the following character or bracketed text.  The second text
+ will be horizontally centered on the first.  Thus '~a/' will result in an 'a'
+ with a slash through it.  You can also shift the second text vertically by
+ preceding the second text with a number, which will define the fraction of the
+ current fontsize by which the text will be raised or lowered.  In this case
+ the number and text must be enclosed in brackets because more than one
+ character is necessary.  If the overprinted text begins with a number, put a
+ space between the vertical offset and the text ('~{abc}{.5 000}'); otherwise
+ no space is needed ('~{abc}{.5---}').  You can change the font for one or
+ both strings ('~a{.5 /*.2 o}'---an 'a' with a one-fifth-size 'o' on top---and
+ the space between the number and the slash is necessary), but you can't
+ change it after the beginning of the string.  Neither can you use any other
+ special syntax within either string.  You can, of course, use control
+ characters by escaping them (see below), such as '~a{\^}'
+
+ You can access special symbols numerically by specifying \character-code (in
+ octal), e.g., {/Symbol \245} is the symbol for infinity. This does not work
+ for multibyte encodings like UTF-8, however.  In a UTF-8 environment, you
+ should be able to enter multibyte sequences implicitly by typing or otherwise
+ selecting the character you want.
+
+ You can escape control characters using \, e.g.,  \\, \{, and so on.
+
+ But be aware that strings in double-quotes are parsed differently than those
+ enclosed in single-quotes.  The major difference is that backslashes may need
+ to be doubled when in double-quoted strings.
+
+ Examples (these are hard to describe in words---try them!):
+       set xlabel 'Time (10^6 {/Symbol m}s)'
+       set title '{/Symbol=18 \\362@_{/=9.6 0}^{/=12 x}} \\
+                  {/Helvetica e^{-{/Symbol m}^2/2} d}{/Symbol m}'
+
+ The file "ps_guide.ps" in the /docs/psdoc subdirectory of the gnuplot source
+ distribution contains more examples of the enhanced syntax.
+?environment
+ A number of shell environment variables are understood by `gnuplot`.  None of
+ these are required, but may be useful.
+
+ If GNUTERM is defined, it is used as the name of the terminal type to be
+ used.  This overrides any terminal type sensed by `gnuplot` on start-up, but
+ is itself overridden by the .gnuplot (or equivalent) start-up file
+ (see `startup`) and, of course, by later explicit changes.
+
+ GNUHELP may be defined to be the pathname of the HELP file (gnuplot.gih).
+
+ On VMS, the logical name GNUPLOT$HELP should be defined as the name of the
+ help library for `gnuplot`.  The `gnuplot` help can be put inside any system
+ help library, allowing access to help from both within and outside `gnuplot`
+ if desired.
+
+ On Unix, HOME is used as the name of a directory to search for a .gnuplot
+ file if none is found in the current directory.  On MS-DOS, Windows and OS/2,
+ GNUPLOT is used.  On Windows, the NT-specific variable USERPROFILE is also
+ tried. VMS, SYS$LOGIN: is used. Type `help startup`.
+
+ On Unix, PAGER is used as an output filter for help messages.
+
+ On Unix, SHELL is used for the `shell` command.  On MS-DOS and OS/2, COMSPEC
+ is used for the `shell` command.
+
+ FIT_SCRIPT may be used to specify a `gnuplot` command to be executed when a
+ fit is interrupted---see `fit`.  FIT_LOG specifies the default filename of the
+ logfile maintained by fit.
+
+ GNUPLOT_LIB may be used to define additional search directories for data
+ and command files. The variable may contain a single directory name, or
+ a list of directories separated by a platform-specific path separator,
+ eg. ':' on Unix, or ';' on DOS/Windows/OS/2 platforms. The contents
+ of GNUPLOT_LIB are appended to the `loadpath` variable, but not saved
+ with the `save` and `save set` commands.
+
+ Several gnuplot terminal drivers access TrueType fonts via the gd library.
+ For these drivers the font search path is controlled by the environmental
+ variable GDFONTPATH.  Furthermore, a default font for these drivers may be
+ set via the environmental variable GNUPLOT_DEFAULT_GDFONT.
+
+ The postscript terminal uses its own font search path. It is controlled by
+ the environmental variable GNUPLOT_FONTPATH. The format is the same as for
+ GNUPLOT_LIB. The contents of GNUPLOT_FONTPATH are appended to the `fontpath`
+ variable, but not saved with the `save` and `save set` commands.
+
+ GNUPLOT_PS_DIR is used by the postscript driver to search for external
+ prologue files. Depending on the build process, gnuplot contains either a
+ built-in copy of those files or a default hardcoded path. You can use this
+ variable have the postscript terminal use custom prologue files rather than
+ the default files. See `postscript prologue`.
+?expressions
+ In general, any mathematical expression accepted by C, FORTRAN, Pascal, or
+ BASIC is valid.  The precedence of these operators is determined by the
+ specifications of the C programming language.  White space (spaces and tabs)
+ is ignored inside expressions.
+
+ Complex constants are expressed as {<real>,<imag>}, where <real> and <imag>
+ must be numerical constants.  For example, {3,2} represents 3 + 2i; {0,1}
+ represents 'i' itself.  The curly braces are explicitly required here.
+
+ Note that gnuplot uses both "real" and "integer" arithmetic, like FORTRAN and
+ C.  Integers are entered as "1", "-10", etc; reals as "1.0", "-10.0", "1e1",
+ 3.5e-1, etc.  The most important difference between the two forms is in
+ division: division of integers truncates: 5/2 = 2; division of reals does
+ not: 5.0/2.0 = 2.5.  In mixed expressions, integers are "promoted" to reals
+ before evaluation: 5/2e0 = 2.5.  The result of division of a negative integer
+ by a positive one may vary among compilers.  Try a test like "print -5/2" to
+ determine if your system chooses -2 or -3 as the answer.
+
+ The integer expression "1/0" may be used to generate an "undefined" flag,
+ which causes a point to ignored.  Or you can use the pre-defined variable NaN
+ to achieve the same result.  See `using` for an example.
+
+ The real and imaginary parts of complex expressions are always real, whatever
+ the form in which they are entered: in {3,2} the "3" and "2" are reals, not
+ integers.
+
+ Gnuplot can also perform simple operations on strings and string variables.
+ For example, the expression ("A" . "B" eq "AB") evaluates as true, illustrating
+ the string concatenation operator and the string equality operator.
+
+ A string which contains a numerical value is promoted to the corresponding
+ integer or real value if used in a numerical expression. Thus ("3" + "4" == 7)
+ and (6.78 == "6.78") both evaluate to true.  An integer, but not a real or
+ complex value, is promoted to a string if used in string concatenation.
+ A typical case is the use of integers to construct file names or other strings;
+ e.g. ("file" . 4 eq "file4") is true.
+
+ Substrings can be specified using a postfixed range descriptor [beg:end].
+ For example, "ABCDEF"[3:4] == "CD"   and   "ABCDEF"[4:*] == "DEF"
+ The syntax "string"[beg:end] is exactly equivalent to calling the built-in
+ string-valued function substr("string",beg,end), except that you cannot
+ omit either beg or end from the function call.
+?expressions functions
+ The math functions in `gnuplot` are the same as the corresponding functions in
+ the Unix math library, except that all functions accept integer, real, and
+ complex arguments unless otherwise noted.
+ Functions that accept or return angles (e.g. sin(x), cos(x), arg(z))
+ treat angle values as radians, but this may be changed to degrees using the
+ command `set angles`.
+
+
+
+
+
+
+?expressions functions abs
+?abs
+ The `abs(x)` function returns the absolute value of its argument.  The
+ returned value is of the same type as the argument.
+
+ For complex arguments, abs(x) is defined as the length of x in the complex
+ plane [i.e.,  sqrt(real(x)**2 + imag(x)**2) ].
+?expressions functions acos
+?acos
+ The `acos(x)` function returns the arc cosine (inverse cosine) of its
+ argument.  `acos` returns its argument in radians or degrees, as selected by
+ `set angles`.
+?expressions functions acosh
+?acosh
+ The `acosh(x)` function returns the inverse hyperbolic cosine of its argument
+ in radians.
+?expressions functions airy
+?airy
+ The `airy(x)` function returns the value of the Airy function Ai(x) of its 
+ argument. The function Ai(x) is that solution of the equation y'' - x y = 0
+ which is everywhere finite. If the argument is complex, its imaginary part
+ is ignored.
+?expressions functions arg
+?arg
+ The `arg(x)` function returns the phase of a complex number in radians or
+ degrees, as selected by `set angles`.
+?expressions functions asin
+?asin
+ The `asin(x)` function returns the arc sin (inverse sin) of its argument.
+ `asin` returns its argument in radians or degrees, as selected by `set
+ angles`.
+?expressions functions asinh
+?asinh
+ The `asinh(x)` function returns the inverse hyperbolic sin of its argument in
+ radians.
+?expressions functions atan
+?atan
+ The `atan(x)` function returns the arc tangent (inverse tangent) of its
+ argument.  `atan` returns its argument in radians or degrees, as selected by
+ `set angles`.
+?expressions functions atan2
+?atan2
+ The `atan2(y,x)` function returns the arc tangent (inverse tangent) of the
+ ratio of the real parts of its arguments.  `atan2` returns its argument in
+ radians or degrees, as selected by `set angles`, in the correct quadrant.
+?expressions functions atanh
+?atanh
+ The `atanh(x)` function returns the inverse hyperbolic tangent of its
+ argument in radians.
+ See `elliptic integrals`.
+ See `elliptic integrals`.
+ See `elliptic integrals`.
+?expressions functions besj0
+?besj0
+ The `besj0(x)` function returns the j0th Bessel function of its argument.
+ `besj0` expects its argument to be in radians.
+?expressions functions besj1
+?besj1
+ The `besj1(x)` function returns the j1st Bessel function of its argument.
+ `besj1` expects its argument to be in radians.
+?expressions functions besy0
+?besy0
+ The `besy0(x)` function returns the y0th Bessel function of its argument.
+ `besy0` expects its argument to be in radians.
+?expressions functions besy1
+?besy1
+ The `besy1(x)` function returns the y1st Bessel function of its argument.
+ `besy1` expects its argument to be in radians.
+?expressions functions ceil
+?ceil
+ The `ceil(x)` function returns the smallest integer that is not less than its
+ argument.  For complex numbers, `ceil` returns the smallest integer not less
+ than the real part of its argument.
+?expressions functions cos
+?cos
+ The `cos(x)` function returns the cosine of its argument.  `cos` accepts its
+ argument in radians or degrees, as selected by `set angles`.
+?expressions functions cosh
+?cosh
+ The `cosh(x)` function returns the hyperbolic cosine of its argument.  `cosh`
+ expects its argument to be in radians.
+?expressions functions erf
+?erf
+ The `erf(x)` function returns the error function of the real part of its
+ argument.  If the argument is a complex value, the imaginary component is
+ ignored.  See `erfc`, `inverf`, and `norm`.
+?expressions functions erfc
+?erfc
+ The `erfc(x)` function returns 1.0 - the error function of the real part of
+ its argument.  If the argument is a complex value, the imaginary component is
+ ignored.  See `erf`, `inverf`, and `norm`.
+?expressions functions exp
+?exp
+ The `exp(x)` function returns the exponential function of its argument (`e`
+ raised to the power of its argument).  On some implementations (notably
+ suns), exp(-x) returns undefined for very large x.  A user-defined function
+ like safe(x) = x<-100 ? 0 : exp(x) might prove useful in these cases.
+?expressions functions expint
+?expint
+ The `expint(n,x)` function returns the exponential integral of the real
+ part of its argument: integral from 1 to infinity of t^(-n) e^(-tx) dt.
+ n must be a nonnegative integer, x>=0, and either x>0 or n>1.
+?expressions functions floor
+?floor
+ The `floor(x)` function returns the largest integer not greater than its
+ argument.  For complex numbers, `floor` returns the largest integer not
+ greater than the real part of its argument.
+?expressions functions gamma
+?gamma
+ The `gamma(x)` function returns the gamma function of the real part of its
+ argument.  For integer n, gamma(n+1) = n!.  If the argument is a complex
+ value, the imaginary component is ignored.
+?expressions functions ibeta
+?ibeta
+ The `ibeta(p,q,x)` function returns the incomplete beta function of the real
+ parts of its arguments. p, q > 0 and x in [0:1].  If the arguments are
+ complex, the imaginary components are ignored.  The function is approximated by
+ the method of continued fractions (Abramowitz and Stegun, 1964).
+ The approximation is only accurate in the region x < (p-1)/(p+q-2). 
+?expressions functions inverf
+?inverf
+ The `inverf(x)` function returns the inverse error function of the real part
+ of its argument.   See `erf` and `invnorm`.
+?expressions functions igamma
+?igamma
+ The `igamma(a,x)` function returns the normalized incomplete gamma
+ function of the real parts of its arguments, where a > 0 and x >= 0.
+ The standard notation is P(a,x), e.g. Abramowitz and Stegun (6.5.1),
+ with limiting value of 1 as x approaches infinity.  If the arguments
+ are complex, the imaginary components are ignored.
+?expressions functions imag
+?imag
+ The `imag(x)` function returns the imaginary part of its argument as a real
+ number.
+?expressions functions invnorm
+?invnorm
+ The `invnorm(x)` function returns the inverse cumulative normal (Gaussian)
+ distribution function of the real part of its argument.  See `norm`.
+?expressions functions int
+?int
+ The `int(x)` function returns the integer part of its argument, truncated
+ toward zero.
+?expressions functions lambertw
+?lambertw
+ The lambertw function returns the value of the principal branch of
+ Lambert's W function, which is defined by the equation (W(z)*exp(W(z))=z.
+ z must be a real number with z >= -exp(-1).
+?expressions functions lgamma
+?lgamma
+ The `lgamma(x)` function returns the natural logarithm of the gamma function
+ of the real part of its argument.  If the argument is a complex value, the
+ imaginary component is ignored.
+?expressions functions log
+?log
+ The `log(x)` function returns the natural logarithm (base `e`) of its
+ argument.  See `log10`.
+?expressions functions log10
+?log10
+ The `log10(x)` function returns the logarithm (base 10) of its argument.
+?expressions functions norm
+?norm
+ The `norm(x)` function returns the cumulative normal (Gaussian) distribution
+ function of the real part of its argument.   See `invnorm`, `erf` and `erfc`.
+?expressions functions rand
+?rand
+ `rand(0)` returns a pseudo random number in the interval [0:1].
+ See `random` for more details.
+?expressions functions real
+?real
+ The `real(x)` function returns the real part of its argument.
+?expressions functions sgn
+?sgn
+ The `sgn(x)` function returns 1 if its argument is positive, -1 if its
+ argument is negative, and 0 if its argument is 0.  If the argument is a
+ complex value, the imaginary component is ignored.
+?expressions functions sin
+?sin
+ The `sin(x)` function returns the sine of its argument.  `sin` expects its
+ argument to be in radians or degrees, as selected by `set angles`.
+?expressions functions sinh
+?sinh
+ The `sinh(x)` function returns the hyperbolic sine of its argument.  `sinh`
+ expects its argument to be in radians.
+?expressions functions sqrt
+?sqrt
+ The `sqrt(x)` function returns the square root of its argument.
+?expressions functions tan
+?tan
+ The `tan(x)` function returns the tangent of its argument.  `tan` expects
+ its argument to be in radians or degrees, as selected by `set angles`.
+?expressions functions tanh
+?tanh
+ The `tanh(x)` function returns the hyperbolic tangent of its argument.  `tanh`
+ expects its argument to be in radians.
+?expressions functions voigt
+?voigt
+ The function `voigt(x,y)` returns an approximation to the Voigt/Faddeeva
+ function used in spectral analysis. The approximation is accurate to 
+ one part in 10^4.
+
+?expressions functions gprintf
+ `gprintf("format",x)` applies gnuplot's own format specifiers to the single
+ variable x and returns the resulting string. If you want standard C-language
+ format specifiers, you must instead use `sprintf("format",x)`.
+ See `format specifiers`.
+?expressions functions sprintf
+?sprintf
+ `sprintf("format",var1,var2,...)` applies standard C-language format specifiers
+ to multiple arguments and returns the resulting string. If you want to
+ use gnuplot's own format specifiers, you must instead call `gprintf()`.
+ For information on sprintf format specifiers, please see standard C-language
+ documentation or the unix sprintf man page.
+?expressions functions strlen
+?strlen
+ `strlen("string")` returns the length of the string in bytes.  If the current 
+ encoding supports multibyte characters, this may be larger than the number of
+ characters in the string.
+?expressions functions strstrt
+?strstrt
+ `strstrt("string","key")` searches for the character string "key" in "string"
+ and returns the index to the first character of "key". If "key" is not found,
+ returns 0. Similar to C library function strstr except that it returns an
+ index rather than a string pointer. strstrt("hayneedlestack","needle") = 4.
+?expressions functions substr
+?substr
+ `substr("string",beg,end)` returns the substring consisting of characters
+ beg through end of the original string. This is exactly equivalent to the
+ expression "string"[beg:end] except that you do not have the option of
+ omitting beg or end.
+?expressions functions strftime
+?strftime
+ `strftime("timeformat",t)` applies the timeformat specifiers to the time t
+ given in seconds since the year 2000.
+ See `time_specifiers` and `strptime`.
+?expressions functions strptime
+?strptime
+ `strptime("timeformat",s)` reads the time from the string s using the
+ timeformat specifiers and converts it into seconds since the year 2000.
+ See `time_specifiers` and `strftime`.
+?expressions functions system
+ `system("command")` executes "command" using the standard shell and returns
+ the resulting character stream from stdout as string variable.
+ One optional trailing newline is ignored.
+
+ This can be used to import external functions into gnuplot scripts using
+ 'f(x) = real(system(sprintf("somecommand %f", x)))'.
+?expressions functions word
+?word
+ `word("string",n)` returns the nth word in string. For example,
+ `word("one two three",2)` returns the string "two".
+?expressions functions words
+?words
+ `words("string")` returns the number of words in string. For example,
+ `words(" a b c d")` returns 4.
+
+?expressions functions column
+?column
+ `column(x)` may be used only in expressions as part of `using` manipulations
+ to fits or datafile plots.  It evaluates to the numerical value of the contents
+ of column x. See `plot datafile using`.
+?expressions functions columnhead
+?columnhead
+ `columnhead(x)` may only be used in expressions as part of `using` manipulations
+ to fits or datafile plots.  It evaluates to a string containing the contents of
+ column x in the first line of data. See `plot datafile using`.
+?expressions functions defined
+?defined
+ `defined(X)` [DEPRECATED] returns 1 if a variable named X has been defined, otherwise
+ it returns 0.  Please use `exists("X")` instead.
+?expressions functions exists
+?exists
+ The argument to exists() is a string constant or a string variable;
+ if the string contains the name of a defined variable, the function returns 1.
+ Otherwise the function returns 0.
+?expressions functions stringcolumn
+?stringcolumn
+?expressions functions strcol
+?strcol
+ `stringcolumn(x)` may be used only in expressions as part of `using` manipulations
+ to fits or datafile plots.  It returns the content of column x as a string variable.
+ See `plot datafile using`.
+?expressions functions timecolumn
+?timecolumn
+ `timecolumn(x)` may be used only in expressions as part of `using`
+ manipulations to fits or datafile plots.   See `plot datafile using`.
+
+ It reads the data starting at that column as a time/date value and
+ returns its value in gnuplot's internal time representation of
+ "seconds since the millennium".
+
+ To find the right `timefmt` string to use, `timecolumn` searches for a
+ `using` specification with the same column number as its argument.
+ If one is found, `timefmt` pattern of the target axis for this specifier
+ is used.  Otherwise, `timecolumn` chooses the x axis `timefmt` per default.
+?expressions tm_hour
+?tm_hour
+ The `tm_hour` function interprets its argument as a time, in seconds from
+ 1 Jan 2000.  It returns the hour (an integer in the range 0--23) as a real.
+?expressions tm_mday
+?tm_mday
+ The `tm_mday` function interprets its argument as a time, in seconds from
+ 1 Jan 2000.  It returns the day of the month (an integer in the range 1--31)
+ as a real.
+?expressions tm_min
+?tm_min
+ The `tm_min` function interprets its argument as a time, in seconds from
+ 1 Jan 2000.  It returns the minute (an integer in the range 0--59) as a real.
+?expressions tm_mon
+?tm_mon
+ The `tm_mon` function interprets its argument as a time, in seconds from
+ 1 Jan 2000.  It returns the month (an integer in the range 0--11) as a real.
+?expressions tm_sec
+?tm_sec
+ The `tm_sec` function interprets its argument as a time, in seconds from
+ 1 Jan 2000.  It returns the second (an integer in the range 0--59) as a real.
+?expressions tm_wday
+?tm_wday
+ The `tm_wday` function interprets its argument as a time, in seconds from
+ 1 Jan 2000.  It returns the day of the week (an integer in the range 0--6) as
+ a real.
+?expressions tm_yday
+?tm_yday
+ The `tm_yday` function interprets its argument as a time, in seconds from
+ 1 Jan 2000.  It returns the day of the year (an integer in the range 1--366)
+ as a real.
+?expressions tm_year
+?tm_year
+ The `tm_year` function interprets its argument as a time, in seconds from
+ 1 Jan 2000.  It returns the year (an integer) as a real.
+?expressions time
+?time
+ The `time` function returns the current system time. This value can be 
+ converted to a date string with the `strftime` function, or it can be used
+ in conjunction with `timecolumn` to generate relative time/date plots. 
+ The type of the argument determines what is returned. If the argument is an
+ integer, time() returns the current time as an integer, in seconds from 
+ 1 Jan 2000. If the argument is real (or complex), the result is real as well.
+ If the argument is a string, it is assumed to be a format string, 
+ and it is passed to `strftime` to provide a formatted time string.
+?expressions functions valid
+?valid
+ `valid(x)` may be used only in expressions as part of `using` manipulations
+ to fits or datafile plots.  See `plot datafile using`.
+
+
+?expressions functions elliptic integrals
+?elliptic integrals
+ The `EllipticK(k)` function returns the complete elliptic integral of the first
+ kind, i.e. the definite integral between 0 and pi/2 of the function
+ `(1-(k*sin(p))**2)**(-0.5)`.  The domain of `k` is -1 to 1 (exclusive).
+
+ The `EllipticE(k)` function returns the complete elliptic integral of the
+ second kind, i.e. the definite integral between 0 and pi/2 of the function
+ `(1-(k*sin(p))**2)**0.5`.  The domain of `k` is -1 to 1 (inclusive).
+
+ The `EllipticPi(n,k)` function returns the complete elliptic integral of the
+ third kind, i.e. the definite integral between 0 and pi/2 of the function 
+ `(1-(k*sin(p))**2)**(-0.5)/(1-n*sin(p)**2)`.  The parameter `n` must be less
+ than 1, while `k` must lie between -1 and 1 (exclusive).  Note that by
+ definition EllipticPi(0,k) == EllipticK(k) for all possible values of `k`.
+?expressions random
+?random
+ The function `rand()` produces a sequence of pseudo-random numbers between
+ 0 and 1 using an algorithm from P. L'Ecuyer and S. Cote, "Implementing a
+ random number package with splitting facilities", ACM Transactions on
+ Mathematical Software, 17:98-111 (1991).
+
+       rand(0)     returns a pseudo random number in the interval [0:1]
+                   generated from the current value of two internal
+                   32-bit seeds.
+       rand(-1)    resets both seeds to a standard value.
+       rand(x)     for integer 0 < x < 2^31-1 sets both internal seeds
+                   to x.
+       rand({x,y}) for integer 0 < x,y < 2^31-1 sets seed1 to x and 
+                   seed2 to y.
+?expressions functions value
+?value
+ B = value("A") is effectively the same as B = A, where A is the name of a 
+ user-defined variable.  This is useful when the name of the variable is itself
+ held in a string variable. See `user-defined variables`.  It also allows you to
+ read the name of a variable from a data file.  If the argument is a numerical
+ expression, value() returns the value of that expression.  If the argument is a
+ string that does not correspond to a currently defined variable,
+ value() returns NaN.
+
+?expressions operators
+?operators
+ The operators in `gnuplot` are the same as the corresponding operators in the
+ C programming language, except that all operators accept integer, real, and
+ complex arguments, unless otherwise noted.  The ** operator (exponentiation)
+ is supported, as in FORTRAN.
+
+ Parentheses may be used to change order of evaluation.
+?expressions operators unary
+?operators unary
+?unary
+ The following is a list of all the unary operators and their usages:
+
+     Symbol      Example    Explanation
+       -           -a          unary minus
+       +           +a          unary plus (no-operation)
+       ~           ~a        * one's complement
+       !           !a        * logical negation
+       !           a!        * factorial
+       $           $3        * call arg/column during `using` manipulation
+
+
+ (*) Starred explanations indicate that the operator requires an integer
+ argument.
+
+ Operator precedence is the same as in Fortran and C.  As in those languages,
+ parentheses may be used to change the order of operation.  Thus -2**2 = -4,
+ but (-2)**2 = 4.
+
+ The factorial operator returns a real number to allow a greater range.
+?expressions operators binary
+?operators binary
+ The following is a list of all the binary operators and their usages:
+
+     Symbol       Example      Explanation
+       **          a**b          exponentiation
+       *           a*b           multiplication
+       /           a/b           division
+       %           a%b         * modulo
+       +           a+b           addition
+       -           a-b           subtraction
+       ==          a==b          equality
+       !=          a!=b          inequality
+       <           a<b           less than
+       <=          a<=b          less than or equal to
+       >           a>b           greater than
+       >=          a>=b          greater than or equal to
+       &           a&b         * bitwise AND
+       ^           a^b         * bitwise exclusive OR
+       |           a|b         * bitwise inclusive OR
+       &&          a&&b        * logical AND
+       ||          a||b        * logical OR
+       =           a = b         assignment
+       ,           (a,b)         serial evaluation
+       .           A.B           string concatenation
+       eq          A eq B        string equality
+       ne          A ne B        string inequality
+
+
+
+ (*) Starred explanations indicate that the operator requires integer
+ arguments.
+ Capital letters A and B indicate that the operator requires string arguments.
+
+ Logical AND (&&) and OR (||) short-circuit the way they do in C.  That is,
+ the second `&&` operand is not evaluated if the first is false; the second
+ `||` operand is not evaluated if the first is true.
+
+ Serial evaluation occurs only in parentheses and is guaranteed to proceed
+ in left to right order.  The value of the rightmost subexpression is returned.
+?expressions operators ternary
+?operators ternary
+?ternary
+ There is a single ternary operator:
+
+     Symbol       Example      Explanation
+       ?:          a?b:c     ternary operation
+
+
+
+ The ternary operator behaves as it does in C.  The first argument (a), which
+ must be an integer, is evaluated.  If it is true (non-zero), the second
+ argument (b) is evaluated and returned; otherwise the third argument (c) is
+ evaluated and returned.
+
+ The ternary operator is very useful both in constructing piecewise functions
+ and in plotting points only when certain conditions are met.
+
+ Examples:
+
+ Plot a function that is to equal sin(x) for 0 <= x < 1, 1/x for 1 <= x < 2,
+ and undefined elsewhere:
+       f(x) = 0<=x && x<1 ? sin(x) : 1<=x && x<2 ? 1/x : 1/0
+       plot f(x)
+ Note that `gnuplot` quietly ignores undefined values, so the final branch of
+ the function (1/0) will produce no plottable points.  Note also that f(x)
+ will be plotted as a continuous function across the discontinuity if a line
+ style is used.  To plot it discontinuously, create separate functions for the
+ two pieces.  (Parametric functions are also useful for this purpose.)
+
+ For data in a file, plot the average of the data in columns 2 and 3 against
+ the datum in column 1, but only if the datum in column 4 is non-negative:
+
+       plot 'file' using 1:( $4<0 ? 1/0 : ($2+$3)/2 )
+
+ For an explanation of the `using` syntax, please see `plot datafile using`.
+?expressions operators summation
+?operators summation
+?summation
+ A summation expression has the form
+       sum [<var> = <start> : <end>] <expression>
+ <var> is treated as an integer variable that takes on successive integral
+ values from <start> to <end>.  For each of these, the current value of
+ <expression> is added to a running total whose final value becomes the value
+ of the summation expression.
+ Examples:
+       print sum [i=1:10] i
+           55.
+       # Equivalent to plot 'data' using 1:($2+$3+$4+$5+$6+...)
+       plot 'data' using 1 : (sum [col=2:MAXCOL] column(col))
+ It is not necessary that <expression> contain the variable <var>.
+ Although <start> and <end> can be specified as variables or expressions,
+ their value cannot be changed dynamically as a side-effect of carrying
+ out the summation. If <end> is less than <start> then the value of the
+ summation is zero.
+?expressions gnuplot-defined
+?gnuplot-defined
+?gnuplot-defined variables
+?GPVAL
+?gpval
+ Gnuplot maintains a number of read-only variables that reflect the current
+ internal state of the program and the most recent plot. These variables begin
+ with the prefix "GPVAL_".
+ Examples include GPVAL_TERM, GPVAL_X_MIN, GPVAL_X_MAX, GPVAL_Y_MIN.
+ Type `show variables all` to display the complete list and current values.
+ Values related to axes parameters (ranges, log base) are values used during the
+ last plot, not those currently `set`.
+
+ Example:  To calculate the fractional screen coordinates of the point [X,Y]
+      GRAPH_X = (X - GPVAL_X_MIN) / (GPVAL_X_MAX - GPVAL_X_MIN)
+      GRAPH_Y = (Y - GPVAL_Y_MIN) / (GPVAL_Y_MAX - GPVAL_Y_MIN)
+      SCREEN_X = GPVAL_TERM_XMIN + GRAPH_X * (GPVAL_TERM_XMAX - GPVAL_TERM_XMIN)
+      SCREEN_Y = GPVAL_TERM_YMIN + GRAPH_Y * (GPVAL_TERM_YMAX - GPVAL_TERM_YMIN)
+      FRAC_X = SCREEN_X / GPVAL_TERM_XSIZE
+      FRAC_Y = SCREEN_Y / GPVAL_TERM_YSIZE
+
+ The read-only variable GPVAL_ERRNO is set to a non-zero value if any gnuplot
+ command terminates early due to an error.  The most recent error message is
+ stored in the string variable GPVAL_ERRMSG.  Both GPVAL_ERRNO and GPVAL_ERRMSG
+ can be cleared using the command `reset errors`.
+
+ Interactive terminals with `mouse` functionality maintain read-only variables
+ with the prefix "MOUSE_".  See `mouse variables` for details.
+
+ The `fit` mechanism uses several variables with names that begin "FIT_".  It
+ is safest to avoid using such names.  "FIT_LIMIT", however, is one that you
+ may wish to redefine. Under `set fit errorvariables`, the error for each
+ fitted parameter will be stored in a variable named like the parameter, but
+ with "_err" appended. See the documentation on `fit` for details.
+
+ See `user-defined variables`, `reset errors`, `mouse variables`, and `fit`.
+
+?expressions user-defined
+?user-defined variables
+?user-defined
+?variables
+ New user-defined variables and functions of one through twelve variables may
+ be declared and used anywhere, including on the `plot` command itself.
+
+ User-defined function syntax:
+       <func-name>( <dummy1> {,<dummy2>} ... {,<dummy12>} ) = <expression>
+
+ where <expression> is defined in terms of <dummy1> through <dummy12>.
+
+ User-defined variable syntax:
+       <variable-name> = <constant-expression>
+
+ Examples:
+       w = 2
+       q = floor(tan(pi/2 - 0.1))
+       f(x) = sin(w*x)
+       sinc(x) = sin(pi*x)/(pi*x)
+       delta(t) = (t == 0)
+       ramp(t) = (t > 0) ? t : 0
+       min(a,b) = (a < b) ? a : b
+       comb(n,k) = n!/(k!*(n-k)!)
+       len3d(x,y,z) = sqrt(x*x+y*y+z*z)
+       plot f(x) = sin(x*a), a = 0.2, f(x), a = 0.4, f(x)
+
+       file = "mydata.inp"
+       file(n) = sprintf("run_%d.dat",n)
+
+ The final two examples illustrate a user-defined string variable and a
+ user-defined string function.
+
+ Note that the variables `pi` (3.14159...) and `NaN` (IEEE "Not a Number") are
+ already defined.  You can redefine these to something else if you really need
+ to. The original values can be recovered by setting:
+
+       NaN = GPVAL_NaN
+       pi  = GPVAL_pi
+
+ Other variables may be defined under various gnuplot operations like mousing in
+ interactive terminals or fitting; see `gnuplot-defined variables` for details.
+
+ You can check for existence of a given variable V by the exists("V")
+ expression. For example
+       a = 10
+       if (exists("a")) print "a is defined"
+       if (!exists("b")) print "b is not defined"
+
+ Valid names are the same as in most programming languages: they must begin
+ with a letter, but subsequent characters may be letters, digits, or "_".
+
+ Each function definition is made available as a special string-valued
+ variable with the prefix 'GPFUN_'.
+
+ Example:
+       set label GPFUN_sinc at graph .05,.95
+
+ See `show functions`, `functions`, `gnuplot-defined variables`, `macros`,
+ `value`.
+?fonts
+ Gnuplot does not provide any fonts of its own. It relies on external font
+ handling, the details of which unfortunately vary from one terminal type to
+ another. Brief documentation of font mechanisms that apply to more than one
+ terminal type is given here. For information on font use by other individual
+ terminals, see the documentation for that terminal.
+?fonts cairo
+ Sorry, this section is under construction.
+ These terminals find and access fonts using the external fontconfig tool set.
+ Please see the
+ fontconfig user manual.
+ It is usually sufficient in gnuplot to request a font by a generic name and
+ size, letting fontconfig substitute a similar font if necessary. The following
+ will probably all work:
+      set term pdfcairo font "sans,12"
+      set term pdfcairo font "Times,12"
+      set term pdfcairo font "Times-New-Roman,12"
+
+?gd
+?fonts gd
+ Font handling for the png, gif, and jpeg terminals is done by the external
+ library libgd.  Five basic fonts are provided directly by libgd. These are
+ `tiny` (5x8 pixels), `small` (6x12 pixels), `medium`, (7x13 Bold), `large`
+ (8x16) or `giant` (9x15 pixels). These fonts cannot be scaled or rotated.
+ Use one of these keywords instead of the `font` keyword. E.g.
+      set term png tiny
+
+ On most systems libgd also provides access to Adobe Type 1 fonts (*.pfa) and
+ TrueType fonts (*.ttf). You must give the name of the font file, not the name
+ of the font inside it, in the form "<face> {,<pointsize>}".
+ <face> is either the full pathname to the font file, or the first part of a
+ filename in one of the directories listed in the GDFONTPATH environmental
+ variable. That is, 'set term png font "Face"' will look for a font file named
+ either <somedirectory>/Face.ttf or <somedirectory>/Face.pfa.
+ For example, if GDFONTPATH contains `/usr/local/fonts/ttf:/usr/local/fonts/pfa`
+ then the following pairs of commands are equivalent
+      set term png font "arial"
+      set term png font "/usr/local/fonts/ttf/arial.ttf"
+      set term png font "Helvetica"
+      set term png font "/usr/local/fonts/pfa/Helvetica.pfa"
+ To request a default font size at the same time:
+      set term png font "arial,11"
+
+ Both TrueType and Adobe Type 1 fonts are fully scalable and rotatable.
+ If no specific font is requested in the "set term" command, gnuplot checks
+ the environmental variable GNUPLOT_DEFAULT_GDFONT to see if there is a
+ preferred default font.
+?fonts postscript
+ PostScript font handling is done by the printer or viewing program.
+ Gnuplot can create valid PostScript or encapsulated PostScript (*.eps) even if
+ no fonts at all are installed on your computer.  Gnuplot simply refers to the
+ font by name in the output file, and assumes that the printer or viewing
+ program will know how to find or approximate a font by that name.
+
+ All PostScript printers or viewers should know about the standard set of Adobe
+ fonts `Times-Roman`, `Helvetica`, `Courier`, and `Symbol`.  It is likely that
+ many additional fonts are also available, but the specific set depends on your
+ system or printer configuration. Gnuplot does not know or care about this;
+ the output *.ps or *.eps files that it creates will simply refer to whatever
+ font names you request.
+
+ Thus
+      set term postscript eps font "Times-Roman,12"
+ will produce output that is suitable for all printers and viewers.
+
+ On the other hand
+      set term postscript eps font "Garamond-Premier-Pro-Italic"
+ will produce an output file that contains valid PostScript, but since it
+ refers to a specialized font, only some printers or viewers will be able to
+ display the specific font that was requested.  Most will substitute a
+ different font.
+
+ However, it is possible to embed a specific font in the output file so that
+ all printers will be able to use it. This requires that the a suitable font
+ description file is available on your system. Note that some font files require
+ specific licensing if they are to be embedded in this way.
+ See `postscript fontfile` for more detailed description and examples.
+?glossary
+ Throughout this document an attempt has been made to maintain consistency of
+ nomenclature.  This cannot be wholly successful because as `gnuplot` has
+ evolved over time, certain command and keyword names have been adopted that
+ preclude such perfection.  This section contains explanations of the way
+ some of these terms are used.
+
+ A "page" or "screen" or "canvas" is the entire area addressable by `gnuplot`.
+ On a desktop it is a full window; on a plotter, it is a single sheet of paper;
+ in svga mode it is the full monitor screen.
+
+ A screen may contain one or more "plots".  A plot is defined by an abscissa
+ and an ordinate, although these need not actually appear on it, as well as
+ the margins and any text written therein.
+
+ A plot contains one "graph".  A graph is defined by an abscissa and an
+ ordinate, although these need not actually appear on it.
+
+ A graph may contain one or more "lines".  A line is a single function or
+ data set.  "Line" is also a plotting style.  The word will also be used in
+ sense "a line of text".  Presumably the context will remove any ambiguity.
+
+ The lines on a graph may have individual names.  These may be listed
+ together with a sample of the plotting style used to represent them in
+ the "key", sometimes also called the "legend".
+
+ The word "title" occurs with multiple meanings in `gnuplot`.  In this
+ document, it will always be preceded by the adjective "plot", "line", or
+ "key" to differentiate among them.
+ A 2D graph may have up to four labelled `axes`.  The names of the four axes
+ are "x" for the axis along the bottom border of the plot, "y" for the axis
+ along the left border, "x2" for the top border, and "y2" for the right border.
+ See `axes`.
+
+ A 3D graph may have up to three labelled `axes` -- "x", "y" and "z".  It is
+ not possible to say where on the graph any particular axis will fall because
+ you can change the direction from which the graph is seen with `set view`.
+
+ When discussing data files, the term "record" will be resurrected and used
+ to denote a single line of text in the file, that is, the characters between
+ newline or end-of-record characters.  A "point" is the datum extracted from
+ a single record.  A "datablock" is a set of points from consecutive records,
+ delimited by blank records.  A line, when referred to in the context of a
+ data file, is a subset of a datablock.
+?linetypes
+?colors
+ Each gnuplot terminal type provides a set of distinct "linetypes". These may
+ differ in color, in thickness, in dot/dash pattern, or in some combination of
+ color and dot/dash. The default linetypes for a particular terminal can be
+ previewed by issuing the `test` command after setting the terminal type.
+ The pre-defined colors and dot/dash patterns are not guaranteed to be
+ consistent for all terminal types, but all terminals use the special linetype
+ -1 to mean a solid line in the primary foreground color (normally black).
+ Most terminals also recognize the special linetype "bgnd" to mean a solid line
+ in the background color.
+
+ You can redefine the default linetype properties either interactively or via an
+ initialization file.  This allows you to customize the colors and other
+ properties of the lines used by all gnuplot plotting commands.
+ See `set linetype`.  
+
+ By default, successive functions or datafiles plotted by a single command will
+ be assigned successive linetypes.  You can override this default sequence by
+ specifying a particular linetype for any function, datafile, or plot element.
+
+ Examples:
+
+      plot "foo", "bar"                 # plot two files using linetypes 1, 2
+      plot sin(x) linetype 4            # terminal-specific linetype color 4
+      plot sin(x) lt -1                 # black
+
+ For many terminal types it is also possible to assign user-defined colors
+ using explicit rgb (red, green, blue) values, named colors, or color values
+ that refer to the current pm3d palette.
+
+ Examples:
+
+      plot sin(x) lt rgb "violet"       # one of gnuplot's named colors
+      plot sin(x) lt rgb "#FF00FF"      # explicit RGB triple in hexadecimal
+      plot sin(x) lt palette cb -45     # whatever color corresponds to -45
+                                        # in the current cbrange of the palette
+      plot sin(x) lt palette frac 0.3   # fractional value along the palette
+
+ See `show colornames`, `set palette`, `cbrange`.
+
+ For terminals that support dot/dash patterns, each default linetype has both
+ a dot-dash pattern and a default color. Gnuplot does not currently provide a
+ mechanism for changing the dot-dash pattern, so if you want both a particular
+ dash pattern and a particular color you must first choose a linetype that has
+ the required dash pattern, then override the default color using the keyword 
+ `linecolor`, abbreviated `lc`.  For example, the postscript terminal provides
+ a dashed blue line as linetype 3.  The plot commands below use this same dash
+ pattern for three plots, one in blue (the default), another in red
+ (the default for linetype 1), and a third in gold.
+
+ Example:
+
+      set term postscript dashed color
+      plot 'foo' lt 3, 'baz' lt 3 linecolor 1, 'bar' lt 3 lc rgb 'gold'
+
+?colorspec
+?rgbcolor
+?lc
+?linecolor
+?tc
+?textcolor
+ Many commands allow you to specify a linetype with an explicit color.
+ Terminal-independent color choice is only possible for terminals that support
+ RGB color or pm3d palettes.
+
+ Syntax:
+
+       ... {linecolor | lc} {<colorspec> | <n>}
+       ... {textcolor | tc} {<colorspec> | {linetype | lt} <n>}
+
+ where <colorspec> has one of the following forms:
+
+       rgbcolor "colorname"
+       rgbcolor "#RRGGBB"
+       rgbcolor variable       # color is read from input file
+       palette frac <val>      # <val> runs from 0 to 1
+       palette cb <value>      # <val> lies within cbrange
+       palette z
+       variable                # color index is read from input file
+
+ The "<n>" is the linetype number the color of which is used, see `test`.
+
+ "colorname" refers to one of the color names built in to gnuplot. For a list
+ of the available names, see `show colornames`.
+
+ "#RRGGBB" is a hexadecimal constant preceded by the "#" symbol. The RRGGBB
+ represents the red, green, and blue components of the color, each on a scale
+ from 0 - 255.  For example, magenta = full-scale red + full-scale blue would
+ be represented by #FF00FF, which is the hexadecimal representation of
+ (255 << 16) + (0 << 8) + (255).
+
+ The color palette is a linear gradient of colors that smoothly maps a
+ single numerical value onto a particular color.  Two such mappings are always
+ in effect. `palette frac`  maps a fractional value between 0 and 1 onto the
+ full range of the color palette.  `palette cb` maps the range of the color
+ axis onto the same palette.  See `set cbrange`.  See also `set colorbox`.
+ You can use either of these to select a constant color from the current
+ palette.
+
+ "palette z" maps the z value of each plot segment or plot element into the
+ cbrange mapping of the palette. This allows smoothly-varying color along a
+ 3d line or surface. It also allows coloring 2D plots by palette values read
+ from an extra column of data (not all 2D plot styles allow an extra column).
+?background
+?bgnd
+ Most terminals now allow you to set an explicit background color for the plot.
+ The special linetype `bgnd` will draw in this color, and `bgnd` is also 
+ recognized as a color.
+ Examples:
+      # This will erase a section of the canvas by writing over it in the
+      # background color
+      set term wxt background rgb "gray75"
+      set object 1 rectangle from x0,y0 to x1,y1 fillstyle solid fillcolor bgnd
+      # This will draw an "invisible" line along the x axis
+      plot 0 lt bgnd
+?linecolor variable
+?lc variable
+?textcolor variable
+?tc variable
+ `lc variable` tells the program to use the value read from one column of the
+ input data as a linetype index, and use the color belonging to that linetype.
+ This requires a corresponding additional column in the `using` specifier.
+ Text colors can be set similarly using `tc variable`.
+
+ Examples:
+       # Use the third column of data to assign colors to individual points
+       plot 'data' using 1:2:3 with points lc variable
+
+       # A single data file may contain multiple sets of data, separated by two
+       # blank lines.  Each data set is assigned as index value (see `index`)
+       # that can be retrieved via the `using` specifier `column(-2)`.
+       # See `pseudocolumns`.  This example uses to value in column -2 to 
+       # draw each data set in a different line color.
+       plot 'data' using 1:2:(column(-2)) with lines lc variable
+
+?rgbcolor variable
+?lc rgbcolor variable
+?tc rgbcolor variable
+ You can assign a separate color for each data point, line segment, or label in
+ your plot.  `lc rgbcolor variable` tells the program to read RGB color
+ information for each line in the data file. This requires a corresponding
+ additional column in the `using` specifier.  The extra column is interpreted as
+ a 24-bit packed RGB triple. If the value is provided directly in the data file
+ it is easiest to give it as a hexidecimal value (see `rgbcolor`). 
+ Alternatively, the `using` specifier can contain an expression that evaluates
+ to a 24-bit RGB color as in the example below.
+ Text colors are similarly set using `tc rgbcolor variable`.
+
+ Example:
+       # Place colored points in 3D at the x,y,z coordinates corresponding to
+       # their red, green, and blue components
+       rgb(r,g,b) = 65536 * int(r) + 256 * int(g) + int(b)
+       splot "data" using 1:2:3:(rgb($1,$2,$3)) with points lc rgb variable
+
+? linestyles vs linetypes
+ Lines can have additional properties such as linewidth.  You can associate
+ these various properties, as well as equivalent properties for point symbols,
+ into user-defined "linestyles" using the command `set style line`.  Once
+ you have defined a linestyle, you can use it in a plot command to control
+ the appearance of one or more plot elements.
+
+ Whereas `linetypes` are permanent (they last until you explicitly redefine
+ them), `linestyles` are temporary.  They only last until the next reset 
+ of the graphics state. 
+
+ Examples:
+
+      # define a new line style with terminal-independent color cyan,
+      # linewidth 3, and associated point type 6 (a circle with a dot in it).
+      set style line 5 lt rgb "cyan" lw 3 pt 6
+      plot sin(x) with linespoints ls 5          # user-defined line style 5
+
+?mouse input
+ Many terminals allow interaction with the current plot using the mouse. Some
+ also support the definition of hotkeys to activate pre-defined functions by
+ hitting a single key while the mouse focus is in the active plot window.
+ It is even possible to combine mouse input with `batch` command scripts, by
+ invoking the command `pause mouse` and then using the mouse variables returned
+ by mouse clicking as parameters for subsequent scripted actions.
+ See `bind` and `mouse variables`.  See also the command `set mouse`.
+?commands bind
+?hotkey
+?hotkeys
+?bind
+ Syntax:
+       bind {allwindows} [<key-sequence>] ["<gnuplot commands>"]
+       bind <key-sequence> ""
+       reset bind
+
+ The `bind` allows defining or redefining a hotkey, i.e. a sequence of gnuplot
+ commands which will be executed when a certain key or key sequence is pressed
+ while the driver's window has the input focus. Note that `bind` is only
+ available if gnuplot was compiled with `mouse` support and it is used by all
+ mouse-capable terminals. A user-specified binding supersedes any builtin
+ bindings, except that <space> and 'q' cannot normally be rebound. For an
+ exception, see `bind space`.
+
+ Only mouse button 1 can be bound, and only for 2D plots.
+
+ You get the list of all hotkeys by typing `show bind` or `bind` or by typing
+ the hotkey 'h' in the graph window.
+
+ Key bindings are restored to their default state by `reset bind`.
+
+ Note that multikey-bindings with modifiers must be given in quotes.
+
+ Normally hotkeys are only recognized when the currently active plot window
+ has focus. `bind allwindows <key> ...` (short form: `bind all <key> ...`)
+ causes the binding for <key> to apply to all gnuplot plot windows, active
+ or not.  In this case gnuplot variable MOUSE_KEY_WINDOW is set to the ID
+ of the originating window, and may be used by the bound command.
+
+ Examples:
+
+ - set bindings:
+
+     bind a "replot"
+     bind "ctrl-a" "plot x*x"
+     bind "ctrl-alt-a" 'print "great"'
+     bind Home "set view 60,30; replot"
+     bind all Home 'print "This is window ",MOUSE_KEY_WINDOW'
+
+ - show bindings:
+     bind "ctrl-a"          # shows the binding for ctrl-a
+     bind                   # shows all bindings
+     show bind              # show all bindings
+
+ - remove bindings:
+     bind "ctrl-alt-a" ""   # removes binding for ctrl-alt-a
+                              (note that builtins cannot be removed)
+     reset bind             # installs default (builtin) bindings
+     bind!                  # deprecated form of "reset bind"
+
+ - bind a key to toggle something:
+   v=0
+   bind "ctrl-r" "v=v+1;if(v%2)set term x11 noraise; else set term x11 raise"
+
+ Modifiers (ctrl / alt) are case insensitive, keys not:
+     ctrl-alt-a == CtRl-alT-a
+     ctrl-alt-a != ctrl-alt-A
+
+ List of modifiers (alt == meta):
+     ctrl, alt
+
+ List of supported special keys:
+
+    "BackSpace", "Tab", "Linefeed", "Clear", "Return", "Pause", "Scroll_Lock",
+    "Sys_Req", "Escape", "Delete", "Home", "Left", "Up", "Right", "Down",
+    "PageUp", "PageDown", "End", "Begin",
+
+    "KP_Space", "KP_Tab", "KP_Enter", "KP_F1", "KP_F2", "KP_F3", "KP_F4",
+    "KP_Home", "KP_Left", "KP_Up", "KP_Right", "KP_Down", "KP_PageUp",
+    "KP_PageDown", "KP_End", "KP_Begin", "KP_Insert", "KP_Delete", "KP_Equal",
+    "KP_Multiply", "KP_Add", "KP_Separator", "KP_Subtract", "KP_Decimal",
+    "KP_Divide",
+
+    "KP_1" - "KP_9", "F1" - "F12"
+
+ The following are window events rather than actual keys
+
+    "Button1" "Close"
+
+ See also help for `mouse`.
+?commands bind space
+?bind space
+ If gnuplot was built with configuration option --enable-raise-console, then
+ typing <space> in the plot window raises gnuplot's command window. This hotkey
+ can be changed to ctrl-space by starting gnuplot as 'gnuplot -ctrlq', or by
+ setting the XResource 'gnuplot*ctrlq'.  See `x11 command-line-options`.
+?mouse variables
+ When `mousing` is active, clicking in the active window will set several user
+ variables that can be accessed from the gnuplot command line. The coordinates
+ of the mouse at the time of the click are stored in MOUSE_X MOUSE_Y MOUSE_X2
+ and MOUSE_Y2. The mouse button clicked, and any meta-keys active at that time,
+ are stored in MOUSE_BUTTON MOUSE_SHIFT MOUSE_ALT and MOUSE_CTRL.  These
+ variables are set to undefined at the start of every plot, and only become
+ defined in the event of a mouse click in the active plot window. To determine
+ from a script if the mouse has been clicked in the active plot window, it is
+ sufficient to test for any one of these variables being defined.
+
+       plot 'something'
+       pause mouse
+       if (defined(MOUSE_BUTTON)) call 'something_else'; \
+       else print "No mouse click."
+
+ It is also possible to track keystrokes in the plot window using the mousing
+ code.
+
+       plot 'something'
+       pause mouse keypress
+       print "Keystroke ", MOUSE_KEY, " at ", MOUSE_X, " ", MOUSE_Y
+
+ When `pause mouse keypress` is terminated by a keypress, then MOUSE_KEY will
+ contain the ascii character value of the key that was pressed. MOUSE_CHAR will
+ contain the character itself as a string variable.  If the pause command is
+ terminated abnormally (e.g. by ctrl-C or by externally closing the plot window)
+ then MOUSE_KEY will equal -1.
+
+ Note that after a zoom by mouse, you can read the new ranges as GPVAL_X_MIN,
+ GPVAL_X_MAX, GPVAL_Y_MIN, and GPVAL_Y_MAX, see `gnuplot-defined variables`.
+
+
+?plotting
+ There are three `gnuplot` commands which actually create a plot: `plot`,
+ `splot` and `replot`.  `plot` generates 2D plots, `splot` generates 3D
+ plots (actually 2D projections, of course), and `replot` appends its
+ arguments to the previous `plot` or `splot` and executes the modified
+ command.
+
+ Much of the general information about plotting can be found in the discussion
+ of `plot`; information specific to 3D can be found in the `splot` section.
+
+ `plot` operates in either rectangular or polar coordinates -- see `set polar`
+ for details of the latter.  `splot` operates only in rectangular coordinates,
+ but the `set mapping` command allows for a few other coordinate systems to be
+ treated.  In addition, the `using` option allows both `plot` and `splot` to
+ treat almost any coordinate system you'd care to define.
+
+ `plot` also lets you use each of the four borders -- x (bottom), x2 (top), y
+ (left) and y2 (right) -- as an independent axis.  The `axes` option lets you
+ choose which pair of axes a given function or data set is plotted against.  A
+ full complement of `set` commands exists to give you complete control over
+ the scales and labelling of each axis.  Some commands have the name of an
+ axis built into their names, such as `set xlabel`.  Other commands have one
+ or more axis names as options, such as `set logscale xy`.  Commands and
+ options controlling the z axis have no effect on 2D graphs.
+
+ `splot` can plot surfaces and contours in addition to points and/or lines.
+ See `set isosamples` for information about defining the grid for a 3D function.
+ See `splot datafile` for information about the requisite file structure for 3D
+ data values, `set contour` and `set cntrparam` for information about contours.
+
+ In `splot`, control over the scales and labels of the axes are the same as
+ with `plot`, except that commands and options controlling the x2 and y2 axes
+ have no effect whereas of course those controlling the z axis do take effect.
+?startup
+?start
+?start-up
+?initialization
+?.gnuplot
+ When gnuplot is run, it first looks for a system-wide initialization file named
+ `gnuplotrc`.  The location of this file is determined when the program is built
+ and is reported by `show loadpath`.  The program then looks in the user's HOME
+ directory for a file called `.gnuplot` on Unix-like systems or `GNUPLOT.INI` on
+ other systems.  (Windows and OS/2 will look for it in the directory named in
+ the environment variable `GNUPLOT`; Windows will use `USERPROFILE` if GNUPLOT
+ is not defined).
+ Note: The program can be configured to look first in the current directory,
+ but this is not recommended because it is bad security practice.
+?strings
+?string variables
+ In addition to string constants, most gnuplot commands also accept a string
+ variable, a string expression, or a function that returns a string.
+ For example, the following four methods of creating a plot all result in the
+ same plot title:
+
+       four = "4"
+       graph4 = "Title for plot #4"
+       graph(n) = sprintf("Title for plot #%d",n)
+
+       plot 'data.4' title "Title for plot #4"
+       plot 'data.4' title graph4
+       plot 'data.4' title "Title for plot #".four
+       plot 'data.4' title graph(4)
+
+ Since integers are promoted to strings when operated on by the string
+ concatenation operator, the following method also works:
+
+       N = 4
+       plot 'data.'.N title "Title for plot #".N
+
+ In general, elements on the command line will only be evaluated as possible
+ string variables if they are not otherwise recognizable as part of the normal
+ gnuplot syntax. So the following sequence of commands is legal, although
+ probably should be avoided so as not to cause confusion:
+
+       plot = "my_datafile.dat"
+       title = "My Title"
+       plot plot title title
+
+ There are three binary operators that require string operands: the string
+ concatenation operator ".", the string equality operator "eq" and the string
+ inequality operator "ne".  The following example will print TRUE.
+
+      if ("A"."B" eq "AB") print "TRUE"
+
+ See also the two string formatting functions `gprintf` and `sprintf`.
+
+ Substrings can be specified by appending a range specifier to any string,
+ string variable, or string-valued function.  The range specifier has the
+ form [begin:end], where begin is the index of the first character of the
+ substring and end is the index of the last character of the substring.
+ The first character has index 1.  The begin or end fields may be empty, or
+ contain '*', to indicate the true start or end of the original string.
+ E.g.  str[:] and str[*:*] both describe the full string str.
+?substitution
+ When a command line to gnuplot is first read, i.e. before it is interpreted
+ or executed, two forms of lexical substitution are performed. These are
+ triggered by the presence of text in backquotes (ascii character 96) or
+ preceded by @ (ascii character 64).
+?substitution backquotes
+?backquotes
+?shell commands
+ Command-line substitution is specified by a system command enclosed in
+ backquotes.  This command is spawned and the output it produces replaces
+ the backquoted text on the command line.  Some implementations also support
+ pipes;  see `plot datafile special-filenames`.
+
+ Command-line substitution can be used anywhere on the `gnuplot` command
+ line, except inside strings delimited by single quotes.
+
+ Example:
+
+ This will run the program `leastsq` and replace `leastsq` (including
+ backquotes) on the command line with its output:
+       f(x) = `leastsq`
+
+ or, in VMS
+       f(x) = `run leastsq`
+
+ These will generate labels with the current time and userid:
+       set label "generated on `date +%Y-%m-%d` by `whoami`" at 1,1
+       set timestamp "generated on %Y-%m-%d by `whoami`"
+?substitution macros
+?macros
+ Substitution of command line macros is disabled by default, but may be
+ enabled using the `set macros` command.  If macro substitution is enabled,
+ the character @ is used to trigger substitution of the current value of a
+ string variable into the command line. The text in the string variable may
+ contain any number of lexical elements.  This allows string variables to be
+ used as command line macros.  Only string constants may be expanded using this
+ mechanism, not string-valued expressions.
+ For example:
+
+       set macros
+       style1 = "lines lt 4 lw 2"
+       style2 = "points lt 3 pt 5 ps 2"
+       range1 = "using 1:3"
+       range2 = "using 1:5"
+       plot "foo" @range1 with @style1, "bar" @range2 with @style2
+
+ The line containing @ symbols is expanded on input, so that by the time it is
+ executed the effect is identical to having typed in full
+
+       plot "foo" using 1:3 with lines lt 4 lw 2, \
+            "bar" using 1:5 with points lt 3 pt 5 ps 2
+
+ The function exists() may be useful in connection with macro evaluation.
+ The following example checks that C can safely be expanded as the name of
+ a user-defined variable:
+
+       C = "pi"
+       if (exists(C)) print C," = ", @C
+
+ Macro expansion does not occur inside either single or double quotes.
+ However macro expansion does occur inside backquotes.
+
+ Macro expansion is handled as the very first thing the interpreter does when
+ looking at a new line of commands and is only done once. Therefore, code like
+ the following will execute correctly:
+
+      A = "c=1"
+      @A
+
+ but this line will not, since the macro is defined on the same line
+ and will not be expanded in time
+
+      A = "c=1"; @A   # will not expand to c=1
+
+ For execution of complete commands the `evaluate` command may also be handy.
+?mixing_macros_backquotes
+?substitution mixing_macros_backquotes
+ The interaction of string variables, backquotes and macro substitution is
+ somewhat complicated.  Backquotes do not block macro substitution, so
+
+       filename = "mydata.inp"
+       lines = ` wc --lines @filename | sed "s/ .*//" `
+
+ results in the number of lines in mydata.inp being stored in the integer
+ variable lines. And double quotes do not block backquote substitution, so
+
+       mycomputer = "`uname -n`"
+
+ results in the string returned by the system command `uname -n` being stored
+ in the string variable mycomputer.
+
+ However, macro substitution is not performed inside double quotes, so you
+ cannot define a system command as a macro and then use both macro and backquote
+ substitution at the same time.
+
+        machine_id = "uname -n"
+        mycomputer = "`@machine_id`"  # doesn't work!!
+
+ This fails because the double quotes prevent @machine_id from being interpreted
+ as a macro. To store a system command as a macro and execute it later you must
+ instead include the backquotes as part of the macro itself.  This is
+ accomplished by defining the macro as shown below.  Notice that the sprintf
+ format nests all three types of quotes.
+
+       machine_id = sprintf('"`uname -n`"')
+       mycomputer = @machine_id
+?syntax
+?specify
+?punctuation
+ Options and any accompanying parameters are separated by spaces whereas lists
+ and coordinates are separated by commas.  Ranges are separated by colons and
+ enclosed in brackets [], text and file names are enclosed in quotes, and a
+ few miscellaneous things are enclosed in parentheses.
+
+ Commas are used to separate coordinates on the `set` commands `arrow`,
+ `key`, and `label`; the list of variables being fitted (the list after the
+ `via` keyword on the `fit` command); lists of discrete contours or the loop
+ parameters which specify them on the `set cntrparam` command; the arguments
+ of the `set` commands `dgrid3d`, `dummy`, `isosamples`, `offsets`, `origin`,
+ `samples`, `size`, `time`, and `view`; lists of tics or the loop parameters
+ which specify them; the offsets for titles and axis labels; parametric
+ functions to be used to calculate the x, y, and z coordinates on the `plot`,
+ `replot` and `splot` commands; and the complete sets of keywords specifying
+ individual plots (data sets or functions) on the `plot`, `replot` and `splot`
+ commands.
+
+ Parentheses are used to delimit sets of explicit tics (as opposed to loop
+ parameters) and to indicate computations in the `using` filter of the `fit`,
+ `plot`, `replot` and `splot` commands.
+
+ (Parentheses and commas are also used as usual in function notation.)
+
+ Square brackets are used to delimit ranges given in `set`, `plot`
+ or `splot` commands.
+
+ Colons are used to separate extrema in `range` specifications (whether they
+ are given on `set`, `plot` or `splot` commands) and to separate entries in
+ the `using` filter of the `plot`, `replot`, `splot` and `fit` commands.
+
+ Semicolons are used to separate commands given on a single command line.
+
+ Curly braces are used in the syntax for enhanced text mode and to delimit
+ blocks in if/then/else statements.  They are also used to denote complex
+ numbers: {3,2} = 3 + 2i.
+
+ The EEPIC, Imagen, Uniplex, LaTeX, and TPIC drivers allow a newline to be
+ specified by \\ in a single-quoted string or \\\\ in a double-quoted string.
+?quotes
+?syntax quotes
+ Gnuplot uses three forms of quote marks for delimiting text strings,
+ double-quote (ascii 34), single-quote (ascii 39), and backquote (ascii 96).
+
+ Filenames may be entered with either single- or double-quotes.  In this
+ manual the command examples generally single-quote filenames and double-quote
+ other string tokens for clarity.
+
+ String constants and text strings used for labels, titles, or other plot
+ elements may be enclosed in either single quotes or double quotes. Further
+ processing of the quoted text depends on the choice of quote marks.
+
+ Backslash processing of special characters like \n (newline) and
+ \345 (octal character code) is performed for double-quoted strings.  In
+ single-quoted strings, backslashes are just ordinary characters.  To get
+ a single-quote (ascii 39) in a single-quoted string, it has to be doubled.
+ Thus the strings "d\" s' b\\" and 'd" s'' b\' are completely equivalent.
+
+ Text justification is the same for each line of a multi-line string.
+ Thus the center-justified string
+       "This is the first line of text.\nThis is the second line."
+ will produce
+                        This is the first line of text.
+                           This is the second line.
+ but
+       'This is the first line of text.\nThis is the second line.'
+ will produce
+           This is the first line of text.\nThis is the second line.
+
+ Enhanced text processing is performed for both double-quoted text and
+ single-quoted text, but only by terminals supporting this mode.
+ See `enhanced text`.
+
+ Back-quotes are used to enclose system commands for substitution into the
+ command line.  See `substitution`.
+?time/date
+ `gnuplot` supports the use of time and/or date information as input data.
+ This feature is activated by the commands `set xdata time`, `set ydata time`,
+ etc.
+
+ Internally all times and dates are converted to the number of seconds from
+ the year 2000.  The command `set timefmt` defines the format for all inputs:
+ data files, ranges, tics, label positions---in short, anything that accepts a
+ data value must receive it in this format.  Since only one input format can
+ be in force at a given time, all time/date quantities being input at the same
+ time must be presented in the same format.  Thus if both x and y data in a
+ file are time/date, they must be in the same format.
+
+ The conversion to and from seconds assumes Universal Time (which is the same
+ as Greenwich Standard Time).  There is no provision for changing the time
+ zone or for daylight savings.  If all your data refer to the same time zone
+ (and are all either daylight or standard) you don't need to worry about these
+ things.  But if the absolute time is crucial for your application, you'll
+ need to convert to UT yourself.
+
+ Commands like `show xrange` will re-interpret the integer according to
+ `timefmt`.  If you change `timefmt`, and then `show` the quantity again, it
+ will be displayed in the new `timefmt`.  For that matter, if you give the
+ deactivation command (like `set xdata`), the quantity will be shown in its
+ numerical form.
+
+ The commands `set format` or `set tics format` define the format that will be
+ used for tic labels, whether or not the specified axis is time/date.
+
+ If time/date information is to be plotted from a file, the `using` option
+ _must_ be used on the `plot` or `splot` command.  These commands simply use
+ white space to separate columns, but white space may be embedded within the
+ time/date string.  If you use tabs as a separator, some trial-and-error may
+ be necessary to discover how your system treats them.
+
+ The `time` function can be used to get the current system time. This value
+ can be converted to a date string with the `strftime` function, or it can be
+ used in conjunction with `timecolumn` to generate relative time/date plots.
+ The type of the argument determines what is returned. If the argument is an
+ integer, `time` returns the current time as an integer, in seconds from 
+ 1 Jan 2000. If the argument is real (or complex), the result is real as well.
+ The precision of the fractional (sub-second) part depends on your operating
+ system. If the argument is a string, it is assumed to be a format string, 
+ and it is passed to `strftime` to provide a formatted time/date string.
+
+ The following example demonstrates time/date plotting.
+
+ Suppose the file "data" contains records like
+
+       03/21/95 10:00  6.02e23
+
+ This file can be plotted by
+
+       set xdata time
+       set timefmt "%m/%d/%y"
+       set xrange ["03/21/95":"03/22/95"]
+       set format x "%m/%d"
+       set timefmt "%m/%d/%y %H:%M"
+       plot "data" using 1:3
+
+ which will produce xtic labels that look like "03/21".
+
+ See `time_specifiers`.
+?plotting styles
+
+ There are many plotting styles available in gnuplot.
+ They are listed alphabetically below.
+ The commands `set style data` and `set style function` change the
+ default plotting style for subsequent `plot` and `splot` commands.
+
+ You also have the option to specify the plot style explicitly as part of
+ the `plot` or `splot` command.  If you want to mix plot styles within a
+ single plot, you must specify the plot style for each component.
+
+ Example:
+
+      plot 'data' with boxes, sin(x) with lines
+
+ Each plot style has its own expected set of data entries in a data file.
+ For example by default the `lines` style expects either a single column of
+ y values (with implicit x ordering) or a pair of columns with x in the first
+ and y in the second.  For more information on how to fine-tune how columns in a
+ file are interpreted as plot data, see `using`.
+
+?commands set style boxerrorbars
+?set style boxerrorbars
+?plotting styles boxerrorbars
+?style boxerrorbars
+?boxerrorbars
+ The `boxerrorbars` style is only relevant to 2D data plotting.  It is a
+ combination of the `boxes` and `yerrorbars` styles.  It uses 3, 4, or 5
+ columns of data:
+
+      3 columns:  x  y  ydelta
+      4 columns:  x  y  ydelta xdelta        # boxwidth != -2
+      4 columns:  x  y  ylow  yhigh          # boxwidth == -2
+      5 columns:  x  y  ylow  yhigh  xdelta
+
+ The boxwidth will come from the fourth column if the y errors are given as
+ "ydelta" and the boxwidth was not previously set to -2.0 (`set boxwidth -2.0`)
+ or from the fifth column if the y errors are in the form of "ylow yhigh".  The
+ special case  `boxwidth = -2.0` is for four-column data with y errors in the
+ form "ylow yhigh".  In this case the boxwidth will be calculated so that each
+ box touches the adjacent boxes.  The width will also be calculated in cases
+ where three-column data are used.
+
+ An additional (4th, 5th or 6th) input column may be used to provide variable 
+ (per-datapoint) color information (see `linecolor` and `rgbcolor variable`).
+ The error bar will be drawn in the same color as the border of the box.
+
+ The box height is determined from the y error in the same way as it is for
+ the `yerrorbars` style---either from y-ydelta to y+ydelta or from ylow to
+ yhigh, depending on how many data columns are provided.
+ See also
+ errorbar demo.
+?commands set style boxes
+?set style boxes
+?plotting styles boxes
+?style boxes
+?boxes
+ The `boxes` style is only relevant to 2D plotting.  It draws a box centered
+ about the given x coordinate that extends from the x axis (not from the graph
+ border) to the given y coordinate.  It uses 2 or 3 columns of basic data.
+ Additional input columns may be used to provide information such as
+ variable line or fill color (see `rgbcolor variable`).
+
+      2 columns:  x  y
+      3 columns:  x  y  x_width
+
+ The width of the box is obtained in one of three ways.  If the input data has a
+ third column, this will be used to set the width of the box.  If not, if a
+ width has been set using the `set boxwidth` command, this will be used.
+ If neither of these is available, the width of each box will be calculated
+ automatically so that it touches the adjacent boxes.
+
+ The interior of the boxes is drawn according to the current fillstyle.
+ See `set style fill` for details.  Alternatively a new fillstyle
+ may be specified in the plot command.
+
+ For fillstyle `empty` the box is not filled.
+
+ For fillstyle `solid` the box is filled with a solid rectangle of the
+ current drawing color. There is an optional parameter <density> that
+ controls the fill density; it runs from 0 (background color) to 1
+ (current drawing color).
+
+ For fillstyle `pattern` the box is filled in the current drawing color with
+ a pattern, if supported by the terminal driver.
+
+ Examples:
+
+ To plot a data file with solid filled boxes with a small vertical space
+ separating them (bargraph):
+
+       set boxwidth 0.9 relative
+       set style fill solid 1.0
+       plot 'file.dat' with boxes
+
+ To plot a sine and a cosine curve in pattern-filled boxes style:
+
+       set style fill pattern
+       plot sin(x) with boxes, cos(x) with boxes
+
+ The sin plot will use pattern 0; the cos plot will use pattern 1.
+ Any additional plots would cycle through the patterns supported by the
+ terminal driver.
+
+ To specify explicit fillstyles for each dataset:
+
+      plot 'file1' with boxes fs solid 0.25, \
+           'file2' with boxes fs solid 0.50, \
+           'file3' with boxes fs solid 0.75, \
+           'file4' with boxes fill pattern 1, \
+           'file5' with boxes fill empty
+
+?plotting styles boxplot
+?style boxplot
+?boxplot
+ Boxplots are a common way to represent a statistical distribution of values.
+ Quartile boundaries are determined such that 1/4 of the points have a value
+ equal or less than the first quartile boundary, 1/2 of the points have a value
+ equal or less than the second quartile (median) value, etc.  A box is drawn
+ around the region between the first and third quartiles, with a horizontal line
+ at the median value.  Whiskers extend from the box to user-specified limits.
+ Points that lie outside these limits are drawn individually.
+
+ Examples
+
+     # Place a boxplot at x coordinate 1.0 representing the y values in column 5
+     plot 'data' using (1.0):5
+
+     # Same plot but suppress outliers and force the width of the boxplot to 0.3
+     set style boxplot nooutliers
+     plot 'data' using (1.0):5:(0.3)
+
+ By default only one boxplot is produced that represents all y values from the
+ second column of the using specification. However, an additional (fourth) 
+ colunm can be added to the specification. If present, the values of that
+ column will be interpreted as the discrete levels of a factor variable.
+ As many boxplots will be drawn as there are levels in the factor variable.
+ The separation between these boxplots is 1.0 by default, but it can be changed
+ by `set style boxplot separation`. By default, the value of the factor variable
+ is shown as a tic label below (or above) each boxplot.
+
+ Example
+
+     # Suppose that column 2 of 'data' contains either "control" or "treatment"
+     # The following example produces two boxplots, one for each level of the
+     # factor
+     plot 'data' using (1.0):5:(0):2
+
+ The default width of the box can be set via `set boxwidth <width>` or may be
+ specified as an optional 3rd column in the `using` clause of the plot command.
+ The first and third columns (x coordinate and width) are normally provided as
+ constants rather than as data columns.
+
+ By default the whiskers extend from the ends of the box to the most distant
+ point whose y value lies within 1.5 times the interquartile range. By default
+ outliers are drawn as circles (point type 7).  The width of the bars at the
+ end of the whiskers may be controlled using `set bars`.
+
+ These default properties may be changed using the `set style boxplot` command.
+ See `set style boxplot`, `bars`, `boxwidth`, `fillstyle`, `candlesticks`.
+
+?commands set style boxxyerrorbars
+?set style boxxyerrorbars
+?plotting styles boxxyerrorbars
+?style boxxyerrorbars
+?boxxyerrorbars
+ The `boxxyerrorbars` style is only relevant to 2D data plotting.  It is similar
+ to the `xyerrorbars` style except that it draws rectangular areas rather than
+ simple crosses.  It uses either 4 or 6 basic columns of input data.
+ Additional input columns may be used to provide information such as
+ variable line or fill color (see `rgbcolor variable`).
+
+      4 columns:  x  y  xdelta  ydelta
+      6 columns:  x  y  xlow  xhigh  ylow  yhigh
+
+ The box width and height are determined from the x and y errors in the same
+ way as they are for the `xyerrorbars` style---either from xlow to xhigh and
+ from ylow to yhigh, or from x-xdelta to x+xdelta and from y-ydelta to
+ y+ydelta, depending on how many data columns are provided.
+
+ An additional (5th or 7th) input column may be used to provide variable 
+ (per-datapoint) color information (see `linecolor` and `rgbcolor variable`).
+
+ The interior of the boxes is drawn according to the current fillstyle.
+ See `set style fill` and `boxes` for details.  Alternatively a new fillstyle
+ may be specified in the plot command.
+?commands set style candlesticks
+?set style candlesticks
+?plotting styles candlesticks
+?style candlesticks
+?candlesticks
+ The `candlesticks` style can be used for 2D data plotting of financial
+ data or for generating box-and-whisker plots of statistical data.
+ The symbol is a rectangular box, centered horizontally at the x
+ coordinate and limited vertically by the opening and closing prices.  A
+ vertical line segment at the x coordinate extends up from the top of the
+ rectangle to the high price and another down to the low.  The vertical line
+ will be unchanged if the low and high prices are interchanged.
+
+ Five columns of basic data are required:
+
+       financial data:   date  open  low  high  close
+       whisker plot:     x  box_min  whisker_min  whisker_high  box_high
+
+ The width of the rectangle can be controlled by the `set boxwidth` command.
+ For backwards compatibility with earlier gnuplot versions, when the
+ boxwidth parameter has not been set then the width of the candlestick
+ rectangle is controlled by `set bars <width>`.
+
+ Alternatively, an explicit width for each box-and-whiskers grouping may be
+ specified in an optional 6th column of data.  The width must be given in the
+ same units as the x coordinate.
+
+ An additional (6th, or 7th if the 6th column is used for width data)
+ input column may be used to provide variable (per-datapoint) color
+ information (see `linecolor` and `rgbcolor variable`).
+
+ By default the vertical line segments have no crossbars at the top and
+ bottom. If you want crossbars, which are typically used for box-and-whisker
+ plots, then add the keyword `whiskerbars` to the plot command.  By default
+ these whiskerbars extend the full horizontal width of the candlestick, but
+ you can modify this by specifying a fraction of the full width.
+
+ The usual convention for financial data is that the rectangle is empty
+ if (open < close) and solid fill if (close < open). This is the behavior you
+ will get if the current fillstyle is set to "empty". See `fillstyle`.
+ If you set the fillstyle to solid or pattern, then this will be used for
+ all boxes independent of open and close values.
+ See also `set bars` and `financebars`.  See also the
+ candlestick
+ and
+ finance 
+ demos.
+
+ Note: To place additional symbols, such as the median value, on a
+ box-and-whisker plot requires additional plot commands as in this example:
+
+   # Data columns:X Min 1stQuartile Median 3rdQuartile Max
+   set bars 4.0
+   set style fill empty
+   plot 'stat.dat' using 1:3:2:6:5 with candlesticks title 'Quartiles', \
+        ''         using 1:4:4:4:4 with candlesticks lt -1 notitle
+
+   # Plot with crossbars on the whiskers, crossbars are 50% of full width
+   plot 'stat.dat' using 1:3:2:6:5 with candlesticks whiskerbars 0.5
+
+ See `set boxwidth`, `set bars`, `set style fill`, and `boxplot`.
+?commands set style circles
+?set style circles
+?plotting styles circles
+?style circles
+?circles
+ The `circles` style plots a circle with an explicit radius at each data point.
+ If three columns of data are present, they are interpreted as x, y, radius.
+ The radius is always interpreted in the units of the plot's horizontal axis
+ (x or x2).  The scale on y and the aspect ratio of the plot are both ignored.
+ If only two columns are present, the radius is taken from `set style circle`.
+ In this case the radius may be given in graph or screen coordinates.
+ By default a full circle will be drawn.  It is possible to plot arc segments
+ instead of full circles by specifying a start and end angle in the 4th and 5th
+ columns.  An optional 4th or 6th column can specify per-circle color.
+ The start and end angles of the circle segments must be specified in degrees.
+
+
+ Examples:
+
+     # draws circles whose area is proportional to the value in column 3
+     set style fill transparent solid 0.2 noborder
+     plot 'data' using 1:2:(sqrt($3)) with circles, \
+          'data' using 1:2 with linespoints
+
+     # draws Pac-men instead of circles
+     plot 'data' using 1:2:(10):(40):(320) with circles
+
+     # draw a pie chart with inline data
+     set xrange [-15:15]
+     set style fill transparent solid 0.9 noborder
+     plot '-' using 1:2:3:4:5:6 with circles lc var
+     0    0    5    0    30    1
+     0    0    5   30    70    2
+     0    0    5   70   120    3
+     0    0    5  120   230    4
+     0    0    5  230   360    5
+     e
+
+ The result is similar to using a `points` plot with variable size points and
+ pointstyle 7, except that the circles will scale with the x axis range.
+ See also `set object circle` and `fillstyle`.
+?plotting styles ellipses
+?style ellipses
+?ellipses
+ The `ellipses` style plots an ellipse at each data point.  This style is
+ only relevant for 2D plotting.  Each ellipse is described in terms of its
+ center, major and minor diameters, and the angle between its major diameter
+ and the x axis.
+
+      2 columns: x y
+      3 columns: x y major_diam
+      4 columns: x y major_diam minor_diam
+      5 columns: x y major_diam minor_diam angle
+
+ If only two input columns are present, they are taken as the coordinates of
+ the centers, and the ellipses will be drawn with the default extent
+ (see `set style ellipse`).  The orientation of the ellipse, which is
+ defined as the angle between the major diameter and the plot's x axis,
+ is taken from the default ellipse style (see `set style ellipse`).
+ If three input columns are provided, the third column is used for both
+ diameters.  The orientation angle defaults to zero.
+ If four columns are present, they are interpreted as x, y, major diameter,
+ minor diameter.  Note that these are diameters, not radii.
+ An optional 5th column may be used to specify the orientation angle 
+ in degrees. 
+ The ellipses will also be drawn with their default extent if either of the 
+ supplied diameters in the 3-4-5 column form is negative.
+
+ In all of the above cases, optional variable color data may be given in an
+ additional last (3th, 4th, 5th or 6th) column. See `colorspec` for further
+ information.
+
+ By default, the major diameter is interpreted in the units of the plot's
+ horizontal axis (x or x2) while the minor diameter in that of the vertical
+ (y or y2).  This implies that if the x and y axis scales are not equal,
+ then the major/minor diameter ratio will no longer be correct after rotation.
+ This behavior can be changed with the `units` keyword, however. 
+
+ There are three alternatives: 
+ if `units xy` is included in the plot specification, the axes will be scaled
+ as described above. `units xx` ensures that both diameters are interpreted
+ in units of the x axis, while `units yy` means that both diameters are
+ interpreted in units of the y axis. In the latter two cases the ellipses
+ will have the correct aspect ratio, even if the plot is resized.
+
+ If `units` is omitted, the default setting will be used, which is equivalent
+ to `units xy`. This can be redefined by `set style ellipse`.
+
+ Example (draws ellipses, cycling through the available line types):
+
+     plot 'data' using 1:2:3:4:(0):0 with ellipses
+
+ See also `set object ellipse`, `set style ellipse` and `fillstyle`.
+?commands set style dots
+?set style dots
+?plotting styles dots
+?style dots
+?dots
+ The `dots` style plots a tiny dot at each point; this is useful for scatter
+ plots with many points.  Either 1 or 2 columns of input data are required in
+ 2D.  Three columns are required in 3D.
+
+ For some terminals (post, pdf) the size of the dot can be controlled by
+ changing the linewidth.
+
+      1 column    y         # x is row number
+      2 columns:  x  y
+      3 columns:  x  y  z   # 3D only (splot)
+
+?commands set style filledcurves
+?set style filledcurves
+?plotting styles filledcurves
+?style filledcurves
+?filledcurves
+ The `filledcurves` style is only relevant to 2D plotting. Three variants
+ are possible. The first two variants require either a function or two columns
+ of input data, and may be further modified by the options listed below.
+
+ Syntax:
+
+     plot ... with filledcurves [option]
+
+ where the option can be one of the following
+
+     [closed | {above | below}
+     {x1 | x2 | y1 | y2 | r}[=<a>] | xy=<x>,<y>]
+
+ The first variant, `closed`, treats the curve itself as a closed polygon.
+ This is the default if there are two columns of input data.
+
+ The second variant is to fill the area between the curve and a given axis,
+ a horizontal or vertical line, or a point.
+
+     filledcurves closed   ... just filled closed curve,
+     filledcurves x1       ... x1 axis,
+     filledcurves x2       ... x2 axis, etc for y1 and y2 axes,
+     filledcurves y1=0     ... line y=0 (at y1 axis) ie parallel to x1 axis,
+     filledcurves y2=42    ... line y=42 (at y2 axis) ie parallel to x2, etc,
+     filledcurves xy=10,20 ... point 10,20 of x1,y1 axes (arc-like shape).
+     filledcurves above r=1.5  the area of a polar plot outside radius 1.5
+
+ The third variant requires three columns of input data: the x coordinate and
+ two y coordinates corresponding to two curves sampled at the same set of
+ x coordinates; the area between the two curves is filled.
+ This is the default if there are three or more columns of input data.
+
+      3 columns:  x  y1  y2
+
+ Example of filling the area between two input curves.
+ fill between curves demo.
+
+     plot 'data' using 1:2:3 with filledcurves
+
+ The `above` and `below` options apply both to commands of the form
+     ... filledcurves above {x1|x2|y1|y2|r}=<val>
+ and to commands of the form
+     ... using 1:2:3 with filledcurves below
+ In either case the option limits the filled area to one side of the bounding
+ line or curve.
+
+ Note: Not all terminal types support this plotting mode.
+
+ Zooming a filled curve drawn from a datafile may produce empty or incorrect
+ areas because gnuplot is clipping points and lines, and not areas.
+
+ If the values of <a>, <x>, <y> are out of the drawing boundary, then they
+ are moved to the graph boundary. Then the actually filled area in the case
+ of option xy=<x>,<y> will depend on xrange and yrange.
+?commands set style financebars
+?set style financebars
+?plotting styles financebars
+?style financebars
+?financebars
+ The `financebars` style is only relevant for 2D data plotting of financial
+ data.  It requires 1 x coordinate (usually a date) and 4 y values (prices).
+
+      5 columns:   date  open  low  high  close
+
+ An additional (6th) input column may be used to provide variable 
+ (per-record) color information (see `linecolor` and `rgbcolor variable`).
+
+ The symbol is a vertical line segment, located horizontally at the x
+ coordinate and limited vertically by the high and low prices.  A horizontal
+ tic on the left marks the opening price and one on the right marks the
+ closing price.  The length of these tics may be changed by `set bars`.  The
+ symbol will be unchanged if the high and low prices are interchanged.
+ See `set bars` and `candlesticks`, and also the
+ finance demo.
+?commands set style fsteps
+?set style fsteps
+?plotting styles fsteps
+?style fsteps
+?fsteps
+ The `fsteps` style is only relevant to 2D plotting.  It connects consecutive
+ points with two line segments: the first from (x1,y1) to (x1,y2) and the
+ second from (x1,y2) to (x2,y2).  The input column requires are the same as for
+ plot styles `lines` and `points`.  The difference between `fsteps` and `steps`
+ is that `fsteps` traces first the change in y and then the change in x.
+ `steps` traces first the change in x and then the change in y.
+
+ See also
+ steps demo.
+?commands set style fillsteps
+?set style fillsteps
+?style fillsteps
+?fillsteps
+ The `fillsteps` style is exactly like `steps` except that the area between
+ the curve and y=0 is filled in the current fill style.  See `steps`.
+?commands set style histeps
+?set style histeps
+?plotting styles histeps
+?style histeps
+?histeps
+ The `histeps` style is only relevant to 2D plotting.  It is intended for
+ plotting histograms.  Y-values are assumed to be centered at the x-values;
+ the point at x1 is represented as a horizontal line from ((x0+x1)/2,y1) to
+ ((x1+x2)/2,y1).  The lines representing the end points are extended so that
+ the step is centered on at x.  Adjacent points are connected by a vertical
+ line at their average x, that is, from ((x1+x2)/2,y1) to ((x1+x2)/2,y2).
+ The input column requires are the same as for plot styles `lines` and `points`.
+
+ If `autoscale` is in effect, it selects the xrange from the data rather than
+ the steps, so the end points will appear only half as wide as the others.
+ See also
+ steps demo.
+
+ `histeps` is only a plotting style; `gnuplot` does not have the ability to
+ create bins and determine their population from some data set.
+?commands set style histogram
+?set style histogram
+?style histograms
+?plotting styles histograms
+?histograms
+ The `histograms` style is only relevant to 2D plotting.  It produces a bar
+ chart from a sequence of parallel data columns. Each element of the `plot`
+ command must specify a single input data source (e.g. one column of the input
+ file), possibly with associated tic values or key titles.
+ Four styles of histogram layout are currently supported.
+
+       set style histogram clustered {gap <gapsize>}
+       set style histogram errorbars {gap <gapsize>} {<linewidth>}
+       set style histogram rowstacked
+       set style histogram columnstacked
+
+ The default style corresponds to `set style histogram clustered gap 2`.
+ In this style, each set of parallel data values is collected into a group of
+ boxes clustered at the x-axis coordinate corresponding to their sequential
+ position (row #) in the selected datafile columns.  Thus if <n> datacolumns are
+ selected, the first cluster is centered about x=1, and contains <n> boxes whose
+ heights are taken from the first entry in the corresponding <n> data columns.
+ This is followed by a gap and then a second cluster of boxes centered about x=2
+ corresponding to the second entry in the respective data columns, and so on.
+ The default gap width of 2 indicates that the empty space between clusters is
+ equivalent to the width of 2 boxes.  All boxes derived from any one column
+ are given the same fill color and/or pattern (see `set style fill`).
+
+ Each cluster of boxes is derived from a single row of the input data file.
+ It is common in such input files that the first element of each row is a
+ label. Labels from this column may be placed along the x-axis underneath
+ the appropriate cluster of boxes with the `xticlabels` option to `using`.
+
+ The `errorbars` style is very similar to the `clustered` style, except that it
+ requires additional columns of input for each entry. The first column holds
+ the height (y value) of that box, exactly as for the `clustered` style.
+      2 columns:        y yerr          bar extends from y-yerr to y+err
+      3 columns:        y ymin yman     bar extends from ymin to ymax
+ The appearance of the error bars is controlled by the current value of
+ `set bars` and by the optional <linewidth> specification.
+
+ Two styles of stacked histogram are supported, chosen by the command
+ `set style histogram {rowstacked|columnstacked}`.  In these styles the data
+ values from the selected columns are collected into stacks of boxes.
+ Positive values stack upwards from y=0; negative values stack downwards.
+ Mixed positive and negative values will produce both an upward stack and a
+ downward stack.  The default stacking mode is `rowstacked`.
+
+ The `rowstacked` style places a box resting on the x-axis for each
+ data value in the first selected column; the first data value results in
+ a box a x=1, the second at x=2, and so on.  Boxes corresponding to the
+ second and subsequent data columns are layered on top of these, resulting
+ in a stack of boxes at x=1 representing the first data value from each
+ column, a stack of boxes at x=2 representing the second data value from
+ each column, and so on.  All boxes derived from any one column are given the
+ same fill color and/or pattern (see `set style fill`).
+
+ The `columnstacked` style is similar, except that each stack of boxes is
+ built up from a single data column. Each data value from the first specified
+ column yields a box in the stack at x=1, each data value from the second
+ specified column yields a box in the stack at x=2, and so on.  In this style
+ the color of each box is taken from the row number, rather than the column
+ number, of the corresponding data field.
+
+ Box widths may be modified using the `set boxwidth` command.
+ Box fill styles may be set using the `set style fill` command.
+
+ Histograms always use the x1 axis, but may use either y1 or y2.
+ If a plot contains both histograms and other plot styles, the non-histogram
+ plot elements may use either the x1 or the x2 axis.
+
+ Examples:
+ Suppose that the input file contains data values in columns 2, 4, 6, ...
+ and error estimates in columns 3, 5, 7, ...  This example plots the values
+ in columns 2 and 4 as a histogram of clustered boxes (the default style).
+ Because we use iteration in the plot command, any number of data columns can
+ be handled in a single command. See `iteration`.
+
+       set boxwidth 0.9 relative
+       set style data histograms
+       set style histogram cluster
+       set style fill solid 1.0 border lt -1
+       plot for [COL=2:4:2] 'file.dat' using COL
+
+ This will produce a plot with clusters of two boxes (vertical bars) centered
+ at each integral value on the x axis.  If the first column of the input file
+ contains labels, they may be placed along the x-axis using the variant command
+
+       plot for [COL=2:4:2] 'file.dat' using COL:xticlabels(1)
+
+ If the file contains both magnitude and range information for each value,
+ then error bars can be added to the plot.  The following commands will add
+ error bars extending from (y-<error>) to (y+<error>), capped by horizontal bar
+ ends drawn the same width as the box itself. The error bars and bar ends are
+ drawn with linewidth 2, using the border linetype from the current fill style.
+
+       set bars fullwidth
+       set style fill solid 1 border lt -1
+       set style histogram errorbars gap 2 lw 2
+       plot for [COL=2:4:2] 'file.dat' using COL:COL+1
+
+ To plot the same data as a rowstacked histogram.  Just to be different, this
+ example lists the separate columns explicitly rather than using iteration.
+
+       set style histogram rowstacked
+       plot 'file.dat' using 2, '' using 4:xtic(1)
+
+ This will produce a plot in which each vertical bar corresponds to one row of
+ data.  Each vertical bar contains a stack of two segments, corresponding in
+ height to the values found in columns 2 and 4 of the datafile.
+       
+
+ Finally, the commands
+
+       set style histogram columnstacked
+       plot 'file.dat' using 2, '' using 4
+
+ will produce two vertical stacks, one for each column of data.  The stack at
+ x=1 will contain a box for each entry in column 2 of the datafile.  The stack
+ at x=2 will contain a box for each parallel entry in column 4 of the datafile.
+ Because this interchanges gnuplot's usual interpretation of input rows and
+ columns, the specification of key titles and x-axis tic labels must also be
+ modified accordingly. See the comments given below.
+
+       set style histogram columnstacked
+       plot '' u 5:key(1)            # uses first column to generate key titles
+       plot '' u 5 title columnhead  # uses first row to generate xtic labels
+
+ Note that the two examples just given present exactly the same data values,
+ but in different formats.
+?newhistogram
+?histograms newhistogram
+?plotting style histograms newhistogram
+ Syntax:
+
+      newhistogram {"<title>"} {lt <linetype>} {fs <fillstyle>} {at <x-coord>}
+
+ More than one set of histograms can appear in a single plot. In this case you
+ can force a gap between them, and a separate label for each set, by using the
+ `newhistogram` command.
+ For example
+
+       set style histogram  cluster
+       plot newhistogram "Set A", 'a' using 1, '' using 2, '' using 3, \
+            newhistogram "Set B", 'b' using 1, '' using 2, '' using 3
+
+ The labels "Set A" and "Set B" will appear beneath the respective sets of
+ histograms, under the overall x axis label.
+
+ The newhistogram command can also be used to force histogram coloring to
+ begin with a specific color (linetype). By default colors will continue to
+ increment successively even across histogram boundaries. Here is an example
+ using the same coloring for multiple histograms
+       plot newhistogram "Set A" lt 4, 'a' using 1, '' using 2, '' using 3, \
+            newhistogram "Set B" lt 4, 'b' using 1, '' using 2, '' using 3
+
+ Similarly you can force the next histogram to begin with a specified fillstyle.
+ If the fillstyle is set to `pattern`, then the pattern used for filling will
+ be incremented automatically.
+
+ The `at <x-coord>` option sets the x coordinate position of the following 
+ histogram to <x-coord>. For example
+
+        set style histogram cluster
+        set style data histogram
+        set style fill solid 1.0 border -1
+        set xtic 1 offset character 0,0.3
+        plot newhistogram "Set A", \
+             'file.dat' u 1 t 1, '' u 2 t 2, \
+             newhistogram "Set B" at 8, \
+             'file.dat' u 2 t 2, '' u 2 t 2
+
+ will position the second histogram to start at x=8.
+?automated
+?histograms automated
+?styles histograms automated
+?plotting styles histograms automated
+ If you want to create a histogram from many columns of data in a single file,
+ it is very convenient to use the plot iteration feature.  See `iteration`.
+ For example, to create stacked histograms of the data in columns 3 through 8
+
+       set style histogram columnstacked
+       plot for [i=3:8] "datafile" using i title columnhead
+?commands set style image
+?set style image
+?plotting styles image
+?style image
+?image
+?rgbimage
+?rgbalpha
+ The `image`, `rgbimage`, and `rgbalpha` plotting styles all project a
+ uniformly sampled grid of data values onto a plane  in either 2D or 3D.
+ The input data may be an actual bitmapped image, perhaps converted from a
+ standard format such as PNG, or a simple array of numerical values.
+
+ This figure illustrates generation of a heat map from an array of scalar values.
+ The current palette is used to map each value onto the color assigned to the
+ corresponding pixel.
+       plot '-' matrix with image
+       5 4 3 1 0
+       2 2 0 0 1
+       0 0 0 1 0
+       0 1 2 4 3
+       e
+       e
+
+ Each pixel (data point) of the input 2D image will become a rectangle or
+ parallelipiped in the plot. The coordinates of each data point will determine
+ the center of the parallelipiped.  That is, an M x N set of data will form an
+ image with M x N pixels.  This is different from the pm3d plotting style, where
+ an M x N set of data will form a surface of (M-1) x (N-1) elements.  The scan
+ directions for a binary image data grid can be further controlled by additional
+ keywords. See `binary keywords flipx`, `keywords center`, and `keywords rotate`.
+
+ Image data can be scaled to fill a particular rectangle within a 2D plot 
+ coordinate system by specifying the x and y extent of each pixel.
+ See `binary keywords dx` and `dy`. To generate the figure at the right,
+ the same input image was placed multiple times, each with a specified dx, dy,
+ and origin. The input PNG image of a building is 50x128 pixels.  The tall
+ building was drawn by mapping this using `dx=0.5 dy=1.5`.  The short building
+ used a mapping `dx=0.5 dy=0.35`.
+
+ The `image` style handles input pixels containing a grayscale or color palette
+ value. Thus 2D plots (`plot` command) require 3 columns of data (x,y,value),
+ while 3D plots (`splot` command) require 4 columns of data (x,y,z,value).
+
+ The `rgbimage` style handles input pixels that are described by three separate
+ values for the red, green, and blue components.  Thus 5D data (x,y,r,g,b) is
+ needed for `plot` and 6D data (x,y,z,r,g,b) for `splot`.  The individual red,
+ green, and blue components are assumed to lie in the range [0:255].
+
+ The `rgbalpha` style handles input pixels that contain alpha channel 
+ (transparency) information in addition to the red, green, and blue components.
+ Thus 6D data (x,y,r,g,b,a) is needed for `plot` and 7D data (x,y,z,r,g,b,a)
+ for `splot`.  The r, g, b, and alpha components are assumed to lie in the range
+ [0:255].
+?image transparency
+?transparency
+?alpha channel
+ The `rgbalpha` plotting style assumes that each pixel of input data contains
+ an alpha value in the range [0:255].  A pixel with alpha = 0 is purely
+ transparent and does not alter the underlying contents of the plot. A pixel
+ with alpha = 255 is purely opaque.  All terminal types can handle these two
+ extreme cases.  A pixel with 0 < alpha < 255 is partially transparent.
+ Only a few terminal types can handle this correctly; other terminals will
+ approximate this by treating alpha as being either 0 or 255.
+?commands set style image failsafe
+?set style image failsafe
+?plotting styles image failsafe
+?style image failsafe
+?image failsafe
+?failsafe
+ Some terminal drivers provide code to optimize rendering of image data
+ within a rectangular 2D area.  However this code is known to be imperfect.
+ This optimized code may be disabled by using the keyword `failsafe`. E.g.
+
+       plot 'data' with image failsafe
+?commands set style impulses
+?set style impulses
+?plotting styles impulses
+?style impulses
+?impulses
+ The `impulses` style displays a vertical line from y=0 to the y value of each
+ point (2D) or from z=0 to the z value of each point (3D).  Note that the y or z
+ values may be negative.  Data from additional columns can be used to control
+ the color of each impulse.  To use this style effectively in 3D plots, it is
+ useful to choose thick lines (linewidth > 1). This approximates a 3D bar chart.
+
+      1 column:   y
+      2 columns:  x  y     # line from [x,0] to [x,y]  (2D)
+      3 columns:  x  y  z  # line from [x,y,0] to [x,y,z] (3D)
+
+?commands set style labels
+?set style labels
+?plotting styles labels
+?style labels
+?labels
+ The `labels` style reads coordinates and text from a data file and places
+ the text string at the corresponding 2D or 3D position.  3 or 4 input columns
+ of basic data are required.  Additional input columns may be used to provide
+ information such as variable font size or text color (see `rgbcolor variable`).
+
+      3 columns:  x  y  string    # 2D version
+      4 columns:  x  y  z  string # 3D version
+
+ The font, color, rotation angle and other properties of the printed text
+ may be specified as additional command options (see `set label`). The example
+ below generates a 2D plot with text labels constructed from the city whose
+ name is taken from column 1 of the input file, and whose geographic coordinates
+ are in columns 4 and 5. The font size is calculated from the value in column 3,
+ in this case the population.
+
+   CityName(String,Size) = sprintf("{/=%d %s}", Scale(Size), String)
+   plot 'cities.dat' using 5:4:(CityName(stringcolumn(1),$3)) with labels
+
+ If we did not want to adjust the font to a different size for each city,
+ the command would be much simpler:
+
+   plot 'cities.dat' using 5:4:1 with labels font "Times,8"
+
+ The `labels` style can also be used in 3D plots. In this case four input
+ column specifiers are required, corresponding to X Y Z and text.
+
+   splot 'datafile' using 1:2:3:4 with labels
+
+ See also `datastrings`, `set style data`.
+?commands set style lines
+?set style lines
+?plotting styles lines
+?style lines
+?lines
+ The `lines` style connects adjacent points with straight line segments.
+ It may be used in either 2D or 3D plots. The basic form requires 1, 2, or 3
+ columns of input data.
+ Additional input columns may be used to provide information such as
+ variable line color (see `rgbcolor variable`).
+
+ 2D form
+      1 column:   y       # implicit x from row number
+      2 columns:  x  y
+ 3D form
+      1 column:   z       # implicit x from row, y from index
+      3 columns:  x  y  z
+
+ See also `linetype`, `linewidth`, and `linestyle`.
+?commands set style linespoints
+?commands set style lp
+?set style linespoints
+?plotting styles linespoints
+?set style lp
+?style linespoints
+?style lp
+?linespoints
+?lp
+?pointinterval
+ The `linespoints` style connects adjacent points with straight line segments
+ and then goes back to draw a small symbol at each point.  The command
+ `set pointsize` may be used to change the default size of the points.
+ 1 or 2 columns of basic input data are required in 2D plots; 1 or 3 columns are
+ required if 3D plots.  See `style lines`.  Additional input columns may be used
+ to provide information such as variable point size or line color.
+
+ The `pointinterval` (short form `pi`) property of the linetype can be used to
+ control whether or not every point in the plot is given a symbol.  For example,
+ 'with lp pi 3' will draw line segments through every data point, but will only
+ place a symbol on every 3rd point.  A negative value for `pointinterval` will
+ erase the portion of line segment that passes underneath the symbol. The size
+ of the erased portion is controlled by `set pointintervalbox`.
+
+ `linespoints` may be abbreviated `lp`.
+?commands set style points
+?set style points
+?plotting styles points
+?style points
+?points
+ The `points` style displays a small symbol at each point.  The command `set
+ pointsize` may be used to change the default size of the points.
+ 1 or 2 columns of basic input data are required in 2D plots; 1 or 3 columns are
+ required in 3D plots.  See `style lines`.  Additional input columns may be used
+ to provide information such as variable point size or variable point color.
+
+ Polar plots are not really a separate plot style but are listed here for
+ completeness.  The option `set polar` tells gnuplot to interpret input
+ 2D coordinates as <angle>,<radius> rather than <x>,<y>.
+ Many, but not all, 2D plotting styles work in polar mode.
+ The figure shows a combination of plot styles `lines` and `filledcurves`.
+ See `set polar`, `set rrange`, `set size square`.
+
+?commands set style steps
+?set style steps
+?plotting styles steps
+?style steps
+?steps
+ The `steps` style is only relevant to 2D plotting.  It connects consecutive
+ points with two line segments: the first from (x1,y1) to (x2,y1) and the
+ second from (x2,y1) to (x2,y2).  The input column requires are the same as for
+ plot styles `lines` and `points`.  The difference between `fsteps` and `steps`
+ is that `fsteps` traces first the change in y and then the change in x.
+ `steps` traces first the change in x and then the change in y.  To fill the
+ area between the curve and the baseline at y=0, use `fillsteps`.
+ See also
+ steps demo.
+
+?commands set style rgbalpha
+?set style rgbalpha
+?plotting styles rgbalpha
+?style rgbalpha
+ See `image`.
+?commands set style rgbimage
+?set style rgbimage
+?plotting styles rgbimage
+?style rgbimage
+ See `image`.
+?commands set style vectors
+?set style vectors
+?plotting styles vectors
+?style vectors
+?vectors
+ The 2D `vectors` style draws a vector from (x,y) to (x+xdelta,y+ydelta).
+ The 3D `vectors` style is similar, but requires six columns of basic data.
+ A small arrowhead is drawn at the end of each vector.
+
+      4 columns:  x  y  xdelta  ydelta
+      6 columns:  x  y  z  xdelta  ydelta  zdelta
+
+ In both cases, an additional input column (5th in 2D, 7th in 3D) may be used
+ to provide variable (per-datapoint) color information. 
+ (see `linecolor` and `rgbcolor variable`).
+
+ splot with vectors is supported only for `set mapping cartesian`.
+
+ The keywords "with vectors" may be followed by an in-line arrow style
+ specifications, a reference to a predefined arrow style, or a request to read
+ the index of the desired arrow style for each vector from a separate column.
+ Note: If you choose "arrowstyle variable" it will fill in all arrow properties
+ at the time the corresponding vector is drawn; you cannot mix this keyword with
+ other line or arrow style qualifiers in the plot command.
+
+      plot ... with vectors filled heads
+      plot ... with vectors arrowstyle 3
+      plot ... using 1:2:3:4:5 with vectors arrowstyle variable
+
+ See `arrowstyle` for more details.
+
+ Example:
+       plot 'file.dat' using 1:2:3:4 with vectors head filled lt 2
+       splot 'file.dat' using 1:2:3:(1):(1):(1) with vectors filled head lw 2
+
+ `set clip one` and `set clip two` affect vectors drawn in 2D.
+ Please see `set clip` and `arrowstyle`.
+?commands set style xerrorbars
+?set style xerrorbars
+?plotting styles xerrorbars
+?style xerrorbars
+?xerrorbars
+ The `xerrorbars` style is only relevant to 2D data plots.  `xerrorbars` is
+ like `points`, except that a horizontal error bar is also drawn.  At each point
+ (x,y), a line is drawn from (xlow,y) to (xhigh,y) or from (x-xdelta,y) to
+ (x+xdelta,y), depending on how many data columns are provided.  A tic mark
+ is placed at the ends of the error bar (unless `set bars` is used---see
+ `set bars` for details).  The basic style requires either 3 or 4 columns:
+
+      3 columns:  x  y  xdelta
+      4 columns:  x  y  xlow  xhigh
+
+ An additional input column (4th or 5th) may be used to provide information 
+ such as variable point color.
+
+?commands set style xyerrorbars
+?set style xyerrorbars
+?plotting styles xyerrorbars
+?style xyerrorbars
+?xyerrorbars
+ The `xyerrorbars` style is only relevant to 2D data plots.  `xyerrorbars` is
+ like `points`, except that horizontal and vertical error bars are also drawn.
+ At each point (x,y), lines are drawn from (x,y-ydelta) to (x,y+ydelta) and
+ from (x-xdelta,y) to (x+xdelta,y) or from (x,ylow) to (x,yhigh) and from
+ (xlow,y) to (xhigh,y), depending upon the number of data columns provided.  A
+ tic mark is placed at the ends of the error bar (unless `set bars` is
+ used---see `set bars` for details).  Either 4 or 6 input columns are required.
+
+      4 columns:  x  y  xdelta  ydelta
+      6 columns:  x  y  xlow  xhigh  ylow  yhigh
+
+ If data are provided in an unsupported mixed form, the `using` filter on the
+ `plot` command should be used to set up the appropriate form.  For example,
+ if the data are of the form (x,y,xdelta,ylow,yhigh), then you can use
+
+       plot 'data' using 1:2:($1-$3):($1+$3):4:5 with xyerrorbars
+
+ An additional input column (5th or 7th) may be used to provide variable 
+ (per-datapoint) color information. 
+
+?commands set style yerrorbars
+?commands set style errorbars
+?plotting styles yerrorbars
+?plotting styles errorbars
+?set style yerrorbars
+?set style errorbars
+?style yerrorbars
+?style errorbars
+?yerrorbars
+ The `yerrorbars` (or `errorbars`) style is only relevant to 2D data plots.
+ `yerrorbars` is like `points`, except that a vertical error bar is also drawn.
+ At each point (x,y), a line is drawn from (x,y-ydelta) to (x,y+ydelta) or
+ from (x,ylow) to (x,yhigh), depending on how many data columns are provided.
+ A tic mark is placed at the ends of the error bar (unless `set bars` is
+ used---see `set bars` for details).  Either 3 or 4 input columns are required.
+
+      3 columns:  x  y  ydelta
+      4 columns:  x  y  ylow  yhigh
+
+ An additional input column (4th or 5th) may be used to provide information 
+ such as variable point color.
+
+ See also
+ errorbar demo.
+?commands set style xerrorlines
+?set style xerrorlines
+?plotting styles xerrorlines
+?style xerrorlines
+?xerrorlines
+ The `xerrorlines` style is only relevant to 2D data plots.
+ `xerrorlines` is like `linespoints`, except that a horizontal error
+ line is also drawn. At each point (x,y), a line is drawn from (xlow,y)
+ to (xhigh,y) or from (x-xdelta,y) to (x+xdelta,y), depending on how
+ many data columns are provided. A tic mark is placed at the ends of
+ the error bar (unless `set bars` is used---see `set bars` for details).
+ The basic style requires either 3 or 4 columns:
+
+      3 columns:  x  y  xdelta
+      4 columns:  x  y  xlow  xhigh
+
+ An additional input column (4th or 5th) may be used to provide information 
+ such as variable point color.
+
+?commands set style xyerrorlines
+?set style xyerrorlines
+?plotting styles xyerrorlines
+?style xyerrorlines
+?xyerrorlines
+ The `xyerrorlines` style is only relevant to 2D data plots.
+ `xyerrorlines` is like `linespoints`, except that horizontal and
+ vertical error bars are also drawn. At each point (x,y), lines are
+ drawn from (x,y-ydelta) to (x,y+ydelta) and from (x-xdelta,y) to
+ (x+xdelta,y) or from (x,ylow) to (x,yhigh) and from (xlow,y) to
+ (xhigh,y), depending upon the number of data columns provided. A tic
+ mark is placed at the ends of the error bar (unless `set bars` is
+ used---see `set bars` for details).  Either 4 or 6 input columns are required.
+
+      4 columns:  x  y  xdelta  ydelta
+      6 columns:  x  y  xlow  xhigh  ylow  yhigh
+
+ If data are provided in an unsupported mixed form, the `using` filter on the
+ `plot` command should be used to set up the appropriate form.  For example,
+ if the data are of the form (x,y,xdelta,ylow,yhigh), then you can use
+
+       plot 'data' using 1:2:($1-$3):($1+$3):4:5 with xyerrorlines
+
+ An additional input column (5th or 7th) may be used to provide variable 
+ (per-datapoint) color information. 
+
+?commands set style yerrorlines
+?commands set style errorlines
+?plotting styles yerrorlines
+?plotting styles errorlines
+?set style yerrorlines
+?set style errorlines
+?style yerrorlines
+?style errorlines
+?yerrorlines
+ The `yerrorlines` (or `errorlines`) style is only relevant to 2D data
+ plots. `yerrorlines` is like `linespoints`, except that a vertical
+ error line is also drawn. At each point (x,y), a line is drawn from
+ (x,y-ydelta) to (x,y+ydelta) or from (x,ylow) to (x,yhigh), depending
+ on how many data columns are provided. A tic mark is placed at the
+ ends of the error bar (see `set bars` for details).
+ Either 3 or 4 input columns are required.
+
+      3 columns:  x  y  ydelta
+      4 columns:  x  y  ylow  yhigh
+
+ An additional input column (4th or 5th) may be used to provide information 
+ such as variable point color.
+
+ See also
+ errorbar demo.
+?3D (surface) plots
+?plotting styles 3d (surface) plots
+ Surface plots are generated using the `splot` command rather than the `plot`
+ command. The style `with lines` draws a surface made from a grid of lines.
+ Solid surfaces can be drawn using the style `with pm3d`.
+ Usually the surface is displayed at some arbitrary viewing angle,
+ such that it clearly represents a 3D surface.  In this case the X, Y, and Z
+ axes are all visible in the plot. The illusion of 3D is enhanced by choosing
+ hidden line removal or depth-sorted surface elements.
+ See `hidden3d` and `pm3d depthorder`.
+ The `splot` command can also calculate and draw contour lines corresponding
+ to constant Z values. These contour lines may be drawn onto the surface
+ itself, or projected onto the XY plane. See `set contour`.
+  
+  
+  
+  
+?2D projection (set view map)
+?projection
+ An important special case of the `splot` command is to map the Z coordinate
+ onto a 2D surface by projecting the plot along the Z axis.  See `set view map`.
+ This plot mode can be used to generate contour plots and heat maps.
+  
+  
+?commands
+ This section lists the commands acceptable to `gnuplot` in alphabetical
+ order.  Printed versions of this document contain all commands; the text
+ available interactively may not be complete.  Indeed, on some systems there may
+ be no commands at all listed under this heading.
+
+ Note that in most cases unambiguous abbreviations for command names and their
+ options are permissible, i.e., "`p f(x) w li`" instead of "`plot f(x) with
+ lines`".
+
+ In the syntax descriptions, braces ({}) denote optional arguments and a
+ vertical bar (|) separates mutually exclusive choices.
+?commands cd
+?cd
+ The `cd` command changes the working directory.
+
+ Syntax:
+       cd '<directory-name>'
+
+ The directory name must be enclosed in quotes.
+
+ Examples:
+       cd 'subdir'
+       cd ".."
+
+ It is recommended that Windows users use single-quotes, because backslash [\]
+ has special significance inside double-quotes and has to be escaped.
+ For example,
+       cd "c:\newdata"
+ fails, but
+       cd 'c:\newdata'
+       cd "c:\\newdata"
+ work as expected.
+?commands call
+?call
+ The `call` command is identical to the load command with one exception: you
+ can have up to ten additional parameters to the command (delimited according
+ to the standard parser rules) which can be substituted into the lines read
+ from the file.  As each line is read from the `call`ed input file, it is
+ scanned for the sequence `$` (dollar-sign) followed by a digit (0--9).  If
+ found, the sequence is replaced by the corresponding parameter from the
+ `call` command line.  If the parameter was specified as a string in the
+ `call` line, it is substituted without its enclosing quotes.  Sequence `$#`
+ is replaced by the number of passed parameters.  `$` followed by any character
+ will be that character; e.g. use `$$` to get a single `$`.  Providing more
+ than ten parameters on the `call` command line will cause an error.  A
+ parameter that was not provided substitutes as nothing.  Files being `call`ed
+ may themselves contain `call` or `load` commands.
+
+ Syntax:
+       call "<input-file>" <parameter-0> <parm-1> ... <parm-9>
+
+ The name of the input file must be enclosed in quotes, and it is recommended
+ that parameters are similarly enclosed in quotes (future versions of gnuplot
+ may treat quoted and unquoted arguments differently).
+
+ Example:
+
+ If the file 'calltest.gp' contains the line:
+       print "argc=$# p0=$0 p1=$1 p2=$2 p3=$3 p4=$4 p5=$5 p6=$6 p7=x$7x"
+
+ entering the command:
+       call 'calltest.gp' "abcd" 1.2 + "'quoted'" -- "$2"
+
+ will display:
+       argc=7 p0=abcd p1=1.2 p2=+ p3='quoted' p4=- p5=- p6=$2 p7=xx
+
+ NOTE: there is a clash in syntax with the datafile `using` callback
+ operator.  Use `$$n` or `column(n)` to access column n from a datafile inside
+ a `call`ed datafile plot.
+?commands clear
+?clear
+ The `clear` command erases the current screen or output device as specified
+ by `set output`.  This usually generates a formfeed on hardcopy devices.  Use
+ `set terminal` to set the device type.
+
+ For some terminals `clear` erases only the portion of the plotting surface
+ defined by `set size`, so for these it can be used in conjunction with `set
+ multiplot` to create an inset.
+
+ Example:
+       set multiplot
+       plot sin(x)
+       set origin 0.5,0.5
+       set size 0.4,0.4
+       clear
+       plot cos(x)
+       unset multiplot
+
+ Please see `set multiplot`, `set size`, and `set origin` for details of these
+ commands.
+?commands do
+?do
+ Syntax:
+       do for <iteration-spec> {
+            <commands>
+            <commands>
+       }
+ Execute a sequence of commands multiple times.  The commands must be enclosed
+ in curly brackets, and the opening "{" must be on the same line as the `do`
+ keyword.  This command cannot be used with old-style (un-bracketed) if/else
+ statements.  See `if`.  For examples of iteration specifiers, see `iteration`.
+ Example:
+       set multiplot layout 2,2
+       do for [name in "A B C D"] {
+           filename = name . ".dat"
+           set title sprintf("Condition %s",name)
+           plot filename title name
+       }
+       unset multiplot
+?commands evaluate
+?evaluate
+ The `evaluate` command executes the commands given as an argument string.
+ Newline characters are not allowed within the string.
+
+ Syntax:
+       eval <string expression>
+
+ This is especially useful for a repetition of similar commands.
+
+ Example:
+       set_label(x, y, text) \
+         = sprintf("set label '%s' at %f, %f point pt 5", text, x, y)
+       eval set_label(1., 1., 'one/one')
+       eval set_label(2., 1., 'two/one')
+       eval set_label(1., 2., 'one/two')
+
+ Please see `substitution macros` for another way to execute commands
+ from a string.
+?commands exit
+?exit
+ The commands `exit` and `quit`, as well as the END-OF-FILE character (usually
+ Ctrl-D) terminate input from the current input stream: terminal session, pipe,
+ and file input (pipe).
+
+ If input streams are nested (inherited `load` scripts), then reading will
+ continue in the parent stream. When the top level stream is closed, the
+ program itself will exit.
+
+ The command `exit gnuplot` will immediately and unconditionally cause gnuplot
+ to exit even if the input stream is multiply nested.  In this case any open
+ output files may not be completed cleanly. Example of use:
+
+       bind "ctrl-x" "unset output; exit gnuplot"
+
+ See help for `batch/interactive` for more details.
+?commands fit
+?fit
+?least-squares
+?Marquardt
+ The `fit` command can fit a user-supplied expression to a set of data points
+ (x,z) or (x,y,z), using an implementation of the nonlinear least-squares
+ (NLLS) Marquardt-Levenberg algorithm.  Any user-defined variable occurring in
+ the expression may serve as a fit parameter, but the return type of the
+ expression must be real.
+
+ Syntax:
+       fit {<ranges>} <expression>
+           '<datafile>' {datafile-modifiers}
+           via '<parameter file>' | <var1>{,<var2>,...}
+
+ Ranges may be specified to temporarily limit the data which is to be fitted;
+ any out-of-range data points are ignored. The syntax is
+       [{dummy_variable=}{<min>}{:<max>}],
+ analogous to `plot`; see `plot ranges`.
+
+ <expression> is any valid `gnuplot` expression, although it is usual to use a
+ previously user-defined function of the form f(x) or f(x,y).
+
+ <datafile> is treated as in the `plot` command.  All the `plot datafile`
+ modifiers (`using`, `every`,...) except `smooth` and the deprecated `thru`
+ are applicable to `fit`. See `plot datafile`.
+
+ The default data formats for fitting functions with a single
+ independent variable, z=f(x), are z or x:z.  That is, if there is
+ only a single column then it is the dependent variable and the line
+ numbers is the independent variable.  If there are two columns, the
+ first is the independent variable and the second is the dependent
+ variable.
+
+ Those formats can be changed with the datafile `using` qualifier, for
+ example to take the z value from a different column or to calculate
+ it from several columns.  A third `using` qualifier (a column number
+ or an expression), if present, is interpreted as the standard
+ deviation of the corresponding z value and is used to compute a
+ weight for the datum, 1/s**2.  Otherwise, all data points are
+ weighted equally, with a weight of one. Note that if you don't
+ specify a `using` option at all, no z standard deviations are read
+ from the datafile even if it does have a third column, so you'll
+ always get unit weights.
+
+ To fit a function with two independent variables, z=f(x,y), the required
+ format is `using` with four items, x:y:z:s.  The complete format must be
+ given---no default columns are assumed for a missing token.  Weights for
+ each data point are evaluated from 's' as above.  If error estimates are
+ not available, a constant value can be specified as a constant expression
+ (see `plot datafile using`), e.g., `using 1:2:3:(1)`.
+
+ The fit function may have up to five independent variables.  There
+ must be two more `using` qualifiers than there are independent
+ variables, unless there is only one variable.  The allowed formats,
+ and the default dummy variable names, are as follows:
+
+       z
+       x:z
+       x:z:s
+       x:y:z:s
+       x:y:t:z:s
+       x:y:t:u:z:s
+       x:y:t:u:v:z:s
+
+ The dummy variable names may be changed with ranges as noted above.
+ The first range corresponds to the first `using` spec, etc.  A range
+ may also be given for z (the dependent variable), but that name
+ cannot be changed.
+
+ Multiple datasets may be simultaneously fit with functions of one
+ independent variable by making y a 'pseudo-variable', e.g., the dataline
+ number, and fitting as two independent variables.  See `fit multi-branch`.
+
+ The `via` qualifier specifies which parameters are to be adjusted, either
+ directly, or by referencing a parameter file.
+
+ Examples:
+       f(x) = a*x**2 + b*x + c
+       g(x,y) = a*x**2 + b*y**2 + c*x*y
+       FIT_LIMIT = 1e-6
+       fit f(x) 'measured.dat' via 'start.par'
+       fit f(x) 'measured.dat' using 3:($7-5) via 'start.par'
+       fit f(x) './data/trash.dat' using 1:2:3 via a, b, c
+       fit g(x,y) 'surface.dat' using 1:2:3:(1) via a, b, c
+       fit a0 + a1*x/(1 + a2*x/(1 + a3*x)) 'measured.dat' via a0,a1,a2,a3
+       fit a*x + b*y 'surface.dat' using 1:2:3:(1) via a,b
+       fit [*:*][yaks=*:*] a*x+b*yaks 'surface.dat' u 1:2:3:(1) via a,b
+       fit a*x + b*y + c*t 'foo.dat' using 1:2:3:4:(1) via a,b,c
+       h(x,y,t,u,v) = a*x + b*y + c*t + d*u + e*v
+       fit h(x,y,t,u,v) 'foo.dat' using 1:2:3:4:5:6:(1) via a,b,c,d,e
+
+ After each iteration step, detailed information about the current state
+ of the fit is written to the display.  The same information about the
+ initial and final states is written to a log file, "fit.log".  This file
+ is always appended to, so as to not lose any previous fit history;  it
+ should be deleted or renamed as desired. By using the command
+ `set fit logfile`, the name of the log file can be changed.
+
+ If gnuplot was built with this option, and you activated it using `set fit
+ errorvariables`, the error for each fitted parameter will be stored in
+ a variable named like the parameter, but with "_err" appended.  Thus the
+ errors can be used as input for further computations.
+
+ The fit may be interrupted by pressing Ctrl-C.
+ After the current iteration completes, you have the option to
+ (1) stop the fit and accept the current parameter values,
+ (2) continue the fit, (3) execute a `gnuplot` command as specified by the
+ environment variable FIT_SCRIPT.  The default for FIT_SCRIPT is `replot`,
+ so if you had previously plotted both the data and the fitting function in
+ one graph, you can display the current state of the fit.
+
+ Once `fit` has finished, the `update` command may be used to store final
+ values in a file for subsequent use as a parameter file.   See `update`
+ for details.
+?commands fit parameters
+?fit parameters
+?commands fit adjustable_parameters
+?fit adjustable_parameters
+?fit_parameters
+ There are two ways that `via` can specify the parameters to be adjusted,
+ either directly on the command line or indirectly, by referencing a
+ parameter file.  The two use different means to set initial values.
+
+ Adjustable parameters can be specified by a comma-separated list of variable
+ names after the `via` keyword.  Any variable that is not already defined
+ is created with an initial value of 1.0.  However, the fit is more likely
+ to converge rapidly if the variables have been previously declared with more
+ appropriate starting values.
+
+ In a parameter file, each parameter to be varied and a corresponding initial
+ value are specified, one per line, in the form
+       varname = value
+
+ Comments, marked by '#', and blank lines are permissible.  The
+ special form
+       varname = value       # FIXED
+
+ means that the variable is treated as a 'fixed parameter', initialized by the
+ parameter file, but not adjusted by `fit`.  For clarity, it may be useful to
+ designate variables as fixed parameters so that their values are reported by
+ `fit`.  The keyword `# FIXED` has to appear in exactly this form.
+
+?commands fit beginners_guide
+?fit beginners_guide
+?fit guide
+?fitting
+ `fit` is used to find a set of parameters that 'best' fits your data to your
+ user-defined function.  The fit is judged on the basis of the sum of the
+ squared differences or 'residuals' (SSR) between the input data points and
+ the function values, evaluated at the same places.  This quantity is often
+ called 'chisquare' (i.e., the Greek letter chi, to the power of 2).  The
+ algorithm attempts to minimize SSR, or more precisely, WSSR, as the residuals
+ are 'weighted' by the input data errors (or 1.0) before being squared;
+ see `fit error_estimates` for details.
+
+ That's why it is called 'least-squares fitting'.  Let's look at an example
+ to see what is meant by 'non-linear', but first we had better go over some
+ terms.  Here it is convenient to use z as the dependent variable for
+ user-defined functions of either one independent variable, z=f(x), or two
+ independent variables, z=f(x,y).  A parameter is a user-defined variable
+ that `fit` will adjust, i.e., an unknown quantity in the function
+ declaration.  Linearity/non-linearity refers to the relationship of the
+ dependent variable, z, to the parameters which `fit` is adjusting, not of
+ z to the independent variables, x and/or y.  (To be technical, the
+ second {and higher} derivatives of the fitting function with respect to
+ the parameters are zero for a linear least-squares problem).
+
+ For linear least-squares (LLS), the user-defined function will be a sum of
+ simple functions, not involving any parameters, each multiplied by one
+ parameter.  NLLS handles more complicated functions in which parameters can
+ be used in a large number of ways.  An example that illustrates the
+ difference between linear and nonlinear least-squares is the Fourier series.
+ One member may be written as
+      z=a*sin(c*x) + b*cos(c*x).
+ If a and b are the unknown parameters and c is constant, then estimating
+ values of the parameters is a linear least-squares problem.  However, if
+ c is an unknown parameter, the problem is nonlinear.
+
+ In the linear case, parameter values can be determined by comparatively
+ simple linear algebra, in one direct step.  However LLS is a special case
+ which is also solved along with more general NLLS problems by the iterative
+ procedure that `gnuplot` uses.  `fit` attempts to find the minimum by doing
+ a search.  Each step (iteration) calculates WSSR with a new set of parameter
+ values.  The Marquardt-Levenberg algorithm selects the parameter values for
+ the next iteration.  The process continues until a preset criterion is met,
+ either (1) the fit has "converged" (the relative change in WSSR is less than
+ FIT_LIMIT), or (2) it reaches a preset iteration count limit, FIT_MAXITER
+ (see `fit control variables`).  The fit may also be interrupted
+ and subsequently halted from the keyboard (see `fit`).  The user variable
+ FIT_CONVERGED contains 1 if the previous fit command terminated due to
+ convergence; it contains 0 if the previous fit terminated for any other
+ reason.
+
+ Often the function to be fitted will be based on a model (or theory) that
+ attempts to describe or predict the behaviour of the data.  Then `fit` can
+ be used to find values for the free parameters of the model, to determine
+ how well the data fits the model, and to estimate an error range for each
+ parameter.  See `fit error_estimates`.
+
+ Alternatively, in curve-fitting, functions are selected independent of
+ a model (on the basis of experience as to which are likely to describe
+ the trend of the data with the desired resolution and a minimum number
+ of parameters*functions.)  The `fit` solution then provides an analytic
+ representation of the curve.
+
+ However, if all you really want is a smooth curve through your data points,
+ the `smooth` option to `plot` may be what you've been looking for rather
+ than `fit`.
+?commands fit error_estimates
+?fit error_estimates
+?fit errors
+ In `fit`, the term "error" is used in two different contexts, data error
+ estimates and parameter error estimates.
+
+ Data error estimates are used to calculate the relative weight of each data
+ point when determining the weighted sum of squared residuals, WSSR or
+ chisquare.  They can affect the parameter estimates, since they determine
+ how much influence the deviation of each data point from the fitted function
+ has on the final values.  Some of the `fit` output information, including
+ the parameter error estimates, is more meaningful if accurate data error
+ estimates have been provided.
+
+ The 'statistical overview' describes some of the `fit` output and gives some
+ background for the 'practical guidelines'.
+?commands fit error statistical_overview
+?fit error statistical_overview
+?statistical_overview
+ The theory of non-linear least-squares (NLLS) is generally described in terms
+ of a normal distribution of errors, that is, the input data is assumed to be
+ a sample from a population having a given mean and a Gaussian (normal)
+ distribution about the mean with a given standard deviation.  For a sample of
+ sufficiently large size, and knowing the population standard deviation, one
+ can use the statistics of the chisquare distribution to describe a "goodness
+ of fit" by looking at the variable often called "chisquare".  Here, it is
+ sufficient to say that a reduced chisquare (chisquare/degrees of freedom,
+ where degrees of freedom is the number of datapoints less the number of
+ parameters being fitted) of 1.0 is an indication that the weighted sum of
+ squared deviations between the fitted function and the data points is the
+ same as that expected for a random sample from a population characterized by
+ the function with the current value of the parameters and the given standard
+ deviations.
+
+ If the standard deviation for the population is not constant, as in counting
+ statistics where variance = counts, then each point should be individually
+ weighted when comparing the observed sum of deviations and the expected sum
+ of deviations.
+
+ At the conclusion `fit` reports 'stdfit', the standard deviation of the fit,
+ which is the rms of the residuals, and the variance of the residuals, also
+ called 'reduced chisquare' when the data points are weighted.  The number of
+ degrees of freedom (the number of data points minus the number of fitted
+ parameters) is used in these estimates because the parameters used in
+ calculating the residuals of the datapoints were obtained from the same data.
+ These values are exported to the variables
+       FIT_NDF = Number of degrees of freedom
+       FIT_WSSR = Weighted sum-of-squares residual
+       FIT_STDFIT = sqrt(WSSR/NDF)
+
+ To estimate confidence levels for the parameters, one can use the minimum
+ chisquare obtained from the fit and chisquare statistics to determine the
+ value of chisquare corresponding to the desired confidence level, but
+ considerably more calculation is required to determine the combinations of
+ parameters which produce such values.
+
+ Rather than determine confidence intervals, `fit` reports parameter error
+ estimates which are readily obtained from the variance-covariance matrix
+ after the final iteration.  By convention, these estimates are called
+ "standard errors" or "asymptotic standard errors", since they are calculated
+ in the same way as the standard errors (standard deviation of each parameter)
+ of a linear least-squares problem, even though the statistical conditions for
+ designating the quantity calculated to be a standard deviation are not
+ generally valid for the NLLS problem.  The asymptotic standard errors are
+ generally over-optimistic and should not be used for determining confidence
+ levels, but are useful for qualitative purposes.
+
+ The final solution also produces a correlation matrix indicating correlation of
+ parameters in the region of the solution; The main diagonal elements,
+ autocorrelation, are always 1; if all parameters were independent, the
+ off-diagonal elements would be nearly 0.  Two variables which completely
+ compensate each other would have an off-diagonal element of unit magnitude,
+ with a sign depending on whether the relation is proportional or inversely
+ proportional.  The smaller the magnitudes of the off-diagonal elements, the
+ closer the estimates of the standard deviation of each parameter would be to
+ the asymptotic standard error.
+?commands fit error practical_guidelines
+?fit error practical_guidelines
+?practical_guidelines
+?guidelines
+ If you have a basis for assigning weights to each data point, doing so lets
+ you make use of additional knowledge about your measurements, e.g., take into
+ account that some points may be more reliable than others.  That may affect
+ the final values of the parameters.
+
+ Weighting the data provides a basis for interpreting the additional `fit`
+ output after the last iteration.  Even if you weight each point equally,
+ estimating an average standard deviation rather than using a weight of 1
+ makes WSSR a dimensionless variable, as chisquare is by definition.
+
+ Each fit iteration will display information which can be used to evaluate
+ the progress of the fit.  (An '*' indicates that it did not find a smaller
+ WSSR and is trying again.)  The 'sum of squares of residuals', also called
+ 'chisquare', is the WSSR between the data and your fitted function; `fit`
+ has minimized that.  At this stage, with weighted data, chisquare is expected
+ to approach the number of degrees of freedom (data points minus parameters).
+ The WSSR can be used to calculate the reduced chisquare (WSSR/ndf) or stdfit,
+ the standard deviation of the fit, sqrt(WSSR/ndf).  Both of these are
+ reported for the final WSSR.
+
+ If the data are unweighted, stdfit is the rms value of the deviation of the
+ data from the fitted function, in user units.
+
+ If you supplied valid data errors, the number of data points is large enough,
+ and the model is correct, the reduced chisquare should be about unity.  (For
+ details, look up the 'chi-squared distribution' in your favourite statistics
+ reference.)  If so, there are additional tests, beyond the scope of this
+ overview, for determining how well the model fits the data.
+
+ A reduced chisquare much larger than 1.0 may be due to incorrect data error
+ estimates, data errors not normally distributed, systematic measurement
+ errors, 'outliers', or an incorrect model function.  A plot of the residuals,
+ e.g., `plot 'datafile' using 1:($2-f($1))`, may help to show any systematic
+ trends.  Plotting both the data points and the function may help to suggest
+ another model.
+
+ Similarly, a reduced chisquare less than 1.0 indicates WSSR is less than that
+ expected for a random sample from the function with normally distributed
+ errors.  The data error estimates may be too large, the statistical
+ assumptions may not be justified, or the model function may be too general,
+ fitting fluctuations in a particular sample in addition to the underlying
+ trends.  In the latter case, a simpler function may be more appropriate.
+
+ You'll have to get used to both `fit` and the kind of problems you apply it
+ to before you can relate the standard errors to some more practical estimates
+ of parameter uncertainties or evaluate the significance of the correlation
+ matrix.
+
+ Note that `fit`, in common with most NLLS implementations, minimizes the
+ weighted sum of squared distances (y-f(x))**2.  It does not provide any means
+ to account for "errors" in the values of x, only in y.  Also, any "outliers"
+ (data points outside the normal distribution of the model) will have an
+ exaggerated effect on the solution.
+?commands fit control
+?fit control
+ There are a number of `gnuplot` variables that can be defined to affect
+ `fit`.  Those which can be defined once `gnuplot` is running are listed
+ under 'control_variables' while those defined before starting `gnuplot`
+ are listed under 'environment_variables'.
+?commands fit control variables
+?fit control variables
+ The default epsilon limit (1e-5) may be changed by declaring a value for
+       FIT_LIMIT
+ When the sum of squared residuals changes between two iteration steps by
+ a factor less than this number (epsilon), the fit is considered to have
+ 'converged'.
+
+ The maximum number of iterations may be limited by declaring a value for
+       FIT_MAXITER
+ A value of 0 (or not defining it at all)  means that there is no limit.
+
+ If you need even more control about the algorithm, and know the
+ Marquardt-Levenberg algorithm well, there are some more variables to
+ influence it. The startup value of `lambda` is normally calculated
+ automatically from the ML-matrix, but if you want to, you may provide
+ your own one with
+       FIT_START_LAMBDA
+ Specifying FIT_START_LAMBDA as zero or less will re-enable the automatic
+ selection. The variable
+       FIT_LAMBDA_FACTOR
+ gives the factor by which `lambda` is increased or decreased whenever
+ the chi-squared target function increased or decreased significantly.
+ Setting FIT_LAMBDA_FACTOR to zero re-enables the default factor of
+ 10.0.
+
+ Other variables with the FIT_ prefix may be added to `fit`, so it is safer
+ not to use that prefix for user-defined variables.
+
+ The variables FIT_SKIP and FIT_INDEX were used by earlier releases of
+ `gnuplot` with a 'fit' patch called `gnufit` and are no longer available.
+ The datafile `every` modifier provides the functionality of FIT_SKIP.
+ FIT_INDEX was used for multi-branch fitting, but multi-branch fitting of
+ one independent variable is now done as a pseudo-3D fit in which the
+ second independent variable and `using` are used to specify the branch.
+ See `fit multi-branch`.
+?commands fit control environment
+?fit control environment
+ The environment variables must be defined before `gnuplot` is executed; how
+ to do so depends on your operating system.
+
+       FIT_LOG
+ changes the name (and/or path) of the file to which the fit log will be
+ written from the default of "fit.log" in the working directory. The default
+ value can be overwritten using the command `set fit logfile`.
+
+       FIT_SCRIPT
+ specifies a command that may be executed after an user interrupt. The default
+ is `replot`, but a `plot` or `load` command may be useful to display a plot
+ customized to highlight the progress of the fit.
+?commands fit multi-branch
+?fit multi-branch
+?multi-branch
+?branch
+ In multi-branch fitting, multiple data sets can be simultaneously fit with
+ functions of one independent variable having common parameters by minimizing
+ the total WSSR.  The function and parameters (branch) for each data set are
+ selected by using a 'pseudo-variable', e.g., either the dataline number (a
+ 'column' index of -1) or the datafile index (-2), as the second independent
+ variable.
+
+ Example:  Given two exponential decays of the form, z=f(x), each describing
+ a different data set but having a common decay time, estimate the values of
+ the parameters.  If the datafile has the format x:z:s, then
+      f(x,y) = (y==0) ? a*exp(-x/tau) : b*exp(-x/tau)
+      fit f(x,y) 'datafile' using  1:-2:2:3  via a, b, tau
+
+ For a more complicated example, see the file "hexa.fnc" used by the
+ "fit.dem" demo.
+
+ Appropriate weighting may be required since unit weights may cause one
+ branch to predominate if there is a difference in the scale of the dependent
+ variable.  Fitting each branch separately, using the multi-branch solution
+ as initial values, may give an indication as to the relative effect of each
+ branch on the joint solution.
+?commands fit starting_values
+?fit starting_values
+?starting_values
+ Nonlinear fitting is not guaranteed to converge to the global optimum (the
+ solution with the smallest sum of squared residuals, SSR), and can get stuck
+ at a local minimum.  The routine has no way to determine that;  it is up to
+ you to judge whether this has happened.
+
+ `fit` may, and often will get "lost" if started far from a solution, where
+ SSR is large and changing slowly as the parameters are varied, or it may
+ reach a numerically unstable region (e.g., too large a number causing a
+ floating point overflow) which results in an "undefined value" message
+ or `gnuplot` halting.
+
+ To improve the chances of finding the global optimum, you should set the
+ starting values at least roughly in the vicinity of the solution, e.g.,
+ within an order of magnitude, if possible.  The closer your starting values
+ are to the solution, the less chance of stopping at another minimum.  One way
+ to find starting values is to plot data and the fitting function on the same
+ graph and change parameter values and `replot` until reasonable similarity
+ is reached.  The same plot is also useful to check whether the fit stopped at
+ a minimum with a poor fit.
+
+ Of course, a reasonably good fit is not proof there is not a "better" fit (in
+ either a statistical sense, characterized by an improved goodness-of-fit
+ criterion, or a physical sense, with a solution more consistent with the
+ model.)  Depending on the problem, it may be desirable to `fit` with various
+ sets of starting values, covering a reasonable range for each parameter.
+?commands fit tips
+?fit tips
+?tips
+ Here are some tips to keep in mind to get the most out of `fit`.  They're not
+ very organized, so you'll have to read them several times until their essence
+ has sunk in.
+
+ The two forms of the `via` argument to `fit` serve two largely distinct
+ purposes.  The `via "file"` form is best used for (possibly unattended) batch
+ operation, where you just supply the startup values in a file and can later
+ use `update` to copy the results back into another (or the same) parameter
+ file.
+
+ The `via var1, var2, ...` form is best used interactively, where the command
+ history mechanism may be used to edit the list of parameters to be fitted or
+ to supply new startup values for the next try.  This is particularly useful
+ for hard problems, where a direct fit to all parameters at once won't work
+ without good starting values.  To find such, you can iterate several times,
+ fitting only some of the parameters, until the values are close enough to the
+ goal that the final fit to all parameters at once will work.
+
+ Make sure that there is no mutual dependency among parameters of the function
+ you are fitting.  For example, don't try to fit a*exp(x+b), because
+ a*exp(x+b)=a*exp(b)*exp(x).  Instead, fit either a*exp(x) or exp(x+b).
+
+ A technical issue:  the parameters must not be too different in magnitude.
+ The larger the ratio of the largest and the smallest absolute parameter
+ values, the slower the fit will converge.  If the ratio is close to or above
+ the inverse of the machine floating point precision, it may take next to
+ forever to converge, or refuse to converge at all.  You will have to adapt
+ your function to avoid this, e.g., replace 'parameter' by '1e9*parameter' in
+ the function definition, and divide the starting value by 1e9.
+
+ If you can write your function as a linear combination of simple functions
+ weighted by the parameters to be fitted, by all means do so.  That helps a
+ lot, because the problem is no longer nonlinear and should converge with only
+ a small number of iterations, perhaps just one.
+
+ Some prescriptions for analysing data, given in practical experimentation
+ courses, may have you first fit some functions to your data, perhaps in a
+ multi-step process of accounting for several aspects of the underlying
+ theory one by one, and then extract the information you really wanted from
+ the fitting parameters of those functions.  With `fit`, this may often be
+ done in one step by writing the model function directly in terms of the
+ desired parameters.  Transforming data can also quite often be avoided,
+ though sometimes at the cost of a more difficult fit problem.  If you think
+ this contradicts the previous paragraph about simplifying the fit function,
+ you are correct.
+
+ A "singular matrix" message indicates that this implementation of the
+ Marquardt-Levenberg algorithm can't calculate parameter values for the next
+ iteration.  Try different starting values, writing the function in another
+ form, or a simpler function.
+
+ Finally, a nice quote from the manual of another fitting package (fudgit),
+ that kind of summarizes all these issues:  "Nonlinear fitting is an art!"
+?commands help
+?help
+ The `help` command displays built-in help. To specify information on a
+ particular topic use the syntax:
+
+       help {<topic>}
+
+ If <topic> is not specified, a short message is printed about `gnuplot`.
+ After help for the requested topic is given, a menu of subtopics is given;
+ help for a subtopic may be requested by typing its name, extending the help
+ request.  After that subtopic has been printed, the request may be extended
+ again or you may go back one level to the previous topic.  Eventually, the
+ `gnuplot` command line will return.
+
+ If a question mark (?) is given as the topic, the list of topics currently
+ available is printed on the screen.
+?commands history
+?history
+ `history` command lists or saves previous entries in the history of the
+ command line editing, or executes an entry.
+
+ Here you find 'usage by examples':
+
+       history               # show the complete history
+       history 5             # show last 5 entries in the history
+       history quiet 5       # show last 5 entries without entry numbers
+       history "hist.gp"     # write the complete history to file hist.gp
+       history "hist.gp" append # append the complete history to file hist.gp
+       history 10 "hist.gp"  # write last 10 commands to file hist.gp
+       history 10 "|head -5 >>diary.gp" # write 5 history commands using pipe
+       history ?load         # show all history entries starting with "load"
+       history ?"set c"      # like above, several words enclosed in quotes
+       hi !reread            # execute last entry starting with "reread"
+       hist !"set xr"        # like above, several words enclosed in quotes
+       hi !hi                # guess yourself :-))
+
+ On systems which support a popen function (Unix), the output of history can be
+ piped through an external program by starting the file name with a '|', as one
+ of the above examples demonstrates.
+?commands if
+?if
+ New syntax:
+       if (<condition>) { <command>; <command>
+              <commands>
+              <commands>
+       } else {
+              <commands>
+       }
+ Old syntax:
+       if (<condition>) <command-line> [; else if (<condition>) ...; else ...]
+
+ This version of gnuplot supports block-structured if/else statements. If the
+ keyword `if` or `else` is immediately followed by an opening "{", then 
+ conditional execution applies to all statements, possibly on multiple input
+ lines, until a matching "}" terminates the block.  If commands may be nested.
+
+ The old single-line if/else syntax is still supported, but can not be
+ mixed with the new block-structured syntax.  See `if-old`.
+?if if-old
+?if-old
+ Through gnuplot version 4.4, the scope of the if/else commands was limited to
+ a single input line. This has been replaced by allowing a multi-line clause to
+ be enclosed in curly brackets. The old syntax is still honored by itself but
+ cannot be used inside a bracketed clause.
+
+ If no opening "{" follows the `if` keyword, the command(s) in <command-line>
+ will be executed if <condition> is true (non-zero) or skipped if <condition> is
+ false (zero). Either case will consume commands on the input line until the
+ end of the line or an occurrence of `else`.  Note that use of `;` to allow
+ multiple commands on the same line will _not_ end the conditionalized commands.
+
+ Examples:
+       pi=3
+       if (pi!=acos(-1)) print "?Fixing pi!"; pi=acos(-1); print pi
+ will display:
+       ?Fixing pi!
+       3.14159265358979
+ but
+       if (1==2) print "Never see this"; print "Or this either"
+ will not display anything.
+
+ else:
+       v=0
+       v=v+1; if (v%2) print "2" ; else if (v%3) print "3"; else print "fred"
+ (repeat the last line repeatedly!)
+
+ See `reread` for an example of using if and reread together to perform a loop.
+?iteration
+?iterate
+ The `plot`, `splot`, `set` and `unset` commands may optionally contain an
+ iteration clause.  This has the effect of executing the basic command 
+ multiple times, each time re-evaluating any expressions that make use of the
+ iteration control variable.  Iteration of arbitrary command sequences can be
+ requested using the `do` command.
+ Two forms of iteration clause are currently supported:
+
+       for [intvar = start:end{:increment}]
+       for [stringvar in "A B C D"]
+
+ Examples:
+
+       plot for [filename in "A.dat B.dat C.dat"] filename using 1:2 with lines
+       plot for [basename in "A B C"] basename.".dat" using 1:2 with lines
+       set for [i = 1:10] style line i lc rgb "blue"
+       unset for [tag = 100:200] label tag
+
+ Nested iteration is supported:
+
+       set for [i=1:9] for [j=1:9] label i*10+j sprintf("%d",i*10+j) at i,j
+
+ See additional documentation for `plot iteration`, `do`.
+
+?commands load
+?load
+ The `load` command executes each line of the specified input file as if it
+ had been typed in interactively.  Files created by the `save` command can
+ later be `load`ed.  Any text file containing valid commands can be created
+ and then executed by the `load` command.  Files being `load`ed may themselves
+ contain `load` or `call` commands.  See `comments` for information about
+ comments in commands.  To `load` with arguments, see `call`.
+
+ Syntax:
+       load "<input-file>"
+
+ The name of the input file must be enclosed in quotes.
+
+ The special filename "-" may be used to `load` commands from standard input.
+ This allows a `gnuplot` command file to accept some commands from standard
+ input.  Please see help for `batch/interactive` for more details.
+
+ On some systems which support a popen function (Unix), the load file can be
+ read from a pipe by starting the file name with a '<'.
+
+ Examples:
+       load 'work.gnu'
+       load "func.dat"
+       load "< loadfile_generator.sh"
+
+ The `load` command is performed implicitly on any file names given as
+ arguments to `gnuplot`.  These are loaded in the order specified, and
+ then `gnuplot` exits.
+?commands lower
+?lower
+ Syntax:
+       lower {plot_window_nb}
+
+ The `lower` command lowers (opposite to `raise`) plot window(s) associated
+ with the interactive terminal of your gnuplot session, i.e. `pm`, `win`, `wxt`
+ or `x11`. It puts the plot window to bottom in the z-order windows stack of
+ the window manager of your desktop.
+
+ As `x11` and `wxt` support multiple plot windows, then by default they lower
+ these windows in descending order of most recently created on top to the least
+ recently created on bottom. If a plot number is supplied as an optional
+ parameter, only the associated plot window will be lowered if it exists.
+
+ The optional parameter is ignored for single plot-window terminals, i.e. `pm`
+ and `win`.
+?commands pause
+?pause
+?pause mouse
+ The `pause` command displays any text associated with the command and then
+ waits a specified amount of time or until the carriage return is pressed.
+ `pause` is especially useful in conjunction with `load` files.
+
+ Syntax:
+       pause <time> {"<string>"}
+       pause mouse {<endcondition>}{, <endcondition>} {"<string>"}
+
+ <time> may be any constant or expression.  Choosing -1 will wait until a
+ carriage return is hit, zero (0) won't pause at all, and a positive number
+ will wait the specified number of seconds.  The time is rounded to an integer
+ number of seconds if subsecond time resolution is not supported by the given
+ platform.  `pause 0` is synonymous with `print`.
+
+ If the current terminal supports `mousing`, then `pause mouse` will terminate
+ on either a mouse click or on ctrl-C.  For all other terminals, or if mousing
+ is not active, `pause mouse` is equivalent to `pause -1`.
+
+ If one or more end conditions are given after `pause mouse`, then any one of
+ the conditions will terminate the pause. The possible end conditions are
+ `keypress`, `button1`, `button2`, `button3`, `close`, and `any`.
+ If the pause terminates on a keypress, then the ascii value of the key pressed
+ is returned in MOUSE_KEY.  The character itself is returned as a one character
+ string in MOUSE_CHAR. Hotkeys (bind command) are disabled if keypress is one of
+ the end conditions.  Zooming is disabled if button3 is one of the end 
+ conditions. 
+
+ In all cases the coordinates of the mouse are returned in variables MOUSE_X,
+ MOUSE_Y, MOUSE_X2, MOUSE_Y2.  See `mouse variables`.
+
+ Note: Since `pause` communicates with the operating system rather than the
+ graphics, it may behave differently with different device drivers (depending
+ upon how text and graphics are mixed).
+
+ Examples:
+       pause -1    # Wait until a carriage return is hit
+       pause 3     # Wait three seconds
+       pause -1  "Hit return to continue"
+       pause 10  "Isn't this pretty?  It's a cubic spline."
+       pause mouse "Click any mouse button on selected data point"
+       pause mouse keypress "Type a letter from A-F in the active window"
+       pause mouse button1,keypress
+       pause mouse any "Any key or button will terminate"
+
+ The variant "pause mouse key" will resume after any keypress in the active
+ plot window. If you want to wait for a particular key to be pressed, you can
+ use a reread loop such as:
+
+       print "I will resume after you hit the Tab key in the plot window"
+       load "wait_for_tab"
+
+ File "wait_for_tab" contains the lines
+
+       pause mouse key
+       if (MOUSE_KEY != 9) reread
+
+?commands plot
+?plot
+ `plot` is the primary command for drawing plots with `gnuplot`.  It creates
+ plots of functions and data in many, many ways.  `plot` is used to draw 2D
+ functions and data; `splot` draws 2D projections of 3D surfaces and data.
+ `plot` and `splot` offer many features in common; see `splot` for differences.
+ Note specifically that although the `binary <binary list>` variation does
+ work for both `plot` and `splot`, there are small differences between them.
+
+ Syntax:
+       plot {<ranges>}
+            {<iteration>}
+            {<function> | {"<datafile>" {datafile-modifiers}}}
+            {axes <axes>} {<title-spec>} {with <style>}
+            {, {definitions{,}} <function> ...}
+
+ where either a <function> or the name of a data file enclosed in quotes is
+ supplied.  A function is a mathematical expression or a pair of mathematical
+ expressions in parametric mode.  Functions may be builtin, user-defined, or
+ provided in the plot command itself.  Multiple datafiles and/or functions may
+ be plotted in a single command, separated by commas.  See `data`, `functions`.
+
+ Examples:
+       plot sin(x)
+       plot sin(x), cos(x)
+       plot f(x) = sin(x*a), a = .2, f(x), a = .4, f(x)
+       plot "datafile.1" with lines, "datafile.2" with points
+       plot [t=1:10] [-pi:pi*2] tan(t), \
+            "data.1" using (tan($2)):($3/$4) smooth csplines \
+                     axes x1y2 notitle with lines 5
+       plot for [datafile in "spinach.dat broccoli.dat"] datafile
+
+ See also `show plot`.
+?commands plot axes
+?plot axes
+?axes
+ There are four possible sets of axes available; the keyword <axes> is used to
+ select the axes for which a particular line should be scaled.  `x1y1` refers
+ to the axes on the bottom and left; `x2y2` to those on the top and right;
+ `x1y2` to those on the bottom and right; and `x2y1` to those on the top and
+ left.  Ranges specified on the `plot` command apply only to the first set of
+ axes (bottom left).
+?binary
+?data binary
+?datafile binary
+?plot data binary
+ BINARY DATA FILES:
+
+ Some earlier versions of `gnuplot` automatically detected binary data files.
+ It is now necessary to provide the keyword `binary` after the filename.
+ Adequate details of the file format must be given on the command line or
+ extracted from the file itself for a supported binary `filetype`.
+ In particular, there are two structures for binary files,  binary matrix
+ format and binary general format.
+
+ The `binary matrix` format contains a two dimensional array of 32 bit IEEE
+ float values with an additional column and row of coordinate values.  As
+ with ASCII matrix, in the `using` list, enumeration of the coordinate row
+ constitutes column 1, enumeration of the coordinate column constitutes
+ column 2, and the array of values constitutes column 3.
+
+ The `binary general` format contains an arbitrary number of columns for which
+ information must be specified at the command line.  For example, `array`,
+ `record`, `format` and `using` can indicate the size, format and dimension
+ of data.  There are a variety of useful commands for skipping file headers
+ and changing endianess.  There are a set of commands for positioning and
+ translating data since often coordinates are not part of the file when
+ uniform sampling is inherent in the data.  Different from matrix binary or
+ ASCII, general binary does not treat the generated columns as 1, 2 or 3 in
+ the `using` list.  Rather, column 1 begins with column 1 of the file, or as
+ specified in the `format` list.
+
+ There are global default settings for the various binary options which may
+ be set using the same syntax as the options when used as part of the `(s)plot
+ <filename> binary ...` command.  This syntax is `set datafile binary ...`.
+ The general rule is that common command-line specified parameters override
+ file-extracted parameters which override default parameters.
+
+ `Binary matrix` is the default binary format when no keywords specific to
+ `binary general` are given, i.e., `array`, `record`, `format`, `filetype`.
+
+ General binary data can be entered at the command line via the special file
+ name '-'.  However, this is intended for use through a pipe where programs
+ can exchange binary data, not for keyboards.  There is no "end of record"
+ character for binary data.  Gnuplot continues reading from a pipe until it
+ has read the number of points declared in the `array` qualifier.
+ See `binary matrix` or `binary general` for more details.
+
+ The `index` keyword is not supported, since the file format allows only one
+ surface per file.  The `every` and `using` filters are supported.  `using`
+ operates as if the data were read in the above triplet form.
+ Binary File Splot Demo.
+?commands plot binary general
+?commands splot binary general
+?plot binary general
+?splot binary general
+?datafile binary general
+?data binary general
+?binary general
+ General binary data in which format information is not necessarily part of
+ the file can be read by giving further details about the file format at the
+ command line.  Although the syntax is slightly arcane to the casual user,
+ general binary is particularly useful for application programs using gnuplot
+ and sending large amounts of data.
+
+ Syntax:
+       plot '<file_name>' {binary <binary list>} ...
+       splot '<file_name>' {binary <binary list>} ...
+
+ General binary format is activated by keywords in <binary list> pertaining
+ to information about file structure, i.e., `array`, `record`, `format` or
+ `filetype`.  Otherwise, matrix binary format is assumed.  (See `binary matrix`
+ for more details.)
+
+ There are some standard file types that may be read for which details about
+ the binary format may be extracted automatically.  (Type `show datafile
+ binary` at the command line for a list.)  Otherwise, details must be
+ specified at the command line or set in the defaults.  Keywords are described
+ below.
+
+ The keyword `filetype` in <binary list> controls the routine used to
+ read the file, i.e., the format of the data.  For a list of the supported
+ file types, type `show datafile binary filetypes`.  If no file type is
+ given, the rule is that traditional gnuplot binary is assumed for `splot`
+ if the `binary` keyword stands alone.  In all other circumstances, for
+ `plot` or when one of the <binary list> keywords appears, a raw binary
+ file is assumed whereby the keywords specify the binary format.
+
+ General binary data files fall into two basic classes, and some files may
+ be of both classes depending upon how they are treated.  There is that
+ class for which uniform sampling is assumed and point coordinates must be
+ generated.  This is the class for which full control via the <binary
+ list> keywords applies.  For this class, the settings precedence is that
+ command line parameters override in-file parameters, which override
+ default settings.  The other class is that set of files for which
+ coordinate information is contained within the file or there is possibly
+ a non-uniform sampling such as gnuplot binary.
+
+ Other than for the unique data files such as gnuplot binary, one should
+ think of binary data as conceptually the same as ASCII data.  Each point
+ has columns of information which are selected via the `<using list>`
+ associated with `using`.  When no `format` string is specified, gnuplot
+ will retrieve a number of binary variables equal to the largest column
+ given in the `<using list>`.  For example, `using 1:3` will result in
+ three columns being read, of which the second will be ignored.  There are
+ default using lists based upon the typical number of parameters associated
+ with a certain plot type.  For example, `with image` has a default of
+ `using 1`, while `with rgbimage` has a default of `using 1:2:3`.  Note
+ that the special characters for `using` representing point/line/index
+ generally should not be used for binary data.  There are keywords in
+ <binary list> that control this.
+?binary array
+ Describes the sampling array dimensions associated with the binary file.
+ The coordinates will be generated by gnuplot.  A number must be specified
+ for each dimension of the array.  For example, `array=(10,20)` means the
+ underlying sampling structure is two-dimensional with 10 points along the
+ first (x) dimension and 20 points along the second (y) dimension.
+ A negative number indicates that data should be read until the end of file.
+ If there is only one dimension, the parentheses may be omitted.
+ A colon can be used to separate the dimensions for multiple records.
+ For example, `array=25:35` indicates there are two one-dimensional records in
+ the file.
+       Note:  Gnuplot version 4.2 used the syntax array=128x128 rather than
+              array=(128,128). The older syntax is now deprecated, but may
+              still work if your copy of gnuplot was built to support
+              backwards compatibility.
+?binary record
+ This keyword serves the same function as `array`, having the same syntax.
+ However, `record` causes gnuplot to not generate coordinate information.
+ This is for the case where such information may be included in one of the
+ columns of the binary data file.
+?binary skip
+ This keyword allows you to skip sections of a binary file. For instance, if the
+ file contains a 1024 byte header before the start of the data region you would
+ probably want to use
+       plot '<file_name>' binary skip=1024 ...
+ If there are multiple records in the file, you may specify a leading offset for
+ each. For example, to skip 512 bytes before the 1st record and 256 bytes before
+ the second and third records
+       plot '<file_name> binary record=356:356:356 skip=512:256:256 ...
+?binary format
+ The default binary format is a float.  For more flexibility, the format can
+ include details about variable sizes.  For example, `format="%uchar%int%float"`
+ associates an unsigned character with the first using column, an int with the
+ second column and a float with the third column.  If the number of size
+ specifications is less than the greatest column number, the size is implicitly
+ taken to be similar to the last given variable size.
+
+ Furthermore, similar to the `using` specification, the format can include
+ discarded columns via the `*` character and have implicit repetition via a
+ numerical repeat-field.  For example, `format="%*2int%3float"` causes gnuplot
+ to discard two ints before reading three floats.  To list variable sizes, type
+ `show datafile binary datasizes`.  There are a group of names that are machine
+ dependent along with their sizes in bytes for the particular compilation.
+ There is also a group of names which attempt to be machine independent.
+?binary endian
+ Often the endianess of binary data in the file does not agree with the
+ endianess used by the platform on which gnuplot is running.  Several words can
+ direct gnuplot how to arrange bytes.  For example `endian=little` means treat
+ the binary file as having byte significance from least to greatest. The options
+ are
+
+               little:  least significant to greatest significance
+                  big:  greatest significance to least significance
+              default:  assume file endianess is the same as compiler
+          swap (swab):  Interchange the significance.  (If things
+                        don't look right, try this.)
+
+ Gnuplot can support "middle" ("pdp") endian if it is compiled with that option.
+?binary filetype
+?filetype
+ For some standard binary file formats gnuplot can extract all the necessary
+ information from the file in question.  As an example, "format=edf" will read
+ ESRF Header File format files.  For a list of the currently supported file
+ formats, type `show datafile binary filetypes`.
+
+ There is a special file type called `auto` for which gnuplot will check if the
+ binary file's extension is a quasi-standard extension for a supported format.
+
+ Command line keywords may be used to override settings extracted from the file.
+ The settings from the file override any defaults.  (See `set datafile binary`
+ for details.)
+?binary filetype avs
+?filetype avs
+?avs
+ `avs` is one of the automatically recognized binary file types for images.
+ AVS is an extremely simple format, suitable mostly for streaming between
+ applications. It consists of 2 longs (xwidth, ywidth) followed by a stream
+ of pixels, each with four bytes of information alpha/red/green/blue.
+?binary filetype edf
+?filetype edf
+?edf
+?filetype ehf
+?ehf
+ `edf` is one of the automatically recognized binary file types for images.
+ EDF stands for ESRF Data Format, and it supports both edf and ehf formats
+ (the latter means ESRF Header Format).  More information on specifications
+ can be found at
+
+   http://www.edfplus.info/specs
+?binary filetype png
+?binary filetype gif
+?binary filetype jpeg
+?filetype png
+?filetype gif
+?filetype jpeg
+ If gnuplot was configured to use the libgd library for png/gif/jpeg output, 
+ then it can also be used to read these same image types as binary files.
+ You can use an explicit command
+       plot 'file.png' binary filetype=png
+ Or the file type will be recognized automatically from the extension if you
+ have previously requested
+       set datafile binary filetype=auto
+?binary keywords
+ The following keywords apply only when generating coordinates from binary 
+ data files.  That is, the control mapping the individual elements of a binary
+ array, matrix, or image to specific x/y/z positions.
+?binary keywords scan
+ A great deal of confusion can arise concerning the relationship between how
+ gnuplot scans a binary file and the dimensions seen on the plot.  To lessen
+ the confusion, conceptually think of gnuplot _always_ scanning the binary file
+ point/line/plane or fast/medium/slow.  Then this keyword is used to tell
+ gnuplot how to map this scanning convention to the Cartesian convention shown
+ in plots, i.e., x/y/z.  The qualifier for scan is a two or three letter code
+ representing where point is assigned (first letter), line is assigned (second
+ letter), and plane is assigned (third letter).  For example, `scan=yx` means
+ the fastest, point-by-point, increment should be mapped along the Cartesian
+ y dimension and the middle, line-by-line, increment should be mapped along the
+ x dimension.
+
+ When the plotting mode is `plot`, the qualifier code can include the two
+ letters x and y.  For `splot`, it can include the three letters x, y and z.
+
+ There is nothing restricting the inherent mapping from point/line/plane to
+ apply only to Cartesian coordinates.  For this reason there are cylindrical
+ coordinate synonyms for the qualifier codes where t (theta), r and z are
+ analogous to the x, y and z of Cartesian coordinates.
+?binary keywords transpose
+ Shorthand notation for `scan=yx` or `scan=yxz`.
+?binary keywords dx
+?binary keywords dy
+?dx
+?dy
+ When gnuplot generates coordinates, it uses the spacing described by these
+ keywords.  For example `dx=10 dy=20` would mean space samples along the
+ x dimension by 10 and space samples along the y dimension by 20.  `dy` cannot
+ appear if `dx` does not appear.  Similarly, `dz` cannot appear if `dy` does not
+ appear.  If the underlying dimensions are greater than the keywords specified,
+ the spacing of the highest dimension given is extended to the other dimensions.
+ For example, if an image is being read from a file and only `dx=3.5` is given
+ gnuplot uses a delta x and delta y of 3.5.
+
+ The following keywords also apply only when generating coordinates.  However
+ they may also be used with matrix binary files.
+?binary keywords flipx
+ Sometimes the scanning directions in a binary datafile are not consistent with
+ that assumed by gnuplot.  These keywords can flip the scanning direction along
+ dimensions x, y, z.
+?binary keywords origin
+ When gnuplot generates coordinates based upon transposition and flip, it
+ attempts to always position the lower left point in the array at the origin,
+ i.e., the data lies in the first quadrant of a Cartesian system after transpose
+ and flip.
+
+ To position the array somewhere else on the graph, the `origin` keyword directs
+ gnuplot to position the lower left point of the array at a point specified by a
+ tuple.  The tuple should be a double for `plot` and a triple for `splot`.
+ For example, `origin=(100,100):(100,200)` is for two records in the file and
+ intended for plotting in two dimensions. A second example, `origin=(0,0,3.5)`,
+ is for plotting in three dimensions.
+?binary keywords center
+?keywords center
+ Similar to `origin`, this keyword will position the array such that its center
+ lies at the point given by the tuple.  For example, `center=(0,0)`.  Center
+ does not apply when the size of the array is `Inf`.
+?binary keywords rotate
+?keywords rotate
+ The transpose and flip commands provide some flexibility in generating and
+ orienting coordinates.  However, for full degrees of freedom, it is possible to
+ apply a rotational vector described by a rotational angle in two dimensions.
+
+ The `rotate` keyword applies to the two-dimensional plane, whether it be `plot`
+ or `splot`.  The rotation is done with respect to the positive angle of the
+ Cartesian plane.
+
+ The angle can be expressed in radians, radians as a multiple of pi, or degrees.
+ For example, `rotate=1.5708`, `rotate=0.5pi` and `rotate=90deg` are equivalent.
+
+ If `origin` is specified, the rotation is done about the lower left sample
+ point before translation.  Otherwise, the rotation is done about the array
+ `center`.
+?binary keywords perpendicular
+ For `splot`, the concept of a rotational vector is implemented by a triple
+ representing the vector to be oriented normal to the two-dimensional x-y plane.
+ Naturally, the default is (0,0,1).  Thus specifying both rotate and
+ perpendicular together can orient data myriad ways in three-space.
+
+ The two-dimensional rotation is done first, followed by the three-dimensional
+ rotation.  That is, if R' is the rotational 2 x 2 matrix described by an angle,
+ and P is the 3 x 3 matrix projecting (0,0,1) to (xp,yp,zp), let R be
+ constructed from R' at the upper left sub-matrix, 1 at element 3,3 and zeros
+ elsewhere.  Then the matrix formula for translating data is v' = P R v, where v
+ is the 3 x 1 vector of data extracted from the data file.  In cases where the
+ data of the file is inherently not three-dimensional, logical rules are used to
+ place the data in three-space.  (E.g., usually setting the z-dimension value to
+ zero and placing 2D data in the x-y plane.)
+?commands plot datafile
+?plot datafile
+?data-file
+?datafile
+?data
+?file
+ Discrete data contained in a file can be displayed by specifying the name of
+ the data file (enclosed in single or double quotes) on the `plot` command line.
+
+ Syntax:
+       plot '<file_name>' {binary <binary list>}
+                          {{nonuniform} matrix}
+                          {index <index list> | index "<name>"}
+                          {every <every list>}
+                          {thru <thru expression>}
+                          {using <using list>}
+                          {smooth <option>}
+                          {volatile} {noautoscale}
+
+ The modifiers `binary`, `index`, `every`, `thru`, `using`, and `smooth` are
+ discussed separately.  In brief, `binary` allows data entry from a binary
+ file (default is ASCII), `index` selects which data sets in a multi-data-set
+ file are to be plotted, `every` specifies which points within a single data
+ set are to be plotted, `using` determines how the columns within a single
+ record are to be interpreted (`thru` is a special case of `using`), and
+ `smooth` allows for simple interpolation and approximation.  (`splot` has a
+ similar syntax, but does not support the `smooth` and `thru` options.)
+
+ The `noautoscale` keyword means that the points making up this plot will be
+ ignored when automatically determining axis range limits.
+
+ ASCII DATA FILES:
+
+ Data files should contain at least one data point per record (`using`
+ can select one data point from the record). Records beginning with `#`
+ (and also with `!` on VMS) will be treated as comments and ignored.
+ Each data point represents an (x,y) pair. For `plot`s with error bars or
+ error bars with lines (see `set style errorbars` or `set style errorlines`),
+ each data point is (x,y,ydelta), (x,y,ylow,yhigh),
+ (x,y,xdelta), (x,y,xlow,xhigh), or (x,y,xlow,xhigh,ylow,yhigh).
+
+ In all cases, the numbers of each record of a data file must be separated
+ by white space (one or more blanks or tabs) unless a format specifier is
+ provided by the `using` option. This white space divides each record into
+ columns. However, whitespace inside a pair of double quotes is ignored when
+ counting columns, so the following datafile line has three columns:
+       1.0 "second column" 3.0
+
+ Data may be written in exponential format with the exponent preceded by the
+ letter e or E.  The fortran exponential specifiers d, D, q, and Q may also
+ be used if the command `set datafile fortran` is in effect.
+
+ Only one column (the y value) need be provided.  If x is omitted, `gnuplot`
+ provides integer values starting at 0.
+
+ In datafiles, blank records (records with no characters other than blanks and
+ a newline and/or carriage return) are significant.
+
+ Single blank records designate discontinuities in a `plot`; no line will join
+ points separated by a blank records (if they are plotted with a line style).
+
+ Two blank records in a row indicate a break between separate data sets.
+ See `index`.
+
+ If autoscaling has been enabled (`set autoscale`), the axes are automatically
+ extended to include all datapoints, with a whole number of tic marks if tics
+ are being drawn.  This has two consequences: i) For `splot`, the corner of
+ the surface may not coincide with the corner of the base.  In this case, no
+ vertical line is drawn.  ii) When plotting data with the same x range on a
+ dual-axis graph, the x coordinates may not coincide if the x2tics are not
+ being drawn.  This is because the x axis has been autoextended to a whole
+ number of tics, but the x2 axis has not.  The following example illustrates
+ the problem:
+
+       reset; plot '-', '-' axes x2y1
+       1 1
+       19 19
+       e
+       1 1
+       19 19
+       e
+
+ To avoid this, you can use the `fixmin`/`fixmax` feature of the
+ `set autoscale` command, which turns off the automatic extension of the
+ axis range up to the next tic mark.
+
+ Label coordinates and text can also be read from a data file (see `labels`).
+
+?commands plot datafile every
+?plot datafile every
+?plot every
+?data-file every
+?datafile every
+?every
+ The `every` keyword allows a periodic sampling of a data set to be plotted.
+
+ In the discussion a "point" is a datum defined by a single record in the
+ file; "block" here will mean the same thing as "datablock" (see `glossary`).
+
+ Syntax:
+       plot 'file' every {<point_incr>}
+                           {:{<block_incr>}
+                             {:{<start_point>}
+                               {:{<start_block>}
+                                 {:{<end_point>}
+                                   {:<end_block>}}}}}
+
+ The data points to be plotted are selected according to a loop from
+ <`start_point`> to <`end_point`> with increment <`point_incr`> and the
+ blocks according to a loop from <`start_block`> to <`end_block`> with
+ increment <`block_incr`>.
+
+ The first datum in each block is numbered '0', as is the first block in the
+ file.
+
+ Note that records containing unplottable information are counted.
+
+ Any of the numbers can be omitted; the increments default to unity, the start
+ values to the first point or block, and the end values to the last point or
+ block. ':' at the end of the `every` option is not permitted.  
+ If `every` is not specified, all points in all lines are plotted.
+
+ Examples:
+       every :::3::3    # selects just the fourth block ('0' is first)
+       every :::::9     # selects the first 10 blocks
+       every 2:2        # selects every other point in every other block
+       every ::5::15    # selects points 5 through 15 in each block
+
+ See
+ simple plot demos (simple.dem)
+ ,
+ Non-parametric splot demos
+ , and
+ Parametric splot demos
+ .
+?commands plot datafile example
+?plot datafile example
+?plot example
+?datafile example
+?data-file example
+?example
+ This example plots the data in the file "population.dat" and a theoretical
+ curve:
+
+       pop(x) = 103*exp((1965-x)/10)
+       set xrange [1960:1990]
+       plot 'population.dat', pop(x)
+
+ The file "population.dat" might contain:
+
+       # Gnu population in Antarctica since 1965
+          1965   103
+          1970   55
+          1975   34
+          1980   24
+          1985   10
+
+ Binary examples:
+
+       # Selects two float values (second one implicit) with a float value
+       # discarded between them for an indefinite length of 1D data.
+       plot '<file_name>' binary format="%float%*float" using 1:2 with lines
+
+       # The data file header contains all details necessary for creating
+       # coordinates from an EDF file.
+       plot '<file_name>' binary filetype=edf with image
+       plot '<file_name>.edf' binary filetype=auto with image
+
+       # Selects three unsigned characters for components of a raw RGB image
+       # and flips the y-dimension so that typical image orientation (start
+       # at top left corner) translates to the Cartesian plane.  Pixel
+       # spacing is given and there are two images in the file.  One of them
+       # is translated via origin.
+       plot '<file_name>' binary array=(512,1024):(1024,512) format='%uchar' \
+            dx=2:1 dy=1:2 origin=(0,0):(1024,1024) flipy u 1:2:3 w rgbimage
+
+       # Four separate records in which the coordinates are part of the
+       # data file.  The file was created with a endianess different from
+       # the system on which gnuplot is running.
+       splot '<file_name>' binary record=30:30:29:26 endian=swap u 1:2:3
+
+       # Same input file, but this time we skip the 1st and 3rd records
+       splot '<file_name>' binary record=30:26 skip=360:348 endian=swap u 1:2:3
+
+
+ See also `binary matrix`.
+?commands plot datafile index
+?plot datafile index
+?plot index
+?data-file index
+?datafile index
+?index
+ The `index` keyword allows you to select specific data sets in a multi-data-set
+ file for plotting.
+
+ Syntax:
+       plot 'file' index { <m>{:<n>{:<p>}} | "<name>" }
+
+ Data sets are separated by pairs of blank records.  `index <m>` selects only
+ set <m>; `index <m>:<n>` selects sets in the range <m> to <n>; and `index
+ <m>:<n>:<p>` selects indices <m>, <m>+<p>, <m>+2<p>, etc., but stopping at
+ <n>.  Following C indexing, the index 0 is assigned to the first data set in
+ the file.  Specifying too large an index results in an error message.
+ If <p> is specified but <n> is left blank then every <p>-th dataset is read
+ until the end of the file.  If `index` is not specified, the entire file is
+ plotted as a single data set.
+
+ Example:
+       plot 'file' index 4:5
+
+ For each point in the file, the index value of the data set it appears in is
+ available via the pseudo-column `column(-2)`.  This leads to an alternative way
+ of distinguishing individual data sets within a file as shown below.  This is
+ more awkward than the `index` command if all you are doing is selecting one
+ data set for plotting, but is very useful if you want to assign different
+ properties to each data set.  See `pseudocolumns`, `lc variable`.
+
+ Example:
+       plot 'file' using 1:(column(-2)==4 ? $2 : NaN)        # very awkward
+       plot 'file' using 1:2:(column(-2)) linecolor variable # very useful!
+
+ `index '<name>'` selects the data set with name '<name>'.  Names are assigned
+ to data sets in comment lines.  The comment character and leading white space
+ are removed from the comment line.  If the resulting line starts with <name>,
+ the following data set is now named <name> and can be selected.
+
+ Example:
+       plot 'file' index 'Population'
+
+ Please note that every comment that starts with <name> will name the following
+ data set.  To avoid problems it may be useful to choose a naming scheme like
+ '== Population ==' or '[Population]'.
+
+?commands plot datafile smooth
+?plot datafile smooth
+?plot smooth
+?data-file smooth
+?datafile smooth
+?smooth
+ `gnuplot` includes a few general-purpose routines for interpolation and
+ approximation of data; these are grouped under the `smooth` option.  More
+ sophisticated data processing may be performed by preprocessing the data
+ externally or by using `fit` with an appropriate model.
+
+ Syntax:
+       smooth {unique | frequency | cumulative | cnormal | kdensity | unwrap
+                      | csplines | acsplines | mcsplines | bezier | sbezier}
+
+ `unique`, `frequency`, `cumulative` and `cnormal` plot the data after
+ making them monotonic.  `unwrap` manipulates the data to avoid jumps of more
+ than pi between the y value of successive points.  Each of the other routines
+ uses the data to determine the coefficients of a continuous curve between the
+ endpoints of the data.  This curve is then plotted in the same manner as a
+ function, that is, by finding its value at uniform intervals along the
+ abscissa (see `set samples`) and connecting these points with straight
+ line segments (if a line style is chosen).
+
+ If `autoscale` is in effect, the ranges will be computed such that the
+ plotted curve lies within the borders of the graph.
+
+ If `autoscale` is not in effect, and the smooth option is either `acspline`
+ or `cspline`, the sampling of the generated curve is done across the
+ intersection of the x range covered by the input data and the fixed abscissa
+ range as defined by `set xrange`.
+
+ If too few points are available to allow the selected option to be applied,
+ an error message is produced.  The minimum number is one for `unique` and
+ `frequency`, four for `acsplines`, and three for the others.
+
+ The `smooth` options have no effect on function plots.
+?commands plot datafile smooth acsplines
+?plot datafile smooth acsplines
+?data-file smooth acsplines
+?datafile smooth acsplines
+?plot smooth acsplines
+?plot acsplines
+?smooth acsplines
+?acsplines
+ The `acsplines` option approximates the data with a "natural smoothing spline".
+ After the data are made monotonic in x (see `smooth unique`), a curve is
+ piecewise constructed from segments of cubic polynomials whose coefficients
+ are found by the weighting the data points; the weights are taken from the
+ third column in the data file.  That default can be modified by the third
+ entry in the `using` list, e.g.,
+       plot 'data-file' using 1:2:(1.0) smooth acsplines
+
+ Qualitatively, the absolute magnitude of the weights determines the number
+ of segments used to construct the curve.  If the weights are large, the
+ effect of each datum is large and the curve approaches that produced by
+ connecting consecutive points with natural cubic splines.  If the weights are
+ small, the curve is composed of fewer segments and thus is smoother; the
+ limiting case is the single segment produced by a weighted linear least
+ squares fit to all the data.  The smoothing weight can be expressed in terms
+ of errors as a statistical weight for a point divided by a "smoothing factor"
+ for the curve so that (standard) errors in the file can be used as smoothing
+ weights.
+
+ Example:
+       sw(x,S)=1/(x*x*S)
+       plot 'data_file' using 1:2:(sw($3,100)) smooth acsplines
+?commands plot datafile smooth bezier
+?plot datafile smooth bezier
+?plot smooth bezier
+?data-file smooth bezier
+?datafile smooth bezier
+?plot bezier
+?smooth bezier
+?bezier
+ The `bezier` option approximates the data with a Bezier curve of degree n
+ (the number of data points) that connects the endpoints.
+?commands plot datafile smooth csplines
+?plot datafile smooth csplines
+?plot smooth csplines
+?data-file smooth csplines
+?datafile smooth csplines
+?plot csplines
+?smooth csplines
+?csplines
+ The `csplines` option connects consecutive points by natural cubic splines
+ after rendering the data monotonic (see `smooth unique`).
+?commands plot datafile smooth mcsplines
+?plot datafile smooth mcsplines
+?plot smooth mcsplines
+?data-file smooth mcsplines
+?datafile smooth mcsplines
+?plot mcsplines
+?smooth mcsplines
+?mcsplines
+ The `mcsplines` option connects consecutive points by cubic splines constrained
+ such that the smoothed function preserves the monotonicity and convexity of the
+ original data points.
+ FN Fritsch & RE Carlson (1980) "Monotone Piecewise Cubic Interpolation",
+ SIAM Journal on Numerical Analysis 17: 238–246.
+?commands plot datafile smooth sbezier
+?plot datafile smooth sbezier
+?plot smooth sbezier
+?data-file smooth sbezier
+?datafile smooth sbezier
+?plot sbezier
+?smooth sbezier
+?sbezier
+ The `sbezier` option first renders the data monotonic (`unique`) and then
+ applies the `bezier` algorithm.
+?commands plot datafile smooth unique
+?plot datafile smooth unique
+?plot smooth unique
+?data-file smooth unique
+?datafile smooth unique
+?plot unique
+?smooth unique
+?unique
+ The `unique` option makes the data monotonic in x; points with the same
+ x-value are replaced by a single point having the average y-value.  The
+ resulting points are then connected by straight line segments.
+?commands plot datafile smooth unwrap
+?plot datafile smooth unwrap
+?plot smooth unwrap
+?data-file smooth unwrap
+?datafile smooth unwrap
+?plot unwrap
+?smooth unwrap
+?unwrap
+ The `unwrap` option modifies the input data so that any two successive
+ points will not differ by more than pi; a point whose y value is
+ outside this range will be incremented or decremented by multiples of
+ 2pi until it falls within pi of the previous point. This operation is
+ useful for making wrapped phase measurements continuous over time.
+?commands plot datafile smooth frequency
+?plot datafile smooth frequency
+?plot smooth frequency
+?data-file smooth frequency
+?datafile smooth frequency
+?plot frequency
+?smooth frequency
+?frequency
+ The `frequency` option makes the data monotonic in x; points with the same
+ x-value are replaced by a single point having the summed y-values.  The
+ resulting points are then connected by straight line segments.
+ See also
+ smooth.dem
+?commands plot datafile smooth cumulative
+?plot datafile smooth cumulative
+?plot smooth cumulative
+?data-file smooth cumulative
+?datafile smooth cumulative
+?plot cumulative
+?smooth cumulative
+?cumulative
+ The `cumulative` option makes the data monotonic in x; points with the same
+ x-value are replaced by a single point containing the cumulative sum of 
+ y-values of all data points with lower x-values (i.e. to the left of the
+ current data point). This can be used to obtain a cumulative distribution 
+ function from data.
+ See also
+ smooth.dem
+?commands plot datafile smooth cnormal
+?plot datafile smooth cnormal
+?plot smooth cnormal
+?data-file smooth cnormal
+?datafile smooth cnormal
+?plot cnormal
+?smooth cnormal
+?cnormal
+ The `cnormal` option makes the data monotonic in x and normalises the
+ y-values onto the range [0:1].  Points with the same x-value are
+ replaced by a single point containing the cumulative sum of y-values
+ of all data points with lower x-values (i.e. to the left of the
+ current data point) divided by the total sum of all y-values. This can
+ be used to obtain a normalised cumulative distribution function from
+ data (useful when comparing sets of samples with differing numbers of
+ members).
+ See also
+ smooth.dem
+
+?commands plot datafile smooth kdensity
+?plot datafile smooth kdensity
+?plot smooth kdensity
+?data-file smooth kdensity
+?datafile smooth kdensity
+?plot kdensity
+?smooth kdensity
+?kdensity
+ The `kdensity` option is a way to plot a kernel density estimate (which is a
+ smooth histogram) for a random collection of points, using Gaussian kernels.
+ A Gaussian is placed at the location of each point in the first column and
+ the sum of all these Gaussians is plotted as a function. The value in the
+ second column is taken as weight of the Gaussian. (To obtain a normalized
+ histogram, this should be 1/number-of-points). The value of the third column,
+ if supplied, is taken as the bandwidth for the kernels. If only two columns
+ have been specified, or if the value of the third column is zero or less,
+ gnuplot calculates the bandwidth which would be optimal if the input data was
+ normally distributed. (This will usually be a very conservative, i.e. broad 
+ bandwidth.)
+?commands plot datafile special-filenames
+?plot datafile special-filenames
+?plot special-filenames
+?datafile special-filenames
+?special-filenames
+ There are a few filenames that have a special meaning:  '', '-', '+' and '++'.
+
+ The empty filename '' tells gnuplot to re-use the previous input file in the
+ same plot command. So to plot two columns from the same input file:
+
+       plot 'filename' using 1:2, '' using 1:3
+
+ The special filenames '+' and '++' are a mechanism to allow the full range of
+ `using` specifiers and plot styles with in-line functions.  Normally a function
+ plot can only have a single y (or z) value associated with each sampled point.
+ The pseudo-file '+' treats the sampled points as column 1, and allows
+ additional column values to be specified via a `using` specification, just as
+ for a true input file.  The number of samples returned is controlled by
+ `set samples`.
+ Example:
+
+       plot '+' using ($1):(sin($1)):(sin($1)**2) with filledcurves
+
+ Similarly the pseudo-file '++' returns 2 columns of data forming a regular
+ grid of [x,y] coordinates with the number of points along x controlled by
+ `set samples` and the number of points along y controlled by `set isosamples`.
+ In parametric mode the samples are along u and v rather than along x and y.
+ You must set xrange and yrange (or urange and vrange) before plotting '++'.
+ Examples:
+
+       splot '++' using 1:2:(sin($1)*sin($2)) with pm3d
+       plot '++' using 1:2:(sin($1)*sin($2)) with image
+
+ The special filename `'-'` specifies that the data are inline; i.e., they
+ follow the command.  Only the data follow the command; `plot` options like
+ filters, titles, and line styles remain on the `plot` command line.  This is
+ similar to << in unix shell script, and $DECK in VMS DCL.  The data are
+ entered as though they are being read from a file, one data point per record.
+ The letter "e" at the start of the first column terminates data entry.  The
+ `using` option can be applied to these data---using it to filter them through
+ a function might make sense, but selecting columns probably doesn't!
+
+ `'-'` is intended for situations where it is useful to have data and commands
+ together, e.g., when `gnuplot` is run as a sub-process of some front-end
+ application.  Some of the demos, for example, might use this feature.  While
+ `plot` options such as `index` and `every` are recognized, their use forces
+ you to enter data that won't be used.  For example, while
+
+       plot '-' index 0, '-' index 1
+       2
+       4
+       6
+
+
+       10
+       12
+       14
+       e
+       2
+       4
+       6
+
+
+       10
+       12
+       14
+       e
+
+ does indeed work,
+
+       plot '-', '-'
+       2
+       4
+       6
+       e
+       10
+       12
+       14
+       e
+
+ is a lot easier to type.
+
+ If you use `'-'` with `replot`, you may need to enter the data more than once.
+ See `replot`, `refresh`.
+
+ A blank filename ('') specifies that the previous filename should be reused.
+ This can be useful with things like
+
+       plot 'a/very/long/filename' using 1:2, '' using 1:3, '' using 1:4
+
+ (If you use both `'-'` and `''` on the same `plot` command, you'll need to
+ have two sets of inline data, as in the example above.)
+
+ On systems with a popen function, the datafile can be piped through a shell
+ command by starting the file name with a '<'.  For example,
+
+       pop(x) = 103*exp(-x/10)
+       plot "< awk '{print $1-1965, $2}' population.dat", pop(x)
+
+ would plot the same information as the first population example but with
+ years since 1965 as the x axis.  If you want to execute this example, you
+ have to delete all comments from the data file above or substitute the
+ following command for the first part of the command above (the part up to
+ the comma):
+
+       plot "< awk '$0 !~ /^#/ {print $1-1965, $2}' population.dat"
+
+ While this approach is most flexible, it is possible to achieve simple
+ filtering with the `using` or `thru` keywords.
+
+ On systems with an fdopen() function, data can be read from an arbitrary file
+ descriptor attached to either a file or pipe.  To read from file descriptor
+ `n` use `'<&n'`.  This allows you to easily pipe in several data files in a
+ single call from a POSIX shell:
+
+       $ gnuplot -p -e "plot '<&3', '<&4'" 3<data-3 4<data-4
+       $ ./gnuplot 5< <(myprogram -with -options)
+       gnuplot> plot '<&5'
+?commands plot datafile thru
+?plot datafile thru
+?plot thru
+?data-file thru
+?datafile thru
+?thru
+ The `thru` function is provided for backward compatibility.
+
+ Syntax:
+       plot 'file' thru f(x)
+
+ It is equivalent to:
+
+       plot 'file' using 1:(f($2))
+
+ While the latter appears more complex, it is much more flexible.  The more
+ natural
+
+       plot 'file' thru f(y)
+
+ also works (i.e. you can use y as the dummy variable).
+
+ `thru` is parsed for `splot` and `fit` but has no effect.
+?commands plot datafile using
+?plot datafile using
+?plot using
+?data-file using
+?datafile using
+?using
+ The most common datafile modifier is `using`.  It tells the program which
+ columns of data in the input file are to be plotted.
+
+ Syntax:
+       plot 'file' using <entry> {:<entry> {:<entry> ...}} {'format'}
+
+ If a format is specified, it is used to read in each datafile record using the
+ C library 'scanf' function.  Otherwise the record is interpreted as consisting
+ of columns (fields) of data separated by whitespace (spaces and/or tabs),
+ but see `datafile separator`.
+
+ Each <entry> may be a simple column number that selects the value from one
+ field of the input file, a string that matches a column label in the first 
+ line of a data set, an expression enclosed in parentheses, or a special
+ function not enclosed in parentheses such as xticlabels(2).
+
+ If the entry is an expression in parentheses, then the function column(N) may
+ be used to indicate the value in column N. That is, column(1) refers to the
+ first item read, column(2) to the second, and so on.  The special symbols
+ $1, $2, ... are shorthand for column(1), column(2) ...  The function `valid(N)`
+ tests whether the value in the Nth column is a valid number.
+ If each column of data in the input file contains a label in the first row
+ rather than a data value, this label can be used to identify the column on
+ input and/or in the plot legend. The column() function can be used to select
+ an input column by label rather than by column number.  For example,
+ if the data file contains
+       Height    Weight    Age
+       val1      val1      val1
+       ...       ...       ...
+ then the following plot commands are all equivalent
+       plot 'datafile' using 3:1, '' using 3:2
+       plot 'datafile' using (column("Age")):(column(1)), \
+                    '' using (column("Age")):(column(2))
+       plot 'datafile' using "Age":"Height", '' using "Age":"Weight"
+
+ The full string must match. Comparison is case-sensitive.
+ To use the column labels in the plot legend, use 
+ `set key autotitle columnhead`.
+
+ In addition to the actual columns 1...N in the input data file, gnuplot
+ presents data from several "pseudo-columns" that hold bookkeeping information.
+ E.g. $0 or column(0) returns the sequence number of this data record within a
+ dataset.  Please see `pseudocolumns`.
+
+ An empty <entry> will default to its order in the list of entries.
+ For example, `using ::4` is interpreted as `using 1:2:4`.
+
+ If the `using` list has only a single entry, that <entry> will be used for y
+ and the data point number (pseudo-column $0) is used for x; for example,
+ "`plot 'file' using 1`" is identical to "`plot 'file' using 0:1`".
+ If the `using` list has two entries, these will be used for x and y.
+ See `set style` and `fit` for details about plotting styles that make use of
+ data from additional columns of input.
+
+ 'scanf' accepts several numerical specifications but `gnuplot`
+ requires all inputs to be double-precision floating-point variables,
+ so "%lf" is essentially the only permissible specifier.
+ A format string given by the user must contain at least one such
+ input specifier, and no more than seven of them.
+ 'scanf' expects to see white space---a blank, tab
+ ("\t"), newline ("\n"), or formfeed ("\f")---between numbers; anything else
+ in the input stream must be explicitly skipped.
+
+ Note that the use of "\t", "\n", or "\f" requires use of double-quotes
+ rather than single-quotes.
+?examples
+?commands plot datafile using examples
+?plot datafile using examples
+?datafile using examples
+?using examples
+ This creates a plot of the sum of the 2nd and 3rd data against the first:
+ The format string specifies comma- rather than space-separated columns.
+ The same result could be achieved by specifying `set datafile separator ","`.
+       plot 'file' using 1:($2+$3) '%lf,%lf,%lf'
+
+ In this example the data are read from the file "MyData" using a more
+ complicated format:
+       plot 'MyData' using "%*lf%lf%*20[^\n]%lf"
+
+ The meaning of this format is:
+
+       %*lf        ignore a number
+       %lf         read a double-precision number (x by default)
+       %*20[^\n]   ignore 20 non-newline characters
+       %lf         read a double-precision number (y by default)
+
+ One trick is to use the ternary `?:` operator to filter data:
+
+       plot 'file' using 1:($3>10 ? $2 : 1/0)
+
+ which plots the datum in column two against that in column one provided
+ the datum in column three exceeds ten.  `1/0` is undefined; `gnuplot`
+ quietly ignores undefined points, so unsuitable points are suppressed.
+ Or you can use the pre-defined variable NaN to achieve the same result.
+
+ In fact, you can use a constant expression for the column number, provided it
+ doesn't start with an opening parenthesis; constructs like `using
+ 0+(complicated expression)` can be used.  The crucial point is that the
+ expression is evaluated once if it doesn't start with a left parenthesis, or
+ once for each data point read if it does.
+
+ If timeseries data are being used, the time can span multiple columns.  The
+ starting column should be specified.  Note that the spaces within the time
+ must be included when calculating starting columns for other data.  E.g., if
+ the first element on a line is a time with an embedded space, the y value
+ should be specified as column three.
+
+ It should be noted that `plot 'file'`, `plot 'file' using 1:2`, and `plot
+ 'file' using ($1):($2)` can be subtly different: 1) if `file` has some lines
+ with one column and some with two, the first will invent x values when they
+ are missing, the second will quietly ignore the lines with one column, and
+ the third will store an undefined value for lines with one point (so that in
+ a plot with lines, no line joins points across the bad point); 2) if a line
+ contains text at the first column, the first will abort the plot on an error,
+ but the second and third should quietly skip the garbage.
+
+ In fact, it is often possible to plot a file with lots of lines of garbage at
+ the top simply by specifying
+
+       plot 'file' using 1:2
+
+ However, if you want to leave text in your data files, it is safer to put the
+ comment character (#) in the first column of the text lines.
+?pseudocolumns
+?commands plot datafile using pseudocolumns
+?plot datafile using pseudocolumns
+?datafile using pseudocolumns
+?using pseudocolumns
+ Expressions in the `using` clause of a plot statement can refer to additional
+ bookkeeping values in addition to the actual data values contained in the input
+ file. These are contained in "pseudocolumns".
+       column(0)   The sequential order of each point within a data set.
+                   The counter starts at 0 and is reset by two sequential blank
+                   records.  The shorthand form $0 is available.
+       column(-1)  This counter starts at 0 and is reset by a single blank line.
+                   This corresponds to the data line in array or grid data.
+       column(-2)  The index number of the current data set within a file that
+                   contains multiple data sets.  See `index`.
+?xticlabels
+?using xticlabels
+?plot using xticlabels
+ Axis tick labels can be generated via a string function, usually taking a data
+ column as an argument. The simplest form uses the data column itself as a 
+ string. That is,  xticlabels(N) is shorthand for xticlabels(stringcolumn(N)).
+ This example uses the contents of column 3 as x-axis tick labels.
+
+       plot 'datafile' using <xcol>:<ycol>:xticlabels(3) with <plotstyle>
+
+ Axis tick labels may be generated for any of the plot axes: x x2 y y2 z.
+ The `ticlabels(<labelcol>)` specifiers must come after all of the data
+ coordinate specifiers in the `using` portion of the command.
+ For each data point which has a valid set of X,Y[,Z] coordinates,
+ the string value given to xticlabels() is added to the list of xtic labels
+ at the same X coordinate as the point it belongs to. `xticlabels()`
+ may be shortened to `xtic()` and so on.
+
+ Example:
+
+       splot "data" using 2:4:6:xtic(1):ytic(3):ztic(6)
+
+ In this example the x and y axis tic labels are taken from different columns
+ than the x and y coordinate values. The z axis tics, however, are generated
+ from the z coordinate of the corresponding point.
+
+ Example:
+
+       plot "data" using 1:2:xtic( $3 > 10. ? "A" : "B" )
+
+ This example shows the use of a string-valued function to generate x-axis
+ tick labels. Each point in the data file generates a tick mark on x labeled
+ either "A" or "B" depending on the value in column 3.
+?using x2ticlabels
+?plot using x2ticlabels
+ See `plot using xticlabels`.
+?using yticlabels
+?plot using yticlabels
+ See `plot using xticlabels`.
+?using y2ticlabels
+?plot using y2ticlabels
+ See `plot using xticlabels`.
+?using zticlabels
+?plot using zticlabels
+ See `plot using xticlabels`.
+?datafile volatile
+?data volatile
+?plot datafile volatile
+?plot volatile
+?volatile
+ The `volatile` keyword in a plot command indicates that the data previously
+ read from the input stream or file may not be available for re-reading.
+ This tells the program to use `refresh` rather than `replot` commands whenever
+ possible.  See `refresh`.
+?commands plot errorbars
+?commands splot errorbars
+?plot errorbars
+?splot errorbars
+?errorbars
+ Error bars are supported for 2D data file plots by reading one to four
+ additional columns (or `using` entries); these additional values are used in
+ different ways by the various errorbar styles.
+
+ In the default situation, `gnuplot` expects to see three, four, or six
+ numbers on each line of the data file---either
+
+       (x, y, ydelta),
+       (x, y, ylow, yhigh),
+       (x, y, xdelta),
+       (x, y, xlow, xhigh),
+       (x, y, xdelta, ydelta), or
+       (x, y, xlow, xhigh, ylow, yhigh).
+
+ The x coordinate must be specified.  The order of the numbers must be
+ exactly as given above, though the `using` qualifier can manipulate the order
+ and provide values for missing columns.  For example,
+
+       plot 'file' with errorbars
+       plot 'file' using 1:2:(sqrt($1)) with xerrorbars
+       plot 'file' using 1:2:($1-$3):($1+$3):4:5 with xyerrorbars
+
+ The last example is for a file containing an unsupported combination of
+ relative x and absolute y errors.  The `using` entry generates absolute x min
+ and max from the relative error.
+
+ The y error bar is a vertical line plotted from (x, ylow) to (x,
+ yhigh). If ydelta is specified instead of ylow and yhigh, ylow = y -
+ ydelta and yhigh = y + ydelta are derived. If there are only two
+ numbers on the record, yhigh and ylow are both set to y. The x error
+ bar is a horizontal line computed in the same fashion. To get lines
+ plotted between the data points, `plot` the data file twice, once with
+ errorbars and once with lines (but remember to use the `notitle`
+ option on one to avoid two entries in the key). Alternately, use the
+ errorlines command (see `errorlines`).
+
+ The error bars have crossbars at each end unless `set bars` is used
+ (see `set bars` for details).
+
+ If autoscaling is on, the ranges will be adjusted to include the error bars.
+
+ See also
+ errorbar demos.
+
+ See `plot using`, `plot with`, and `set style` for more information.
+?commands plot errorlines
+?commands splot errorlines
+?plot errorlines
+?splot errorlines
+?errorlines
+ Lines with error bars are supported for 2D data file plots by reading
+ one to four additional columns (or `using` entries); these additional
+ values are used in different ways by the various errorlines styles.
+
+ In the default situation, `gnuplot` expects to see three, four, or six
+ numbers on each line of the data file---either
+
+       (x, y, ydelta),
+       (x, y, ylow, yhigh),
+       (x, y, xdelta),
+       (x, y, xlow, xhigh),
+       (x, y, xdelta, ydelta), or
+       (x, y, xlow, xhigh, ylow, yhigh).
+
+ The x coordinate must be specified. The order of the numbers must be
+ exactly as given above, though the `using` qualifier can manipulate
+ the order and provide values for missing columns. For example,
+
+       plot 'file' with errorlines
+       plot 'file' using 1:2:(sqrt($1)) with xerrorlines
+       plot 'file' using 1:2:($1-$3):($1+$3):4:5 with xyerrorlines
+
+ The last example is for a file containing an unsupported combination
+ of relative x and absolute y errors. The `using` entry generates
+ absolute x min and max from the relative error.
+
+ The y error bar is a vertical line plotted from (x, ylow) to (x,
+ yhigh). If ydelta is specified instead of ylow and yhigh, ylow = y -
+ ydelta and yhigh = y + ydelta are derived. If there are only two
+ numbers on the record, yhigh and ylow are both set to y. The x error
+ bar is a horizontal line computed in the same fashion.
+
+ The error bars have crossbars at each end unless `set bars` is used
+ (see `set bars` for details).
+
+ If autoscaling is on, the ranges will be adjusted to include the error bars.
+
+ See `plot using`, `plot with`, and `set style` for more information.
+?commands plot functions
+?plot functions
+?functions
+ Built-in or user-defined functions can be displayed by the `plot` and `splot`
+ commands in addition to, or instead of, data read from a file. The requested
+ function is evaluated by sampling at regular intervals spanning the independent
+ axis range[s]. See `set samples` and `set isosamples`.
+ Example:
+       approx(ang) = ang - ang**3 / (3*2)
+       plot sin(x) title "sin(x)", approx(x) title "approximation"
+
+ To set a default plot style for functions, see `set style function`.
+ For information on built-in functions, see `expressions functions`.
+ For information on defining your own functions, see `user-defined`.
+?commands plot parametric
+?commands splot parametric
+?plot parametric
+?splot parametric
+ When in parametric mode (`set parametric`) mathematical expressions must be
+ given in pairs for `plot` and in triplets for `splot`.
+
+ Examples:
+       plot sin(t),t**2
+       splot cos(u)*cos(v),cos(u)*sin(v),sin(u)
+
+ Data files are plotted as before, except any preceding parametric function
+ must be fully specified before a data file is given as a plot.  In other
+ words, the x parametric function (`sin(t)` above) and the y parametric
+ function (`t**2` above) must not be interrupted with any modifiers or data
+ functions; doing so will generate a syntax error stating that the parametric
+ function is not fully specified.
+
+ Other modifiers, such as `with` and `title`, may be specified only after the
+ parametric function has been completed:
+
+       plot sin(t),t**2 title 'Parametric example' with linespoints
+
+ See also
+ Parametric Mode Demos.
+?commands plot ranges
+?commands splot ranges
+?plot ranges
+?splot ranges
+?ranges
+ The optional axis ranges at the start of a plot command specify the region of
+ the graph that will be displayed.  These override any ranges established by a
+ previous `set range` statement.
+
+ Syntax:
+       [{<dummy-var>=}{{<min>}:{<max>}}]
+       [{{<min>}:{<max>}}]
+
+ The first form applies to the independent variable (`xrange` or `trange`, if
+ in parametric mode).  The second form applies to the dependent variable
+ `yrange` (and `xrange`, too, if in parametric mode).  <dummy-var> is a new
+ name for the independent variable.  (The defaults may be changed with `set
+ dummy`.)  The optional <min> and <max> terms can be constant expressions or *.
+
+ In non-parametric mode, the order in which ranges must be given is `xrange`
+ and `yrange`.
+
+ In parametric mode, the order for the `plot` command is `trange`, `xrange`,
+ and `yrange`.  The following `plot` command shows setting the `trange` to
+ [-pi:pi], the `xrange` to [-1.3:1.3] and the `yrange` to [-1:1] for the
+ duration of the graph:
+
+       plot [-pi:pi] [-1.3:1.3] [-1:1] sin(t),t**2
+
+ Note that the x2range and y2range cannot be specified here---`set x2range`
+ and `set y2range` must be used.
+
+ Ranges are interpreted in the order listed above for the appropriate mode.
+ Once all those needed are specified, no further ones must be listed, but
+ unneeded ones cannot be skipped---use an empty range `[]` as a placeholder.
+
+ `*` can be used to allow autoscaling of either of min and max.  See also
+ `set autoscale`.
+
+ Ranges specified on the `plot` or `splot` command line affect only that
+ graph; use the `set xrange`, `set yrange`, etc., commands to change the
+ default ranges for future graphs.
+
+ With time data, you must provide the range (in the same manner as the time
+ appears in the datafile) within quotes.  `gnuplot` uses the `timefmt` string
+ to read the value---see `set timefmt`.
+
+ Examples:
+
+ This uses the current ranges:
+       plot cos(x)
+
+ This sets the x range only:
+       plot [-10:30] sin(pi*x)/(pi*x)
+
+ This is the same, but uses t as the dummy-variable:
+       plot [t = -10 :30]  sin(pi*t)/(pi*t)
+
+ This sets both the x and y ranges:
+       plot [-pi:pi] [-3:3]  tan(x), 1/x
+
+ This sets only the y range, and turns off autoscaling on both axes:
+       plot [ ] [-2:sin(5)*-8] sin(x)**besj0(x)
+
+ This sets xmax and ymin only:
+       plot [:200] [-pi:]  exp(sin(x))
+
+ This sets the x range for a timeseries:
+       set timefmt "%d/%m/%y %H:%M"
+       plot ["1/6/93 12:00":"5/6/93 12:00"] 'timedata.dat'
+
+?commands plot iteration
+?commands splot iteration
+?plot iteration
+?splot iteration
+ If many similar files or functions are to be plotted together, it may be
+ convenient to do so by iterating over a shared plot command.
+
+ Syntax:
+       plot for [<variable> = <start> : <end> {:<increment>}]
+       plot for [<variable> in "string of words"]
+
+ The scope of an iteration ends at the next comma or the end of the
+ command, whichever comes first.  Iteration can not be nested.
+
+ This will plot one curve, sin(3x), because iteration ends at the comma
+       plot for [i=1:3] j=i, sin(j*x)
+ This will plot three curves because there is no comma after the definition of j
+       plot for [i=1:3] j=i sin(j*x)
+
+ Example:
+       plot for [dataset in "apples bananas"] dataset."dat" title dataset
+
+ In this example iteration is used both to generate a file name and a
+ corresponding title.
+
+ Example:
+       file(n) = sprintf("dataset_%d.dat",n)
+       splot for [i=1:10] file(i) title sprintf("dataset %d",i)
+
+ This example defines a string-valued function that generates file names,
+ and plots ten such files together. The iteration variable ('i' in this
+ example) is treated as an integer, and may be used more than once.
+
+ Example:
+       set key left
+       plot for [n=1:4] x**n sprintf("%d",n)
+
+ This example plots a family of functions.
+
+ Example:
+       list = "apple banana cabbage daikon eggplant"
+       item(n) = word(list,n)
+       plot for [i=1:words(list)] item[i].".dat" title item(i)
+       list = "new stuff"
+       replot
+
+ This example steps through a list and plots once per item.
+ Because the items are retrieved dynamically, you can change the list
+ and then replot.
+
+ Example:
+       list = "apple banana cabbage daikon eggplant"
+       plot for [i in list] i.".dat" title i
+       list = "new stuff"
+       replot
+
+ This is example does exactly the same thing as the previous example, but uses
+ the string iterator form of the command rather than an integer iterator.
+
+?commands plot title
+?commands splot title
+?plot title
+?splot title
+?columnheader
+ By default each plot is listed in the key by the corresponding function or file
+ name. You can give an explicit plot title instead using the `title` option.
+
+ Syntax:
+       title <text> | notitle [<ignored text>]
+       title columnheader | title columnheader(N)
+
+ where <text> is a quoted string or an expression that evaluates to a string.
+ The quotes will not be shown in the key.
+
+ There is also an option that will interpret the first entry in a column of
+ input data (i.e. the column header) as a text field, and use it as the key
+ title.  See `datastrings`.  This can be made the default by specifying
+ `set key autotitle columnhead`.
+
+ The line title and sample can be omitted from the key by using the keyword
+ `notitle`.  A null title (`title ''`) is equivalent to `notitle`.  If only
+ the sample is wanted, use one or more blanks (`title ' '`).  If `notitle`
+ is followed by a string this string is ignored.
+
+ If `key autotitles` is set (which is the default) and neither `title` nor
+ `notitle` are specified the line title is the function name or the file name as
+ it appears on the `plot` command.  If it is a file name, any datafile modifiers
+ specified will be included in the default title.
+
+ The layout of the key itself (position, title justification, etc.) can be
+ controlled by `set key`.  Please see `set key` for details.
+
+ Examples:
+
+ This plots y=x with the title 'x':
+       plot x
+
+ This plots x squared with title "x^2" and file "data.1" with title
+ "measured data":
+       plot x**2 title "x^2", 'data.1' t "measured data"
+
+ This puts an untitled circular border around a polar graph:
+       set polar; plot my_function(t), 1 notitle
+
+ Plot multiple columns of data, each of which contains its own title in the file
+       plot for [i=1:4] 'data' using i title columnhead
+
+?commands plot with
+?commands splot with
+?commands plot style
+?commands splot style
+?plot with
+?plot style
+?splot with
+?splot style
+?style
+?with
+ Functions and data may be displayed in one of a large number of styles.
+ The `with` keyword provides the means of selection.
+
+ Syntax:
+       with <style> { {linestyle | ls <line_style>}
+                      | {{linetype  | lt <line_type>}
+                         {linewidth | lw <line_width>}
+                         {linecolor | lc <colorspec>}
+                         {pointtype | pt <point_type>}
+                         {pointsize | ps <point_size>}
+                         {fill | fs <fillstyle>}
+                         {nohidden3d} {nocontours} {nosurface}
+                         {palette}}
+                    }
+
+
+ where <style> is one of
+
+      lines        dots       steps     errorbars     xerrorbar    xyerrorlines
+      points       impulses   fsteps    errorlines    xerrorlines  yerrorbars
+      linespoints  labels     histeps   financebars   xyerrorbars  yerrorlines
+                                        vectors
+ or
+       boxes            candlesticks   image      circles
+       boxerrorbars     filledcurves   rgbimage   ellipses
+       boxxyerrorbars   histograms     rgbalpha   pm3d
+       boxplot
+
+ The first group of styles have associated line, point, and text properties.
+ The second group of styles also have fill properties.  See `fillstyle`.  Some
+ styles have further sub-styles.  See `plotting styles` for details of each.
+
+ A default style may be chosen by `set style function` and `set style data`.
+
+ By default, each function and data file will use a different line type and
+ point type, up to the maximum number of available types.  All terminal
+ drivers support at least six different point types, and re-use them, in
+ order, if more are required.  To see the complete set of line and point
+ types available for the current terminal, type `test`.
+
+ If you wish to choose the line or point type for a single plot, <line_type>
+ and <point_type> may be specified.  These are positive integer constants (or
+ expressions) that specify the line type and point type to be used for the
+ plot.  Use `test` to display the types available for your terminal.
+
+ You may also scale the line width and point size for a plot by using
+ <line_width> and <point_size>, which are specified relative to the default
+ values for each terminal.  The pointsize may also be altered
+ globally---see `set pointsize` for details.  But note that both <point_size>
+ as set here and  as set by `set pointsize` multiply the default point
+ size---their effects are  not cumulative.  That is,
+ `set pointsize 2; plot x w p ps 3` will use points three times default size,
+ not six.
+
+ It is also possible to specify `pointsize variable` either as part of a
+ line style or for an individual plot. In this case one extra column of input
+ is required, i.e. 3 columns for a 2D plot and 4 columns for a 3D splot. The
+ size of each individual point is determined by multiplying the global
+ pointsize by the value read from the data file.
+
+ If you have defined specific line type/width and point type/size combinations
+ with `set style line`, one of these may be selected by setting <line_style> to
+ the index of the desired style.
+
+ If gnuplot was built with `pm3d` support, the special keyword `palette` is
+ allowed for smooth color change of lines, points and dots in `splots`. The
+ color is chosen from a smooth palette which was set previously with the
+ command `set palette`. The color value corresponds to the z-value of the
+ point coordinates or to the color coordinate if specified by the 4th parameter
+ in `using`. Both 2D and 3D plots (`plot` and `splot` commands) can use palette
+ colors as specified by either their fractional value or the corresponding value
+ mapped to the colorbox range.  A palette color value can also be read from an
+ explicitly specified input column in the `using` specifier.
+ See `colors`, `set palette`, `linetype`.
+
+ The keyword `nohidden3d` applies only to plots made with the `splot` command.
+ Normally the global option `set hidden3d` applies to all plots in the graph.
+ You can attach the `nohidden3d` option to any individual plots that you want
+ to exclude from the hidden3d processing.  The individual elements other than
+ surfaces (i.e. lines, dots, labels, ...) of a plot marked `nohidden3d` will all
+ be drawn, even if they would normally be obscured by other plot elements.
+
+ Similarly, the keyword `nocontours` will turn off contouring for an individual
+ plot even if the global property `set contour` is active.
+
+ Similarly, the keyword `nosurface` will turn off the 3D surface for an
+ individual plot even if the global property `set surface` is active.
+
+ The keywords may be abbreviated as indicated.
+
+ Note that the `linewidth`, `pointsize` and `palette` options are not supported
+ by all terminals.
+
+ Examples:
+
+ This plots sin(x) with impulses:
+       plot sin(x) with impulses
+
+ This plots x with points, x**2 with the default:
+       plot x w points, x**2
+
+ This plots tan(x) with the default function style, file "data.1" with lines:
+       plot [ ] [-2:5] tan(x), 'data.1' with l
+
+ This plots "leastsq.dat" with impulses:
+       plot 'leastsq.dat' w i
+
+ This plots the data file "population" with boxes:
+       plot 'population' with boxes
+
+ This plots "exper.dat" with errorbars and lines connecting the points
+ (errorbars require three or four columns):
+       plot 'exper.dat' w lines, 'exper.dat' notitle w errorbars
+
+ Another way to plot "exper.dat" with errorlines (errorbars require three
+ or four columns):
+       plot 'exper.dat' w errorlines
+
+ This plots sin(x) and cos(x) with linespoints, using the same line type but
+ different point types:
+       plot sin(x) with linesp lt 1 pt 3, cos(x) with linesp lt 1 pt 4
+
+ This plots file "data" with points of type 3 and twice usual size:
+       plot 'data' with points pointtype 3 pointsize 2
+
+ This plots file "data" with variable pointsize read from column 4
+       plot 'data' using 1:2:4 with points pt 5 pointsize variable
+
+ This plots two data sets with lines differing only by weight:
+       plot 'd1' t "good" w l lt 2 lw 3, 'd2' t "bad" w l lt 2 lw 1
+
+ This plots filled curve of x*x and a color stripe:
+       plot x*x with filledcurve closed, 40 with filledcurve y1=10
+
+ This plots x*x and a color box:
+       plot x*x, (x>=-5 && x<=5 ? 40 : 1/0) with filledcurve y1=10 lt 8
+
+ This plots a surface with color lines:
+       splot x*x-y*y with line palette
+
+ This plots two color surfaces at different altitudes:
+       splot x*x-y*y with pm3d, x*x+y*y with pm3d at t
+
+?commands print
+?print
+ The `print` command prints the value of <expression> to the screen.  It is
+ synonymous with `pause 0`.  <expression> may be anything that `gnuplot` can
+ evaluate that produces a number, or it can be a string.
+
+ Syntax:
+       print <expression> {, <expression>, ...}
+
+ See `expressions`.  The output file can be set with `set print`.
+?commands pwd
+?pwd
+ The `pwd` command prints the name of the working directory to the screen.
+
+ Note that if you wish to store the current directory into a string variable
+ or use it in string expressions, then you can use variable GPVAL_PWD, see
+ `show variables all`.
+?commands quit
+?quit
+ The `exit` and `quit` commands and END-OF-FILE character will exit `gnuplot`.
+ Each of these commands will clear the output device (as does the `clear`
+ command) before exiting.
+?commands raise
+?raise
+ Syntax:
+       raise {plot_window_nb}
+
+ The `raise` command raises (opposite to `lower`) plot window(s) associated
+ with the interactive terminal of your gnuplot session, i.e. `pm`, `win`, `wxt`
+ or `x11`. It puts the plot window to front (top) in the z-order windows stack
+ of the window manager of your desktop.
+
+ As `x11` and `wxt` support multiple plot windows, then by default they raise
+ these windows in descending order of most recently created on top to the least
+ recently created on bottom. If a plot number is supplied as an optional
+ parameter, only the associated plot window will be raised if it exists.
+
+ The optional parameter is ignored for single plot-windows terminal, i.e. `pm`
+ and `win`.
+
+ If the window is not raised under X11, then perhaps the plot window is
+ running in a different X11 session (telnet or ssh session, for example), or
+ perhaps raising is blocked by your window manager policy setting.
+?commands refresh
+?refresh
+ The `refresh` command is similar to `replot`, with two major differences.
+ `refresh` reformats and redraws the current plot using the data already read
+ in. This means that you can use `refresh` for plots with in-line data
+ (pseudo-device '-') and for plots from datafiles whose contents are volatile.
+ You cannot use the `refresh` command to add new data to an existing plot.
+
+ Mousing operations, in particular zoom and unzoom, will use `refresh` rather
+ than `replot` if appropriate.  Example:
+
+       plot 'datafile' volatile with lines, '-' with labels
+       100 200 "Special point"
+       e
+       # Various mousing operations go here
+       set title "Zoomed in view"
+       set term post
+       set output 'zoom.ps'
+       refresh
+
+?commands replot
+?replot
+ The `replot` command without arguments repeats the last `plot` or `splot`
+ command.  This can be useful for viewing a plot with different `set` options,
+ or when generating the same plot for several devices.
+
+ Arguments specified after a `replot` command will be added onto the last
+ `plot` or `splot` command (with an implied ',' separator) before it is
+ repeated.  `replot` accepts the same arguments as the `plot` and `splot`
+ commands except that ranges cannot be specified.  Thus you can use `replot`
+ to plot a function against the second axes if the previous command was `plot`
+ but not if it was `splot`.
+
+ N.B.---use of
+
+       plot '-' ; ... ; replot
+
+ is not recommended, because it will require that you type in the data all
+ over again.  In most cases you can use the `refresh` command instead, which
+ will redraw the plot using the data previously read in.
+
+ Note that `replot` does not work in `multiplot` mode, since it reproduces
+ only the last plot rather than the entire screen.
+
+ See also `command-line-editing` for ways to edit the last `plot` (`splot`)
+ command.
+
+ See also `show plot` to show the whole current plotting command, and the
+ possibility to copy it into the `history`.
+?commands reread
+?reread
+ The `reread` command causes the current `gnuplot` command file, as specified
+ by a `load` command or on the command line, to be reset to its starting
+ point before further commands are read from it.  This essentially implements
+ an endless loop of the commands from the beginning of the command file to
+ the `reread` command.  (But this is not necessarily a disaster---`reread` can
+ be very useful when used in conjunction with `if`.)
+ The `reread` command has no effect if input from standard input.
+
+ Examples:
+
+ Suppose the file "looper" contains the commands
+       a=a+1
+       plot sin(x*a)
+       pause -1
+       if(a<5) reread
+ and from within `gnuplot` you submit the commands
+       a=0
+       load 'looper'
+ The result will be five plots (separated by the `pause` message).
+
+ Suppose the file "data" contains six columns of numbers with a total yrange
+ from 0 to 10; the first is x and the next are five different functions of x.
+ Suppose also that the file "plotter" contains the commands
+       c_p = c_p+1
+       plot "$0" using 1:c_p with lines linetype c_p
+       if(c_p <  n_p) reread
+ and from within `gnuplot` you submit the commands
+       n_p=6
+       c_p=1
+       unset key
+       set yrange [0:10]
+       set multiplot
+       call 'plotter' 'data'
+       unset multiplot
+ The result is a single graph consisting of five plots.  The yrange must be
+ set explicitly to guarantee that the five separate graphs (drawn on top of
+ each other in multiplot mode) will have exactly the same axes.  The linetype
+ must be specified; otherwise all the plots would be drawn with the same type.
+ See animate.dem in demo directory for an animated example.
+
+?commands reset
+?reset
+?reset errors
+?reset bind
+ The `reset` command causes all graph-related options that can be set with the
+ `set` command to take on their default values.  This command is useful, e.g.,
+ to restore the default graph settings at the end of a command file, or to
+ return to a defined state after lots of settings have been changed within a
+ command file.  Please refer to the `set` command to see the default values
+ that the various options take.
+
+ The following are _not_ affected by `reset`.
+      `set term` `set output` `set loadpath` `set fontpath` `set linetype`
+      `set encoding` `set decimalsign` `set locale` `set psdir`
+
+ `reset errors` clears only the error state variables GPVAL_ERRNO and
+ GPVAL_ERRMSG.
+
+ `reset bind` restores all hotkey bindings to their default state.
+?commands save
+?save set
+?save
+ The `save` command saves user-defined functions, variables, the `set
+ term` status, all `set` options, or all of these, plus the last `plot`
+ (`splot`) command to the specified file.
+
+ Syntax:
+       save  {<option>} '<filename>'
+
+ where <option> is `functions`, `variables`, `terminal` or `set`. If
+ no option is used, `gnuplot` saves functions, variables, `set`
+ options and the last `plot` (`splot`) command.
+
+ `save`d files are written in text format and may be read by the
+ `load` command. For `save` with the `set` option or without any
+ option, the `terminal` choice and the `output` filename are written
+ out as a comment, to get an output file that works in other
+ installations of gnuplot, without changes and without risk of
+ unwillingly overwriting files.
+
+ `save terminal` will write out just the `terminal` status, without
+ the comment marker in front of it. This is mainly useful for
+ switching the `terminal` setting for a short while, and getting back
+ to the previously set terminal, afterwards, by loading the saved
+ `terminal` status. Note that for a single gnuplot session you may
+ rather use the other method of saving and restoring current terminal
+ by the commands `set term push` and `set term pop`, see `set term`.
+
+ The filename must be enclosed in quotes.
+
+ The special filename "-" may be used to `save` commands to standard output.
+ On systems which support a popen function (Unix), the output of save can be
+ piped through an external program by starting the file name with a '|'.
+ This provides a consistent interface to `gnuplot`'s internal settings to
+ programs which communicate with `gnuplot` through a pipe.  Please see
+ help for `batch/interactive` for more details.
+
+ Examples:
+       save 'work.gnu'
+       save functions 'func.dat'
+       save var 'var.dat'
+       save set 'options.dat'
+       save term 'myterm.gnu'
+       save '-'
+       save '|grep title >t.gp'
+?commands set
+?commands show
+?set
+?show
+?show all
+ The `set` command can be used to set _lots_ of options.  No screen is
+ drawn, however, until a `plot`, `splot`, or `replot` command is given.
+
+ The `show` command shows their settings;  `show all` shows all the settings.
+
+ Options changed using `set` can be returned to the default state by giving the
+ corresponding `unset` command.  See also the `reset` command, which returns
+ all settable parameters to default values.
+
+ If a variable contains time/date data, `show` will display it according to
+ the format currently defined by `set timefmt`, even if that was not in effect
+ when the variable was initially defined.
+ The `set` and `unset` commands may optionally contain an iteration clause.
+ See `iteration`.
+
+?commands set angles
+?commands show angles
+?set angles
+?show angles
+?angles
+?commands set angles degrees
+?set angles degrees
+?angles degrees
+?degrees
+ By default, `gnuplot` assumes the independent variable in polar graphs is in
+ units of radians.  If `set angles degrees` is specified before `set polar`,
+ then the default range is [0:360] and the independent variable has units of
+ degrees.  This is particularly useful for plots of data files.  The angle
+ setting also applies to 3D mapping as set via the `set mapping` command.
+
+ Syntax:
+       set angles {degrees | radians}
+       show angles
+
+ The angle specified in `set grid polar` is also read and displayed in the
+ units specified by `set angles`.
+
+ `set angles` also affects the arguments of the machine-defined functions
+ sin(x), cos(x) and tan(x), and the outputs of asin(x), acos(x), atan(x),
+ atan2(x), and arg(x).  It has no effect on the arguments of hyperbolic
+ functions or Bessel functions.  However, the output arguments of inverse
+ hyperbolic functions of complex arguments are affected; if these functions
+ are used, `set angles radians` must be in effect to maintain consistency
+ between input and output arguments.
+
+       x={1.0,0.1}
+       set angles radians
+       y=sinh(x)
+       print y         #prints {1.16933, 0.154051}
+       print asinh(y)  #prints {1.0, 0.1}
+ but
+       set angles degrees
+       y=sinh(x)
+       print y         #prints {1.16933, 0.154051}
+       print asinh(y)  #prints {57.29578, 5.729578}
+ See also
+ poldat.dem: polar plot using `set angles` demo.
+?commands set arrow
+?commands unset arrow
+?commands show arrow
+?set arrow
+?unset arrow
+?show arrow
+?arrow
+?noarrow
+ Arbitrary arrows can be placed on a plot using the `set arrow` command.
+
+ Syntax:
+       set arrow {<tag>} {from <position>} {to|rto <position>}
+                 { {arrowstyle | as <arrow_style>}
+                   | { {nohead | head | backhead | heads}
+                       {size <length>,<angle>{,<backangle>}}
+                       {filled | empty | nofilled}
+                       {front | back}
+                       { {linestyle | ls <line_style>}
+                         | {linetype | lt <line_type>}
+                           {linewidth | lw <line_width} } } }
+
+       unset arrow {<tag>}
+       show arrow {<tag>}
+
+ <tag> is an integer that identifies the arrow.  If no tag is given, the
+ lowest unused tag value is assigned automatically.  The tag can be used to
+ delete or change a specific arrow.  To change any attribute of an existing
+ arrow, use the `set arrow` command with the appropriate tag and specify the
+ parts of the arrow to be changed.
+
+ The <position>s are specified by either x,y or x,y,z, and may be preceded by
+ `first`, `second`, `graph`, `screen`, or `character` to select the coordinate
+ system.  Unspecified coordinates default to 0.  The end points can be
+ specified in one of five coordinate systems---`first` or `second` axes,
+ `graph`, `screen`, or `character`.  See `coordinates` for details.  A
+ coordinate system specifier does not carry over from the "from" position to
+ the "to" position.  Arrows outside the screen boundaries are permitted but
+ may cause device errors.  If the end point is specified by "rto" instead of
+ "to" it is drawn relatively to the start point.  For linear axes, `graph`
+ and `screen` coordinates, the distance between the start and the end point
+ corresponds to the given relative coordinate.  For logarithmic axes, the
+ relative given coordinate corresponds to the factor of the coordinate
+ between start and end point.  Thus, a negative relative value or zero are
+ not allowed for logarithmic axes.
+
+ Specifying `nohead` produces an arrow drawn without a head---a line segment.
+ This gives you yet another way to draw a line segment on the plot.  By
+ default, an arrow has a head at its end. Specifying `backhead` draws an arrow
+ head at the start point of the arrow while `heads` draws arrow heads on both
+ ends of the line.  Not all terminal types support double-ended arrows.
+
+ Head size can be controlled by `size <length>,<angle>` or
+ `size <length>,<angle>,<backangle>`, where `<length>` defines length of each
+ branch of the arrow head and `<angle>` the angle (in degrees) they make with
+ the arrow.  `<Length>` is in x-axis units; this can be changed by `first`,
+ `second`, `graph`, `screen`, or `character` before the <length>;  see
+ `coordinates` for details.  `<Backangle>` only takes effect when `filled`
+ or `empty` is also used.  Then, `<backangle>` is the angle (in degrees) the
+ back branches make with the arrow (in the same direction as `<angle>`).
+ The `fig` terminal has a restricted backangle function. It supports three
+ different angles. There are two thresholds: Below 70 degrees, the arrow head
+ gets an indented back angle. Above 110 degrees, the arrow head has an acute
+ back angle. Between these thresholds, the back line is straight.
+
+ Specifying `filled` produces filled arrow heads (if heads are used).
+ Filling is supported on filled-polygon capable terminals, see help of `pm3d`
+ for their list, otherwise the arrow heads are closed but not filled.
+ The same result (closed but not filled arrow head) is reached by specifying
+ `empty`.  Further, filling and outline is obviously not supported on
+ terminals drawing arrows by their own specific routines, like `metafont`,
+ `metapost`, `latex` or `tgif`.
+
+ The line style may be selected from a user-defined list of line styles
+ (see `set style line`) or may be defined here by providing values for
+ <line_type> (an index from the default list of styles) and/or <line_width>
+ (which is a  multiplier for the default width).
+
+ Note, however, that if a user-defined line style has been selected, its
+ properties (type and width) cannot be altered merely by issuing another
+ `set arrow` command with the appropriate index and `lt` or `lw`.
+
+ If `front` is given, the arrow is written on top of the graphed data. If
+ `back` is given (the default), the arrow is written underneath the graphed
+ data.  Using `front` will prevent an arrow from being obscured by dense data.
+
+ Examples:
+
+ To set an arrow pointing from the origin to (1,2) with user-defined style 5,
+ use:
+       set arrow to 1,2 ls 5
+
+ To set an arrow from bottom left of plotting area to (-5,5,3), and tag the
+ arrow number 3, use:
+       set arrow 3 from graph 0,0 to -5,5,3
+
+ To change the preceding arrow to end at 1,1,1, without an arrow head and
+ double its width, use:
+       set arrow 3 to 1,1,1 nohead lw 2
+
+ To draw a vertical line from the bottom to the top of the graph at x=3, use:
+       set arrow from 3, graph 0 to 3, graph 1 nohead
+
+ To draw a vertical arrow with T-shape ends, use:
+       set arrow 3 from 0,-5 to 0,5 heads size screen 0.1,90
+
+ To draw an arrow relatively to the start point, where the relative distances
+ are given in graph coordinates, use:
+       set arrow from 0,-5 rto graph 0.1,0.1
+
+ To draw an arrow with relative end point in logarithmic x axis, use:
+       set logscale x
+       set arrow from 100,-5 rto 10,10
+ This draws an arrow from 100,-5 to 1000,5. For the logarithmic x axis, the
+ relative coordinate 10 means "factor 10" while for the linear y axis, the
+ relative coordinate 10 means "difference 10".
+
+ To delete arrow number 2, use:
+       unset arrow 2
+
+ To delete all arrows, use:
+       unset arrow
+
+ To show all arrows (in tag order), use:
+       show arrow
+
+ arrows demos.
+
+?commands set autoscale
+?commands unset autoscale
+?commands show autoscale
+?set autoscale
+?unset autoscale
+?show autoscale
+?autoscale
+?noautoscale
+ Autoscaling may be set individually on the x, y or z axis or globally on all
+ axes. The default is to autoscale all axes.  If you want to autoscale based on
+ a subset of the plots in the figure, you can mark the other ones with the flag
+ `noautoscale`.  See `datafile`.
+
+ Syntax:
+       set autoscale {<axes>{|min|max|fixmin|fixmax|fix} | fix | keepfix}
+       unset autoscale {<axes>}
+       show autoscale
+
+ where <axes> is either `x`, `y`, `z`, `cb`, `x2`, `y2` or `xy`.  A keyword with
+ `min` or `max` appended (this cannot be done with `xy`) tells `gnuplot` to
+ autoscale just the minimum or maximum of that axis.  If no keyword is given,
+ all axes are autoscaled.
+
+ A keyword with `fixmin`, `fixmax` or `fix` appended tells gnuplot to disable
+ extension of the axis range to the next tic mark position, for autoscaled
+ axes using equidistant tics; `set autoscale fix` sets this for all axes.
+ Command `set autoscale keepfix` autoscales all axes while keeping the fix
+ settings.
+
+ When autoscaling, the axis range is automatically computed and the dependent
+ axis (y for a `plot` and z for `splot`) is scaled to include the range of the
+ function or data being plotted.
+
+ If autoscaling of the dependent axis (y or z) is not set, the current y or z
+ range is used.
+
+ Autoscaling the independent variables (x for `plot` and x,y for `splot`) is a
+ request to set the domain to match any data file being plotted.  If there are
+ no data files, autoscaling an independent variable has no effect.  In other
+ words, in the absence of a data file, functions alone do not affect the x
+ range (or the y range if plotting z = f(x,y)).
+
+ Please see `set xrange` for additional information about ranges.
+
+ The behavior of autoscaling remains consistent in parametric mode, (see
+ `set parametric`).  However, there are more dependent variables and hence more
+ control over x, y, and z axis scales.  In parametric mode, the independent or
+ dummy variable is t for `plot`s and u,v for `splot`s.  `autoscale` in
+ parametric mode, then, controls all ranges (t, u, v, x, y, and z) and allows
+ x, y, and z to be fully autoscaled.
+
+ Autoscaling works the same way for polar mode as it does for parametric mode
+ for `plot`, with the extension that in polar mode `set dummy` can be used to
+ change the independent variable from t (see `set dummy`).
+
+ When tics are displayed on second axes but no plot has been specified for
+ those axes, x2range and y2range are inherited from xrange and yrange.  This
+ is done _before_ xrange and yrange are autoextended to a whole number of
+ tics, which can cause unexpected results.  You can use the `fixmin`
+ or `fixmax` options to avoid this.
+
+ Examples:
+
+ This sets autoscaling of the y axis (other axes are not affected):
+       set autoscale y
+
+ This sets autoscaling only for the minimum of the y axis (the maximum of the
+ y axis and the other axes are not affected):
+       set autoscale ymin
+
+ This disables extension of the x2 axis tics to the next tic mark,
+ thus keeping the exact range as found in the plotted data and functions:
+       set autoscale x2fixmin
+       set autoscale x2fixmax
+
+ This sets autoscaling of the x and y axes:
+       set autoscale xy
+
+ This sets autoscaling of the x, y, z, x2 and y2 axes:
+       set autoscale
+
+ This disables autoscaling of the x, y, z, x2 and y2 axes:
+       unset autoscale
+
+ This disables autoscaling of the z axis only:
+       unset autoscale z
+?commands set autoscale parametric
+?set autoscale parametric
+?set autoscale t
+ When in parametric mode (`set parametric`), the xrange is as fully scalable
+ as the y range.  In other words, in parametric mode the x axis can be
+ automatically scaled to fit the range of the parametric function that is
+ being plotted.  Of course, the y axis can also be automatically scaled just
+ as in the non-parametric case.  If autoscaling on the x axis is not set, the
+ current x range is used.
+
+ Data files are plotted the same in parametric and non-parametric mode.
+ However, there is a difference in mixed function and data plots: in
+ non-parametric mode with autoscaled x, the x range of the datafile controls
+ the x range of the functions; in parametric mode it has no influence.
+
+ For completeness a last command `set autoscale t` is accepted.  However, the
+ effect of this "scaling" is very minor.  When `gnuplot` determines that the
+ t range would be empty, it makes a small adjustment if autoscaling is true.
+ Otherwise, `gnuplot` gives an error.  Such behavior may, in fact, not be very
+ useful and the command `set autoscale t` is certainly questionable.
+
+ `splot` extends the above ideas as you would expect.  If autoscaling is set,
+ then x, y, and z ranges are computed and each axis scaled to fit the
+ resulting data.
+?commands set autoscale polar
+?set autoscale polar
+ When in polar mode (`set polar`), the xrange and the yrange may be left
+ in autoscale mode.  If `set rrange` is used to limit the extent of the polar
+ axis, then xrange and yrange will adjust to match this automatically.
+ However, explicit xrange and yrange commands can later be used to make
+ further adjustments.  See `set rrange`.  The trange may also be autoscaled.
+ Note that if the trange is contained within one quadrant, autoscaling will
+ produce a polar plot of only that single quadrant.
+
+ Explicitly setting one or two ranges but not others may lead to unexpected
+ results.
+ See also
+ polar demos.
+?commands set bars
+?commands show bars
+?set bars
+?show bars
+?bars
+ The `set bars` command controls the tics at the ends of error bars,
+ and also at the end of the whiskers belonging to a boxplot.
+
+ Syntax:
+       set bars {small | large | fullwidth | <size>} {front | back}
+       unset bars
+       show bars
+
+ `small` is a synonym for 0.0, and `large` for 1.0.
+ The default is 1.0 if no size is given.
+
+ The keyword `fullwidth` is relevant only to boxplots and to histograms with
+ errorbars.  It sets the width of the errorbar ends to be the same as the width
+ of the associated box.  It does not change the width of the box itself.
+
+ The `front` and `back` keywords are relevant only to errorbars attached
+ to filled rectangles (boxes, candlesticks, histograms).
+?commands show bind
+?show bind
+ Show the current state of all hotkey bindings. See `bind`.
+?commands set bmargin
+?set bmargin
+?bmargin
+ The command `set bmargin` sets the size of the bottom margin.
+ Please see `set margin` for details.
+?commands set border
+?commands unset border
+?commands show border
+?set border
+?unset border
+?show border
+?border
+?noborder
+ The `set border` and `unset border` commands control the display of the graph
+ borders for the `plot` and `splot` commands.  Note that the borders do not
+ necessarily coincide with the axes; with `plot` they often do, but with
+ `splot` they usually do not.
+
+ Syntax:
+       set border {<integer>} {front | back} {linewidth | lw <line_width>}
+                  {{linestyle | ls <line_style>} | {linetype | lt <line_type>}}
+       unset border
+       show border
+
+ With a `splot` displayed in an arbitrary orientation, like `set view 56,103`,
+ the four corners of the x-y plane can be referred to as "front", "back",
+ "left" and "right".  A similar set of four corners exist for the top surface,
+ of course.  Thus the border connecting, say, the back and right corners of the
+ x-y plane is the "bottom right back" border, and the border connecting the top
+ and bottom front corners is the "front vertical".  (This nomenclature is
+ defined solely to allow the reader to figure out the table that follows.)
+
+ The borders are encoded in a 12-bit integer: the bottom four bits control the
+ border for `plot` and the sides of the base for `splot`; the next four bits
+ control the verticals in `splot`; the top four bits control the edges on top
+ of the `splot`.  In detail, `<integer>` should be the sum of the appropriate
+ entries from the following table:
+
+             Bit     plot        splot
+               1   bottom      bottom left front
+               2   left        bottom left back
+               4   top         bottom right front
+               8   right       bottom right back
+              16   no effect   left vertical
+              32   no effect   back vertical
+              64   no effect   right vertical
+             128   no effect   front vertical
+             256   no effect   top left back
+             512   no effect   top right back
+            1024   no effect   top left front
+            2048   no effect   top right front
+
+
+ Various bits or combinations of bits may be added together in the command.
+
+ The default is 31, which is all four sides for `plot`, and base and z axis
+ for `splot`.
+
+ In 2D plots the border is normally drawn on top of all plots elements
+ (`front`). If you want the border to be drawn behind the plot elements,
+ use `set border back`.
+
+ Using the optional <line_style>, <line_type> and <line_width> specifiers, the
+ way the border lines are drawn can be influenced (limited by what the current
+ terminal driver supports).
+
+ For `plot`, tics may be drawn on edges other than bottom and left by enabling
+ the second axes -- see `set xtics` for details.
+
+ If a `splot` draws only on the base, as is the case with "`unset surface; set
+ contour base`", then the verticals and the top are not drawn even if they are
+ specified.
+
+ The `set grid` options 'back', 'front' and 'layerdefault' also
+ control the order in which the border lines are drawn with respect to
+ the output of the plotted data.
+
+ Examples:
+
+ Draw default borders:
+       set border
+
+ Draw only the left and bottom (`plot`) or both front and back bottom left
+ (`splot`) borders:
+       set border 3
+
+ Draw a complete box around a `splot`:
+       set border 4095
+
+ Draw a topless box around a `splot`, omitting the front vertical:
+       set border 127+256+512 # or set border 1023-128
+
+ Draw only the top and right borders for a `plot` and label them as axes:
+       unset xtics; unset ytics; set x2tics; set y2tics; set border 12
+
+?commands set boxwidth
+?commands show boxwidth
+?set boxwidth
+?show boxwidth
+?boxwidth
+ The `set boxwidth` command is used to set the default width of boxes in the
+ `boxes`, `boxerrorbars`, `boxplot`, `candlesticks` and `histograms` styles.
+
+ Syntax:
+       set boxwidth {<width>} {absolute|relative}
+       show boxwidth
+
+ By default, adjacent boxes are extended in width until they touch each other.
+ A different default width may be specified using the `set boxwidth` command.
+ `Relative` widths are interpreted as being a fraction of this default width.
+
+ An explicit value for the boxwidth is interpreted as being a number of units
+ along the current x axis (`absolute`) unless the modifier `relative` is given.
+ If the x axis is a log-scale (see `set log`) then the value of boxwidth is
+ truly "absolute" only at x=1; this physical width is maintained everywhere
+ along the axis (i.e. the boxes do not become narrower the value of x
+ increases). If the range spanned by a log scale x axis is far from x=1,
+ some experimentation may be required to find a useful value of boxwidth.
+
+ The default is superseded by explicit width information taken from an extra
+ data column in styles `boxes` or `boxerrorbars`.  In a four-column data set,
+ the fourth column will be interpreted as the box width unless the width is set
+ to -2.0, in which case the width will be calculated automatically.
+ See `style boxes` and `style boxerrorbars` for more details.
+
+ To set the box width to automatic use the command
+       set boxwidth
+
+ or, for four-column data,
+       set boxwidth -2
+
+ The same effect can be achieved with the `using` keyword in `plot`:
+       plot 'file' using 1:2:3:4:(-2)
+
+ To set the box width to half of the automatic size use
+       set boxwidth 0.5 relative
+
+ To set the box width to an absolute value of 2 use
+       set boxwidth 2 absolute
+?commands set clabel
+?commands unset clabel
+?commands show clabel
+?set clabel
+?unset clabel
+?show clabel
+?clabel
+ `gnuplot` will vary the linetype used for each contour level when clabel is
+ set.  When this option on (the default), a legend labels each linestyle with
+ the z level it represents.  It is not possible at present to separate the
+ contour labels from the surface key.
+
+ Syntax:
+       set clabel {'<format>'}
+       unset clabel
+       show clabel
+
+ The default for the format string is %8.3g, which gives three decimal places.
+ This may produce poor label alignment if the key is altered from its default
+ configuration.
+
+ The first contour linetype, or only contour linetype when clabel is off, is
+ the surface linetype +1; contour points are the same style as surface points.
+
+ See also `set contour`.
+?commands set clip
+?commands unset clip
+?commands show clip
+?set clip
+?unset clip
+?show clip
+?clip
+?noclip
+ `gnuplot` can clip data points and lines that are near the boundaries of a
+ graph.
+
+ Syntax:
+       set clip <clip-type>
+       unset clip <clip-type>
+       show clip
+
+ Three clip types for points and lines are supported by `gnuplot`: `points`,
+ `one`, and `two`. One, two, or all three clip types may be active for a
+ single graph.
+ Note that clipping of color filled quadrangles drawn by `pm3d` maps and
+ surfaces is not controlled by this command, but by `set pm3d clip1in` and
+ `set pm3d clip4in`.
+
+ The `points` clip type forces `gnuplot` to clip (actually, not plot at all)
+ data points that fall within but too close to the boundaries.  This is done
+ so that large symbols used for points will not extend outside the boundary
+ lines.  Without clipping points near the boundaries, the plot may look bad.
+ Adjusting the x and y ranges may give similar results.
+
+ Setting the `one` clip type causes `gnuplot` to draw a line segment which has
+ only one of its two endpoints within the graph.  Only the in-range portion of
+ the line is drawn.  The alternative is to not draw any portion of the line
+ segment.
+
+ Some lines may have both endpoints out of range, but pass through the graph.
+ Setting the `two` clip-type allows the visible portion of these lines to be
+ drawn.
+
+ In no case is a line drawn outside the graph.
+
+ The defaults are `noclip points`, `clip one`, and `noclip two`.
+
+ To check the state of all forms of clipping, use
+       show clip
+
+ For backward compatibility with older versions, the following forms are also
+ permitted:
+       set clip
+       unset clip
+
+ `set clip` is synonymous with `set clip points`; `unset clip` turns off all
+ three types of clipping.
+?commands set cntrparam
+?commands show cntrparam
+?set cntrparam
+?show cntrparam
+?cntrparam
+ `set cntrparam` controls the generation of contours and their smoothness for
+ a contour plot. `show contour` displays current settings of `cntrparam` as
+ well as `contour`.
+
+ Syntax:
+       set cntrparam { { linear
+                       | cubicspline
+                       | bspline
+                       | points <n>
+                       | order <n>
+                       | levels { auto {<n>} | <n>
+                                  | discrete <z1> {,<z2>{,<z3>...}}
+                                  | incremental <start>, <incr> {,<end>}
+                                }
+                       }
+                     }
+       show contour
+
+ This command has two functions.  First, it sets the values of z for which
+ contour points are to be determined (by linear interpolation between data
+ points or function isosamples.)  Second, it controls the way contours are
+ drawn between the points determined to be of equal z.  <n> should be an
+ integral constant expression and <z1>, <z2> ... any constant expressions.
+ The parameters are:
+
+ `linear`, `cubicspline`, `bspline`---Controls type of approximation or
+ interpolation.  If `linear`, then straight line segments connect points of
+ equal z magnitude.  If `cubicspline`, then piecewise-linear contours are
+ interpolated between the same equal z points to form somewhat smoother
+ contours, but which may undulate.  If `bspline`, a guaranteed-smoother curve
+ is drawn, which only approximates the position of the points of equal-z.
+
+ `points`---Eventually all drawings are done with piecewise-linear strokes.
+ This number controls the number of line segments used to approximate the
+ `bspline` or `cubicspline` curve.  Number of cubicspline or bspline
+ segments (strokes) = `points` * number of linear segments.
+
+ `order`---Order of the bspline approximation to be used.  The bigger this
+ order is, the smoother the resulting contour.  (Of course, higher order
+ bspline curves will move further away from the original piecewise linear
+ data.)  This option is relevant for `bspline` mode only.  Allowed values are
+ integers in the range from 2 (linear) to 10.
+
+ `levels`--- Selection of contour levels,  controlled by `auto` (default),
+ `discrete`, `incremental`, and <n>, number of contour levels.
+
+ For `auto`, <n> specifies a nominal number of levels; the actual number will
+ be adjusted to give simple labels. If the surface is bounded by zmin and zmax,
+ contours will be generated at integer multiples of dz between zmin and zmax,
+ where dz is 1, 2, or 5 times some power of ten (like the step between two
+ tic marks).
+
+ For `levels discrete`, contours will be generated at z = <z1>, <z2> ... as
+ specified; the number of discrete levels sets the number of contour levels.
+ In `discrete` mode, any `set cntrparam levels <n>` are ignored.
+
+ For `incremental`, contours are generated at values of z beginning at <start>
+ and increasing by <increment>, until the number of contours is reached. <end>
+ is used to determine the number of contour levels, which will be changed by
+ any subsequent `set cntrparam levels <n>`.  If the z axis is logarithmic,
+ <increment> will be interpreted as a factor, just like in `set ztics`.
+
+ If the command `set cntrparam` is given without any arguments specified,  the
+ defaults are used: linear, 5 points, order 4, 5 auto levels.
+
+ Examples:
+       set cntrparam bspline
+       set cntrparam points 7
+       set cntrparam order 10
+
+ To select levels automatically, 5 if the level increment criteria are met:
+       set cntrparam levels auto 5
+
+ To specify discrete levels at .1, .37, and .9:
+       set cntrparam levels discrete .1,1/exp(1),.9
+
+ To specify levels from 0 to 4 with increment 1:
+       set cntrparam levels incremental  0,1,4
+
+ To set the number of levels to 10 (changing an incremental end or possibly
+ the number of auto levels):
+       set cntrparam levels 10
+
+ To set the start and increment while retaining the number of levels:
+       set cntrparam levels incremental 100,50
+
+ See also `set contour` for control of where the contours are drawn, and
+ `set clabel` for control of the format of the contour labels and linetypes.
+
+ See also
+ contours demo (contours.dem)
+ and
+ contours with user defined levels demo (discrete.dem).
+?commands set colorbox
+?commands show colorbox
+?commands unset colorbox
+?set colorbox
+?show colorbox
+?unset colorbox
+?colorbox
+
+ The color scheme, i.e. the gradient of the smooth color with min_z and
+ max_z values of `pm3d`'s `palette`, is drawn in a color box unless `unset
+ colorbox`.
+
+       set colorbox
+       set colorbox {
+                  { vertical | horizontal }
+                  { default | user }
+                  { origin x, y }
+                  { size x, y }
+                  { front | back }
+                  { noborder | bdefault | border [line style] }
+                }
+       show colorbox
+       unset colorbox
+
+ Color box position can be `default` or `user`.  If the latter is specified the
+ values as given with the `origin` and `size` subcommands are used. The box
+ can be drawn after (`front`) or before (`back`) the graph or the surface.
+
+ The orientation of the color gradient can be switched by options `vertical`
+ and `horizontal`.
+
+ `origin x, y` and `size x, y` are used only in combination with the `user`
+ option. The x and y values are interpreted as screen coordinates by default,
+ and this is the only legal option for 3D plots. 2D plots, including splot with
+ `set view map`, allow any coordinate system to be specified.  Try for example:
+     set colorbox horiz user origin .1,.02 size .8,.04
+ which will draw a horizontal gradient somewhere at the bottom of the graph.
+
+ `border` turns the border on (this is the default). `noborder` turns the border
+ off. If an positive integer argument is given after `border`, it is used as a
+ line style tag which is used for drawing the border, e.g.:
+     set style line 2604 linetype -1 linewidth .4
+     set colorbox border 2604
+ will use line style `2604`, a thin line with the default border color (-1)
+ for drawing the border. `bdefault` (which is the default) will use the default
+ border line style for drawing the border of the color box.
+
+ The axis of the color box is called `cb` and it is controlled by means of the
+ usual axes commands, i.e. `set/unset/show` with `cbrange`, `[m]cbtics`,
+ `format cb`, `grid [m]cb`, `cblabel`, and perhaps even `cbdata`, `[no]cbdtics`,
+ `[no]cbmtics`.
+
+ `set colorbox` without any parameter switches the position to default.
+ `unset colorbox` resets the default parameters for the colorbox and switches
+ the colorbox off.
+
+ See also help for `set pm3d`, `set palette`, `x11 pm3d`, and `set style line`.
+?colornames
+?show colornames
+?commands show colornames
+?show palette colornames
+ Gnuplot knows a limited number of color names. You can use these to define
+ the color range spanned by a pm3d palette, or to assign a terminal-independent
+ color to a particular linetype or linestyle. To see the list of known color
+ names, use the command `show colornames`.   Example:
+
+       set style line 1 linecolor rgb "sea-green"
+?commands set contour
+?commands unset contour
+?commands show contour
+?set contour
+?unset contour
+?show contour
+?contour
+?nocontour
+ `set contour` enables contour drawing for surfaces.  This option is available
+ for `splot` only.  It requires grid data, see `grid_data` for more details.
+ If contours are desired from non-grid data, `set dgrid3d` can be used to
+ create an appropriate grid.
+
+ Syntax:
+       set contour {base | surface | both}
+       unset contour
+       show contour
+
+ The three options specify where to draw the contours: `base` draws the
+ contours on the grid base where the x/ytics are placed, `surface` draws the
+ contours on the surfaces themselves, and `both` draws the contours on both
+ the base and the surface.  If no option is provided, the default is `base`.
+
+ See also `set cntrparam` for the parameters that affect the drawing of
+ contours, and `set clabel` for control of labelling of the contours.
+
+ The surface can be switched off (see `set surface`), giving a contour-only
+ graph.  Though it is possible to use `set size` to enlarge the plot to fill
+ the screen, more control over the output format can be obtained by writing
+ the contour information to a file, and rereading it as a 2D datafile plot:
+
+       unset surface
+       set contour
+       set cntrparam ...
+       set table 'filename'
+       splot ...
+       unset table
+       # contour info now in filename
+       set term <whatever>
+       plot 'filename'
+
+ In order to draw contours, the data should be organized as "grid data".  In
+ such a file all the points for a single y-isoline are listed, then all the
+ points for the next y-isoline, and so on.  A single blank line (a line
+ containing no characters other than blank spaces and a carriage return and/or
+ a line feed) separates one y-isoline from the next.
+ See also `splot datafile`.
+
+ See also
+ contours demo (contours.dem)
+ and
+ contours with user defined levels demo (discrete.dem).
+?set data style
+ This form of the command is deprecated. Please see `set style data`.
+?set datafile
+?show datafile
+ The `set datafile` command options control interpretation of fields read from
+ input data files by the `plot`, `splot`, and `fit` commands.  Six such
+ options are currently implemented.
+?set datafile fortran
+?show datafile fortran
+?fortran
+ The `set datafile fortran` command enables a special check for values in the
+ input file expressed as Fortran D or Q constants. This extra check slows down
+ the input process, and should only be selected if you do in fact have datafiles
+ containing Fortran D or Q constants. The option can be disabled again using
+ `unset datafile fortran`.
+?set datafile nofpe_trap
+?fpe_trap
+?nofpe_trap
+ The `set datafile nofpe_trap` command tells gnuplot not to re-initialize a
+ floating point exception handler before every expression evaluation used while
+ reading data from an input file.  This can significantly speed data input from
+ very large files at the risk of program termination if a floating-point
+ exception is generated.
+?set datafile missing
+?show datafile missing
+?set missing
+?missing
+ The `set datafile missing` command allows you to tell `gnuplot` what character
+ string is used in a data file to denote missing data.  Exactly how this missing
+ value will be treated depends on the `using` specifier of the `plot` or `splot`
+ command.
+
+ Syntax:
+       set datafile missing {"<string>"}
+       show datafile missing
+       unset datafile
+
+ Example:
+       # Ignore entries containing IEEE NaN ("Not a Number") code
+       set datafile missing "NaN"
+
+ Example:
+       set style data linespoints
+       plot '-'
+          1 10
+          2 20
+          3 ?
+          4 40
+          5 50
+          e
+       set datafile missing "?"
+       plot '-'
+          1 10
+          2 20
+          3 ?
+          4 40
+          5 50
+          e
+       plot '-' using 1:2
+          1 10
+          2 20
+          3 ?
+          4 40
+          5 50
+          e
+       plot '-' using 1:($2)
+          1 10
+          2 20
+          3 ?
+          4 40
+          5 50
+          e
+
+ The first `plot` will recognize only the first datum in the "3 ?" line.  It
+ will use the single-datum-on-a-line convention that the line number is "x"
+ and the datum is "y", so the point will be plotted (in this case erroneously)
+ at (2,3).
+
+ The second and third `plot` commands will correctly ignore the middle line.
+ The plotted line will connect the points at (2,20) and (4,40).
+
+ The fourth `plot` will also correctly ignore the middle line, but the plotted
+ line will not connect the points at (2,20) and (4,40).
+
+ There is no default character for `missing`, but in many cases any
+ non-parsible string of characters found where a numerical value is expected
+ will be treated as missing data.
+
+?set datafile separator
+?show datafile separator
+?datafile separator
+?separator
+ The command `set datafile separator "<char>"` tells `gnuplot` that data fields
+ in subsequent input files are separated by <char> rather than by whitespace.
+ The most common use is to read in csv (comma-separated value) files written
+ by spreadsheet or database programs. By default data fields are separated by
+ whitespace.
+
+ Syntax:
+       set datafile separator {"<char>" | whitespace}
+
+ Examples:
+       # Input file contains tab-separated fields
+       set datafile separator "\t"
+
+       # Input file contains comma-separated values fields
+       set datafile separator ","
+?set datafile commentschars
+?commentschars
+ The `set datafile commentschars` command allows you to tell `gnuplot` what
+ characters are used in a data file to denote comments.  Gnuplot will ignore
+ rest of the line behind the specified characters if either of them is the
+ first non-blank character on the line.
+
+ Syntax:
+       set datafile commentschars {"<string>"}
+       show datafile commentschars
+       unset commentschars
+
+ Default value of the string is "#!" on VMS and "#" otherwise.
+
+ Then, the following line in a data file is completely ignored
+     # 1 2 3 4
+ but the following
+     1 # 3 4
+ produces rather unexpected plot unless
+     set datafile missing '#'
+ is specified as well.
+
+ Example:
+       set datafile commentschars "#!%"
+?set datafile binary
+ The `set datafile binary` command is used to set the defaults when reading
+ binary data files.  The syntax matches precisely that used for commands
+ `plot` and `splot`.  See `binary matrix` and `binary general` for details
+ about the keywords that can be present in <binary list>.
+
+ Syntax:
+       set datafile binary <binary list>
+       show datafile binary
+       show datafile
+       unset datafile
+
+ Examples:
+       set datafile binary filetype=auto
+       set datafile binary array=(512,512) format="%uchar"
+
+?show datafile binary
+       show datafile binary   # list current settings
+?commands set decimalsign
+?commands show decimalsign
+?commands unset decimalsign
+?set decimalsign
+?show decimalsign
+?unset decimalsign
+?decimalsign
+ The `set decimalsign` command selects a decimal sign for numbers printed
+ into tic labels or `set label` strings.
+
+ Syntax:
+       set decimalsign {<value> | locale {"<locale>"}}
+       unset decimalsign
+       show decimalsign
+
+ The argument <value> is a string to be used in place of the usual
+ decimal point. Typical choices include the period, '.', and the comma,
+ ',', but others may be useful, too.  If you omit the <value> argument,
+ the decimal separator is not modified from the usual default, which is
+ a period.  Unsetting decimalsign has the same effect as omitting <value>.
+
+ Example:
+
+ Correct typesetting in most European countries requires:
+       set decimalsign ','
+
+ Please note: If you set an explicit string, this affects only numbers that
+ are printed using gnuplot's gprintf() formatting routine, include axis tics.
+ It does not affect the format expected for input data, and it does not affect
+ numbers printed with the sprintf() formatting routine. To change the behavior
+ of both input and output formatting, instead use the form
+
+       set decimalsign locale
+
+ This instructs the program to use both input and output formats in accordance
+ with the current setting of the LC_ALL, LC_NUMERIC, or LANG environmental
+ variables.
+
+       set decimalsign locale "foo"
+
+ This instructs the program to format all input and output in accordance with
+ locale "foo", which must be installed.  If locale "foo" is not found then an
+ error message is printed and the decimal sign setting is unchanged.
+ On linux systems you can get a list of the locales installed on your machine by
+ typing "locale -a". A typical linux locale string is of the form "sl_SI.UTF-8".
+ A typical Windows locale string is of the form "Slovenian_Slovenia.1250" or
+ "slovenian". Please note that interpretation of the locale settings is done by
+ the C library at runtime. Older C libraries may offer only partial support for
+ locale settings such as the thousands grouping separator character.
+
+       set decimalsign locale; set decimalsign "."
+
+ This sets all input and output to use whatever decimal sign is correct for
+ the current locale, but over-rides this with an explicit '.' in numbers
+ formatted using gnuplot's internal gprintf() function.
+?commands set dgrid3d
+?commands unset dgrid3d
+?commands show dgrid3d
+?set dgrid3d
+?unset dgrid3d
+?show dgrid3d
+?dgrid3d
+?nodgrid3d
+?kdensity2d
+ The `set dgrid3d` command enables, and can set parameters for, non-grid to
+ grid data mapping.  See `splot grid_data` for more details about the grid data
+ structure.
+
+ Syntax:
+       set dgrid3d {<rows>} {,{<cols>}}
+                   { splines |
+                     qnorm {<norm>} |
+                     (gauss | cauchy | exp | box | hann) 
+                       {kdensity} {<dx>} {,<dy>} }
+       unset dgrid3d
+       show dgrid3d
+
+ By default `dgrid3d` is disabled.  When enabled, 3D data read from a file
+ are always treated as a scattered data set.  A grid with dimensions derived
+ from a bounding box of the scattered data and size as specified by the
+ row/col_size parameters is created for plotting and contouring.  The grid
+ is equally spaced in x (rows) and in y (columns); the z values are computed
+ as weighted averages or spline interpolations of the scattered points' z 
+ values. In other words, a regularly spaced grid is created and the a smooth
+ approximation to the raw data is evaluated for all grid points. This
+ approximation is plotted in place of the raw data.
+
+ The number of columns defaults to the number of rows, which defaults to 10.
+
+ Several algorithms are available to calculate the approximation from the
+ raw data. Some of these algorithms can take additional parameters.
+ These interpolations are such the closer the data point is to a grid point, 
+ the more effect it has on that grid point.
+
+ The `splines` algorithm calculates an interpolation based on "thin plate
+ splines". It does not take additional parameters.
+
+ The `qnorm` algorithm calculates a weighted average of the input data at
+ each grid point. Each data point is weighted inversely by its distance from
+ the grid point raised to the norm power.  (Actually, the weights are given
+ by the inverse of dx^norm + dy^norm, where dx and dy are the components of
+ the separation of the grid point from each data point.  For some norms 
+ that are powers of two, specifically 4, 8, and 16, the computation is 
+ optimized by using the Euclidean distance in the weight calculation, 
+ (dx^2+dy^2)^norm/2.  However, any non-negative integer can be used.) 
+ The power of the norm can be specified as a single optional parameter. 
+ This algorithm is the default.
+
+ Finally, several smoothing kernels are available to calculate weighted
+ averages: z = Sum_i w(d_i) * z_i / Sum_i w(d_i), where z_i is the value
+ of the i-th data point and d_i is the distance between the current grid
+ point and the location of the i-th data point. All kernels assign higher
+ weights to data points that are close to the current grid point and lower
+ weights to data points further away.
+
+ The following kernels are available:
+       gauss :     w(d) = exp(-d*d)
+       cauchy :    w(d) = 1/(1 + d*d)
+       exp :       w(d) = exp(-d)
+       box :       w(d) = 1                     if d<1
+                        = 0                     otherwise
+       hann :      w(d) = 0.5*(1-cos(2*pi*d))   if d<1
+                   w(d) = 0                     otherwise
+
+ When using one of these five smoothing kernels, up to two additional
+ numerical parameters can be specified: dx and dy. These are used to 
+ rescale the coordinate differences when calculating the distance: 
+ d_i = sqrt( ((x-x_i)/dx)**2 + ((y-y_i)/dy)**2 ), where x,y are the
+ coordinates of the current grid point and x_i,y_i are the coordinates
+ of the i-th data point. The value of dy defaults to the value of dx,
+ which defaults to 1. The parameters dx and dy make it possible to 
+ control the radius over which data points contribute to a grid point
+ IN THE UNITS OF THE DATA ITSELF.
+
+ The optional keyword `kdensity2d`, which must come after the name of the
+ kernel, but before the (optional) scale parameters, modifies the algorithm
+ so that the values calculated for the grid points are not divided by the 
+ sum of the weights ( z = Sum_i w(d_i) * z_i ). If all z_i are constant, 
+ this effectively plots a bivariate kernel density estimate: a kernel 
+ function (one of the five defined above) is placed at each data point,
+ the sum of these kernels is evaluated at every grid point, and this smooth
+ surface is plotted instead of the original data. This is similar in 
+ principle to + what the `smooth kdensity` option does to 1D datasets.
+ (See kdensity2d.dem for usage demo)
+
+ A slightly different syntax is also supported for reasons of backwards
+ compatibility. If no interpolation algorithm has been explicitly selected,
+ the `qnorm` algorithm is assumed. Up to three comma-separated, optional
+ parameters can be specified, which are interpreted as the the number of
+ rows, the number of columns, and the norm value, respectively.
+
+ The `dgrid3d` option is a simple scheme which replaces scattered data
+ with weighted averages on a regular grid.  More sophisticated approaches
+ to this problem exist and should be used to preprocess the data outside
+ `gnuplot` if this simple solution is found inadequate.
+
+ See also
+ dgrid3d.dem: dgrid3d demo.
+ and
+ scatter.dem: dgrid3d demo.
+
+?commands set dummy
+?commands show dummy
+?set dummy
+?show dummy
+?dummy
+ The `set dummy` command changes the default dummy variable names.
+
+ Syntax:
+       set dummy {<dummy-var>} {,<dummy-var>}
+       show dummy
+
+ By default, `gnuplot` assumes that the independent, or "dummy", variable for
+ the `plot` command is "t" if in parametric or polar mode, or "x" otherwise.
+ Similarly the independent variables for the `splot` command are "u" and "v"
+ in parametric mode (`splot` cannot be used in polar mode), or "x" and "y"
+ otherwise.
+
+ It may be more convenient to call a dummy variable by a more physically
+ meaningful or conventional name.  For example, when plotting time functions:
+
+       set dummy t
+       plot sin(t), cos(t)
+
+ At least one dummy variable must be set on the command; `set dummy` by itself
+ will generate an error message.
+
+ Examples:
+       set dummy u,v
+       set dummy ,s
+
+ The second example sets the second variable to s.
+?commands set encoding
+?commands show encoding
+?set encoding
+?show encoding
+?encoding
+?encodings
+ The `set encoding` command selects a character encoding.
+ Syntax:
+       set encoding {<value>}
+       set encoding locale
+       show encoding
+
+ Valid values are
+    default     - tells a terminal to use its default encoding
+    iso_8859_1  - the most common Western European encoding used by many
+                  Unix workstations and by MS-Windows. This encoding is
+                  known in the PostScript world as 'ISO-Latin1'.
+    iso_8859_15 - a variant of iso_8859_1 that includes the Euro symbol
+    iso_8859_2  - used in Central and Eastern Europe
+    iso_8859_9  - used in Turkey (also known as Latin5)
+    koi8r       - popular Unix cyrillic encoding
+    koi8u       - ukrainian Unix cyrillic encoding
+    cp437       - codepage for MS-DOS
+    cp850       - codepage for OS/2, Western Europe
+    cp852       - codepage for OS/2, Central and Eastern Europe
+    cp950       - MS version of Big5 (emf terminal only)
+    cp1250      - codepage for MS Windows, Central and Eastern Europe
+    cp1251      - codepage for 8-bit Russian, Serbian, Bulgarian, Macedonian
+    cp1254      - codepage for MS Windows, Turkish (superset of Latin5)
+    sjis        - shift-JIS Japanese encoding
+    utf8        - variable-length (multibyte) representation of Unicode
+                  entry point for each character
+
+ The command `set encoding locale` is different from the other options.
+ It attempts to determine the current locale from the runtime environment.
+ On most systems this is controlled by the environmental variables
+ LC_ALL, LC_CTYPE, or LANG.  This mechanism is necessary, for example, to
+ pass multibyte character encodings such as UTF-8 or EUC_JP to the wxt
+ and cairopdf terminals.  This command does not affect the locale-specific
+ representation of dates or numbers.
+ See also `set locale` and `set decimalsign`.
+
+ Generally you must set the encoding before setting the terminal type.
+ Note that encoding is not supported by all terminal drivers and that
+ the device must be able to produce the desired non-standard characters.
+?commands set fit
+?commands show fit
+?set fit
+?show fit
+ The `fit` setting defines where the `fit` command writes its output.
+
+ Syntax:
+       set fit {logfile {"<filename>"}} {{no}errorvariables} {{no}quiet}
+       unset fit
+       show fit
+
+ The <filename> argument must be enclosed in single or double quotes.
+
+ If no filename is given or `unset fit` is used the log file is
+ reset to its default value "fit.log" or the value of the environmental
+ variable `FIT_LOG`.
+
+ If the given logfile name ends with a / or \, it is interpreted to be
+ a directory name, and the actual filename will be "fit.log" in that
+ directory.
+
+ If the `errorvariables` option is turned on, the error of each fitted
+ parameter computed by `fit` will be copied to a user-defined variable
+ whose name is formed by appending "_err" to the name of the parameter
+ itself.  This is useful mainly to put the parameter and its error onto
+ a plot of the data and the fitted function, for reference, as in:
+
+        set fit errorvariables
+        fit f(x) 'datafile' using 1:2 via a, b
+        print "error of a is:", a_err
+        set label 'a=%6.2f', a, '+/- %6.2f', a_err
+        plot 'datafile' using 1:2, f(x)
+
+ By default the information written to the log file is also echoed to
+ the terminal session. `set fit quiet` turns off the echo.
+?commands set fontpath
+?commands show fontpath
+?set fontpath
+?show fontpath
+?fontpath
+ The `fontpath` setting defines additional locations for font files
+ searched when including font files. Currently only the postscript terminal
+ supports `fontpath`. If a file cannot be found in the current directory,
+ the directories in `fontpath` are tried. Further documentation concerning
+ the supported file formats is included in the `terminal postscript` section
+ of the documentation.
+
+ Syntax:
+       set fontpath {"pathlist1" {"pathlist2"...}}
+       show fontpath
+
+ Path names may be entered as single directory names, or as a list of
+ path names separated by a platform-specific path separator, eg. colon
+ (':') on Unix, semicolon (';') on DOS/Windows/OS/2 platforms.
+ The `show fontpath`, `save` and `save set` commands replace the
+ platform-specific separator with a space character (' ') for maximum
+ portability. If a directory name ends with an exclamation mark ('!') also
+ the subdirectories of this directory are searched for font files.
+
+ If the environmental variable GNUPLOT_FONTPATH is set, its contents are
+ appended to `fontpath`.  If it is not set, a system dependent default value
+ is used. It is set by testing several directories for existence when using
+ the fontpath the first time. Thus, the first call of `set fontpath`,
+ `show fontpath`, `save fontpath`, `plot`, or `splot` with embedded font
+ files takes a little more time. If you want to save this time you may
+ set the environmental variable GNUPLOT_FONTPATH since probing is switched
+ off, then. You can find out which is the default fontpath by using
+ `show fontpath`.
+
+ `show fontpath` prints the contents of the user-defined fontpath and the
+ system fontpath separately.  However, the `save` and `save set` commands
+ save only the user-specified parts of `fontpath`.
+
+ For terminal drivers that access fonts by filename via the gd library, the
+ font search path is controlled by the environmental variable GDFONTPATH.
+?commands set format
+?commands show format
+?set format
+?show format
+?format
+?format cb
+ The format of the tic-mark labels can be set with the `set format` command
+ or with the `set tics format` or individual `set {axis}tics format` commands.
+
+ Syntax:
+       set format {<axes>} {"<format-string>"}
+       set format {<axes>} {'<format-string>'}
+       show format
+
+ where <axes> is either `x`, `y`, `xy`, `x2`, `y2`, `z`, `cb` or nothing
+ (which applies the format to all axes). The following two commands are
+ equivalent:
+       set format y "%.2f"
+       set ytics format "%.2f"
+
+ The length of the string is restricted to 100 characters.  The default format
+ is "% g", but other formats such as "%.2f" or "%3.0em" are often desirable.
+ The format "$%g$" is often desirable for LaTeX.  If no format string is given,
+ the format will be returned to the default.  If the empty string "" is given,
+ tics will have no labels, although the tic mark will still be plotted.
+ To eliminate the tic marks, use `unset xtics` or `set tics scale 0`.
+
+ Newline (\n) and enhanced text markup is accepted in the format string.
+ Use double-quotes rather than single-quotes in this case.  See also `syntax`.
+ Characters not preceded by "%" are printed verbatim.  Thus you can include
+ spaces and labels in your format string, such as "%g m", which will put " m"
+ after each number.  If you want "%" itself, double it: "%g %%".
+
+ See also `set xtics` for more information about tic labels, and
+ `set decimalsign` for how to use non-default decimal separators in numbers
+ printed this way.
+ See also
+ electron demo (electron.dem).
+?gprintf
+ The string function gprintf("format",x) uses gnuplot's own format specifiers,
+ as do the gnuplot commands `set format`, `set timestamp`, and others. These
+ format specifiers are not the same as those used by the standard C-language
+ routine sprintf(). gprintf() accepts only a single variable to be formatted.
+ Gnuplot also provides an sprintf("format",x1,x2,...) routine if you prefer.
+ For a list of gnuplot's format options, see `format specifiers`.
+?commands set format specifiers
+?set format specifiers
+?format specifiers
+?format_specifiers
+ The acceptable formats (if not in time/date mode) are:
+
+       Format       Explanation
+       %f           floating point notation
+       %e or %E     exponential notation; an "e" or "E" before the power
+       %g or %G     the shorter of %e (or %E) and %f
+       %x or %X     hex
+       %o or %O     octal
+       %t           mantissa to base 10
+       %l           mantissa to base of current logscale
+       %s           mantissa to base of current logscale; scientific power
+       %T           power to base 10
+       %L           power to base of current logscale
+       %S           scientific power
+       %c           character replacement for scientific power
+       %b           mantissa of ISO/IEC 80000 notation (ki, Mi, Gi, Ti, Pi, Ei, Zi, Yi) 
+       %B           prefix of ISO/IEC 80000 notation (ki, Mi, Gi, Ti, Pi, Ei, Zi, Yi) 
+       %P           multiple of pi
+
+
+ A 'scientific' power is one such that the exponent is a multiple of three.
+ Character replacement of scientific powers (`"%c"`) has been implemented
+ for powers in the range -18 to +18.  For numbers outside of this range the
+ format reverts to exponential.
+
+ Other acceptable modifiers (which come after the "%" but before the format
+ specifier) are "-", which left-justifies the number; "+", which forces all
+ numbers to be explicitly signed; " " (a space), which makes positive numbers
+ have a space in front of them where negative numbers have "-";
+ "#", which places a decimal point after
+ floats that have only zeroes following the decimal point; a positive integer,
+ which defines the field width; "0" (the digit, not the letter) immediately
+ preceding the field width, which indicates that leading zeroes are to be used
+ instead of leading blanks; and a decimal point followed by a non-negative
+ integer, which defines the precision (the minimum number of digits of an
+ integer, or the number of digits following the decimal point of a float).
+
+ Some systems may not support all of these modifiers but may also support
+ others; in case of doubt, check the appropriate documentation and
+ then experiment.
+
+ Examples:
+       set format y "%t"; set ytics (5,10)          # "5.0" and "1.0"
+       set format y "%s"; set ytics (500,1000)      # "500" and "1.0"
+       set format y "%+-12.3f"; set ytics(12345)    # "+12345.000  "
+       set format y "%.2t*10^%+03T"; set ytic(12345)# "1.23*10^+04"
+       set format y "%s*10^{%S}"; set ytic(12345)   # "12.345*10^{3}"
+       set format y "%s %cg"; set ytic(12345)       # "12.345 kg"
+       set format y "%.0P pi"; set ytic(6.283185)   # "2 pi"
+       set format y "%.0f%%"; set ytic(50)          # "50%"
+
+       set log y 2; set format y '%l'; set ytics (1,2,3)
+       #displays "1.0", "1.0" and "1.5" (since 3 is 1.5 * 2^1)
+
+ There are some problem cases that arise when numbers like 9.999 are printed
+ with a format that requires both rounding and a power.
+
+ If the data type for the axis is time/date, the format string must contain
+ valid codes for the 'strftime' function (outside of `gnuplot`, type "man
+ strftime").  See `set timefmt` for a list of the allowed input format codes.
+?commands set format date_specifiers
+?commands set format time_specifiers
+?set format date_specifiers
+?set format time_specifiers
+?set date_specifiers
+?set time_specifiers
+?date_specifiers
+?time_specifiers
+ In time/date mode, the acceptable formats are:
+
+       Format       Explanation
+       %a           abbreviated name of day of the week
+       %A           full name of day of the week
+       %b or %h     abbreviated name of the month
+       %B           full name of the month
+       %d           day of the month, 01--31
+       %D           shorthand for "%m/%d/%y" (only output)
+       %F           shorthand for "%Y-%m-%d" (only output)
+       %k           hour, 0--23 (one or two digits)
+       %H           hour, 00--23 (always two digits)
+       %l           hour, 1--12 (one or two digits)
+       %I           hour, 01--12 (always two digits)
+       %j           day of the year, 1--366
+       %m           month, 01--12
+       %M           minute, 0--60
+       %p           "am" or "pm"
+       %r           shorthand for "%I:%M:%S %p" (only output)
+       %R           shorthand for "%H:%M" (only output)
+       %s           number of seconds since the start of year 2000
+       %S           second, integer 0--60 on output, (double) on input
+       %T           shorthand for "%H:%M:%S" (only output)
+       %U           week of the year (week starts on Sunday)
+       %w           day of the week, 0--6 (Sunday = 0)
+       %W           week of the year (week starts on Monday)
+       %y           year, 0-68 for 2000-2068, 69-99 for 1969-1999
+       %Y           year, 4-digit
+
+
+
+ Except for the non-numerical formats, these may be preceded by a "0" ("zero",
+ not "oh") to pad the field length with leading zeroes, and a positive digit,
+ to define the minimum field width (which will be overridden if the specified
+ width is not large enough to contain the number).  The %S format also accepts
+ a precision specifier so that fractional seconds can be written.
+ There is a 24-character limit to the length of the printed text;
+ longer strings will be truncated.
+
+ Examples:
+
+ Suppose the text is "76/12/25 23:11:11".  Then
+       set format x                 # defaults to "12/25/76" \n "23:11"
+       set format x "%A, %d %b %Y"  # "Saturday, 25 Dec 1976"
+       set format x "%r %D"         # "11:11:11 pm 12/25/76"
+
+ Suppose the text is "98/07/06 05:04:03.123456".  Then
+       set format x "%1y/%2m/%3d %01H:%02M:%06.3S"  # "98/ 7/  6 5:04:03.123"
+?set function style
+ This form of the command is deprecated. Please see `set style function`.
+?commands show functions
+?show functions
+ The `show functions` command lists all user-defined functions and their
+ definitions.
+
+ Syntax:
+       show functions
+
+ For information about the definition and usage of functions in `gnuplot`,
+ please see `expressions`.
+ See also
+ splines as user defined functions (spline.dem)
+ and
+ use of functions and complex variables for airfoils (airfoil.dem).
+?commands set grid
+?commands unset grid
+?commands show grid
+?set grid
+?unset grid
+?show grid
+?grid
+?nogrid
+ The `set grid` command allows grid lines to be drawn on the plot.
+
+ Syntax:
+       set grid {{no}{m}xtics} {{no}{m}ytics} {{no}{m}ztics}
+                {{no}{m}x2tics} {{no}{m}y2tics}
+                {{no}{m}cbtics}
+                {polar {<angle>}}
+                {layerdefault | front | back}
+                { {linestyle <major_linestyle>}
+                  | {linetype | lt <major_linetype>}
+                    {linewidth | lw <major_linewidth>}
+                  { , {linestyle | ls <minor_linestyle>}
+                      | {linetype | lt <minor_linetype>}
+                        {linewidth | lw <minor_linewidth>} } }
+       unset grid
+       show grid
+
+ The grid can be enabled and disabled for the major and/or minor tic
+ marks on any axis, and the linetype and linewidth can be specified
+ for major and minor grid lines, also via a predefined linestyle, as
+ far as the active terminal driver supports this.
+
+ Additionally, a polar grid can be selected for 2D plots---circles are drawn
+ to intersect the selected tics, and radial lines are drawn at definable
+ intervals.  (The interval is given in degrees or radians, depending on the
+ `set angles` setting.)  Note that a polar grid is no longer automatically
+ generated in polar mode.
+
+ The pertinent tics must be enabled before `set grid` can draw them; `gnuplot`
+ will quietly ignore instructions to draw grid lines at non-existent tics, but
+ they will appear if the tics are subsequently enabled.
+
+ If no linetype is specified for the minor gridlines, the same linetype as the
+ major gridlines is used.  The default polar angle is 30 degrees.
+
+ If `front` is given, the grid is drawn on top of the graphed data. If
+ `back` is given, the grid is drawn underneath the graphed data. Using
+ `front` will prevent the grid from being obscured by dense data. The
+ default setup, `layerdefault`, is equivalent to `back` for 2D plots.
+ In 3D plots the default is to split up the grid and the graph box into
+ two layers: one behind, the other in front of the plotted data and
+ functions. Since `hidden3d` mode does its own sorting, it ignores
+ all grid drawing order options and passes the grid lines through the
+ hidden line removal machinery instead. These options actually affect
+ not only the grid, but also the lines output by `set border` and the
+ various ticmarks (see `set xtics`).
+
+ Z grid lines are drawn on the bottom of the plot.  This looks better if a
+ partial box is drawn around the plot---see `set border`.
+?commands set hidden3d
+?commands unset hidden3d
+?commands show hidden3d
+?set hidden3d
+?unset hidden3d
+?show hidden3d
+?hidden3d
+?nohidden3d
+ The `set hidden3d` command enables hidden line removal for surface plotting
+ (see `splot`).  Some optional features of the underlying algorithm can also
+ be controlled using this command.
+
+ Syntax:
+       set hidden3d {defaults} |
+                    { {front|back}
+                      {{offset <offset>} | {nooffset}}
+                      {trianglepattern <bitpattern>}
+                      {{undefined <level>} | {noundefined}}
+                      {{no}altdiagonal}
+                      {{no}bentover} }
+       unset hidden3d
+       show hidden3d
+
+ In contrast to the usual display in gnuplot, hidden line removal actually
+ treats the given function or data grids as real surfaces that can't be seen
+ through, so plot elements behind the surface will be hidden by it.  For this
+ to work, the surface needs to have 'grid structure' (see `splot datafile`
+ about this), and it has to be drawn `with lines` or `with linespoints`.
+
+ When `hidden3d` is set, both the hidden portion of the surface and possibly
+ its contours drawn on the base (see `set contour`) as well as the grid will
+ be hidden.  Each surface has its hidden parts removed with respect to itself
+ and to other surfaces, if more than one surface is plotted.  Contours drawn
+ on the surface (`set contour surface`) don't work.
+
+ Labels and arrows are always visible and are unaffected.  The key box is never
+ hidden by the surface. As of gnuplot version 4.6, hidden3d also affects 3D
+ plotting styles `points`, `labels`, `vectors`, and `impulses` even if no
+ surface is present in the graph.  Individual plots within the graph may be
+ explicitly excluded from this processing by appending the extra option 
+ `nohidden3d` to the `with` specifier.
+
+ Hidden3d does not affect solid surfaces drawn using the pm3d mode. To achieve
+ a similar effect purely for pm3d surfaces, use instead `set pm3d depthorder`.
+ To mix pm3d surfaces with normal `hidden3d` processing, use the option
+ `set hidden3d front` to force all elements included in hidden3d processing to
+ be drawn after any remaining plot elements. Then draw the surface twice, once
+ `with lines lt -2` and a second time `with pm3d`. The first instance will
+ include the surface during calculation of occluded elements but will not draw
+ the surface itself.
+
+ Functions are evaluated at isoline intersections.  The algorithm interpolates
+ linearly between function points or data points when determining the visible
+ line segments.  This means that the appearance of a function may be different
+ when plotted with `hidden3d` than when plotted with `nohidden3d` because in
+ the latter case functions are evaluated at each sample.  Please see
+ `set samples` and `set isosamples` for discussion of the difference.
+
+ The algorithm used to remove the hidden parts of the surfaces has some
+ additional features controllable by this command.  Specifying `defaults` will
+ set them all to their default settings, as detailed below.  If `defaults` is
+ not given, only explicitly specified options will be influenced: all others
+ will keep their previous values, so you can turn on/off hidden line removal
+ via `set {no}hidden3d`, without modifying the set of options you chose.
+
+ The first option, `offset`, influences the linetype used for lines on the
+ 'back' side.  Normally, they are drawn in a linetype one index number higher
+ than the one used for the front, to make the two sides of the surface
+ distinguishable.  You can specify a different linetype offset to add
+ instead of the default 1, by `offset <offset>`.  Option `nooffset` stands for
+ `offset 0`, making the two sides of the surface use the same linetype.
+
+ Next comes the option `trianglepattern <bitpattern>`.  <bitpattern> must be
+ a number between 0 and 7, interpreted as a bit pattern.  Each bit determines
+ the visibility of one edge of the triangles each surface is split up into.
+ Bit 0 is for the 'horizontal' edges of the grid, Bit 1 for the 'vertical'
+ ones, and Bit 2 for the diagonals that split each cell of the original grid
+ into two triangles.  The default pattern is 3, making all horizontal and
+ vertical lines visible, but not the diagonals.  You may want to choose 7 to
+ see those diagonals as well.
+
+ The `undefined <level>` option lets you decide what the algorithm is to do
+ with data points that are undefined (missing data, or undefined function
+ values), or exceed the given x-, y- or z-ranges.  Such points can either be
+ plotted nevertheless, or taken out of the input data set.  All surface
+ elements touching a point that is taken out will be taken out as well, thus
+ creating a hole in the surface.  If <level> = 3, equivalent to option
+ `noundefined`, no points will be thrown away at all.  This may produce all
+ kinds of problems elsewhere, so you should avoid this.  <level> = 2 will
+ throw away undefined points, but keep the out-of-range ones.  <level> = 1,
+ the default, will get rid of out-of-range points as well.
+
+ By specifying `noaltdiagonal`, you can override the default handling of a
+ special case can occur if `undefined` is active (i.e. <level> is not 3).
+ Each cell of the grid-structured input surface will be divided in two
+ triangles along one of its diagonals.  Normally, all these diagonals have
+ the same orientation relative to the grid.  If exactly one of the four cell
+ corners is excluded by the `undefined` handler, and this is on the usual
+ diagonal, both triangles will be excluded.  However if the default setting
+ of `altdiagonal` is active, the other diagonal will be chosen for this cell
+ instead, minimizing the size of the hole in the surface.
+
+ The `bentover` option controls what happens to another special case, this
+ time in conjunction with the `trianglepattern`.  For rather crumply surfaces,
+ it can happen that the two triangles a surface cell is divided into are seen
+ from opposite sides (i.e. the original quadrangle is 'bent over'), as
+ illustrated in the following ASCII art:
+
+                                                               C----B
+     original quadrangle:  A--B      displayed quadrangle:     |\   |
+       ("set view 0,0")    | /|    ("set view 75,75" perhaps)  | \  |
+                           |/ |                                |  \ |
+                           C--D                                |   \|
+                                                               A    D
+
+ If the diagonal edges of the surface cells aren't generally made visible by
+ bit 2 of the <bitpattern> there, the edge CB above wouldn't be drawn at all,
+ normally, making the resulting display hard to understand.  Therefore, the
+ default option of `bentover` will turn it visible in this case.  If you don't
+ want that, you may choose `nobentover` instead.
+ See also
+ hidden line removal demo (hidden.dem)
+ and
+ complex hidden line demo (singulr.dem).
+?commands set historysize
+?set historysize
+?unset historysize
+?historysize
+?nohistorysize
+ Note: the command `set historysize` is only available when
+ gnuplot has been configured to use the GNU readline library.
+
+ Syntax:
+       set historysize <int>
+       unset historysize
+
+ When leaving gnuplot, the value of historysize is used for
+ truncating the history to at most that much lines. The default
+ is 500.
+ `unset historysize` will disable history truncation and thus
+ allow an infinite number of lines to be written to the history
+ file.
+?commands set isosamples
+?commands show isosamples
+?set isosamples
+?show isosamples
+?isosamples
+ The isoline density (grid) for plotting functions as surfaces may be changed
+ by the `set isosamples` command.
+
+ Syntax:
+       set isosamples <iso_1> {,<iso_2>}
+       show isosamples
+
+ Each function surface plot will have <iso_1> iso-u lines and <iso_2> iso-v
+ lines.  If you only specify <iso_1>, <iso_2> will be set to the same value
+ as <iso_1>.  By default, sampling is set to 10 isolines per u or v axis.
+ A higher sampling rate will produce more accurate plots, but will take longer.
+ These parameters have no effect on data file plotting.
+
+ An isoline is a curve parameterized by one of the surface parameters while
+ the other surface parameter is fixed.  Isolines provide a simple means to
+ display a surface.  By fixing the u parameter of surface s(u,v), the iso-u
+ lines of the form c(v) = s(u0,v) are produced, and by fixing the v parameter,
+ the iso-v lines of the form c(u) = s(u,v0) are produced.
+
+ When a function surface plot is being done without the removal of hidden
+ lines, `set samples`  controls the number of points sampled along each
+ isoline;  see `set samples` and `set hidden3d`. The contour algorithm
+ assumes that a function sample occurs at each isoline intersection, so
+ change in `samples` as well as `isosamples` may be desired when changing
+ the resolution of a function surface/contour.
+?commands set key
+?commands unset key
+?commands show key
+?set key
+?unset key
+?show key
+?key
+?nokey
+?legend
+ The `set key` command enables a key (or legend) describing plots on a plot.
+
+ The contents of the key, i.e., the names given to each plotted data set and
+ function and samples of the lines and/or symbols used to represent them, are
+ determined by the `title` and `with` options of the {`s`}`plot` command.
+ Please see `plot title` and `plot with` for more information.
+
+ Syntax:
+       set key {on|off} {default}
+               {{inside | outside} | {lmargin | rmargin | tmargin | bmargin}
+                 | {at <position>}}
+               {left | right | center} {top | bottom | center}
+               {vertical | horizontal} {Left | Right}
+               {{no}opaque}
+               {{no}reverse} {{no}invert}
+               {samplen <sample_length>} {spacing <vertical_spacing>}
+               {width <width_increment>}
+               {height <height_increment>}
+               {{no}autotitle {columnheader}}
+               {title "<text>"} {{no}enhanced}
+               {font "<face>,<size>"} {textcolor <colorspec>}
+               {{no}box { {linestyle | ls <line_style>}
+                          | {linetype | lt <line_type>}
+                            {linewidth | lw <line_width>}}}
+               {maxcols {<max no. of columns> | auto}}
+               {maxrows {<max no. of rows> | auto}}
+       unset key
+       show key
+
+ The key contains a title and a sample (line, point, box) for each plot
+ in the graph. The key may be turned off by requesting `set key off` or
+ `unset key`.  Individual key entries may be turned off by using the
+ `notitle` keyword in the corresponding plot command.
+
+ Elements within the key are stacked according to `vertical` or `horizontal`.
+ In the case of `vertical`, the key occupies as few columns as possible.  That
+ is, elements are aligned in a column until running out of vertical space at
+ which point a new column is started.  The vertical space may be limited using
+ 'maxrows'.  In the case of `horizontal`, the key occupies as few rows as
+ possible.  The horizontal space may be limited using 'maxcols'.
+
+ By default the key is placed in the upper right inside corner of the graph.
+ The keywords `left`, `right`, `top`, `bottom`, `center`, `inside`, `outside`,
+ `lmargin`, `rmargin`, `tmargin`, `bmargin` (, `above`, `over`, `below` and
+ `under`) may be used to automatically place the key in other positions of the
+ graph.  Also an `at <position>` may be given to indicate precisely where the
+ plot should be placed.  In this case, the keywords `left`, `right`, `top`,
+ `bottom` and `center` serve an analogous purpose for alignment.
+ For more information, see `key placement`.
+
+ Justification of the plot titles within the key is controlled by `Left` or
+ `Right` (default).  The text and sample can be reversed (`reverse`) and a
+ box can be drawn around the key (`box {...}`) in a specified `linetype`
+ and `linewidth`, or a user-defined `linestyle`.
+
+ By default the key is built up one plot at a time. That is, the key symbol and
+ title are drawn at the same time as the corresponding plot.  That means newer
+ plots may sometimes place elements on top of the key.  `set key opaque` causes
+ the key to be generated after all the plots.  In this case the key area is 
+ filled with background color and then the key symbols and titles are written.
+ Therefore the key itself may obscure portions of some plot elements.
+ The default can be restored by `set key noopaque`.
+
+ By default the first plot label is at the top of the key and successive labels
+ are entered below it. The `invert` option causes the first label to be placed
+ at the bottom of the key, with successive labels entered above it. This option
+ is useful to force the vertical ordering of labels in the key to match the
+ order of box types in a stacked histogram.
+
+ The <height_increment> is a number of character heights to be added to or
+ subtracted from the height of the key box.  This is useful mainly when you are
+ putting a box around the key and want larger borders around the key entries.
+
+ All plotted curves of `plot`s and `splot`s are titled according to the
+ default option `autotitles`. The automatic generation of titles can be
+ suppressed by `noautotitles`; then only those titles explicitly defined
+ by `(s)plot ... title ...` will be drawn.
+
+ The command `set key autotitle columnheader` causes the first entry in each
+ column of input data to be interpreted as a text string and used as a title for
+ the corresponding plot. If the quantity being plotted is a function of data
+ from several columns, gnuplot may be confused as to which column to draw the
+ title from. In this case it is necessary to specify the column explicitly in
+ the plot command, e.g.
+
+       plot "datafile" using (($2+$3)/$4) title columnhead(3) with lines
+
+ An overall title can be put on the key (`title "<text>"`)---see also `syntax`
+ for the distinction between text in single- or double-quotes.  The key title
+ uses the same justification as do the plot titles.
+
+ The defaults for `set key` are `on`, `right`, `top`, `vertical`, `Right`,
+ `noreverse`, `noinvert`, `samplen 4`, `spacing 1.25`, `title ""`, and
+ `nobox`.  The default <linetype> is the same as that used for the plot
+ borders.  Entering `set key default` returns the key to its default
+ configuration.
+
+ The key is drawn as a sequence of lines, with one plot described on each
+ line.  On the right-hand side (or the left-hand side, if `reverse` is
+ selected) of each line is a representation that attempts to mimic the way the
+ curve is plotted.  On the other side of each line is the text description
+ (the line title), obtained from the `plot` command.  The lines are vertically
+ arranged so that an imaginary straight line divides the left- and right-hand
+ sides of the key.  It is the coordinates of the top of this line that are
+ specified with the `set key` command.  In a `plot`, only the x and y
+ coordinates are used to specify the line position.  For a `splot`, x, y and
+ z are all used as a 3D location mapped using the same mapping as the graph
+ itself to form the required 2D screen position of the imaginary line.
+
+ When using the TeX or other terminals where formatting information is embedded
+ in the string, `gnuplot` can only estimate the correctly exact width of the
+ string for key positioning.  If the key is to be positioned at the left, it may
+ be convenient to use the combination  `set key left Left reverse`.
+
+ If `splot` is being used to draw contours, the contour labels will be listed
+ in the key.  If the alignment of these labels is poor or a different number
+ of decimal places is desired, the label format can be specified.  See
+ `set clabel` for details.
+
+ Examples:
+
+ This places the key at the default location:
+       set key default
+
+ This disables the key:
+       unset key
+
+ This places a key at coordinates 2,3.5,2 in the default (first) coordinate
+ system:
+       set key at 2,3.5,2
+
+ This places the key below the graph:
+       set key below
+
+ This places the key in the bottom left corner, left-justifies the text,
+ gives it a title, and draws a box around it in linetype 3:
+       set key left bottom Left title 'Legend' box 3
+?commands set key placement
+?set key placement
+?key placement
+ To understand positioning, the best concept is to think of a region, i.e.,
+ inside/outside, or one of the margins.  Along with the region, keywords
+ `left/center/right` (l/c/r) and `top/center/bottom` (t/c/b) control where
+ within the particular region the key should be placed.
+
+ When in `inside` mode, the keywords `left` (l), `right` (r), `top` (t),
+ `bottom` (b), and `center` (c) push the key out toward the plot boundary as
+ illustrated:
+
+      t/l   t/c   t/r
+
+      c/l    c    c/r
+
+      b/l   b/c   b/r
+
+
+ When in `outside` mode, automatic placement is similar to the above
+ illustration, but with respect to the view, rather than the graph boundary.
+ That is, a border is moved inward to make room for the key outside of
+ the plotting area, although this may interfere with other labels and may
+ cause an error on some devices.  The particular plot border that is moved
+ depends upon the position described above and the stacking direction.  For
+ options centered in one of the dimensions, there is no ambiguity about which
+ border to move.  For the corners, when the stack direction is `vertical`, the
+ left or right border is moved inward appropriately.  When the stack direction
+ is `horizontal`, the top or bottom border is moved inward appropriately.
+
+ The margin syntax allows automatic placement of key regardless of stack
+ direction.  When one of the margins `lmargin` (lm), `rmargin` (rm),
+ `tmargin` (tm), and `bmargin` (bm) is combined with a single, non-conflicting
+ direction keyword, the following illustrated positions may contain the key:
+
+           l/tm  c/tm  r/tm
+
+      t/lm                  t/rm
+
+      c/lm                  c/rm
+
+      b/lm                  b/rm
+
+           l/bm  c/bm  r/bm
+
+
+ Keywords `above` and `over` are synonymous with `tmargin`.  For version
+ compatibility, `above` or `over` without an additional l/c/r or stack direction
+ keyword uses `center` and `horizontal`.  Keywords `below` and `under` are
+ synonymous with `bmargin`.  For compatibility, `below` or `under` without an
+ additional l/c/r or stack  direction keyword uses `center` and `horizontal`.  A
+ further compatibility issue is that `outside` appearing without an additional
+ t/b/c or stack direction keyword uses `top`, `right` and `vertical` (i.e., the
+ same as t/rm above).
+
+ The <position> can be a simple x,y,z as in previous versions, but these can
+ be preceded by one of five keywords (`first`, `second`, `graph`, `screen`,
+ `character`) which selects the coordinate system in which the position of
+ the first sample line is specified.  See `coordinates` for more details.
+ The effect of `left`, `right`, `top`, `bottom`, and `center` when <position>
+ is given is to align the key as though it were text positioned using the
+ label command, i.e., `left` means left align with key to the right of
+ <position>, etc.
+?commands set key samples
+?set key samples
+?key samples
+ By default, each plot on the graph generates a corresponding entry in the key.
+ This entry contains a plot title and a sample line/point/box of the same color
+ and fill properties as used in the plot itself.  The font and textcolor
+ properties control the appearance of the individual plot titles that appear in
+ the key. Setting the textcolor to "variable" causes the text for each key
+ entry to be the same color as the line or fill color for that plot.
+ This was the default in some earlier versions of gnuplot.
+
+ The length of the sample line can be controlled by `samplen`.  The sample
+ length is computed as the sum of the tic length and <sample_length> times the
+ character width.  `samplen` also affects the positions of point samples in
+ the key since these are drawn at the midpoint of the sample line, even if
+ the sample line itself is not drawn.
+
+ The vertical spacing between lines is controlled by `spacing`.  The spacing
+ is set equal to the product of the pointsize, the vertical tic size, and
+ <vertical_spacing>.  The program will guarantee that the vertical spacing is
+ no smaller than the character height.
+
+ The <width_increment> is a number of character widths to be added to or
+ subtracted from the length of the string.  This is useful only when you are
+ putting a box around the key and you are using control characters in the text.
+ `gnuplot` simply counts the number of characters in the string when computing
+ the box width; this allows you to correct it.
+?commands set label
+?commands unset label
+?commands show label
+?set label
+?unset label
+?show label
+?label
+?nolabel
+ Arbitrary labels can be placed on the plot using the `set label` command.
+
+ Syntax:
+       set label {<tag>} {"<label text>"} {at <position>}
+                 {left | center | right}
+                 {norotate | rotate {by <degrees>}}
+                 {font "<name>{,<size>}"}
+                 {noenhanced}
+                 {front | back}
+                 {textcolor <colorspec>}
+                 {point <pointstyle> | nopoint}
+                 {offset <offset>}
+       unset label {<tag>}
+       show label
+
+ The <position> is specified by either x,y or x,y,z, and may be preceded by
+ `first`, `second`, `graph`, `screen`, or `character` to select the coordinate
+ system.  See `coordinates` for details.
+
+ The tag is an integer that is used to identify the label. If no <tag>
+ is given, the lowest unused tag value is assigned automatically.  The
+ tag can be used to delete or modify a specific label.  To change any
+ attribute of an existing label, use the `set label` command with the
+ appropriate tag, and specify the parts of the label to be changed.
+
+ The <label text> can be a string constant, a string variable, or a string-
+ valued expression. See `strings`, `sprintf`, and `gprintf`.
+
+ By default, the text is placed flush left against the point x,y,z.  To adjust
+ the way the label is positioned with respect to the point x,y,z, add the
+ justification parameter, which may be `left`, `right` or `center`,
+ indicating that the point is to be at the left, right or center of the text.
+ Labels outside the plotted boundaries are permitted but may interfere with
+ axis labels or other text.
+
+ If `rotate` is given, the label is written vertically (if the terminal can do
+ so, of course).  If `rotate by <degrees>` is given, conforming terminals will
+ try to write the text at the specified angle; non-conforming terminals will
+ treat this as vertical text.
+
+ Font and its size can be chosen explicitly by `font "<name>{,<size>}"` if the
+ terminal supports font settings.  Otherwise the default font of the terminal
+ will be used.
+
+ Normally the enhanced text mode string interpretation, if enabled for the
+ current terminal, is applied to all text strings including label text.
+ The `noenhanced` property can be used to exempt a specific label from the
+ enhanced text mode processing.  The can be useful if the label contains
+ underscores, for example. See `enhanced text`.
+
+ If `front` is given, the label is written on top of the graphed data. If
+ `back` is given (the default), the label is written underneath the graphed
+ data.  Using `front` will prevent a label from being obscured by dense data.
+
+ `textcolor <colorspec>` changes the color of the label text. <colorspec> can be
+ a linetype, an rgb color, or a palette mapping. See help for `colorspec` and
+ `palette`.  `textcolor` may be abbreviated `tc`.
+    `tc default` resets the text color to its default state.
+    `tc lt <n>` sets the text color to that of line type <n>.
+    `tc ls <n>` sets the text color to that of line style <n>.
+    `tc palette z` selects a palette color corresponding to the label z position.
+    `tc palette cb <val>` selects a color corresponding to <val> on the colorbar.
+    `tc palette fraction <val>`, with 0<=val<=1, selects a color corresponding to
+        the mapping [0:1] to grays/colors of the `palette`.
+    `tc rgb "#RRGGBB"` selects an arbitrary 24-bit RGB color.
+
+ If a <pointstyle> is given, using keywords `lt`, `pt` and `ps`, see `style`,
+ a point with the given style and color of the given line type is plotted at
+ the label position and the text of the label is displaced slightly.
+ This option is used by default for placing labels in `mouse` enhanced
+ terminals.  Use `nopoint` to turn off the drawing of a point near
+ the label (this is the default).
+
+ The displacement defaults to 1,1 in `pointsize` units if a <pointstyle> is
+ given, 0,0 if no <pointstyle> is given.  The displacement can be controlled
+ by the optional `offset <offset>` where <offset> is specified by either x,y
+ or x,y,z, and may be preceded by `first`, `second`, `graph`, `screen`, or
+ `character` to select the coordinate system.  See `coordinates` for details.
+
+ If one (or more) axis is timeseries, the appropriate coordinate should be
+ given as a quoted time string according to the `timefmt` format string.
+ See `set xdata` and `set timefmt`.
+
+ The EEPIC, Imagen, LaTeX, and TPIC drivers allow \\ in a string to specify
+ a newline.
+
+ Label coordinates and text can also be read from a data file (see `labels`).
+
+ Examples:
+
+ To set a label at (1,2) to "y=x", use:
+       set label "y=x" at 1,2
+
+ To set a Sigma of size 24, from the Symbol font set, at the center of
+ the graph, use:
+       set label "S" at graph 0.5,0.5 center font "Symbol,24"
+
+ To set a label "y=x^2" with the right of the text at (2,3,4), and tag the
+ label as number 3, use:
+       set label 3 "y=x^2" at 2,3,4 right
+
+ To change the preceding label to center justification, use:
+       set label 3 center
+
+ To delete label number 2, use:
+       unset label 2
+
+ To delete all labels, use:
+       unset label
+
+ To show all labels (in tag order), use:
+       show label
+
+ To set a label on a graph with a timeseries on the x axis, use, for example:
+       set timefmt "%d/%m/%y,%H:%M"
+       set label "Harvest" at "25/8/93",1
+
+ To display a freshly fitted parameter on the plot with the data and the
+ fitted function, do this after the `fit`, but before the `plot`:
+       set label sprintf("a = %3.5g",par_a) at 30,15
+       bfit = gprintf("b = %s*10^%S",par_b)
+       set label bfit at 30,20
+
+ To display a function definition along with its fitted parameters, use:
+       f(x)=a+b*x
+       fit f(x) 'datafile' via a,b
+       set label GPFUN_f at graph .05,.95
+       set label sprintf("a = %g", a) at graph .05,.90 
+       set label sprintf("b = %g", b) at graph .05,.85
+
+ To set a label displaced a little bit from a small point:
+       set label 'origin' at 0,0 point lt 1 pt 2 ps 3 offset 1,-1
+
+ To set a label whose color matches the z value (in this case 5.5) of some
+ point on a 3D splot colored using pm3d:
+       set label 'text' at 0,0,5.5 tc palette z
+?commands set linetype
+?commands unset linetype
+?commands show linetype
+?set linetype
+?unset linetype
+?show linetype
+?linetype
+ The `set linetype` command allows you to redefine the basic linetypes used
+ for plots.  The command options are identical to those for "set style line".
+ Unlike line styles, redefinitions by `set linetype` are persistent;  they
+ are not affected by `reset`.
+
+ For example, linetypes one and two default to red and green. If you redefine
+ them like this:
+
+       set linetype 1 lw 2 lc rgb "blue" pointtype 6
+       set linetype 2 lw 2 lc rgb "forest-green" pointtype 8
+
+ everywhere that uses lt 1 will now get a thick blue line rather than a thin red
+ line (the previous default meaning of lt 1).  This includes uses such as the
+ definition of a temporary linestyle derived from the base linetype 1.
+
+ `Note`: This command is new to gnuplot version 4.6.  It supersedes a rather
+ cryptic command in version 4.2 "set style increment user".
+ The older command is now deprecated.
+
+ This mechanism can be used to define a set of personal preferences for the
+ sequence of lines used in gnuplot.  The recommended way to do this is to add
+ to the run-time initialization file ~/.gnuplot a sequence of commands like
+
+       if ((GPVAL_VERSION < 4.5) \
+       ||  (!strstrt(GPVAL_COMPILE_OPTIONS,"+USER_LINETYPES"))) \
+           exit
+       set linetype 1 lc rgb "dark-violet" lw 2 pt 0
+       set linetype 2 lc rgb "sea-green"   lw 2 pt 7
+       set linetype 3 lc rgb "cyan"        lw 2 pt 6 pi -1
+       set linetype 4 lc rgb "dark-red"    lw 2 pt 5 pi -1
+       set linetype 5 lc rgb "blue"        lw 2 pt 8
+       set linetype 6 lc rgb "dark-orange" lw 2 pt 3
+       set linetype 7 lc rgb "black"       lw 2 pt 11
+       set linetype 8 lc rgb "goldenrod"   lw 2
+       set linetype cycle 8
+
+ Every time you run gnuplot the line types will be initialized to these values.
+ You may initialize as many linetypes as you like. If you do not redefine, say,
+ linetype 3 then it will continue to have the default properties (in this case
+ blue, pt 3, lw 1, etc).  The first few lines of the example script insure that
+ the commands will be skipped by older versions of gnuplot.
+
+ Similar script files can be used to define theme-based color choices, or sets
+ of colors optimized for a particular plot type or output device.
+
+ The command `set linetype cycle 8` tells gnuplot to re-use these definitions
+ for the color and linewidth of higher-numbered linetypes.  That is, linetypes
+ 9-16, 17-24, and so on will use this same sequence of colors and widths.
+ The point properties (pointtype, pointsize, pointinterval) are not affected by
+ this command.  `unset linetype cycle` disables this feature.  If the line
+ properties of a higher numbered linetype are explicitly defined, this takes
+ precedence over the recycled low-number linetype properties.
+
+?commands set lmargin
+?set lmargin
+?lmargin
+ The command `set lmargin` sets the size of the left margin.
+ Please see `set margin` for details.
+?commands set loadpath
+?commands show loadpath
+?set loadpath
+?show loadpath
+?loadpath
+ The `loadpath` setting defines additional locations for data and command
+ files searched by the `call`, `load`, `plot` and `splot` commands.  If a
+ file cannot be found in the current directory, the directories in
+ `loadpath` are tried.
+
+ Syntax:
+       set loadpath {"pathlist1" {"pathlist2"...}}
+       show loadpath
+
+ Path names may be entered as single directory names, or as a list of
+ path names separated by a platform-specific path separator, eg. colon
+ (':') on Unix, semicolon (';') on DOS/Windows/OS/2 platforms.
+ The `show loadpath`, `save` and `save set` commands replace the
+ platform-specific separator with a space character (' ').
+
+ If the environment variable GNUPLOT_LIB is set, its contents are appended to
+ `loadpath`.  However, `show loadpath` prints the contents of `set loadpath`
+ and GNUPLOT_LIB separately.  Also, the `save` and `save set` commands ignore
+ the contents of GNUPLOT_LIB.
+?commands set locale
+?set locale
+?locale
+ The `locale` setting determines the language with which `{x,y,z}{d,m}tics`
+ will write the days and months.
+
+ Syntax:
+       set locale {"<locale>"}
+
+ <locale> may be any language designation acceptable to your installation.
+ See your system documentation for the available options.  The command
+ `set locale ""` will try to determine the locale from the LC_TIME, LC_ALL,
+ or LANG environment variables.
+
+ To change the decimal point locale, see `set decimalsign`.
+ To change the character encoding to the current locale, see `set encoding`.
+?commands set logscale
+?commands unset logscale
+?commands show logscale
+?set logscale
+?unset logscale
+?show logscale
+?set log
+?logscale
+?nologscale
+ Syntax:
+       set logscale <axes> {<base>}
+       unset logscale <axes>
+       show logscale
+
+ where <axes> may be any combinations of `x`, `x2`, `y`, `y2`, `z`, `cb`, and
+ `r` in any order.  <base> is the base of the log scaling (default is base 10).
+ If no axes are specified, the command affects all axes except `r`.
+ The command `unset logscale` turns off log scaling for all axes.
+ Note that the ticmarks generated for logscaled axes are not uniformly spaced.
+ See `set xtics`.
+
+ Examples:
+
+ To enable log scaling in both x and z axes:
+       set logscale xz
+
+ To enable scaling log base 2 of the y axis:
+       set logscale y 2
+
+ To enable z and color log axes for a pm3d plot:
+       set logscale zcb
+
+ To disable z axis log scaling:
+       unset logscale z
+?commands set macros
+?commands show macros
+?set macros
+?show macros
+ If command line macro substitution is enabled, then tokens in the command line
+ of the form @<stringvariablename> will be replaced by the text string contained
+ in <stringvariablename>. See `substitution`.
+
+ Syntax:
+      set macros
+
+?commands set mapping
+?commands show mapping
+?set mapping
+?show mapping
+?mapping
+ If data are provided to `splot` in spherical or cylindrical coordinates,
+ the `set mapping` command should be used to instruct `gnuplot` how to
+ interpret them.
+
+ Syntax:
+       set mapping {cartesian | spherical | cylindrical}
+
+ A cartesian coordinate system is used by default.
+
+ For a spherical coordinate system, the data occupy two or three columns
+ (or `using` entries).  The first two are interpreted as the azimuthal
+ and polar angles theta and phi (or "longitude" and "latitude"), in the
+ units specified by `set angles`.  The radius r is taken from the third
+ column if there is one, or is set to unity if there is no third column.
+ The mapping is:
+
+       x = r * cos(theta) * cos(phi)
+       y = r * sin(theta) * cos(phi)
+       z = r * sin(phi)
+
+ Note that this is a "geographic" spherical system, rather than a "polar"
+ one (that is, phi is measured from the equator, rather than the pole).
+
+ For a cylindrical coordinate system, the data again occupy two or three
+ columns.  The first two are interpreted as theta (in the units specified by
+ `set angles`) and z.  The radius is either taken from the third column or set
+ to unity, as in the spherical case.  The mapping is:
+
+       x = r * cos(theta)
+       y = r * sin(theta)
+       z = z
+
+ The effects of `mapping` can be duplicated with the `using` filter on the
+ `splot` command, but `mapping` may be more convenient if many data files are
+ to be processed.  However even if `mapping` is used, `using` may still be
+ necessary if the data in the file are not in the required order.
+
+ `mapping` has no effect on `plot`.
+ world.dem: mapping demos.
+?commands set margin
+?commands show margin
+?set margin
+?show margin
+?margin
+ The `margin` is the distance between the plot border and the outer edge of the
+ canvas. The size of the margin is chosen automatically, but can be overridden
+ by the `set margin` commands.  `show margin` shows the current settings.
+ To alter the distance between the inside of the plot border and the data in the
+ plot itself, see `set offsets`.
+
+ Syntax:
+       set bmargin {{at screen} <margin>}
+       set lmargin {{at screen} <margin>}
+       set rmargin {{at screen} <margin>}
+       set tmargin {{at screen} <margin>}
+       show margin
+
+ The default units of <margin> are character heights or widths, as appropriate.
+ A positive value defines the absolute size of the margin.  A negative value
+ (or none) causes `gnuplot` to revert to the computed value.  For 3D plots,
+ only the left margin can be set using character units.
+
+ The keywords `at screen` indicates that the margin is specified as a fraction
+ of the full drawing area. This can be used to precisely line up the corners of
+ individual 2D and 3D graphs in a multiplot. This placement ignores the current
+ values of `set origin` and `set size`, and is intended as an alternative 
+ method for positioning graphs within a multiplot.
+
+ Normally the margins of a plot are automatically calculated based on tics,
+ tic labels, axis labels, the plot title, the timestamp and the size of the
+ key if it is outside the borders.  If, however, tics are attached to the
+ axes (`set xtics axis`, for example), neither the tics themselves nor their
+ labels will be included in either the margin calculation or the calculation
+ of the positions of other text to be written in the margin.  This can lead
+ to tic labels overwriting other text if the axis is very close to the border.
+?commands set mouse
+?commands unset mouse
+?set mouse
+?unset mouse
+?mousing
+?mouse
+?nomouse
+ The command `set mouse` enables mouse actions for the current interactive
+ terminal.  It is usually enabled by default in interactive mode, but disabled
+ by default if commands are being read from a file.
+ There are two mouse modes. The 2D mode works for `plot` commands and for `splot`
+ maps (i.e. `set view` with z-rotation 0, 90, 180, 270 or 360 degrees, including
+ `set view map`).  In this mode the mouse position is tracked and you can pan or
+ zoom using the mouse buttons or arrow keys.  Some terminals support toggling
+ individual plots on/off by clicking on the corresponding key title or on a
+ separate widget.
+
+ For 3D graphs `splot`, the view and scaling of the graph can be changed with
+ mouse buttons 1 and 2, respectively. A vertical motion of Button 2 with the
+ shift key held down changes the `xyplane`.  If additionally to these
+ buttons the modifier <ctrl> is held down, the coordinate axes are displayed
+ but the data are suppressed.  This is useful for large data sets.
+
+ Mousing is not available inside multiplot mode. When multiplot is completed
+ using `unset multiplot`, then the mouse will be turned on again but acts only
+ on the most recent plot within the multiplot (like replot does).
+
+ Syntax:
+       set mouse {doubleclick <ms>} {nodoubleclick} \
+                 {{no}zoomcoordinates} \
+                 {noruler | ruler {at x,y}} \
+                 {polardistance{deg|tan} | nopolardistance} \
+                 {format <string>} \
+                 {clipboardformat <int>/<string>} \
+                 {mouseformat <int>/<string>} \
+                 {{no}labels {"labeloptions"}} \
+                 {{no}zoomjump} {{no}verbose}
+       unset mouse
+
+ The options `noruler` and `ruler` switch the ruler off and on, the latter
+ optionally setting the origin at the given coordinates. While the ruler is on,
+ the distance in user units from the ruler origin to the mouse is displayed
+ continuously. By default, toggling the ruler has the key binding 'r'.
+
+ The option `polardistance` determines if the distance between the mouse cursor
+ and the ruler is also shown in polar coordinates (distance and angle in
+ degrees or tangent (slope)). This corresponds to the default key binding '5'.
+
+ Choose the option `labels` to define persistent gnuplot labels using Button 2.
+ The default is `nolabels`, which makes Button 2 draw only a temporary label at
+ the mouse position. Labels are drawn with the current setting of `mouseformat`.
+ The `labeloptions` string is passed to the `set label` command.  The default is
+ "point pointstyle 1" which will plot a small plus at the label position.
+ Temporary labels will disappear at the next `replot` or mouse zoom operation.
+ Persistent labels can be removed by holding the Ctrl-Key down while clicking
+ Button 2 on the label's point. The threshold for how close you must be to the
+ label is also determined by the `pointsize`.
+
+ If the option `verbose` is turned on the communication commands are shown
+ during execution. This option can also be toggled by hitting `6` in the
+ driver's window. `verbose` is off by default.
+
+ Press 'h' in the driver's window for a short summary of the mouse and key
+ bindings.  This will also display user defined bindings or `hotkeys` which
+ can be defined using the `bind` command, see help for `bind`.  Note, that user
+ defined `hotkeys` may override the default bindings.
+ See also help for `bind` and `label`.
+?set mouse doubleclick
+?mouse doubleclick
+ The doubleclick resolution is given in milliseconds and used for Button 1,
+ which copies the current mouse position to the `clipboard`.  The default value
+ is 300 ms.  Setting the value to 0 ms triggers the copy on a single click.
+?set mouse format
+?set mouse mouseformat
+?mouse format
+?mouseformat
+ The `set mouse format` command specifies a format string for sprintf() which
+ determines how the mouse cursor [x,y] coordinates are printed to the plot
+ window and to the clipboard.  The default is "% #g".
+
+ `set mouse clipboardformat` and `set mouse mouseformat` are used for formatting
+ the text on Button1 and Button2 actions -- copying the coordinates to the
+ clipboard and temporarily annotating the mouse position.  An integer argument
+ selects one of the format options in the table below. A string argument is used
+ as a format for sprintf() in option 6 and should contain two float specifiers.
+ Example:
+      `set mouse mouseformat "mouse x,y = %5.2g, %10.3f"`.
+ Use `set mouse mouseformat ""` to turn this string off again.
+
+ The following formats are available:
+
+  0   default (same as 1)
+  1   axis coordinates                    1.23, 2.45
+  2   graph coordinates (from 0 to 1)    /0.00, 1.00/
+  3   x = timefmt     y = axis           [(as set by `set timefmt`), 2.45]
+  4   x = date        y = axis           [31. 12. 1999, 2.45]
+  5   x = time        y = axis           [23:59, 2.45]
+  6   x = date time   y = axis           [31. 12. 1999 23:59, 2.45]
+  7   format from `set mouse mouseformat`, e.g. "mouse x,y = 1.23,     2.450"
+?set mouse scrolling
+?mouse scrolling
+?mouse wheel
+?scrolling
+?mousewheel
+ X and Y axis scaling in both 2D and 3D graphs can be adjusted using the
+ mouse wheel.  <wheel-up> scrolls up (increases both YMIN and YMAX by ten
+ percent of the Y range, and increases both Y2MIN and Y2MAX likewise), and
+ <wheel down> scrolls down.  <shift-wheel-up> scrolls left (decreases both
+ XMIN and XMAX, and both X2MIN and X2MAX), and <shift-wheel-down> scrolls
+ right.  <control-wheel-up> zooms in toward the center of the plot, and
+ <control-wheel-down> zooms out.  <shift-control-wheel-up> zooms in along the
+ X and X2 axes only, and <shift-control-wheel-down> zooms out along the X and
+ X2 axes only.
+?mouse x11_mouse
+?x11_mouse
+?x11 mouse
+ If multiple X11 plot windows have been opened using the `set term x11 <n>`
+ terminal option, then only the current plot window supports the entire
+ range of mouse commands and hotkeys.  The other windows will, however,
+ continue to display mouse coordinates at the lower left.
+?mouse zoom
+?zoom
+ Zooming is usually accomplished by holding down the left mouse button and 
+ dragging the mouse to delineate a zoom region.  Some platforms may require
+ using a different mouse button.  The original plot can be restored by typing
+ the 'u' hotkey in the plot window.  The hotkeys 'p' and 'n' step back and
+ forth through a history of zoom operations.
+
+ The option `zoomcoordinates` determines if the coordinates of the zoom box are
+ drawn at the edges while zooming. This is on by default.
+
+ If the option `zoomjump` is on, the mouse pointer will be automatically
+ offset a small distance after starting a zoom region with button 3. This can
+ be useful to avoid a tiny (or even empty) zoom region. `zoomjump` is off by
+ default.
+
+?commands set multiplot
+?commands unset multiplot
+?set multiplot
+?unset multiplot
+?multiplot
+?nomultiplot
+ The command `set multiplot` places `gnuplot` in the multiplot mode, in which
+ several plots are placed on the same page, window, or screen.
+
+ Syntax:
+       set multiplot
+           { title <page title> {font <fontspec>} {enhanced|noenhanced} }
+           { layout <rows>,<cols> 
+             {rowsfirst|columnsfirst} {downwards|upwards}
+             {scale <xscale>{,<yscale>}} {offset <xoff>{,<yoff>}}
+           }
+       unset multiplot
+
+ For some terminals, no plot is displayed until the command `unset multiplot`
+ is given, which causes the entire page to be drawn and then returns gnuplot
+ to its normal single-plot mode.  For other terminals, each separate `plot`
+ command produces an updated display, either by redrawing all previous ones
+ and the newly added plot, or by just adding the new plot to the existing
+ display.
+
+ The area to be used by the next plot is not erased before doing the
+ new plot.  The `clear` command can be used to do this if wanted, as is
+ typically the case for "inset" plots.
+
+ Any labels or arrows that have been defined will be drawn for each plot
+ according to the current size and origin (unless their coordinates are
+ defined in the `screen` system).  Just about everything else that can be
+ `set` is applied to each plot, too.  If you want something to appear only
+ once on the page, for instance a single time stamp, you'll need to put a `set
+ time`/`unset time` pair around one of the `plot`, `splot` or `replot`
+ commands within the `set multiplot`/`unset multiplot` block.
+
+ The multiplot title is separate from the individual plot titles, if any.
+ Space is reserved for it at the top of the page, spanning the full width
+ of the canvas.
+
+ The commands `set origin` and `set size` must be used to correctly position
+ each plot if no layout is specified or if fine tuning is desired.  See
+ `set origin` and `set size` for details of their usage.
+
+ Example:
+       set multiplot
+       set size 0.4,0.4
+       set origin 0.1,0.1
+       plot sin(x)
+       set size 0.2,0.2
+       set origin 0.5,0.5
+       plot cos(x)
+       unset multiplot
+
+ This displays a plot of cos(x) stacked above a plot of sin(x).
+
+ `set size` and `set origin` refer to the entire plotting area used for each
+ plot.  Please also see `set term size`.  If you want to have the axes
+ themselves line up, you can guarantee that the margins are the same size with
+ the `set margin` commands.  See `set margin` for their use.  Note that the
+ margin settings are absolute, in character units, so the appearance of the
+ graph in the remaining space will depend on the screen size of the display
+ device, e.g., perhaps quite different on a video display and a printer.
+
+ With the `layout` option you can generate simple multiplots without having
+ to give the `set size` and `set origin` commands before each plot:  Those
+ are generated automatically, but can be overridden at any time.  With
+ `layout` the display will be divided by a grid with <rows> rows and
+ <cols> columns.  This grid is filled rows first or columns first depending on
+ whether the corresponding option is given in the multiplot command.  The stack
+ of plots can grow `downwards` or `upwards`.
+ Default is `rowsfirst` and `downwards`.
+
+ Each plot can be scaled by `scale` and shifted with `offset`; if the y-values
+ for scale or offset are omitted, the x-value will be used.  `unset multiplot`
+ will turn off the automatic layout and restore the values of `set size` and
+ `set origin` as they were before `set multiplot layout`.
+
+ Example:
+       set size 1,1
+       set origin 0,0
+       set multiplot layout 3,2 columnsfirst scale 1.1,0.9
+       [ up to 6 plot commands here ]
+       unset multiplot
+
+ The above example will produce 6 plots in 2 columns filled top to bottom,
+ left to right.  Each plot will have a horizontal size of 1.1/2 and a vertical
+ size of 0.9/3.
+
+ See also
+ multiplot demo (multiplt.dem)
+?commands set mx2tics
+?commands unset mx2tics
+?commands show mx2tics
+?set mx2tics
+?unset mx2tics
+?show mx2tics
+?mx2tics
+?nomx2tics
+ Minor tic marks along the x2 (top) axis are controlled by `set mx2tics`.
+ Please see `set mxtics`.
+?commands set mxtics
+?commands unset mxtics
+?commands show mxtics
+?set mxtics
+?unset mxtics
+?show mxtics
+?mxtics
+?nomxtics
+ Minor tic marks along the x axis are controlled by `set mxtics`.  They can be
+ turned off with `unset mxtics`.  Similar commands control minor tics along
+ the other axes.
+
+ Syntax:
+       set mxtics {<freq> | default}
+       unset mxtics
+       show mxtics
+
+ The same syntax applies to `mytics`, `mztics`, `mx2tics`, `my2tics` and
+ `mcbtics`.
+
+ <freq> is the number of sub-intervals (NOT the number of minor tics) between
+ major tics (the default for a linear axis is either two or five
+ depending on the major tics, so there are one or four minor
+ tics between major tics). Selecting `default` will return the number of minor
+ ticks to its default value.
+
+ If the axis is logarithmic, the number of sub-intervals will be set to a
+ reasonable number by default (based upon the length of a decade).  This will
+ be overridden if <freq> is given.  However the usual minor tics (2, 3, ...,
+ 8, 9 between 1 and 10, for example) are obtained by setting <freq> to 10,
+ even though there are but nine sub-intervals.
+
+ To set minor tics at arbitrary positions, use the ("<label>" <pos> <level>,
+ ...) form of `set {x|x2|y|y2|z}tics` with <label> empty and <level> set to 1.
+
+ The `set m{x|x2|y|y2|z}tics` commands work only when there are uniformly
+ spaced major tics.  If all major tics were placed explicitly by
+ `set {x|x2|y|y2|z}tics`, then minor tic commands are ignored.  Implicit
+ major tics and explicit minor tics can be combined using
+ `set {x|x2|y|y2|z}tics` and `set {x|x2|y|y2|z}tics add`.
+
+ Examples:
+       set xtics 0, 5, 10
+       set xtics add (7.5)
+       set mxtics 5
+ Major tics at 0,5,7.5,10, minor tics at 1,2,3,4,6,7,8,9
+       set logscale y
+       set ytics format ""
+       set ytics 1e-6, 10, 1
+       set ytics add ("1" 1, ".1" 0.1, ".01" 0.01, "10^-3" 0.001, \
+                      "10^-4" 0.0001)
+       set mytics 10
+ Major tics with special formatting, minor tics at log positions
+
+ By default, minor tics are off for linear axes and on for logarithmic axes.
+ They inherit the settings for `axis|border` and `{no}mirror` specified for
+ the major tics.  Please see `set xtics` for information about these.
+?commands set my2tics
+?commands unset my2tics
+?commands show my2tics
+?set my2tics
+?unset my2tics
+?show my2tics
+?my2tics
+?nomy2tics
+ Minor tic marks along the y2 (right-hand) axis are controlled by `set
+ my2tics`.  Please see `set mxtics`.
+?commands set mytics
+?commands unset mytics
+?commands show mytics
+?set mytics
+?unset mytics
+?show mytics
+?mytics
+?nomytics
+ Minor tic marks along the y axis are controlled by `set mytics`.  Please
+ see `set mxtics`.
+?commands set mztics
+?commands unset mztics
+?commands show mztics
+?set mztics
+?unset mztics
+?show mztics
+?mztics
+?nomztics
+ Minor tic marks along the z axis are controlled by `set mztics`.  Please
+ see `set mxtics`.
+?object
+?commands set object
+?commands show object
+?set object
+?show object
+ The `set object` command defines a single object which will appear in all
+ subsequent 2D plots. You may define as many objects as you like. Currently the
+ supported object types are `rectangle`, `circle`, `ellipse`, and `polygon`.
+ Rectangles inherit a default set of style properties (fill, color, border) from
+ those set by the command `set style rectangle`, but each object can also be
+ given individual style properties. Circles, ellipses, and polygons  inherit the
+ fill style from `set style fill`.
+
+ Syntax:
+     set object <index>
+         <object-type> <object-properties>
+         {front|back|behind} {clip|noclip}
+         {fc|fillcolor <colorspec>} {fs <fillstyle>}
+         {default} {lw|linewidth <width>}
+
+ <object-type> is either `rectangle`, `ellipse`, `circle`, or `polygon`.
+ Each object type has its own set of characteristic properties.
+
+ Setting `front` will draw the object in front of all plot elements, but
+ behind any labels that are also marked `front`. Setting `back` will place the
+ object behind all plot curves and labels. Setting `behind` will place the
+ object behind everything including the axes and `back` rectangles, thus
+     set object rectangle from screen 0,0 to screen 1,1 behind
+ can be used to provide a colored background for the entire graph or page.
+
+ By default, objects are clipped to the graph boundary unless one or more
+ vertices are given in screen coordinates.  Setting `noclip` will disable
+ clipping to the graph boundary, but will still clip against the screen size.
+
+ The fill color of the object is taken from the <colorspec>. `fillcolor`
+ may be abbreviated `fc`.  The fill style is taken from <fillstyle>.
+ See `colorspec` and `fillstyle`.  If the keyword `default` is given,
+ these properties are inherited from the default settings at the time a plot
+ is drawn. See `set style rectangle`.
+?rectangle
+?commands set object rectangle
+?commands show object rectangle
+?set object rectangle
+?show object rectangle
+ Syntax:
+     set object <index> rectangle
+         {from <position> {to|rto} <position> |
+          center <position> size <w>,<h> |
+          at <position> size <w>,<h>}
+
+ The position of the rectangle may be specified by giving the position of two
+ diagonal corners (bottom left and top right) or by giving the position of the
+ center followed by the width and the height.  In either case the positions
+ may be given in axis, graph, or screen coordinates. See `coordinates`.
+ The options `at` and `center` are synonyms.
+
+ Examples:
+     # Force the entire area enclosed by the axes to have background color cyan
+     set object 1 rect from graph 0, graph 0 to graph 1, graph 1 back
+     set object 1 rect fc rgb "cyan" fillstyle solid 1.0
+
+     # Position a red square with lower left at 0,0 and upper right at 2,3
+     set object 2 rect from 0,0 to 2,3 fc lt 1
+
+     # Position an empty rectangle (no fill) with a blue border
+     set object 3 rect from 0,0 to 2,3 fs empty border rgb "blue"
+
+     # Return fill and color to the default style but leave vertices unchanged
+     set object 2 rect default
+
+ Rectangle corners specified in screen coordinates may extend beyond the edge of
+ the current graph. Otherwise the rectangle is clipped to fit in the graph.
+
+?ellipse
+?commands set object ellipse
+?commands show object ellipse
+?set object ellipse
+?show object ellipse
+ Syntax:
+     set object <index> ellipse {at|center} <position> size <w>,<h>
+         {angle <orientation>} {units xy|xx|yy}
+         {<other-object-properties>}
+
+ The position of the ellipse is specified by giving the center followed by
+ the width and the height (actually the major and minor axes). The keywords
+ `at` and `center` are synonyms.  The center position may be given in axis,
+ graph, or screen coordinates. See `coordinates`. The major and minor axis
+ lengths must be given in axis coordinates.  The orientation of the ellipse
+ is specified by the angle between the horizontal axis and the major diameter
+ of the ellipse.  If no angle is given, the default ellipse orientation
+ will be used instead (see `set style ellipse`).  The `units` keyword
+ controls the scaling of the axes of the ellipse. `units xy` means that the
+ major axis is interpreted in terms of units along the x axis, while the 
+ minor axis in that of the y axis. `units xx` means that both axes of the 
+ ellipses are scaled in the units of the x axis, while `units yy` means 
+ that both axes are in units of the y axis. 
+ The default is `xy` or whatever `set style ellipse units` was set to.
+
+ NB: If the x and y axis scales are not equal, (e.g. `units xy` is in
+ effect) then the major/minor axis ratio will no longer be correct after
+ rotation.
+
+ Note that `set object ellipse size <2r>,<2r>` does not in general produce
+ the same result as `set object circle <r>`.  The circle radius is always
+ interpreted in terms of units along the x axis, and will always produce a
+ circle even if the x and y axis scales are different and even if the aspect
+ ratio of your plot is not 1.  If `units` is set to `xy`, then
+ 'set object ellipse' interprets the first <2r> in terms of x axis units 
+ and the second <2r> in terms of y axis units. This will only produce a
+ circle if the x and y axis scales are identical and the plot aspect ratio
+ is 1.  On the other hand, if `units` is set to `xx` or `yy`, then the
+ diameters specified in the 'set object' command will be interpreted in the
+ same units, so the ellipse will have the correct aspect ratio, and it will
+ maintain its aspect ratio even if the plot is resized.
+
+?circle
+?commands set object circle
+?commands show object circle
+?set object circle
+?show object circle
+ Syntax:
+     set object <index> circle {at|center} <position> size <radius>
+         {arc [<begin>:<end>]}
+         {<other-object-properties>}
+
+ The position of the circle is specified by giving the position of the center
+ center followed by the radius.  The keywords `at` and `center` are synonyms.
+ The position and radius may be given in x-axis, graph, or canvas
+ coordinates. See `coordinates`. In all cases the radius is calculated
+ relative to the horizontal scale of the axis, graph, or canvas.  Any
+ disparity between the horizontal and vertical scaling will be corrected for
+ so that the result is always a circle.
+
+ By default a full circle is drawn. The optional qualifier `arc` specifies
+ a starting angle and ending angle, in degrees, for one arc of the circle.
+ The arc is always drawn counterclockwise.
+
+?polygon
+?commands set object polygon
+?commands show object polygon
+?set object polygon
+?show object polygon
+ Syntax:
+     set object <index> polygon
+         from <position> to <position> ... {to <position>}
+ or
+         from <position> rto <position> ... {rto <position>}
+
+ The position of the polygon may be specified by giving the position of a
+ sequence of vertices. These may be given in axis, graph, or screen coordinates.
+ If relative coordinates are used (rto) then the coordinate type must match
+ that of the previous vertex.
+ See `coordinates`.
+
+ Example:
+     set object 1 polygon from 0,0 to 1,1 to 2,0
+     set object 1 fc rgb "cyan" fillstyle solid 1.0 border lt -1
+
+?commands set offsets
+?commands unset offsets
+?commands show offsets
+?set offsets
+?unset offsets
+?show offsets
+?offsets
+?nooffsets
+ Offsets provide a mechanism to put an empty boundary around the data inside
+ an autoscaled graph.  The offsets only affect the x1 and y1 axes, and only in
+ 2D `plot` commands.
+
+ Syntax:
+       set offsets <left>, <right>, <top>, <bottom>
+       unset offsets
+       show offsets
+
+ Each offset may be a constant or an expression.  Each defaults to 0.
+ By default, the left and right offsets are given in units of the first x axis,
+ the top and bottom offsets in units of the first y axis.  Alternatively, you
+ may specify the offsets as a fraction of the total axis range by using the
+ keyword "graph".  A positive offset expands the axis range in the specified
+ direction, e.g., a positive bottom offset makes ymin more negative.  Negative
+ offsets, while permitted, can have unexpected interactions with autoscaling
+ and clipping.  To prevent the auto-scaling from further adjusting your axis
+ ranges, it is useful to also specify "set auto fix".
+
+ Example:
+       set auto fix
+       set offsets graph 0.05, 0, 2, 2
+       plot sin(x)
+
+ This graph of sin(x) will have a y range [-3:3] because the function
+ will be autoscaled to [-1:1] and the vertical offsets are each two.
+ The x range will be [-11:10] because the default is [-10:10] and it has
+ been expanded to the left by 0.05 of that total range.
+?commands set origin
+?commands show origin
+?set origin
+?show origin
+?origin
+ The `set origin` command is used to specify the origin of a plotting surface
+ (i.e., the graph and its margins) on the screen.  The coordinates are given
+ in the `screen` coordinate system (see `coordinates` for information about
+ this system).
+
+ Syntax:
+       set origin <x-origin>,<y-origin>
+?commands set output
+?commands show output
+?set output
+?show output
+?output
+?output file
+ By default, screens are displayed to the standard output. The `set output`
+ command redirects the display to the specified file or device.
+
+ Syntax:
+       set output {"<filename>"}
+       show output
+
+ The filename must be enclosed in quotes.  If the filename is omitted, any
+ output file opened by a previous invocation of `set output` will be closed
+ and new output will be sent to STDOUT.  (If you give the command `set output
+ "STDOUT"`, your output may be sent to a file named "STDOUT"!  ["May be", not
+ "will be", because some terminals, like `x11` or `wxt`, ignore `set output`.])
+
+ When both `set terminal` and `set output` are used together, it is safest to
+ give `set terminal` first, because some terminals set a flag which is needed
+ in some operating systems.  This would be the case, for example, if the
+ operating system needs to know whether or not a file is to be formatted in
+ order to open it properly.
+
+ On machines with popen functions (Unix), output can be piped through a shell
+ command if the first non-whitespace character of the filename is '|'.
+ For instance,
+
+       set output "|lpr -Plaser filename"
+       set output "|lp -dlaser filename"
+
+ On MSDOS machines, `set output "PRN"` will direct the output to the default
+ printer.  On VMS, output can be sent directly to any spooled device.  It is
+ also possible to send the output to DECnet transparent tasks, which allows
+ some flexibility.
+?commands set parametric
+?commands unset parametric
+?commands show parametric
+?set parametric
+?unset parametric
+?show parametric
+?parametric
+?noparametric
+ The `set parametric` command changes the meaning of `plot` (`splot`) from
+ normal functions to parametric functions.  The command `unset parametric`
+ restores the plotting style to normal, single-valued expression plotting.
+
+ Syntax:
+       set parametric
+       unset parametric
+       show parametric
+
+ For 2D plotting, a parametric function is determined by a pair of parametric
+ functions operating on a parameter.  An example of a 2D parametric function
+ would be `plot sin(t),cos(t)`, which draws a circle (if the aspect ratio is
+ set correctly---see `set size`).  `gnuplot` will display an error message if
+ both functions are not provided for a parametric `plot`.
+
+ For 3D plotting, the surface is described as x=f(u,v), y=g(u,v), z=h(u,v).
+ Therefore a triplet of functions is required.  An example of a 3D parametric
+ function would be `cos(u)*cos(v),cos(u)*sin(v),sin(u)`, which draws a sphere.
+ `gnuplot` will display an error message if all three functions are not
+ provided for a parametric `splot`.
+
+ The total set of possible plots is a superset of the simple f(x) style plots,
+ since the two functions can describe the x and y values to be computed
+ separately.  In fact, plots of the type t,f(t) are equivalent to those
+ produced with f(x) because the x values are computed using the identity
+ function.  Similarly, 3D plots of the type u,v,f(u,v) are equivalent to
+ f(x,y).
+
+ Note that the order the parametric functions are specified is xfunction,
+ yfunction (and zfunction) and that each operates over the common parametric
+ domain.
+
+ Also, the `set parametric` function implies a new range of values.  Whereas
+ the normal f(x) and f(x,y) style plotting assume an xrange and yrange (and
+ zrange), the parametric mode additionally specifies a trange, urange, and
+ vrange.  These ranges may be set directly with `set trange`, `set urange`,
+ and `set vrange`, or by specifying the range on the `plot` or `splot`
+ commands.  Currently the default range for these parametric variables is
+ [-5:5].  Setting the ranges to something more meaningful is expected.
+?commands show plot
+?show plot
+ The `show plot` command shows the current plotting command as it results
+ from the last `plot` and/or `splot` and possible subsequent `replot` commands.
+
+ In addition, the `show plot add2history` command adds this current plot
+ command into the `history`. It is useful if you have used `replot` to add
+ more curves to the current plot and you want to edit the whole command now.
+?commands set pm3d
+?commands show pm3d
+?set pm3d
+?show pm3d
+?pm3d
+ pm3d is an `splot` style for drawing palette-mapped 3d and 4d data as
+ color/gray maps and surfaces.  It uses an algorithm that allows plotting
+ gridded as well as non-gridded data without preprocessing, even when the data
+ scans do not have the same number of points.
+
+ Syntax (the options can be given in any order):
+       set pm3d {
+                  { at <position> }
+                  { interpolate <steps/points in scan, between scans> }
+                  { scansautomatic | scansforward | scansbackward | depthorder }
+                  { flush { begin | center | end } }
+                  { ftriangles | noftriangles }
+                  { clip1in | clip4in }
+                  { corners2color { mean|geomean|median|min|max|c1|c2|c3|c4 } }
+                  { hidden3d {<linestyle>} | nohidden3d }
+                  { implicit | explicit }
+                  { map }
+                }
+       show pm3d
+       unset pm3d
+
+ A pm3d color surface is drawn if the splot command specifies `with pm3d`,  
+ if the data or function `style` is set to pm3d globally, or if the pm3d mode is
+ `set pm3d implicit`.  In the latter two cases, the pm3d surface is draw in
+ addition to the mesh produced by the style specified in the plot command. E.g.
+       splot 'fred.dat' with lines, 'lola.dat' with lines
+ would draw both a mesh of lines and a pm3d surface for each data set.
+ If the option `explicit` is on (or `implicit` is off) only plots specified
+ by the `with pm3d` attribute are plotted with a pm3d surface, e.g.:
+       splot 'fred.dat' with lines, 'lola.dat' with pm3d
+ would plot 'fred.dat' with lines (only) and 'lola.dat' with a pm3d surface.
+
+ On gnuplot start-up, the mode is `explicit`. For historical and compatibility
+ reasons, the commands `set pm3d;` (i.e. no options) and `set pm3d at X ...`
+ (i.e.  `at` is the first option) change the mode to `implicit`.
+ The command `set pm3d;` sets other options to their default state.
+
+ If you set the default data or function style to `pm3d`, e.g.:
+       set style data pm3d
+ then the options `implicit` and `explicit` have no effect.
+
+ Note that when plotting several plots, they are plotted in the order given
+ on the command line. This can be of interest especially for filled surfaces
+ which can overwrite and therefore hide part of earlier plots.
+
+ The pm3d coloring can be drawn at any or all of three different positions,
+ `top`, `bottom`, or `surface`. See `pm3d position`.
+ The following command draws three color surfaces at different altitudes:
+       set border 4095
+       set pm3d at s
+       splot 10*x with pm3d at b, x*x-y*y, x*x+y*y with pm3d at t
+
+ See also help for `set palette`, `set cbrange`, `set colorbox`, 
+ and definitely the demo file `demo/pm3d.dem`.
+?pm3d algorithm
+
+ Let us first describe how a map/surface is drawn.  The input data come from an
+ evaluated function or from an `splot data file`.  Each surface consists of a
+ sequence of separate scans (isolines).  The pm3d algorithm fills the region
+ between two neighbouring points in one scan with another two points in the
+ next scan by a gray (or color) according to z-values (or according to an
+ additional 'color' column, see help for `using`) of these 4 corners; by default
+ the 4 corner values are averaged, but this can be changed by the option
+ `corners2color`.  In order to get a reasonable surface, the neighbouring scans
+ should not cross and the number of points in the neighbouring scans should not
+ differ too much; of course, the best plot is with scans having same number of
+ points.  There are no other requirements (e.g. the data need not be gridded).
+ Another advantage is that the pm3d algorithm does not draw anything outside of
+ the input (measured or calculated) region.
+
+ Surface coloring works with the following input data:
+
+ 1. splot of function or of data file with one or three data columns: The
+ gray/color scale is obtained by mapping the averaged (or `corners2color`)
+ z-coordinate of the four corners of the above-specified quadrangle into the
+ range [min_color_z,max_color_z] of `zrange` or `cbrange` providing a gray value
+ in the range [0:1].  This value can be used directly as the gray for gray maps.
+ The normalized gray value can be further mapped into a color---see `set palette`
+ for the complete description.
+
+ 2. splot of data file with two or four data columns: The gray/color value is
+ obtained by using the last-column coordinate instead of the z-value, thus
+ allowing the color and the z-coordinate be mutually independent.  This can be
+ used for 4d data drawing.
+
+ Other notes:
+
+ 1. The term 'scan' referenced above is used more among physicists than the
+ term 'iso_curve' referenced in gnuplot documentation and sources.  You measure
+ maps recorded one scan after another scan, that's why.
+
+ 2. The 'gray' or 'color' scale is a linear mapping of a continuous variable
+ onto a smoothly varying palette of colors. The mapping is shown in a
+ rectangle next to the main plot. This documentation refers to this as a
+ "colorbox", and refers to the indexing variable as lying on the colorbox axis.
+ See `set colorbox`, `set cbrange`.
+
+ 3. To use pm3d coloring to generate a two-dimensional plot rather than a 3D
+ surface, use `set view map` or `set pm3d map`.
+?pm3d position
+ Color surface can be drawn at the base or top (then it is a gray/color planar
+ map) or at z-coordinates of surface points (gray/color surface).  This is
+ defined by the `at` option with a string of up to 6 combinations of `b`, `t`
+ and `s`. For instance, `at b` plots at bottom only, `at st` plots firstly
+ surface and then top map, while `at bstbst` will never by seriously used.
+
+ Colored quadrangles are plotted one after another.  When plotting surfaces
+ (`at s`), the later quadrangles overlap (overdraw) the previous ones.
+ (Gnuplot is not virtual reality tool to calculate intersections of filled
+ polygon meshes.)  You may try to switch between `scansforward` and
+ `scansbackward` to force the first scan of the data to be plotted first or
+ last.  The default is `scansautomatic` where gnuplot makes a guess about scans
+ order.  On the other hand, the `depthorder` option completely reorders the
+ quadrangles. The rendering is performed after a depth sorting, which allows to
+ visualize even complicated surfaces; see `pm3d depthorder` for more details.
+?pm3d scanorder
+?pm3d depthorder
+?pm3d flush
+?depthorder
+ By default the quadrangles making up a pm3d solid surface are rendered in the
+ order they are encountered along the surface grid points.  This order may be
+ controlled by the options `scansautomatic`|`scansforward`|`scansbackward`.
+ These scan options are not in general compatible with hidden-surface removal.
+
+ If two successive scans do not have same number of points, then it has to be
+ decided whether to start taking points for quadrangles from the beginning of
+ both scans (`flush begin`), from their ends (`flush end`) or to center them
+ (`flush center`).  Note, that `flush (center|end)` are incompatible with
+ `scansautomatic`: if you specify `flush center` or `flush end` and
+ `scansautomatic` is set, it is silently switched to `scansforward`.
+
+ If two subsequent scans do not have the same number of points, the option
+ `ftriangles` specifies whether color triangles are drawn at the scan tail(s)
+ where there are not enough points in either of the scan. This can be used to
+ draw a smooth map boundary.
+
+ Gnuplot does not do true hidden surface removal for solid surfaces, but often
+ it is sufficient to render the component quadrangles in order from furthest
+ to closest.  This mode may be selected using the options
+       set pm3d depthorder hidden3d
+ The `depthorder` option orders the solid quadrangles; the `hidden3d` option
+ similarly orders the bounding lines (if drawn).  Note that the global option
+ `set hidden3d` does not affect pm3d surfaces.
+
+?pm3d clipping
+ Clipping with respect to x, y coordinates of quadrangles can be done in two
+ ways.  `clip1in`: all 4 points of each quadrangle must be defined and at least
+ 1 point of the quadrangle must lie in the x and y ranges.  `clip4in`: all 4
+ points of each quadrangle must lie in the x and y ranges.
+
+?pm3d color_assignment
+ `3 columns of data (x,y,z)`:
+
+ The coloring setup as well as the color box drawing are determined by
+ `set palette`.  There can be only one palette for the current plot.  Drawing
+ of several surfaces with different palettes can be achieved by `multiplot`
+ with fixed `origin` and `size`; don't forget to use `set palette maxcolors`
+ when your terminal is running out of available colors.
+
+ There is a single gray/color value associated to each drawn pm3d quadrangle
+ (no smooth color change among vertices).  The value is calculated from
+ z-coordinates from the surrounding corners according to `corners2color
+ <option>`.  The options 'mean' (default), 'geomean' and 'median' produce
+ various kinds of surface color smoothing, while options 'min' and 'max' choose
+ minimal or maximal value, respectively. This may not be desired for pixel
+ images or for maps with sharp and intense peaks, in which case the options
+ 'c1', 'c2', 'c3' or 'c4' can be used instead to assign the quadrangle color
+ based on the z-coordinate of only one corner.  Some experimentation may be
+ needed to determine which corner corresponds to 'c1', as the orientation
+ depends on the drawing direction.  Because the pm3d algorithm does not extend
+ the colored surface outside the range of the input data points, the 'c<j>'
+ coloring options will result in pixels along two edges of the grid not
+ contributing to the color of any quadrangle.  For example, applying the pm3d
+ algorithm to the 4x4 grid of data points in script `demo/pm3d.dem` (please have
+ a look) produces only (4-1)x(4-1)=9 colored rectangles.
+
+ `4 columns of data (x,y,z,color)`:
+
+ If a fourth column of data is provided, it is normally interpreted as a 
+ separate palette-mapped gray value. The coloring of individual quadrangles
+ works as above, except that the color value is distinct from the z value.
+ As a separate coloring option, the fourth data column may provide instead
+ an RGB color. See `rgbcolor variable`. In this case the plotting command
+ must be
+
+       splot ... using 1:2:3:4 with pm3d lc rgb variable
+
+ Another drawing algorithm, which would draw quadrangles around a given node
+ by taking corners from averaged (x,y)-coordinates of its surrounding 4 nodes
+ while using node's color, could be implemented in the future. This is already
+ done for drawing images (2D grids) via `image` and `rgbimage` styles.
+
+ Notice that ranges of z-values and color-values for surfaces are adjustable
+ independently by `set zrange`, `set cbrange`, as well as `set log` for z or
+ cb.  Maps can be adjusted by the cb-axis only; see also `set view map` and
+ `set colorbox`.
+?set pm3d hidden3d
+?pm3d hidden3d
+ The option `set pm3d hidden3d` draws the bounding lines of each quadrangle
+ at the same time that the quadrangle itself is drawn. Normally it is used in
+ conjunction with the `depthorder` option to achieve an approximation to true
+ hidden line removal.  This is far more efficient than using the command
+ `set hidden3d`.  The command takes an optional linestyle controlling the
+ appearance of the bounding lines.  If the linestyle parameter is negative,
+ or omitted, then the line properties given in the plot command are used.
+ Example of recommended usage:
+
+       set pm3d at s hidden3d depthorder
+       unset hidden3d
+       unset surf
+       splot x*x+y*y linecolor rgb "black" linewidth 0.5
+
+?set pm3d interpolate
+?pm3d interpolate
+ The option `interpolate m,n` will interpolate grid points into a finer mesh,
+ and color each quadrangle appropriately.  For data files, this will smoothen
+ the color surface, and enhance spikes in a color surface. For functions,
+ interpolation makes little sense, except to trade off precision for memory.
+ It would usually make more sense to use `samples` and `isosamples` when
+ working with functions. For positive m and n, each quadrangle or triangle
+ is interpolated m-times and n-times in the respective direction.  For negative
+ m and n, the interpolation frequency is chosen so that there will be at least
+ |m| and |n| points drawn; you can consider this as a special gridding function.
+ Zeros, i.e. `interpolate 0,0`, will automatically choose an optimal number of
+ interpolated surface points.
+?pm3d deprecated_options
+ There used to be an option {transparent|solid} to this command.  Now
+ you get the same effect from `set grid {front|layerdefault}`, respectively.
+
+ The command `set pm3d map` is equivalent to `set pm3d at b`; `set view map`;
+ `set style data pm3d`; `set style func pm3d`;.
+ It is used for backwards compatibility, when `set view map` was not available.
+ Take care that you properly use `zrange` and `cbrange` for input data point
+ filtering and color range scaling, respectively; and also `set (no)surface`
+ seems to have a (side?) effect.
+?commands set palette
+?commands show palette
+?set palette
+?show palette
+?palette
+ Palette is a color storage for use by `pm3d`, filled color contours or
+ polygons, color histograms, color gradient background, and whatever it is
+ or it will be implemented...  Here it stands for a palette of smooth
+ "continuous" colors or grays, but let's call it just a palette.
+
+ Color palettes require terminal entries for filled color polygons and
+ palettes of smooth colors, are currently available for terminals listed in
+ help for `set pm3d`. The range of color values are adjustable independently by
+ `set cbrange` and `set log cb`. The whole color palette is
+ visualized in the `colorbox`.
+
+ Syntax:
+       set palette
+       set palette {
+                  { gray | color }
+                  { gamma <gamma> }
+                  {   rgbformulae <r>,<g>,<b>
+                    | defined { ( <gray1> <color1> {, <grayN> <colorN>}... ) }
+                    | file '<filename>' {datafile-modifiers}
+                    | functions <R>,<G>,<B>
+                  }
+                  { cubehelix {start <val>} {cycles <val>} {saturation <val>} }
+                  { model { RGB | HSV | CMY | YIQ | XYZ } }
+                  { positive | negative }
+                  { nops_allcF | ps_allcF }
+                  { maxcolors <maxcolors> }
+                }
+       show palette
+       show palette palette <n> {{float | int}}
+       show palette gradient
+       show palette fit2rgbformulae
+       show palette rgbformulae
+       show colornames
+
+ `set palette` (i.e. without options) sets up the default values.
+ Otherwise, the options can be given in any order.
+ `show palette` shows the current palette properties.
+
+ `show palette gradient` displays the gradient defining the palette (if
+ appropriate).  `show palette rgbformulae` prints the available fixed gray -->
+ color transformation formulae.  `show colornames` prints the known color names.
+
+ `show palette palette <n>` prints to the screen or to the file given by
+ `set print` a table of RGB triplets calculated for the current palette settings
+ and a palette having <n> discrete colors.  The default wide table can be
+ limited to 3 columns of r,g,b float values [0..1] or integer values [0..255]
+ by options float or int, respectively.  This way, the current gnuplot color
+ palette can be loaded into other imaging applications, for example Octave.
+ Additionally to this textual list of RGB table, you can use the `test palette`
+ command to plot the R,G,B profiles for the current palette.
+
+ The following options determine the coloring properties.
+
+ Figure using this palette can be `gray` or `color`.  For instance, in `pm3d`
+ color surfaces the gray of each small spot is obtained by mapping the averaged
+ z-coordinate of the 4 corners of surface quadrangles into the range
+ [min_z,max_z] providing range of grays [0:1]. This value can be used directly
+ as the gray for gray maps. The color map requires a transformation gray -->
+ (R,G,B), i.e. a mapping [0:1] --> ([0:1],[0:1],[0:1]).
+
+ Basically two different types of mappings can be used:  Analytic formulae to
+ convert gray to color, or discrete mapping tables which are interpolated.
+ `palette rgbformulae` and `palette functions` use analytic formulae whereas
+ `palette defined` and `palette file` use interpolated tables.  `palette
+ rgbformulae` reduces the size of postscript output to a minimum.
+
+ The command `show palette fit2rgbformulae` finds the best matching `set
+ palette rgbformulae` for the current `set palette`. Naturally, it makes sense
+ to use it for non-rgbformulae palettes. This command can be found useful
+ mainly for external programs using the same rgbformulae definition of palettes
+ as gnuplot, like zimg (
+           http://zimg.sourceforge.net
+ ).
+
+ `set palette gray` switches to a gray only palette. `set palette rgbformulae`,
+ `set palette defined`, `set palette file` and `set palette functions` switch
+ to a color mapping. `set palette color` is an easy way to switch back from the
+ gray palette to the last color mapping.
+
+ Automatic gamma correction via `set palette gamma <gamma>` can be done for
+ gray maps (`set palette gray`) and for the `cubehelix` color palette schemes.
+ Gamma = 1 produces a linear ramp of intensity. See `test palette`.
+
+ Many terminals support only discrete number of colors (e.g. 256 colors in gif).
+ After the default gnuplot linetype colors are allocated, the rest of the
+ available colors are by default reserved for pm3d.  Thus a multiplot using
+ multiple palettes could fail because the first palette has used all the
+ available color positions.  You can mitigate this limitation by using
+ `set palette maxcolors <N>` with a reasonably small value of N.
+ This option causes N discrete colors to be selected from a continuous palette
+ sampled at equally spaced intervals.  If you want unequal spacing of N
+ discrete colors, use `set palette defined` instead of a single continuous
+ palette.
+
+ RGB color space might not be the most useful color space to work in.  For that
+ reason you may change the color space with `model` to one of `RGB`, `HSV`,
+ `CMY`, `YIQ` and `XYZ`.  Using color names for `set palette defined` tables
+ and a color space other than RGB will result in funny colors.  All explanation
+ have been written for RGB color space, so please note, that `R` can be `H`,
+ `C`, `Y`, or `X`, depending on the actual color space (`G` and `B`
+ accordingly).
+
+ All values for all color spaces are limited to [0,1].
+
+ RGB stands for Red, Green and Blue;  CMY stands for Cyan, Magenta and Yellow;
+ HSV stands for Hue, Saturation, and Value;  YIQ is the color model used by
+ the U.S. Commercial Color Television Broadcasting, it is basically an RGB
+ recoding with downward compatibility for black and white television;
+ XYZ are the three primary colors of the color model defined by the 'Commission
+ Internationale de l'Eclairage' (CIE).
+ For more information on color models see:
+           http://en.wikipedia.org/wiki/Color_space
+
+?commands set palette rgbformulae
+?set palette rgbformulae
+?palette rgbformulae
+?rgbformulae
+ For `rgbformulae` three suitable mapping functions have
+ to be chosen.  This is done via `rgbformulae <r>,<g>,<b>`.  The available
+ mapping functions are listed by `show palette rgbformulae`.  Default is
+ `7,5,15`, some other examples are `3,11,6`, `21,23,3` or `3,23,21`.  Negative
+ numbers, like `3,-11,-6`, mean inverted color (i.e.  1-gray passed into the
+ formula, see also `positive` and `negative` options below).
+
+ Some nice schemes in RGB color space
+    7,5,15   ... traditional pm3d (black-blue-red-yellow)
+    3,11,6   ... green-red-violet
+    23,28,3  ... ocean (green-blue-white); try also all other permutations
+    21,22,23 ... hot (black-red-yellow-white)
+    30,31,32 ... color printable on gray (black-blue-violet-yellow-white)
+    33,13,10 ... rainbow (blue-green-yellow-red)
+    34,35,36 ... AFM hot (black-red-yellow-white)
+
+ A full color palette in HSV color space
+    3,2,2    ... red-yellow-green-cyan-blue-magenta-red
+
+ Please note that even if called `rgbformulae` the formulas might actually
+ determine the <H>,<S>,<V> or <X>,<Y>,<Z> or ... color components as usual.
+
+ Use `positive` and `negative` to invert the figure colors.
+
+ Note that it is possible to find a set of the best matching rgbformulae for any
+ other color scheme by the command
+    show palette fit2rgbformulae
+?commands set palette defined
+?set palette defined
+?palette defined
+ Gray-to-rgb mapping can be manually set by use of `palette defined`:
+ A color gradient is defined and used to give the rgb values.  Such a gradient
+ is a piecewise linear mapping from gray values in [0,1] to the RGB space
+ [0,1]x[0,1]x[0,1].  You must specify the gray values and the corresponding RGB
+ values between which linear interpolation will be done.
+
+ Syntax:
+       set palette  defined { ( <gray1> <color1> {, <grayN> <colorN>}... ) }
+
+ <grayX> are gray values which are mapped to [0,1] and <colorX> are the
+ corresponding rgb colors.  The color can be specified in three different
+ ways:
+
+      <color> :=  { <r> <g> <b> | '<color-name>' | '#rrggbb' }
+
+ Either by three numbers (each in [0,1]) for red, green and blue, separated by
+ whitespace, or the name of the color in quotes or X style color specifiers
+ also in quotes.  You may freely mix the three types in a gradient definition,
+ but the named color "red" will be something strange if RGB is not selected
+ as color space.  Use `show colornames` for a list of known color names.
+
+ Please note, that even if written as <r>, this might actually be the
+ <H> component in HSV color space or <X> in CIE-XYZ space, or ...
+ depending on the selected color model.
+
+ The <gray> values have to form an ascending sequence of real numbers; the
+ sequence will be automatically rescaled to [0,1].
+
+ `set palette defined` (without a gradient definition in braces) switches to
+ RGB color space and uses a preset full-spectrum color gradient.
+ Use `show palette gradient` to display the gradient.
+
+ Examples:
+
+ To produce a gray palette (useless but instructive) use:
+       set palette model RGB
+       set palette defined ( 0 "black", 1 "white" )
+
+ To produce a blue yellow red palette use (all equivalent):
+       set palette defined ( 0 "blue", 1 "yellow", 2 "red" )
+       set palette defined ( 0 0 0 1, 1 1 1 0, 2 1 0 0 )
+       set palette defined ( 0 "#0000ff", 1 "#ffff00", 2 "#ff0000" )
+
+ To produce some rainbow-like palette use:
+       set palette defined ( 0 "blue", 3 "green", 6 "yellow", 10 "red" )
+
+ Full color spectrum within HSV color space:
+       set palette model HSV
+       set palette defined ( 0 0 1 1, 1 1 1 1 )
+       set palette defined ( 0 0 1 0, 1 0 1 1, 6 0.8333 1 1, 7 0.8333 0 1)
+
+ Approximate the default palette used by MATLAB:
+       set pal defined (1 '#00008f', 8 '#0000ff', 24 '#00ffff', \
+                        40 '#ffff00', 56 '#ff0000', 64 '#800000')
+
+ To produce a palette with only a few, equally-spaced colors:
+       set palette model RGB maxcolors 4
+       set palette defined ( 0 "yellow", 1 "red" )
+
+ 'Traffic light' palette (non-smooth color jumps at gray = 1/3 and 2/3).
+       set palette model RGB
+       set palette defined (0 "dark-green", 1 "green", \
+                            1 "yellow",     2 "dark-yellow", \
+                            2 "red",        3 "dark-red" )
+
+?commands set palette functions
+?set palette functions
+?palette functions
+ Use `set palette functions <Rexpr>, <Gexpr>, <Bexpr>` to define three formulae
+ for the R(gray), G(gray) and B(gray) mapping.  The three formulae may depend
+ on the variable `gray` which will take values in [0,1] and should also
+ produce values in [0,1].
+ Please note that <Rexpr> might be a formula for the H-value if HSV color
+ space has been chosen (same for all other formulae and color spaces).
+
+ Examples:
+
+ To produce a full color palette use:
+       set palette model HSV functions gray, 1, 1
+
+ A nice black to gold palette:
+       set palette model XYZ functions gray**0.35, gray**0.5, gray**0.8
+
+ A gamma-corrected black and white palette
+       gamma = 2.2
+       color(gray) = gray**(1./gamma)
+       set palette model RGB functions color(gray), color(gray), color(gray)
+
+?commands set palette cubehelix
+?set palette cubehelix
+?cubehelix
+ The "cubehelix" option defines a family of palettes in which color (hue) varies
+ along the standard color wheel while at the same time the net intensity 
+ increases monotonically as the gray value goes from 0 to 1.
+       D A Green (2011) http://arxiv.org/abs/1108.5083
+ `start` defines the starting point along the color wheel in radians.
+ `cycles` defines how many color wheel cycles span the palette range.
+ Larger values of `saturation` produce more saturated color; saturation > 1
+ may lead to clipping of the individual RGB components and to intensity
+ becoming non-monotonic. The palette is also affected by `set palette gamma`.
+ The default values are
+       set palette cubehelix start 0.5 cycles -1.5 saturation 1
+       set palette gamma 1.5
+
+?commands set palette file
+?set palette file
+?palette file
+ `set palette file` is basically a `set palette defined (<gradient>)` where
+ <gradient> is read from a datafile.  Either 4 columns (gray,R,G,B) or
+ just three columns (R,G,B) have to be selected via the `using` data file
+ modifier.  In the three column case, the line number will be used as gray.
+ The gray range is automatically rescaled to [0,1].  The file is read as a
+ normal data file, so all datafile modifiers can be used.
+ Please note, that `R` might actually be e.g. `H` if HSV color space is
+ selected.
+
+ As usual <filename> may be `'-'` which means that the data follow the command
+ inline and are terminated by a single `e` on a line of its own.
+
+ Use `show palette gradient` to display the gradient.
+
+ Examples:
+
+ Read in a palette of RGB triples each in range [0,255]:
+       set palette file 'some-palette' using ($1/255):($2/255):($3/255)
+
+ Equidistant rainbow (blue-green-yellow-red) palette:
+       set palette model RGB file "-"
+       0 0 1
+       0 1 0
+       1 1 0
+       1 0 0
+       e
+
+ Binary palette files are supported as well, see `binary general`. Example:
+ put 64 triplets of R,G,B doubles into file palette.bin and load it by
+       set palette file "palette.bin" binary record=64 using 1:2:3
+
+
+?commands set palette gamma-correction
+?set palette gamma-correction
+?palette gamma-correction
+?gamma-correction
+ For gray mappings gamma correction can be turned on by `set palette gamma
+ <gamma>`.  <gamma> defaults to 1.5 which is quite suitable for most
+ terminals.
+
+ The gamma correction is applied to the cubehelix color palette family, but not
+ to other palette coloring schemes. However, you may easily implement gamma
+ correction for explicit color functions.
+
+ Example:
+       set palette model RGB
+       set palette functions gray**0.64, gray**0.67, gray**0.70
+
+ To use gamma correction with interpolated gradients specify intermediate
+ gray values with appropriate colors.  Instead of
+
+       set palette defined ( 0 0 0 0, 1 1 1 1 )
+
+ use e.g.
+
+       set palette defined ( 0 0 0 0, 0.5 .73 .73 .73, 1 1 1 1 )
+
+ or even more intermediate points until the linear interpolation fits the
+ "gamma corrected" interpolation well enough.
+
+?commands set palette postscript
+?set palette postscript
+ In order to reduce the size of postscript files, the gray value and not all
+ three calculated r,g,b values are written to the file.  Therefore the
+ analytical formulae are coded directly in the postscript language as a header
+ just before the pm3d drawing, see /g and /cF definitions.  Usually, it makes
+ sense to write therein definitions of only the 3 formulae used.  But for
+ multiplot or any other reason you may want to manually edit the
+ transformations directly in the postscript file.  This is the default option
+ `nops_allcF`.  Using the option `ps_allcF` writes postscript definitions of
+ all formulae.  This you may find interesting if you want to edit the
+ postscript file in order to have different palettes for different surfaces
+ in one graph.  Well, you can achieve this functionality by `multiplot` with
+ fixed `origin` and `size`.
+
+ If pm3d map has been plotted from gridded or almost regular data with an
+ output to a postscript file, then it is possible to reduce the size of this
+ postscript file up to at about 50% by the enclosed awk script
+ `pm3dCompress.awk`.  This you may find  interesting if you intend to keep the
+ file for including it into your publication or before downloading a very large
+ file into a slow printer. Usage:
+     awk -f pm3dCompress.awk thefile.ps >smallerfile.ps
+
+ If pm3d map has been plotted from rectangular gridded data with an output
+ to a postscript file, then it is possible to reduce the file size even more
+ by the enclosed awk script `pm3dConvertToImage.awk`.  Usage:
+     awk -f pm3dConvertToImage.awk <thefile.ps >smallerfile.ps
+
+ You may manually change the postscript output from gray to color and vice
+ versa and change the definition of <maxcolors>.
+?commands set pointintervalbox
+?set pointintervalbox
+?pointintervalbox
+ The `pointinterval` property of line types is used in plot style `linespoints`.
+ A negative value of pointinterval, e.g. -N, means that point symbols are drawn
+ only for every Nth point, and that a box (actually circle) behind each point
+ symbol is blanked out by filling with the background color.  The command
+ `set pointintervalbox` controls the radius of this blanked-out region.
+ It is a multiplier for the default radius, which is equal to the point size.
+?commands set pointsize
+?commands show pointsize
+?set pointsize
+?show pointsize
+?pointsize
+ The `set pointsize` command scales the size of the points used in plots.
+
+ Syntax:
+       set pointsize <multiplier>
+       show pointsize
+
+ The default is a multiplier of 1.0.  Larger pointsizes may be useful to
+ make points more visible in bitmapped graphics.
+
+ The pointsize of a single plot may be changed on the `plot` command.
+ See `plot with` for details.
+
+ Please note that the pointsize setting is not supported by all terminal
+ types.
+?commands set polar
+?commands unset polar
+?commands show polar
+?set polar
+?unset polar
+?show polar
+?polar
+?nopolar
+ The `set polar` command changes the meaning of the plot from rectangular
+ coordinates to polar coordinates.
+
+ Syntax:
+       set polar
+       unset polar
+       show polar
+
+ In polar coordinates, the dummy variable (t) is an angle.  The default range
+ of t is [0:2*pi], or, if degree units have been selected, to [0:360] (see
+ `set angles`).
+
+ The command `unset polar` changes the meaning of the plot back to the default
+ rectangular coordinate system.
+
+ The `set polar` command is not supported for `splot`s.  See the `set mapping`
+ command for similar functionality for `splot`s.
+
+ While in polar coordinates the meaning of an expression in t is really
+ r = f(t), where t is an angle of rotation.  The trange controls the domain
+ (the angle) of the function. The r, x and y ranges control the extent of the
+ graph in the x and y directions.  Each of these ranges, as well as the
+ rrange, may be autoscaled or set explicitly.  For details, see `set rrange`
+ and `set xrange`.
+
+ Example:
+       set polar
+       plot t*sin(t)
+       set trange [-2*pi:2*pi]
+       set rrange [0:3]
+       plot t*sin(t)
+
+ The first `plot` uses the default polar angular domain of 0 to 2*pi.  The
+ radius and the size of the graph are scaled automatically.  The second `plot`
+ expands the domain, and restricts the size of the graph to the area within
+ 3 units of the origin.  This has the effect of limiting x and y to [-3:3].
+
+ You may want to `set size square` to have `gnuplot` try to make the aspect
+ ratio equal to unity, so that circles look circular.
+ See also
+ polar demos (polar.dem)
+ and
+ polar data plot (poldat.dem).
+?commands set print
+?commands show print
+?set print
+?show print
+ The `set print` command redirects the output of the `print` command to a file.
+
+ Syntax:
+       set print
+       set print "-"
+       set print "<filename>"
+       set print "<filename>" append
+       set print "|<shell_command>"
+
+ Without "<filename>", the output file is restored to <STDERR>.  The <filename>
+ "-" means <STDOUT>. The `append` flag causes the file to be opened in append
+ mode.  A <filename> starting with "|" is opened as a pipe to the
+ <shell_command> on platforms that support piping.
+?commands set psdir
+?commands show psdir
+?set psdir
+?show psdir
+?psdir
+ The `set psdir <directory>` command controls the search path used by the
+ postscript terminal to find prologue.ps and character encoding files.
+ You can use this mechanism to switch between different sets of
+ locally-customized prolog files.
+ The search order is
+       1) The directory specified by `set psdir`, if any
+       2) The directory specified by environmental variable GNUPLOT_PS_DIR
+       3) A built-in header or one from the default system directory
+       4) Directories set by `set loadpath`
+?commands set raxis
+?raxis
+ The commands `set raxis` and `unset raxis` toggle whether the polar axis
+ is drawn separately from grid lines and the x axis.  If the minimum of the
+ current rrange is non-zero (and not autoscaled), then a white circle is drawn
+ at the center of the polar plot to indicate that the plot lines and axes do
+ not reach 0.  The axis line is drawn using the same line type as the plot
+ border.  See `polar`, `rrange`, `rtics`, `set grid`.
+?commands set rmargin
+?set rmargin
+?rmargin
+ The command `set rmargin` sets the size of the right margin.
+ Please see `set margin` for details.
+?commands set rrange
+?commands show rrange
+?set rrange
+?show rrange
+?rrange
+ The `set rrange` command sets the range of the radial coordinate for a graph
+ in polar mode.  This has the effect of setting both xrange and yrange as well.
+ The resulting xrange and yrange are both [-(rmax-rmin) : +(rmax-rmin)].
+ However if you later change the x or y range, for example by zooming, this does
+ not change rrange, so data points continue to be clipped against rrange.
+ Autoscaling of rmin always results in rmin = 0.
+?commands set rtics
+?commands show rtics
+?set rtics
+?show rtics
+?rtics
+ The `set rtics` command places tics along the polar axis. These will only be
+ shown in polar plot mode.  The tics and labels are drawn to the right of the
+ origin. The `mirror` keyword causes them to be drawn also to the left of the
+ origin. See `polar`, and see `set xtics` for discussion of other keywords.
+?commands set samples
+?commands show samples
+?set samples
+?show samples
+?samples
+ The sampling rate of functions, or for interpolating data, may be changed
+ by the `set samples` command.
+
+ Syntax:
+       set samples <samples_1> {,<samples_2>}
+       show samples
+
+ By default, sampling is set to 100 points.  A higher sampling rate will
+ produce more accurate plots, but will take longer.  This parameter has no
+ effect on data file plotting unless one of the interpolation/approximation
+ options is used.  See `plot smooth` re 2D data and `set cntrparam` and
+ `set dgrid3d` re 3D data.
+
+ When a 2D graph is being done, only the value of <samples_1> is relevant.
+
+ When a surface plot is being done without the removal of hidden lines, the
+ value of samples specifies the number of samples that are to be evaluated for
+ the isolines.  Each iso-v line will have <sample_1> samples and each iso-u
+ line will have <sample_2> samples.  If you only specify <samples_1>,
+ <samples_2> will be set to the same value as <samples_1>.  See also
+ `set isosamples`.
+?commands set size
+?commands show size
+?set size
+?show size
+?size
+?aspect ratio
+?set size square
+?set size ratio
+?ratio
+ Syntax:
+       set size {{no}square | ratio <r> | noratio} {<xscale>,<yscale>}
+       show size
+
+ The <xscale> and <yscale> values are scale factors for the size of the plot,
+ which includes the graph, labels, and margins.
+
+ Important note:
+       In earlier versions of gnuplot, some terminal types used the values from
+       `set size` to control also the size of the output canvas; others did not.
+       In version 4.6 almost all terminals now follow the following convention:
+
+ `set term <terminal_type> size <XX>, <YY>` controls the size of the output
+ file, or `canvas`. Please see individual terminal documentation for allowed
+ values of the size parameters.  By default, the plot will fill this canvas.
+
+ `set size <XX>, <YY>` scales the plot itself relative to the size of the
+ canvas.  Scale values less than 1 will cause the plot to not fill the entire
+ canvas.  Scale values larger than 1 will cause only a portion of the plot to
+ fit on the canvas.  Please be aware that setting scale values larger than 1
+ may cause problems on some terminal types.
+
+ `ratio` causes `gnuplot` to try to create a graph with an aspect ratio of <r>
+ (the ratio of the y-axis length to the x-axis length) within the portion of
+ the plot specified by <xscale> and <yscale>.
+
+ The meaning of a negative value for <r> is different.  If <r>=-1, gnuplot
+ tries to set the scales so that the unit has the same length on both the x
+ and y axes.  This is equivalent to `set view equal xy`.  See `set view equal`.
+ If <r>=-2, the unit on y has twice the length of the unit on x, and so on.
+
+ The success of `gnuplot` in producing the requested aspect ratio depends on
+ the terminal selected.  The graph area will be the largest rectangle of
+ aspect ratio <r> that will fit into the specified portion of the output
+ (leaving adequate margins, of course).
+
+ `square` is a synonym for `ratio 1`.
+
+ Both `noratio` and `nosquare` return the graph to the default aspect ratio
+ of the terminal, but do not return <xscale> or <yscale> to their default
+ values (1.0).
+
+ `ratio` and `square` have no effect on 3D plots, but do affect 3D projections
+ created using `set view map`.  See also `set view equal`, which forces
+ the x and y axes of a 3D onto the same scale.
+
+ Examples:
+
+ To set the size so that the plot fills the available canvas:
+       set size 1,1
+
+ To make the graph half size and square use:
+       set size square 0.5,0.5
+
+ To make the graph twice as high as wide use:
+       set size ratio 2
+
+?set style
+?show style
+?unset style
+ Default plotting styles are chosen with the `set style data` and
+ `set style function` commands.  See `plot with` for information about how to
+ override the default plotting style for individual functions and data sets.
+ See `plotting styles` for a complete list of styles.
+
+ Syntax:
+       set style function <style>
+       set style data <style>
+       show style function
+       show style data
+
+ Default styles for specific plotting elements may also be set.
+
+ Syntax:
+       set style arrow <n> <arrowstyle>
+       set style fill <fillstyle>
+       set style histogram <histogram style options>
+       set style line <n> <linestyle>
+
+ If `gnuplot` was built with the support of objects, then the following
+ options are also available:
+
+ Syntax:
+       set style rectangle <object options> <linestyle> <fillstyle>
+       set style circle radius <size> {clip|noclip}
+       set style ellipse size <size> units {xy|xx|yy} {clip|noclip}
+
+?commands set style arrow
+?commands unset style arrow
+?commands show style arrow
+?set style arrow
+?unset style arrow
+?show style arrow
+?arrowstyle
+ Each terminal has a default set of arrow and point types, which can be seen
+ by using the command `test`.  `set style arrow` defines a set of arrow types
+ and widths and point types and sizes so that you can refer to them later by
+ an index instead of repeating all the information at each invocation.
+
+ Syntax:
+       set style arrow <index> default
+       set style arrow <index> {nohead | head | heads}
+                               {size <length>,<angle>{,<backangle>}}
+                               {filled | empty | nofilled}
+                               {front | back}
+                               { {linestyle | ls <line_style>}
+                                 | {linetype | lt <line_type>}
+                                   {linewidth | lw <line_width} }
+       unset style arrow
+       show style arrow
+
+ <index> is an integer that identifies the arrowstyle.
+
+ If `default` is given all arrow style parameters are set to their default
+ values.
+
+ If the linestyle <index> already exists, only the given parameters are
+ changed while all others are preserved.  If not, all undefined values are
+ set to the default values.
+
+ Specifying `nohead` produces arrows drawn without a head---a line segment.
+ This gives you yet another way to draw a line segment on the plot.  By
+ default, arrows have one head. Specifying `heads` draws arrow heads on both
+ ends of the line.
+
+ Head size can be controlled by `size <length>,<angle>` or
+ `size <length>,<angle>,<backangle>`, where `<length>` defines length of each
+ branch of the arrow head and `<angle>` the angle (in degrees) they make with
+ the arrow.  `<Length>` is in x-axis units; this can be changed by `first`,
+ `second`, `graph`, `screen`, or `character` before the <length>;  see
+ `coordinates` for details.  `<Backangle>` only takes effect when `filled`
+ or `empty` is also used.  Then, `<backangle>` is the angle (in degrees) the
+ back branches make with the arrow (in the same direction as `<angle>`).
+ The `fig` terminal has a restricted backangle function. It supports three
+ different angles. There are two thresholds: Below 70 degrees, the arrow head
+ gets an indented back angle. Above 110 degrees, the arrow head has an acute
+ back angle. Between these thresholds, the back line is straight.
+
+ Specifying `filled` produces filled arrow heads (if heads are used).
+ Filling is supported on filled-polygon capable terminals, see help of `pm3d`
+ for their list, otherwise the arrow heads are closed but not filled.
+ The same result (closed but not filled arrow head) is reached by specifying
+ `empty`.  Further, filling and outline is obviously not supported on
+ terminals drawing arrows by their own specific routines, like `metafont`,
+ `metapost`, `latex` or `tgif`.
+
+ The line style may be selected from a user-defined list of line styles
+ (see `set style line`) or may be defined here by providing values for
+ `<line_type>` (an index from the default list of styles) and/or
+ `<line_width>` (which is a  multiplier for the default width).
+
+ Note, however, that if a user-defined line style has been selected, its
+ properties (type and width) cannot be altered merely by issuing another
+ `set style arrow` command with the appropriate index and `lt` or `lw`.
+
+ If `front` is given, the arrows are written on top of the graphed data. If
+ `back` is given (the default), the arrow is written underneath the graphed
+ data.  Using `front` will prevent a arrow from being obscured by dense data.
+
+ Examples:
+
+ To draw an arrow without an arrow head and double width, use:
+       set style arrow 1 nohead lw 2
+       set arrow arrowstyle 1
+
+ See also `set arrow` for further examples.
+
+?commands set style boxplot
+?commands unset style boxplot
+?commands show style boxplot
+?set style boxplot
+?unset style boxplot
+?show style boxplot
+ The `set style boxplot` command allows you to change the layout of plots
+ created using the `boxplot` plot style.
+
+ Syntax:
+       set style boxplot {range <r> | fraction <f>}
+                         {{no}outliers} {pointtype <p>}
+                         {candlesticks | financebars}
+                         {separation <x>}
+                         {labels off | auto | x | x2}
+                         {sorted | unsorted}
+
+ The box in the boxplot always spans the range of values from the first
+ quartile to the third quartile of the data points.  The limit of the whiskers
+ that extend from the box can be controlled in two different ways. By default
+ the whiskers extend from each end of the box for a range equal to 1.5 times
+ the interquartile range (i.e. the vertical height of the box proper).
+ Each whisker is truncated back toward the median so that it terminates at a
+ y value belonging to some point in the data set. Since there may be no point
+ whose value is exactly 1.5 times the interquartile distance, the whisker may
+ be shorter than its nominal range.  This default corresponds to 
+       set style boxplot range 1.5
+
+ Alternatively, you can specify the fraction of the total number of points
+ that the whiskers should span.  In this case the range is extended 
+ symmetrically from the median value until it encompasses the requested fraction
+ of the data set.  Here again each whisker is constrained to end at a point in
+ the data set.  To span 95% of the points in the set
+       set style boxplot fraction 0.95
+
+ Any points that lie outside the range of the whiskers are considered outliers.
+ By default these are drawn as individual circles (pointtype 7).  The option
+ `nooutliers` disables this.
+
+ By default boxplots are drawn in a style similar to candlesticks, but you have
+ the option of using instead a style similar to finance bars.
+ If the using specification for a boxplot contains a fourth column, the values
+ in that column will be interpreted as the discrete leveles of a factor 
+ variable.  In this case more than one boxplots may be drawn, as many as the
+ number of levels of the factor variable.  These boxplots will be drawn next to
+ each other, the distance between them is 1.0 by default (in x-axis units).
+ This distance can be changed by the option `separation`.
+ The `labels` option governs how and where these boxplots (each representing a
+ part of the dataset) are labeled.  By default the value of the factor is put 
+ as a tick label on the horizontal axis -- x or x2, depending on which one is
+ used for the plot itself.  This setting corresponds to option `labels auto`.
+ The labels can be forced to use either of the x or x2 axes -- options
+ `labels x` and `labels x2`, respectively --, or they can be turned off
+ altogether with the option `labels off`.
+ By default the boxplots corresponding to different levels of the factor
+ variable are not sorted; they will be drawn in the same order the levels are
+ encountered in the data file. This behavior corresponds to the `unsorted`
+ option. If the `sorted` option is active, the levels are first sorted
+ alphabetically, and the boxplots are drawn in the sorted order.
+
+ The `separation`, `labels`, `sorted` and `unsorted` option only have an effect
+ if a fourth column is given the plot specification.
+
+ See `boxplot`, `candlesticks`, `financebars`.
+
+?commands set style data
+?commands show style data
+?set style data
+?show style data
+?data style
+ The `set style data` command changes the default plotting style for data
+ plots.
+
+ Syntax:
+       set style data <plotting-style>
+       show style data
+
+ See `plotting styles` for the choices.  If no choice is given, the choices are
+ listed.  `show style data` shows the current default data plotting style.
+?commands set style fill
+?commands show style fill
+?set style fill
+?show style fill
+?fillstyle
+ The `set style fill` command is used to set the default style of the plot
+ elements in plots with boxes, histograms, candlesticks and filledcurves.
+ This default can be superseded by fillstyles attached to individual plots.
+ See also 'set style rectangle'.
+
+ Syntax:
+       set style fill {empty
+                       | {transparent} solid {<density>}
+                       | {transparent} pattern {<n>}}
+                      {border {lt} {lc <colorspec>} | noborder}
+
+ The default fillstyle is `empty`.
+
+ The `solid` option causes filling with a solid color, if the terminal
+ supports that. The <density> parameter specifies the intensity of the
+ fill color. At a <density> of 0.0, the box is empty, at <density> of 1.0,
+ the inner area is of the same color as the current linetype.
+ Some terminal types can vary the density continuously; others implement
+ only a few levels of partial fill.  If no <density> parameter is given,
+ it defaults to 1.
+
+ The `pattern` option causes filling to be done with a fill pattern supplied
+ by the terminal driver.  The kind and number of available fill patterns
+ depend on the terminal driver.  If multiple datasets using filled boxes are
+ plotted, the pattern cycles through all available pattern types, starting
+ from pattern <n>, much as the line type cycles for multiple line plots.
+
+ The `empty` option causes filled boxes not to be filled. This is the default.
+
+ By default, `border`, the box is bounded by a solid line of the current
+ linetype. `border <colorspec>` allows you to change the color of the border.
+ `noborder` specifies that no bounding lines are drawn.
+?commands set style fill transparent
+?set style fill transparent
+?fillstyle transparent
+?transparent
+ Some terminals support the attribute `transparent` for filled areas.
+ In the case of transparent solid fill areas, the `density` parameter is
+ interpreted as an alpha value; that is, density 0 is fully transparent,
+ density 1 is fully opaque.  In the case of transparent pattern fill, the
+ background of the pattern is either fully transparent or fully opaque.
+
+       terminal   solid pattern    pm3d
+       --------------------------------
+       gif           no     yes      no
+       jpeg         yes      no     yes
+       pdf          yes     yes     yes
+       png    TrueColor   index     yes
+       post          no     yes      no
+       svg          yes      no     yes
+       win          yes     yes     yes
+       wxt          yes     yes     yes
+       x11           no     yes      no
+
+
+ Note that there may be additional limitations on the creation or viewing of
+ graphs containing transparent fill areas.  For example, the png terminal can
+ only use transparent fill if the "truecolor" option is set.  Some pdf viewers
+ may not correctly display the fill areas even if they are correctly described
+ in the pdf file. Ghostscript/gv does not correctly display pattern-fill areas
+ even though actual PostScript printers generally have no problem.
+?commands set style function
+?commands show style function
+?set style function
+?show style function
+ The `set style function` command changes the default plotting style for
+ function plots (e.g. lines, points, filledcurves).  See `plotting styles`.
+
+ Syntax:
+       set style function <plotting-style>
+       show style function
+?commands set style increment
+?commands show style increment
+?set style increment
+?show style increment
+ `Note`:  This command has been deprecated.  Instead please use the newer
+ command `set linetype`, which redefines the linetypes themselves rather
+ than searching for a suitable temporary line style to substitute.
+ See `set linetype`
+
+ Syntax:
+       set style increment {default|userstyles}
+       show style increment
+
+ By default, successive plots within the same graph will use successive
+ linetypes from the default set for the current terminal type.
+ However, choosing `set style increment user` allows you to step through
+ the user-defined line styles rather than through the default linetypes.
+
+ Example:
+
+       set style line 1 lw 2 lc rgb "gold"
+       set style line 2 lw 2 lc rgb "purple"
+       set style line 4 lw 1 lc rgb "sea-green"
+       set style increment user
+
+       plot f1(x), f2(x), f3(x), f4(x)
+
+ should plot functions f1, f2, f4 in your 3 newly defined line styles.
+ If a user-defined line style is not found then the corresponding default
+ linetype is used instead.  E.g. in the example above, f3(x) will be plotted
+ using the default linetype 3.
+
+?commands set style line
+?commands unset style line
+?commands show style line
+?set style line
+?unset style line
+?show style line
+?linestyle
+?linewidth
+ Each terminal has a default set of line and point types, which can be seen
+ by using the command `test`.  `set style line` defines a set of line types
+ and widths and point types and sizes so that you can refer to them later by
+ an index instead of repeating all the information at each invocation.
+
+ Syntax:
+       set style line <index> default
+       set style line <index> {{linetype  | lt} <line_type> | <colorspec>}
+                              {{linecolor | lc} <colorspec>}
+                              {{linewidth | lw} <line_width>}
+                              {{pointtype | pt} <point_type>}
+                              {{pointsize | ps} <point_size>}
+                              {{pointinterval | pi} <interval>}
+                              {palette}
+       unset style line
+       show style line
+
+ `default` sets all line style parameters to those of the linetype with
+ that same index.
+
+ If the linestyle <index> already exists, only the given parameters are
+ changed while all others are preserved.  If not, all undefined values are
+ set to the default values.
+
+ Line styles created by this mechanism do not replace the default linetype
+ styles; both may be used.  Line styles are temporary. They are lost whenever
+ you execute a `reset` command.  To redefine the linetype itself,
+ please see `set linetype`.
+
+ The line and point types default to the index value. The exact symbol that is
+ drawn for that index value may vary from one terminal type to another.
+
+ The line width and point size are multipliers for the current terminal's
+ default width and size (but note that <point_size> here is unaffected by
+ the multiplier given by the command`set pointsize`).
+
+ The `pointinterval` controls the spacing between points in a plot drawn with
+ style `linespoints`.  The default is 0 (every point is drawn). For example,
+ `set style line N pi 3` defines a linestyle that uses pointtype N, pointsize
+ and linewidth equal to the current defaults for the terminal, and will draw
+ every 3rd point in plots using `with linespoints`.  A negative value for the
+ interval is treated the same as a positive value, except that some terminals
+ will try to interrupt the line where it passes through the point symbol.
+
+ Not all terminals support the `linewidth` and `pointsize` features; if
+ not supported, the option will be ignored.
+
+ Terminal-independent colors may be assigned using either
+ `linecolor <colorspec>` or `linetype <colorspec>`, abbreviated `lc` or `lt`.
+ This requires giving a RGB color triple, a known palette color name,
+ a fractional index into the current palette, or a constant value from the
+ current mapping of the palette onto cbrange.
+ See `colors`, `colorspec`, `set palette`, `colornames`, `cbrange`.
+
+ `set style line <n> linetype <lt>` will set both a terminal-dependent dot/dash
+ pattern and color. The commands`set style line <n> linecolor <colorspec>` or
+ `set style line <n> linetype <colorspec>` will set a new line color while
+ leaving the existing dot-dash pattern unchanged.
+
+ In 3d mode (`splot` command), the special keyword `palette` is allowed as a
+ shorthand for "linetype palette z".  The color value corresponds to the
+ z-value (elevation) of the splot, and varies smoothly along a line or surface.
+
+ Examples:
+ Suppose that the default lines for indices 1, 2, and 3 are red, green, and
+ blue, respectively, and the default point shapes for the same indices are a
+ square, a cross, and a triangle, respectively.  Then
+
+       set style line 1 lt 2 lw 2 pt 3 ps 0.5
+
+ defines a new linestyle that is green and twice the default width and a new
+ pointstyle that is a half-sized triangle.  The commands
+
+       set style function lines
+       plot f(x) lt 3, g(x) ls 1
+
+ will create a plot of f(x) using the default blue line and a plot of g(x)
+ using the user-defined wide green line.  Similarly the commands
+
+       set style function linespoints
+       plot p(x) lt 1 pt 3, q(x) ls 1
+
+ will create a plot of p(x) using the default triangles connected by a red
+ line and q(x) using small triangles connected by a green line.
+
+       splot sin(sqrt(x*x+y*y))/sqrt(x*x+y*y) w l pal
+
+ creates a surface plot using smooth colors according to `palette`. Note,
+ that this works only on some terminals. See also `set palette`, `set pm3d`.
+
+       set style line 10 linetype 1 linecolor rgb "cyan"
+
+ will assign linestyle 10 to be a solid cyan line on any terminal that
+ supports rgb colors.
+
+?commands set style circle
+?commands unset style circle
+?commands show style circle
+?set style circle
+?unset style circle
+?show style circle
+
+ Syntax:
+       set style circle {radius {graph|screen} <R>} {clip|noclip}
+
+ This command sets the default radius used in plot style "with circles".  It
+ applies to data plots with only 2 columns of data (x,y) and to function plots.
+ "noclip" disables clippling the circle to the plot boundary.
+ The default is "set style circle radius graph 0.02 clip".
+
+?commands set style rectangle
+?commands unset style rectangle
+?commands show style rectangle
+?set style rectangle
+?unset style rectangle
+?show style rectangle
+
+ Rectangles defined with the `set object` command can have individual styles.
+ However, if the object is not assigned a private style then it inherits a
+ default that is taken from the `set style rectangle` command.
+
+ Syntax:
+     set style rectangle {front|back} {lw|linewidth <lw>}
+                         {fillcolor <colorspec>} {fs <fillstyle>}
+
+ See `colorspec` and `fillstyle`.  `fillcolor` may be abbreviated as `fc`.
+
+ Examples:
+     set style rectangle back fc rgb "white" fs solid 1.0 border lt -1
+     set style rectangle fc linsestyle 3 fs pattern 2 noborder
+
+ The default values correspond to solid fill with the background color and a
+ black border.
+
+?commands set style ellipse
+?commands show style ellipse
+?set style ellipse
+?unset style ellipse
+?show style ellipse
+
+ Syntax:
+       set style ellipse {units xx|xy|yy} {clip|noclip}
+                         {size {graph|screen} <a>, {{graph|screen} <b>}}
+                         {angle <angle>}
+
+ This command governs whether the diameters of ellipses are interpreted in
+ the same units or not.
+ Default is `xy`, which means that the major diameter (first axis) of
+ ellipses will be interpreted in the same units as the x (or x2) axis,
+ while the minor (second) diameter in those of the y (or y2) axis.  
+ In this mode the ratio of the ellipse axes depends on the scales of the
+ plot axes and aspect ratio of the plot.  When set to `xx` or `yy`,
+ both axes of all ellipses will be interpreted in the same units.
+ This means that the ratio of the axes of the plotted ellipses will be
+ correct even after rotation, but either their vertical or horizontal extent
+ will not be correct.
+
+ This is a global setting that affects all ellipses, both those defined as
+ objects and those generated with the `plot` command, however, the value of
+ `units` can also be redefined on a per-plot and per-object basis.
+
+ It is also possible to set a default size for ellipses with the `size` 
+ keyword.  This default size applies to data plots with only 
+ 2 columns of data (x,y) and to function plots.  The two values are 
+ interpreted as the major and minor diameters (as opposed to semi-major 
+ and semi-minor axes) of the ellipse.
+
+ The default is "set style ellipse size graph 0.05,0.03".
+
+ Last, but not least it is possible to set the default orientation with the
+ `angle` keyword. The orientation, which is defined as the angle between the
+ major axis of the ellipse and the plot's x axis, must be given in degrees.
+
+ "noclip" disables clippling the circle to the plot boundary.
+
+ For defining ellipse objects, see `set object ellipse`;
+ for the 2D plot style, see `ellipses`.
+
+?commands set surface
+?commands unset surface
+?commands show surface
+?set surface
+?unset surface
+?show surface
+?surface
+?nosurface
+ The command `set surface` controls the display of surfaces by `splot`.
+
+ Syntax:
+       set surface
+       unset surface
+       show surface
+
+ The surface is drawn with the style specified by `with`, or else the
+ appropriate style, data or function.
+
+ `unset surface` will cause `splot` to not draw points or lines corresponding
+ to any of the function or data file points.  If you want to turn off the surface
+ for an individual function or data file while leaving the others active, use
+ the `nosurface` keyword in the `splot` command.  Contours may still be drawn on
+ the surface, depending on the `set contour` option.  The combination
+ `unset surface; set contour base` is useful for displaying contours on the grid
+ base.  See also `set contour`. 
+?commands set table
+?set table
+?table
+ When `table` mode is enabled, `plot` and `splot` commands print out a
+ multicolumn ASCII table of X Y {Z} R values rather than creating an actual
+ plot on the current terminal.  The character R takes on one of three values:
+ "i" if the point is in the active range, "o" if it is out-of-range, or "u"
+ if it is undefined.  The data format is determined by the format of the axis
+ labels (see `set format`), and the columns are separated by single spaces.
+ This can be useful if you want to generate contours and then save them for
+ further use, perhaps for plotting with `plot`;  see `set contour` for example.
+ The same method can be used to save interpolated data
+ (see `set samples` and `set dgrid3d`).
+
+ Syntax:
+       set table {"outfile"}
+       plot <whatever>
+       unset table
+
+ Tabular output is written to the named file, if any, otherwise it is written
+ to the current value of `set output`.  You must explicitly `unset table`
+ in order to go back to normal plotting on the current terminal.
+?commands set terminal
+?commands show terminal
+?set terminal
+?set term
+?show terminal
+?show term
+?set terminal push
+?set term push
+?terminal push
+?term push
+?push
+?set terminal pop
+?set term pop
+?terminal pop
+?term pop
+?pop
+ `gnuplot` supports many different graphics devices.  Use `set terminal` to
+ tell `gnuplot` what kind of output to generate. Use `set output` to redirect
+ that output to a file or device.
+
+ Syntax:
+       set terminal {<terminal-type> | push | pop}
+       show terminal
+
+ If <terminal-type> is omitted, `gnuplot` will list the available terminal
+ types.  <terminal-type> may be abbreviated.
+
+ If both `set terminal` and `set output` are used together, it is safest to
+ give `set terminal` first, because some terminals set a flag which is needed
+ in some operating systems.
+
+ Some terminals have many additional options.
+ The options used by a previous invocation `set term <term> <options>` of a
+ given `<term>` are remembered, thus subsequent `set term <term>` does
+ not reset them.  This helps in printing, for instance, when switching
+ among different terminals---previous options don't have to be repeated.
+
+ The command `set term push` remembers the current terminal including its
+ settings while `set term pop` restores it. This is equivalent to `save term`
+ and `load term`, but without accessing the filesystem. Therefore they can be
+ used to achieve platform independent restoring of the terminal after printing,
+ for instance. After gnuplot's startup, the default terminal or that from
+ `startup` file is pushed automatically. Therefore portable scripts can rely
+ that `set term pop` restores the default terminal on a given platform unless
+ another terminal has been pushed explicitly.
+
+ For more information, see the `complete list of terminals`.
+
+?commands set termoption
+?set termoption
+?termoption
+ The `set termoption` command allows you to change the behaviour of the
+ current terminal without requiring a new `set terminal` command. Only one
+ option can be changed per command, and only a small number of options can
+ be changed this way. Currently the only options accepted are
+
+      set termoption {no}enhanced
+      set termoption font "<fontname>{,<fontsize>}"
+      set termoption fontscale <scale>
+      set termoption {solid|dashed}
+      set termoption {linewidth <lw>}{lw <lw>}
+
+?commands set tics
+?commands unset tics
+?commands show tics
+?set tics
+?unset tics
+?show tics
+?tics
+ Control of the major (labelled) tics on all axes at once is possible with the
+ `set tics` command.
+
+ Fine control of the major (labelled) tics on all axes at once is possible
+ with the `set tics` command.  The tics may be turned off with the `unset tics`
+ command, and may be turned on (the default state) with `set tics`.  Similar
+ commands (by preceding 'tics' by the axis name) control the major tics on a
+ single axis.
+
+ Syntax:
+       set tics {axis | border} {{no}mirror}
+                {in | out} {scale {default | <major> {,<minor>}}}
+                {{no}rotate {by <ang>}} {offset <offset> | nooffset}
+                {left | right | center | autojustify}
+                { format "formatstring" } { font "name{,<size>}" }
+                { textcolor <colorspec> }
+       set tics {front | back}
+       unset tics
+       show tics
+
+ The options in the first set above can be applied individually to
+ any or all axes, i.e., x, y, z, x2, y2, and cb.
+
+ Set tics `front` or `back` applies to all axes at once, but only for 2D plots
+ (not splot).  It controls whether the tics are placed behind or in front of
+ the plot elements, in the case that there is overlap.
+
+ `axis` or `border` tells `gnuplot` to put the tics (both the tics themselves
+ and the accompanying labels) along the axis or the border, respectively.  If
+ the axis is very close to the border, the `axis` option will move the
+ tic labels to outside the border in case the border is printed (see
+ `set border`).  The relevant margin settings will usually be sized badly by
+ the automatic layout algorithm in this case.
+
+ `mirror` tells `gnuplot` to put unlabelled tics at the same positions on the
+ opposite border.  `nomirror` does what you think it does.
+
+ `in` and `out` change the tic marks to be drawn inwards or outwards.
+
+ With `scale`, the size of the tic marks can be adjusted. If <minor> is not
+ specified, it is 0.5*<major>.  The default size 1.0 for major tics and 0.5
+ for minor tics is requested by `scale default`.
+
+ `rotate` asks `gnuplot` to rotate the text through 90 degrees, which will be
+ done if the terminal driver in use supports text rotation.  `norotate`
+ cancels this. `rotate by <ang>` asks for rotation by <ang> degrees, supported
+ by some terminal types.
+
+ The defaults are `border mirror norotate` for tics on the x and y axes, and
+ `border nomirror norotate` for tics on the x2 and y2 axes.  For the z axis,
+ the default is `nomirror`.
+
+ The <offset> is specified by either x,y or x,y,z, and may be preceded by
+ `first`, `second`, `graph`, `screen`, or `character` to select the
+ coordinate system. <offset> is the offset of the tics texts from their
+ default positions, while the default coordinate system is `character`.
+ See `coordinates` for details. `nooffset` switches off the offset.
+
+ By default, tic labels are justified automatically depending on the axis and
+ rotation angle to produce aesthetically pleasing results. If this is not
+ desired, justification can be overridden with an explicit `left`, `right` or
+ `center` keyword. `autojustify` restores the default behavior.
+
+ `set tics` with no options restores to place tics inwards. Every other
+ options are retained.
+
+ See also `set xtics` for more control of major (labelled) tic marks and
+ `set mxtics` for control of minor tic marks.  These commands provide control
+ at a axis by axis basis.
+?commands set ticslevel
+?commands show ticslevel
+?set ticslevel
+?show ticslevel
+?ticslevel
+ Deprecated. See `set xyplane`.
+?commands set ticscale
+?commands show ticscale
+?set ticscale
+?show ticscale
+?ticscale
+ The `set ticscale` command is deprecated, use `set tics scale` instead.
+?commands set timestamp
+?commands unset timestamp
+?commands show timestamp
+?set timestamp
+?unset timestamp
+?show timestamp
+?timestamp
+?notimestamp
+ The command `set timestamp` places the time and date of the plot in the left
+ margin.
+
+ Syntax:
+       set timestamp {"<format>"} {top|bottom} {{no}rotate}
+                     {offset <xoff>{,<yoff>}} {font "<fontspec>"}
+       unset timestamp
+       show timestamp
+
+ The format string allows you to choose the format used to write the date and
+ time.  Its default value is what asctime() uses: "%a %b %d %H:%M:%S %Y"
+ (weekday, month name, day of the month, hours, minutes, seconds, four-digit
+ year).  With `top` or `bottom` you can place the timestamp at the top or
+ bottom of the left margin (default: bottom).  `rotate` lets you write the
+ timestamp vertically, if your terminal supports vertical text.  The constants
+ <xoff> and <yoff> are offsets that let you adjust the position more finely.
+ <font> is used to specify the font with which the time is to be written.
+
+ The abbreviation `time` may be used in place of `timestamp`.
+
+ Example:
+       set timestamp "%d/%m/%y %H:%M" offset 80,-2 font "Helvetica"
+
+ See `set timefmt` for more information about time format strings.
+?commands set timefmt
+?commands show timefmt
+?set timefmt
+?show timefmt
+?timefmt
+ This command applies to timeseries where data are composed of dates/times.
+ It has no meaning unless the command `set xdata time` is given also.
+
+ Syntax:
+       set timefmt "<format string>"
+       show timefmt
+
+ The string argument tells `gnuplot` how to read timedata from the datafile.
+ The valid formats are:
+
+       Format       Explanation
+       %d           day of the month, 1--31
+       %m           month of the year, 1--12
+       %y           year, 0--99
+       %Y           year, 4-digit
+       %j           day of the year, 1--365
+       %H           hour, 0--24
+       %M           minute, 0--60
+       %s           seconds since the Unix epoch (1970-01-01, 00:00 UTC)
+       %S           second, integer 0--60 on output, (double) on input
+       %b           three-character abbreviation of the name of the month
+       %B           name of the month
+
+
+
+ Any character is allowed in the string, but must match exactly.  \t (tab) is
+ recognized.  Backslash-octals (\nnn) are converted to char.  If there is no
+ separating character between the time/date elements, then %d, %m, %y, %H, %M
+ and %S read two digits each.  If a decimal point immediately follows the field
+ read by %S, the decimal and any following digits are interpreted as a
+ fractional second.  %Y reads four digits. %j reads three digits.
+ %b requires three characters, and %B requires as many as it needs.
+
+ Spaces are treated slightly differently.  A space in the string stands for
+ zero or more whitespace characters in the file.  That is, "%H %M" can be used
+ to read "1220" and "12     20" as well as "12 20".
+
+ Each set of non-blank characters in the timedata counts as one column in the
+ `using n:n` specification.  Thus `11:11  25/12/76  21.0` consists of three
+ columns.  To avoid confusion, `gnuplot` requires that you provide a complete
+ `using` specification if your file contains timedata.
+
+ If the date format includes the day or month in words, the format string must
+ exclude this text.  But it can still be printed with the "%a", "%A", "%b", or
+ "%B" specifier.  `gnuplot` will determine the proper month and weekday from the
+ numerical values.  See `set format` for more details about these and other
+ options for printing time data.  
+
+ When reading two-digit years with %y, values 69-99 refer to the 20th century,
+ while values 00-68 refer to the 21st century.   NB: This is in accordance with
+ the UNIX98 spec, but conventions vary widely and two-digit year values are
+ inherently ambiguous.
+
+ See also `set xdata` and `time/date` for more information.
+
+ Example:
+       set timefmt "%d/%m/%Y\t%H:%M"
+ tells `gnuplot` to read date and time separated by tab.  (But look closely at
+ your data---what began as a tab may have been converted to spaces somewhere
+ along the line; the format string must match what is actually in the file.)
+ See also
+ time data demo.
+?commands set title
+?commands show title
+?set title
+?show title
+?title
+ The `set title` command produces a plot title that is centered at the top of
+ the plot.  `set title` is a special case of `set label`.
+
+ Syntax:
+       set title {"<title-text>"} {offset <offset>} {font "<font>{,<size>}"}
+                 {{textcolor | tc} {<colorspec> | default}} {{no}enhanced}
+       show title
+
+ If <offset> is specified by either x,y or x,y,z the title is moved by the
+ given offset.  It may be preceded by `first`, `second`, `graph`, `screen`,
+ or `character` to select the coordinate system.  See `coordinates` for
+ details.  By default, the `character` coordinate system is used.  For
+ example, "`set title offset 0,-1`" will change only the y offset of the
+ title, moving the title down by roughly the height of one character.  The
+ size of a character depends on both the font and the terminal.
+
+ <font> is used to specify the font with which the title is to be written;
+ the units of the font <size> depend upon which terminal is used.
+
+ `textcolor <colorspec>` changes the color of the text. <colorspec> can be a
+ linetype, an rgb color, or a palette mapping. See help for `colorspec` and
+ `palette`.
+
+ `noenhanced` requests that the title not be processed by the enhanced text
+ mode parser, even if enhanced text mode is currently active.
+
+ `set title` with no parameters clears the title.
+
+ See `syntax` for details about the processing of backslash sequences and
+ the distinction between single- and double-quotes.
+?commands set tmargin
+?set tmargin
+?tmargin
+ The command `set tmargin` sets the size of the top margin.
+ Please see `set margin` for details.
+?commands set trange
+?commands show trange
+?set trange
+?show trange
+?trange
+ The `set trange` command sets the parametric range used to compute x and y
+ values when in parametric or polar modes.  Please see `set xrange` for
+ details.
+?commands set urange
+?commands show urange
+?set urange
+?show urange
+?urange
+ The `set urange` and `set vrange` commands set the parametric ranges used
+ to compute x, y, and z values when in `splot` parametric mode.
+ Please see `set xrange` for details.
+?commands show variables
+?show variables all
+?show variables
+ The `show variables` command lists the current value of user-defined and
+ internal variables. Gnuplot internally defines variables whose names begin
+ with GPVAL_, MOUSE_, FIT_, and TERM_.
+
+ Syntax:
+       show variables      # show variables that do not begin with GPVAL_
+       show variables all  # show all variables including those beginning GPVAL_
+       show variables NAME # show only variables beginning with NAME
+
+?show version
+ The `show version` command lists the version of gnuplot being run, its last
+ modification date, the copyright holders, and email addresses for the FAQ,
+ the gnuplot-info mailing list, and reporting bugs--in short, the information
+ listed on the screen when the program is invoked interactively.
+
+ Syntax:
+       show version {long}
+
+ When the `long` option is given, it also lists the operating system, the
+ compilation options used when `gnuplot` was installed, the location of the
+ help file, and (again) the useful email addresses.
+?commands set view
+?commands show view
+?set view
+?set view map
+?show view
+?view
+ The `set view` command sets the viewing angle for `splot`s.  It controls how
+ the 3D coordinates of the plot are mapped into the 2D screen space.  It
+ provides controls for both rotation and scaling of the plotted data, but
+ supports orthographic projections only.  It supports both 3D projection or
+ orthogonal 2D projection into a 2D plot-like map.
+
+ Syntax:
+       set view <rot_x>{,{<rot_z>}{,{<scale>}{,<scale_z>}}}
+       set view map
+       set view {no}equal {xy|xyz}
+       show view
+
+ where <rot_x> and <rot_z> control the rotation angles (in degrees) in a
+ virtual 3D coordinate system aligned with the screen such that initially
+ (that is, before the rotations are performed) the screen horizontal axis is
+ x, screen vertical axis is y, and the axis perpendicular to the screen is z.
+ The first rotation applied is <rot_x> around the x axis.  The second rotation
+ applied is <rot_z> around the new z axis.
+
+ Command `set view map` is used to represent the drawing as a map. It can be
+ used for `contour` plots, or for color `pm3d` maps. In the latter, take care
+ that you properly use `zrange` and `cbrange` for input data point filtering
+ and color range scaling, respectively.
+
+ <rot_x> is bounded to the [0:180] range with a default of 60 degrees, while
+ <rot_z> is bounded to the [0:360] range with a default of 30 degrees.
+ <scale> controls the scaling of the entire `splot`, while <scale_z> scales
+ the z axis only.  Both scales default to 1.0.
+
+ Examples:
+       set view 60, 30, 1, 1
+       set view ,,0.5
+
+ The first sets all the four default values.  The second changes only scale,
+ to 0.5.
+?set view equal_axes
+?set view equal
+?view equal_axes
+?view equal
+?equal_axes
+ The command `set view equal xy` forces the unit length of the x and y axes
+ to be on the same scale, and chooses that scale so that the plot will fit on
+ the page.  The command `set view equal xyz` additionally sets the z axis 
+ scale to match the x and y axes; however there is no guarantee that the
+ current z axis range will fit within the plot boundary.
+ By default all three axes are scaled independently to fill the available area.
+
+ See also `set xyplane`.
+?commands set vrange
+?commands show vrange
+?set vrange
+?show vrange
+?vrange
+ The `set urange` and `set vrange` commands set the parametric ranges used
+ to compute x, y, and z values when in `splot` parametric mode.
+ Please see `set xrange` for details.
+?commands set x2data
+?commands show x2data
+?set x2data
+?show x2data
+?x2data
+ The `set x2data` command sets data on the x2 (top) axis to timeseries
+ (dates/times).  Please see `set xdata`.
+?commands set x2dtics
+?commands unset x2dtics
+?commands show x2dtics
+?set x2dtics
+?unset x2dtics
+?show x2dtics
+?x2dtics
+?nox2dtics
+ The `set x2dtics` command changes tics on the x2 (top) axis to days of the
+ week.  Please see `set xdtics` for details.
+?commands set x2label
+?commands show x2label
+?set x2label
+?show x2label
+?x2label
+ The `set x2label` command sets the label for the x2 (top) axis.
+ Please see `set xlabel`.
+?commands set x2mtics
+?commands unset x2mtics
+?commands show x2mtics
+?set x2mtics
+?unset x2mtics
+?show x2mtics
+?x2mtics
+?nox2mtics
+ The `set x2mtics` command changes tics on the x2 (top) axis to months of the
+ year.  Please see `set xmtics` for details.
+?commands set x2range
+?commands show x2range
+?set x2range
+?show x2range
+?x2range
+ The `set x2range` command sets the horizontal range that will be displayed on
+ the x2 (top) axis.  Please see `set xrange` for details.
+?commands set x2tics
+?commands unset x2tics
+?commands show x2tics
+?set x2tics
+?unset x2tics
+?show x2tics
+?x2tics
+?nox2tics
+ The `set x2tics` command controls major (labelled) tics on the x2 (top) axis.
+ Please see `set xtics` for details.
+?commands set x2zeroaxis
+?commands unset x2zeroaxis
+?commands show x2zeroaxis
+?set x2zeroaxis
+?unset x2zeroaxis
+?show x2zeroaxis
+?x2zeroaxis
+?nox2zeroaxis
+ The `set x2zeroaxis` command draws a line at the origin of the x2 (top) axis
+ (y2 = 0).  For details, please see `set zeroaxis`.
+?commands set xdata
+?commands show xdata
+?set xdata
+?show xdata
+?xdata
+ This command sets the datatype on the x axis to time/date.  A similar command
+ does the same thing for each of the other axes.
+
+ Syntax:
+       set xdata {time}
+       show xdata
+
+ The same syntax applies to `ydata`, `zdata`, `x2data`, `y2data` and `cbdata`.
+
+ The `time` option signals that the datatype is indeed time/date.  If the
+ option is not specified, the datatype reverts to normal.
+
+ See `set timefmt` to tell gnuplot how to read date or time data.  The
+ time/date is converted to seconds from start of the century.  There is
+ currently only one timefmt, which implies that all the time/date columns must
+ conform to this format.  Specification of ranges should be supplied as quoted
+ strings according to this format to avoid interpretation of the time/date as
+ an expression.
+
+ The function 'strftime' (type "man strftime" on unix to look it up) is used
+ to print tic-mark labels.  `gnuplot` tries to figure out a reasonable format
+ for this  unless the `set format x "string"` has supplied something that does
+ not look like a decimal format (more than one '%' or neither %f nor %g).
+
+ See also `time/date` for more information.
+?commands set xdtics
+?commands unset xdtics
+?commands show xdtics
+?set xdtics
+?unset xdtics
+?show xdtics
+?xdtics
+?noxdtics
+ The `set xdtics` commands converts the x-axis tic marks to days of the week
+ where 0=Sun and 6=Sat.  Overflows are converted modulo 7 to dates.  `set
+ noxdtics` returns the labels to their default values.  Similar commands do
+ the same things for the other axes.
+
+ Syntax:
+       set xdtics
+       unset xdtics
+       show xdtics
+
+ The same syntax applies to `ydtics`, `zdtics`, `x2dtics`, `y2dtics` and
+ `cbdtics`.
+
+ See also the `set format` command.
+?commands set xlabel
+?commands show xlabel
+?set xlabel
+?show xlabel
+?xlabel
+ The `set xlabel` command sets the x axis label.  Similar commands set labels
+ on the other axes.
+
+ Syntax:
+       set xlabel {"<label>"} {offset <offset>} {font "<font>{,<size>}"}
+                  {textcolor <colorspec>} {{no}enhanced}
+                  {rotate by <degrees> | rotate parallel | norotate}
+       show xlabel
+
+ The same syntax applies to `x2label`, `ylabel`, `y2label`, `zlabel` and
+ `cblabel`.
+
+ If <offset> is specified by either x,y or x,y,z the label is moved by the
+ given offset.  It may be preceded by `first`, `second`, `graph`, `screen`,
+ or `character` to select the coordinate system.  See `coordinates` for
+ details.  By default, the `character` coordinate system is used.  For
+ example, "`set xlabel offset -1,0`" will change only the x offset of the
+ title, moving the label roughly one character width to the left.  The size
+ of a character depends on both the font and the terminal.
+
+ <font> is used to specify the font in which the label is written; the units
+ of the font <size> depend upon which terminal is used.
+
+ `noenhanced` requests that the label text not be processed by the enhanced text
+ mode parser, even if enhanced text mode is currently active.
+
+ To clear a label, put no options on the command line, e.g., "`set y2label`".
+
+ The default positions of the axis labels are as follows:
+
+ xlabel:  The x-axis label is centered below the bottom of the plot.
+
+ ylabel:  The y-axis label is centered to the left of the plot, defaulting to
+ either horizontal or vertical orientation depending on the terminal type.
+
+ zlabel: The z-axis label is centered along the z axis and placed in the space
+ above the grid level.
+
+ cblabel: The color box axis label is centered along the box and placed below
+ or to the right according to horizontal or vertical color box gradient.
+
+ y2label: The y2-axis label is placed to the right of the y2 axis.  The
+ position is terminal-dependent in the same manner as is the y-axis label.
+
+ x2label: The x2-axis label is placed above the plot but below the title.
+ It is also possible to create an x2-axis label by using new-line
+ characters to make a multi-line plot title, e.g.,
+
+       set title "This is the title\n\nThis is the x2label"
+
+ Note that double quotes must be used.  The same font will be used for both
+ lines, of course.
+
+ The orientation (rotation angle) of the x, x2, y and y2 axis labels in 2D plots
+ can be changed by specifying `rotate by <degrees>`.  The orientation of the x 
+ and y axis labels in 3D plots defaults to horizontal but can be changed to run
+ parallel to the axis by specifying `rotate parallel`.
+
+ If you are not satisfied with the default position of an axis label, use `set
+ label` instead--that command gives you much more control over where text is
+ placed.
+
+ Please see `syntax` for further information about backslash processing
+ and the difference between single- and double-quoted strings.
+?commands set xmtics
+?commands unset xmtics
+?commands show xmtics
+?set xmtics
+?unset xmtics
+?show xmtics
+?xmtics
+?noxmtics
+ The `set xmtics` command converts the x-axis tic marks to months of the
+ year where 1=Jan and 12=Dec.  Overflows are converted modulo 12 to months.
+ The tics are returned to their default labels by `unset xmtics`.  Similar
+ commands perform the same duties for the other axes.
+
+ Syntax:
+       set xmtics
+       unset xmtics
+       show xmtics
+
+ The same syntax applies to `x2mtics`, `ymtics`, `y2mtics`, `zmtics` and
+ `cbmtics`.
+
+ See also the `set format` command.
+?commands set xrange
+?commands show xrange
+?set xrange
+?show xrange
+?writeback
+?restore
+?xrange
+ The `set xrange` command sets the horizontal range that will be displayed.
+ A similar command exists for each of the other axes, as well as for the
+ polar radius r and the parametric variables t, u, and v.
+
+ Syntax:
+       set xrange { [{{<min>}:{<max>}}] {{no}reverse} {{no}writeback} }
+                  | restore
+       show xrange
+
+ where <min> and <max> terms are constants, expressions or an asterisk to set
+ autoscaling.  See below for full autoscaling syntax.  
+ If the data are time/date, you must give the range as a quoted
+ string according to the `set timefmt` format.  Any value omitted will not be
+ changed.
+
+ The same syntax applies to `yrange`, `zrange`, `x2range`, `y2range`, `cbrange`,
+ `rrange`, `trange`, `urange` and `vrange`.
+
+ The `reverse` option reverses the direction of the axis, e.g., `set xrange
+ [0:1] reverse` will produce an axis with 1 on the left and 0 on the right.
+ This is identical to the axis produced by `set xrange [1:0]`, of course.
+ `reverse` is intended primarily for use with `autoscale`.
+
+ Autoscaling:  If <min> (the same applies for correspondingly to <max>) is
+ an asterisk "*" autoscaling is turned on.  The range in which autoscaling
+ is being performed may be limited by a lower bound <lb> or an upper bound
+ <ub> or both.  The syntax is 
+       { <lb> < } * { < <ub> }
+ For example,
+       0 < * < 200
+ sets <lb> = 0 and <ub> = 200.  With such a setting <min> would be autoscaled,
+ but its final value will be between 0 and 200 (both inclusive despite the
+ '<' sign).  If no lower or upper bound is specified, the '<' to also be
+ ommited.  If <ub> is lower than <lb> the constraints will be turned off
+ and full autoscaling will happen.
+ This feature is useful to plot measured data with autoscaling but providing
+ a limit on the range, to clip outliers, or to guarantee a minimum range
+ that will be displayed even if the data would not need such a big range. 
+
+ The `writeback` option essentially saves the range found by `autoscale` in
+ the buffers that would be filled by `set xrange`.  This is useful if you wish
+ to plot several functions together but have the range determined by only
+ some of them.  The `writeback` operation is performed during the `plot`
+ execution, so it must be specified before that command.  To restore,
+ the last saved horizontal range use `set xrange restore`.  For example,
+
+       set xrange [-10:10]
+       set yrange [] writeback
+       plot sin(x)
+       set yrange restore
+       replot x/2
+
+ results in a yrange of [-1:1] as found only from the range of sin(x); the
+ [-5:5] range of x/2 is ignored.  Executing `show yrange` after each command
+ in the above example should help you understand what is going on.
+
+ In 2D, `xrange` and `yrange` determine the extent of the axes, `trange`
+ determines the range of the parametric variable in parametric mode or the
+ range of the angle in polar mode.  Similarly in parametric 3D, `xrange`,
+ `yrange`, and `zrange` govern the axes and `urange` and `vrange` govern the
+ parametric variables.
+
+ In polar mode, `rrange` determines the radial range plotted.  <rmin> acts as
+ an additive constant to the radius, whereas <rmax> acts as a clip to the
+ radius---no point with radius greater than <rmax> will be plotted.  `xrange`
+ and `yrange` are affected---the ranges can be set as if the graph was of
+ r(t)-rmin, with rmin added to all the labels.
+
+ Any range may be partially or totally autoscaled, although it may not make
+ sense to autoscale a parametric variable unless it is plotted with data.
+
+ Ranges may also be specified on the `plot` command line.  A range given on
+ the plot line will be used for that single `plot` command; a range given by
+ a `set` command will be used for all subsequent plots that do not specify
+ their own ranges.  The same holds true for `splot`.
+
+ Examples:
+
+ To set the xrange to the default:
+       set xrange [-10:10]
+
+ To set the yrange to increase downwards:
+       set yrange [10:-10]
+
+ To change zmax to 10 without affecting zmin (which may still be autoscaled):
+       set zrange [:10]
+
+ To autoscale xmin while leaving xmax unchanged:
+       set xrange [*:]
+
+ To autoscale xmin but keeping xmin positive:
+       set xrange [0<*:]
+
+ To autoscale x but keep minimum range of 10 to 50 (actual might be larger):
+       set xrange [*<10:50<*]
+
+ Autoscaling but limit maximum xrange to -1000 to 1000, i.e. autoscaling
+ within [-1000:1000]
+       set xrange [-1000<*:*<1000]
+
+ Make sure xmin is somewhere between -200 and 100:
+       set xrange [-200<*<100:]
+
+?commands set xtics
+?commands unset xtics
+?commands show xtics
+?set xtics
+?unset xtics
+?show xtics
+?xtics
+?noxtics
+ Fine control of the major (labelled) tics on the x axis is possible with the
+ `set xtics` command.  The tics may be turned off with the `unset xtics`
+ command, and may be turned on (the default state) with `set xtics`.  Similar
+ commands control the major tics on the y, z, x2 and y2 axes.
+
+ Syntax:
+       set xtics {axis | border} {{no}mirror}
+                 {in | out} {scale {default | <major> {,<minor>}}}
+                 {{no}rotate {by <ang>}} {offset <offset> | nooffset}
+                 {left | right | center | autojustify}
+                 {add}
+                 {  autofreq
+                  | <incr>
+                  | <start>, <incr> {,<end>}
+                  | ({"<label>"} <pos> {<level>} {,{"<label>"}...) }
+                 { format "formatstring" } { font "name{,<size>}" }
+                 { rangelimited }
+                 { textcolor <colorspec> }
+       unset xtics
+       show xtics
+
+ The same syntax applies to `ytics`, `ztics`, `x2tics`, `y2tics` and `cbtics`.
+
+ `axis` or `border` tells `gnuplot` to put the tics (both the tics themselves
+ and the accompanying labels) along the axis or the border, respectively.  If
+ the axis is very close to the border, the `axis` option will move the
+ tic labels to outside the border.  The relevant margin settings will usually
+ be sized badly by the automatic layout algorithm in this case.
+
+ `mirror` tells `gnuplot` to put unlabelled tics at the same positions on the
+ opposite border.  `nomirror` does what you think it does.
+
+ `in` and `out` change the tic marks to be drawn inwards or outwards.
+
+ With `scale`, the size of the tic marks can be adjusted. If <minor> is not
+ specified, it is 0.5*<major>.  The default size 1.0 for major tics and 0.5
+ for minor tics is requested by `scale default`.
+
+ `rotate` asks `gnuplot` to rotate the text through 90 degrees, which will be
+ done if the terminal driver in use supports text rotation.  `norotate`
+ cancels this. `rotate by <ang>` asks for rotation by <ang> degrees, supported
+ by some terminal types.
+
+ The defaults are `border mirror norotate` for tics on the x and y axes, and
+ `border nomirror norotate` for tics on the x2 and y2 axes.  For the z axis,
+ the `{axis | border}` option is not available and the default is
+ `nomirror`.  If you do want to mirror the z-axis tics, you might want to
+ create a bit more room for them with `set border`.
+
+ The <offset> is specified by either x,y or x,y,z, and may be preceded by
+ `first`, `second`, `graph`, `screen`, or `character` to select the
+ coordinate system. <offset> is the offset of the tics texts from their
+ default positions, while the default coordinate system is `character`.
+ See `coordinates` for details. `nooffset` switches off the offset.
+
+ Example:
+
+ Move xtics more closely to the plot.
+       set xtics offset 0,graph 0.05
+
+ By default, tic labels are justified automatically depending on the axis and
+ rotation angle to produce aesthetically pleasing results. If this is not
+ desired, justification can be overridden with an explicit `left`, `right` or
+ `center` keyword. `autojustify` restores the default behavior.
+
+ `set xtics` with no options restores the default border or axis if xtics are
+ being displayed;  otherwise it has no effect.  Any previously specified tic
+ frequency or position {and labels} are retained.
+
+ Positions of the tics are calculated automatically by default or if the
+ `autofreq` option is given; otherwise they may be specified in either of
+ two forms:
+
+ The implicit <start>, <incr>, <end> form specifies that a series of tics will
+ be plotted on the axis between the values <start> and <end> with an increment
+ of <incr>.  If <end> is not given, it is assumed to be infinity.  The
+ increment may be negative.  If neither <start> nor <end> is given, <start> is
+ assumed to be negative infinity, <end> is assumed to be positive infinity,
+ and the tics will be drawn at integral multiples of <incr>.  If the axis is
+ logarithmic, the increment will be used as a multiplicative factor.
+
+ If you specify to a negative <start> or <incr> after a numerical value
+ (e.g., `rotate by <angle>` or `offset <offset>`), the parser fails because
+ it subtracts <start> or <incr> from that value.  As a workaround, specify
+ `0-<start>` resp. `0-<incr>` in that case.
+
+ Example:
+       set xtics border offset 0,0.5 -5,1,5
+ Fails with 'invalid expression' at the last comma.
+       set xtics border offset 0,0.5 0-5,1,5
+ or
+       set xtics offset 0,0.5 border -5,1,5
+ Sets tics at the border, tics text with an offset of 0,0.5 characters, and
+ sets the start, increment, and end to -5, 1, and 5, as requested.
+
+ The `set grid` options 'front', 'back' and 'layerdefault' affect the drawing
+ order of the xtics, too.
+
+ Examples:
+
+ Make tics at 0, 0.5, 1, 1.5, ..., 9.5, 10.
+       set xtics 0,.5,10
+
+ Make tics at ..., -10, -5, 0, 5, 10, ...
+       set xtics 5
+
+ Make tics at 1, 100, 1e4, 1e6, 1e8.
+       set logscale x; set xtics 1,100,1e8
+
+ The explicit ("<label>" <pos> <level>, ...) form allows arbitrary tic
+ positions or non-numeric tic labels.  In this form, the tics do not
+ need to be listed in numerical order.  Each tic has a
+ position, optionally with a label.  Note that the label is
+ a string enclosed by quotes.  It may be a constant string, such as
+ "hello", may contain formatting information for converting the
+ position into its label, such as "%3f clients", or may be empty, "".
+ See `set format` for more information.  If no string is given, the
+ default label (numerical) is used.
+
+ An explicit tic mark has a third parameter, the "level".  The default
+ is level 0, a major tic.  A level of 1 generates a minor tic.  If the
+ level is specified, then the label must also be supplied.
+
+ Examples:
+       set xtics ("low" 0, "medium" 50, "high" 100)
+       set xtics (1,2,4,8,16,32,64,128,256,512,1024)
+       set ytics ("bottom" 0, "" 10, "top" 20)
+       set ytics ("bottom" 0, "" 10 1, "top" 20)
+
+ In the second example, all tics are labelled.  In the third, only the end
+ tics are labelled.  In the fourth, the unlabeled tic is a minor tic.
+
+ Normally if explicit tics are given, they are used instead of auto-generated
+ tics. Conversely if you specify `set xtics auto` or the like it will erase
+ any previously specified explicit tics. You can mix explicit and auto-
+ generated tics by using the keyword `add`, which must appear before
+ the tic style being added.
+
+ Example:
+       set xtics 0,.5,10
+       set xtics add ("Pi" 3.14159)
+
+ This will automatically generate tic marks every 0.5 along x, but will
+ also add an explicit labeled tic mark at pi.
+
+ However they are specified, tics will only be plotted when in range.
+
+ Format (or omission) of the tic labels is controlled by `set format`, unless
+ the explicit text of a label is included in the `set xtics ("<label>")` form.
+
+ Minor (unlabelled) tics can be added automatically by the `set mxtics`
+ command, or at explicit positions by the `set xtics ("" <pos> 1, ...)` form.
+?set xtics time_axis tics
+?xtics time_axis tics
+?time_axis tics
+ In case of timeseries data, axis tic position values must be given as quoted
+ dates or times according to the format `timefmt`. If the <start>, <incr>, <end>
+ form is used, <start> and <end> must be given according to `timefmt`, but
+ <incr> must be in seconds.  Times will be written out according to the format
+ given on `set format`, however.
+
+ Examples:
+       set xdata time
+       set timefmt "%d/%m"
+       set xtics format "%b %d"
+       set xrange ["01/12":"06/12"]
+       set xtics "01/12", 172800, "05/12"
+
+       set xdata time
+       set timefmt "%d/%m"
+       set xtics format "%b %d"
+       set xrange ["01/12":"06/12"]
+       set xtics ("01/12", "" "03/12", "05/12")
+ Both of these will produce tics "Dec 1", "Dec 3", and "Dec 5", but in the
+ second example the tic at "Dec 3" will be unlabelled.
+?set xtics rangelimited
+?xtics rangelimited
+?rangelimited
+?range-frame
+ This option limits both the auto-generated axis tic labels and the
+ corresponding plot border to the range of values actually present in the data
+ that has been plotted.  Note that this is independent of the current range 
+ limits for the plot. For example, suppose that the data in "file.dat" all lies
+ in the range 2 < y < 4.  Then the following commands will create a plot for
+ which the left-hand plot border (y axis) is drawn for only this portion of the
+ total y range, and only the axis tics in this region are generated.
+ I.e., the plot will be scaled to the full range on y, but there will be a gap
+ between 0 and 2 on the left border and another gap between 4 and 10. This
+ style is sometimes referred to as a `range-frame` graph.
+       set border 3
+       set yrange [0:10]
+       set ytics nomirror rangelimited
+       plot "file.dat"
+?commands set xyplane
+?commands show xyplane
+?set xyplane
+?show xyplane
+?xyplane
+ The `set xyplane` command adjusts the position at which the xy plane is drawn
+ in a 3D plot.  The synonym "set ticslevel" is accepted for backwards
+ compatibility.
+
+ Syntax:
+       set xyplane at <zvalue>
+       set xyplane relative <frac>
+       set ticslevel <frac>        # equivalent to set xyplane relative
+       show xyplane
+
+ The form `set xyplane relative <frac>` places the xy plane below the range in
+ Z, where the distance from the xy plane to Zmin is given as a fraction of the
+ total range in z.  The default value is 0.5.  Negative values are permitted,
+ but tic labels on the three axes may overlap.  The older, deprecated, form
+ `set ticslevel` is retained for backwards compatibility.
+
+ To place the xy-plane at a position 'pos' on the z-axis, `ticslevel` may
+ be set equal to  (pos - zmin) / (zmin - zmax).  However, this position will
+ change if the z range is changed.
+
+ The alternative form `set xyplane at <zvalue>` fixes the placement of the
+ xy plane at a specific Z value regardless of the current z range. Thus to
+ force the x, y, and z axes to meet at a common origin one would specify
+ `set xyplane at 0`.
+
+ See also `set view`, and `set zeroaxis`.
+?commands set xzeroaxis
+?commands unset xzeroaxis
+?commands show xzeroaxis
+?set xzeroaxis
+?unset xzeroaxis
+?show xzeroaxis
+?xzeroaxis
+?noxzeroaxis
+ The `set xzeroaxis` command draws a line at y = 0.  For details,
+ please see `set zeroaxis`.
+?commands set y2data
+?commands show y2data
+?set y2data
+?show y2data
+?y2data
+ The `set y2data` command sets y2 (right-hand) axis data to timeseries
+ (dates/times).  Please see `set xdata`.
+?commands set y2dtics
+?commands unset y2dtics
+?set y2dtics
+?unset y2dtics
+?show y2dtics
+?y2dtics
+?noy2dtics
+ The `set y2dtics` command changes tics on the y2 (right-hand) axis to days of
+ the week.  Please see `set xdtics` for details.
+?commands set y2label
+?commands show y2label
+?set y2label
+?show y2label
+?y2label
+ The `set y2label` command sets the label for the y2 (right-hand) axis.
+ Please see `set xlabel`.
+?commands set y2mtics
+?commands unset y2mtics
+?commands show y2mtics
+?set y2mtics
+?unset y2mtics
+?show y2mtics
+?y2mtics
+?noy2mtics
+ The `set y2mtics` command changes tics on the y2 (right-hand) axis to months
+ of the year.  Please see `set xmtics` for details.
+?commands set y2range
+?commands show y2range
+?set y2range
+?show y2range
+?y2range
+ The `set y2range` command sets the vertical range that will be displayed on
+ the y2 (right-hand) axis.  Please see `set xrange` for details.
+?commands set y2tics
+?commands unset y2tics
+?commands show y2tics
+?set y2tics
+?unset y2tics
+?show y2tics
+?y2tics
+?noy2tics
+ The `set y2tics` command controls major (labelled) tics on the y2 (right-hand)
+ axis.  Please see `set xtics` for details.
+?commands set y2zeroaxis
+?commands unset y2zeroaxis
+?commands show y2zeroaxis
+?set y2zeroaxis
+?unset y2zeroaxis
+?show y2zeroaxis
+?y2zeroaxis
+?noy2zeroaxis
+ The `set y2zeroaxis` command draws a line at the origin of the y2 (right-hand)
+ axis (x2 = 0).  For details, please see `set zeroaxis`.
+?commands set ydata
+?commands show ydata
+?set ydata
+?show ydata
+?ydata
+ The `set ydata` commands sets y-axis data to timeseries (dates/times).
+ Please see `set xdata`.
+?commands set ydtics
+?commands unset ydtics
+?commands show ydtics
+?set ydtics
+?unset ydtics
+?show ydtics
+?ydtics
+?noydtics
+ The `set ydtics` command changes tics on the y axis to days of the week.
+ Please see `set xdtics` for details.
+?commands set ylabel
+?commands show ylabel
+?set ylabel
+?show ylabel
+?ylabel
+ This command sets the label for the y axis.  Please see `set xlabel`.
+?commands set ymtics
+?commands unset ymtics
+?commands show ymtics
+?set ymtics
+?unset ymtics
+?show ymtics
+?ymtics
+?noymtics
+ The `set ymtics` command changes tics on the y axis to months of the year.
+ Please see `set xmtics` for details.
+?commands set yrange
+?commands show yrange
+?set yrange
+?show yrange
+?yrange
+ The `set yrange` command sets the vertical range that will be displayed on
+ the y axis.  Please see `set xrange` for details.
+?commands set ytics
+?commands unset ytics
+?commands show ytics
+?set ytics
+?unset ytics
+?show ytics
+?ytics
+?noytics
+ The `set ytics` command controls major (labelled) tics on the y axis.
+ Please see `set xtics` for details.
+?commands set yzeroaxis
+?commands unset yzeroaxis
+?commands show yzeroaxis
+?set yzeroaxis
+?unset yzeroaxis
+?show yzeroaxis
+?yzeroaxis
+?noyzeroaxis
+ The `set yzeroaxis` command draws a line at x = 0.  For details,
+ please see `set zeroaxis`.
+?commands set zdata
+?commands show zdata
+?set zdata
+?show zdata
+?zdata
+ The `set zdata` command sets zaxis data to timeseries (dates/times).
+ Please see `set xdata`.
+?commands set zdtics
+?commands unset zdtics
+?commands show zdtics
+?set zdtics
+?unset zdtics
+?show zdtics
+?zdtics
+?nozdtics
+ The `set zdtics` command changes tics on the z axis to days of the week.
+ Please see `set xdtics` for details.
+?commands set zzeroaxis
+?commands unset zzeroaxis
+?commands show zzeroaxis
+?set zzeroaxis
+?unset zzeroaxis
+?show zzeroaxis
+?zzeroaxis
+?nozzeroaxis
+ The `set zzeroaxis` command draws a line through (x=0,y=0).  This has no effect
+ on 2D plots, including splot with `set view map`. For details, please
+ see `set zeroaxis` and `set xyplane`.
+?commands set cbdata
+?commands show cbdata
+?set cbdata
+?show cbdata
+?cbdata
+ Set color box axis data to timeseries (dates/times).  Please see `set xdata`.
+?commands set cbdtics
+?commands unset cbdtics
+?commands show cbdtics
+?set cbdtics
+?unset cbdtics
+?show cbdtics
+?cbdtics
+?nocbdtics
+ The `set cbdtics` command changes tics on the color box axis to days of the
+ week. Please see `set xdtics` for details.
+?commands set zero
+?commands show zero
+?set zero
+?show zero
+?zero
+ The `zero` value is the default threshold for values approaching 0.0.
+
+ Syntax:
+       set zero <expression>
+       show zero
+
+ `gnuplot` will not plot a point if its imaginary part is greater in magnitude
+ than the `zero` threshold.  This threshold is also used in various other
+ parts of `gnuplot` as a (crude) numerical-error threshold.  The default
+ `zero` value is 1e-8.  `zero` values larger than 1e-3 (the reciprocal of the
+ number of pixels in a typical bitmap display) should probably be avoided, but
+ it is not unreasonable to set `zero` to 0.0.
+?commands set zeroaxis
+?commands unset zeroaxis
+?commands show zeroaxis
+?set zeroaxis
+?unset zeroaxis
+?show zeroaxis
+?zeroaxis
+ The x axis may be drawn by `set xzeroaxis` and removed by `unset xzeroaxis`.
+ Similar commands behave similarly for the y, x2, y2, and z axes.
+
+ Syntax:
+       set {x|x2|y|y2|z}zeroaxis { {linestyle | ls <line_style>}
+                                  | { linetype | lt <line_type>}
+                                    { linewidth | lw <line_width>}}
+       unset {x|x2|y|y2|z}zeroaxis
+       show {x|y|z}zeroaxis
+
+
+ By default, these options are off.  The selected zero axis is drawn
+ with a line of type <line_type> and width <line_width> (if supported
+ by the terminal driver currently in use), or a user-defined style
+ <line_style>.
+
+ If no linetype is specified, any zero axes selected will be drawn
+ using the axis linetype (linetype 0).
+
+ `set zeroaxis` is equivalent to `set xzeroaxis; set yzeroaxis`.
+ Note that the z-axis must be set separately using `set zzeroaxis`.
+
+ Examples:
+
+ To simply have the y=0 axis drawn visibly:
+
+        set xzeroaxis
+
+ If you want a thick line in a different color or pattern, instead:
+
+        set xzeroaxis linetype 3 linewidth 2.5
+?commands set zlabel
+?commands show zlabel
+?set zlabel
+?show zlabel
+?zlabel
+ This command sets the label for the z axis.  Please see `set xlabel`.
+?commands set zmtics
+?commands unset zmtics
+?commands show zmtics
+?set zmtics
+?unset zmtics
+?show zmtics
+?zmtics
+?nozmtics
+ The `set zmtics` command changes tics on the z axis to months of the year.
+ Please see `set xmtics` for details.
+?commands set zrange
+?commands show zrange
+?set zrange
+?show zrange
+?zrange
+ The `set zrange` command sets the range that will be displayed on the z axis.
+ The zrange is used only by `splot` and is ignored by `plot`.  Please see
+ `set xrange` for details.
+?commands set ztics
+?commands unset ztics
+?commands show ztics
+?set ztics
+?unset ztics
+?show ztics
+?ztics
+?noztics
+ The `set ztics` command controls major (labelled) tics on the z axis.
+ Please see `set xtics` for details.
+?commands set cblabel
+?commands show cblabel
+?set cblabel
+?show cblabel
+?cblabel
+ This command sets the label for the color box axis.  Please see `set xlabel`.
+?commands set cbmtics
+?commands unset cbmtics
+?commands show cbmtics
+?set cbmtics
+?unset cbmtics
+?show cbmtics
+?cbmtics
+?nocbmtics
+ The `set cbmtics` command changes tics on the color box axis to months of the
+ year. Please see `set xmtics` for details.
+?commands set cbrange
+?commands show cbrange
+?set cbrange
+?show cbrange
+?cbrange
+ The `set cbrange` command sets the range of values which are colored using
+ the current `palette` by styles `with pm3d`, `with image` and `with palette`.
+ Values outside of the color range use color of the nearest extreme.
+
+ If the cb-axis is autoscaled in `splot`, then the colorbox range is taken from
+ `zrange`.  Points drawn in `splot ... pm3d|palette` can be filtered by using
+ different `zrange` and `cbrange`.
+
+ Please see `set xrange` for details on `set cbrange` syntax. See also
+ `set palette` and `set colorbox`.
+?commands set cbtics
+?commands unset cbtics
+?commands show cbtics
+?set cbtics
+?unset cbtics
+?show cbtics
+?cbtics
+?nocbtics
+ The `set cbtics` command controls major (labelled) tics on the color box axis.
+ Please see `set xtics` for details.
+?commands shell
+?shell
+ The `shell` command spawns an interactive shell.  To return to `gnuplot`,
+ type `logout` if using VMS, `exit` or the END-OF-FILE character if using
+ Unix, or `exit` if using MS-DOS or OS/2.
+
+ There are two ways of spawning a shell command: using `system` command
+ or via `!` ($ if using VMS). The former command takes a string as a
+ parameter and thus it can be used anywhere among other gnuplot commands,
+ while the latter syntax requires to be the only command on the line. Control
+ will return immediately to `gnuplot` after this command is executed.  For
+ example, in MS-DOS or OS/2,
+
+       ! dir
+ or
+       system "dir"
+
+ prints a directory listing and then returns to `gnuplot`.
+
+ Other examples of the former syntax:
+        system "date"; set time; plot "a.dat"
+        print=1; if (print) replot; set out; system "lpr x.ps"
+?commands splot
+?splot
+ `splot` is the command for drawing 3D plots (well, actually projections on
+ a 2D surface, but you knew that).  It can create a plot from functions or
+ data read from files in a manner very similar to the `plot` command.
+ `splot` provides only a single x, y, and z axis; there is no equivalent to the
+ x2 and y2 secondary axes provided by `plot`.
+
+ See the `plot` command for many options available in both 2D and 3D plots.
+
+ Syntax:
+       splot {<ranges>}
+             {<iteration>}
+             <function> | "<datafile>" {datafile-modifiers}}
+             {<title-spec>} {with <style>}
+             {, {definitions{,}} <function> ...}
+
+ where either a <function> or the name of a data file enclosed in quotes is
+ supplied.  The function can be a mathematical expression, or a triple of
+ mathematical expressions in parametric mode.
+
+ By default `splot` draws the xy plane completely below the plotted data.
+ The offset between the lowest ztic and the xy plane can be changed by `set
+ xyplane`.  The orientation of a `splot` projection is controlled by
+ `set view`.  See `set view` and `set xyplane` for more information.
+
+ The syntax for setting ranges on the `splot` command is the same as for
+ `plot`.  In non-parametric mode, the order in which ranges must be given is
+ `xrange`, `yrange`, and `zrange`.  In parametric mode, the order is `urange`,
+ `vrange`, `xrange`, `yrange`, and `zrange`.
+
+ The `title` option is the same as in `plot`.  The operation of `with` is also
+ the same as in `plot`, except that the plotting styles available to `splot`
+ are limited to `lines`, `points`, `linespoints`, `dots`, and `impulses`;  the
+ error-bar capabilities of `plot` are not available for `splot`.
+
+ The `datafile` options have more differences.
+
+ See also `show plot`.
+?commands splot datafile
+?splot datafile
+ `Splot`, like `plot`, can display from a file.
+
+ Syntax:
+       splot '<file_name>' {binary <binary list>}
+                           {{nonuniform} matrix}
+                           {index <index list>}
+                           {every <every list>}
+                           {using <using list>}
+
+ The special filenames `""` and `"-"` are permitted, as in `plot`.
+ See `special-filenames`.
+
+ In brief, `binary` and `matrix` indicate that the data are in a special
+ form, `index` selects which data sets in a multi-data-set file are to be
+ plotted, `every` specifies which datalines (subsets) within a single data
+ set are to be plotted, and `using` determines how the columns within a single
+ record are to be interpreted.
+
+ The options `index` and `every` behave the same way as with `plot`;  `using`
+ does so also, except that the `using` list must provide three entries
+ instead of two.
+
+ The `plot` options `thru` and `smooth` are not available for `splot`, but
+ `cntrparam` and `dgrid3d` provide limited smoothing capabilities.
+
+ Data file organization is essentially the same as for `plot`, except that
+ each point is an (x,y,z) triple.  If only a single value is provided, it
+ will be used for z, the datablock number will be used for y, and the index
+ of the data point in the datablock will be used for x.  If two or four values
+ are provided, `gnuplot` uses the last value for calculating the color in
+ pm3d plots.  Three values are interpreted as an (x,y,z) triple.  Additional
+ values are generally used as errors, which can be used by `fit`.
+
+ Single blank records separate datablocks in a `splot` datafile; `splot`
+ treats datablocks as the equivalent of function y-isolines.  No line will
+ join points separated by a blank record.  If all datablocks contain the same
+ number of points, `gnuplot` will draw cross-isolines between datablocks,
+ connecting corresponding points.  This is termed "grid data", and is required
+ for drawing a surface, for contouring (`set contour`) and hidden-line removal
+ (`set hidden3d`). See also `splot grid_data`.
+
+ It is no longer necessary to specify `parametric` mode for three-column
+ `splot`s.
+?commands plot datafile matrix
+?commands splot datafile matrix
+?plot datafile matrix binary
+?splot datafile matrix binary
+?plot binary matrix
+?splot binary matrix
+?plot matrix binary
+?splot matrix binary
+?matrix binary
+?binary matrix
+ Gnuplot can interpret matrix input in two different ways.
+ The first of these assumes a uniform grid of x and y coordinates, and assigns
+ each value in the input matrix to one element of this uniform grid.
+ This is the default for ascii data input, but not for binary input.
+ Example commands for plotting uniform matrix data:
+      splot 'file' matrix using 1:2:3          # ascii input
+      splot 'file' binary general using 1:2:3  # binary input
+
+ In a uniform grid matrix the z-values are read in a row at a time, i. e.,
+     z11 z12 z13 z14 ...
+     z21 z22 z23 z24 ...
+     z31 z32 z33 z34 ...
+ and so forth.
+
+ For ascii input, a blank line or comment line ends the matrix, and starts a new
+ surface mesh.  You can select among the meshes inside a file by the `index`
+ option to the `splot` command, as usual. 
+ The second interpretation assumes a non-uniform grid with explicit x and y
+ coordinates. The first row of input data contains the y coordinates; 
+ the first column of input data contains the x coordinates.  For binary input
+ data, the first element of the first row must contain the number of data
+ columns. (This number is ignored for ascii input).  Both the coordinates and
+ the data values in a binary input are treated as single precision floats.
+ Example commands for plotting non-uniform matrix data:
+      splot 'file' nonuniform matrix using 1:2:3  # ascii input
+      splot 'file' binary matrix using 1:2:3      # binary input
+
+ Thus the data organization for non-uniform matrix input is
+
+       <N+1>  <y0>   <y1>   <y2>  ...  <yN>
+        <x0> <z0,0> <z0,1> <z0,2> ... <z0,N>
+        <x1> <z1,0> <z1,1> <z1,2> ... <z1,N>
+         :      :      :      :   ...    :
+
+ which is then converted into triplets:
+       <x0> <y0> <z0,0>
+       <x0> <y1> <z0,1>
+       <x0> <y2> <z0,2>
+        :    :     :
+       <x0> <yN> <z0,N>
+
+       <x1> <y0> <z1,0>
+       <x1> <y1> <z1,1>
+        :    :     :
+
+ These triplets are then converted into `gnuplot` iso-curves and then
+ `gnuplot` proceeds in the usual manner to do the rest of the plotting.
+
+ A collection of matrix and vector manipulation routines (in C) is provided
+ in `binary.c`.  The routine to write binary data is
+
+       int fwrite_matrix(file,m,nrl,nrl,ncl,nch,row_title,column_title)
+
+ An example of using these routines is provided in the file `bf_test.c`, which
+ generates binary files for the demo file `demo/binary.dem`.
+
+ Usage in `plot`:
+     plot `a.dat` matrix
+     plot `a.dat` matrix using 1:3
+     plot 'a.gpbin' {matrix} binary using 1:3
+ will plot rows of the matrix, while using 2:3 will plot matrix columns, and
+ using 1:2 the point coordinates (rather useless). Applying the `every` option
+ you can specify explicit rows and columns.
+
+ Example -- rescale axes of a matrix in an ascii file:
+     splot `a.dat` matrix using (1+$1):(1+$2*10):3
+
+ Example -- plot the 3rd row of a matrix in an ascii file:
+     plot 'a.dat' matrix using 1:3 every 1:999:1:2
+ (rows are enumerated from 0, thus 2 instead of 3).
+
+ Gnuplot can read matrix binary files by use of the option `binary` appearing
+ without keyword qualifications unique to general binary, i.e., `array`,
+ `record`, `format`, or `filetype`.  Other general binary keywords for
+ translation should also apply to matrix binary.  (See `binary general` for
+ more details.)
+?commands splot datafile example
+?splot datafile example
+?splot example
+ A simple example of plotting a 3D data file is
+
+       splot 'datafile.dat'
+
+ where the file "datafile.dat" might contain:
+
+       # The valley of the Gnu.
+          0 0 10
+          0 1 10
+          0 2 10
+
+          1 0 10
+          1 1 5
+          1 2 10
+
+          2 0 10
+          2 1 1
+          2 2 10
+
+          3 0 10
+          3 1 0
+          3 2 10
+
+ Note that "datafile.dat" defines a 4 by 3 grid ( 4 rows of 3 points each ).
+ Rows (datablocks) are separated by blank records.
+
+ Note also that the x value is held constant within each dataline.  If you
+ instead keep y constant, and plot with hidden-line removal enabled, you will
+ find that the surface is drawn 'inside-out'.
+
+ Actually for grid data it is not necessary to keep the x values constant
+ within a datablock, nor is it necessary to keep the same sequence of y
+ values.  `gnuplot` requires only that the number of points be the same for
+ each datablock.  However since the surface mesh, from which contours are
+ derived, connects sequentially corresponding points, the effect of an
+ irregular grid on a surface plot is unpredictable and should be examined
+ on a case-by-case basis.
+?commands splot grid_data
+?splot grid_data
+?grid_data
+ The 3D routines are designed for points in a grid format, with one sample,
+ datapoint, at each mesh intersection; the datapoints may originate from
+ either evaluating a function, see `set isosamples`, or reading a datafile,
+ see `splot datafile`.  The term "isoline" is applied to the mesh lines for
+ both functions and data.  Note that the mesh need not be rectangular in x
+ and y, as it may be parameterized in u and v, see `set isosamples`.
+
+ However, `gnuplot` does not require that format.  In the case of functions,
+ 'samples' need not be equal to 'isosamples', i.e., not every x-isoline
+ sample need intersect a y-isoline. In the case of data files, if there
+ are an equal number of scattered data points in each datablock, then
+ "isolines" will connect the points in a datablock, and "cross-isolines"
+ will connect the corresponding points in each datablock to generate a
+ "surface".  In either case, contour and hidden3d modes may give different
+ plots than if the points were in the intended format.  Scattered data can be
+ converted to a {different} grid format with `set dgrid3d`.
+
+ The contour code tests for z intensity along a line between a point on a
+ y-isoline and the corresponding point in the next y-isoline.  Thus a `splot`
+ contour of a surface with samples on the x-isolines that do not coincide with
+ a y-isoline intersection will ignore such samples. Try:
+        set xrange [-pi/2:pi/2]; set yrange [-pi/2:pi/2]
+        set style function lp
+        set contour
+        set isosamples 10,10; set samples 10,10;
+        splot cos(x)*cos(y)
+        set samples 4,10; replot
+        set samples 10,4; replot
+
+?commands splot surfaces
+?splot surfaces
+ `splot` can display a surface as a collection of points, or by connecting
+ those points.  As with `plot`, the points may be read from a data file or
+ result from evaluation of a function at specified intervals, see
+ `set isosamples`.  The surface may be approximated by connecting the points
+ with straight line segments, see `set surface`, in which case the surface
+ can be made opaque with `set hidden3d.`  The orientation from which the 3d
+ surface is viewed can be changed with `set view`.
+
+ Additionally, for points in a grid format, `splot` can interpolate points
+ having a common amplitude (see `set contour`) and can then connect those
+ new points to display contour lines, either directly with straight-line
+ segments or smoothed lines (see `set cntrparam`).  Functions are already
+ evaluated in a grid format, determined by `set isosamples` and `set samples`,
+ while file data must either be in a grid format, as described in `data-file`,
+ or be used to generate a grid (see `set dgrid3d`).
+
+ Contour lines may be displayed either on the surface or projected onto the
+ base.  The base projections of the contour lines may be written to a
+ file, and then read with `plot`, to take advantage of `plot`'s additional
+ formatting capabilities.
+?commands stats
+?stats
+?statistics
+ Syntax:
+      stats 'filename' [using N[:M]] [name 'prefix'] [[no]output]]
+ This command prepares a statistical summary of the data in one or two columns
+ of a file. The using specifier is interpreted in the same way as for plot
+ commands. See `plot` for details on the `index`, `every`, and `using`
+ directives. Data points are filtered against both xrange and yrange before
+ analysis. See `set xrange`. The summary is printed to the screen by default.
+ Output can be redirected to a file by prior use of the command `set print`,
+ or suppressed altogether using the `nooutput` option.  
+ In addition to printed output, the program stores the individual statistics
+ into three sets of variables.
+ The first set of variables reports how the data is laid out in the file:
+      STATS_records           # total number of in-range data records
+      STATS_outofrange        # number of records filtered out by range limits
+      STATS_invalid           # number of invalid/incomplete/missing records
+      STATS_blank             # number of blank lines in the file
+      STATS_blocks            # number of indexable data blocks in the file
+
+ The second set reports properties of the in-range data from a single column.
+ If the corresponding axis is autoscaled (x-axis for the 1st column, y-axis 
+ for the optional second column) then no range limits are applied. If two
+ columns are being analysed in a single `stats` command, the the suffix "_x"
+ or "_y" is appended to each variable name.  I.e. STATS_min_x is the minimum
+ value found in the first column, while STATS_min_y is the minimum value found
+ in the second column.
+      STATS_min               # minimum value of in-range data points
+      STATS_max               # maximum value of in-range data points
+      STATS_index_min         # index i for which data[i] == STATS_min
+      STATS_index_max         # index i for which data[i] == STATS_max
+      STATS_lo_quartile       # value of the lower (1st) quartile boundary
+      STATS_median            # median value
+      STATS_up_quartile       # value of the upper (3rd) quartile boundary
+      STATS_mean              # mean value of in-range data points
+      STATS_stddev            # standard deviation of the in-range data points
+      STATS_sum               # sum
+      STATS_sumsq             # sum of squares
+
+ The third set of variables is only relevant to analysis of two data columns.
+      STATS_correlation       # correlation coefficient between x and y values
+      STATS_slope             # A corresponding to a linear fit y = Ax + B
+      STATS_intercept         # B corresponding to a linear fit y = Ax + B
+      STATS_sumxy             # sum of x*y
+      STATS_pos_min_y         # x coordinate of a point with minimum y value
+      STATS_pos_max_y         # x coordinate of a point with maximum y value
+ It may be convenient to track the statistics from more than one file at the
+ same time. The `name` option causes the default prefix "STATS" to be replaced
+ by a user-specified string.  For example, the mean value of column 2 data from
+ two different files could be compared by
+      stats "file1.dat" using 2 name "A"
+      stats "file2.dat" using 2 name "B"
+      if (A_mean < B_mean) {...}
+
+ The index reported in STATS_index_xxx corresponds to the value of pseudo-column
+ 0 ($0) in plot commands.  I.e. the first point has index 0, the last point
+ has index N-1.
+
+ Data values are sorted to find the median and quartile boundaries.
+ If the total number of points N is odd, then the median value is taken as the
+ value of data point (N+1)/2. If N is even, then the median is reported as the
+ mean value of points N/2 and (N+2)/2. Equivalent treatment is used for the
+ quartile boundaries.
+
+ For an example of using the `stats` command to help annotate a subsequent plot,
+ see
+ stats.dem.
+
+ The current implementation does not allow analysis if either the X or Y axis is
+ set to log-scaling.  This restriction may be removed in a later version.
+
+?commands system
+?system
+ `system "command"` executes "command" using the standard shell. See `shell`.
+ If called as a function, `system("command")` returns the resulting character
+ stream from stdout as a string.  One optional trailing newline is ignored.
+
+ This can be used to import external functions into gnuplot scripts:
+
+       f(x) = real(system(sprintf("somecommand %f", x)))
+?commands test
+?test palette
+?test
+ This command graphically tests or presents terminal and palette capabilities.
+
+ Syntax:
+       test {terminal | palette [rgb|rbg|grb|gbr|brg|bgr]}
+
+ `test` or `test terminal` creates a display of line and point styles and other
+ useful things appropriate for and supported by the `terminal` you are just
+ using.
+
+ `test palette` plots profiles of R(z),G(z),B(z), where 0<=z<=1. These are the
+ RGB components of the current color `palette`. It also plots the apparent net
+ intensity as calculated using NTSC coefficients to map RGB onto a grayscale.
+ The optional parameter, a permutation of letters rgb, determines the sequence in
+ which the r,g,b profiles are drawn.
+?commands undefine
+?undefine
+ Clear one or more previously defined user variables.  This is useful in order
+ to reset the state of a script containing an initialization test. 
+
+ A variable name can contain the wildcard character `*` as last character. If the
+ wildcard character is found, all variables with names that begin with the prefix 
+ preceding the wildcard will be removed. This is useful to remove several variables 
+ sharing a common prefix. Note that the wildcard character is only allowed at the 
+ end of the variable name! Specifying the wildcard character as sole argument to 
+ `undefine` has no effect.
+
+ Example:
+
+       undefine foo foo1 foo2
+       if (!exists("foo")) load "initialize.gp"
+
+       bar = 1; bar1 = 2; bar2 = 3
+       undefine bar*                 # removes all three variables
+
+?commands unset
+?unset
+ Options set using the `set` command may be returned to their default state by
+ the corresponding `unset` command.  The `unset` command may contain an optional
+ iteration clause. See `iteration`.
+
+ Examples:
+       set xtics mirror rotate by -45 0,10,100
+       ...
+       unset xtics
+
+       # Unset labels numbered between 100 and 200
+       unset for [i=100:200] label i
+?unset terminal
+ The default terminal that is active at the time of program entry depends on the
+ system platform, gnuplot build options, and the environmental variable GNUTERM.
+ Whatever this default may be, gnuplot saves it in the internal variable GNUTERM.
+ The `unset terminal` command restores this initial state.  It is equivalent to
+ `set terminal GNUTERM`.
+?commands update
+?update
+ This command writes the current values of the fit parameters into the given
+ file, formatted as an initial-value file (as described in the `fit`section).
+ This is useful for saving the current values for later use or for restarting
+ a converged or stopped fit.
+
+ Syntax:
+       update <filename> {<filename>}
+
+ If a second filename is supplied, the updated values are written to this
+ file, and the original parameter file is left unmodified.
+
+ Otherwise, if the file already exists, `gnuplot` first renames it by
+ appending `.old` and then opens a new file.  That is, "`update 'fred'`"
+ behaves the same as "`!rename fred fred.old; update 'fred.old' 'fred'`".
+ [On DOS and other systems that use the twelve-character "filename.ext"
+ naming convention, "ext" will be "`old`" and "filename" will be related
+ (hopefully recognizably) to the initial name.  Renaming is not done at all
+ on VMS systems, since they use file-versioning.]
+
+ Please see `fit` for more information.
+?while
+?commands while
+ Syntax:
+       while (<expr>) {
+           <commands>
+       }
+ Execute a block of commands repeatedly so long as <expr> evaluates to 
+ a non-zero value.  This command cannot be mixed with old-style (un-bracketed)
+ if/else statements.  See `if`.
+?complete list of terminals
+?terminal
+?term
+ Gnuplot supports a large number of output formats. These are selected by
+ choosing an appropriate terminal type, possibly with additional modifying
+ options. See `set terminal`.
+
+ This document may describe terminal types that are not available to you
+ because they were not configured or installed on your system. To see a list of
+ terminals available on a particular gnuplot installation, type 'set terminal'
+ with no modifiers.
+?commands set terminal gpic
+?set terminal gpic
+?set term gpic
+?terminal gpic
+?term gpic
+?gpic
+ The `gpic` terminal driver generates GPIC graphs in the Free Software
+ Foundations's "groff" package.  The default size is 5 x 3 inches.  The only
+ option is the origin, which defaults to (0,0).
+
+ Syntax:
+       set terminal gpic {<x> <y>}
+
+ where `x` and `y` are in inches.
+
+ A simple graph can be formatted using
+
+       groff -p -mpic -Tps file.pic > file.ps.
+
+ The output from pic can be pipe-lined into eqn, so it is possible to put
+ complex functions in a graph with the `set label` and `set {x/y}label`
+ commands.  For instance,
+
+       set ylab '@space 0 int from 0 to x alpha ( t ) roman d t@'
+
+ will label the y axis with a nice integral if formatted with the command:
+
+       gpic filename.pic | geqn -d@@ -Tps | groff -m[macro-package] -Tps
+           > filename.ps
+
+ Figures made this way can be scaled to fit into a document.  The pic language
+ is easy to understand, so the graphs can be edited by hand if need be.  All
+ co-ordinates in the pic-file produced by `gnuplot` are given as x+gnuplotx
+ and y+gnuploty.  By default x and y are given the value 0.  If this line is
+ removed with an editor in a number of files, one can put several graphs in
+ one figure like this (default size is 5.0x3.0 inches):
+
+       .PS 8.0
+       x=0;y=3
+       copy "figa.pic"
+       x=5;y=3
+       copy "figb.pic"
+       x=0;y=0
+       copy "figc.pic"
+       x=5;y=0
+       copy "figd.pic"
+       .PE
+
+ This will produce an 8-inch-wide figure with four graphs in two rows on top
+ of each other.
+
+ One can also achieve the same thing by the command
+
+       set terminal gpic x y
+
+ for example, using
+
+       .PS 6.0
+       copy "trig.pic"
+       .PE
+?commands set terminal regis
+?set terminal regis
+?set term regis
+?terminal regis
+?term regis
+?regis
+ The `regis` terminal device generates output in the REGIS graphics language.
+ It has the option of using 4 (the default) or 16 colors.
+
+ Syntax:
+       set terminal regis {4 | 16}
+?commands set terminal tek410x
+?set terminal tek410x
+?set term tek410x
+?terminal tek410x
+?term tek410x
+?tek410x
+ The `tek410x` terminal driver supports the 410x and 420x family of Tektronix
+ terminals.  It has no options.
+?commands set terminal tek40xx
+?set terminal tek40xx
+?set term tek40xx
+?terminal tek40xx
+?term tek40xx
+?tek40
+?commands set terminal vttek
+?set terminal vttek
+?set term vttek
+?terminal vttek
+?term vttek
+?vttek
+?commands set terminal xterm
+?set terminal xterm
+?set term xterm
+?terminal xterm
+?term xterm
+?xterm
+ This family of terminal drivers supports a variety of VT-like terminals.
+ `tek40xx` supports Tektronix 4010 and others as well as most TEK emulators.
+ `vttek` supports VT-like tek40xx terminal emulators.
+ The following are present only if selected when gnuplot is built:
+ `kc-tek40xx` supports MS-DOS Kermit Tek4010 terminal emulators in color;
+ `km-tek40xx` supports them in monochrome. `selanar` supports Selanar graphics.
+ `bitgraph` supports BBN Bitgraph terminals.
+ None have any options.
+?commands set terminal x11
+?set terminal x11
+?set term x11
+?terminal x11
+?term x11
+?x11
+?X11
+
+ Syntax:
+    set terminal x11 {<n> | window "<string>"}
+                     {title "<string>"}
+                     {{no}enhanced} {font <fontspec>}
+                     {linewidth LW} {solid|dashed}
+                     {{no}persist} {{no}raise} {{no}ctrlq}
+                     {close}
+                     {size XX,YY} {position XX,YY}
+    set terminal x11 {reset}
+
+ Multiple plot windows are supported: `set terminal x11 <n>` directs the
+ output to plot window number n.  If n is not 0, the terminal number will be
+ appended to the window title (unless a title has been supplied manually)
+ and the icon will be labeled `Gnuplot <n>`.  The active window may be
+ distinguished by a change in cursor (from default to crosshair).
+
+ The `x11` terminal can connect to X windows previously created by an outside
+ application via the option `window` followed by a string containing the
+ X ID for the window in hexadecimal format.  Gnuplot uses that external X
+ window as a container since X does not allow for multiple clients selecting
+ the ButtonPress event.  In this way, gnuplot's mouse features work within
+ the contained plot window.
+
+    set term x11 window "220001e"
+
+ The x11 terminal supports enhanced text mode (see `enhanced`), subject
+ to the available fonts. In order for font size commands embedded in text
+ to have any effect, the default x11 font must be scalable. Thus the first
+ example below will work as expected, but the second will not.
+
+    set term x11 enhanced font "arial,15" 
+    set title '{/=20 Big} Medium {/=5 Small}' 
+
+    set term x11 enhanced font "terminal-14" 
+    set title '{/=20 Big} Medium {/=5 Small}' 
+
+ Plot windows remain open even when the `gnuplot` driver is changed to a
+ different device.  A plot window can be closed by pressing the letter q
+ while that window has input focus, or by choosing `close` from a window
+ manager menu.  All plot windows can be closed by specifying `reset`, which
+ actually terminates the subprocess which maintains the windows (unless
+ `-persist` was specified).  The `close` command can be used to close
+ individual plot windows by number.  However, after a `reset`, those plot
+ windows left due to persist cannot be closed with the command `close`.
+ A `close` without a number closes the current active plot window.
+
+ The gnuplot outboard driver, gnuplot_x11, is searched in a default place
+ chosen when the program is compiled.  You can override that by defining
+ the environment variable GNUPLOT_DRIVER_DIR to point to a different
+ location.
+
+ Plot windows will automatically be closed at the end of the session
+ unless the `-persist` option was given.
+
+ The options `persist` and `raise` are unset by default, which means that
+ the defaults (persist == no and raise == yes) or the command line options
+ -persist / -raise or the Xresources are taken.  If [no]persist or
+ [no]raise are specified, they will override command line options and
+ Xresources.  Setting one of these options takes place immediately, so
+ the behaviour of an already running driver can be modified.  If the window
+ does not get raised, see discussion in `raise`.
+
+ The option `title "<title name>"` will supply the title name of the window
+ for the current plot window or plot window <n> if a number is given.
+ Where (or if) this title is shown depends on your X window manager.
+
+ The size option can be used to set the size of the plot window.  The
+ size option will only apply to newly created windows.
+
+ The position option can be used to set the position of the plot window.  The
+ position option will only apply to newly created windows.
+
+ The size or aspect ratio of a plot may be changed by resizing the `gnuplot`
+ window.
+
+ Linewidths and pointsizes may be changed from within `gnuplot` with
+ `set linestyle`.
+
+ For terminal type `x11`, `gnuplot` accepts (when initialized) the standard
+ X Toolkit options and resources such as geometry, font, and name from the
+ command line arguments or a configuration file.  See the X(1) man page
+ (or its equivalent) for a description of such options.
+
+ A number of other `gnuplot` options are available for the `x11` terminal.
+ These may be specified either as command-line options when `gnuplot` is
+ invoked or as resources in the configuration file ".Xdefaults".  They are
+ set upon initialization and cannot be altered during a `gnuplot` session.
+ (except `persist` and `raise`)
+?commands set terminal x11 x11_fonts
+?set terminal x11 x11_fonts
+?set term x11 x11_fonts
+?x11 x11_fonts
+?x11_fonts
+ Upon initial startup, the default font is taken from the X11 resources
+ as set in the system or user .Xdefaults file or on the command line.
+
+ Example:
+       gnuplot*font: lucidasans-bold-12
+ A new default font may be specified to the x11 driver from inside
+ gnuplot using
+      `set term x11 font "<fontspec>"`
+ The driver first queries the X-server for a font of the exact name given.
+ If this query fails, then it tries to interpret <fontspec> as
+ "<font>,<size>,<slant>,<weight>" and to construct a full X11 font name
+ of the form
+       -*-<font>-<weight>-<s>-*-*-<size>-*-*-*-*-*-<encoding>
+
+  <font> is the base name of the font (e.g. Times or Symbol)
+  <size> is the point size (defaults to 12 if not specified)
+  <s> is `i` if <slant>=="italic" `o` if <slant>=="oblique" `r` otherwise
+  <weight> is `medium` or `bold` if explicitly requested, otherwise `*`
+  <encoding> is set based on the current character set (see `set encoding`).
+ So `set term x11 font "arial,15,italic"` will be translated to
+ -*-arial-*-i-*-*-15-*-*-*-*-*-iso8859-1 (assuming default encoding).
+ The <size>, <slant>, and <weight> specifications are all optional.
+ If you do not specify <slant> or <weight> then you will get whatever font 
+ variant the font server offers first.
+ You may set a default enconding via the corresponding X11 resource. E.g.
+       gnuplot*encoding: iso8859-15
+ The driver also recognizes some common PostScript font names and
+ replaces them with possible X11 or TrueType equivalents.
+ This same sequence is used to process font requests from `set label`.
+
+ If your gnuplot was built with configuration option --enable-x11-mbfonts,
+ you can specify multi-byte fonts by using the prefix "mbfont:" on the font
+ name. An additional font may be given, separated by a semicolon.
+ Since multi-byte font encodings are interpreted according to the locale
+ setting, you must make sure that the environmental variable LC_CTYPE is set
+ to some appropriate locale value such as ja_JP.eucJP, ko_KR.EUC, or zh_CN.EUC.
+
+ Example:
+       set term x11 font 'mbfont:kana14;k14'
+             # 'kana14' and 'k14' are Japanese X11 font aliases, and ';'
+             # is the separator of font names.
+       set term x11 font 'mbfont:fixed,16,r,medium'
+             # <font>,<size>,<slant>,<weight> form is also usable.
+       set title '(mb strings)' font 'mbfont:*-fixed-medium-r-normal--14-*'
+
+ The same syntax applies to the default font in Xresources settings,
+ for example,
+       gnuplot*font: \
+           mbfont:-misc-fixed-medium-r-normal--14-*-*-*-c-*-jisx0208.1983-0
+
+ If gnuplot is built with --enable-x11-mbfonts, you can use two special
+ PostScript font names 'Ryumin-Light-*' and 'GothicBBB-Medium-*' (standard
+ Japanese PS fonts) without the prefix "mbfont:".
+
+?commands set terminal x11 command-line-options
+?set terminal x11 command-line-options
+?set term x11 command-line-options
+?x11 command-line-options
+?command-line-options
+ In addition to the X Toolkit options, the following options may be specified
+ on the command line when starting `gnuplot` or as resources in your
+ ".Xdefaults" file (note that `raise` and `persist` can be overridden
+ later by `set term x11 [no]raise [no]persist)`:
+  `-mono`     forces monochrome rendering on color displays.
+  `-gray`     requests grayscale rendering on grayscale or color displays.
+              (Grayscale displays receive monochrome rendering by default.)
+  `-clear`    requests that the window be cleared momentarily before a
+              new plot is displayed.
+  `-tvtwm`    requests that geometry specifications for position of the
+              window be made relative to the currently displayed portion
+              of the virtual root.
+  `-raise`    raises plot window after each plot
+  `-noraise`  does not raise plot window after each plot
+  `-noevents` does not process mouse and key events
+  `-ctrlq   ` closes window on ctrl-q rather than q
+  `-persist`  plot windows survive after main gnuplot program exits
+ The options are shown above in their command-line syntax.  When entered as
+ resources in ".Xdefaults", they require a different syntax.
+
+ Example:
+       gnuplot*gray:  on
+       gnuplot*ctrlq: on
+
+ `gnuplot` also provides a command line option (`-pointsize <v>`) and a
+ resource, `gnuplot*pointsize: <v>`, to control the size of points plotted
+ with the `points` plotting style.  The value `v` is a real number (greater
+ than 0 and less than or equal to ten) used as a scaling factor for point
+ sizes.  For example, `-pointsize 2` uses points twice the default size, and
+ `-pointsize 0.5` uses points half the normal size.
+
+ The `-noevents` switch disables all mouse and key event processing (except
+ for `q` and `<space>` for closing the window). This is useful for programs
+ which use the x11 driver independent of the gnuplot main program.
+
+ The `-ctrlq` switch changes the hot-key that closes a plot window from `q`
+ to `<ctrl>q`. This is useful is you are using the keystroke-capture feature
+ `pause mouse keystroke`, since it allows the character `q` to be captured
+ just as all other alphanumeric characters. The `-ctrlq` switch similarly
+ replaces the <space> hot-key with <ctrl><space> for the same reason.
+
+?commands set terminal x11 monochrome_options
+?set terminal x11 monochrome_options
+?set term x11 monochrome_options
+?x11 monochrome_options
+?monochrome_options
+ For monochrome displays, `gnuplot` does not honor foreground or background
+ colors.  The default is black-on-white.  `-rv` or `gnuplot*reverseVideo: on`
+ requests white-on-black.
+
+?commands set terminal x11 color_resources
+?set terminal x11 color_resources
+?set term x11 color_resources
+?x11 color_resources
+?color_resources
+ The X11 terminal honors the following resources (shown here with their
+ default values) or the greyscale resources.  The values may be color names
+ as listed in the X11 rgb.txt file on your system, hexadecimal RGB color
+ specifications (see X11 documentation), or a color name followed by a comma
+ and an `intensity` value from 0 to 1.  For example, `blue, 0.5` means a half
+ intensity blue.
+  gnuplot*background:  white
+  gnuplot*textColor:   black
+  gnuplot*borderColor: black
+  gnuplot*axisColor:   black
+  gnuplot*line1Color:  red
+  gnuplot*line2Color:  green
+  gnuplot*line3Color:  blue
+  gnuplot*line4Color:  magenta
+  gnuplot*line5Color:  cyan
+  gnuplot*line6Color:  sienna
+  gnuplot*line7Color:  orange
+  gnuplot*line8Color:  coral
+
+ The command-line syntax for these is simple only for background,
+ which maps directly to the usual X11 toolkit option "-bg".  All
+ others can only be set on the command line by use of the generic
+ "-xrm" resource override option
+
+ Examples:
+
+       gnuplot -background coral
+ to change the background color.
+
+       gnuplot -xrm 'gnuplot*line1Color:blue'
+ to override the first linetype color.
+
+?commands set terminal x11 grayscale_resources
+?set terminal x11 grayscale_resources
+?set term x11 grayscale_resources
+?x11 grayscale_resources
+?grayscale_resources
+ When `-gray` is selected, `gnuplot` honors the following resources for
+ grayscale or color displays (shown here with their default values).  Note
+ that the default background is black.
+  gnuplot*background: black
+  gnuplot*textGray:   white
+  gnuplot*borderGray: gray50
+  gnuplot*axisGray:   gray50
+  gnuplot*line1Gray:  gray100
+  gnuplot*line2Gray:  gray60
+  gnuplot*line3Gray:  gray80
+  gnuplot*line4Gray:  gray40
+  gnuplot*line5Gray:  gray90
+  gnuplot*line6Gray:  gray50
+  gnuplot*line7Gray:  gray70
+  gnuplot*line8Gray:  gray30
+
+?commands set terminal x11 line_resources
+?set terminal x11 line_resources
+?set term x11 line_resources
+?x11 line_resources
+?line_resources
+ `gnuplot` honors the following resources for setting the width (in pixels) of
+ plot lines (shown here with their default values.)  0 or 1 means a minimal
+ width line of 1 pixel width.  A value of 2 or 3 may improve the appearance of
+ some plots.
+  gnuplot*borderWidth: 2
+  gnuplot*axisWidth:   0
+  gnuplot*line1Width:  0
+  gnuplot*line2Width:  0
+  gnuplot*line3Width:  0
+  gnuplot*line4Width:  0
+  gnuplot*line5Width:  0
+  gnuplot*line6Width:  0
+  gnuplot*line7Width:  0
+  gnuplot*line8Width:  0
+
+ `gnuplot` honors the following resources for setting the dash style used for
+ plotting lines.  0 means a solid line.  A two-digit number `jk` (`j` and `k`
+ are >= 1 and <= 9) means a dashed line with a repeated pattern of `j` pixels
+ on followed by `k` pixels off.  For example, '16' is a dotted line with one
+ pixel on followed by six pixels off.  More elaborate on/off patterns can be
+ specified with a four-digit value.  For example, '4441' is four on, four off,
+ four on, one off.  The default values shown below are for monochrome displays
+ or monochrome rendering on color or grayscale displays.
+ Color displays default to dashed:off 
+  gnuplot*dashed:       off
+  gnuplot*borderDashes:   0
+  gnuplot*axisDashes:    16
+  gnuplot*line1Dashes:    0
+  gnuplot*line2Dashes:   42
+  gnuplot*line3Dashes:   13
+  gnuplot*line4Dashes:   44
+  gnuplot*line5Dashes:   15
+  gnuplot*line6Dashes: 4441
+  gnuplot*line7Dashes:   42
+  gnuplot*line8Dashes:   13
+
+?commands set terminal x11 pm3d_resources
+?set terminal x11 pm3d_resources
+?set term x11 pm3d_resources
+?x11 pm3d_resources
+?pm3d_resources
+?x11 pm3d
+ Choosing the appropriate visual class and number of colors is a crucial
+ point in X11 applications and a bit awkward, since X11 supports six visual
+ types in different depths.
+
+ By default `gnuplot` uses the default visual of the screen. The number of
+ colors which can be allocated depends on the visual class chosen. On a
+ visual class with a depth > 12bit, gnuplot starts with a maximal number
+ of 0x200 colors.  On a visual class with a depth > 8bit (but <= 12 bit)
+ the maximal number of colors is 0x100, on <= 8bit displays the maximum
+ number of colors is 240 (16 are left for line colors).
+
+ Gnuplot first starts to allocate the maximal number of colors as stated
+ above.  If this fails, the number of colors is reduced by the factor 2
+ until gnuplot gets all colors which are requested. If dividing `maxcolors`
+ by 2 repeatedly results in a number which is smaller than `mincolors`
+ `gnuplot` tries to install a private colormap. In this case the window
+ manager is responsible for swapping colormaps when the pointer is moved
+ in and out the x11 driver's window.
+
+ The default for `mincolors` is maxcolors / (num_colormaps > 1 ? 2 : 8),
+ where num_colormaps is the number of colormaps which are currently used
+ by gnuplot (usually 1, if only one x11 window is open).
+
+ Some systems support multiple (different) visual classes together on one
+ screen. On these systems it might be necessary to force gnuplot to use a
+ specific visual class, e.g. the default visual might be 8bit PseudoColor
+ but the screen would also support 24bit TrueColor which would be the
+ preferred choice.
+
+ The information about an Xserver's capabilities can be obtained with the
+ program `xdpyinfo`.  For the visual names below you can choose one of
+ StaticGray, GrayScale, StaticColor, PseudoColor, TrueColor, DirectColor.
+ If an Xserver supports a requested visual type at different depths,
+ `gnuplot` chooses the visual class with the highest depth (deepest).
+ If the requested visual class matches the default visual and multiple
+ classes of this type are supported, the default visual is preferred.
+
+ Example: on an 8bit PseudoColor visual you can force a private color map
+ by specifying `gnuplot*maxcolors: 240` and `gnuplot*mincolors: 240`.
+
+  gnuplot*maxcolors:  <integer>
+  gnuplot*mincolors:  <integer>
+  gnuplot*visual:     <visual name>
+
+?commands set terminal x11 other_resources
+?set terminal x11 other_resources
+?set term x11 other_resources
+?x11 other_resources
+ By default the contents of the current plot window are exported to the X11
+ clipboard in response to X events in the window. Setting the resource
+ 'gnuplot*exportselection' to 'off' or 'false' will disable this.
+
+ By default text rotation is done using a method that is fast, but can
+ corrupt nearby colors depending on the background.  If this is a problem,
+ you can set the resource 'gnuplot.fastrotate' to 'off'
+
+  gnuplot*exportselection:  off
+  gnuplot*fastrotate:  on
+  gnuplot*ctrlq:  off
+?commands set terminal xlib
+?set terminal xlib
+?set term xlib
+?terminal xlib
+?term xlib
+?xlib
+ The `xlib` terminal driver supports the X11 Windows System.  It generates
+ gnuplot_x11 commands, but sends them to the output file specified by
+ `set output '<filename>'`. `set term x11` is equivalent to
+ `set output "|gnuplot_x11 -noevents"; set term xlib`.
+ `xlib` takes the same set of options as `x11`.
+?commands set terminal canvas
+?set terminal canvas
+?set term canvas
+?terminal canvas
+?term canvas
+
+ The `canvas` terminal creates a set of javascript commands that draw onto the
+ HTML5 canvas element.
+ Syntax:
+       set terminal canvas {size <xsize>, <ysize>} {background <rgb_color>}
+                           {font {<fontname>}{,<fontsize>}} | {fsize <fontsize>}
+                           {{no}enhanced} {linewidth <lw>}
+                           {rounded | butt}
+                           {solid | dashed {dashlength <dl>}}
+                           {standalone {mousing} | name '<funcname>'}
+                           {jsdir 'URL/for/javascripts'}
+                           {title '<some string>'}
+
+ where <xsize> and <ysize> set the size of the plot area in pixels.
+ The default size in standalone mode is 600 by 400 pixels.
+ The default font size is 10.
+
+ NB: Only one font is available, the ascii portion of Hershey simplex Roman
+ provided in the file canvastext.js. You can replace this with the file
+ canvasmath.js, which contains also UTF-8 encoded Hershey simplex Greek and
+ math symbols. For consistency with other terminals, it is also possible to
+ use `font "name,size"`. Currently the font `name` is ignored, but browser
+ support for named fonts is likely to arrive eventually.
+
+ The default `standalone` mode creates an html page containing javascript
+ code that renders the plot using the HTML 5 canvas element.  The html page
+ links to two required javascript files 'canvastext.js' and 'gnuplot_common.js'.
+ An additional file 'gnuplot_dashedlines.js' is needed to support dashed lines.
+ By default these point to local files, on unix-like systems usually in
+ directory /usr/local/share/gnuplot/<version>/js.  See installation notes for
+ other platforms. You can change this by using the `jsdir` option to specify
+ either a different local directory or a general URL.  The latter is usually
+ appropriate if the plot is exported for viewing on remote client machines.
+
+ All plots produced by the canvas terminal are mouseable.  The additional
+ keyword `mousing` causes the `standalone` mode to add a mouse-tracking box
+ underneath the plot. It also adds a link to a javascript file
+ 'gnuplot_mouse.js' and to a stylesheet for the mouse box 'gnuplot_mouse.css'
+ in the same local or URL directory as 'canvastext.js'.
+
+ The `name` option creates a file containing only javascript. Both the
+ javascript function it contains and the id of the canvas element that it
+ draws onto are taken from the following string parameter.  The commands
+       set term canvas name 'fishplot'
+       set output 'fishplot.js'
+ will create a file containing a javascript function fishplot() that will
+ draw onto a canvas with id=fishplot.  An html page that invokes this
+ javascript function must also load the canvastext.js function as described
+ above.  A minimal html file to wrap the fishplot created above might be:
+
+       <html>
+       <head>
+           <script src="canvastext.js"></script>
+           <script src="gnuplot_common.js"></script>
+       </head>
+       <body onload="fishplot();">
+           <script src="fishplot.js"></script>
+           <canvas id="fishplot" width=600 height=400>
+               <div id="err_msg">No support for HTML 5 canvas element</div>
+           </canvas>
+       </body>
+       </html>
+
+ The individual plots drawn on this canvas will have names fishplot_plot_1,
+ fishplot_plot_2, and so on. These can be referenced by external javascript
+ routines, for example gnuplot.toggle_visibility("fishplot_plot_2").
+
+?commands set terminal cgm
+?set terminal cgm
+?set term cgm
+?terminal cgm
+?term cgm
+?cgm
+ The `cgm` terminal generates a Computer Graphics Metafile, Version 1. 
+ This file format is a subset of the ANSI X3.122-1986 standard entitled
+ "Computer Graphics - Metafile for the Storage and Transfer of Picture
+ Description Information".
+
+ Syntax:
+       set terminal cgm {color | monochrome} {solid | dashed} {{no}rotate}
+                        {<mode>} {width <plot_width>} {linewidth <line_width>}
+                        {font "<fontname>,<fontsize>"}
+                        {background <rgb_color>}
+   [deprecated]         {<color0> <color1> <color2> ...}
+
+ `solid` draws all curves with solid lines, overriding any dashed patterns;
+ <mode> is `landscape`, `portrait`, or `default`;
+ <plot_width> is the assumed width of the plot in points; 
+ <line_width> is the line width in points (default 1); 
+ <fontname> is the name of a font (see list of fonts below)
+ <fontsize> is the size of the font in points (default 12).
+
+ The first six options can be in any order.  Selecting `default` sets all
+ options to their default values.
+
+ The mechanism of setting line colors in the `set term` command is
+ deprecated.  Instead you should set the background using a separate
+ keyword and set the line colors using `set linetype`.
+ The deprecated mechanism accepted colors of the form 'xrrggbb', where x is
+ the literal character 'x' and 'rrggbb' are the red, green and blue components
+ in hex. The first color was used for the background, subsequent colors are
+ assigned to successive line types.
+
+ Examples:
+       set terminal cgm landscape color rotate dashed width 432 \
+                      linewidth 1  'Helvetica Bold' 12       # defaults
+       set terminal cgm linewidth 2  14  # wider lines & larger font
+       set terminal cgm portrait "Times Italic" 12
+       set terminal cgm color solid      # no pesky dashes!
+?commands set terminal cgm font
+?set terminal cgm font
+?set term cgm font
+?cgm font
+ The first part of a Computer Graphics Metafile, the metafile description,
+ includes a font table.  In the picture body, a font is designated by an
+ index into this table.  By default, this terminal generates a table with
+ the following 35 fonts, plus six more with `italic` replaced by
+ `oblique`, or vice-versa (since at least the Microsoft Office and Corel
+ Draw CGM import filters treat `italic` and `oblique` as equivalent):
+       Helvetica
+       Helvetica Bold
+       Helvetica Oblique
+       Helvetica Bold Oblique
+       Times Roman
+       Times Bold
+       Times Italic
+       Times Bold Italic
+       Courier
+       Courier Bold
+       Courier Oblique
+       Courier Bold Oblique
+       Symbol
+       Hershey/Cartographic_Roman
+       Hershey/Cartographic_Greek
+       Hershey/Simplex_Roman
+       Hershey/Simplex_Greek
+       Hershey/Simplex_Script
+       Hershey/Complex_Roman
+       Hershey/Complex_Greek
+       Hershey/Complex_Script
+       Hershey/Complex_Italic
+       Hershey/Complex_Cyrillic
+       Hershey/Duplex_Roman
+       Hershey/Triplex_Roman
+       Hershey/Triplex_Italic
+       Hershey/Gothic_German
+       Hershey/Gothic_English
+       Hershey/Gothic_Italian
+       Hershey/Symbol_Set_1
+       Hershey/Symbol_Set_2
+       Hershey/Symbol_Math
+       ZapfDingbats
+       Script
+       15
+ The first thirteen of these fonts are required for WebCGM.  The
+ Microsoft Office CGM import filter implements the 13 standard fonts
+ listed above, and also 'ZapfDingbats' and 'Script'.  However, the
+ script font may only be accessed under the name '15'.  For more on
+ Microsoft import filter font substitutions, check its help file which
+ you may find here:
+   C:\Program Files\Microsoft Office\Office\Cgmimp32.hlp
+ and/or its configuration file, which you may find here:
+   C:\Program Files\Common Files\Microsoft Shared\Grphflt\Cgmimp32.cfg
+
+ In the `set term` command, you may specify a font name which does not
+ appear in the default font table.  In that case, a new font table is
+ constructed with the specified font as its first entry. You must ensure
+ that the spelling, capitalization, and spacing of the name are
+ appropriate for the application that will read the CGM file.  (Gnuplot
+ and any MIL-D-28003A compliant application ignore case in font names.)
+ If you need to add several new fonts, use several `set term` commands.
+
+ Example:
+       set terminal cgm 'Old English'
+       set terminal cgm 'Tengwar'
+       set terminal cgm 'Arabic'
+       set output 'myfile.cgm'
+       plot ...
+       set output
+
+ You cannot introduce a new font in a `set label` command.
+?commands set terminal cgm fontsize
+?set terminal cgm fontsize
+?set term cgm fontsize
+?cgm fontsize
+ Fonts are scaled assuming the page is 6 inches wide.  If the `size`
+ command is used to change the aspect ratio of the page or the CGM file
+ is converted to a different width, the resulting font sizes will be
+ scaled up or down accordingly.  To change the assumed width, use the
+ `width` option.
+?commands set terminal cgm linewidth
+?set terminal cgm linewidth
+?set term cgm linewidth
+?cgm linewidth
+ The `linewidth` option sets the width of lines in pt.  The default width
+ is 1 pt.  Scaling is affected by the actual width of the page, as
+ discussed under the `fontsize` and `width` options.
+?commands set terminal cgm rotate
+?set terminal cgm rotate
+?set term cgm rotate
+?cgm rotate
+ The `norotate` option may be used to disable text rotation.  For
+ example, the CGM input filter for Word for Windows 6.0c can accept
+ rotated text, but the DRAW editor within Word cannot.  If you edit a
+ graph (for example, to label a curve), all rotated text is restored to
+ horizontal.  The Y axis label will then extend beyond the clip boundary.
+ With `norotate`, the Y axis label starts in a less attractive location,
+ but the page can be edited without damage.  The `rotate` option confirms
+ the default behavior.
+?set terminal cgm solid
+?set term cgm solid
+?cgm solid
+ The `solid` option may be used to disable dashed line styles in the
+ plots.  This is useful when color is enabled and the dashing of the
+ lines detracts from the appearance of the plot. The `dashed` option
+ confirms the default behavior, which gives a different dash pattern to
+ each line type.
+?commands set terminal cgm size
+?set terminal cgm size
+?set term cgm size
+?cgm size
+ Default size of a CGM plot is 32599 units wide and 23457 units high for
+ landscape, or 23457 units wide by 32599 units high for portrait.
+?commands set terminal cgm width
+?set terminal cgm width
+?set term cgm width
+?cgm width
+ All distances in the CGM file are in abstract units.  The application
+ that reads the file determines the size of the final plot.  By default,
+ the width of the final plot is assumed to be 6 inches (15.24 cm).  This
+ distance is used to calculate the correct font size, and may be changed
+ with the `width` option.  The keyword should be followed by the width in
+ points.  (Here, a point is 1/72 inch, as in PostScript.  This unit is
+ known as a "big point" in TeX.)  Gnuplot `expressions` can be used to
+ convert from other units.
+
+ Example:
+       set terminal cgm width 432            # default
+       set terminal cgm width 6*72           # same as above
+       set terminal cgm width 10/2.54*72     # 10 cm wide
+?commands set terminal cgm nofontlist
+?set terminal cgm nofontlist
+?set term cgm nofontlist
+?cgm nofontlist
+?set terminal cgm winword6
+?set term cgm winword6
+?cgm winword6
+ The default font table includes the fonts recommended for WebCGM, which
+ are compatible with the Computer Graphics Metafile input filter for
+ Microsoft Office and Corel Draw.  Another application might use
+ different fonts and/or different font names, which may not be
+ documented.  The `nofontlist` (synonym `winword6`) option deletes the font
+ table from the CGM file.  In this case, the reading application should
+ use a default table.  Gnuplot will still use its own default font table
+ to select font indices.  Thus, 'Helvetica' will give you an index of 1,
+ which should get you the first entry in your application's default font
+ table. 'Helvetica Bold' will give you its second entry, etc.
+
+?commands set terminal corel
+?set terminal corel
+?set term corel
+?terminal corel
+?term corel
+?corel
+ The `corel` terminal driver supports CorelDraw.
+
+ Syntax:
+       set terminal corel {  default
+                           | {monochrome | color
+                                {"<font>" {<fontsize> 
+                                   {<xsize> <ysize> {<linewidth> }}}}}
+
+ where the fontsize and linewidth are specified in points and the sizes in
+ inches.  The defaults are monochrome, "SwitzerlandLight", 22, 8.2, 10 and 1.2.
+?commands set terminal dumb
+?set terminal dumb
+?set term dumb
+?terminal dumb
+?term dumb
+?dumb
+ The `dumb` terminal driver plots into a text block using ascii characters.
+ It has an optional size specification and a trailing linefeed flag.
+
+ Syntax:
+       set terminal dumb {size <xchars>,<ychars>} {[no]feed}
+                         {[no]enhanced}
+
+ where <xchars> and <ychars> set the size of the text block. The default is
+ 79 by 24. The last newline is printed only if `feed` is enabled.
+
+ Example:
+       set term dumb size 60,15
+       plot [-5:6.5] sin(x) with impulse
+
+            1 +-------------------------------------------------+
+          0.8 +|||++                   ++||||++   sin(x) +----+ |
+          0.6 +|||||+                 ++|||||||+                |
+          0.4 +||||||+               ++|||||||||+               |
+          0.2 +|||||||+             ++|||||||||||+             +|
+            0 ++++++++++++++++++++++++++++++++++++++++++++++++++|
+         -0.2 +        +|||||||||||+              +|||||||||||+ |
+         -0.4 +         +|||||||||+                +|||||||||+  |
+         -0.6 +          +|||||||+                  +|||||||+   |
+         -0.8 +   +       ++||||+   +       +        ++||||+  + |
+           -1 +---+--------+--------+-------+--------+--------+-+
+                 -4       -2        0       2        4        6  
+?commands set terminal dxf
+?set terminal dxf
+?set term dxf
+?terminal dxf
+?term dxf
+?dxf
+ The `dxf` terminal driver creates pictures that can be imported into AutoCad
+ (Release 10.x).  It has no options of its own, but some features of its plots
+ may be modified by other means.  The default size is 120x80 AutoCad units,
+ which can be changed by `set size`.  `dxf` uses seven colors (white, red,
+ yellow, green, cyan, blue and magenta), which can be changed only by
+ modifying the source file.  If a black-and-white plotting device is used, the
+ colors are mapped to differing line thicknesses.  See the description of the
+ AutoCad print/plot command.
+?commands set terminal emf
+?set terminal emf
+?set term emf
+?terminal emf
+?term emf
+?emf
+ The `emf` terminal generates an Enhanced Metafile Format file.
+ This file format is recognized by many Windows applications.
+
+ Syntax:
+       set terminal emf {color | monochrome} {solid | dashed}
+                        {enhanced {noproportional}}
+                        {rounded | butt}
+                        {linewidth <LW>} {dashlength <DL>}
+                        {size XX,YY} {background <rgb_color>}
+                        {font "<fontname>{,<fontsize>}"}
+                        {fontscale <scale>}
+
+ In `monochrome` mode successive line types cycle through dash patterns.
+ In `color` mode successive line types use successive colors, and only after
+ all 8 default colors are exhausted is the dash pattern incremented.
+ `solid` draws all curves with solid lines, overriding any dashed patterns;
+ `linewidth <factor>` multiplies all line widths by this factor.
+ `dashlength <factor>` is useful for thick lines.
+ <fontname> is the name of a font; and 
+ `<fontsize>` is the size of the font in points.
+
+ The nominal size of the output image defaults to 1024x768 in arbitrary
+ units. You may specify a different nominal size using the `size` option.
+
+ Enhanced text mode tries to approximate proportional character spacing.
+ If you are using a monospaced font, or don't like the approximation, you
+ can turn off this correction using the `noproportional` option.
+
+ The default settings are `color solid font "Arial,12" size 1024,768`
+ Selecting `default` sets all options to their default values.
+
+ Examples:
+       set terminal emf 'Times Roman Italic, 12'
+       set terminal emf dashed    # otherwise all lines are solid
+?commands set terminal fig
+?set terminal fig
+?set term fig
+?terminal fig
+?term fig
+?fig
+?xfig
+ The `fig` terminal device generates output in the Fig graphics language.
+
+ Syntax:
+       set terminal fig {monochrome | color}
+                        {landscape | portrait}
+                        {small | big | size <xsize> <ysize>}
+                        {metric | inches}
+                        {pointsmax <max_points>}
+                        {solid | dashed}
+                        {font "<fontname>{,<fontsize>}"}
+                        {textnormal | {textspecial texthidden textrigid}}
+                        {{thickness|linewidth} <units>}
+                        {depth <layer>}
+                        {version <number>}
+
+ `monochrome` and `color` determine whether the picture is black-and-white or
+ `color`.  `small` and `big` produce a 5x3 or 8x5 inch graph in the default
+ `landscape` mode and 3x5 or 5x8 inches in `portrait` mode.
+ `size` sets (overrides) the size of the drawing
+ area to <xsize>*<ysize> in units of inches or centimeters depending on the
+ `inches` or `metric` setting in effect.
+ The latter settings is also used as default units for editing with "xfig".
+
+ `pointsmax <max_points>` sets the maximum number of points per polyline.
+
+ `solid` inhibits automatic usage of `dash`ed lines when solid linestyles are
+ used up, which otherwise occurs.
+
+ `font` sets the text font face to <fontname> and its size to <fontsize>
+ points. `textnormal` resets the text flags and selects postscript fonts,
+ `textspecial` sets the text flags for LaTeX specials, `texthidden` sets the
+ hidden flag and `textrigid` the rigid flag.
+
+ `depth` sets the default depth layer for all lines and text.  The default
+ depth is 10 to leave room for adding material with "xfig" on top of the
+ plot.
+
+ `version` sets the format version of the generated fig output. Currently
+ only versions 3.1 and 3.2 are supported.
+
+ `thickness` sets the default line thickness, which is 1 if not specified.
+ Overriding the thickness can be achieved by adding a multiple of 100 to the
+ `linetype` value for a `plot` command.  In a similar way the `depth`
+ of plot elements (with respect to the default depth) can be controlled by
+ adding a multiple of 1000 to <linetype>.  The depth is then <layer> +
+ <linetype>/1000 and the thickness is (<linetype>%1000)/100 or, if that is
+ zero, the default line thickness. `linewidth` is a synonym for `thickness`.
+
+ Additional point-plot symbols are also available with the `fig` driver. The
+ symbols can be used through `pointtype` values % 100 above 50, with different
+ fill intensities controlled by <pointtype> % 5 and outlines in black (for
+ <pointtype> % 10 < 5) or in the current color.  Available symbols are
+         50 - 59:  circles
+         60 - 69:  squares
+         70 - 79:  diamonds
+         80 - 89:  upwards triangles
+         90 - 99:  downwards triangles
+ The size of these symbols is linked to the font size.  The depth of symbols
+ is by default one less than the depth for lines to achieve nice error bars.
+ If <pointtype> is above 1000, the depth is <layer> + <pointtype>/1000-1.  If
+ <pointtype>%1000 is above 100, the fill color is (<pointtype>%1000)/100-1.
+
+ Available fill colors are (from 1 to 9): black, blue, green, cyan, red,
+ magenta, yellow, white and dark blue (in monochrome mode: black for 1 to 6
+ and white for 7 to 9).
+
+ See `plot with` for details of <linetype> and <pointtype>.
+
+ The `big` option is a substitute for the `bfig` terminal in earlier versions,
+ which is no longer supported.
+
+ Examples:
+       set terminal fig monochrome small pointsmax 1000  # defaults
+
+       plot 'file.dat' with points linetype 102 pointtype 759
+ would produce circles with a blue outline of width 1 and yellow fill color.
+
+       plot 'file.dat' using 1:2:3 with err linetype 1 pointtype 554
+ would produce errorbars with black lines and circles filled red.  These
+ circles are one layer above the lines (at depth 9 by default).
+
+ To plot the error bars on top of the circles use
+       plot 'file.dat' using 1:2:3 with err linetype 1 pointtype 2554
+?commands set terminal hp2623a
+?set terminal hp2623a
+?set term hp2623a
+?terminal hp2623a
+?term hp2623a
+?hp2623a
+ The `hp2623a` terminal driver supports the Hewlett Packard HP2623A.  It has
+ no options.
+?commands set terminal hp2648
+?set terminal hp2648
+?set term hp2648
+?terminal hp2648
+?term hp2648
+?hp2648
+ The `hp2648` terminal driver supports the Hewlett Packard HP2647 and HP2648.
+ It has no options.
+?commands set terminal hpgl
+?set terminal hpgl
+?set term hpgl
+?terminal hpgl
+?term hpgl
+?hpgl
+?commands set terminal pcl5
+?set terminal pcl5
+?set term pcl5
+?terminal pcl5
+?term pcl5
+?pcl5
+ The `hpgl` driver produces HPGL output for devices like the HP7475A plotter.
+ There are two options which can be set: the number of pens and `eject`,
+ which tells the plotter to eject a page when done.  The default is to use 6
+ pens and not to eject the page when done.
+
+ The international character sets ISO-8859-1 and CP850 are recognized via
+ `set encoding iso_8859_1` or `set encoding cp850` (see `set encoding` for
+ details).
+
+ Syntax:
+       set terminal hpgl {<number_of_pens>} {eject}
+
+ The selection
+
+       set terminal hpgl 8 eject
+
+ is equivalent to the previous `hp7550` terminal, and the selection
+
+       set terminal hpgl 4
+
+ is equivalent to the previous `hp7580b` terminal.
+
+ The `pcl5` driver supports plotters such as the Hewlett-Packard Designjet
+ 750C, the Hewlett-Packard Laserjet III, and the Hewlett-Packard Laserjet IV.
+ It actually uses HPGL-2, but there is a name conflict among the terminal
+ devices.  It has several options which must be specified in the order
+ indicated below:
+
+ Syntax:
+       set terminal pcl5 {mode <mode>} {<plotsize>}
+           {{color {<number_of_pens>}} | monochrome} {solid | dashed}
+           {font <font>} {size <fontsize>} {pspoints | nopspoints}
+
+ <mode> is `landscape` or `portrait`. <plotsize> is the physical
+ plotting size of the plot, which is one of the following: `letter` for
+ standard (8 1/2" X 11") displays, `legal` for (8 1/2" X 14") displays,
+ `noextended` for (36" X 48") displays (a letter size ratio) or,
+ `extended` for (36" X 55") displays (almost a legal size ratio).
+ `color` is for multi-pen (i.e. color) plots, and <number_of_pens> is
+ the number of pens (i.e. colors) used in color plots. `monochrome` is for
+ one (e.g. black) pen plots. `solid` draws all lines as solid lines, or
+ `dashed` will draw lines with different dashed and dotted line patterns.
+ <font> is `stick`, `univers`, `cg_times`, `zapf_dingbats`, `antique_olive`,
+ `arial`, `courier`, `garamond_antigua`, `letter_gothic`, `cg_omega`,
+ `albertus`, `times_new_roman`, `clarendon`, `coronet`, `marigold`,
+ `truetype_symbols`, or `wingdings`. <fontsize> is the font size in points.
+ The point type selection can be the standard default set by specifying
+ `nopspoints`, or the same set of point types found in the postscript terminal
+ by specifying `pspoints`.
+
+ Note that built-in support of some of these options is printer device
+ dependent. For instance, all the fonts are supposedly supported by the HP
+ Laserjet IV, but only a few (e.g. univers, stick) may be supported by the HP
+ Laserjet III and the Designjet 750C. Also, color obviously won't work on the
+ the laserjets since they are monochrome devices.
+
+ Defaults: landscape, noextended, color (6 pens), solid, univers, 12 point,
+           and nopspoints.
+
+ With `pcl5` international characters are handled by the printer; you just put
+ the appropriate 8-bit character codes into the text strings.  You don't need
+ to bother with `set encoding`.
+
+ HPGL graphics can be imported by many software packages.
+?commands set terminal imagen
+?set terminal imagen
+?set term imagen
+?terminal imagen
+?term imagen
+?imagen
+ The `imagen` terminal driver supports Imagen laser printers.  It is capable
+ of placing multiple graphs on a single page.
+
+ Syntax:
+       set terminal imagen {<fontsize>} {portrait | landscape}
+                           {[<horiz>,<vert>]}
+
+ where `fontsize` defaults to 12 points and the layout defaults to `landscape`.
+ `<horiz>` and `<vert>` are the number of graphs in the horizontal and
+ vertical directions; these default to unity.
+
+ Example:
+       set terminal imagen portrait [2,3]
+
+ puts six graphs on the page in three rows of two in portrait orientation.
+?commands set terminal mif
+?set terminal mif
+?set term mif
+?terminal mif
+?term mif
+?mif
+ The `mif` terminal driver produces Frame Maker MIF format version 3.00.  It
+ plots in MIF Frames with the size 15*10 cm, and plot primitives with the same
+ pen will be grouped in the same MIF group.  Plot primitives in a `gnuplot`
+ page will be plotted in a MIF Frame, and several MIF Frames are collected in
+ one large MIF Frame.  The MIF font used for text is "Times".
+
+ Several options may be set in the MIF 3.00 driver.
+
+ Syntax:
+       set terminal mif {color | colour | monochrome} {polyline | vectors}
+                        {help | ?}
+
+ `colour` plots lines with line types >= 0 in colour (MIF sep. 2--7) and
+ `monochrome` plots all line types in black (MIF sep. 0).
+ `polyline` plots curves as continuous curves and `vectors` plots curves as
+ collections of vectors.
+ `help` and `?` print online help on standard error output---both print a
+ short description of the usage; `help` also lists the options.
+
+ Examples:
+       set term mif colour polylines    # defaults
+       set term mif                     # defaults
+       set term mif vectors
+       set term mif help
+
+?commands set terminal epslatex
+?set terminal epslatex
+?set term epslatex
+?terminal epslatex
+?term epslatex
+?epslatex
+ The `epslatex` driver generates output for further processing by LaTeX.
+
+ Syntax:
+       set terminal epslatex   {default}
+       set terminal epslatex   {standalone | input}
+                               {oldstyle | newstyle}
+                               {level1 | leveldefault}
+                               {color | colour | monochrome}
+                               {background <rgbcolor> | nobackground}
+                               {solid | dashed}
+                               {dashlength | dl <DL>}
+                               {linewidth | lw <LW>}
+                               {rounded | butt}
+                               {clip | noclip}
+                               {palfuncparam <samples>{,<maxdeviation>}}
+                               {size <XX>{unit},<YY>{unit}}
+                               {header <header> | noheader}
+                               {blacktext | colortext | colourtext}
+                               {{font} "fontname{,fontsize}" {<fontsize>}}
+                               {fontscale <scale>}
+
+ The epslatex terminal prints a plot as `terminal postscript eps`
+ but transfers the texts to LaTeX instead of including in the PostScript
+ code. Thus, many options are the same as in the `postscript terminal`.
+
+ The appearance of the epslatex terminal changed between versions 4.0 and 4.2
+ to reach better consistency with the postscript terminal:
+ The plot size has been changed from 5 x 3 inches to 5 x 3.5 inches;
+ the character width is now estimated to be 60% of the font size
+ while the old epslatex terminal used 50%;  now, the larger number of
+ postscript linetypes and symbols are used.  To reach an appearance that is
+ nearly identical to the old one specify the option `oldstyle`. (In fact
+ some small differences remain: the symbol sizes are slightly different, the
+ tics are half as large as in the old terminal which can be changed using
+ `set tics scale`, and the arrows have all features as in the postscript
+ terminal.)
+
+ If you see the error message
+       "Can't find PostScript prologue file ... "
+ Please see and follow the instructions in `postscript prologue`.
+
+ The option `color` enables color, while `monochrome` prefers black and white
+ drawing elements. Further, `monochrome` uses gray `palette` but it does not
+ change color of objects specified with an explicit `colorspec`.
+ `solid` draws all plots with solid lines, overriding any dashed patterns.
+ `dashlength` or `dl` scales the length of the dashed-line segments by <DL>,
+ which is a floating-point number greater than zero.
+ `linewidth` or `lw` scales all linewidths by <LW>.
+
+ By default the generated PostScript code uses language features that were
+ introduced in PostScript Level 2, notably filters and pattern-fill of
+ irregular objects such as filledcurves.  PostScript Level 2 features are
+ conditionally protected so that PostScript Level 1 interpreters do not issue
+ errors but, rather, display a message or a PostScript Level 1 approximation.
+ The `level1` option substitutes PostScript Level 1 approximations of these
+ features and uses no PostScript Level 2 code.  This may be required by some
+ old printers and old versions of Adobe Illustrator.  The flag `level1` can be
+ toggled later by editing a single line in the PostScript output file to force
+ PostScript Level 1 interpretation.  In the case of files containing level 2
+ code, the above features will not appear or will be replaced by a note when
+ this flag is set or when the interpreting program does not indicate that it
+ understands level 2 PostScript or higher.
+
+ `rounded` sets line caps and line joins to be rounded; `butt` is the
+ default, butt caps and mitered joins.
+
+ `clip` tells PostScript to clip all output to the bounding box;
+ `noclip` is the default.
+
+ `palfuncparam` controls how `set palette functions` are encoded as gradients
+ in the output. Analytic color component functions (set via
+ `set palette functions`) are encoded as linear interpolated gradients in the
+ postscript output:  The color component functions are sampled at <samples>
+ points and all points are removed from this gradient which can be removed
+ without changing the resulting colors by more than <maxdeviation>. For
+ almost every useful palette you may safely leave the defaults of
+ <samples>=2000 and <maxdeviation>=0.003 untouched.
+
+ The default size for postscript output is 10 inches x 7 inches. The default
+ for eps output is 5 x 3.5 inches.  The `size` option changes this to
+ whatever the user requests. By default the X and Y sizes are taken to be in
+ inches, but other units are possibly (currently only cm). The BoundingBox
+ of the plot is correctly adjusted to contain the resized image.
+ Screen coordinates always run from 0.0 to 1.0 along the full length of the
+ plot edges as specified by the `size` option.
+ NB: `this is a change from the previously recommended method of using the
+ set size command prior to setting the terminal type`.  The old method left
+ the BoundingBox unchanged and screen coordinates did not correspond to the
+ actual limits of the plot.
+
+ `blacktext` forces all text to be written in black even in color mode;
+
+ The epslatex driver offers a special way of controlling text positioning:
+ (a) If any text string begins with '{', you also need to include a '}' at the
+ end of the text, and the whole text will be centered both horizontally
+ and vertically by LaTeX.  (b) If the text string begins with '[', you need
+ to continue it with: a position specification (up to two out of t,b,l,r,c),
+ ']{', the text itself, and finally, '}'. The text itself may be anything
+ LaTeX can typeset as an LR-box. \rule{}{}'s may help for best positioning.
+ See also the documentation for the `pslatex` terminal driver.
+ To create multiline labels, use \shortstack, for example
+    set ylabel '[r]{\shortstack{first line \\ second line}}' 
+
+ The `back` option of `set label` commands is handled slightly different
+ than in other terminals. Labels using 'back' are printed behind all other
+ elements of the plot while labels using 'front' are printed above 
+ everything else.
+
+ The driver produces two different files, one for the eps part of the figure
+ and one for the LaTeX part. The name of the LaTeX file is taken from the
+ `set output` command. The name of the eps file is derived by replacing
+ the file extension (normally `.tex`) with `.eps` instead.  There is no
+ LaTeX output if no output file is given!  Remember to close the
+ `output file` before next plot unless in `multiplot` mode.
+
+ In your LaTeX documents use '\input{filename}' to include the figure.
+ The `.eps` file is included by the command \includegraphics{...}, so you
+ must also include \usepackage{graphicx} in the LaTeX preamble.  If you
+ want to use coloured text (option `textcolour`) you also have to include
+ \usepackage{color} in the LaTeX preamble.
+
+ Pdf files can be made from the eps file using 'epstopdf'. If the graphics
+ package is properly configured, the LaTeX files can also be processed by
+ pdflatex without changes, using the pdf files instead of the eps files.
+ The behaviour concerning font selection depends on the header mode.
+ In all cases, the given font size is used for the calculation of proper
+ spacing. When not using the `standalone` mode the actual LaTeX font and
+ font size at the point of inclusion is taken, so use LaTeX commands for
+ changing fonts. If you use e.g. 12pt as font size for your LaTeX
+ document, use '"" 12' as options. The font name is ignored. If using
+ `standalone` the given font and font size are used, see below for a
+ detailed description.
+
+ If text is printed coloured is controlled by the TeX booleans \ifGPcolor
+ and \ifGPblacktext. Only if \ifGPcolor is true and \ifGPblacktext is
+ false, text is printed coloured. You may either change them in the
+ generated TeX file or provide them globally in your TeX file, for example
+ by using
+    \newif\ifGPblacktext
+    \GPblacktexttrue
+ in the preamble of your document. The local assignment is only done if no
+ global value is given.
+
+ When using the epslatex terminal give the name of the TeX file in the
+ `set output` command including the file extension (normally ".tex").
+ The eps filename is generated by replacing the extension by ".eps".
+
+ If using the `standalone` mode a complete LaTeX header is added to the
+ LaTeX file; and "-inc" is added to the filename of the eps file.
+ The `standalone` mode generates a TeX file that produces
+ output with the correct size when using dvips, pdfTeX, or VTeX.
+ The default, `input`, generates a file that has to be included into a
+ LaTeX document using the \input command.
+
+ If a font other than "" or "default" is given it is interpreted as
+ LaTeX font name.  It contains up to three parts, separated by a comma:
+ 'fontname,fontseries,fontshape'.  If the default fontshape or fontseries
+ are requested, they can be omitted.  Thus, the real syntax for the fontname
+ is '[fontname][,fontseries][,fontshape]'.  The naming convention for all
+ parts is given by the LaTeX font scheme.  The fontname is 3 to 4 characters
+ long and is built as follows: One character for the font vendor, two
+ characters for the name of the font, and optionally one additional
+ character for special fonts, e.g., 'j' for fonts with old-style numerals
+ or 'x' for expert fonts. The names of many fonts is described in
+           http://www.tug.org/fontname/fontname.pdf
+ For example, 'cmr' stands for Computer Modern Roman, 'ptm' for Times-Roman,
+ and 'phv' for Helvetica.  The font series denotes the thickness of the
+ glyphs, in most cases 'm' for normal ("medium") and 'bx' or 'b' for bold
+ fonts.  The font shape is 'n' for upright, 'it' for italics, 'sl' for
+ slanted, or 'sc' for small caps, in general.  Some fonts may provide
+ different font series or shapes.
+
+ Examples:
+
+ Use Times-Roman boldface (with the same shape as in the surrounding text):
+       set terminal epslatex 'ptm,bx'
+ Use Helvetica, boldface, italics:
+       set terminal epslatex 'phv,bx,it'
+ Continue to use the surrounding font in slanted shape:
+       set terminal epslatex ',,sl'
+ Use small capitals:
+       set terminal epslatex ',,sc'
+
+ By this method, only text fonts are changed. If you also want to change
+ the math fonts you have to use the "gnuplot.cfg" file or the `header`
+ option, described below.
+
+ In standalone mode, the font size is taken from the given font size in the
+ `set terminal` command. To be able to use a specified font size, a file
+ "size<size>.clo" has to reside in the LaTeX search path.  By default,
+ 10pt, 11pt, and 12pt are supported.  If the package "extsizes" is
+ installed, 8pt, 9pt, 14pt, 17pt, and 20pt are added.
+
+ The `header` option takes a string as argument.  This string is written
+ into the generated LaTeX file.  If using the `standalone` mode, it is 
+ written into the preamble, directly before the \begin{document} command.
+ In the `input` mode, it is placed directly after the \begingroup command
+ to ensure that all settings are local to the plot.
+
+ Examples:
+
+ Use T1 fontencoding, change the text and math font to Times-Roman as well
+ as the sans-serif font to Helvetica:
+     set terminal epslatex standalone header \
+     "\\usepackage[T1]{fontenc}\n\\usepackage{mathptmx}\n\\usepackage{helvet}"
+ Use a boldface font in the plot, not influencing the text outside the plot:
+     set terminal epslatex input header "\\bfseries"
+
+ If the file "gnuplot.cfg" is found by LaTeX it is input in the preamble
+ the LaTeX document, when using `standalone` mode.  It can be used for
+ further settings, e.g., changing the document font to Times-Roman,
+ Helvetica, and Courier, including math fonts (handled by "mathptmx.sty"):
+       \usepackage{mathptmx}
+       \usepackage[scaled=0.92]{helvet}
+       \usepackage{courier}
+ The file "gnuplot.cfg" is loaded before the header information given
+ by the `header` command.  Thus, you can use `header` to overwrite some of
+ settings performed using "gnuplot.cfg"
+
+?commands set terminal pslatex
+?set terminal pslatex
+?set term pslatex
+?terminal pslatex
+?term pslatex
+?pslatex
+?commands set terminal pstex
+?set terminal pstex
+?set term pstex
+?terminal pstex
+?term pstex
+?pstex
+ The `pslatex` driver generates output for further processing by LaTeX,
+ while the `pstex` driver generates output for further processing by
+ TeX. `pslatex` uses \specials understandable by dvips and xdvi. Figures
+ generated by `pstex` can be included in any plain-based format (including
+ LaTeX).
+
+ Syntax:
+       set terminal [pslatex | pstex] {default}
+       set terminal [pslatex | pstex]
+                               {rotate | norotate}
+                               {oldstyle | newstyle}
+                               {auxfile | noauxfile}
+                               {level1 | leveldefault}
+                               {color | colour | monochrome}
+                               {background <rgbcolor> | nobackground}
+                               {solid | dashed}
+                               {dashlength | dl <DL>}
+                               {linewidth | lw <LW>}
+                               {rounded | butt}
+                               {clip | noclip}
+                               {palfuncparam <samples>{,<maxdeviation>}}
+                               {size <XX>{unit},<YY>{unit}}
+                               {<font_size>}
+
+ If you see the error message
+       "Can't find PostScript prologue file ... "
+ Please see and follow the instructions in `postscript prologue`.
+
+ The option `color` enables color, while `monochrome` prefers black and white
+ drawing elements. Further, `monochrome` uses gray `palette` but it does not
+ change color of objects specified with an explicit `colorspec`.
+ `solid` draws all plots with solid lines, overriding any dashed patterns.
+ `dashlength` or `dl` scales the length of the dashed-line segments by <DL>,
+ which is a floating-point number greater than zero.
+ `linewidth` or `lw` scales all linewidths by <LW>.
+
+ By default the generated PostScript code uses language features that were
+ introduced in PostScript Level 2, notably filters and pattern-fill of
+ irregular objects such as filledcurves.  PostScript Level 2 features are
+ conditionally protected so that PostScript Level 1 interpreters do not issue
+ errors but, rather, display a message or a PostScript Level 1 approximation.
+ The `level1` option substitutes PostScript Level 1 approximations of these
+ features and uses no PostScript Level 2 code.  This may be required by some
+ old printers and old versions of Adobe Illustrator.  The flag `level1` can be
+ toggled later by editing a single line in the PostScript output file to force
+ PostScript Level 1 interpretation.  In the case of files containing level 2
+ code, the above features will not appear or will be replaced by a note when
+ this flag is set or when the interpreting program does not indicate that it
+ understands level 2 PostScript or higher.
+
+ `rounded` sets line caps and line joins to be rounded; `butt` is the
+ default, butt caps and mitered joins.
+
+ `clip` tells PostScript to clip all output to the bounding box;
+ `noclip` is the default.
+
+ `palfuncparam` controls how `set palette functions` are encoded as gradients
+ in the output. Analytic color component functions (set via
+ `set palette functions`) are encoded as linear interpolated gradients in the
+ postscript output:  The color component functions are sampled at <samples>
+ points and all points are removed from this gradient which can be removed
+ without changing the resulting colors by more than <maxdeviation>. For
+ almost every useful palette you may safely leave the defaults of
+ <samples>=2000 and <maxdeviation>=0.003 untouched.
+
+ The default size for postscript output is 10 inches x 7 inches. The default
+ for eps output is 5 x 3.5 inches.  The `size` option changes this to
+ whatever the user requests. By default the X and Y sizes are taken to be in
+ inches, but other units are possibly (currently only cm). The BoundingBox
+ of the plot is correctly adjusted to contain the resized image.
+ Screen coordinates always run from 0.0 to 1.0 along the full length of the
+ plot edges as specified by the `size` option.
+ NB: `this is a change from the previously recommended method of using the
+ set size command prior to setting the terminal type`.  The old method left
+ the BoundingBox unchanged and screen coordinates did not correspond to the
+ actual limits of the plot.
+
+ if `rotate` is specified, the y-axis label is rotated.
+ <font_size> is the size (in pts) of the desired font.
+
+ If `auxfile` is specified, it directs the driver to put the PostScript
+ commands into an auxiliary file instead of directly into the LaTeX file.
+ This is useful if your pictures are large enough that dvips cannot handle
+ them.  The name of the auxiliary PostScript file is derived from the name of
+ the TeX file given on the `set output` command; it is determined by replacing
+ the trailing `.tex` (actually just the final extent in the file name) with
+ `.ps` in the output file name, or, if the TeX file has no extension, `.ps`
+ is appended.  The `.ps` is included into the `.tex` file by a
+ \special{psfile=...} command.  Remember to close the `output file` before
+ next plot unless in `multiplot` mode.
+
+ Gnuplot versions prior to version 4.2 generated plots of the size
+ 5 x 3 inches using the ps(la)tex terminal while the current version generates
+ 5 x 3.5 inches to be consistent with the postscript eps terminal.  In
+ addition, the character width is now estimated to be 60% of the font size
+ while the old epslatex terminal used 50%. To reach the old format specify
+ the option `oldstyle`.
+
+ The pslatex driver offers a special way of controlling text positioning: 
+ (a) If any text string begins with '{', you also need to include a '}' at the
+ end of the text, and the whole text will be centered both horizontally
+ and vertically by LaTeX.  (b) If the text string begins with '[', you need
+ to continue it with: a position specification (up to two out of t,b,l,r),
+ ']{', the text itself, and finally, '}'. The text itself may be anything
+ LaTeX can typeset as an LR-box. \rule{}{}'s may help for best positioning.
+
+ The options not described here are identical to the `Postscript terminal`.
+ Look there if you want to know what they do.
+
+ Examples:
+       set term pslatex monochrome dashed rotate       # set to defaults
+ To write the PostScript commands into the file "foo.ps":
+       set term pslatex auxfile
+       set output "foo.tex"; plot ...; set output
+ About label positioning:
+ Use gnuplot defaults (mostly sensible, but sometimes not really best):
+        set title '\LaTeX\ -- $ \gamma $'
+ Force centering both horizontally and vertically:
+        set label '{\LaTeX\ -- $ \gamma $}' at 0,0
+ Specify own positioning (top here):
+        set xlabel '[t]{\LaTeX\ -- $ \gamma $}'
+ The other label -- account for long ticlabels:
+        set ylabel '[r]{\LaTeX\ -- $ \gamma $\rule{7mm}{0pt}}'
+
+ Linewidths and pointsizes may be changed with `set style line`.
+?commands set terminal postscript
+?set terminal postscript
+?set term postscript
+?terminal postscript
+?term postscript
+?postscript
+ Several options may be set in the `postscript` driver.
+
+ Syntax:
+       set terminal postscript {default}
+       set terminal postscript {landscape | portrait | eps}
+                               {enhanced | noenhanced}
+                               {defaultplex | simplex | duplex}
+                               {fontfile [add | delete] "<filename>"
+                                | nofontfiles} {{no}adobeglyphnames}
+                               {level1 | leveldefault}
+                               {color | colour | monochrome}
+                               {background <rgbcolor> | nobackground}
+                               {solid | dashed}
+                               {dashlength | dl <DL>}
+                               {linewidth | lw <LW>}
+                               {rounded | butt}
+                               {clip | noclip}
+                               {palfuncparam <samples>{,<maxdeviation>}}
+                               {size <XX>{unit},<YY>{unit}}
+                               {blacktext | colortext | colourtext}
+                               {{font} "fontname{,fontsize}" {<fontsize>}}
+                               {fontscale <scale>}
+ If you see the error message
+       "Can't find PostScript prologue file ... "
+ Please see and follow the instructions in `postscript prologue`.
+
+
+ `landscape` and `portrait` choose the plot orientation.
+ `eps` mode generates EPS (Encapsulated PostScript) output, which is just
+ regular PostScript with some additional lines that allow the file to be
+ imported into a variety of other applications.  (The added lines are
+ PostScript comment lines, so the file may still be printed by itself.)  To
+ get EPS output, use the `eps` mode and make only one plot per file.  In `eps`
+ mode the whole plot, including the fonts, is reduced to half of the default
+ size.
+
+ `enhanced` enables enhanced text mode features (subscripts,
+ superscripts and mixed fonts). See `enhanced` for more information.
+ `blacktext` forces all text to be written in black even in color mode;
+
+ Duplexing in PostScript is the ability of the printer to print on both
+ sides of the same sheet of paper.  With `defaultplex`, the default setting
+ of the printer is used; with `simplex` only one side is printed; `duplex`
+ prints on both sides (ignored if your printer can't do it).
+
+ `"<fontname>"` is the name of a valid PostScript font; and `<fontsize>` is
+ the size of the font in PostScript points.
+ In addition to the standard postscript fonts, an oblique version of the
+ Symbol font, useful for mathematics, is defined. It is called
+ "Symbol-Oblique".
+
+ `default` sets all options to their defaults: `landscape`, `monochrome`,
+ `dashed`, `dl 1.0`, `lw 1.0`, `defaultplex`, `noenhanced`, "Helvetica" and
+ 14pt.  Default size of a PostScript plot is 10 inches wide and 7 inches high.
+ The option `color` enables color, while `monochrome` prefers black and white
+ drawing elements. Further, `monochrome` uses gray `palette` but it does not
+ change color of objects specified with an explicit `colorspec`.
+ `solid` draws all plots with solid lines, overriding any dashed patterns.
+ `dashlength` or `dl` scales the length of the dashed-line segments by <DL>,
+ which is a floating-point number greater than zero.
+ `linewidth` or `lw` scales all linewidths by <LW>.
+
+ By default the generated PostScript code uses language features that were
+ introduced in PostScript Level 2, notably filters and pattern-fill of
+ irregular objects such as filledcurves.  PostScript Level 2 features are
+ conditionally protected so that PostScript Level 1 interpreters do not issue
+ errors but, rather, display a message or a PostScript Level 1 approximation.
+ The `level1` option substitutes PostScript Level 1 approximations of these
+ features and uses no PostScript Level 2 code.  This may be required by some
+ old printers and old versions of Adobe Illustrator.  The flag `level1` can be
+ toggled later by editing a single line in the PostScript output file to force
+ PostScript Level 1 interpretation.  In the case of files containing level 2
+ code, the above features will not appear or will be replaced by a note when
+ this flag is set or when the interpreting program does not indicate that it
+ understands level 2 PostScript or higher.
+
+ `rounded` sets line caps and line joins to be rounded; `butt` is the
+ default, butt caps and mitered joins.
+
+ `clip` tells PostScript to clip all output to the bounding box;
+ `noclip` is the default.
+
+ `palfuncparam` controls how `set palette functions` are encoded as gradients
+ in the output. Analytic color component functions (set via
+ `set palette functions`) are encoded as linear interpolated gradients in the
+ postscript output:  The color component functions are sampled at <samples>
+ points and all points are removed from this gradient which can be removed
+ without changing the resulting colors by more than <maxdeviation>. For
+ almost every useful palette you may safely leave the defaults of
+ <samples>=2000 and <maxdeviation>=0.003 untouched.
+
+ The default size for postscript output is 10 inches x 7 inches. The default
+ for eps output is 5 x 3.5 inches.  The `size` option changes this to
+ whatever the user requests. By default the X and Y sizes are taken to be in
+ inches, but other units are possibly (currently only cm). The BoundingBox
+ of the plot is correctly adjusted to contain the resized image.
+ Screen coordinates always run from 0.0 to 1.0 along the full length of the
+ plot edges as specified by the `size` option.
+ NB: `this is a change from the previously recommended method of using the
+ set size command prior to setting the terminal type`.  The old method left
+ the BoundingBox unchanged and screen coordinates did not correspond to the
+ actual limits of the plot.
+
+ Fonts listed by `fontfile` or `fontfile add` encapsulate the font
+ definitions of the listed font from a postscript Type 1 or TrueType font
+ file directly into the gnuplot output postscript file.  Thus, the enclosed
+ font can be used in labels, titles, etc.  See the section
+ `postscript fontfile` for more details.  With `fontfile delete`, a fontfile
+ is deleted from the list of embedded files.  `nofontfiles` cleans the list
+ of embedded fonts.
+
+ Examples:
+       set terminal postscript default       # old postscript
+       set terminal postscript enhanced      # old enhpost
+       set terminal postscript landscape 22  # old psbig
+       set terminal postscript eps 14        # old epsf1
+       set terminal postscript eps 22        # old epsf2
+       set size 0.7,1.4; set term post portrait color "Times-Roman" 14
+       set term post "VAGRoundedBT_Regular" 14 fontfile "bvrr8a.pfa"
+
+ Linewidths and pointsizes may be changed with `set style line`.
+
+ The `postscript` driver supports about 70 distinct pointtypes, selectable
+ through the `pointtype` option on `plot` and `set style line`.
+
+ Several possibly useful files about `gnuplot`'s PostScript are included
+ in the /docs/psdoc subdirectory of the `gnuplot` distribution and at the
+ distribution sites.  These are "ps_symbols.gpi" (a `gnuplot` command file
+ that, when executed, creates the file "ps_symbols.ps" which shows all the
+ symbols available through the `postscript` terminal), "ps_guide.ps" (a
+ PostScript file that contains a summary of the enhanced syntax and a page
+ showing what the octal codes produce with text and symbol fonts),
+ "ps_file.doc" (a text file that contains a discussion of the organization
+ of a PostScript file written by `gnuplot`), and "ps_fontfile_doc.tex"
+ (a LaTeX file which contains a short documentation concerning the
+ encapsulation of LaTeX fonts with a glyph table of the math fonts).
+
+ A PostScript file is editable, so once `gnuplot` has created one, you are
+ free to modify it to your heart's desire.  See the `editing postscript`
+ section for some hints.
+?commands set terminal postscript editing
+?set terminal postscript editing
+?set term postscript editing
+?terminal postscript editing
+?term postscript editing
+?editing_postscript
+?editing postscript
+ The PostScript language is a very complex language---far too complex to
+ describe in any detail in this document.  Nevertheless there are some things
+ in a PostScript file written by `gnuplot` that can be changed without risk of
+ introducing fatal errors into the file.
+
+ For example, the PostScript statement "/Color true def" (written into the
+ file in response to the command `set terminal postscript color`), may be
+ altered in an obvious way to generate a black-and-white version of a plot.
+ Similarly line colors, text colors, line weights and symbol sizes can also be
+ altered in straight-forward ways.  Text (titles and labels) can be edited to
+ correct misspellings or to change fonts.  Anything can be repositioned, and
+ of course anything can be added or deleted, but modifications such as these
+ may require deeper knowledge of the PostScript language.
+
+ The organization of a PostScript file written by `gnuplot` is discussed in
+ the text file "ps_file.doc" in the docs/ps subdirectory of the gnuplot
+ source distribution.
+?commands set terminal postscript fontfile
+?set terminal postscript fontfile
+?set term postscript fontfile
+?terminal postscript fontfile
+?term postscript fontfile
+?postscript fontfile
+?fontfile
+ The `fontfile` or `fontfile add` option takes one file name as argument
+ and encapsulates this file into the postscript output in order to make
+ this font available for text elements (labels, tic marks, titles, etc.).
+ The `fontfile delete` option also takes one file name as argument. It
+ deletes this file name from the list of encapsulated files.
+
+ The postscript terminal understands some
+ font file formats: Type 1 fonts in ASCII file format (extension ".pfa"),
+ Type 1 fonts in binary file format (extension ".pfb"), and TrueType
+ fonts (extension ".ttf"). Pfa files are understood directly, pfb and ttf
+ files are converted on the fly if appropriate conversion tools are
+ installed (see below). You have to specify the full filename including the
+ extension. Each `fontfile` option takes exact one font file name. This
+ option can be used multiple times in order to include more than one font
+ file.
+
+ The font file is searched in the working directory and in all directories
+ listed in the fontpath which is determined by `set fontpath`.
+ In addition, the fontpath can be set using the environment variable
+ GNUPLOT_FONTPATH. If this is not set a system dependent default search
+ list is used. See `set fontpath` for more details.
+
+ For using the encapsulated font file you have to specify the font name
+ (which normally is not the same as the file name). When embedding a
+ font file by using the `fontfile` option in interactive mode, the 
+ font name is printed on the screen. E.g.
+    Font file 'p052004l.pfb' contains the font 'URWPalladioL-Bold'. Location:
+    /usr/lib/X11/fonts/URW/p052004l.pfb
+
+ When using pfa or pfb fonts, you can also find it out by looking into the
+ font file. There is a line similar to "/FontName /URWPalladioL-Bold def".
+ The middle string without the slash is the fontname, here
+ "URWPalladioL-Bold".
+ For TrueType fonts, this is not so easy since the font name is stored in a
+ binary format. In addition, they often have spaces in the font names which
+ is not supported by Type 1 fonts (in which a TrueType is converted on the
+ fly). The font names are changed in order to eliminate the spaces in the
+ fontnames. The easiest way to find out which font name is generated for
+ use with gnuplot, start gnuplot in interactive mode and type in
+ "set terminal postscript fontfile '<filename.ttf>'".
+
+ For converting font files (either ttf or pfb) to pfa format, the conversion
+ tool has to read the font from a file and write it to standard output. If
+ the output cannot be written to standard output, on-the-fly conversion is
+ not possible.
+
+ For pfb files "pfbtops" is a tool which can do this. If this program
+ is installed on your system the on the fly conversion should work.
+ Just try to encapsulate a pfb file. If the compiled in program call does
+ not work correctly you can specify how this program is called by
+ defining the environment variable GNUPLOT_PFBTOPFA e.g. to
+ "pfbtops %s". The `%s` will be replaced by the font file name and thus
+ has to exist in the string.
+
+ If you don't want to do the conversion on the fly but get a pfa file of
+ the font you can use the tool "pfb2pfa" which is written in simple c
+ and should compile with any c compiler.
+ It is available from many ftp servers, e.g.
+           ftp://ftp.dante.de/tex-archive/fonts/utilities/ps2mf/
+ In fact, "pfbtopfa" and "pfb2ps" do the same job. "pfbtopfa" puts
+ the resulting pfa code into a file, whereas "pfbtops" writes it to
+ standard output.
+
+ TrueType fonts are converted into Type 1 pfa format, e.g.
+ by using the tool "ttf2pt1" which is available from
+           http://ttf2pt1.sourceforge.net/
+ If the builtin conversion does not
+ work, the conversion command can be changed by the environment variable
+ GNUPLOT_TTFTOPFA. For usage with ttf2pt1 it may be set to
+ "ttf2pt1 -a -e -W 0 %s - ". Here again, `%s` stands for the
+ file name.
+
+ For special purposes you also can use a pipe (if available for your
+ operating system). Therefore you start the file name definition with 
+ the character "<" and append a program call. This program has 
+ to write pfa data to standard output. Thus, a pfa file may be accessed
+ by `set fontfile "< cat garamond.pfa"`.
+
+ For example, including Type 1 font files can be used for including the
+ postscript output in LaTeX documents. The "european computer modern"
+ font (which is a variant of the "computer modern" font) is available
+ in pfb format from any CTAN server, e.g.
+           ftp://ftp.dante.de/tex-archive/fonts/ps-type1/cm-super/
+ For example, the file "sfrm1000.pfb" contains the normal upright fonts
+ with serifs in the design size 10pt (font name "SFRM1000").
+ The computer modern fonts, which are still necessary for mathematics,
+ are available from
+           ftp://ftp.dante.de/tex-archive/fonts/cm/ps-type1/bluesky
+ With these you can use any character available in TeX. However, the
+ computer modern fonts have a strange encoding. (This is why you should not
+ use cmr10.pfb for text, but sfrm1000.pfb instead.)
+ The usage of TeX fonts is shown in one of the demos.
+ The file "ps_fontfile_doc.tex" in the /docs/psdoc subdirectory of the
+ `gnuplot` source distribution contains a table with glyphs of the TeX
+ mathfonts.
+
+ If the font "CMEX10" is embedded (file "cmex10.pfb") gnuplot defines
+ the additional font "CMEX10-Baseline". It is shifted vertically in order
+ to fit better to the other glyphs (CMEX10 has its baseline at the top of
+ the symbols).
+?commands set terminal postscript prologue
+?set terminal postscript prologue
+?terminal postscript prologue
+?postscript prologue
+?prologue
+ Each PostScript output file includes a %%Prolog section and possibly some
+ additional user-defined sections containing, for example, character encodings.
+ These sections are copied from a set of PostScript prologue files that are
+ either compiled into the gnuplot executable or stored elsewhere on your
+ computer. A default directory where these files live is set at the time
+ gnuplot is built. However, you can override this default either by using the
+ gnuplot command `set psdir` or by defining an environment variable
+ GNUPLOT_PS_DIR. See `set psdir`.
+?commands set terminal postscript adobeglyphnames
+?set terminal postscript adobeglyphnames
+?terminal postscript adobeglyphnames
+?postscript adobeglyphnames
+?adobeglyphnames
+ This setting is only relevant to PostScript output with UTF-8 encoding.
+ It controls the names used to describe characters with Unicode entry points
+ higher than 0x00FF.  That is, all characters outside of the Latin1 set.
+ In general unicode characters do not have a unique name; they have only a
+ unicode identification code.  However, Adobe have a recommended scheme for
+ assigning names to certain ranges of characters (extended Latin, Greek, etc).
+ Some fonts use this scheme, others do not.  By default, gnuplot will use
+ the Adobe glyph names.  E.g. the lower case Greek letter alpha will be called
+ /alpha.  If you specific `noadobeglyphnames` then instead gnuplot will use
+ /uni03B1 to describe this character.  If you get this setting wrong, the
+ character may not be found even if it is present in the font.
+ It is probably always correct to use the default for Adobe fonts, but for
+ other fonts you may have to try both settings.  See also `fontfile`.
+
+
+?commands set terminal qms
+?set terminal qms
+?set term qms
+?terminal qms
+?term qms
+?qms
+ The `qms` terminal driver supports the QMS/QUIC Laser printer, the Talaris
+ 1200 and others.  It has no options.
+?commands set terminal svg
+?set terminal svg
+?set term svg
+?terminal svg
+?term svg
+?svg
+ This terminal produces files in the W3C Scalable Vector Graphics format.
+
+ Syntax:
+       set terminal svg {size <x>,<y> {|fixed|dynamic}}
+                        {{no}enhanced}
+                        {fname "<font>"} {fsize <fontsize>}
+                        {mouse} {standalone | jsdir <dirname>}
+                        {name <plotname>}
+                        {font "<fontname>{,<fontsize>}"}
+                        {fontfile <filename>}
+                        {rounded|butt} {solid|dashed} {linewidth <lw>}
+                        {background <rgb_color>}
+
+ where <x> and <y> are the size of the SVG plot to generate,
+ `dynamic` allows a svg-viewer to resize plot, whereas the default
+ setting, `fixed`, will request an absolute size.
+
+ `linewidth <w>` increases the width of all lines used in the figure
+ by a factor of <w>.
+
+ <font> is the name of the default font to use (default Arial) and
+ <fontsize> is the font size (in points, default 12). SVG viewing
+ programs may substitute other fonts when the file is displayed.
+
+ The svg terminal supports an enhanced text mode, which allows font
+ and other formatting commands to be embedded in labels and other text
+ strings. The enhanced text mode syntax is shared with other gnuplot
+ terminal types. See `enhanced` for more details.
+
+ The `mouse` option tells gnuplot to add support for mouse tracking and for
+ toggling individual plots on/off by clicking on the corresponding key entry.
+ By default this is done by including a link that points to a script in a
+ local directory, usually /usr/local/share/gnuplot/<version>/js.
+ You can change this by using the `jsdir` option to specify either a
+ different local directory or a general URL. The latter is usually
+ appropriate if you are embedding the svg into a web page.
+ Alternatively, the `standalone` option embeds the mousing code in the
+ svg document itself rather than linking to an external resource.
+
+ When an SVG file will be used in conjunction with external files,
+ e.g. if it embeds a PNG image or is referenced by javascript code
+ in a web page or embedding document, then a unique name is required
+ to avoid potential conflicting references to other SVG plots.
+ Use the `name` option to ensure uniqueness.
+
+ SVG allows you to embed fonts directly into an SVG document, or to
+ provide a hypertext link to the desired font. The `fontfile` option
+ specifies a local file which is copied into the <defs> section of the
+ resulting SVG output file.  This file may either itself contain a font,
+ or may contain the records necessary to create a hypertext reference to
+ the desired font. Gnuplot will look for the requested file using the
+ directory list in the GNUPLOT_FONTPATH environmental variable.
+ NB: You must embed an svg font, not a TrueType or PostScript font.
+?commands set terminal tgif
+?set terminal tgif
+?set term tgif
+?terminal tgif
+?term tgif
+?tgif
+ Tgif is an X11-based drawing tool---it has nothing to do with GIF.
+
+ The `tgif` driver supports different pointsizes (with `set pointsize`),
+ different label fonts and font sizes (e.g. `set label "Hallo" at x,y font
+ "Helvetica,34"`) and multiple graphs on the page.  The proportions of the
+ axes are not changed.
+
+ Syntax:
+       set terminal tgif {portrait | landscape | default} {<[x,y]>}
+                         {monochrome | color}
+                         {{linewidth | lw} <LW>}
+                         {solid | dashed}
+                         {font "<fontname>{,<fontsize>}"}
+
+ where <[x,y]> specifies the number of graphs in the x and y directions on the
+ page, `color` enables color, `linewidth` scales all linewidths by <LW>,
+ "<fontname>" is the name of a valid PostScript font, and <fontsize>
+ specifies the size of the PostScript font.
+ `defaults` sets all options to their defaults: `portrait`, `[1,1]`, `color`,
+ `linwidth 1.0`, `dashed`, `"Helvetica,18"`.
+
+ The `solid` option is usually prefered if lines are colored, as they often
+ are in the editor.  Hardcopy will be black-and-white, so `dashed` should be
+ chosen for that.
+
+ Multiplot is implemented in two different ways.
+
+ The first multiplot implementation is the standard gnuplot multiplot feature:
+
+       set terminal tgif
+       set output "file.obj"
+       set multiplot
+       set origin x01,y01
+       set size  xs,ys
+       plot ...
+            ...
+       set origin x02,y02
+       plot ...
+       unset multiplot
+
+ See `set multiplot` for further information.
+
+ The second version is the [x,y] option for the driver itself.  The advantage
+ of this implementation is that everything is scaled and placed automatically
+ without the need for setting origins and sizes; the graphs keep their natural
+ x/y proportions of 3/2 (or whatever is fixed by `set size`).
+
+ If both multiplot methods are selected, the standard method is chosen and a
+ warning message is given.
+
+ Examples of single plots (or standard multiplot):
+       set terminal tgif                  # defaults
+       set terminal tgif "Times-Roman,24"
+       set terminal tgif landscape
+       set terminal tgif landscape solid
+
+ Examples using the built-in multiplot mechanism:
+       set terminal tgif portrait [2,4]  # portrait; 2 plots in the x-
+                                         # and 4 in the y-direction
+       set terminal tgif [1,2]           # portrait; 1 plot in the x-
+                                         # and 2 in the y-direction
+       set terminal tgif landscape [3,3] # landscape; 3 plots in both
+                                         # directions
+?commands set terminal tkcanvas
+?set terminal tkcanvas
+?set term tkcanvas
+?terminal tkcanvas
+?term tkcanvas
+?tkcanvas
+ This terminal driver generates Tk canvas widget commands based on Tcl/Tk
+ (default) or Perl.  To use it, rebuild `gnuplot` (after uncommenting or
+ inserting the appropriate line in "term.h"), then
+
+  gnuplot> set term tkcanvas {perltk} {interactive}
+  gnuplot> set output 'plot.file'
+
+ After invoking "wish", execute the following sequence of Tcl/Tk commands:
+
+  % source plot.file
+  % canvas .c
+  % pack .c
+  % gnuplot .c
+
+ Or, for Perl/Tk use a program like this:
+
+  use Tk;
+  my $top = MainWindow->new;
+  my $c = $top->Canvas->pack;
+  my $gnuplot = do "plot.pl";
+  $gnuplot->($c);
+  MainLoop;
+
+ The code generated by `gnuplot` creates a procedure called "gnuplot"
+ that takes the name of a canvas as its argument.  When the procedure is
+ called, it clears the canvas, finds the size of the canvas and draws the plot
+ in it, scaled to fit.
+
+ For 2-dimensional plotting (`plot`) two additional procedures are defined:
+ "gnuplot_plotarea" will return a list containing the borders of the plotting
+ area "xleft, xright, ytop, ybot" in canvas screen coordinates, while the ranges
+ of the two axes "x1min, x1max, y1min, y1max, x2min, x2max, y2min, y2max" in plot
+ coordinates can be obtained calling "gnuplot_axisranges".
+ If the "interactive" option is specified, mouse clicking on a line segment
+ will print the coordinates of its midpoint to stdout. Advanced actions
+ can happen instead if the user supplies a procedure named
+ "user_gnuplot_coordinates", which takes the following arguments:
+ "win id x1s y1s x2s y2s x1e y1e x2e y2e x1m y1m x2m y2m",
+ the name of the canvas and the id of the line segment followed by the
+ coordinates of its start and end point in the two possible axis ranges; the
+ coordinates of the midpoint are only filled for logarithmic axes.
+
+ The current version of `tkcanvas` supports neither `multiplot` nor `replot`.
+?commands set terminal emtex
+?set terminal emtex
+?set term emtex
+?terminal emtex
+?term emtex
+?emtex
+?commands set terminal latex
+?set terminal latex
+?set term latex
+?terminal latex
+?term latex
+?latex
+ Syntax:
+       set terminal {latex | emtex} {default | {courier|roman} {<fontsize>}}
+                    {size <XX>{unit}, <YY>{unit}} {rotate | norotate}
+
+ By default the plot will inherit font settings from the embedding document.
+ You have the option of forcing either Courier (cmtt) or Roman (cmr) fonts
+ instead. In this case you may also specify a fontsize.
+ Unless your driver is capable of building fonts at any size (e.g. dvips),
+ stick to the standard 10, 11 and 12 point sizes.
+
+ METAFONT users beware: METAFONT does not like odd sizes.
+
+ All drivers for LaTeX offer a special way of controlling text positioning:
+ If any text string begins with '{', you also need to include a '}' at the
+ end of the text, and the whole text will be centered both horizontally and
+ vertically.  If the text string begins with '[', you need to follow this with
+ a position specification (up to two out of t,b,l,r), ']{', the text itself,
+ and finally '}'.  The text itself may be anything LaTeX can typeset as an
+ LR-box.  '\rule{}{}'s may help for best positioning.
+
+ Points, among other things, are drawn using the LaTeX commands "\Diamond" and
+ "\Box".  These commands no longer belong to the LaTeX2e core; they are included
+ in the latexsym package, which is part of the base distribution and thus part
+ of any LaTeX implementation.  Please do not forget to use this package.
+ Other point types use symbols from the amssymb package.
+
+ The default size for the plot is 5 inches by 3 inches. The `size` option
+ changes this to whatever the user requests. By default the X and Y sizes
+ are taken to be in inches, but other units are possible (currently only cm).
+
+ If 'rotate' is specified, rotated text, especially a rotated y-axis label,
+ is possible (the packages graphics or graphicx are needed). The 'stacked'
+ y-axis label mechanism is then deactivated.
+
+ Examples:
+ About label positioning:
+ Use gnuplot defaults (mostly sensible, but sometimes not really best):
+        set title '\LaTeX\ -- $ \gamma $'
+ Force centering both horizontally and vertically:
+        set label '{\LaTeX\ -- $ \gamma $}' at 0,0
+ Specify own positioning (top here):
+        set xlabel '[t]{\LaTeX\ -- $ \gamma $}'
+ The other label -- account for long ticlabels:
+        set ylabel '[r]{\LaTeX\ -- $ \gamma $\rule{7mm}{0pt}}'
+?commands set terminal eepic
+?set terminal eepic
+?set term eepic
+?terminal eepic
+?term eepic
+?eepic
+ The `eepic` terminal driver supports the extended LaTeX picture environment.
+ It is an alternative to the `latex` driver.
+
+ The output of this terminal is intended for use with the "eepic.sty" macro
+ package for LaTeX.  To use it, you need "eepic.sty", "epic.sty" and a
+ printer driver that supports the "tpic" \specials.  If your printer driver
+ doesn't support those \specials, "eepicemu.sty" will enable you to use some
+ of them.
+ dvips and dvipdfm do support the "tpic" \specials.
+
+ Syntax:
+    set terminal eepic {default} {color|dashed} {rotate} {size XX,YY}
+                       {small|tiny|<fontsize>}
+
+ Options:
+ You can give options in any order you wish.
+ 'color' causes gnuplot to produce \color{...} commands so that the graphs are
+ colored. Using this option, you must include \usepackage{color} in the preambel
+ of your latex document.
+ 'dashed' will allow dashed line types; without this option, only solid lines
+ with varying thickness will be used.
+ 'dashed' and 'color' are mutually exclusive; if 'color' is specified, then
+ 'dashed' will be ignored.
+ 'rotate' will enable true rotated text (by 90 degrees). Otherwise, rotated text
+ will be typeset with letters stacked above each other. If you use this option
+ you must include \usepackage{graphicx} in the preamble.
+ 'small' will use \scriptsize symbols as point markers (Probably does not work
+ with TeX, only LaTeX2e). Default is to use the default math size.
+ 'tiny' uses \scriptscriptstyle symbols.
+ 'default' resets all options to their defaults = no color, no dashed lines,
+ pseudo-rotated (stacked) text, large point symbols.
+ <fontsize> is a number which specifies the font size inside the picture
+ environment; the unit is pt (points), i.e., 10 pt equals approx. 3.5 mm.
+ If fontsize is not specified, then all text inside the picture will be set
+ in \footnotesize.
+
+ Notes:
+ Remember to escape the # character (or other chars meaningful to (La-)TeX)
+ by \\ (2 backslashes).
+ It seems that dashed lines become solid lines when the vertices of a plot
+ are too close. (I do not know if that is a general problem with the tpic
+ specials, or if it is caused by a bug in eepic.sty or dvips/dvipdfm.)
+ The default size of an eepic plot is 5x3 inches. You can change this using 
+ the `size` terminal option.
+ Points, among other things, are drawn using the LaTeX commands "\Diamond",
+ "\Box", etc.  These commands no longer belong to the LaTeX2e core; they are
+ included in the latexsym package, which is part of the base distribution and
+ thus part of any LaTeX implementation. Please do not forget to use this package.
+ Instead of latexsym, you can also include the amssymb package.
+ All drivers for LaTeX offer a special way of controlling text positioning:
+ If any text string begins with '{', you also need to include a '}' at the
+ end of the text, and the whole text will be centered both horizontally and
+ vertically.  If the text string begins with '[', you need to follow this with
+ a position specification (up to two out of t,b,l,r), ']{', the text itself,
+ and finally '}'.  The text itself may be anything LaTeX can typeset as an
+ LR-box.  '\rule{}{}'s may help for best positioning.
+
+ Examples:
+ set term eepic
+   output graphs as eepic macros inside a picture environment;
+   \input the resulting file in your LaTeX document.
+ set term eepic color tiny rotate 8
+   eepic macros with \color macros, \scripscriptsize point markers,
+   true rotated text, and all text set with 8pt.
+
+ About label positioning:
+ Use gnuplot defaults (mostly sensible, but sometimes not really best):
+        set title '\LaTeX\ -- $ \gamma $'
+ Force centering both horizontally and vertically:
+        set label '{\LaTeX\ -- $ \gamma $}' at 0,0
+ Specify own positioning (top here):
+        set xlabel '[t]{\LaTeX\ -- $ \gamma $}'
+ The other label -- account for long ticlabels:
+        set ylabel '[r]{\LaTeX\ -- $ \gamma $\rule{7mm}{0pt}}'
+?commands set terminal tpic
+?set terminal tpic
+?set term tpic
+?terminal tpic
+?term tpic
+?tpic
+ The `tpic` terminal driver supports the LaTeX picture environment with tpic
+ \specials.  It is an alternative to the `latex` and `eepic` terminal drivers.
+ Options are the point size, line width, and dot-dash interval.
+
+ Syntax:
+       set terminal tpic <pointsize> <linewidth> <interval>
+
+ where `pointsize` and `linewidth` are integers in milli-inches and `interval`
+ is a float in inches.  If a non-positive value is specified, the default is
+ chosen: pointsize = 40, linewidth = 6, interval = 0.1.
+
+ All drivers for LaTeX offer a special way of controlling text positioning:
+ If any text string begins with '{', you also need to include a '}' at the
+ end of the text, and the whole text will be centered both horizontally
+ and vertically by LaTeX. --- If the text string begins with '[', you need
+ to continue it with: a position specification (up to two out of t,b,l,r),
+ ']{', the text itself, and finally, '}'. The text itself may be anything
+ LaTeX can typeset as an LR-box. \rule{}{}'s may help for best positioning.
+
+ Examples:
+ About label positioning:
+ Use gnuplot defaults (mostly sensible, but sometimes not really best):
+        set title '\LaTeX\ -- $ \gamma $'
+ Force centering both horizontally and vertically:
+        set label '{\LaTeX\ -- $ \gamma $}' at 0,0
+ Specify own positioning (top here):
+        set xlabel '[t]{\LaTeX\ -- $ \gamma $}'
+ The other label -- account for long ticlabels:
+        set ylabel '[r]{\LaTeX\ -- $ \gamma $\rule{7mm}{0pt}}'
+?commands set terminal pstricks
+?set terminal pstricks
+?set term pstricks
+?terminal pstricks
+?term pstricks
+?pstricks
+ The `pstricks` driver is intended for use with the "pstricks.sty" macro
+ package for LaTeX.  It is an alternative to the `eepic` and `latex` drivers.
+ You need "pstricks.sty", and, of course, a printer that understands
+ PostScript, or a converter such as Ghostscript.
+
+ PSTricks is available via anonymous ftp from the /pub directory at
+ Princeton.edu.  This driver definitely does not come close to using the full
+ capability of the PSTricks package.
+
+ Syntax:
+       set terminal pstricks {hacktext | nohacktext} {unit | nounit}
+
+ The first option invokes an ugly hack that gives nicer numbers; the second
+ has to do with plot scaling.  The defaults are `hacktext` and `nounit`.
+?commands set terminal texdraw
+?set terminal texdraw
+?set term texdraw
+?terminal texdraw
+?term texdraw
+?texdraw
+ The `texdraw` terminal driver supports the LaTeX texdraw environment.  It is
+ intended for use with "texdraw.sty" and "texdraw.tex" in the texdraw package.
+
+ Points, among other things, are drawn using the LaTeX commands "\Diamond" and
+ "\Box".  These commands no longer belong to the LaTeX2e core; they are included
+ in the latexsym package, which is part of the base distribution and thus part
+ of any LaTeX implementation.  Please do not forget to use this package.
+
+ It has no options.
+?commands set terminal mf
+?set terminal mf
+?set term mf
+?terminal mf
+?term mf
+?mf
+?metafont
+ The `mf` terminal driver creates an input file to the METAFONT program.  Thus a
+ figure may be used in the TeX document in the same way as is a character.
+
+ To use a picture in a document, the METAFONT program must be run with the
+ output file from `gnuplot` as input.  Thus, the user needs a basic knowledge
+ of the font creating process and the procedure for including a new font in a
+ document.  However, if the METAFONT program is set up properly at the local
+ site, an unexperienced user could perform the operation without much trouble.
+
+ The text support is based on a METAFONT character set.  Currently the
+ Computer Modern Roman font set is input, but the user is in principal free to
+ choose whatever fonts he or she needs.  The METAFONT source files for the
+ chosen font must be available.  Each character is stored in a separate
+ picture variable in METAFONT.  These variables may be manipulated (rotated,
+ scaled etc.) when characters are needed.  The drawback is the interpretation
+ time in the METAFONT program.  On some machines (i.e. PC) the limited amount
+ of memory available may also cause problems if too many pictures are stored.
+
+ The `mf` terminal has no options.
+?commands set terminal mf detailed
+?set terminal mf detailed
+?set term mf detailed
+?mf detailed
+?metafont detailed
+
+ - Set your terminal to METAFONT:
+   set terminal mf
+ - Select an output-file, e.g.:
+   set output "myfigures.mf"
+ - Create your pictures. Each picture will generate a separate character. Its
+ default size will be 5*3 inches. You can change the size by saying `set size
+ 0.5,0.5` or whatever fraction of the default size you want to have.
+
+ - Quit `gnuplot`.
+
+ - Generate a TFM and GF file by running METAFONT on the output of `gnuplot`.
+ Since the picture is quite large (5*3 in), you will have to use a version of
+ METAFONT that has a value of at least 150000 for memmax.  On Unix systems
+ these are conventionally installed under the name bigmf.  For the following
+ assume that the command virmf stands for a big version of METAFONT.  For
+ example:
+
+ - Invoke METAFONT:
+     virmf '&plain'
+ - Select the output device: At the METAFONT prompt ('*') type:
+     \mode:=CanonCX;     % or whatever printer you use
+ - Optionally select a magnification:
+     mag:=1;             % or whatever you wish
+ - Input the `gnuplot`-file:
+     input myfigures.mf
+ On a typical Unix machine there will usually be a script called "mf" that
+ executes virmf '&plain', so you probably can substitute mf for virmf &plain.
+ This will generate two files: mfput.tfm and mfput.$$$gf (where $$$ indicates
+ the resolution of your device).  The above can be conveniently achieved by
+ typing everything on the command line, e.g.:
+ virmf '&plain' '\mode:=CanonCX; mag:=1; input myfigures.mf'
+ In this case the output files will be named myfigures.tfm and
+ myfigures.300gf.
+
+ - Generate a PK file from the GF file using gftopk:
+   gftopk myfigures.300gf myfigures.300pk
+ The name of the output file for gftopk depends on the DVI driver you use.
+ Ask your local TeX administrator about the naming conventions.  Next, either
+ install the TFM and PK files in the appropriate directories, or set your
+ environment variables properly.  Usually this involves setting TEXFONTS to
+ include the current directory and doing the same thing for the environment
+ variable that your DVI driver uses (no standard name here...).  This step is
+ necessary so that TeX will find the font metric file and your DVI driver will
+ find the PK file.
+
+ - To include your pictures in your document you have to tell TeX the font:
+   \font\gnufigs=myfigures
+ Each picture you made is stored in a single character.  The first picture is
+ character 0, the second is character 1, and so on...  After doing the above
+ step, you can use the pictures just like any other characters.  Therefore, to
+ place pictures 1 and 2 centered in your document, all you have to do is:
+   \centerline{\gnufigs\char0}
+   \centerline{\gnufigs\char1}
+ in plain TeX.  For LaTeX you can, of course, use the picture environment and
+ place the picture wherever you wish by using the \makebox and \put macros.
+
+ This conversion saves you a lot of time once you have generated the font;
+ TeX handles the pictures as characters and uses minimal time to place them,
+ and the documents you make change more often than the pictures do.  It also
+ saves a lot of TeX memory.  One last advantage of using the METAFONT driver
+ is that the DVI file really remains device independent, because no \special
+ commands are used as in the eepic and tpic drivers.
+?commands set terminal mpost
+?set terminal mp
+?set term mp
+?terminal mp
+?term mp
+?mp
+?metapost
+
+ The `mp` driver produces output intended to be input to the Metapost program.
+ Running Metapost on the file creates EPS files containing the plots. By
+ default, Metapost passes all text through TeX.  This has the advantage of
+ allowing essentially  any TeX symbols in titles and labels.
+
+ Syntax:
+    set term mp {color | colour | monochrome}
+                {solid | dashed}
+                {notex | tex | latex}
+                {magnification <magsize>}
+                {psnfss | psnfss-version7 | nopsnfss}
+                {prologues <value>}
+                {a4paper}
+                {amstex}
+                {"<fontname> {,<fontsize>}"} 
+
+ The option `color` causes lines to be drawn in color (on a printer or display
+ that supports it), `monochrome` (or nothing) selects black lines.  The option
+ `solid` draws solid lines, while `dashed` (or nothing) selects lines with
+ different patterns of dashes.  If `solid` is selected but `color` is not,
+ nearly all lines will be identical.  This may occasionally be useful, so it is
+ allowed.
+
+ The option `notex` bypasses TeX entirely, therefore no TeX code can be used in
+ labels under this option.  This is intended for use on old plot files or files
+ that make frequent use of common characters like `$` and `%` that require
+ special handling in TeX.
+
+ The option `tex` sets the terminal to output its text for TeX to process.
+
+ The option `latex` sets the terminal to output its text for processing by
+ LaTeX. This allows things like \frac for fractions which LaTeX knows about
+ but TeX does not.  Note that you must set the environment variable TEX to the
+ name of your LaTeX executable (normally latex) if you use this option or use
+ `mpost --tex=<name of LaTeX executable> ...`. Otherwise metapost will try and
+ use TeX to process the text and it won't work.
+
+ Changing font sizes in TeX has no effect on the size of mathematics, and there
+ is no foolproof way to make such a change, except by globally  setting a
+ magnification factor. This is the purpose of the `magnification` option. It
+ must be followed by a scaling factor. All text (NOT the graphs) will be scaled
+ by this factor. Use this if you have math that you want at some size other
+ than the default 10pt. Unfortunately, all math will be the same size, but see
+ the discussion below on editing the MP output. `mag` will also work under
+ `notex` but there seems no point in using it as the font size option (below)
+ works as well.
+
+ The option `psnfss` uses postscript fonts in combination with LaTeX. Since
+ this option only makes sense, if LaTeX is being used, the `latex` option is selected
+ automatically. This option includes the following packages for LaTeX:
+ inputenc(latin1), fontenc(T1), mathptmx, helvet(scaled=09.2), courier, latexsym 
+ and textcomp.
+
+ The option `psnfss-version7` uses also postscript fonts in LaTeX (option `latex`
+ is also automatically selected), but uses the following packages with LaTeX:
+ inputenc(latin1), fontenc(T1), times, mathptmx, helvet and courier.
+
+ The option `nopsnfss` is the default and uses the standard font (cmr10 if not
+ otherwise specified).
+
+ The option `prologues` takes a value as an additional argument and adds the line
+ `prologues:=<value>` to the metapost file. If a value of `2` is specified metapost
+ uses postscript fonts to generate the eps-file, so that the result can be viewed
+ using e.g. ghostscript. Normally the output of metapost uses TeX fonts and therefore
+ has to be included in a (La)TeX file before you can look at it.
+
+ The option `noprologues` is the default. No additional line specifying the prologue
+ will be added.
+
+ The option `a4paper` adds a `[a4paper]` to the documentclass. Normally letter paper
+ is used (default). Since this option is only used in case of LaTeX, the `latex` option
+ is selected automatically.
+
+ The option `amstex` automatically selects the `latex` option and includes the following
+ LaTeX packages: amsfonts, amsmath(intlimits). By default these packages are not
+ included.
+
+ A name in quotes selects the font that will be used when no explicit font is
+ given in a `set label` or `set title`.  A name recognized by TeX (a TFM file
+ exists) must be used.  The default is "cmr10" unless `notex` is selected,
+ then it is "pcrr8r" (Courier).  Even under `notex`, a TFM file is needed by
+ Metapost. The file `pcrr8r.tfm` is the name given to Courier in LaTeX's psnfss
+ package.  If you change the font from the `notex` default, choose a font that
+ matches the ASCII encoding at least in the range 32-126.  `cmtt10` almost
+ works, but it has a nonblank character in position 32 (space).
+
+ The size can be any number between 5.0 and 99.99.  If it is omitted, 10.0 is
+ used.  It is advisable to use `magstep` sizes: 10 times an integer or
+ half-integer power of 1.2, rounded to two decimals, because those are the most
+ available sizes of fonts in TeX systems.
+
+ All the options are optional.  If font information is given, it must be at the
+ end, with size (if present) last.  The size is needed to select a size for the
+ font, even if the font name includes size information.  For example,
+ `set term mp "cmtt12"` selects cmtt12 shrunk to the default size 10.  This
+ is probably not what you want or you would have used cmtt10.
+
+ The following common ascii characters need special treatment in TeX:
+    $, &, #, %, _;  |, <, >;  ^, ~,  \, {, and }
+ The five characters $, #, &, _, and % can simply be escaped, e.g., `\$`.
+ The three characters <, >, and | can be wrapped in math mode, e.g., `$<$`.
+ The remainder require some TeX work-arounds.  Any good book on TeX will give
+ some guidance.
+
+ If you type your labels inside double quotes, backslashes in TeX code need to
+ be escaped (doubled). Using single quotes will avoid having to do this, but
+ then you cannot use `\n` for line breaks.  As of this writing, version 3.7 of
+ gnuplot processes titles given in a `plot` command differently than in other
+ places, and backslashes in TeX commands need to be doubled regardless of the
+ style of quotes.
+
+ Metapost pictures are typically used in TeX documents.  Metapost deals with
+ fonts pretty much the same way TeX does, which is different from most other
+ document preparation programs.  If the picture is included in a LaTeX document
+ using the graphics package, or in a plainTeX document via epsf.tex, and then
+ converted to PostScript with dvips (or other dvi-to-ps converter), the text in
+ the plot will usually be handled correctly.  However, the text may not appear
+ if you send the Metapost output as-is to a PostScript interpreter.
+
+?commands set terminal mp detailed
+?set terminal mp detailed
+?set term mp detailed
+?mp detailed
+?metapost detailed
+
+ - Set your terminal to Metapost, e.g.:
+    set terminal mp mono "cmtt12" 12
+
+ - Select an output-file, e.g.:
+    set output "figure.mp"
+
+ - Create your pictures.  Each plot (or multiplot group) will generate a
+ separate Metapost beginfig...endfig group.  Its default size will be 5 by 3
+ inches.  You can change the size by saying `set size 0.5,0.5` or whatever
+ fraction of the default size you want to have.
+
+ - Quit gnuplot.
+
+ - Generate EPS files by running Metapost on the output of gnuplot:
+    mpost figure.mp  OR  mp figure.mp
+ The name of the Metapost program depends on the system, typically `mpost` for
+ a Unix machine and `mp` on many others.  Metapost will generate one EPS file
+ for each picture.
+
+ - To include your pictures in your document you can use the graphics package
+ in LaTeX or epsf.tex in plainTeX:
+    \usepackage{graphics} % LaTeX
+    \input epsf.tex       % plainTeX
+ If you use a driver other than dvips for converting TeX DVI output to PS, you
+ may need to add the following line in your LaTeX document:
+    \DeclareGraphicsRule{*}{eps}{*}{}
+ Each picture you made is in a separate file.  The first picture is in, e.g.,
+ figure.0, the second in figure.1, and so on....  To place the third picture in
+ your document, for example, all you have to do is:
+    \includegraphics{figure.2} % LaTeX
+    \epsfbox{figure.2}         % plainTeX
+
+ The advantage, if any, of the mp terminal over a postscript terminal is
+ editable output.  Considerable effort went into making this output as clean as
+ possible.  For those knowledgeable in the Metapost language, the default line
+ types and colors can be changed by editing the arrays `lt[]` and `col[]`.
+ The choice of solid vs dashed lines, and color vs black lines can be change by
+ changing the values assigned to the booleans `dashedlines` and `colorlines`.
+ If the default `tex` option was in effect, global changes to the text of
+ labels can be achieved by editing the `vebatimtex...etex` block.  In
+ particular, a LaTeX preamble can be added if desired, and then LaTeX's
+ built-in size changing commands can be used for maximum flexibility. Be sure
+ to set the appropriate MP configuration variable to force Metapost to run
+ LaTeX instead of plainTeX.
+?commands set terminal context
+?set terminal context
+?terminal context
+?set term context
+?term context
+?context
+ ConTeXt is a macro package for TeX, highly integrated with Metapost
+ (for drawing figures) and intended for creation of high-quality PDF documents.
+ The terminal outputs Metafun source, which can be edited manually,
+ but you should be able to configure most things from outside.
+
+ For an average user of ConTeXt + gnuplot module it's recommended to refer to
+ `Using ConTeXt` rather than reading this page
+ or to read the manual of the gnuplot module for ConTeXt.
+
+ The `context` terminal supports the following options:
+
+ Syntax:
+      set term context {default}
+              {defaultsize | size <scale> | size <xsize>{in|cm}, <ysize>{in|cm}}
+              {input | standalone}
+              {timestamp | notimestamp}
+              {noheader | header "<header>"}
+              {color | colour | monochrome}
+              {rounded | mitered | beveled} {round | butt | squared}
+              {dashed | solid} {dashlength | dl <dl>}
+              {linewidth | lw <lw>}
+              {fontscale <fontscale>}
+              {mppoints | texpoints}
+              {inlineimages | externalimages}
+              {defaultfont | font "{<fontname>}{,<fontsize>}"}
+
+ In non-standalone (`input`) graphic only parameters `size` to select graphic
+ size, `fontscale` to scale all the labels for a factor <fontscale>
+ and font size, make sense, the rest is silently
+ ignored and should be configured in the .tex file which inputs the graphic.
+ It's highly recommended to set the proper fontsize if document font differs from
+ 12pt, so that gnuplot will know how much space to reserve for labels.
+
+ `default` resets all the options to their default values.
+
+ `defaultsize` sets the plot size to 5in,3in.
+ `size` <scale> sets the plot size to <scale> times <default value>.
+ If two arguments are given (separated with ','), the first one sets
+ the horizontal size and the second one the vertical size.
+ Size may be given without units (in which case it means relative to the default
+ value), with inches ('in') or centimeters ('cm').
+
+ `input` (default) creates a graphic that can be included into another ConTeXt
+ document.
+ `standalone` adds some lines, so that the document might be compiled as-is.
+ You might also want to add `header` in that case.
+
+ Use `header` for any additional settings/definitions/macros
+ that you might want to include in a standalone graphic. `noheader` is the default.
+
+ `notimestamp` prevents printing creation time in comments
+ (if version control is used, one may prefer not to commit new version when only date changes).
+
+ `color` to make color plots is the default, but `monochrome` doesn't do anything special yet.
+ If you have any good ideas how the behaviour should differ to suit the monochrome printers better,
+ your suggestions are welcome.
+
+ `rounded` (default), `mitered` and `beveled` control the shape of line joins.
+ `round` (default), `butt` and `squared` control the shape of line caps.
+ See PostScript or PDF Reference Manual for explanation. For wild-behaving functions
+ and thick lines
+ it is better to use `rounded` and `round` to prevent sharp corners in line joins.
+ (Some general support for this should be added to Gnuplot, so that the same options
+ could be set for each line (style) separately).
+
+ `dashed` (default) uses different dash patterns for different line types,
+ `solid` draws all plots with solid lines.
+
+ `dashlength` or `dl` scales the length of the dashed-line segments by <dl>.
+ `linewidth` or `lw` scales all linewidths by <lw>.
+ (lw 1 stands for 0.5bp, which is the default line width when drawing with Metapost.)
+ `fontscale` scales text labels for factor <fontscale> relative to default document font.
+
+ `mppoints` uses predefined point shapes, drawn in Metapost.
+ `texpoints` uses easily configurable set of symbols, defined with ConTeXt
+ in the following way:
+      \defineconversion[my own points][+,{\ss x},\mathematics{\circ}]
+      \setupGNUPLOTterminal[context][points=tex,pointset=my own points]
+
+ `inlineimages` writes binary images to a string and only works in ConTeXt MKIV.
+ `externalimages` writes PNG files to disk and also works with ConTeXt MKII.
+ Gnuplot needs to have support for PNG images built in for this to work.
+
+ With `font` you can set font name and size in standalone graphics.
+ In non-standalone (`input`) mode only the font size is important
+ to reserve enough space for text labels.
+ The command
+      set term context font "myfont,ss,10"
+ will result in
+      \setupbodyfont[myfont,ss,10pt]
+ If you additionaly set `fontscale` to 0.8 for example,
+ then the resulting font will be 8pt big and
+      set label ... font "myfont,12"
+ will come out as 9.6pt.
+
+ It is your own responsibility to provide proper typescripts (and header),
+ otherwise switching the font will have no effect.
+ For a standard font in ConTeXt MKII (pdfTeX) you could use:
+      set terminal context standalone header '\usetypescript[iwona][ec]' \
+          font "iwona,ss,11"
+ Please take a look into ConTeXt documentation, wiki or mailing list (archives)
+ for any up-to-date information about font usage.
+
+ Examples:
+      set terminal context size 10cm, 5cm     # 10cm, 5cm
+      set terminal context size 4in, 3in      # 4in, 3in
+ For standalone (whole-page) plots with labels in UTF-8 encoding:
+      set terminal context standalone header '\enableregime[utf-8]'
+
+ You need gnuplot module for ConTeXt
+      http://ctan.org/pkg/context-gnuplot
+ and a recent version of ConTeXt.
+ If you want to call gnuplot on-the-fly, you also need write18 enabled.
+ In most TeX distributions this can be set with shell_escape=t in texmf.cnf.
+
+ See
+           http://wiki.contextgarden.net/Gnuplot
+ for details about this terminal and for more exhaustive help & examples.
+
+ The easiest way to make plots in ConTeXt documents is
+      \usemodule[gnuplot]
+      \starttext
+      \title{How to draw nice plots with {\sc gnuplot}?}
+      \startGNUPLOTscript[sin]
+      set format y "%.1f"
+      plot sin(x) t '$\sin(x)$'
+      \stopGNUPLOTscript
+      \useGNUPLOTgraphic[sin]
+      \stoptext
+ This will run gnuplot automatically and include the resulting figure in the document.
+?bugs
+ Please e-mail bug reports to the gnuplot-bugs mailing list or
+ upload the report to the gnuplot web site on SourceForge.
+ Please give complete information on the version of gnuplot you are using
+ and, if possible, a test script that demonstrates the bug.
+ See `seeking-assistance`.
+
+ It is not possible to use in-line data (e.g. plot '-' ...) inside the curly
+ brackets of a `do` or `while` loop.
+
+ The layout and positioning of the plot key is inaccurate whenever superscripts,
+ subscripts, or explicit fonts are used in the key text.  (Fixed in 4.7)
+
+ Floating point exceptions (floating point number too large/small, divide by
+ zero, etc.) may occasionally be generated by user defined functions.  Some of
+ the demos in particular may cause numbers to exceed the floating point range.
+ Whether the system ignores such exceptions (in which case `gnuplot` labels
+ the corresponding point as undefined) or aborts `gnuplot` depends on the
+ compiler/runtime environment.
+
+ The gamma, bessel, and erf functions do not work for complex arguments.
+
+ Coordinates specified as "time" wrap at 24 hours.
+
+ The 'nohidden3d' option that is supposed to exempt individual plots from the
+ global property 'set hidden3d' does not work for parametric curves.
+
+ X11 terminal: It is difficult to select UTF-8 fonts.  The program does not
+ track the true aspect ratio of the x11 terminal window.  In order for commands
+ such as "set size ratio" to work, the x11 window must itself have equal height
+ and width.  Only one color palette at a time is active for any given x11 plot
+ window.  This means that multiplots whose constituent plots use different
+ palettes will not display correctly in x11.
+
+ Qt terminal: If the local qt environment does not support "opengl" as a
+ rendering mode then display of polygons and surfaces can be very slow.
+
+?bugs external_libraries
+ External library GD (used by PNG/JPEG/GIF drivers):
+ Versions of libgd through 2.0.33 contain various bugs in mapping the characters
+ of Adobe's Symbol font.  Also it is possible to trigger a library segfault if
+ an anti-aliased line crosses an upper corner of the canvas.
+
+ External library PDFlib (used by PDF driver):
+ Gnuplot can be linked against libpdf versions 4, 5, or 6. However, these
+ versions differ in their handling of piped I/O.  Therefore gnuplot scripts
+ using piped output to PDF may work only for some versions of PDFlib.
+
+ External library svgalib (used by linux and vgagl driver):
+ Requires gnuplot to be suid root (bad!) and has many bugs that are specific
+ to the video card or graphics driver used in X11.
+
+ Internationalization (locale settings):
+ Gnuplot uses the C runtime library routine setlocale() to control
+ locale-specific formatting of input and output number, times, and date strings.
+ The locales available, and the level of support for locale features such as
+ "thousands' grouping separator", depend on the internationalization support
+ provided by your individual machine.
diff --git a/util/X86MAC64/share/gnuplot/4.6/gnuplot.pdf b/util/X86MAC64/share/gnuplot/4.6/gnuplot.pdf
new file mode 100644 (file)
index 0000000..81b7833
Binary files /dev/null and b/util/X86MAC64/share/gnuplot/4.6/gnuplot.pdf differ
diff --git a/util/X86MAC64/share/gnuplot/4.6/gnuplotrc b/util/X86MAC64/share/gnuplot/4.6/gnuplotrc
new file mode 100644 (file)
index 0000000..625808b
--- /dev/null
@@ -0,0 +1,44 @@
+###
+### Gnuplot version 4.6 intialization file
+### This file is loaded by gnuplot at the start of each run.
+### It is provided as a template, with all commands commented out.
+### Uncomment and customize lines for local use.
+### Any commands placed here will affect all users.
+### To customize gnuplot's initial state for an individual user,
+### place commands in a private file ~/.gnuplot instead.
+
+###
+### Language initialization
+###
+# set locale
+# set encoding locale
+
+###
+### Default line colors and repeat cycle
+###
+# set linetype 1 lc rgb "dark-violet" lw 1
+# set linetype 2 lc rgb "#009e73" lw 1
+# set linetype 3 lc rgb "#56b4e9" lw 1
+# set linetype 4 lc rgb "#e69f00" lw 1
+# set linetype 5 lc rgb "#f0e442" lw 1
+# set linetype 6 lc rgb "#0072b2" lw 1
+# set linetype 7 lc rgb "#e51e10" lw 1
+# set linetype 8 lc rgb "black"   lw 1
+# set linetype cycle 8
+
+###
+### Initialize the default loadpath for shared gnuplot scripts and data.
+### Please confirm that this path is correct before uncommented the line below.
+###
+# set loadpath /usr/local/share/gnuplot/4.6/
+
+###
+### Some commonly used functions that are not built in
+###
+# sinc(x) = sin(x)/x
+
+###
+### Other preferences
+###
+# set clip two
+
diff --git a/util/X86MAC64/share/gnuplot/4.6/js/README b/util/X86MAC64/share/gnuplot/4.6/js/README
new file mode 100644 (file)
index 0000000..fa4c432
--- /dev/null
@@ -0,0 +1,108 @@
+     Notes on using the gnuplot canvas terminal driver to create web pages
+     =====================================================================
+
+
+1) Using UTF-8 characters in your plots
+
+I expect that eventually web browsers will learn to draw text onto the HTML
+canvas element using their native font-handling code.  But until then we
+have to refer to an external character drawing library. 
+
+The gnuplot package includes two versions of a script to draw characters on
+the canvas.  The first one, canvastext.js, was written by Jim Studt. It only
+knows about the 7-bit ascii characters.  The second one, canvasmath.js, is
+an expanded version of Jim Studt's script that I wrote to handle UTF8.
+It contains glyphs for the first two unicode code pages (latin-1), the greek
+alphabet, and select math and physics symbols. You can use this to replace
+canvastext.js if you like, or refer to it explicitly in plots that need
+non-ascii characters.
+
+
+2) Browser dependencies
+
+As of this time (May 2009) the HTML canvas element is supported by the
+latest versions of Opera, Safari, Firefox, and Konqueror.  However, each
+of these has quirks.
+
+For instance, only Firefox makes it easy to click and drag with the middle
+or right mouse buttons;  the other browsers try to pop up various menus instead.
+We try to override this, but it doesn't always work.
+
+Conversely, Opera and Safari make it easy to use hot keys ('e' for refresh,
+'r' to toggle the ruler, etc), but I have not managed to get this to work
+in Firefox.
+
+If you run into problems, please try several browsers before concluding that it
+is a gnuplot problem.  If you figure out a work-around for one of these browser
+quirks, please tell me so that we can try to incorporate into gnuplot output.
+
+
+3) Creating a basic web page with a single mouseable plot
+
+The canvas terminal driver itself will create a basic html document containing
+a mousable plot.  The command options to do this are
+       set term canvas standalone mousing jsdir "http://myserver"
+       set output 'myplot.html'
+This document contains
+       - a reference to style sheet gnuplot_mouse.css
+       - a reference to support script gnuplot_mouse.js
+       - a javascript function named 'gnuplot_canvas'
+       - a canvas element named 'gnuplot_canvas' that will be drawn in by the
+         javascript function of the same name
+       - an html table containing the readout for mouse coordinates, as well
+         as clickable icons for additional mousing operations
+The *.css and *.js references point back to whatever source URL you specified
+in the jsdir option to the 'set term' command.  For example:
+<link type="text/css" href="http://myserver/gnuplot_mouse.css" rel="stylesheet">
+In order for viewers to use your plot document, they must be able to access the
+*.css and *.js files via the URL embedded in the document.
+
+
+4) Creating a web page with multiple mouseable plots
+
+In order to embed multiple plots in a single document, you must
+provide your own html framework.  You can use the one created by the canvas
+driver in standalone mode as a starting point, including the references to
+gnuplot_mouse.css and gnuplot_mouse.js.  However, instead of a single
+javascript routine named gnuplot_canvas() that always draws the same plot,
+you must provide a wrapper routine with the same name that connects the
+mousing code to whichever plot is currently active.  Here is an example:
+- create the individual plots as separate javascript files
+       set term canvas name 'plot1'
+       set output 'plot1.js'
+       plot something
+       set term canvas name 'plot2'
+       set output 'plot2.js'
+       plot something_else
+- create your html wrapper, including a script block such as the one below.
+  You must use these specific variable names, as they are referenced by the
+  javascript code produced by the canvas terminal.
+       <script type="text/javascript">
+       var canvas, ctx;
+       var grid_lines = true;
+       var zoomed = false;
+       var active_plot_name = "gnuplot_canvas";
+       var active_plot = dummyplot;
+       function dummyplot() {};
+       function gnuplot_canvas( plot ) { active_plot(); };
+       </script>
+- add one or more mousing output tables.  As a model, you can use either the one
+  in a standalone plot or the file .../demo/html/mousebox.template.
+  The table id and text span ids in the "mousebox" table must match the ones
+  by your individual plots in order for mousing readout to work.
+- each of the individual plots in the document should be explicitly called when
+  the document is loaded.  For example, for each plot there could be a block
+  of html similar to the following:
+       <canvas id="plot1" width="600" height="400" tabindex="0"></canvas>
+       <script src="plot1.js"></script>
+       <script>
+           if (window.attachEvent) {window.attachEvent('onload', plot1);}
+           else if (window.addEventListener) {window.addEventListener('load', plot1, false);}
+       </script>
+  Alternatively, the onload attributes could be set in the html <BODY> element
+
+
+
+       - Ethan A Merritt (sfeam@users.sourceforge.net)
+         May 2009
+       
diff --git a/util/X86MAC64/share/gnuplot/4.6/js/canvasmath.js b/util/X86MAC64/share/gnuplot/4.6/js/canvasmath.js
new file mode 100644 (file)
index 0000000..b9d4688
--- /dev/null
@@ -0,0 +1,412 @@
+/*
+ * $Id: canvasmath.js,v 1.6.4.1 2012/11/15 20:30:03 sfeam Exp $
+ */
+// The canvastext.js code was released to the public domain by Jim Studt, 2007.
+// He may keep some sort of up to date copy at http://www.federated.com/~jim/canvastext/
+// Mar 2009 Ethan A Merritt (EAM) Modify code to work in non-ascii environments.
+//         Add Latin-1, Hershey simplex Greek, and math symbols with unicode indexing.
+// Apr 2012 Ethan A Merritt  Composite widths, tab, newline
+// Nov 2012 Ethan A Merritt  Additional UTF8 mathematical operators
+//
+var CanvasTextFunctions = { };
+
+CanvasTextFunctions.letters = {
+    ' ': { width: 16, points: [] },
+    '!': { width: 10, points: [[5,21],[5,7],[-1,-1],[5,2],[4,1],[5,0],[6,1],[5,2]] },
+    '"': { width: 16, points: [[4,21],[4,14],[-1,-1],[12,21],[12,14]] },
+    '#': { width: 21, points: [[11,25],[4,-7],[-1,-1],[17,25],[10,-7],[-1,-1],[4,12],[18,12],[-1,-1],[3,6],[17,6]] },
+    '$': { width: 20, points: [[8,25],[8,-4],[-1,-1],[12,25],[12,-4],[-1,-1],[17,18],[15,20],[12,21],[8,21],[5,20],[3,18],[3,16],[4,14],[5,13],[7,12],[13,10],[15,9],[16,8],[17,6],[17,3],[15,1],[12,0],[8,0],[5,1],[3,3]] },
+    '%': { width: 24, points: [[21,21],[3,0],[-1,-1],[8,21],[10,19],[10,17],[9,15],[7,14],[5,14],[3,16],[3,18],[4,20],[6,21],[8,21],[10,20],[13,19],[16,19],[19,20],[21,21],[-1,-1],[17,7],[15,6],[14,4],[14,2],[16,0],[18,0],[20,1],[21,3],[21,5],[19,7],[17,7]] },
+    '&': { width: 26, points: [[23,12],[23,13],[22,14],[21,14],[20,13],[19,11],[17,6],[15,3],[13,1],[11,0],[7,0],[5,1],[4,2],[3,4],[3,6],[4,8],[5,9],[12,13],[13,14],[14,16],[14,18],[13,20],[11,21],[9,20],[8,18],[8,16],[9,13],[11,10],[16,3],[18,1],[20,0],[22,0],[23,1],[23,2]] },
+    '\'': { width: 10, points: [[5,19],[4,20],[5,21],[6,20],[6,18],[5,16],[4,15]] },
+    '(': { width: 14, points: [[11,25],[9,23],[7,20],[5,16],[4,11],[4,7],[5,2],[7,-2],[9,-5],[11,-7]] },
+    ')': { width: 14, points: [[3,25],[5,23],[7,20],[9,16],[10,11],[10,7],[9,2],[7,-2],[5,-5],[3,-7]] },
+    '*': { width: 16, points: [[8,21],[8,9],[-1,-1],[3,18],[13,12],[-1,-1],[13,18],[3,12]] },
+    '+': { width: 20, points: [[10,15],[10,3],[-1,-1],[4,9],[16,9]] },
+    ',': { width: 10, points: [[6,1],[5,0],[4,1],[5,2],[6,1],[6,-1],[5,-3],[4,-4]] },
+    '-': { width: 20, points: [[4,9],[16,9]] },
+    '.': { width: 10, points: [[5,2],[4,1],[5,0],[6,1],[5,2]] },
+    '/': { width: 20, points: [[19,25],[1,-7]] },
+    '0': { width: 20, points: [[9,21],[6,20],[4,17],[3,12],[3,9],[4,4],[6,1],[9,0],[11,0],[14,1],[16,4],[17,9],[17,12],[16,17],[14,20],[11,21],[9,21]] },
+    '1': { width: 20, points: [[6,17],[8,18],[11,21],[11,0]] },
+    '2': { width: 20, points: [[4,16],[4,17],[5,19],[6,20],[8,21],[12,21],[14,20],[15,19],[16,17],[16,15],[15,13],[13,10],[3,0],[17,0]] },
+    '3': { width: 20, points: [[5,21],[16,21],[10,13],[13,13],[15,12],[16,11],[17,8],[17,6],[16,3],[14,1],[11,0],[8,0],[5,1],[4,2],[3,4]] },
+    '4': { width: 20, points: [[13,21],[3,7],[18,7],[-1,-1],[13,21],[13,0]] },
+    '5': { width: 20, points: [[15,21],[5,21],[4,12],[5,13],[8,14],[11,14],[14,13],[16,11],[17,8],[17,6],[16,3],[14,1],[11,0],[8,0],[5,1],[4,2],[3,4]] },
+    '6': { width: 20, points: [[16,18],[15,20],[12,21],[10,21],[7,20],[5,17],[4,12],[4,7],[5,3],[7,1],[10,0],[11,0],[14,1],[16,3],[17,6],[17,7],[16,10],[14,12],[11,13],[10,13],[7,12],[5,10],[4,7]] },
+    '7': { width: 20, points: [[17,21],[7,0],[-1,-1],[3,21],[17,21]] },
+    '8': { width: 20, points: [[8,21],[5,20],[4,18],[4,16],[5,14],[7,13],[11,12],[14,11],[16,9],[17,7],[17,4],[16,2],[15,1],[12,0],[8,0],[5,1],[4,2],[3,4],[3,7],[4,9],[6,11],[9,12],[13,13],[15,14],[16,16],[16,18],[15,20],[12,21],[8,21]] },
+    '9': { width: 20, points: [[16,14],[15,11],[13,9],[10,8],[9,8],[6,9],[4,11],[3,14],[3,15],[4,18],[6,20],[9,21],[10,21],[13,20],[15,18],[16,14],[16,9],[15,4],[13,1],[10,0],[8,0],[5,1],[4,3]] },
+    ':': { width: 10, points: [[5,14],[4,13],[5,12],[6,13],[5,14],[-1,-1],[5,2],[4,1],[5,0],[6,1],[5,2]] },
+    ';': { width: 10, points: [[5,14],[4,13],[5,12],[6,13],[5,14],[-1,-1],[6,1],[5,0],[4,1],[5,2],[6,1],[6,-1],[5,-3],[4,-4]] },
+    '<': { width: 24, points: [[20,18],[4,9],[20,0]] },
+    '=': { width: 24, points: [[3,12],[20,12],[-1,-1],[3,6],[20,6]] },
+    '>': { width: 24, points: [[4,18],[20,9],[4,0]] },
+    '?': { width: 18, points: [[3,16],[3,17],[4,19],[5,20],[7,21],[11,21],[13,20],[14,19],[15,17],[15,15],[14,13],[13,12],[9,10],[9,7],[-1,-1],[9,2],[8,1],[9,0],[10,1],[9,2]] },
+    '@': { width: 27, points: [[18,13],[17,15],[15,16],[12,16],[10,15],[9,14],[8,11],[8,8],[9,6],[11,5],[14,5],[16,6],[17,8],[-1,-1],[12,16],[10,14],[9,11],[9,8],[10,6],[11,5],[-1,-1],[18,16],[17,8],[17,6],[19,5],[21,5],[23,7],[24,10],[24,12],[23,15],[22,17],[20,19],[18,20],[15,21],[12,21],[9,20],[7,19],[5,17],[4,15],[3,12],[3,9],[4,6],[5,4],[7,2],[9,1],[12,0],[15,0],[18,1],[20,2],[21,3],[-1,-1],[19,16],[18,8],[18,6],[19,5]] },
+    'A': { width: 18, points: [[9,21],[1,0],[-1,-1],[9,21],[17,0],[-1,-1],[4,7],[14,7]] },
+    'B': { width: 21, points: [[4,21],[4,0],[-1,-1],[4,21],[13,21],[16,20],[17,19],[18,17],[18,15],[17,13],[16,12],[13,11],[-1,-1],[4,11],[13,11],[16,10],[17,9],[18,7],[18,4],[17,2],[16,1],[13,0],[4,0]] },
+    'C': { width: 21, points: [[18,16],[17,18],[15,20],[13,21],[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5]] },
+    'D': { width: 21, points: [[4,21],[4,0],[-1,-1],[4,21],[11,21],[14,20],[16,18],[17,16],[18,13],[18,8],[17,5],[16,3],[14,1],[11,0],[4,0]] },
+    'E': { width: 19, points: [[4,21],[4,0],[-1,-1],[4,21],[17,21],[-1,-1],[4,11],[12,11],[-1,-1],[4,0],[17,0]] },
+    'F': { width: 18, points: [[4,21],[4,0],[-1,-1],[4,21],[17,21],[-1,-1],[4,11],[12,11]] },
+    'G': { width: 21, points: [[18,16],[17,18],[15,20],[13,21],[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5],[18,8],[-1,-1],[13,8],[18,8]] },
+    'H': { width: 22, points: [[4,21],[4,0],[-1,-1],[18,21],[18,0],[-1,-1],[4,11],[18,11]] },
+    'I': { width: 8, points: [[4,21],[4,0]] },
+    'J': { width: 16, points: [[12,21],[12,5],[11,2],[10,1],[8,0],[6,0],[4,1],[3,2],[2,5],[2,7]] },
+    'K': { width: 21, points: [[4,21],[4,0],[-1,-1],[18,21],[4,7],[-1,-1],[9,12],[18,0]] },
+    'L': { width: 17, points: [[4,21],[4,0],[-1,-1],[4,0],[16,0]] },
+    'M': { width: 24, points: [[4,21],[4,0],[-1,-1],[4,21],[12,0],[-1,-1],[20,21],[12,0],[-1,-1],[20,21],[20,0]] },
+    'N': { width: 22, points: [[4,21],[4,0],[-1,-1],[4,21],[18,0],[-1,-1],[18,21],[18,0]] },
+    'O': { width: 22, points: [[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5],[19,8],[19,13],[18,16],[17,18],[15,20],[13,21],[9,21]] },
+    'P': { width: 21, points: [[4,21],[4,0],[-1,-1],[4,21],[13,21],[16,20],[17,19],[18,17],[18,14],[17,12],[16,11],[13,10],[4,10]] },
+    'Q': { width: 22, points: [[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5],[19,8],[19,13],[18,16],[17,18],[15,20],[13,21],[9,21],[-1,-1],[12,4],[18,-2]] },
+    'R': { width: 21, points: [[4,21],[4,0],[-1,-1],[4,21],[13,21],[16,20],[17,19],[18,17],[18,15],[17,13],[16,12],[13,11],[4,11],[-1,-1],[11,11],[18,0]] },
+    'S': { width: 20, points: [[17,18],[15,20],[12,21],[8,21],[5,20],[3,18],[3,16],[4,14],[5,13],[7,12],[13,10],[15,9],[16,8],[17,6],[17,3],[15,1],[12,0],[8,0],[5,1],[3,3]] },
+    'T': { width: 16, points: [[8,21],[8,0],[-1,-1],[1,21],[15,21]] },
+    'U': { width: 22, points: [[4,21],[4,6],[5,3],[7,1],[10,0],[12,0],[15,1],[17,3],[18,6],[18,21]] },
+    'V': { width: 18, points: [[1,21],[9,0],[-1,-1],[17,21],[9,0]] },
+    'W': { width: 24, points: [[2,21],[7,0],[-1,-1],[12,21],[7,0],[-1,-1],[12,21],[17,0],[-1,-1],[22,21],[17,0]] },
+    'X': { width: 20, points: [[3,21],[17,0],[-1,-1],[17,21],[3,0]] },
+    'Y': { width: 18, points: [[1,21],[9,11],[9,0],[-1,-1],[17,21],[9,11]] },
+    'Z': { width: 20, points: [[17,21],[3,0],[-1,-1],[3,21],[17,21],[-1,-1],[3,0],[17,0]] },
+    '[': { width: 14, points: [[4,25],[4,-7],[-1,-1],[5,25],[5,-7],[-1,-1],[4,25],[11,25],[-1,-1],[4,-7],[11,-7]] },
+    '\\': { width: 14, points: [[0,21],[14,-3]] },
+    ']': { width: 14, points: [[9,25],[9,-7],[-1,-1],[10,25],[10,-7],[-1,-1],[3,25],[10,25],[-1,-1],[3,-7],[10,-7]] },
+    '^': { width: 16, points: [[5,15],[8,19],[11,15],[-1,-1],[2,12],[8,18],[14,12]] },
+    '_': { width: 16, points: [[0,-2],[16,-2]] },
+    '`': { width: 10, points: [[6,21],[5,20],[4,18],[4,16],[5,15],[6,16],[5,17]] },
+    'a': { width: 19, points: [[15,14],[15,0],[-1,-1],[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]] },
+    'b': { width: 19, points: [[4,21],[4,0],[-1,-1],[4,11],[6,13],[8,14],[11,14],[13,13],[15,11],[16,8],[16,6],[15,3],[13,1],[11,0],[8,0],[6,1],[4,3]] },
+    'c': { width: 18, points: [[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]] },
+    'd': { width: 19, points: [[15,21],[15,0],[-1,-1],[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]] },
+    'e': { width: 18, points: [[3,8],[15,8],[15,10],[14,12],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]] },
+    'f': { width: 12, points: [[10,21],[8,21],[6,20],[5,17],[5,0],[-1,-1],[2,14],[9,14]] },
+    'g': { width: 19, points: [[15,14],[15,-2],[14,-5],[13,-6],[11,-7],[8,-7],[6,-6],[-1,-1],[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]] },
+    'h': { width: 19, points: [[4,21],[4,0],[-1,-1],[4,10],[7,13],[9,14],[12,14],[14,13],[15,10],[15,0]] },
+    'i': { width: 8, points: [[3,21],[4,20],[5,21],[4,22],[3,21],[-1,-1],[4,14],[4,0]] },
+    'j': { width: 10, points: [[5,21],[6,20],[7,21],[6,22],[5,21],[-1,-1],[6,14],[6,-3],[5,-6],[3,-7],[1,-7]] },
+    'k': { width: 17, points: [[4,21],[4,0],[-1,-1],[14,14],[4,4],[-1,-1],[8,8],[15,0]] },
+    'l': { width: 8, points: [[4,21],[4,0]] },
+    'm': { width: 30, points: [[4,14],[4,0],[-1,-1],[4,10],[7,13],[9,14],[12,14],[14,13],[15,10],[15,0],[-1,-1],[15,10],[18,13],[20,14],[23,14],[25,13],[26,10],[26,0]] },
+    'n': { width: 19, points: [[4,14],[4,0],[-1,-1],[4,10],[7,13],[9,14],[12,14],[14,13],[15,10],[15,0]] },
+    'o': { width: 19, points: [[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3],[16,6],[16,8],[15,11],[13,13],[11,14],[8,14]] },
+    'p': { width: 19, points: [[4,14],[4,-7],[-1,-1],[4,11],[6,13],[8,14],[11,14],[13,13],[15,11],[16,8],[16,6],[15,3],[13,1],[11,0],[8,0],[6,1],[4,3]] },
+    'q': { width: 19, points: [[15,14],[15,-7],[-1,-1],[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]] },
+    'r': { width: 13, points: [[4,14],[4,0],[-1,-1],[4,8],[5,11],[7,13],[9,14],[12,14]] },
+    's': { width: 17, points: [[14,11],[13,13],[10,14],[7,14],[4,13],[3,11],[4,9],[6,8],[11,7],[13,6],[14,4],[14,3],[13,1],[10,0],[7,0],[4,1],[3,3]] },
+    't': { width: 12, points: [[5,21],[5,4],[6,1],[8,0],[10,0],[-1,-1],[2,14],[9,14]] },
+    'u': { width: 19, points: [[4,14],[4,4],[5,1],[7,0],[10,0],[12,1],[15,4],[-1,-1],[15,14],[15,0]] },
+    'v': { width: 16, points: [[2,14],[8,0],[-1,-1],[14,14],[8,0]] },
+    'w': { width: 22, points: [[3,14],[7,0],[-1,-1],[11,14],[7,0],[-1,-1],[11,14],[15,0],[-1,-1],[19,14],[15,0]] },
+    'x': { width: 17, points: [[3,14],[14,0],[-1,-1],[14,14],[3,0]] },
+    'y': { width: 16, points: [[2,14],[8,0],[-1,-1],[14,14],[8,0],[6,-4],[4,-6],[2,-7],[1,-7]] },
+    'z': { width: 17, points: [[14,14],[3,0],[-1,-1],[3,14],[14,14],[-1,-1],[3,0],[14,0]] },
+    '{': { width: 14, points: [[9,25],[7,24],[6,23],[5,21],[5,19],[6,17],[7,16],[8,14],[8,12],[6,10],[-1,-1],[7,24],[6,22],[6,20],[7,18],[8,17],[9,15],[9,13],[8,11],[4,9],[8,7],[9,5],[9,3],[8,1],[7,0],[6,-2],[6,-4],[7,-6],[-1,-1],[6,8],[8,6],[8,4],[7,2],[6,1],[5,-1],[5,-3],[6,-5],[7,-6],[9,-7]] },
+    '|': { width: 8, points: [[4,25],[4,-7]] },
+    '}': { width: 14, points: [[5,25],[7,24],[8,23],[9,21],[9,19],[8,17],[7,16],[6,14],[6,12],[8,10],[-1,-1],[7,24],[8,22],[8,20],[7,18],[6,17],[5,15],[5,13],[6,11],[10,9],[6,7],[5,5],[5,3],[6,1],[7,0],[8,-2],[8,-4],[7,-6],[-1,-1],[8,8],[6,6],[6,4],[7,2],[8,1],[9,-1],[9,-3],[8,-5],[7,-6],[5,-7]] },
+    '~': { width: 24, points: [[3,6],[3,8],[4,11],[6,12],[8,12],[10,11],[14,8],[16,7],[18,7],[20,8],[21,10],[-1,-1],[3,8],[4,10],[6,11],[8,11],[10,10],[14,7],[16,6],[18,6],[20,7],[21,10],[21,12]] },
+
+// latin-1 as diacritical + base character
+
+192: { width: 0, points: [[4,28],[10,24],[-99,'A']] },
+193: { width: 0, points: [[8,24],[14,28],[-99,'A']] },
+194: { width: 0, points: [[5,24],[9,27],[13,24],[-99,'A']] },
+195: { width: 0, points: [[4,24],[5,26],[6,27],[8,27], [10,24],[12,24],[13,25],[14,27],[-99,'A']] },
+196: { width: 0, points: [[6,25],[6,26],[7,26],[7,25],[-1,-1],[12,25],[12,26],[13,26],[13,25],[-99,'A']] },
+197: { width: 0, points: [[8,27],[6,25],[6,23],[8,21],[10,21],[12,23],[12,25],[10,27],[8,27],[-99,'A']]},
+198: { width: 11, points: [[3,0],[14,21],[-1,-1],[7,8],[14,8],[-99,'E']] },
+199: { width: 0, points: [[10,0],[10,-3],[11,-3],[12,-4],[12,-6],[11,-7],[8,-7],[-99,'C']] },
+200: { width: 0, points: [[8,28],[14,24],[-99,'E']] },
+201: { width: 0, points: [[6,24],[12,28],[-99,'E']] },
+202: { width: 0, points: [[5,24],[9,27],[13,24],[-99,'E']] },
+203: { width: 0, points: [[6,25],[6,26],[7,26],[7,25],[-1,-1],[12,25],[12,26],[13,26],[13,25],[-99,'E']] },
+204: { width: 0, points: [[-99,'I']] },
+205: { width: 0, points: [[-99,'I']] },
+206: { width: 0, points: [[-99,'I']] },
+207: { width: 0, points: [[-99,'I']] },
+209: { width: 0, points: [[6,24],[7,26],[8,27],[10,27], [12,24],[14,24],[15,25],[16,27],[-99,'N']] },
+210: { width: 0, points: [[8,28],[14,24],[-99,'O']] },
+211: { width: 0, points: [[6,24],[12,28],[-99,'O']] },
+212: { width: 0, points: [[7,24],[11,27],[15,24],[-99,'O']] },
+213: { width: 0, points: [[6,24],[7,26],[8,27],[10,27], [12,24],[14,24],[15,25],[16,27],[-99,'O']] },
+214: { width: 0, points: [[8,25],[8,26],[9,26],[9,25],[-1,-1],[14,25],[14,26],[15,26],[15,25],[-99,'O']] },
+216: { width: 0, points: [[3,0],[19,21],[-99,'O']] },
+217: { width: 0, points: [[8,28],[14,24],[-99,'U']] },
+218: { width: 0, points: [[6,24],[12,28],[-99,'U']] },
+219: { width: 0, points: [[7,24],[11,27],[15,24],[-99,'U']] },
+220: { width: 0, points: [[8,25],[8,26],[9,26],[9,25],[-1,-1],[14,25],[14,26],[15,26],[15,25],[-99,'U']] },
+224: { width: 0, points: [[8,21],[14,17],[-99,'a']] },
+225: { width: 0, points: [[6,17],[12,21],[-99,'a']] },
+226: { width: 0, points: [[5,17],[9,20],[13,17],[-99,'a']] },
+227: { width: 0, points: [[4,17],[5,19],[6,20],[8,20], [10,17],[12,17],[13,18],[14,20],[-99,'a']] },
+228: { width: 0, points: [[6,18],[6,19],[7,19],[7,18],[-1,-1],[12,18],[12,19],[13,19],[13,18],[-99,'a']] },
+229: { width: 0, points: [[9,21],[7,19],[7,18],[9,16],[10,16],[12,18],[12,19],[10,21],[8,21],[-99,'a']] },
+231: { width: 0, points: [[10,0],[10,-3],[11,-3],[12,-4],[12,-6],[11,-7],[8,-7],[-99,'c']] },
+232: { width: 0, points: [[8,21],[14,17],[-99,'e']] },
+233: { width: 0, points: [[6,17],[12,21],[-99,'e']] },
+234: { width: 0, points: [[5,17],[9,20],[13,17],[-99,'e']] },
+235: { width: 0, points: [[6,18],[6,19],[7,19],[7,18],[-1,-1],[12,18],[12,19],[13,19],[13,18],[-99,'e']] },
+236: { width: 8, points: [[4,14],[4,0],[-1,-1],[1,21],[4,18]] },
+237: { width: 8, points: [[4,14],[4,0],[-1,-1],[7,21],[4,18]] },
+238: { width: 8, points: [[4,14],[4,0],[-1,-1],[1,17],[4,20],[7,17]] },
+239: { width: 10, points: [[5,14],[5,0],[-1,-1],[2,18],[2,19],[3,19],[3,18],[-1,-1],[7,18],[7,19],[8,19],[8,18]] },
+241: { width: 0, points: [[5,17],[6,19],[7,20],[9,20], [11,17],[13,17],[14,18],[15,20],[-99,'n']] },
+242: { width: 0, points: [[8,21],[14,17],[-99,'o']] },
+243: { width: 0, points: [[6,17],[12,21],[-99,'o']] },
+244: { width: 0, points: [[5,17],[9,20],[13,17],[-99,'o']] },
+245: { width: 0, points: [[4,17],[5,19],[6,20],[8,20], [10,17],[12,17],[13,18],[14,20],[-99,'o']] },
+246: { width: 0, points: [[6,18],[6,19],[7,19],[7,18],[-1,-1],[12,18],[12,19],[13,19],[13,18],[-99,'o']] },
+247: { width: 20, points: [[4,9],[16,9],[-1,-1],[10,14],[10,13],[11,13],[11,14],[-1,-1],[10,4],[10,5],[11,5],[11,4]] },
+248: { width: 0, points: [[3,0],[17,14],[-99,'o']] },
+249: { width: 0, points: [[8,21],[14,17],[-99,'u']] },
+250: { width: 0, points: [[6,17],[12,21],[-99,'u']] },
+251: { width: 0, points: [[5,17],[9,20],[13,17],[-99,'u']] },
+252: { width: 0, points: [[6,18],[6,19],[7,19],[7,18],[-1,-1],[12,18],[12,19],[13,19],[13,18],[-99,'u']] },
+253: { width: 0, points: [[12,21],[6,17],[-99,'y']] },
+255: { width: 0, points: [[6,18],[6,19],[7,19],[7,18],[-1,-1],[12,18],[12,19],[13,19],[13,18],[-99,'y']] },
+
+// Hershey simplex greek font
+
+913: { width: 18, points: [[9,22],[1,1],[-1,-1],[9,22],[17,1],[-1,-1],[4,8],[14,8]] },
+914: { width: 21, points: [[4,22],[4,1],[-1,-1],[4,22],[13,22],[16,21],[17,20],[18,18],[18,16],[17,14],[16,13],[13,12],[-1,-1],[4,12],[13,12],[16,11],[17,10],[18,8],[18,5],[17,3],[16,2],[13,1],[4,1]] },
+915: { width: 17, points: [[4,22],[4,1],[-1,-1],[4,22],[16,22]] },
+916: { width: 18, points: [[9,22],[1,1],[-1,-1],[9,22],[17,1],[-1,-1],[1,1],[17,1]] },
+917: { width: 19, points: [[4,22],[4,1],[-1,-1],[4,22],[17,22],[-1,-1],[4,12],[12,12],[-1,-1],[4,1],[17,1]] },
+918: { width: 20, points: [[17,22],[3,1],[-1,-1],[3,22],[17,22],[-1,-1],[3,1],[17,1]] },
+919: { width: 22, points: [[4,22],[4,1],[-1,-1],[18,22],[18,1],[-1,-1],[4,12],[18,12]] },
+920: { width: 22, points: [[9,22],[7,21],[5,19],[4,17],[3,14],[3,9],[4,6],[5,4],[7,2],[9,1],[13,1],[15,2],[17,4],[18,6],[19,9],[19,14],[18,17],[17,19],[15,21],[13,22],[9,22],[-1,-1],[8,12],[14,12]] },
+921: { width:  8, points: [[4,22],[4,1]] },
+922: { width: 21, points: [[4,22],[4,1],[-1,-1],[18,22],[4,8],[-1,-1],[9,13],[18,1]] },
+923: { width: 18, points: [[9,22],[1,1],[-1,-1],[9,22],[17,1]] },
+924: { width: 24, points: [[4,22],[4,1],[-1,-1],[4,22],[12,1],[-1,-1],[20,22],[12,1],[-1,-1],[20,22],[20,1]] },
+925: { width: 22, points: [[4,22],[4,1],[-1,-1],[4,22],[18,1],[-1,-1],[18,22],[18,1]] },
+926: { width: 18, points: [[2,22],[16,22],[-1,-1],[6,12],[12,12],[-1,-1],[2,1],[16,1]] },
+927: { width: 22, points: [[9,22],[7,21],[5,19],[4,17],[3,14],[3,9],[4,6],[5,4],[7,2],[9,1],[13,1],[15,2],[17,4],[18,6],[19,9],[19,14],[18,17],[17,19],[15,21],[13,22],[9,22]] },
+928: { width: 22, points: [[4,22],[4,1],[-1,-1],[18,22],[18,1],[-1,-1],[4,22],[18,22]] },
+929: { width: 21, points: [[4,22],[4,1],[-1,-1],[4,22],[13,22],[16,21],[17,20],[18,18],[18,15],[17,13],[16,12],[13,11],[4,11]] },
+931: { width: 18, points: [[2,22],[9,12],[2,1],[-1,-1],[2,22],[16,22],[-1,-1],[2,1],[16,1]] },
+932: { width: 16, points: [[8,22],[8,1],[-1,-1],[1,22],[15,22]] },
+933: { width: 18, points: [[2,17],[2,19],[3,21],[4,22],[6,22],[7,21],[8,19],[9,15],[9,1],[-1,-1],[16,17],[16,19],[15,21],[14,22],[12,22],[11,21],[10,19],[9,15]] },
+934: { width: 20, points: [[10,22],[10,1],[-1,-1],[8,17],[5,16],[4,15],[3,13],[3,10],[4,8],[5,7],[8,6],[12,6],[15,7],[16,8],[17,10],[17,13],[16,15],[15,16],[12,17],[8,17]] },
+935: { width: 20, points: [[3,22],[17,1],[-1,-1],[3,1],[17,22]] },
+936: { width: 22, points: [[11,22],[11,1],[-1,-1],[2,16],[3,16],[4,15],[5,11],[6,9],[7,8],[10,7],[12,7],[15,8],[16,9],[17,11],[18,15],[19,16],[20,16]] },
+937: { width: 20, points: [[3,1],[7,1],[4,8],[3,12],[3,16],[4,19],[6,21],[9,22],[11,22],[14,21],[16,19],[17,16],[17,12],[16,8],[13,1],[17,1]] },
+945: { width: 21, points: [[9,15],[7,14],[5,12],[4,10],[3,7],[3,4],[4,2],[6,1],[8,1],[10,2],[13,5],[15,8],[17,12],[18,15],[-1,-1],[9,15],[11,15],[12,14],[13,12],[15,4],[16,2],[17,1],[18,1]] },
+946: { width: 19, points: [[12,22],[10,21],[8,19],[6,15],[5,12],[4,8],[3,2],[2,-6],[-1,-1],[12,22],[14,22],[16,20],[16,17],[15,15],[14,14],[12,13],[9,13],[-1,-1],[9,13],[11,12],[13,10],[14,8],[14,5],[13,3],[12,2],[10,1],[8,1],[6,2],[5,3],[4,6]] },
+947: { width: 19, points: [[1,12],[3,14],[5,15],[6,15],[8,14],[9,13],[10,10],[10,6],[9,1],[-1,-1],[17,15],[16,12],[15,10],[9,1],[7,-3],[6,-6]] },
+948: { width: 18, points: [[11,15],[8,15],[6,14],[4,12],[3,9],[3,6],[4,3],[5,2],[7,1],[9,1],[11,2],[13,4],[14,7],[14,10],[13,13],[11,15],[9,17],[8,19],[8,21],[9,22],[11,22],[13,21],[15,19]] },
+949: { width: 16, points: [[13,13],[12,14],[10,15],[7,15],[5,14],[5,12],[6,10],[9,9],[-1,-1],[9,9],[5,8],[3,6],[3,4],[4,2],[6,1],[9,1],[11,2],[13,4]] },
+950: { width: 15, points: [[10,22],[8,21],[7,20],[7,19],[8,18],[11,17],[14,17],[-1,-1],[14,17],[10,15],[7,13],[4,10],[3,7],[3,5],[4,3],[6,1],[9,-1],[10,-3],[10,-5],[9,-6],[7,-6],[6,-4]] },
+951: { width: 20, points: [[1,11],[2,13],[4,15],[6,15],[7,14],[7,12],[6,8],[4,1],[-1,-1],[6,8],[8,12],[10,14],[12,15],[14,15],[16,13],[16,10],[15,5],[12,-6]] },
+952: { width: 17, points: [[10,22],[8,21],[6,18],[5,16],[4,13],[3,8],[3,4],[4,2],[5,1],[7,1],[9,2],[11,5],[12,7],[13,10],[14,15],[14,19],[13,21],[12,22],[10,22],[-1,-1],[4,12],[13,12]] },
+953: { width: 11, points: [[6,15],[4,8],[3,4],[3,2],[4,1],[6,1],[8,3],[9,5]] },
+954: { width: 18, points: [[6,15],[2,1],[-1,-1],[16,14],[15,15],[14,15],[12,14],[8,10],[6,9],[5,9],[-1,-1],[5,9],[7,8],[8,7],[10,2],[11,1],[12,1],[13,2]] },
+955: { width: 16, points: [[1,22],[3,22],[5,21],[6,20],[14,1],[-1,-1],[8,15],[2,1]] },
+956: { width: 21, points: [[7,15],[1,-6],[-1,-1],[6,11],[5,6],[5,3],[7,1],[9,1],[11,2],[13,4],[15,8],[-1,-1],[17,15],[15,8],[14,4],[14,2],[15,1],[17,1],[19,3],[20,5]] },
+957: { width: 18, points: [[3,15],[6,15],[5,9],[4,4],[3,1],[-1,-1],[16,15],[15,12],[14,10],[12,7],[9,4],[6,2],[3,1]] },
+958: { width: 16, points: [[10,22],[8,21],[7,20],[7,19],[8,18],[11,17],[14,17],[-1,-1],[11,17],[8,16],[6,15],[5,13],[5,11],[7,9],[10,8],[12,8],[-1,-1],[10,8],[6,7],[4,6],[3,4],[3,2],[5,0],[9,-2],[10,-3],[10,-5],[8,-6],[6,-6]] },
+959: { width: 17, points: [[8,15],[6,14],[4,12],[3,9],[3,6],[4,3],[5,2],[7,1],[9,1],[11,2],[13,4],[14,7],[14,10],[13,13],[12,14],[10,15],[8,15]] },
+960: { width: 18, points: [[6,15],[2,1],[-1,-1],[16,14],[15,15],[14,15],[12,14],[8,10],[6,9],[5,9],[-1,-1],[5,9],[7,8],[8,7],[10,2],[11,1],[12,1],[13,2]] },
+960: { width: 22, points: [[9,15],[5,1],[-1,-1],[14,15],[15,9],[16,4],[17,1],[-1,-1],[2,12],[4,14],[7,15],[20,15]] },
+961: { width: 18, points: [[4,9],[4,6],[5,3],[6,2],[8,1],[10,1],[12,2],[14,4],[15,7],[15,10],[14,13],[13,14],[11,15],[9,15],[7,14],[5,12],[4,9],[0,-6]] },
+962: { width: 18, points: [[15,13],[14,14],[11,15],[8,15],[5,14],[4,13],[3,11],[3,9],[4,7],[6,5],[10,2],[11,0],[11,-2],[10,-3],[8,-3]] },
+963: { width: 18, points: [[3,15],[6,15],[5,9],[4,4],[3,1],[-1,-1],[16,15],[15,12],[14,10],[12,7],[9,4],[6,2],[3,1]] },
+963: { width: 20, points: [[18,15],[8,15],[6,14],[4,12],[3,9],[3,6],[4,3],[5,2],[7,1],[9,1],[11,2],[13,4],[14,7],[14,10],[13,13],[12,14],[10,15]] },
+964: { width: 20, points: [[11,15],[8,1],[-1,-1],[2,12],[4,14],[7,15],[18,15]] },
+965: { width: 20, points: [[1,11],[2,13],[4,15],[6,15],[7,14],[7,12],[5,6],[5,3],[7,1],[9,1],[12,2],[14,4],[16,8],[17,12],[17,15]] },
+966: { width: 22, points: [[8,14],[6,13],[4,11],[3,8],[3,5],[4,3],[5,2],[7,1],[10,1],[13,2],[16,4],[18,7],[19,10],[19,13],[17,15],[15,15],[13,13],[11,9],[9,4],[6,-6]] },
+967: { width: 18, points: [[2,15],[4,15],[6,13],[12,-4],[14,-6],[16,-6],[-1,-1],[17,15],[16,13],[14,10],[4,-1],[2,-4],[1,-6]] },
+968: { width: 23, points: [[16,22],[8,-6],[-1,-1],[1,11],[2,13],[4,15],[6,15],[7,14],[7,12],[6,7],[6,4],[7,2],[9,1],[11,1],[14,2],[16,4],[18,7],[20,12],[21,15]] },
+969: { width: 23, points: [[8,15],[6,14],[4,11],[3,8],[3,5],[4,2],[5,1],[7,1],[9,2],[11,5],[-1,-1],[12,9],[11,5],[12,2],[13,1],[15,1],[17,2],[19,5],[20,8],[20,11],[19,14],[18,15]] },
+977: { width: 21, points: [[1,11],[2,13],[4,15],[6,15],[7,14],[7,12],[6,7],[6,4],[7,2],[8,1],[10,1],[12,2],[14,5],[15,7],[16,10],[17,15],[17,18],[16,21],[14,22],[12,22],[11,20],[11,18],[12,15],[14,12],[16,10],[19,8]] },
+981: { width: 20, points: [[14,22],[6,-6],[-1,-1],[9,15],[6,14],[4,12],[3,9],[3,6],[4,4],[6,2],[9,1],[11,1],[14,2],[16,4],[17,7],[17,10],[16,12],[14,14],[11,15],[9,15]] },
+982: { width: 23, points: [[9,14],[6,13],[4,11],[3,8],[3,5],[4,2],[5,1],[7,1],[9,2],[11,5],[-1,-1],[12,9],[11,5],[12,2],[13,1],[15,1],[17,2],[19,5],[20,8],[20,11],[19,14],[18,15],[-1,-1],[2,14],[4,15],[20,15]] },
+986: { width: 18, points: [[15,13],[14,14],[11,15],[8,15],[5,14],[4,13],[3,11],[3,9],[4,7],[6,5],[10,2],[11,0],[11,-2],[10,-3],[8,-3]] },
+
+// Hershey math symbols
+
+8501: { width: 20, points: [[3,19],[4,17],[16,5],[17,3],[17,1],[-1,-1],[4,16],[16,4],[-1,-1],[3,19],[3,17],[4,15],[16,3],[17,1],[-1,-1],[8,12],[4,8],[3,6],[3,4],[4,2],[3,1],[-1,-1],[3,6],[5,2],[-1,-1],[4,8],[4,6],[5,4],[5,2],[3,1],[-1,-1],[11,9],[16,14],[-1,-1],[14,19],[14,16],[15,14],[17,14],[17,16],[15,17],[14,19],[-1,-1],[14,19],[15,16],[17,14]] },
+8592: { width: 26, points: [[7,12],[4,10],[7,8],[-1,-1],[10,15],[5,10],[10,5],[-1,-1],[5,10],[22,10]] },
+8593: { width: 16, points: [[6,16],[8,19],[10,16],[-1,-1],[3,13],[8,18],[13,13],[-1,-1],[8,18],[8,1]] },
+8594: { width: 26, points: [[19,12],[22,10],[19,8],[-1,-1],[16,15],[21,10],[16,5],[-1,-1],[4,10],[21,10]] },
+8595: { width: 16, points: [[6,4],[8,1],[10,4],[-1,-1],[3,7],[8,2],[13,7],[-1,-1],[8,19],[8,2]] },
+8706: { width: 19, points: [[15,10],[14,13],[13,14],[11,15],[9,15],[6,14],[4,11],[3,8],[3,5],[4,3],[5,2],[7,1],[9,1],[12,2],[14,4],[15,7],[16,12],[16,17],[15,20],[14,21],[12,22],[9,22],[7,21],[6,20],[6,19],[7,19],[7,20],[-1,-1],[9,15],[7,14],[5,11],[4,8],[4,4],[5,2],[-1,-1],[9,1],[11,2],[13,4],[14,7],[15,12],[15,17],[14,20],[12,22]] },
+8710: { width: 20, points: [[2,1],[10,22],[-1,-1],[17,1],[10,20],[-1,-1],[18,1],[10,22],[-1,-1],[2,1],[18,1],[-1,-1],[3,2],[17,2]] },
+8711: { width: 20, points: [[2,22],[10,1],[-1,-1],[3,22],[10,3],[-1,-1],[18,22],[10,1],[-1,-1],[2,22],[18,22],[-1,-1],[3,21],[17,21]] },
+8712: { width: 24, points: [[20,18],[13,18],[9,17],[7,16],[5,14],[4,11],[4,9],[5,6],[7,4],[9,3],[13,2],[20,2],[-1,-1],[4,10],[16,10]] },
+8713: { width: 24, points: [[20,18],[13,18],[9,17],[7,16],[5,14],[4,11],[4,9],[5,6],[7,4],[9,3],[13,2],[20,2],[-1,-1],[4,10],[16,10],[-1,-1],[18,19],[6,1]] },
+8719: { width: 34, points: [[7,26],[7,-6],[-1,-1],[8,26],[8,-6],[-1,-1],[26,26],[26,-6],[-1,-1],[27,26],[27,-6],[-1,-1],[3,26],[31,26],[-1,-1],[3,-6],[12,-6],[-1,-1],[22,-6],[31,-6]] },
+8721: { width: 31, points: [[5,26],[15,12],[4,-6],[-1,-1],[4,26],[14,12],[-1,-1],[3,26],[14,11],[-1,-1],[3,26],[26,26],[28,19],[25,26],[-1,-1],[5,-5],[26,-5],[-1,-1],[4,-6],[26,-6],[28,1],[25,-6]] },
+8728: { width:  16, points: [[7,13],[5,11],[5,9],[7,7],[9,7],[11,9],[11,11],[9,13],[7,13]] },
+8729: { width:  16, points: [[7,13],[5,11],[5,9],[7,7],[9,7],[11,9],[11,11],[9,13],[7,13],[-1,-1],[7,12],[6,11],[6,9],[7,8],[9,8],[10,9],[10,11],[9,12],[7,12],[-1,-1],[8,11],[7,10],[8,9],[9,10],[8,11]] },
+8730: { width: 22, points: [[3,15],[7,15],[13,3],[-1,-1],[6,15],[13,1],[-1,-1],[22,26],[13,1]] },
+8733: { width: 25, points: [[21,5],[19,5],[17,6],[15,8],[12,12],[11,13],[9,14],[7,14],[5,13],[4,11],[4,9],[5,7],[7,6],[9,6],[11,7],[12,8],[15,12],[17,14],[19,15],[21,15]] },
+8734: { width: 25, points: [[22,9],[21,7],[19,6],[17,6],[15,7],[14,8],[11,12],[10,13],[8,14],[6,14],[4,13],[3,11],[3,9],[4,7],[6,6],[8,6],[10,7],[11,8],[14,12],[15,13],[17,14],[19,14],[21,13],[22,11],[22,9]] },
+8745: { width: 24, points: [[4,2],[4,9],[5,13],[6,15],[8,17],[11,18],[13,18],[16,17],[18,15],[19,13],[20,9],[20,2]] },
+8746: { width: 24, points: [[4,18],[4,11],[5,7],[6,5],[8,3],[11,2],[13,2],[16,3],[18,5],[19,7],[20,11],[20,18]] },
+8747: { width: 24, points: [[21,25],[20,24],[21,23],[22,24],[22,25],[21,26],[19,26],[17,25],[15,23],[14,21],[13,18],[12,14],[10,2],[9,-2],[8,-4],[-1,-1],[16,24],[15,22],[14,18],[12,6],[11,2],[10,-1],[9,-3],[7,-5],[5,-6],[3,-6],[2,-5],[2,-4],[3,-3],[4,-4],[3,-5]] },
+8771: { width: 24, points: [[3,10],[3,11],[4,13],[6,14],[8,14],[10,13],[14,11],[16,10],[18,10],[20,11],[22,13],[22,14],[-1,-1],[3,6],[22,6]] },
+8776: { width: 24, points: [[3,10],[3,11],[4,13],[6,14],[8,14],[10,13],[14,11],[16,10],[18,10],[20,11],[22,13],[22,14],[-1,-1],[3,4],[3,5],[4,7],[6,8],[8,8],[10,7],[14,5],[16,4],[18,4],[20,5],[22,7],[22,8]] },
+8800: { width: 24, points: [[18,19],[6,1],[-1,-1],[3,12],[20,12],[-1,-1],[3,6],[20,6]] },
+8804: { width: 24, points: [[20,4],[4,11],[20,18],[-1,-1],[4,0],[20,0]] },
+8805: { width: 24, points: [[4,4],[20,11],[4,18],[-1,-1],[4,0],[20,0]] },
+8834: { width: 24, points: [[20,18],[13,18],[9,17],[7,16],[5,14],[4,11],[4,9],[5,6],[7,4],[9,3],[13,2],[20,2]] },
+8835: { width: 24, points: [[4,18],[11,18],[15,17],[17,16],[19,14],[20,11],[20,9],[19,6],[17,4],[15,3],[11,2],[4,2]] },
+8838: { width: 24, points: [[20,20],[13,20],[9,19],[7,18],[5,16],[4,13],[4,11],[5,8],[7,6],[9,5],[13,4],[20,4],[-1,-1],[4,0],[20,0]] },
+8839: { width: 24, points: [[4,20],[11,20],[15,19],[17,18],[19,16],[20,13],[20,11],[19,8],[17,6],[15,5],[11,4],[4,4],[-1,-1],[4,0],[20,0]] },
+8853: { width: 20, points: [[9,17],[6,16],[4,14],[3,11],[3,9],[4,6],[6,4],[9,3],[11,3],[14,4],[16,6],[17,9],[17,11],[16,14],[14,16],[11,17],[9,17],[-1,-1],[5,10],[15,10],[-1,-1],[10,5],[10,15]] },
+8855: { width: 20, points: [[9,17],[6,16],[4,14],[3,11],[3,9],[4,6],[6,4],[9,3],[11,3],[14,4],[16,6],[17,9],[17,11],[16,14],[14,16],[11,17],[9,17],[-1,-1],[6,6],[14,14],[-1,-1],[14,6],[6,14]] },
+8857: { width: 20, points: [[9,17],[6,16],[4,14],[3,11],[3,9],[4,6],[6,4],[9,3],[11,3],[14,4],[16,6],[17,9],[17,11],[16,14],[14,16],[11,17],[9,17],[-1,-1],[10,11],[9,10],[10,9],[11,10],[10,11]] },
+9737: { width: 27, points: [[12,22],[9,21],[6,19],[4,16],[3,13],[3,10],[4,7],[6,4],[9,2],[12,1],[15,1],[18,2],[21,4],[23,7],[24,10],[24,13],[23,16],[21,19],[18,21],[15,22],[12,22],[-1,-1],[13,13],[12,12],[12,11],[13,10],[14,10],[15,11],[15,12],[14,13],[13,13],[-1,-1],[13,12],[13,11],[14,11],[14,12],[13,12]] },
+
+// Miscellaneous glyphs (EAM)
+
+176: { width: 14, points: [[6,22],[4,21],[3,19],[3,17],[4,15],[6,14],[8,14],[10,15],[11,17],[11,19],[10,21],[8,22],[6,22]] },
+177: { width: 20, points: [[10,15],[10,5],[-1,-1],[4,10],[16,10],[-1,-1],[4,2],[16,2]] },
+181: { width: 0, points: [[-99,956]] },
+183: { width: 10, points: [[5,11],[4,10],[5,9],[6,10],[5,11]] },
+188: { width: 23, points: [[4,0],[16,20],[-1,-1],[2,18],[4,20],[4,10],[-1,-1],[21,3],[12,3],[17,12],[18,12],[18,-1]] },
+189: { width: 23, points: [[4,0],[16,20],[-1,-1],[2,18],[4,20],[4,10],[-1,-1],[14,8],[16,10],[18,10],[20,8],[20,6],[14,1],[14,0],[21,0]] },
+215: { width: 20, points: [[4,16],[16,4],[-1,-1],[4,4],[16,16]] },
+402: { width: 15, points: [[15,21],[14,20],[15,19],[16,20],[16,21],[15,22],[13,22],[11,21],[10,20],[9,18],[8,15],[5,1],[4,-3],[3,-5],[-1,-1],[13,22],[11,20],[10,18],[9,14],[7,5],[6,1],[5,-2],[4,-4],[3,-5],[1,-6],[-1,-6],[-2,-5],[-2,-4],[-1,-3],[0,-4],[-1,-5],[-1,-1],[4,15],[14,15]] },
+8242: { width: 8, points: [[5,24],[3,16],[-1,-1],[3,16],[6,24]] },
+8243: { width: 11, points: [[4,24],[2,16],[-1,-1],[2,16],[5,24],[-1,-1],[9,24],[7,16],[-1,-1],[7,16],[10,24]] },
+8463: { width: 21, points: [[9,22],[3,1],[-1,-1],[5,7],[7,11],[9,13],[11,14],[13,14],[15,14],[16,12],[16,10],[14,5],[14,2],[15,1],[19,3],[-1,-1],[7,21],[9,22],[-1,-1],[4,15],[14,20]] },
+8491: { width: 0, points: [[-99,197]] },
+8495: { width: 18, points: [[4,6],[8,7],[11,8],[14,10],[15,12],[14,14],[12,15],[9,15],[6,14],[4,11],[3,8],[3,5],[4,3],[5,2],[7,1],[9,1],[12,2],[14,4],[-1,-1],[9,15],[7,14],[5,11],[4,8],[4,4],[5,2]] },
+
+// Used to indicate missing glyph
+129: { width: 18, points: [[2,-2],[2,21],[16,21],[16,-2],[2,-2]] }
+};
+
+
+CanvasTextFunctions.letter = function (ch)
+{
+    glyph = CanvasTextFunctions.letters[ch];
+
+    // EAM - Draw an empty box for undefined glyphs
+    if (glyph == undefined)
+       glyph = CanvasTextFunctions.letters[129];
+
+    return glyph;
+}
+
+CanvasTextFunctions.ascent = function( font, size)
+{
+    return size;
+}
+
+CanvasTextFunctions.descent = function( font, size)
+{
+    return 7.0*size/25.0;
+}
+
+CanvasTextFunctions.measure = function( font, size, str)
+{
+    var total = 0;
+    var len = str.length;
+
+    for ( i = 0; i < len; i++) {
+       var index = str.charAt(i);
+       // EAM deal with non-ascii characaters
+       if (index > '~')
+           index = str.charCodeAt(i);
+
+       var c = CanvasTextFunctions.letter(index);
+       if (!c) break;
+       total += c.width * size / 25.0;
+       if (c.width == 0) {
+           for ( j = 0; j < c.points.length; j++) {
+               var a = c.points[j];
+               if (a[0] == -99)
+                   total += CanvasTextFunctions.letter(a[1]).width * size / 25.0;
+           }
+       }
+    }
+    return total;
+}
+
+CanvasTextFunctions.draw = function(ctx,font,size,x,y,str)
+{
+    var total = 0;
+    var len = str.length;
+    var mag = size / 25.0;
+    var composite = 0;
+    var xorig = x;
+
+    ctx.save();
+    ctx.lineCap = "round";
+    ctx.lineWidth = 2.0 * mag;
+
+    for (var i = 0; i < len; i++) {
+       var index = str.charAt(i);
+
+       // EAM tab and newline
+       if (index == '  ') {
+           var tabstop = 48 * mag;
+           x = tabstop * Math.ceil(x/tabstop);
+           continue;
+       } else if (index < ' ') {
+           x = xorig; y += size;
+           continue;
+       }
+       // EAM deal with non-ascii characaters
+       if (index > '~')
+           index = str.charCodeAt(i);
+
+       // EAM allow composing characters
+       if (composite != 0) {
+           index = composite;
+           composite = 0;
+       }
+
+       var c = CanvasTextFunctions.letter(index);
+       if ( !c) continue;
+
+       ctx.beginPath();
+
+       var penUp = 1;
+       var needStroke = 0;
+       for (var j = 0; j < c.points.length; j++) {
+           var a = c.points[j];
+           if ( a[0] == -1 && a[1] == -1) {
+               penUp = 1;
+               continue;
+           }
+           if ( a[0] == -99 ) {
+               composite = a[1];
+               i--;
+               break;
+           }
+           if ( penUp) {
+               ctx.moveTo( x + a[0]*mag, y - a[1]*mag);
+               penUp = false;
+           } else {
+               ctx.lineTo( x + a[0]*mag, y - a[1]*mag);
+           }
+       }
+       ctx.stroke();
+       x += c.width*mag;
+    }
+    ctx.restore();
+    return total;
+}
+
+CanvasTextFunctions.enable = function( ctx)
+{
+    ctx.drawText = function(font,size,x,y,text) { return CanvasTextFunctions.draw( ctx, font,size,x,y,text); };
+    ctx.measureText = function(font,size,text) { return CanvasTextFunctions.measure( font,size,text); };
+    ctx.fontAscent = function(font,size) { return CanvasTextFunctions.ascent(font,size); }
+    ctx.fontDescent = function(font,size) { return CanvasTextFunctions.descent(font,size); }
+
+    ctx.drawTextRight = function(font,size,x,y,text) { 
+       var w = CanvasTextFunctions.measure(font,size,text);
+       return CanvasTextFunctions.draw( ctx, font,size,x-w,y,text); 
+    };
+    ctx.drawTextCenter = function(font,size,x,y,text) { 
+       var w = CanvasTextFunctions.measure(font,size,text);
+       return CanvasTextFunctions.draw( ctx, font,size,x-w/2,y,text); 
+    };
+}
+
diff --git a/util/X86MAC64/share/gnuplot/4.6/js/canvastext.js b/util/X86MAC64/share/gnuplot/4.6/js/canvastext.js
new file mode 100644 (file)
index 0000000..4a18cdf
--- /dev/null
@@ -0,0 +1,211 @@
+/*
+ * $Id: canvastext.js,v 1.3 2009/02/22 19:14:05 sfeam Exp $
+ */
+// The canvastext.js code was released to the public domain by Jim Studt, 2007.
+// He may keep some sort of up to date copy at http://www.federated.com/~jim/canvastext/
+// Feb 2009 Ethan A Merritt (EAM) Modify code to work in non-ascii environments.
+//
+var CanvasTextFunctions = { };
+
+CanvasTextFunctions.letters = {
+    ' ': { width: 16, points: [] },
+    '!': { width: 10, points: [[5,21],[5,7],[-1,-1],[5,2],[4,1],[5,0],[6,1],[5,2]] },
+    '"': { width: 16, points: [[4,21],[4,14],[-1,-1],[12,21],[12,14]] },
+    '#': { width: 21, points: [[11,25],[4,-7],[-1,-1],[17,25],[10,-7],[-1,-1],[4,12],[18,12],[-1,-1],[3,6],[17,6]] },
+    '$': { width: 20, points: [[8,25],[8,-4],[-1,-1],[12,25],[12,-4],[-1,-1],[17,18],[15,20],[12,21],[8,21],[5,20],[3,18],[3,16],[4,14],[5,13],[7,12],[13,10],[15,9],[16,8],[17,6],[17,3],[15,1],[12,0],[8,0],[5,1],[3,3]] },
+    '%': { width: 24, points: [[21,21],[3,0],[-1,-1],[8,21],[10,19],[10,17],[9,15],[7,14],[5,14],[3,16],[3,18],[4,20],[6,21],[8,21],[10,20],[13,19],[16,19],[19,20],[21,21],[-1,-1],[17,7],[15,6],[14,4],[14,2],[16,0],[18,0],[20,1],[21,3],[21,5],[19,7],[17,7]] },
+    '&': { width: 26, points: [[23,12],[23,13],[22,14],[21,14],[20,13],[19,11],[17,6],[15,3],[13,1],[11,0],[7,0],[5,1],[4,2],[3,4],[3,6],[4,8],[5,9],[12,13],[13,14],[14,16],[14,18],[13,20],[11,21],[9,20],[8,18],[8,16],[9,13],[11,10],[16,3],[18,1],[20,0],[22,0],[23,1],[23,2]] },
+    '\'': { width: 10, points: [[5,19],[4,20],[5,21],[6,20],[6,18],[5,16],[4,15]] },
+    '(': { width: 14, points: [[11,25],[9,23],[7,20],[5,16],[4,11],[4,7],[5,2],[7,-2],[9,-5],[11,-7]] },
+    ')': { width: 14, points: [[3,25],[5,23],[7,20],[9,16],[10,11],[10,7],[9,2],[7,-2],[5,-5],[3,-7]] },
+    '*': { width: 16, points: [[8,21],[8,9],[-1,-1],[3,18],[13,12],[-1,-1],[13,18],[3,12]] },
+    '+': { width: 26, points: [[13,18],[13,0],[-1,-1],[4,9],[22,9]] },
+    ',': { width: 10, points: [[6,1],[5,0],[4,1],[5,2],[6,1],[6,-1],[5,-3],[4,-4]] },
+    '-': { width: 26, points: [[4,9],[22,9]] },
+    '.': { width: 10, points: [[5,2],[4,1],[5,0],[6,1],[5,2]] },
+    '/': { width: 22, points: [[20,25],[2,-7]] },
+    '0': { width: 20, points: [[9,21],[6,20],[4,17],[3,12],[3,9],[4,4],[6,1],[9,0],[11,0],[14,1],[16,4],[17,9],[17,12],[16,17],[14,20],[11,21],[9,21]] },
+    '1': { width: 20, points: [[6,17],[8,18],[11,21],[11,0]] },
+    '2': { width: 20, points: [[4,16],[4,17],[5,19],[6,20],[8,21],[12,21],[14,20],[15,19],[16,17],[16,15],[15,13],[13,10],[3,0],[17,0]] },
+    '3': { width: 20, points: [[5,21],[16,21],[10,13],[13,13],[15,12],[16,11],[17,8],[17,6],[16,3],[14,1],[11,0],[8,0],[5,1],[4,2],[3,4]] },
+    '4': { width: 20, points: [[13,21],[3,7],[18,7],[-1,-1],[13,21],[13,0]] },
+    '5': { width: 20, points: [[15,21],[5,21],[4,12],[5,13],[8,14],[11,14],[14,13],[16,11],[17,8],[17,6],[16,3],[14,1],[11,0],[8,0],[5,1],[4,2],[3,4]] },
+    '6': { width: 20, points: [[16,18],[15,20],[12,21],[10,21],[7,20],[5,17],[4,12],[4,7],[5,3],[7,1],[10,0],[11,0],[14,1],[16,3],[17,6],[17,7],[16,10],[14,12],[11,13],[10,13],[7,12],[5,10],[4,7]] },
+    '7': { width: 20, points: [[17,21],[7,0],[-1,-1],[3,21],[17,21]] },
+    '8': { width: 20, points: [[8,21],[5,20],[4,18],[4,16],[5,14],[7,13],[11,12],[14,11],[16,9],[17,7],[17,4],[16,2],[15,1],[12,0],[8,0],[5,1],[4,2],[3,4],[3,7],[4,9],[6,11],[9,12],[13,13],[15,14],[16,16],[16,18],[15,20],[12,21],[8,21]] },
+    '9': { width: 20, points: [[16,14],[15,11],[13,9],[10,8],[9,8],[6,9],[4,11],[3,14],[3,15],[4,18],[6,20],[9,21],[10,21],[13,20],[15,18],[16,14],[16,9],[15,4],[13,1],[10,0],[8,0],[5,1],[4,3]] },
+    ':': { width: 10, points: [[5,14],[4,13],[5,12],[6,13],[5,14],[-1,-1],[5,2],[4,1],[5,0],[6,1],[5,2]] },
+    ';': { width: 10, points: [[5,14],[4,13],[5,12],[6,13],[5,14],[-1,-1],[6,1],[5,0],[4,1],[5,2],[6,1],[6,-1],[5,-3],[4,-4]] },
+    '<': { width: 24, points: [[20,18],[4,9],[20,0]] },
+    '=': { width: 26, points: [[4,12],[22,12],[-1,-1],[4,6],[22,6]] },
+    '>': { width: 24, points: [[4,18],[20,9],[4,0]] },
+    '?': { width: 18, points: [[3,16],[3,17],[4,19],[5,20],[7,21],[11,21],[13,20],[14,19],[15,17],[15,15],[14,13],[13,12],[9,10],[9,7],[-1,-1],[9,2],[8,1],[9,0],[10,1],[9,2]] },
+    '@': { width: 27, points: [[18,13],[17,15],[15,16],[12,16],[10,15],[9,14],[8,11],[8,8],[9,6],[11,5],[14,5],[16,6],[17,8],[-1,-1],[12,16],[10,14],[9,11],[9,8],[10,6],[11,5],[-1,-1],[18,16],[17,8],[17,6],[19,5],[21,5],[23,7],[24,10],[24,12],[23,15],[22,17],[20,19],[18,20],[15,21],[12,21],[9,20],[7,19],[5,17],[4,15],[3,12],[3,9],[4,6],[5,4],[7,2],[9,1],[12,0],[15,0],[18,1],[20,2],[21,3],[-1,-1],[19,16],[18,8],[18,6],[19,5]] },
+    'A': { width: 18, points: [[9,21],[1,0],[-1,-1],[9,21],[17,0],[-1,-1],[4,7],[14,7]] },
+    'B': { width: 21, points: [[4,21],[4,0],[-1,-1],[4,21],[13,21],[16,20],[17,19],[18,17],[18,15],[17,13],[16,12],[13,11],[-1,-1],[4,11],[13,11],[16,10],[17,9],[18,7],[18,4],[17,2],[16,1],[13,0],[4,0]] },
+    'C': { width: 21, points: [[18,16],[17,18],[15,20],[13,21],[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5]] },
+    'D': { width: 21, points: [[4,21],[4,0],[-1,-1],[4,21],[11,21],[14,20],[16,18],[17,16],[18,13],[18,8],[17,5],[16,3],[14,1],[11,0],[4,0]] },
+    'E': { width: 19, points: [[4,21],[4,0],[-1,-1],[4,21],[17,21],[-1,-1],[4,11],[12,11],[-1,-1],[4,0],[17,0]] },
+    'F': { width: 18, points: [[4,21],[4,0],[-1,-1],[4,21],[17,21],[-1,-1],[4,11],[12,11]] },
+    'G': { width: 21, points: [[18,16],[17,18],[15,20],[13,21],[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5],[18,8],[-1,-1],[13,8],[18,8]] },
+    'H': { width: 22, points: [[4,21],[4,0],[-1,-1],[18,21],[18,0],[-1,-1],[4,11],[18,11]] },
+    'I': { width: 8, points: [[4,21],[4,0]] },
+    'J': { width: 16, points: [[12,21],[12,5],[11,2],[10,1],[8,0],[6,0],[4,1],[3,2],[2,5],[2,7]] },
+    'K': { width: 21, points: [[4,21],[4,0],[-1,-1],[18,21],[4,7],[-1,-1],[9,12],[18,0]] },
+    'L': { width: 17, points: [[4,21],[4,0],[-1,-1],[4,0],[16,0]] },
+    'M': { width: 24, points: [[4,21],[4,0],[-1,-1],[4,21],[12,0],[-1,-1],[20,21],[12,0],[-1,-1],[20,21],[20,0]] },
+    'N': { width: 22, points: [[4,21],[4,0],[-1,-1],[4,21],[18,0],[-1,-1],[18,21],[18,0]] },
+    'O': { width: 22, points: [[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5],[19,8],[19,13],[18,16],[17,18],[15,20],[13,21],[9,21]] },
+    'P': { width: 21, points: [[4,21],[4,0],[-1,-1],[4,21],[13,21],[16,20],[17,19],[18,17],[18,14],[17,12],[16,11],[13,10],[4,10]] },
+    'Q': { width: 22, points: [[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5],[19,8],[19,13],[18,16],[17,18],[15,20],[13,21],[9,21],[-1,-1],[12,4],[18,-2]] },
+    'R': { width: 21, points: [[4,21],[4,0],[-1,-1],[4,21],[13,21],[16,20],[17,19],[18,17],[18,15],[17,13],[16,12],[13,11],[4,11],[-1,-1],[11,11],[18,0]] },
+    'S': { width: 20, points: [[17,18],[15,20],[12,21],[8,21],[5,20],[3,18],[3,16],[4,14],[5,13],[7,12],[13,10],[15,9],[16,8],[17,6],[17,3],[15,1],[12,0],[8,0],[5,1],[3,3]] },
+    'T': { width: 16, points: [[8,21],[8,0],[-1,-1],[1,21],[15,21]] },
+    'U': { width: 22, points: [[4,21],[4,6],[5,3],[7,1],[10,0],[12,0],[15,1],[17,3],[18,6],[18,21]] },
+    'V': { width: 18, points: [[1,21],[9,0],[-1,-1],[17,21],[9,0]] },
+    'W': { width: 24, points: [[2,21],[7,0],[-1,-1],[12,21],[7,0],[-1,-1],[12,21],[17,0],[-1,-1],[22,21],[17,0]] },
+    'X': { width: 20, points: [[3,21],[17,0],[-1,-1],[17,21],[3,0]] },
+    'Y': { width: 18, points: [[1,21],[9,11],[9,0],[-1,-1],[17,21],[9,11]] },
+    'Z': { width: 20, points: [[17,21],[3,0],[-1,-1],[3,21],[17,21],[-1,-1],[3,0],[17,0]] },
+    '[': { width: 14, points: [[4,25],[4,-7],[-1,-1],[5,25],[5,-7],[-1,-1],[4,25],[11,25],[-1,-1],[4,-7],[11,-7]] },
+    '\\': { width: 14, points: [[0,21],[14,-3]] },
+    ']': { width: 14, points: [[9,25],[9,-7],[-1,-1],[10,25],[10,-7],[-1,-1],[3,25],[10,25],[-1,-1],[3,-7],[10,-7]] },
+    '^': { width: 16, points: [[5,15],[8,19],[11,15],[-1,-1],[2,12],[8,18],[14,12]] },
+    '_': { width: 16, points: [[0,-2],[16,-2]] },
+    '`': { width: 10, points: [[6,21],[5,20],[4,18],[4,16],[5,15],[6,16],[5,17]] },
+    'a': { width: 19, points: [[15,14],[15,0],[-1,-1],[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]] },
+    'b': { width: 19, points: [[4,21],[4,0],[-1,-1],[4,11],[6,13],[8,14],[11,14],[13,13],[15,11],[16,8],[16,6],[15,3],[13,1],[11,0],[8,0],[6,1],[4,3]] },
+    'c': { width: 18, points: [[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]] },
+    'd': { width: 19, points: [[15,21],[15,0],[-1,-1],[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]] },
+    'e': { width: 18, points: [[3,8],[15,8],[15,10],[14,12],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]] },
+    'f': { width: 12, points: [[10,21],[8,21],[6,20],[5,17],[5,0],[-1,-1],[2,14],[9,14]] },
+    'g': { width: 19, points: [[15,14],[15,-2],[14,-5],[13,-6],[11,-7],[8,-7],[6,-6],[-1,-1],[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]] },
+    'h': { width: 19, points: [[4,21],[4,0],[-1,-1],[4,10],[7,13],[9,14],[12,14],[14,13],[15,10],[15,0]] },
+    'i': { width: 8, points: [[3,21],[4,20],[5,21],[4,22],[3,21],[-1,-1],[4,14],[4,0]] },
+    'j': { width: 10, points: [[5,21],[6,20],[7,21],[6,22],[5,21],[-1,-1],[6,14],[6,-3],[5,-6],[3,-7],[1,-7]] },
+    'k': { width: 17, points: [[4,21],[4,0],[-1,-1],[14,14],[4,4],[-1,-1],[8,8],[15,0]] },
+    'l': { width: 8, points: [[4,21],[4,0]] },
+    'm': { width: 30, points: [[4,14],[4,0],[-1,-1],[4,10],[7,13],[9,14],[12,14],[14,13],[15,10],[15,0],[-1,-1],[15,10],[18,13],[20,14],[23,14],[25,13],[26,10],[26,0]] },
+    'n': { width: 19, points: [[4,14],[4,0],[-1,-1],[4,10],[7,13],[9,14],[12,14],[14,13],[15,10],[15,0]] },
+    'o': { width: 19, points: [[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3],[16,6],[16,8],[15,11],[13,13],[11,14],[8,14]] },
+    'p': { width: 19, points: [[4,14],[4,-7],[-1,-1],[4,11],[6,13],[8,14],[11,14],[13,13],[15,11],[16,8],[16,6],[15,3],[13,1],[11,0],[8,0],[6,1],[4,3]] },
+    'q': { width: 19, points: [[15,14],[15,-7],[-1,-1],[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]] },
+    'r': { width: 13, points: [[4,14],[4,0],[-1,-1],[4,8],[5,11],[7,13],[9,14],[12,14]] },
+    's': { width: 17, points: [[14,11],[13,13],[10,14],[7,14],[4,13],[3,11],[4,9],[6,8],[11,7],[13,6],[14,4],[14,3],[13,1],[10,0],[7,0],[4,1],[3,3]] },
+    't': { width: 12, points: [[5,21],[5,4],[6,1],[8,0],[10,0],[-1,-1],[2,14],[9,14]] },
+    'u': { width: 19, points: [[4,14],[4,4],[5,1],[7,0],[10,0],[12,1],[15,4],[-1,-1],[15,14],[15,0]] },
+    'v': { width: 16, points: [[2,14],[8,0],[-1,-1],[14,14],[8,0]] },
+    'w': { width: 22, points: [[3,14],[7,0],[-1,-1],[11,14],[7,0],[-1,-1],[11,14],[15,0],[-1,-1],[19,14],[15,0]] },
+    'x': { width: 17, points: [[3,14],[14,0],[-1,-1],[14,14],[3,0]] },
+    'y': { width: 16, points: [[2,14],[8,0],[-1,-1],[14,14],[8,0],[6,-4],[4,-6],[2,-7],[1,-7]] },
+    'z': { width: 17, points: [[14,14],[3,0],[-1,-1],[3,14],[14,14],[-1,-1],[3,0],[14,0]] },
+    '{': { width: 14, points: [[9,25],[7,24],[6,23],[5,21],[5,19],[6,17],[7,16],[8,14],[8,12],[6,10],[-1,-1],[7,24],[6,22],[6,20],[7,18],[8,17],[9,15],[9,13],[8,11],[4,9],[8,7],[9,5],[9,3],[8,1],[7,0],[6,-2],[6,-4],[7,-6],[-1,-1],[6,8],[8,6],[8,4],[7,2],[6,1],[5,-1],[5,-3],[6,-5],[7,-6],[9,-7]] },
+    '|': { width: 8, points: [[4,25],[4,-7]] },
+    '}': { width: 14, points: [[5,25],[7,24],[8,23],[9,21],[9,19],[8,17],[7,16],[6,14],[6,12],[8,10],[-1,-1],[7,24],[8,22],[8,20],[7,18],[6,17],[5,15],[5,13],[6,11],[10,9],[6,7],[5,5],[5,3],[6,1],[7,0],[8,-2],[8,-4],[7,-6],[-1,-1],[8,8],[6,6],[6,4],[7,2],[8,1],[9,-1],[9,-3],[8,-5],[7,-6],[5,-7]] },
+    '~': { width: 24, points: [[3,6],[3,8],[4,11],[6,12],[8,12],[10,11],[14,8],[16,7],[18,7],[20,8],[21,10],[-1,-1],[3,8],[4,10],[6,11],[8,11],[10,10],[14,7],[16,6],[18,6],[20,7],[21,10],[21,12]] },
+
+// Miscellaneous glyphs (EAM)
+129: { width: 18, points: [[2,-2],[2,21],[16,21],[16,-2],[2,-2]] },
+176: { width: 8, points: [[3,22],[1,20],[1,18],[3,16],[5,16],[7,18],[7,20],[5,22],[3,22]]},
+197: { width: 18, points: [[9,18],[1,0],[-1,-1],[9,18],[17,0],[-1,-1],[4,7],[14,7],[-1,-1], [8,22],[6,20],[6,18],[8,16],[10,16],[12,18],[12,20],[10,22],[8,22]]},
+215: { width: 26, points: [[6,17],[20,3],[-1,-1],[6,3],[20,17]] }
+};
+
+CanvasTextFunctions.letter = function (ch)
+{
+    glyph = CanvasTextFunctions.letters[ch];
+
+    // EAM - Draw an empty box for undefined glyphs
+    if (glyph == undefined)
+       glyph = CanvasTextFunctions.letters[129];
+
+    return glyph;
+}
+
+CanvasTextFunctions.ascent = function( font, size)
+{
+    return size;
+}
+
+CanvasTextFunctions.descent = function( font, size)
+{
+    return 7.0*size/25.0;
+}
+
+CanvasTextFunctions.measure = function( font, size, str)
+{
+    var total = 0;
+    var len = str.length;
+
+    for ( i = 0; i < len; i++) {
+        var index = str.charAt(i);
+       // EAM deal with non-ascii characaters
+       if (index > '~')
+           index = str.charCodeAt(i);
+
+       var c = CanvasTextFunctions.letter(index);
+       if (c) total += c.width * size / 25.0;
+    }
+    return total;
+}
+
+CanvasTextFunctions.draw = function(ctx,font,size,x,y,str)
+{
+    var total = 0;
+    var len = str.length;
+    var mag = size / 25.0;
+
+    ctx.save();
+    ctx.lineCap = "round";
+    ctx.lineWidth = 2.0 * mag;
+
+    for ( i = 0; i < len; i++) {
+        var index = str.charAt(i);
+       // EAM deal with non-ascii characaters
+       if (index > '~')
+           index = str.charCodeAt(i);
+
+       var c = CanvasTextFunctions.letter(index);
+       if ( !c) continue;
+
+       ctx.beginPath();
+
+       var penUp = 1;
+       var needStroke = 0;
+       for ( j = 0; j < c.points.length; j++) {
+           var a = c.points[j];
+           if ( a[0] == -1 && a[1] == -1) {
+               penUp = 1;
+               continue;
+           }
+           if ( penUp) {
+               ctx.moveTo( x + a[0]*mag, y - a[1]*mag);
+               penUp = false;
+           } else {
+               ctx.lineTo( x + a[0]*mag, y - a[1]*mag);
+           }
+       }
+       ctx.stroke();
+       x += c.width*mag;
+    }
+    ctx.restore();
+    return total;
+}
+
+CanvasTextFunctions.enable = function( ctx)
+{
+    ctx.drawText = function(font,size,x,y,text) { return CanvasTextFunctions.draw( ctx, font,size,x,y,text); };
+    ctx.measureText = function(font,size,text) { return CanvasTextFunctions.measure( font,size,text); };
+    ctx.fontAscent = function(font,size) { return CanvasTextFunctions.ascent(font,size); }
+    ctx.fontDescent = function(font,size) { return CanvasTextFunctions.descent(font,size); }
+
+    ctx.drawTextRight = function(font,size,x,y,text) { 
+       var w = CanvasTextFunctions.measure(font,size,text);
+       return CanvasTextFunctions.draw( ctx, font,size,x-w,y,text); 
+    };
+    ctx.drawTextCenter = function(font,size,x,y,text) { 
+       var w = CanvasTextFunctions.measure(font,size,text);
+       return CanvasTextFunctions.draw( ctx, font,size,x-w/2,y,text); 
+    };
+}
+
diff --git a/util/X86MAC64/share/gnuplot/4.6/js/gnuplot_common.js b/util/X86MAC64/share/gnuplot/4.6/js/gnuplot_common.js
new file mode 100644 (file)
index 0000000..56f42da
--- /dev/null
@@ -0,0 +1,170 @@
+/*
+ * $Id: gnuplot_common.js,v 1.9 2011/10/01 04:10:48 sfeam Exp $
+ */
+// Shared routines for gnuplot's HTML5 canvas terminal driver.
+
+var gnuplot = { };
+
+gnuplot.common_version = "30 September 2011";
+
+gnuplot.L = function (x,y) {
+  if (gnuplot.zoomed) {
+    zoom = gnuplot.zoomXY(x/10.0,y/10.0);
+    ctx.lineTo(zoom.x,zoom.y);
+  } else
+    ctx.lineTo(x/10.0,y/10.0);
+}
+gnuplot.M = function (x,y) {
+  if (gnuplot.zoomed) {
+    zoom = gnuplot.zoomXY(x/10.0,y/10.0);
+    ctx.moveTo(zoom.x,zoom.y);
+  } else
+    ctx.moveTo(x/10.0,y/10.0);
+}
+gnuplot.R = function (x,y,w,h) {
+  if (gnuplot.zoomed) {
+    var dx, dy, dw, dh;
+    zoom = gnuplot.zoomXY(x/10.0,y/10.0);
+    if (zoom.x >= gnuplot.plot_xmax) return;
+    if (zoom.y >= gnuplot.plot_ybot) return;
+    dx = zoom.x; dy = zoom.y;
+    zoom = gnuplot.zoomXY((x+w)/10.,(y+h)/10.);
+    if (zoom.xraw <= gnuplot.plot_xmin) return;
+    if (zoom.yraw <= gnuplot.plot_ytop) return;
+    dw = zoom.x - dx; dh = zoom.y -dy;
+    ctx.fillRect(dx, dy, dw, dh);
+  } else
+    ctx.fillRect(x/10.0, y/10.0, w/10.0, h/10.0);
+}
+gnuplot.T = function (x,y,fontsize,justify,string) {
+  xx = x/10.0; yy = y/10.0;
+  if (gnuplot.zoomed) {
+    zoom = gnuplot.zoomXY(xx,yy);
+    if (zoom.clip) return;
+    xx = zoom.x; yy = zoom.y;
+    if (gnuplot.plot_xmin < xx && xx < gnuplot.plot_xmax && gnuplot.plot_ybot > yy && yy > gnuplot.plot_ytop)
+      if ((typeof(gnuplot.zoom_text) != "undefined") && (gnuplot.zoom_text == true))
+       fontsize = Math.sqrt(gnuplot.zoomW(fontsize)*gnuplot.zoomH(fontsize));
+  }
+  if (justify=="") ctx.drawText("sans", fontsize, xx, yy, string);
+  else if (justify=="Right") ctx.drawTextRight("sans", fontsize, xx, yy, string);
+  else if (justify=="Center") ctx.drawTextCenter("sans", fontsize, xx, yy, string);
+}
+gnuplot.TR = function (x,y,angle,fontsize,justify,string) {
+  xx = x/10.0; yy = y/10.0;
+  if (gnuplot.zoomed) {
+    zoom = gnuplot.zoomXY(xx,yy);
+    if (zoom.clip) return;
+    xx = zoom.x; yy = zoom.y;
+    if (gnuplot.plot_xmin < xx && xx < gnuplot.plot_xmax && gnuplot.plot_ybot > yy && yy > gnuplot.plot_ytop)
+      if ((typeof(gnuplot.zoom_text) != "undefined") && (gnuplot.zoom_text == true))
+       fontsize = Math.sqrt(gnuplot.zoomW(fontsize)*gnuplot.zoomH(fontsize));
+  }
+  ctx.save();
+  ctx.translate(xx,yy);
+  ctx.rotate(angle * Math.PI / 180);
+  if (justify=="") ctx.drawText("sans", fontsize, 0, 0, string);
+  else if (justify=="Right") ctx.drawTextRight("sans", fontsize, 0, 0, string);
+  else if (justify=="Center") ctx.drawTextCenter("sans", fontsize, 0, 0, string);
+  ctx.restore();
+}
+gnuplot.bp = function (x,y) // begin polygon
+    { ctx.beginPath(); gnuplot.M(x,y); }
+gnuplot.cfp = function () // close and fill polygon
+    { ctx.closePath(); ctx.fill(); }
+gnuplot.cfsp = function () // close and fill polygon with stroke color
+    { ctx.closePath(); ctx.fillStyle = ctx.strokeStyle; ctx.stroke(); ctx.fill(); }
+gnuplot.Dot = function (x,y) {
+    xx = x; yy = y;
+    if (gnuplot.zoomed) {zoom = gnuplot.zoomXY(xx,yy); xx = zoom.x; yy = zoom.y; if (zoom.clip) return;}
+    ctx.strokeRect(xx,yy,0.5,0.5);
+}
+gnuplot.Pt = function (N,x,y,w) {
+    xx = x; yy = y;
+    if (gnuplot.zoomed) {zoom = gnuplot.zoomXY(xx,yy); xx = zoom.x; yy = zoom.y; if (zoom.clip) return;}
+    if (w==0) return;
+    switch (N)
+    {
+    case 0:
+       ctx.beginPath();
+       ctx.moveTo(xx-w,yy); ctx.lineTo(xx+w,yy);
+       ctx.moveTo(xx,yy-w); ctx.lineTo(xx,yy+w);
+       ctx.stroke();
+       break;
+    case 1:
+       ww = w * 3/4;
+       ctx.beginPath();
+       ctx.moveTo(xx-ww,yy-ww); ctx.lineTo(xx+ww,yy+ww);
+       ctx.moveTo(xx+ww,yy-ww); ctx.lineTo(xx-ww,yy+ww);
+       ctx.stroke();
+       break;
+    case 2:
+       gnuplot.Pt(0,x,y,w); gnuplot.Pt(1,x,y,w);
+       break;
+    case 3:
+       ctx.strokeRect(xx-w/2,yy-w/2,w,w);
+       break;
+    case 4:
+       ctx.save(); ctx.strokeRect(xx-w/2,yy-w/2,w,w); ctx.restore();
+       ctx.fillRect(xx-w/2,yy-w/2,w,w);
+       break;
+    case 5:
+       ctx.beginPath(); ctx.arc(xx,yy,w/2,0,Math.PI*2,true); ctx.stroke();
+       break;
+    default:
+    case 6:
+       ctx.beginPath(); ctx.arc(xx,yy,w/2,0,Math.PI*2,true); ctx.fill();
+       break;
+    case 7:
+       ctx.beginPath();
+       ctx.moveTo(xx,yy-w); ctx.lineTo(xx-w,yy+w/2); ctx.lineTo(xx+w,yy+w/2);
+       ctx.closePath();
+       ctx.stroke();
+       break;
+    case 8:
+       ctx.beginPath();
+       ctx.moveTo(xx,yy-w); ctx.lineTo(xx-w,yy+w/2); ctx.lineTo(xx+w,yy+w/2);
+       ctx.closePath();
+       ctx.fill();
+       break;
+    }
+}
+
+// Zoomable image
+gnuplot.ZI = function (image, m, n, x1, y1, x2, y2) {
+  if (gnuplot.zoomed) {
+    var sx, sy, sw, sh, dx, dy, dw, dh;
+
+    zoom = gnuplot.zoomXY(x1/10.0,y1/10.0);
+    if (zoom.x >= gnuplot.plot_xmax) return;
+    if (zoom.y >= gnuplot.plot_ybot) return;
+    x1raw = zoom.xraw; y1raw = zoom.yraw;
+    dx = zoom.x; dy = zoom.y;
+
+    zoom = gnuplot.zoomXY((x2)/10.,(y2)/10.);
+    if (zoom.xraw <= gnuplot.plot_xmin) return;
+    if (zoom.yraw <= gnuplot.plot_ytop) return;
+    x2raw = zoom.xraw; y2raw = zoom.yraw;
+    dw = zoom.x - dx;  dh = zoom.y - dy;
+
+    // FIXME: This is sometimes flaky. Needs integer truncation?
+    sx = 0; sy = 0; sw = m; sh = n;
+    if (x1raw < dx) sx = m * (dx - x1raw) / (x2raw - x1raw);
+    if (y1raw < dy) sy = n * (dy - y1raw) / (y2raw - y1raw);
+    if (x2raw > zoom.x)
+       sw = m * (1. - ((x2raw - zoom.x) / (x2raw - x1raw)));
+    if (y2raw > zoom.y)
+       sh = n * (1. - ((y2raw - zoom.y) / (y2raw - y1raw)));
+    sw = sw - sx; sh = sh - sy;
+
+    ctx.drawImage(image, sx, sy, sw, sh, dx, dy, dw, dh);
+} else
+    ctx.drawImage(image, x1/10.0, y1/10.0, (x2-x1)/10.0, (y2-y1)/10.0);
+}
+
+// These methods are place holders that are loaded by gnuplot_dashedlines.js
+
+gnuplot.dashtype  = function (dt) {} ;
+gnuplot.dashstart = function (x,y) {gnuplot.M(x,y);} ;
+gnuplot.dashstep  = function (x,y) {gnuplot.L(x,y);} ;
+gnuplot.pattern   = [];
diff --git a/util/X86MAC64/share/gnuplot/4.6/js/gnuplot_dashedlines.js b/util/X86MAC64/share/gnuplot/4.6/js/gnuplot_dashedlines.js
new file mode 100644 (file)
index 0000000..efd7fda
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * $Id: gnuplot_dashedlines.js,v 1.2 2010/11/26 23:39:16 sfeam Exp $
+ */
+/*
+ * Ethan Merritt November 2010
+ * Add a dashed line method to gnuplot's HTML5 canvas toolset.
+ * To start a path use DS(x0,y0) instead of M(x0,y0)
+ * To draw line segments use DL(x,y) instead of L(x,y)
+ * Finish as usual with ctx.stroke(); ctx.closePath();
+ */
+
+gnuplot.solid = [];
+gnuplot.dashpattern1 = gnuplot.solid;
+gnuplot.dashpattern2 = [ 0.5, 1.0 ];
+gnuplot.dashpattern3 = [ .12, .25, .37, .50, .62, .75, .87, 1.0 ];
+gnuplot.dashpattern4 = [ 0.50, 0.70, 0.80, 1.0 ];
+gnuplot.dashpattern5 = [ 0.30, 0.50, 0.60, 0.75, 0.85, 1.0 ];
+
+gnuplot.dashlength = 200.;     // length of one complete pattern
+gnuplot.dashfraction = 0;      // how far in the pattern we got last time
+gnuplot.dash_x = 0;
+gnuplot.dash_y = 0;
+
+gnuplot.dashtype = function(dt) {
+    gnuplot.pattern = dt;
+}
+
+gnuplot.dashstart = function(x,y) {
+    gnuplot.dash_x = x;
+    gnuplot.dash_y = y;
+    gnuplot.dashfraction  = 0;
+    gnuplot.M(x,y);
+}
+
+gnuplot.dashstep = function(x,y) {
+    var delx = x - gnuplot.dash_x;
+    var dely = y - gnuplot.dash_y;
+    var stride = Math.sqrt(delx*delx + dely*dely) / gnuplot.dashlength;
+    var this_step;
+
+    if (gnuplot.pattern.length == 0) {gnuplot.L(x,y); return;}
+
+    while (stride > 0) {
+        // Find which piece of the pattern we are in
+       for (i=0; gnuplot.pattern[i] <= gnuplot.dashfraction; i++);
+
+       this_step = gnuplot.pattern[i] - gnuplot.dashfraction;
+       if (stride > this_step) {
+            new_x = gnuplot.dash_x + delx*this_step/stride;
+            new_y = gnuplot.dash_y + dely*this_step/stride;
+           stride = stride - this_step;
+           gnuplot.dashfraction = gnuplot.pattern[i];
+            delx = x - new_x;
+            dely = y - new_y;
+       } else {
+           new_x = x;
+           new_y = y;
+           gnuplot.dashfraction = gnuplot.dashfraction + stride;
+           stride = 0;
+       }
+       if (i%2==0) gnuplot.L(new_x,new_y);
+       else gnuplot.M(new_x,new_y);
+
+       gnuplot.dash_x = new_x;
+       gnuplot.dash_y = new_y;
+       if (gnuplot.dashfraction >= 1.0) gnuplot.dashfraction = 0;
+    }
+}
diff --git a/util/X86MAC64/share/gnuplot/4.6/js/gnuplot_mouse.css b/util/X86MAC64/share/gnuplot/4.6/js/gnuplot_mouse.css
new file mode 100644 (file)
index 0000000..e5ed1ba
--- /dev/null
@@ -0,0 +1,19 @@
+canvas         { border:0; background-color: white; }
+td.mousebox    { vertical-align: top; }
+td.mbh         { height: 16pt; }
+td.mb0         { text-align: left; font-size: smaller; width: 20px; padding-left: 15px;
+                 color:#000; background-color: #EEE}
+td.mb1         { text-align: left; font-size: smaller; width: 80px; padding-left: 15px;
+                 color:#070; background-color: #EEE}
+td.icon                { width:  16px; height: 16px; font-size: 14px; text-align: right;
+                 background-color: #EEE}
+td.blank       { height: 16px; font-size: 12pt; text-align: right;
+                 background-color: #EEE}
+.icon-image    { float:right; margin: 0 0 0 0; }
+.noborder      { border: 0; vertical-align: text-top; }
+table.mbleft   { border-collapse: collapse; border: 0; margin-left: auto; margin-right: auto; }
+table.mbright  { border-collapse: collapse; border: 0; margin-left: 0; margin-right: auto; }
+table.mbunder  { border-collapse: collapse; border: 0; margin-left: auto; margin-right: auto; }
+table.plot     { border-collapse: collapse; border: 0; margin-left: auto; margin-right: auto; }
+table.mousebox { border-collapse: collapse; margin-left: 0; margin-right: 10px; border: 0; }
+div.gnuplot    { background-color: white; }
diff --git a/util/X86MAC64/share/gnuplot/4.6/js/gnuplot_mouse.js b/util/X86MAC64/share/gnuplot/4.6/js/gnuplot_mouse.js
new file mode 100644 (file)
index 0000000..c15d579
--- /dev/null
@@ -0,0 +1,483 @@
+/*
+ * $Id: gnuplot_mouse.js,v 1.16 2011/09/04 02:05:25 sfeam Exp $
+ */
+    gnuplot.mouse_version = "03 September 2011";
+
+// Mousing code for use with gnuplot's 'canvas' terminal driver.
+// The functions defined here assume that the javascript plot produced by
+// gnuplot initializes the plot boundary and scaling parameters.
+
+    gnuplot.mousex = 0;
+    gnuplot.mousey = 0;
+    gnuplot.plotx = 0;
+    gnuplot.ploty = 0;
+    gnuplot.scaled_x = 0;
+    gnuplot.scaled_y = 0;
+
+// These will be initialized by the gnuplot canvas-drawing function
+    gnuplot.plot_xmin = 0;
+    gnuplot.plot_xmax = 0;
+    gnuplot.plot_ybot = 0;
+    gnuplot.plot_ytop = 0;
+    gnuplot.plot_width  = 0
+    gnuplot.plot_height = 0
+    gnuplot.plot_term_ymax = 0;
+    gnuplot.plot_axis_xmin = 0;
+    gnuplot.plot_axis_xmax = 0;
+    gnuplot.plot_axis_width  = 0;
+    gnuplot.plot_axis_height = 0;
+    gnuplot.plot_axis_ymin = 0;
+    gnuplot.plot_axis_ymax = 0;
+    gnuplot.plot_axis_x2min = "none";
+    gnuplot.plot_axis_y2min = "none";
+    gnuplot.plot_logaxis_x = 0;
+    gnuplot.plot_logaxis_y = 0;
+    gnuplot.grid_lines = true;
+    gnuplot.zoom_text = false;
+
+// These are the equivalent parameters while zooming
+    gnuplot.zoom_axis_xmin = 0;
+    gnuplot.zoom_axis_xmax = 0;
+    gnuplot.zoom_axis_ymin = 0;
+    gnuplot.zoom_axis_ymax = 0;
+    gnuplot.zoom_axis_x2min = 0;
+    gnuplot.zoom_axis_x2max = 0;
+    gnuplot.zoom_axis_y2min = 0;
+    gnuplot.zoom_axis_y2max = 0;
+    gnuplot.zoom_axis_width = 0;
+    gnuplot.zoom_axis_height = 0;
+    gnuplot.zoom_temp_xmin = 0;
+    gnuplot.zoom_temp_ymin = 0;
+    gnuplot.zoom_temp_x2min = 0;
+    gnuplot.zoom_temp_y2min = 0;
+    gnuplot.zoom_in_progress = false;
+
+    gnuplot.full_canvas_image = null;
+    gnuplot.axisdate = new Date();
+
+gnuplot.init = function ()
+{
+  if (document.getElementById("gnuplot_canvas"))
+      document.getElementById("gnuplot_canvas").onmousemove = gnuplot.mouse_update;
+  if (document.getElementById("gnuplot_canvas"))
+      document.getElementById("gnuplot_canvas").onmouseup = gnuplot.zoom_in;
+  if (document.getElementById("gnuplot_canvas"))
+      document.getElementById("gnuplot_canvas").onmousedown = gnuplot.saveclick;
+  if (document.getElementById("gnuplot_canvas"))
+      document.getElementById("gnuplot_canvas").onkeydown = gnuplot.do_hotkey;
+  if (document.getElementById("gnuplot_grid_icon"))
+      document.getElementById("gnuplot_grid_icon").onmouseup = gnuplot.toggle_grid;
+  if (document.getElementById("gnuplot_textzoom_icon"))
+      document.getElementById("gnuplot_textzoom_icon").onmouseup = gnuplot.toggle_zoom_text;
+  if (document.getElementById("gnuplot_rezoom_icon"))
+      document.getElementById("gnuplot_rezoom_icon").onmouseup = gnuplot.rezoom;
+  if (document.getElementById("gnuplot_unzoom_icon"))
+      document.getElementById("gnuplot_unzoom_icon").onmouseup = gnuplot.unzoom;
+  gnuplot.mouse_update();
+}
+
+gnuplot.getMouseCoordsWithinTarget = function(event)
+{
+       var coords = { x: 0, y: 0};
+
+       if(!event) // then we're in a non-DOM (probably IE) browser
+       {
+               event = window.event;
+               if (event) {
+                       coords.x = event.offsetX;
+                       coords.y = event.offsetY;
+               }
+       }
+       else            // we assume DOM modeled javascript
+       {
+               var Element = event.target ;
+               var CalculatedTotalOffsetLeft = 0;
+               var CalculatedTotalOffsetTop = 0 ;
+
+               while (Element.offsetParent)
+               {
+                       CalculatedTotalOffsetLeft += Element.offsetLeft ;     
+                       CalculatedTotalOffsetTop += Element.offsetTop ;
+                       Element = Element.offsetParent ;
+               }
+
+               coords.x = event.pageX - CalculatedTotalOffsetLeft ;
+               coords.y = event.pageY - CalculatedTotalOffsetTop ;
+       }
+
+       gnuplot.mousex = coords.x;
+       gnuplot.mousey = coords.y;
+}
+
+
+gnuplot.mouse_update = function(e)
+{
+  gnuplot.getMouseCoordsWithinTarget(e);
+
+  gnuplot.plotx = gnuplot.mousex - gnuplot.plot_xmin;
+  gnuplot.ploty = -(gnuplot.mousey - gnuplot.plot_ybot);
+
+  // Limit tracking to the interior of the plot
+  if (gnuplot.plotx < 0 || gnuplot.ploty < 0) return;
+  if (gnuplot.mousex > gnuplot.plot_xmax || gnuplot.mousey < gnuplot.plot_ytop) return;
+
+  var axis_xmin = (gnuplot.zoomed) ? gnuplot.zoom_axis_xmin : gnuplot.plot_axis_xmin;
+  var axis_xmax = (gnuplot.zoomed) ? gnuplot.zoom_axis_xmax : gnuplot.plot_axis_xmax;
+  var axis_ymin = (gnuplot.zoomed) ? gnuplot.zoom_axis_ymin : gnuplot.plot_axis_ymin;
+  var axis_ymax = (gnuplot.zoomed) ? gnuplot.zoom_axis_ymax : gnuplot.plot_axis_ymax;
+
+    if (gnuplot.plot_logaxis_x != 0) {
+       x = Math.log(axis_xmax) - Math.log(axis_xmin);
+       x = x * (gnuplot.plotx / (gnuplot.plot_xmax-gnuplot.plot_xmin)) + Math.log(axis_xmin);
+       x = Math.exp(x);
+    } else {
+       x =  axis_xmin + (gnuplot.plotx / (gnuplot.plot_xmax-gnuplot.plot_xmin)) * (axis_xmax - axis_xmin);
+    }
+
+    if (gnuplot.plot_logaxis_y != 0) {
+       y = Math.log(axis_ymax) - Math.log(axis_ymin);
+       y = y * (-gnuplot.ploty / (gnuplot.plot_ytop-gnuplot.plot_ybot)) + Math.log(axis_ymin);
+       y = Math.exp(y);
+    } else {
+       y =  axis_ymin - (gnuplot.ploty / (gnuplot.plot_ytop-gnuplot.plot_ybot)) * (axis_ymax - axis_ymin);
+    }
+
+    if (gnuplot.plot_axis_x2min != "none") {
+       gnuplot.axis_x2min = (gnuplot.zoomed) ? gnuplot.zoom_axis_x2min : gnuplot.plot_axis_x2min;
+       gnuplot.axis_x2max = (gnuplot.zoomed) ? gnuplot.zoom_axis_x2max : gnuplot.plot_axis_x2max;
+       x2 =  gnuplot.axis_x2min + (gnuplot.plotx / (gnuplot.plot_xmax-gnuplot.plot_xmin)) * (gnuplot.axis_x2max - gnuplot.axis_x2min);
+       if (document.getElementById(gnuplot.active_plot_name + "_x2"))
+           document.getElementById(gnuplot.active_plot_name + "_x2").innerHTML = x2.toPrecision(4);
+    }
+    if (gnuplot.plot_axis_y2min != "none") {
+       gnuplot.axis_y2min = (gnuplot.zoomed) ? gnuplot.zoom_axis_y2min : gnuplot.plot_axis_y2min;
+       gnuplot.axis_y2max = (gnuplot.zoomed) ? gnuplot.zoom_axis_y2max : gnuplot.plot_axis_y2max;
+       y2 = gnuplot.axis_y2min - (gnuplot.ploty / (gnuplot.plot_ytop-gnuplot.plot_ybot)) * (gnuplot.axis_y2max - gnuplot.axis_y2min);
+       if (document.getElementById(gnuplot.active_plot_name + "_y2"))
+           document.getElementById(gnuplot.active_plot_name + "_y2").innerHTML = y2.toPrecision(4);
+    }
+
+  if (gnuplot.polar_mode) {
+    polar = gnuplot.convert_to_polar(x,y);
+    label_x = "ang= " + polar.ang.toPrecision(4);
+    label_y = "R= " + polar.r.toPrecision(4);
+  } else if (typeof(gnuplot.plot_timeaxis_x) == "string" && gnuplot.plot_timeaxis_x != "") {
+    label_x = gnuplot.timefmt(x);
+    label_y = y.toPrecision(4);
+  } else {
+    label_x = x.toPrecision(4);
+    label_y = y.toPrecision(4);
+  }
+
+  if (document.getElementById(gnuplot.active_plot_name + "_x"))
+      document.getElementById(gnuplot.active_plot_name + "_x").innerHTML = label_x;
+  if (document.getElementById(gnuplot.active_plot_name + "_y"))
+      document.getElementById(gnuplot.active_plot_name + "_y").innerHTML = label_y;
+
+  // Echo the zoom box interactively
+  if (gnuplot.zoom_in_progress) {
+    // Clear previous box before drawing a new one
+    if (gnuplot.full_canvas_image == null) {
+      gnuplot.full_canvas_image = ctx.getImageData(0,0,canvas.width,canvas.height);
+    } else {
+      ctx.clearRect(0, 0, canvas.width, canvas.height);
+      ctx.putImageData(gnuplot.full_canvas_image,0,0);
+    }
+    ctx.strokeStyle="rgba(128,128,128,0.60)";
+    var x0 = gnuplot.plot_xmin + gnuplot.zoom_temp_plotx;
+    var y0 = gnuplot.plot_ybot - gnuplot.zoom_temp_ploty;
+    var w = gnuplot.plotx - gnuplot.zoom_temp_plotx;
+    var h = -(gnuplot.ploty - gnuplot.zoom_temp_ploty);
+    if (w<0) {x0 = x0 + w; w = -w;}
+    if (h<0) {y0 = y0 + h; h = -h;}
+    ctx.strokeRect(x0,y0,w,h);
+  }
+}
+
+gnuplot.timefmt = function (x)
+{
+  gnuplot.axisdate.setTime(1000. * (x + 946684800));
+
+  if (gnuplot.plot_timeaxis_x == "DateTime") {
+    return gnuplot.axisdate.toUTCString();
+  } 
+  if (gnuplot.plot_timeaxis_x == "Date") {
+    year = gnuplot.axisdate.getUTCFullYear();
+    month = gnuplot.axisdate.getUTCMonth();
+    date = gnuplot.axisdate.getUTCDate();
+    return (" " + date).slice (-2) + "/"
+         + ("0" + (month+1)).slice (-2) + "/"
+        + year;
+  } 
+  if (gnuplot.plot_timeaxis_x == "Time") {
+    hour = gnuplot.axisdate.getUTCHours();
+    minute = gnuplot.axisdate.getUTCMinutes();
+    second = gnuplot.axisdate.getUTCSeconds();
+    return ("0" + hour).slice (-2) + ":"
+         + ("0" + minute).slice (-2) + ":"
+         + ("0" + second).slice (-2);
+  }
+}
+
+gnuplot.convert_to_polar = function (x,y)
+{
+    polar = new Object;
+    var phi, r;
+    phi = Math.atan2(y,x);
+    if (gnuplot.plot_logaxis_r) 
+        r = Math.exp( (x/Math.cos(phi) + Math.log(gnuplot.plot_axis_rmin)/Math.LN10) * Math.LN10);
+    else
+        r = x/Math.cos(phi) + gnuplot.plot_axis_rmin;
+    polar.ang = phi * 180./Math.PI;
+    polar.r = r;
+    return polar;
+}
+
+gnuplot.saveclick = function (event)
+{
+  gnuplot.mouse_update(event);
+  
+  // Limit tracking to the interior of the plot
+  if (gnuplot.plotx < 0 || gnuplot.ploty < 0) return;
+  if (gnuplot.mousex > gnuplot.plot_xmax || gnuplot.mousey < gnuplot.plot_ytop) return;
+
+  if (event.which == null)     /* IE case */
+    button= (event.button < 2) ? "LEFT" : ((event.button == 4) ? "MIDDLE" : "RIGHT");
+  else                         /* All others */
+    button= (event.which < 2) ? "LEFT" : ((event.which == 2) ? "MIDDLE" : "RIGHT");
+
+  if (button == "LEFT") {
+    ctx.strokeStyle="black";
+    ctx.strokeRect(gnuplot.mousex, gnuplot.mousey, 1, 1);
+    if (typeof(gnuplot.plot_timeaxis_x) == "string" && gnuplot.plot_timeaxis_x != "") 
+      click = " " + gnuplot.timefmt(x) + ", " + y.toPrecision(4);
+    else
+      click = " " + x.toPrecision(4) + ", " + y.toPrecision(4);
+    ctx.drawText("sans", 9, gnuplot.mousex, gnuplot.mousey, click);
+  }
+
+  // Save starting corner of zoom box
+  else {
+    gnuplot.zoom_temp_xmin = x;
+    gnuplot.zoom_temp_ymin = y;
+    if (gnuplot.plot_axis_x2min != "none") gnuplot.zoom_temp_x2min = x2;
+    if (gnuplot.plot_axis_y2min != "none") gnuplot.zoom_temp_y2min = y2;
+    // Only used to echo the zoom box interactively
+    gnuplot.zoom_temp_plotx = gnuplot.plotx;
+    gnuplot.zoom_temp_ploty = gnuplot.ploty;
+    gnuplot.zoom_in_progress = true;
+    gnuplot.full_canvas_image = null;
+  }
+  return false; // Nobody else should respond to this event
+}
+
+gnuplot.zoom_in = function (event)
+{
+  if (!gnuplot.zoom_in_progress)
+    return false;
+
+  gnuplot.mouse_update(event);
+  
+  if (event.which == null)     /* IE case */
+    button= (event.button < 2) ? "LEFT" : ((event.button == 4) ? "MIDDLE" : "RIGHT");
+  else                         /* All others */
+    button= (event.which < 2) ? "LEFT" : ((event.which == 2) ? "MIDDLE" : "RIGHT");
+
+  // Save ending corner of zoom box
+  if (button != "LEFT") {
+    if (x > gnuplot.zoom_temp_xmin) {
+        gnuplot.zoom_axis_xmin = gnuplot.zoom_temp_xmin;
+       gnuplot.zoom_axis_xmax = x;
+       if (gnuplot.plot_axis_x2min != "none") {
+            gnuplot.zoom_axis_x2min = gnuplot.zoom_temp_x2min;
+           gnuplot.zoom_axis_x2max = x2;
+       }
+    } else {
+        gnuplot.zoom_axis_xmin = x;
+       gnuplot.zoom_axis_xmax = gnuplot.zoom_temp_xmin;
+       if (gnuplot.plot_axis_x2min != "none") {
+            gnuplot.zoom_axis_x2min = x2;
+           gnuplot.zoom_axis_x2max = gnuplot.zoom_temp_x2min;
+       }
+    }
+    if (y > gnuplot.zoom_temp_ymin) {
+        gnuplot.zoom_axis_ymin = gnuplot.zoom_temp_ymin;
+       gnuplot.zoom_axis_ymax = y;
+       if (gnuplot.plot_axis_y2min != "none") {
+            gnuplot.zoom_axis_y2min = gnuplot.zoom_temp_y2min;
+           gnuplot.zoom_axis_y2max = y2;
+       }
+    } else {
+        gnuplot.zoom_axis_ymin = y;
+       gnuplot.zoom_axis_ymax = gnuplot.zoom_temp_ymin;
+       if (gnuplot.plot_axis_y2min != "none") {
+            gnuplot.zoom_axis_y2min = y2;
+           gnuplot.zoom_axis_y2max = gnuplot.zoom_temp_y2min;
+       }
+    }
+    gnuplot.zoom_axis_width = gnuplot.zoom_axis_xmax - gnuplot.zoom_axis_xmin;
+    gnuplot.zoom_axis_height = gnuplot.zoom_axis_ymax - gnuplot.zoom_axis_ymin;
+    gnuplot.zoom_in_progress = false;
+    gnuplot.rezoom(event);
+  }
+  return false; // Nobody else should respond to this event
+}
+
+gnuplot.toggle_grid = function (e)
+{
+  if (!gnuplot.grid_lines) gnuplot.grid_lines = true;
+  else gnuplot.grid_lines = false;
+  ctx.clearRect(0,0,gnuplot.plot_term_xmax,gnuplot.plot_term_ymax);
+  gnuplot_canvas();
+}
+
+gnuplot.toggle_zoom_text = function (e)
+{
+  if (!gnuplot.zoom_text) gnuplot.zoom_text = true;
+  else gnuplot.zoom_text = false;
+  ctx.clearRect(0,0,gnuplot.plot_term_xmax,gnuplot.plot_term_ymax);
+  gnuplot_canvas();
+}
+
+gnuplot.rezoom = function (e)
+{
+  if (gnuplot.zoom_axis_width > 0)
+    gnuplot.zoomed = true;
+  ctx.clearRect(0,0,gnuplot.plot_term_xmax,gnuplot.plot_term_ymax);
+  gnuplot_canvas();
+}
+
+gnuplot.unzoom = function (e)
+{
+  gnuplot.zoomed = false;
+  ctx.clearRect(0,0,gnuplot.plot_term_xmax,gnuplot.plot_term_ymax);
+  gnuplot_canvas();
+}
+
+gnuplot.zoomXY = function(x,y)
+{
+  zoom = new Object;
+  var xreal, yreal;
+
+  zoom.x = x; zoom.y = y; zoom.clip = false;
+
+  if (gnuplot.plot_logaxis_x != 0) {
+       xreal = Math.log(gnuplot.plot_axis_xmax) - Math.log(gnuplot.plot_axis_xmin);
+       xreal = Math.log(gnuplot.plot_axis_xmin) + (x - gnuplot.plot_xmin) * xreal/gnuplot.plot_width;
+       zoom.x = Math.log(gnuplot.zoom_axis_xmax) - Math.log(gnuplot.zoom_axis_xmin);
+       zoom.x = gnuplot.plot_xmin + (xreal - Math.log(gnuplot.zoom_axis_xmin)) * gnuplot.plot_width/zoom.x;
+  } else {
+       xreal = gnuplot.plot_axis_xmin + (x - gnuplot.plot_xmin) * (gnuplot.plot_axis_width/gnuplot.plot_width);
+       zoom.x = gnuplot.plot_xmin + (xreal - gnuplot.zoom_axis_xmin) * (gnuplot.plot_width/gnuplot.zoom_axis_width);
+  }
+  if (gnuplot.plot_logaxis_y != 0) {
+       yreal = Math.log(gnuplot.plot_axis_ymax) - Math.log(gnuplot.plot_axis_ymin);
+       yreal = Math.log(gnuplot.plot_axis_ymin) + (gnuplot.plot_ybot - y) * yreal/gnuplot.plot_height;
+       zoom.y = Math.log(gnuplot.zoom_axis_ymax) - Math.log(gnuplot.zoom_axis_ymin);
+       zoom.y = gnuplot.plot_ybot - (yreal - Math.log(gnuplot.zoom_axis_ymin)) * gnuplot.plot_height/zoom.y;
+  } else {
+       yreal = gnuplot.plot_axis_ymin + (gnuplot.plot_ybot - y) * (gnuplot.plot_axis_height/gnuplot.plot_height);
+       zoom.y = gnuplot.plot_ybot - (yreal - gnuplot.zoom_axis_ymin) * (gnuplot.plot_height/gnuplot.zoom_axis_height);
+  }
+
+  // Report unclipped coords also
+  zoom.xraw = zoom.x; zoom.yraw = zoom.y;
+
+  // Limit the zoomed plot to the original plot area
+  if (x > gnuplot.plot_xmax) {
+    zoom.x = x;
+    if (gnuplot.plot_axis_y2min == "none") {
+      zoom.y = y;
+      return zoom;
+    }
+    if (gnuplot.plot_ybot <= y && y <= gnuplot.plot_ybot + 15)
+      zoom.clip = true;
+  }
+
+  else if (x < gnuplot.plot_xmin)
+    zoom.x = x;
+  else if (zoom.x < gnuplot.plot_xmin)
+    { zoom.x = gnuplot.plot_xmin; zoom.clip = true; }
+  else if (zoom.x > gnuplot.plot_xmax)
+    { zoom.x = gnuplot.plot_xmax; zoom.clip = true; }
+
+  if (y < gnuplot.plot_ytop) {
+    zoom.y = y;
+    if (gnuplot.plot_axis_x2min == "none") {
+      zoom.x = x; zoom.clip = false;
+      return zoom;
+    }
+  }
+
+  else if (y > gnuplot.plot_ybot)
+    zoom.y = y;
+  else if (zoom.y > gnuplot.plot_ybot)
+    { zoom.y = gnuplot.plot_ybot; zoom.clip = true; }
+  else if (zoom.y < gnuplot.plot_ytop)
+    { zoom.y = gnuplot.plot_ytop; zoom.clip = true; }
+
+  return zoom;
+}
+
+gnuplot.zoomW = function (w) { return (w*gnuplot.plot_axis_width/gnuplot.zoom_axis_width); }
+gnuplot.zoomH = function (h) { return (h*gnuplot.plot_axis_height/gnuplot.zoom_axis_height); }
+
+gnuplot.popup_help = function(URL) {
+    if (typeof(URL) != "string") {
+       if (typeof(gnuplot.help_URL) == "string") 
+           URL = gnuplot.help_URL;
+       else
+           return;
+    }
+    // FIXME: Placeholder for useful action
+    if (URL != "")
+       window.open (URL,"gnuplot help");
+}
+
+gnuplot.toggle_plot = function(plotid) {
+    if (typeof(gnuplot["hide_"+plotid]) == "unknown")
+       gnuplot["hide_"+plotid] = false;
+    gnuplot["hide_"+plotid] = !gnuplot["hide_"+plotid];
+    ctx.clearRect(0,0,gnuplot.plot_term_xmax,gnuplot.plot_term_ymax);
+    gnuplot_canvas();
+}
+
+gnuplot.do_hotkey = function(event) {
+    keychar = String.fromCharCode(event.charCode ? event.charCode : event.keyCode);
+    switch (keychar) {
+    case 'e':  ctx.clearRect(0,0,gnuplot.plot_term_xmax,gnuplot.plot_term_ymax);
+               gnuplot_canvas();
+               break;
+    case 'g':  gnuplot.toggle_grid();
+               break;
+    case 'n':  gnuplot.rezoom();
+               break;
+    case 'r':
+               ctx.lineWidth = 0.5;
+               ctx.strokeStyle="rgba(128,128,128,0.50)";
+               ctx.moveTo(gnuplot.plot_xmin, gnuplot.mousey); ctx.lineTo(gnuplot.plot_xmax, gnuplot.mousey);
+               ctx.moveTo(gnuplot.mousex, gnuplot.plot_ybot); ctx.lineTo(gnuplot.mousex, gnuplot.plot_ytop);
+               ctx.stroke();
+               break;
+    case 'p':
+    case 'u':  gnuplot.unzoom();
+               break;
+    case '\e':  zoom_in_progress = false;
+               break;
+
+// Arrow keys
+    case '%':  // ctx.drawText("sans", 10, gnuplot.mousex, gnuplot.mousey, "<");
+               break;
+    case '\'': // ctx.drawText("sans", 10, gnuplot.mousex, gnuplot.mousey, ">");
+               break;
+    case '&':  // ctx.drawText("sans", 10, gnuplot.mousex, gnuplot.mousey, "^");
+               break;
+    case '(':  // ctx.drawText("sans", 10, gnuplot.mousex, gnuplot.mousey, "v");
+               break;
+
+    default:   ctx.drawText("sans", 10, gnuplot.mousex, gnuplot.mousey, keychar);
+               return true; // Let someone else handle it
+               break;
+    }
+    return false; // Nobody else should respond to this keypress
+}
diff --git a/util/X86MAC64/share/gnuplot/4.6/js/gnuplot_svg.js b/util/X86MAC64/share/gnuplot/4.6/js/gnuplot_svg.js
new file mode 100644 (file)
index 0000000..931749f
--- /dev/null
@@ -0,0 +1,191 @@
+/*
+ * $Id: gnuplot_svg.js,v 1.8 2011/11/22 22:35:32 sfeam Exp $
+ */
+// Javascript routines for interaction with SVG documents produced by 
+// gnuplot's SVG terminal driver.
+
+var gnuplot_svg = { };
+
+gnuplot_svg.version = "22 November 2011";
+
+gnuplot_svg.SVGDoc = null;
+gnuplot_svg.SVGRoot = null;
+
+gnuplot_svg.Init = function(e)
+{
+   gnuplot_svg.SVGDoc = e.target.ownerDocument;
+   gnuplot_svg.SVGRoot = gnuplot_svg.SVGDoc.documentElement;
+   gnuplot_svg.axisdate = new Date();
+}
+
+gnuplot_svg.toggleVisibility = function(evt, targetId)
+{
+   var newTarget = evt.target;
+   if (targetId)
+      newTarget = gnuplot_svg.SVGDoc.getElementById(targetId);
+
+   var newValue = newTarget.getAttributeNS(null, 'visibility')
+
+   if ('hidden' != newValue)
+      newValue = 'hidden';
+   else
+      newValue = 'visible';
+
+   newTarget.setAttributeNS(null, 'visibility', newValue);
+   evt.preventDefault();
+   evt.stopPropagation();
+}
+
+// Mouse tracking echos coordinates to a floating text box
+
+gnuplot_svg.getText = function() {
+       return(document.getElementById("coord_text"));
+}
+
+gnuplot_svg.updateCoordBox = function(t, evt) {
+    /* 
+     * Apply screen CTM transformation to the evt screenX and screenY to get 
+     * coordinates in SVG coordinate space.  Use scaling parameters stored in
+     * the plot document by gnuplot to convert further into plot coordinates.
+     * Then position the floating text box using the SVG coordinates.
+     */
+    var m = document.documentElement.getScreenCTM();
+    var p = document.documentElement.createSVGPoint(); 
+    p.x = evt.clientX; p.y = evt.clientY; 
+    p = p.matrixTransform(m.inverse()); 
+
+    // Allow for scrollbar position (Firefox, others?)
+    if (typeof evt.pageX != 'undefined') {
+        p.x = evt.pageX; p.y = evt.pageY; 
+    }
+    t.setAttribute("x", p.x);
+    t.setAttribute("y", p.y);
+   
+    plotcoord = gnuplot_svg.mouse2plot(p.x,p.y);
+
+    if (gnuplot_svg.polar_mode) {
+       polar = gnuplot_svg.convert_to_polar(plotcoord.x,plotcoord.y);
+       label_x = "ang= " + polar.ang.toPrecision(4);
+       label_y = "R= " + polar.r.toPrecision(4);
+    } else if (gnuplot_svg.plot_timeaxis_x == "Date") {
+       gnuplot_svg.axisdate.setTime(1000. * (plotcoord.x + 946684800));
+       year = gnuplot_svg.axisdate.getUTCFullYear();
+       month = gnuplot_svg.axisdate.getUTCMonth();
+       date = gnuplot_svg.axisdate.getUTCDate();
+       label_x = (" " + date).slice (-2) + "/"
+               + ("0" + (month+1)).slice (-2) + "/"
+               + year;
+       label_y = plotcoord.y.toFixed(2);
+    } else if (gnuplot_svg.plot_timeaxis_x == "Time") {
+       gnuplot_svg.axisdate.setTime(1000. * (plotcoord.x + 946684800));
+       hour = gnuplot_svg.axisdate.getUTCHours();
+       minute = gnuplot_svg.axisdate.getUTCMinutes();
+       second = gnuplot_svg.axisdate.getUTCSeconds();
+       label_x = ("0" + hour).slice (-2) + ":" 
+               + ("0" + minute).slice (-2) + ":"
+               + ("0" + second).slice (-2);
+       label_y = plotcoord.y.toFixed(2);
+    } else if (gnuplot_svg.plot_timeaxis_x == "DateTime") {
+       gnuplot_svg.axisdate.setTime(1000. * (plotcoord.x + 946684800));
+       label_x = gnuplot_svg.axisdate.toUTCString();
+       label_y = plotcoord.y.toFixed(2);
+    } else {
+       label_x = plotcoord.x.toFixed(2);
+       label_y = plotcoord.y.toFixed(2);
+    }
+
+    while (null != t.firstChild) {
+       t.removeChild(t.firstChild);
+    }
+    var textNode = document.createTextNode(".  "+label_x+" "+label_y);
+    t.appendChild(textNode);
+}
+
+gnuplot_svg.showCoordBox = function(evt) {
+    var t = gnuplot_svg.getText();
+    if (null != t) {
+       t.setAttribute("visibility", "visible");
+       gnuplot_svg.updateCoordBox(t, evt);
+    }
+}
+
+gnuplot_svg.moveCoordBox = function(evt) {
+    var t = gnuplot_svg.getText();
+    if (null != t)
+       gnuplot_svg.updateCoordBox(t, evt);
+}
+
+gnuplot_svg.hideCoordBox = function(evt) {
+    var t = gnuplot_svg.getText();
+    if (null != t)
+       t.setAttribute("visibility", "hidden");
+}
+
+gnuplot_svg.toggleCoordBox = function(evt) {
+    var t = gnuplot_svg.getText();
+    if (null != t) {
+       state = t.getAttribute('visibility');
+       if ('hidden' != state)
+           state = 'hidden';
+       else
+           state = 'visible';
+       t.setAttribute('visibility', state);
+    }
+}
+
+gnuplot_svg.toggleGrid = function() {
+    if (!gnuplot_svg.SVGDoc.getElementsByClassName) // Old browsers
+       return;
+    var grid = gnuplot_svg.SVGDoc.getElementsByClassName('gridline');
+    for (var i=0; i<grid.length; i++) {
+       state = grid[i].getAttribute('visibility');
+       grid[i].setAttribute('visibility', (state == 'hidden') ? 'visible' : 'hidden');
+    }
+}
+
+// Convert from svg panel mouse coordinates to the coordinate
+// system of the gnuplot figure
+gnuplot_svg.mouse2plot = function(mousex,mousey) {
+    var plotcoord = new Object;
+    var plotx = mousex - gnuplot_svg.plot_xmin;
+    var ploty = mousey - gnuplot_svg.plot_ybot;
+
+    if (gnuplot_svg.plot_logaxis_x != 0) {
+       x = Math.log(gnuplot_svg.plot_axis_xmax)
+         - Math.log(gnuplot_svg.plot_axis_xmin);
+       x = x * (plotx / (gnuplot_svg.plot_xmax - gnuplot_svg.plot_xmin))
+         + Math.log(gnuplot_svg.plot_axis_xmin);
+       x = Math.exp(x);
+    } else {
+       x = gnuplot_svg.plot_axis_xmin + (plotx / (gnuplot_svg.plot_xmax-gnuplot_svg.plot_xmin)) * (gnuplot_svg.plot_axis_xmax - gnuplot_svg.plot_axis_xmin);
+    }
+
+    if (gnuplot_svg.plot_logaxis_y != 0) {
+       y = Math.log(gnuplot_svg.plot_axis_ymax)
+         - Math.log(gnuplot_svg.plot_axis_ymin);
+       y = y * (ploty / (gnuplot_svg.plot_ytop - gnuplot_svg.plot_ybot))
+         + Math.log(gnuplot_svg.plot_axis_ymin);
+       y = Math.exp(y);
+    } else {
+       y = gnuplot_svg.plot_axis_ymin + (ploty / (gnuplot_svg.plot_ytop-gnuplot_svg.plot_ybot)) * (gnuplot_svg.plot_axis_ymax - gnuplot_svg.plot_axis_ymin);
+    }
+
+    plotcoord.x = x;
+    plotcoord.y = y;
+    return plotcoord;
+}
+
+gnuplot_svg.convert_to_polar = function (x,y)
+{
+    polar = new Object;
+    var phi, r;
+    phi = Math.atan2(y,x);
+    if (gnuplot_svg.plot_logaxis_r) 
+        r = Math.exp( (x/Math.cos(phi) + Math.log(gnuplot_svg.plot_axis_rmin)/Math.LN10) * Math.LN10);
+    else
+        r = x/Math.cos(phi) + gnuplot_svg.plot_axis_rmin;
+    polar.ang = phi * 180./Math.PI;
+    polar.r = r;
+    return polar;
+}
+
diff --git a/util/X86MAC64/share/gnuplot/4.6/js/grid.png b/util/X86MAC64/share/gnuplot/4.6/js/grid.png
new file mode 100644 (file)
index 0000000..2e9c286
Binary files /dev/null and b/util/X86MAC64/share/gnuplot/4.6/js/grid.png differ
diff --git a/util/X86MAC64/share/gnuplot/4.6/js/help.png b/util/X86MAC64/share/gnuplot/4.6/js/help.png
new file mode 100644 (file)
index 0000000..bb02525
Binary files /dev/null and b/util/X86MAC64/share/gnuplot/4.6/js/help.png differ
diff --git a/util/X86MAC64/share/gnuplot/4.6/js/nextzoom.png b/util/X86MAC64/share/gnuplot/4.6/js/nextzoom.png
new file mode 100644 (file)
index 0000000..f0c7ede
Binary files /dev/null and b/util/X86MAC64/share/gnuplot/4.6/js/nextzoom.png differ
diff --git a/util/X86MAC64/share/gnuplot/4.6/js/previouszoom.png b/util/X86MAC64/share/gnuplot/4.6/js/previouszoom.png
new file mode 100644 (file)
index 0000000..d803e23
Binary files /dev/null and b/util/X86MAC64/share/gnuplot/4.6/js/previouszoom.png differ
diff --git a/util/X86MAC64/share/gnuplot/4.6/js/textzoom.png b/util/X86MAC64/share/gnuplot/4.6/js/textzoom.png
new file mode 100644 (file)
index 0000000..15a60d5
Binary files /dev/null and b/util/X86MAC64/share/gnuplot/4.6/js/textzoom.png differ
diff --git a/util/X86MAC64/share/gnuplot/4.6/lua/gnuplot-tikz.lua b/util/X86MAC64/share/gnuplot/4.6/lua/gnuplot-tikz.lua
new file mode 100644 (file)
index 0000000..8489e7d
--- /dev/null
@@ -0,0 +1,2371 @@
+--[[
+
+  This is the execution script for the `Lua generic terminal' driver.
+
+  This script provides an interface to the PGF/TikZ package for LaTeX.
+
+
+  Copyright 2008    Peter Hedwig <peter@affenbande.org>
+
+
+
+  Permission to use, copy, and distribute this software and its
+  documentation for any purpose with or without fee is hereby granted,
+  provided that the above copyright notice appear in all copies and
+  that both that copyright notice and this permission notice appear
+  in supporting documentation.
+
+  Permission to modify the software is granted, but not the right to
+  distribute the complete modified source code.  Modifications are to
+  be distributed as patches to the released version.  Permission to
+  distribute binaries produced by compiling modified sources is granted,
+  provided you
+    1. distribute the corresponding source modifications from the
+     released version in the form of a patch file along with the binaries,
+    2. add special version identification to distinguish your version
+     in addition to the base release version number,
+    3. provide your name and address as the primary contact for the
+     support of your modified version, and
+    4. retain our contact information in regard to use of the base
+     software.
+  Permission to distribute the released version of the source code along
+  with corresponding source modifications in the form of a patch file is
+  granted with same provisions 2 through 4 for binary distributions.
+
+  This software is provided "as is" without express or implied warranty
+  to the extent permitted by applicable law.
+
+
+
+  $Date: 2012/02/07 17:54:15 $
+  $Author: sfeam $
+  $Rev: 100 $
+
+]]--
+
+
+
+--[[
+ `term'   gnuplot term_api -> local interface
+ `gp'     local -> gnuplot interface
+
+  are both initialized by the terminal
+
+]]--
+
+
+--
+-- internal variables
+--
+
+local pgf = {}
+local gfx = {}
+
+-- the terminal default size in cm
+pgf.DEFAULT_CANVAS_SIZE_X = 12.5
+pgf.DEFAULT_CANVAS_SIZE_Y = 8.75
+-- tic default size in cm
+pgf.DEFAULT_TIC_SIZE = 0.18
+-- the terminal resolution in "dots" per cm.
+pgf.DEFAULT_RESOLUTION = 1000
+-- default font size in TeX pt
+pgf.DEFAULT_FONT_SIZE = 10
+-- default sizes for CM@10pt and default resolution
+-- there is no need to adapt these values when changing 
+-- pgf.DEFAULT_FONT_SIZE or pgf.DEFAULT_RESOLUTION !
+pgf.DEFAULT_FONT_H_CHAR = 184
+pgf.DEFAULT_FONT_V_CHAR = 308
+
+
+pgf.STYLE_FILE_BASENAME = "gnuplot-lua-tikz"  -- \usepackage{gnuplot-lua-tikz}
+
+pgf.REVISION = string.sub("$Rev: 100 $",7,-3)
+pgf.REVISION_DATE = string.gsub("$Date: 2012/02/07 17:54:15 $",
+                                "$Date: ([0-9]+).([0-9]+).([0-9]+) .*","%1/%2/%3")
+
+pgf.styles = {}
+
+-- the styles are used in conjunction with the 'tikzarrows'
+-- and the style number directly corresponds to the used
+-- angle in the gnuplot style definition
+pgf.styles.arrows = {
+   [1] = {"gp arrow 1", ">=latex"},
+   [2] = {"gp arrow 2", ">=angle 90"},
+   [3] = {"gp arrow 3", ">=angle 60"},
+   [4] = {"gp arrow 4", ">=angle 45"},
+   [5] = {"gp arrow 5", ">=o"},
+   [6] = {"gp arrow 6", ">=*"},
+   [7] = {"gp arrow 7", ">=diamond"},
+   [8] = {"gp arrow 8", ">=open diamond"},
+   [9] = {"gp arrow 9", ">={]}"},
+  [10] = {"gp arrow 10", ">={[}"},
+  [11] = {"gp arrow 11", ">=)"},
+  [12] = {"gp arrow 12", ">=("}
+}
+
+-- plot styles are corresponding with linetypes and must have the same number of entries
+-- see option 'tikzplot' for usage
+pgf.styles.plotstyles_axes = {
+  [1] = {"gp plot axes", ""},
+  [2] = {"gp plot border", ""},
+}
+
+pgf.styles.plotstyles = {
+  [1] = {"gp plot 0", "smooth"},
+  [2] = {"gp plot 1", "smooth"},
+  [3] = {"gp plot 2", "smooth"},
+  [4] = {"gp plot 3", "smooth"},
+  [5] = {"gp plot 4", "smooth"},
+  [6] = {"gp plot 5", "smooth"},
+  [7] = {"gp plot 6", "smooth"},
+  [8] = {"gp plot 7", "smooth"}
+}
+
+pgf.styles.linetypes_axes = {
+  [1] = {"gp lt axes", "dotted"},  -- An lt of -1 is used for the X and Y axes.  
+  [2] = {"gp lt border", "solid"}, -- An lt of -2 is used for the border of the plot.
+}
+
+pgf.styles.linetypes = {
+  [1] = {"gp lt plot 0", "solid"},  -- first graph
+  [2] = {"gp lt plot 1", "dashed"}, -- second ...
+  [3] = {"gp lt plot 2", "dash pattern=on 1.5pt off 2.25pt"},
+  [4] = {"gp lt plot 3", "dash pattern=on \\pgflinewidth off 1.125"},
+  [5] = {"gp lt plot 4", "dash pattern=on 4.5pt off 1.5pt on \\pgflinewidth off 1.5pt"},
+  [6] = {"gp lt plot 5", "dash pattern=on 2.25pt off 2.25pt on \\pgflinewidth off 2.25pt"},
+  [7] = {"gp lt plot 6", "dash pattern=on 1.5pt off 1.5pt on 1.5pt off 4.5pt"},
+  [8] = {"gp lt plot 7", "dash pattern=on \\pgflinewidth off 1.5pt on 4.5pt off 1.5pt on \\pgflinewidth off 1.5pt"}
+}
+
+-- corresponds to pgf.styles.linetypes
+pgf.styles.lt_colors_axes = {
+  [1] = {"gp lt color axes", "black!30"},
+  [2] = {"gp lt color border", "black"},
+}
+
+pgf.styles.lt_colors = {
+  [1] = {"gp lt color 0", "red"},
+  [2] = {"gp lt color 1", "green"},
+  [3] = {"gp lt color 2", "blue"},
+  [4] = {"gp lt color 3", "magenta"},
+  [5] = {"gp lt color 4", "cyan"},
+  [6] = {"gp lt color 5", "yellow"},
+  [7] = {"gp lt color 6", "orange"},
+  [8] = {"gp lt color 7", "purple"}
+}
+
+pgf.styles.patterns = {
+  [1] = {"gp pattern 0", "white"},
+  [2] = {"gp pattern 1", "pattern=north east lines"},
+  [3] = {"gp pattern 2", "pattern=north west lines"},
+  [4] = {"gp pattern 3", "pattern=crosshatch"},
+  [5] = {"gp pattern 4", "pattern=grid"},
+  [6] = {"gp pattern 5", "pattern=vertical lines"},
+  [7] = {"gp pattern 6", "pattern=horizontal lines"},
+  [8] = {"gp pattern 7", "pattern=dots"},
+  [9] = {"gp pattern 8", "pattern=crosshatch dots"},
+ [10] = {"gp pattern 9", "pattern=fivepointed stars"},
+ [11] = {"gp pattern 10", "pattern=sixpointed stars"},
+ [12] = {"gp pattern 11", "pattern=bricks"}
+}
+
+
+pgf.styles.plotmarks = {
+  [1] = {"gp mark 0", "mark size=.5\\pgflinewidth,mark=*"}, -- point (-1)
+  [2] = {"gp mark 1", "mark=+"},
+  [3] = {"gp mark 2", "mark=x"},
+  [4] = {"gp mark 3", "mark=star"},
+  [5] = {"gp mark 4", "mark=square"},
+  [6] = {"gp mark 5", "mark=square*"},
+  [7] = {"gp mark 6", "mark=o"},
+  [8] = {"gp mark 7", "mark=*"},
+  [9] = {"gp mark 8", "mark=triangle"},
+ [10] = {"gp mark 9", "mark=triangle*"},
+ [11] = {"gp mark 10", "mark=triangle,every mark/.append style={rotate=180}"},
+ [12] = {"gp mark 11", "mark=triangle*,every mark/.append style={rotate=180}"},
+ [13] = {"gp mark 12", "mark=diamond"},
+ [14] = {"gp mark 13", "mark=diamond*"},
+ [15] = {"gp mark 14", "mark=otimes"},
+ [16] = {"gp mark 15", "mark=oplus"}
+}  
+
+--[[===============================================================================================
+
+    helper functions
+
+]]--===============================================================================================
+
+-- from the Lua wiki
+explode = function(div,str)
+  if (div=='') then return false end
+  local pos,arr = 0,{}
+  local trim = function(s) return (string.gsub(s,"^%s*(.-)%s*$", "%1")) end
+  -- for each divider found
+  for st,sp in function() return string.find(str,div,pos,true) end do
+    table.insert(arr, trim(string.sub(str,pos,st-1))) -- Attach chars left of current divider
+    pos = sp + 1 -- Jump past current divider
+  end
+  table.insert(arr, trim(string.sub(str,pos))) -- Attach chars right of last divider
+  return arr
+end
+
+
+
+--[[===============================================================================================
+
+  The PGF/TikZ output routines
+
+]]--===============================================================================================
+
+
+pgf.transform_xcoord = function(coord)
+  return (coord+gfx.origin_xoffset)*gfx.scalex
+end
+
+pgf.transform_ycoord = function(coord)
+  return (coord+gfx.origin_yoffset)*gfx.scaley
+end
+
+pgf.format_coord = function(xc, yc)
+  return string.format("%.3f,%.3f", pgf.transform_xcoord(xc), pgf.transform_ycoord(yc))
+end
+
+pgf.write_doc_begin = function(preamble)
+  gp.write(gfx.format[gfx.opt.tex_format].docheader)
+  gp.write(preamble)
+  gp.write(gfx.format[gfx.opt.tex_format].begindocument)
+end
+
+pgf.write_doc_end = function()
+    gp.write(gfx.format[gfx.opt.tex_format].enddocument)
+end
+
+pgf.write_graph_begin = function (font, noenv)
+  local global_opt = "" -- unused
+  if gfx.opt.full_doc then
+    gp.write(gfx.format[gfx.opt.tex_format].beforetikzpicture)
+  end
+  if noenv then
+    gp.write("%% ") -- comment out
+  end
+  gp.write(string.format("%s[gnuplot%s]\n", gfx.format[gfx.opt.tex_format].begintikzpicture, global_opt))
+  gp.write(string.format("%%%% generated with GNUPLOT %sp%s (%s; terminal rev. %s, script rev. %s)\n",
+      term.gp_version, term.gp_patchlevel, _VERSION, string.sub(term.lua_term_revision,7,-3), pgf.REVISION))
+  if not gfx.opt.notimestamp then
+    gp.write(string.format("%%%% %s\n", os.date()))
+  end
+  if font ~= "" then
+    gp.write(string.format("\\tikzset{every node/.append style={font=%s}}\n", font))
+  end
+  if gfx.opt.fontscale ~= nil then
+    gp.write(string.format("\\tikzset{every node/.append style={scale=%.2f}}\n", gfx.opt.fontscale))
+  end
+  if not gfx.opt.lines_dashed then
+    gp.write("\\gpsolidlines\n")
+  end
+  if not gfx.opt.lines_colored then
+    gp.write("\\gpmonochromelines\n")
+  end
+  if gfx.opt.bgcolor ~= nil then
+    gp.write(string.format("\\gpsetbgcolor{%.3f,%.3f,%.3f}\n", gfx.opt.bgcolor[1], gfx.opt.bgcolor[2], gfx.opt.bgcolor[3]))
+  end
+end
+
+pgf.write_graph_end = function(noenv)
+  if noenv then
+    gp.write("%% ") -- comment out
+  end
+  if gfx.opt.full_doc then
+    gp.write(gfx.format[gfx.opt.tex_format].beforeendtikzpicture)
+  end
+  gp.write(gfx.format[gfx.opt.tex_format].endtikzpicture .. "\n")
+  if gfx.opt.full_doc then
+    gp.write(gfx.format[gfx.opt.tex_format].aftertikzpicture)
+  end
+end
+
+pgf.draw_path = function(t)
+
+  local use_plot = false
+  local c_str = '--'
+
+  -- is the current linetype in the list of plots?
+  if #gfx.opt.plot_list > 0 then
+    for k, v in pairs(gfx.opt.plot_list) do
+      if gfx.linetype_idx_set == v  then
+        use_plot = true
+        c_str = ' '
+        break
+      end
+    end
+  end
+
+  gp.write("\\draw[gp path] ")
+  if use_plot then
+    gp.write("plot["..pgf.styles.plotstyles[((gfx.linetype_idx_set) % #pgf.styles.plotstyles)+1][1].."] coordinates {")
+  end
+  gp.write("("..pgf.format_coord(t[1][1], t[1][2])..")")
+  for i = 2,#t-1 do
+    -- pretty printing
+    if (i % 6) == 0 then
+      gp.write("%\n  ")
+    end
+    gp.write(c_str.."("..pgf.format_coord(t[i][1], t[i][2])..")")
+  end
+  if (#t % 6) == 0 then
+    gp.write("%\n  ")
+  end
+  -- check for a cyclic path
+  if (t[1][1] == t[#t][1]) and (t[1][2] == t[#t][2]) and (not use_plot) then
+    gp.write("--cycle")
+  else
+    gp.write(c_str.."("..pgf.format_coord(t[#t][1], t[#t][2])..")")
+  end
+  if use_plot then
+    gp.write("}")
+  end
+  gp.write(";\n")
+end
+
+
+pgf.draw_arrow = function(t, direction, headstyle)
+  gp.write("\\draw[gp path")
+  if direction ~= '' then
+    gp.write(","..direction)
+  end
+  if headstyle > 0 then
+    gp.write(",gp arrow "..headstyle)
+  end
+  gp.write("]")
+  gp.write("("..pgf.format_coord(t[1][1], t[1][2])..")")
+  for i = 2,#t do
+    if (i % 6) == 0 then
+      gp.write("%\n  ")
+    end
+    gp.write("--("..pgf.format_coord(t[i][1], t[i][2])..")")
+  end
+  gp.write(";\n")
+end
+
+
+pgf.draw_points = function(t, pm)
+  gp.write("\\gppoint{"..pm.."}{")
+  for i,v in ipairs(t) do
+      gp.write("("..pgf.format_coord(v[1], v[2])..")")
+  end
+  gp.write("}\n")
+end
+
+
+pgf.set_linetype = function(linetype)
+  gp.write("\\gpsetlinetype{"..linetype.."}\n")
+end
+
+
+pgf.set_color = function(color)
+  gp.write("\\gpcolor{"..color.."}\n")
+end
+
+
+pgf.set_linewidth = function(width)
+  gp.write(string.format("\\gpsetlinewidth{%.2f}\n", width))
+end
+
+
+pgf.set_pointsize = function(size)
+  gp.write(string.format("\\gpsetpointsize{%.2f}\n", 4*size))
+end
+
+
+pgf.write_text_node = function(t, text, angle, justification, font)
+  local node_options = justification
+  if angle ~= 0 then
+    node_options = node_options .. ",rotate=" .. angle
+  end
+  if font ~= '' then
+    node_options = node_options .. ",font=" .. font
+  end  
+  gp.write(string.format("\\node[%s] at (%s) {%s};\n", 
+          node_options, pgf.format_coord(t[1], t[2]), text))
+end
+
+
+pgf.draw_fill = function(t, pattern, color, saturation, opacity)
+  local fill_path = ''
+  local fill_style = color
+  
+  if saturation < 100 then
+    fill_style = fill_style .. ",color=.!"..saturation;
+  end
+
+  fill_path = fill_path .. '('..pgf.format_coord(t[1][1], t[1][2])..')'
+  -- draw 2nd to n-1 corners
+  for i = 2,#t-1 do
+    if (i % 5) == 0 then
+      -- pretty printing
+      fill_path = fill_path .. "%\n    "
+    end
+    fill_path = fill_path .. '--('..pgf.format_coord(t[i][1], t[i][2])..')'
+  end
+  if (#t % 5) == 0 then
+    gp.write("%\n  ")
+  end
+  -- draw last corner
+  -- 'cycle' is just for the case that we want to draw a
+  -- line around the filled area
+  if (t[1][1] == t[#t][1]) and (t[1][2] == t[#t][2]) then -- cyclic
+    fill_path = fill_path .. '--cycle'
+  else
+    fill_path = fill_path
+          .. '--('..pgf.format_coord(t[#t][1], t[#t][2])..')--cycle'
+  end
+  
+  if pattern == '' then
+    -- solid fills
+--    fill_style = 'color='..color
+    if opacity < 100 then
+      fill_style = fill_style..string.format(",opacity=%.2f", opacity/100)
+    else
+      -- fill_style = "" -- color ?
+    end
+  else
+    -- pattern fills
+    fill_style = fill_style..','..pattern..',pattern color=.'
+  end
+  local out = ''
+  if (pattern ~= '') and (opacity == 100) then
+    -- have to fill bg for opaque patterns
+    gp.write("\\def\\gpfillpath{"..fill_path.."}\n"
+          .. "\\gpfill{color=gpbgfillcolor} \\gpfillpath;\n"
+          .. "\\gpfill{"..fill_style.."} \\gpfillpath;\n")
+  else
+    gp.write("\\gpfill{"..fill_style.."} "..fill_path..";\n")
+  end
+end
+  
+pgf.load_image_file = function(ll, ur, xfile)
+  gp.write(string.format("\\gploadimage{%.3f}{%.3f}{%.3f}{%.3f}{%s}\n",
+      pgf.transform_xcoord(ll[1]), pgf.transform_ycoord(ll[2]),
+      (pgf.transform_xcoord(ur[1]) - pgf.transform_xcoord(ll[1])),
+      (pgf.transform_ycoord(ur[2]) - pgf.transform_ycoord(ll[2])),
+       xfile))
+end
+
+pgf.draw_raw_rgb_image = function(t, m, n, ll, ur, xfile)
+  local gw = gp.write
+  local sf = string.format
+  local xs = sf("%.3f", pgf.transform_xcoord(ur[1]) - pgf.transform_xcoord(ll[1]))
+  local ys = sf("%.3f", pgf.transform_ycoord(ur[2]) - pgf.transform_ycoord(ll[2]))
+  gw("\\def\\gprawrgbimagedata{%\n  ")
+  for cnt = 1,#t do
+    gw(sf("%02x%02x%02x", 255*t[cnt][1]+0.5, 255*t[cnt][2]+0.5, 255*t[cnt][3]+0.5))
+    if (cnt % 16) == 0 then
+      gw("%\n  ")
+    end
+  end
+  gw("}%\n")
+  gw("\\gprawimage{rgb}{"..sf("%.3f", pgf.transform_xcoord(ll[1])).."}"
+      .."{"..sf("%.3f", pgf.transform_ycoord(ll[2])).."}"
+      .."{"..m.."}{"..n.."}{"..xs.."}{"..ys.."}{\\gprawrgbimagedata}{"..xfile.."}\n")
+end
+
+pgf.draw_raw_cmyk_image = function(t, m, n, ll, ur, xfile)
+  local gw = gp.write
+  local sf = string.format
+  local min = math.min
+  local max = math.max
+  local mf = math.floor
+  local UCRBG = {1,1,1,1} -- default corrections
+  local rgb2cmyk255 = function(r,g,b)
+    local c = 1-r
+    local m = 1-g
+    local y = 1-b
+    local k = min(c,m,y)
+    c = mf(255*min(1, max(0, c - UCRBG[1]*k))+0.5)
+    m = mf(255*min(1, max(0, m - UCRBG[2]*k))+0.5)
+    y = mf(255*min(1, max(0, y - UCRBG[3]*k))+0.5)
+    k = mf(255*min(1, max(0,     UCRBG[4]*k))+0.5)
+    return c,m,y,k
+  end
+  local xs = sf("%.3f", pgf.transform_xcoord(ur[1]) - pgf.transform_xcoord(ll[1]))
+  local ys = sf("%.3f", pgf.transform_ycoord(ur[2]) - pgf.transform_ycoord(ll[2]))
+  gw("\\def\\gprawcmykimagedata{%\n  ")
+  for cnt = 1,#t do
+    gw(sf("%02x%02x%02x%02x", rgb2cmyk255(t[cnt][1],t[cnt][2],t[cnt][3])))
+    if (cnt % 12) == 0 then
+      gw("%\n  ")
+    end
+  end
+  gw("}%\n")
+  gw("\\gprawimage{cmyk}{"..sf("%.3f", pgf.transform_xcoord(ll[1])).."}"
+      .."{"..sf("%.3f", pgf.transform_ycoord(ll[2])).."}"
+      .."{"..m.."}{"..n.."}{"..xs.."}{"..ys.."}{\\gprawcmykimagedata}{"..xfile.."}\n")
+end
+
+pgf.write_clipbox_begin = function (ll, ur)
+  gp.write(gfx.format[gfx.opt.tex_format].beginscope.."\n")
+  gp.write(string.format("\\clip (%s) rectangle (%s);\n",
+      pgf.format_coord(ll[1],ll[2]),pgf.format_coord(ur[1],ur[2])))
+end
+
+pgf.write_clipbox_end = function()
+  gp.write(gfx.format[gfx.opt.tex_format].endscope.."\n")
+end
+
+pgf.write_boundingbox = function(t, num)
+  gp.write("%% coordinates of the plot area\n")
+  gp.write("\\gpdefrectangularnode{gp plot "..num.."}{"
+    ..string.format("\\pgfpoint{%.3fcm}{%.3fcm}", pgf.transform_xcoord(t.xleft), pgf.transform_ycoord(t.ybot)).."}{"
+    ..string.format("\\pgfpoint{%.3fcm}{%.3fcm}", pgf.transform_xcoord(t.xright), pgf.transform_ycoord(t.ytop)).."}\n")
+end
+
+pgf.write_variables = function(t)
+  gp.write("%% gnuplot variables\n")
+  for k, v in pairs(t) do
+    gp.write(string.format("\\gpsetvar{%s}{%s}\n",k,v))
+  end
+end
+
+-- write style to seperate file, or whatever...
+pgf.create_style = function()
+  local name_common  = pgf.STYLE_FILE_BASENAME.."-common.tex"
+  local name_latex   = pgf.STYLE_FILE_BASENAME..".sty"
+  local name_tex     = pgf.STYLE_FILE_BASENAME..".tex"
+  local name_context = "t-"..pgf.STYLE_FILE_BASENAME..".tex"
+
+-- LaTeX
+
+local f_latex   = io.open(name_latex, "w+")
+f_latex:write([[
+%%
+%%  LaTeX wrapper for gnuplot-tikz style file
+%%
+\NeedsTeXFormat{LaTeX2e}
+]])
+f_latex:write("\\ProvidesPackage{"..pgf.STYLE_FILE_BASENAME.."}%\n")
+f_latex:write("          ["..pgf.REVISION_DATE.." (rev. "..pgf.REVISION..") GNUPLOT Lua terminal style]\n\n")
+f_latex:write([[
+\RequirePackage{tikz}
+
+\usetikzlibrary{arrows,patterns,plotmarks,backgrounds}
+]])
+f_latex:write("\\input "..name_common.."\n")
+f_latex:write([[
+
+\endinput
+]])
+f_latex:close()
+
+-- ConTeXt
+
+local f_context = io.open(name_context, "w+")
+f_context:write([[
+%%
+%%  ConTeXt wrapper for gnuplot-tikz style file
+%%
+\usemodule[tikz]
+
+\usetikzlibrary[arrows,patterns,plotmarks,backgrounds]
+
+\edef\tikzatcode{\the\catcode`\@}
+\edef\tikzbarcode{\the\catcode`\|}
+\edef\tikzexclaimcode{\the\catcode`\!}
+\catcode`\@=11
+\catcode`\|=12
+\catcode`\!=12
+
+]])
+f_context:write("\\input "..name_common.."\n")
+f_context:write([[
+
+\catcode`\@=\tikzatcode
+\catcode`\|=\tikzbarcode
+\catcode`\!=\tikzexclaimcode
+
+\endinput
+]])
+f_context:close()
+
+
+-- plain TeX
+
+local f_tex     = io.open(name_tex, "w+")
+f_tex:write([[
+%%
+%%  plain TeX wrapper for gnuplot-tikz style file
+%%
+\input tikz.tex
+\usetikzlibrary{arrows,patterns,plotmarks,backgrounds}
+
+\edef\tikzatcode{\the\catcode`\@}
+\catcode`\@=11
+
+]])
+f_tex:write("\\input "..name_common.."\n\n")
+f_tex:write([[
+
+\catcode`\@=\tikzatcode
+
+\endinput
+]])
+f_tex:close()
+
+-- common
+
+local f = io.open(name_common, "w+")
+f:write([[
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%%     Common style file for TeX, LaTeX and ConTeXt
+%%  
+%%  It is associated with the 'gnuplot.lua' script, and usually generated
+%%  automatically. So take care whenever you make any changes!
+%%
+
+% check for the correct TikZ version
+\def\gpchecktikzversion#1.#2\relax{%
+\ifnum#1<2%
+  \PackageError{gnuplot-lua-tikz}{PGF/TikZ version >= 2.0 is required, but version \pgfversion\space was found}{}%
+\fi}
+\expandafter\gpchecktikzversion\pgfversion\relax
+
+% FIXME: is there a more elegant way to determine the output format?
+
+\def\pgfsysdriver@a{pgfsys-dvi.def}       % ps
+\def\pgfsysdriver@b{pgfsys-dvipdfm.def}   % pdf
+\def\pgfsysdriver@c{pgfsys-dvipdfmx.def}  % pdf
+\def\pgfsysdriver@d{pgfsys-dvips.def}     % ps
+\def\pgfsysdriver@e{pgfsys-pdftex.def}    % pdf
+\def\pgfsysdriver@f{pgfsys-tex4ht.def}    % html
+\def\pgfsysdriver@g{pgfsys-textures.def}  % ps
+\def\pgfsysdriver@h{pgfsys-vtex.def}      % ps
+\def\pgfsysdriver@i{pgfsys-xetex.def}     % pdf
+
+\newif\ifgppdfout\gppdfoutfalse
+\newif\ifgppsout\gppsoutfalse
+
+\ifx\pgfsysdriver\pgfsysdriver@a
+  \gppsouttrue
+\else\ifx\pgfsysdriver\pgfsysdriver@b
+  \gppdfouttrue
+\else\ifx\pgfsysdriver\pgfsysdriver@c
+  \gppdfouttrue
+\else\ifx\pgfsysdriver\pgfsysdriver@d
+  \gppsouttrue
+\else\ifx\pgfsysdriver\pgfsysdriver@e
+  \gppdfouttrue
+\else\ifx\pgfsysdriver\pgfsysdriver@f
+  % tex4ht
+\else\ifx\pgfsysdriver\pgfsysdriver@g
+  \gppsouttrue
+\else\ifx\pgfsysdriver\pgfsysdriver@h
+  \gppsouttrue
+\else\ifx\pgfsysdriver\pgfsysdriver@i
+  \gppdfouttrue
+\fi\fi\fi\fi\fi\fi\fi\fi\fi
+
+% uncomment the following lines to make font values "appendable"
+% and if you are really sure about that ;-)
+% \pgfkeyslet{/tikz/font/.@cmd}{\undefined}
+% \tikzset{font/.initial={}}
+% \def\tikz@textfont{\pgfkeysvalueof{/tikz/font}}
+
+%
+% image related stuff
+%
+\def\gp@rawimage@pdf#1#2#3#4#5#6{%
+  \def\gp@tempa{cmyk}%
+  \def\gp@tempb{#1}%
+  \ifx\gp@tempa\gp@tempb%
+    \def\gp@temp{/CMYK}%
+  \else%
+    \def\gp@temp{/RGB}%
+  \fi%
+  \pgf@sys@bp{#4}\pgfsysprotocol@literalbuffered{0 0}\pgf@sys@bp{#5}%
+  \pgfsysprotocol@literalbuffered{0 0 cm}%
+  \pgfsysprotocol@literalbuffered{BI /W #2 /H #3 /CS \gp@temp}%
+  \pgfsysprotocol@literalbuffered{/BPC 8 /F /AHx ID}%
+  \pgfsysprotocol@literal{#6 > EI}%
+}
+\def\gp@rawimage@ps#1#2#3#4#5#6{%
+  \def\gp@tempa{cmyk}%
+  \def\gp@tempb{#1}%
+  \ifx\gp@tempa\gp@tempb%
+    \def\gp@temp{4}%
+  \else%
+    \def\gp@temp{3}%
+  \fi%
+  \pgfsysprotocol@literalbuffered{0 0 translate}%
+  \pgf@sys@bp{#4}\pgf@sys@bp{#5}\pgfsysprotocol@literalbuffered{scale}%
+  \pgfsysprotocol@literalbuffered{#2 #3 8 [#2 0 0 -#3 0 #3]}%
+  \pgfsysprotocol@literalbuffered{currentfile /ASCIIHexDecode filter}%
+  \pgfsysprotocol@literalbuffered{false \gp@temp\space colorimage}%
+  \pgfsysprotocol@literal{#6 >}%
+}
+\def\gp@rawimage@html#1#2#3#4#5#6{%
+% FIXME: print a warning message here
+}
+
+\ifgppdfout
+  \def\gp@rawimage{\gp@rawimage@pdf}
+\else
+  \ifgppsout
+    \def\gp@rawimage{\gp@rawimage@ps}
+  \else
+    \def\gp@rawimage{\gp@rawimage@html}
+  \fi
+\fi
+
+
+\def\gploadimage#1#2#3#4#5{%
+  \pgftext[left,bottom,x=#1cm,y=#2cm] {\pgfimage[interpolate=false,width=#3cm,height=#4cm]{#5}};%
+}
+
+\def\gp@set@size#1{%
+  \def\gp@image@size{#1}%
+}
+
+\def\gp@rawimage@#1#2#3#4#5#6#7#8{
+  \tikz@scan@one@point\gp@set@size(#6,#7)\relax%
+  \tikz@scan@one@point\pgftransformshift(#2,#3)\relax%
+  \pgftext {%
+    \pgfsys@beginpurepicture%
+    \gp@image@size% fill \pgf@x and \pgf@y
+    \gp@rawimage{#1}{#4}{#5}{\pgf@x}{\pgf@y}{#8}%
+    \pgfsys@endpurepicture%
+  }%
+}
+
+%% \gprawimage{color model}{xcoord}{ycoord}{# of xpixel}{# of ypixel}{xsize}{ysize}{rgb/cmyk hex data RRGGBB/CCMMYYKK ...}{file name}
+%% color model is 'cmyk' or 'rgb' (default)
+\def\gprawimage#1#2#3#4#5#6#7#8#9{%
+  \ifx&#9&%
+    \gp@rawimage@{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}
+  \else
+    \ifgppsout
+      \gp@rawimage@{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}
+    \else
+      \gploadimage{#2}{#3}{#6}{#7}{#9}
+    \fi
+  \fi
+}
+
+%
+% gnuplottex comapatibility
+% (see http://www.ctan.org/tex-archive/help/Catalogue/entries/gnuplottex.html)
+%
+
+\def\gnuplottexextension@lua{\string tex}
+\def\gnuplottexextension@tikz{\string tex}
+
+%
+% gnuplot variables getter and setter
+%
+
+\def\gpsetvar#1#2{%
+  \expandafter\xdef\csname gp@var@#1\endcsname{#2}
+}
+
+\def\gpgetvar#1{%
+  \csname gp@var@#1\endcsname %
+}
+
+%
+% some wrapper code
+%
+
+% short for a filled path
+\def\gpfill#1{\path[line width=0.1\gpbaselw,draw,fill,#1]}
+
+% short for changing the line width
+\def\gpsetlinewidth#1{\pgfsetlinewidth{#1\gpbaselw}}
+
+% short for changing the line type
+\def\gpsetlinetype#1{\tikzset{gp path/.style={#1,#1 add}}}
+
+% short for changing the point size
+\def\gpsetpointsize#1{\tikzset{gp point/.style={mark size=#1\gpbasems}}}
+
+% wrapper for color settings
+\def\gpcolor#1{\tikzset{global #1}}
+\tikzset{rgb color/.code={\pgfutil@definecolor{.}{rgb}{#1}\tikzset{color=.}}}
+\tikzset{global rgb color/.code={\pgfutil@definecolor{.}{rgb}{#1}\pgfutil@color{.}}}
+\tikzset{global color/.code={\pgfutil@color{#1}}}
+
+% prevent plot mark distortions due to changes in the PGF transformation matrix
+% use `\gpscalepointstrue' and `\gpscalepointsfalse' for enabling and disabling
+% point scaling
+%
+\newif\ifgpscalepoints
+\tikzset{gp shift only/.style={%
+  \ifgpscalepoints\else shift only\fi%
+}}
+\def\gppoint#1#2{%
+  \path[solid] plot[only marks,gp point,mark options={gp shift only},#1] coordinates {#2};%
+}
+
+
+%
+% char size calculation, that might be used with gnuplottex
+%
+% Example code (needs gnuplottex.sty):
+%
+%    % calculate the char size when the "gnuplot" style is used
+%    \tikzset{gnuplot/.append style={execute at begin picture=\gpcalccharsize}}
+%
+%    \tikzset{gnuplot/.append style={font=\ttfamily\footnotesize}}
+%
+%    \begin{tikzpicture}[gnuplot]
+%      \begin{gnuplot}[terminal=lua,%
+%          terminaloptions={tikz solid nopic charsize \the\gphcharsize,\the\gpvcharsize}]
+%        test
+%      \end{gnuplot}
+%    \end{tikzpicture}
+%
+%%%
+% The `\gpcalccharsize' command fills the lengths \gpvcharsize and \gphcharsize with
+% the values of the current default font used within nodes and is meant to be called
+% within a tikzpicture environment.
+% 
+\newdimen\gpvcharsize
+\newdimen\gphcharsize
+\def\gpcalccharsize{%
+  \pgfinterruptboundingbox%
+  \pgfsys@begininvisible%
+  \node at (0,0) {%
+    \global\gphcharsize=1.05\fontcharwd\font`0%
+    \global\gpvcharsize=1.05\fontcharht\font`0%
+    \global\advance\gpvcharsize by 1.05\fontchardp\font`g%
+  };%
+  \pgfsys@endinvisible%
+  \endpgfinterruptboundingbox%
+}
+
+%
+%  define a rectangular node in tikz e.g. for the plot area
+%
+%  #1 node name
+%  #2 coordinate of "south west"
+%  #3 coordinate of "north east"
+%
+\def\gpdefrectangularnode#1#2#3{%
+  \expandafter\gdef\csname pgf@sh@ns@#1\endcsname{rectangle}
+  \expandafter\gdef\csname pgf@sh@np@#1\endcsname{%
+    \def\southwest{#2}%
+    \def\northeast{#3}%
+  }
+  \pgfgettransform\pgf@temp%
+  % once it is defined, no more transformations will be applied, I hope
+  \expandafter\xdef\csname pgf@sh@nt@#1\endcsname{\pgf@temp}%
+  \expandafter\xdef\csname pgf@sh@pi@#1\endcsname{\pgfpictureid}%
+}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%%  You may want to adapt the following to fit your needs (in your 
+%%  individual style file and/or within your document).
+%%
+
+%
+% style for every plot
+%
+\tikzset{gnuplot/.style={%
+  >=stealth',%
+  line cap=round,%
+  line join=round,%
+}}
+
+\tikzset{gp node left/.style={anchor=mid west,yshift=-.12ex}}
+\tikzset{gp node center/.style={anchor=mid,yshift=-.12ex}}
+\tikzset{gp node right/.style={anchor=mid east,yshift=-.12ex}}
+
+% basic plot mark size (points)
+\newdimen\gpbasems
+\gpbasems=.4pt
+
+% basic linewidth
+\newdimen\gpbaselw
+\gpbaselw=.4pt
+
+% this is the default color for pattern backgrounds
+\colorlet{gpbgfillcolor}{white}
+
+% set background color and fill color
+\def\gpsetbgcolor#1{%
+  \pgfutil@definecolor{gpbgfillcolor}{rgb}{#1}%
+  \tikzset{tight background,background rectangle/.style={fill=gpbgfillcolor},show background rectangle}%
+}
+
+% this should reverse the normal text node presets, for the
+% later referencing as described below
+\tikzset{gp refnode/.style={coordinate,yshift=.12ex}}
+
+% to add an empty label with the referenceable name "my node"
+% to the plot, just add the following line to your gnuplot
+% file:
+%
+% set label "" at 1,1 font ",gp refnode,name=my node"
+%
+
+% enlargement of the bounding box in standalone mode (only used by LaTeX/ConTeXt)
+\def\gpbboxborder{0mm}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%%  The following TikZ-styles are derived from the 'pgf.styles.*' tables
+%%  in the Lua script.
+%%  To change the number of used styles you should change them there and
+%%  regenerate this style file.
+%%
+
+]])
+  f:write("% arrow styles settings\n")
+  for i = 1, #pgf.styles.arrows do
+    f:write("\\tikzset{"..pgf.styles.arrows[i][1].."/.style={"..pgf.styles.arrows[i][2].."}}\n")
+  end
+  f:write("\n% plotmark settings\n")
+  for i = 1, #pgf.styles.plotmarks do
+    f:write("\\tikzset{"..pgf.styles.plotmarks[i][1].."/.style={"..pgf.styles.plotmarks[i][2].."}}\n")
+  end
+  f:write("\n% pattern settings\n")
+  for i = 1, #pgf.styles.patterns do
+    f:write("\\tikzset{"..pgf.styles.patterns[i][1].."/.style={"..pgf.styles.patterns[i][2].."}}\n")
+  end
+  f:write("\n% if the 'tikzplot' option is used the corresponding lines will be smoothed by default\n")
+  for i = 1, #pgf.styles.plotstyles_axes do
+    f:write("\\tikzset{"..pgf.styles.plotstyles_axes[i][1].."/.style="..pgf.styles.plotstyles_axes[i][2].."}\n")
+  end
+  for i = 1, #pgf.styles.plotstyles do
+    f:write("\\tikzset{"..pgf.styles.plotstyles[i][1].."/.style="..pgf.styles.plotstyles[i][2].."}\n")
+  end
+  -- line styles for borders etc ...
+  f:write("\n% linestyle settings\n")
+  for i = 1, #pgf.styles.linetypes_axes do
+    f:write("\\tikzset{"..pgf.styles.linetypes_axes[i][1].."/.style="..pgf.styles.linetypes_axes[i][2].."}\n")
+  end
+  f:write("\n% linestyle \"addon\" settings for overwriting a default linestyle within the\n")
+  f:write("% TeX document via eg. \\tikzset{gp lt plot 1 add/.style={fill=black,draw=none}} etc.\n")
+  for i = 1, #pgf.styles.linetypes_axes do
+    f:write("\\tikzset{"..pgf.styles.linetypes_axes[i][1].." add/.style={}}\n")
+  end
+  for i = 1, #pgf.styles.linetypes do
+    f:write("\\tikzset{"..pgf.styles.linetypes[i][1].." add/.style={}}\n")
+  end
+  f:write("\n% linestyle color settings\n")
+  for i = 1, #pgf.styles.lt_colors_axes do
+    f:write("\\colorlet{"..pgf.styles.lt_colors_axes[i][1].."}{"..pgf.styles.lt_colors_axes[i][2].."}\n")
+  end
+  -- line styles for the plots
+  f:write("\n% command for switching to dashed lines\n")
+  f:write("\\def\\gpdashedlines{%\n")
+  for i = 1, #pgf.styles.linetypes do
+    f:write("  \\tikzset{"..pgf.styles.linetypes[i][1].."/.style={"..pgf.styles.linetypes[i][2].."}}\n")
+  end
+  f:write("}\n")
+  f:write("\n% command for switching to colored lines\n")
+  f:write("\\def\\gpcoloredlines{%\n")
+  for i = 1, #pgf.styles.lt_colors do
+    f:write("  \\colorlet{"..pgf.styles.lt_colors[i][1].."}{"..pgf.styles.lt_colors[i][2].."}%\n")
+  end
+  f:write("}\n")
+  f:write("\n% command for switching to solid lines\n")
+  f:write("\\def\\gpsolidlines{%\n")
+  for i = 1, #pgf.styles.linetypes do
+    f:write("  \\tikzset{"..pgf.styles.linetypes[i][1].."/.style=solid}%\n")
+  end
+  f:write("}\n")
+  f:write("\n% command for switching to monochrome (black) lines\n")
+  f:write("\\def\\gpmonochromelines{%\n")
+  for i = 1, #pgf.styles.lt_colors do
+    f:write("  \\colorlet{"..pgf.styles.lt_colors[i][1].."}{black}%\n")
+  end
+  f:write("}\n\n")
+  f:write([[
+%
+% some initialisations
+%
+% by default all lines will be colored and dashed
+\gpcoloredlines
+\gpdashedlines
+\gpsetpointsize{4}
+\gpsetlinetype{gp lt solid}
+\gpscalepointsfalse
+\endinput
+]])
+  f:close()
+end
+
+
+pgf.print_help = function(fwrite)
+
+  fwrite([[
+      {latex | tex | context}
+      {color | monochrome}
+      {dashed | solid}
+      {nooriginreset | originreset}
+      {nogparrows | gparrows}
+      {nogppoints | gppoints}
+      {picenvironment | nopicenvironment}
+      {noclip | clip}
+      {notightboundingbox | tightboundingbox}
+      {background "<colorpec>"}
+      {size <x>{unit},<y>{unit}}
+      {scale <x>,<y>}
+      {plotsize <x>{unit},<y>{unit}}
+      {charsize <x>{unit},<y>{unit}}
+      {font "<fontdesc>"}
+      {{fontscale | textscale} <scale>}
+      {nofulldoc | nostandalone | fulldoc | standalone}
+      {{preamble | header} "<preamble_string>"}
+      {tikzplot <ltn>,...}
+      {notikzarrows | tikzarrows}
+      {rgbimages | cmykimages}
+      {noexternalimages|externalimages}
+      {bitmap | nobitmap}
+      {providevars <var name>,...}
+      {createstyle}
+      {help}
+
+ For all options that expect lengths as their arguments they
+ will default to 'cm' if no unit is specified. For all lengths
+ the following units may be used: 'cm', 'mm', 'in' or 'inch',
+ 'pt', 'pc', 'bp', 'dd', 'cc'. Blanks between numbers and units
+ are not allowed.
+
+ 'monochrome' disables line coloring and switches to grayscaled
+ fills.
+
+ 'solid' use only solid lines.
+
+ 'originreset' moves the origin of the TikZ picture to the lower
+ left corner of the plot. It may be used to align several plots
+ within one tikzpicture environment. This is not tested with
+ multiplots and pm3d plots!
+
+ 'gparrows' use gnuplot's internal arrow drawing function
+ instead of the ones provided by TikZ.
+
+ 'gppoints' use gnuplot's internal plotmark drawing function
+ instead of the ones provided by TikZ.
+
+ 'nopicenvironment' omits the declaration of the 'tikzpicture'
+ environment in order to set it manually. This permits putting
+ some PGF/TikZ code directly before or after the plot.
+
+ 'clip' crops the plot at the defined canvas size. Default is
+ 'noclip' by which only a minimum bounding box of the canvas size
+ is set. Neither a fixed bounding box nor a crop box is set if the
+ 'plotsize' or 'tightboundingbox' option is used.
+
+ If 'tightboundingbox' is set the 'clip' option is ignored and the
+ final bounding box is the natural bounding box calculated by tikz.
+
+ 'background' sets the background color to the value specified in
+ the <colorpec> argument. <colorspec> must be a valid color name or
+ a 3 byte RGB code as a hexadecimal number with a preceding number
+ sign ('#'). E.g. '#ff0000' specifies pure red. If omitted the
+ background is transparent.
+
+ The 'size' option expects two lenghts <x> and <y> as the canvas
+ size. The default size of the canvas is ]]..pgf.DEFAULT_CANVAS_SIZE_X..[[cm x ]]..pgf.DEFAULT_CANVAS_SIZE_Y..[[cm.
+
+ The 'scale' option works similar to the 'size' option but expects
+ scaling factors <x> and <y> instead of lengths.
+
+ The 'plotsize' option permits setting the size of the plot area
+ instead of the canvas size, which is the usual gnuplot behaviour.
+ Using this option may lead to slightly asymmetric tic lengths.
+ Like 'originreset' this option may not lead to convenient results
+ if used with multiplots or pm3d plots. An alternative approach
+ is to set all margins to zero and to use the 'noclip' option.
+ The plot area has then the dimensions of the given canvas sizes.
+
+ The 'charsize' option expects the average horizontal and vertical
+ size of the used font. Look at the generated style file for an
+ example of how to use it from within your TeX document.
+
+ 'fontscale' or 'textscale' expects a scaling factor as a parameter.
+ All texts in the plot are scaled by this factor then.
+
+ The options 'tex', 'latex' and 'context' choose the TeX output
+ format. LaTeX is the default. To load the style file put the
+ according line at the beginning of your document:
+   \input ]]..pgf.STYLE_FILE_BASENAME..[[.tex    % (for plain TeX)
+   \usepackage{]]..pgf.STYLE_FILE_BASENAME..[[}  % (for LaTeX)
+   \usemodule[]]..pgf.STYLE_FILE_BASENAME..[[]   % (for ConTeXt)
+
+ 'createstyle' derives the TeX/LaTeX/ConTeXt styles from the script
+ and writes them to the appropriate files.
+
+ 'fulldoc' or 'standalone' produces a full LaTeX document for direct
+ compilation.
+
+ 'preamble' or 'header' may be used to put any additional LaTeX code
+ into the document preamble in standalone mode.
+
+ With the 'tikzplot' option the '\path plot' command will be used
+ instead of only '\path'. The following list of numbers of linetypes
+ (<ltn>,...) defines the affected plotlines. There exists a plotstyle
+ for every linetype. The default plotstyle is 'smooth' for every
+ linetype >= 1.
+
+ By using the 'tikzarrows' option the gnuplot arrow styles defined by
+ the user will be mapped to TikZ arrow styles. This is done by 'misusing'
+ the angle value of the arrow definition. E.g. an arrow style with the
+ angle '7' will be mapped to the TikZ style 'gp arrow 7' ignoring all the
+ other given values. By default the TikZ terminal uses the stealth' arrow
+ tips for all arrows. To obtain the default gnuplot behaviour please use
+ the 'gparrows' option.
+
+ With 'cmykimages' the CMYK color model will be used for inline image data
+ instead of the RGB model. All other colors (like line colors etc.) are
+ not affected by this option, since they are handled e.g. by LaTeX's
+ xcolor package. This option is ignored if images are externalized.
+
+ By using the 'externalimages' option all bitmap images will be written
+ as external PNG images and included at compile time of the document.
+ Generating DVI and later postscript files requires to convert the PNGs
+ into EPS files in a seperate step e.g. by using ImageMagick's `convert`.
+ Transparent bitmap images are always generated as an external PNGs.
+
+ The 'nobitmap' option let images be rendered as filled rectangles instead
+ of the nativ PS or PDF inline image format. This option is ignored if
+ images are externalized.
+
+ The 'providevars' options makes gnuplot's internal and user variables
+ available by using the '\gpgetvar{<var name>}' commmand within the TeX
+ script. Use gnuplot's 'show variables all' command to see the list
+ of valid variables.
+
+ The <fontdesc> string may contain any valid TeX/LaTeX/ConTeXt font commands
+ like e.g. '\small'. It is passed directly as a node parameter in form of
+ "font={<fontdesc>}". This can be 'misused' to add further code to a node,
+ e.g. '\small,yshift=1ex' or ',yshift=1ex' are also valid while the
+ latter does not change the current font settings. One exception is
+ the second argument of the list. If it is a number of the form
+ <number>{unit} it will be interpreted as a fontsize like in other
+ terminals and will be appended to the first argument. If the unit is
+ omitted the value is interpreted as 'pt'. As an example the string
+ '\sffamily,12,fill=red' sets the font to LaTeX's sans serif font at
+ a size of 12pt and red background color.
+ The same applies to ConTeXt, e.g. '\switchtobodyfont[iwona],10' changes the
+ font to Iwona at a size of 10pt.
+ Plain TeX users have to change the font size explicitly within the first
+ argument. The second should be set to the same value to get proper scaling
+ of text boxes.
+
+ Strings have to be put in single or double quotes. Double quoted
+ strings may contain special characters like newlines '\n' etc.
+]])
+end
+
+
+--[[===============================================================================================
+
+  gfx.* helper functions
+  
+  Main intention is to prevent redundancies in the drawing
+  operations and keep the pgf.* API as consistent as possible.
+  
+]]--===============================================================================================
+
+
+-- path coordinates
+gfx.path = {}
+gfx.posx = nil
+gfx.posy = nil
+
+gfx.linetype_idx = nil       -- current linetype intended for the plot
+gfx.linetype_idx_set = nil   -- current linetype set in the plot
+gfx.linewidth = nil
+gfx.linewidth_set = nil
+
+-- internal calculated scaling factors
+gfx.scalex = 1
+gfx.scaley = 1
+
+-- recalculate the origin of the plot
+-- used for moving the origin to the lower left
+-- corner...
+gfx.origin_xoffset = 0
+gfx.origin_yoffset = 0
+
+
+-- color set in the document
+gfx.color = ''
+gfx.color_set = ''
+
+gfx.pointsize = nil
+gfx.pointsize_set = nil
+
+gfx.text_font = ''
+gfx.text_justify = "center"
+gfx.text_angle = 0
+
+-- option vars
+gfx.opt = {
+  latex_preamble = '',
+  default_font = '',
+  lines_dashed = true,
+  lines_colored = true,
+  -- use gnuplot arrows or points instead of TikZ?
+  gp_arrows = false,
+  gp_points = false,
+  -- don't put graphic commands into a tikzpicture environment
+  nopicenv = false,
+  -- produce full LaTeX document?
+  full_doc = false,
+  -- in gnuplot all sizes refer to the size of the canvas
+  -- and not the size of plot itself
+  plotsize_x = nil,
+  plotsize_y = nil,
+  set_plotsize = false,
+  -- recalculate the origin of the plot
+  -- used for moving the origin to the lower left
+  -- corner...
+  set_origin = false,
+  -- list of _linetypes_ of plots that should be drawn as with the \plot
+  -- command instead of \path
+  plot_list = {},
+  -- uses some pdf/ps specials with image function that will only work
+  -- with pdf/ps generation!
+  direct_image = true,
+  -- list of gnuplot variables that should be made available via
+  -- \gpsetvar{name}{val}
+  gnuplot_vars = {},
+  -- if true, the gnuplot arrow will be mapped to TikZ arrow styles by the
+  -- given angle. E.g. an arrow with the angle `7' will be mapped to `gp arrow 7'
+  -- style.
+  tikzarrows = false,
+  -- if true, cmyk image model will be used for bitmap images
+  cmykimage = false,
+  -- output TeX flavor, default is LaTeX
+  tex_format = 'latex',
+  -- for regression tests etc. we can turn off the timestamp
+  notimestamp = false,
+  -- background color, contains RGB triplet when set
+  bgcolor = nil,
+  -- crop to the given canvas size
+  clip = false,
+  -- if true, the natural bounding box will be used and 'clip' is ignored
+  tightboundingbox = false,
+  -- fontscale
+  fontscale = nil
+}
+
+-- Formats for the various TeX flavors 
+gfx.format = {}
+
+gfx.format.tex = {
+  docheader        = "\\input "..pgf.STYLE_FILE_BASENAME..".tex\n",
+  begindocument    = "",
+  enddocument      = "\\bye\n",
+  beforetikzpicture= "",  -- standalone only
+  aftertikzpicture = "",  -- standalone only
+  begintikzpicture = "\\tikzpicture",
+  endtikzpicture   = "\\endtikzpicture",
+  beginscope       = "\\scope",
+  endscope         = "\\endscope",
+  beforeendtikzpicture = "",  -- standalone only
+  fontsize         = ""
+}
+
+gfx.format.latex = {
+  docheader        = "\\documentclass["..pgf.DEFAULT_FONT_SIZE.."pt]{article}\n"
+                      .."\\usepackage[T1]{fontenc}\n"
+                      .."\\usepackage{textcomp}\n\n"
+                      .."\\usepackage[utf8x]{inputenc}\n\n"
+                      .."\\usepackage{"..pgf.STYLE_FILE_BASENAME.."}\n"
+                      .."\\pagestyle{empty}\n"
+                      .."\\usepackage[active,tightpage]{preview}\n"
+                      .."\\PreviewEnvironment{tikzpicture}\n"
+                      .."\\setlength\\PreviewBorder{\\gpbboxborder}\n",
+  begindocument    = "\\begin{document}\n",
+  enddocument      = "\\end{document}\n",
+  beforetikzpicture= "",  -- standalone only
+  aftertikzpicture = "",  -- standalone only
+  begintikzpicture = "\\begin{tikzpicture}",
+  endtikzpicture   = "\\end{tikzpicture}",
+  beginscope       = "\\begin{scope}",
+  endscope         = "\\end{scope}",
+  beforeendtikzpicture = "",  -- standalone only
+  fontsize         = "\\fontsize{%spt}{%spt}\\selectfont"
+}
+
+gfx.format.context = {
+  docheader        = "\\usemodule["..pgf.STYLE_FILE_BASENAME.."]\n",
+  begindocument    = "\\starttext\n",
+  enddocument      = "\\stoptext\n",
+  beforetikzpicture= "\\startTEXpage\n",  -- standalone only
+  aftertikzpicture = "\\stopTEXpage\n",   -- standalone only
+  begintikzpicture = "\\starttikzpicture",
+  endtikzpicture   = "\\stoptikzpicture",
+  beginscope       = "\\startscope",
+  endscope         = "\\stopscope",
+  beforeendtikzpicture = "\\path[use as bounding box] ([shift={(-\\gpbboxborder,-\\gpbboxborder)}]current bounding box.south west)"
+                            .." rectangle ([shift={(\\gpbboxborder,\\gpbboxborder)}]current bounding box.north east);\n",  -- standalone only
+  fontsize         = "\\switchtobodyfont[%spt]"
+}
+
+-- within tikzpicture environment or not
+gfx.in_picture = false
+
+-- have not determined the plotbox, see the 'plotsize' option
+gfx.have_plotbox = false
+
+gfx.current_boundingbox = {
+  xleft = nil, xright = nil, ytop = nil, ybot = nil
+}
+-- plot bounding boxes counter
+gfx.boundingbox_cnt = 0
+
+gfx.TEXT_ANCHOR = {
+  ["left"]   = "gp node left",
+  ["center"] = "gp node center",
+  ["right"]  = "gp node right"
+}
+
+gfx.HEAD_STR = {"", "->", "<-", "<->"}
+
+
+-- conversion factors in `cm'
+gfx.units = {
+  ['']    = 1,        -- default
+  ['cm']  = 1,
+  ['mm']  = 0.1,
+  ['in']  = 2.54,
+  ['inch']= 2.54,
+  ['pt']  = 0.035146, -- Pica Point   (72.27pt = 1in)
+  ['pc']  = 0.42176,  -- Pica         (1 Pica = 1/6 inch)
+  ['bp']  = 0.035278, -- Big Point    (72bp = 1in)
+  ['dd']  = 0.0376,   -- Didot Point  (1cm = 26.6dd)
+  ['cc']  = 0.45113   -- Cicero       (1cc = 12 dd)
+}
+
+
+gfx.parse_number_unit = function (str, from, to)
+  to = to or 'cm'
+  from = from or 'cm'
+  local num, unit = string.match(str, '^([%d%.]+)([a-z]*)$')
+  if unit and (string.len(unit) > 0) then
+    from = unit
+  else
+    unit = false
+  end
+  local factor_from = gfx.units[from]
+  local factor_to   = gfx.units[to]
+  num = tonumber(num)
+  if num and factor_from then
+    -- to cm and then to our target unit
+    return num*(factor_from/factor_to), unit
+  else
+    return false, false
+  end
+end
+
+
+gfx.parse_font_string = function (str)
+  local size,rets,toks = nil, str, explode(',', str)
+  -- if at least two tokens
+  if #toks > 1 then
+    -- add first element to font string
+    rets = table.remove(toks,1)
+    -- no unit means 'pt'
+    size, _ = gfx.parse_number_unit(toks[1],'pt','pt')
+    if (size) then
+      table.remove(toks,1)
+      rets = rets .. string.format(gfx.format[gfx.opt.tex_format].fontsize,size,size*1.2)
+    end
+    -- add grouping braces for the font settings
+    if #rets > 0 then 
+      rets = "{" .. rets .. "}"
+    end
+    -- add remaining parts
+    for k,v in ipairs(toks) do
+      rets = rets .. ',' .. v
+    end
+  else
+    if #rets > 0 then 
+      rets = "{" .. rets .. "}"
+    end
+  end
+  return rets, size
+end
+
+
+gfx.write_boundingbox = function()
+  local t = gp.get_boundingbox()
+  for k, v in pairs (t) do
+    if v ~= gfx.current_boundingbox[k] then
+      gfx.boundingbox_cnt = gfx.boundingbox_cnt + 1
+      gfx.current_boundingbox = t
+      pgf.write_boundingbox(t, gfx.boundingbox_cnt)
+      break
+    end  
+  end
+end
+
+gfx.adjust_plotbox = function()
+  local t = gp.get_boundingbox()
+  if gfx.opt.set_origin then
+    -- move origin to the lower left corner of the plot
+    gfx.origin_xoffset = - t.xleft
+    gfx.origin_yoffset = - t.ybot
+  end
+  if gfx.opt.set_plotsize then
+    if (t.xright - t.xleft) > 0 then
+      gfx.scalex = gfx.scalex*gfx.opt.plotsize_x * pgf.DEFAULT_RESOLUTION/(t.xright - t.xleft)
+      gfx.scaley = gfx.scaley*gfx.opt.plotsize_y * pgf.DEFAULT_RESOLUTION/(t.ytop - t.ybot)
+    else
+      -- could not determin a valid bounding box, so keep using the
+      -- plotsize as the canvas size
+      gp.term_out("WARNING: PGF/TikZ Terminal: `plotsize' option used, but I could not determin the plot area!\n")
+    end
+  elseif not gfx.opt.tightboundingbox then
+    if gfx.opt.clip then
+      gp.write("\\clip")
+    else
+      gp.write("\\path")
+    end
+    gp.write(" (" .. pgf.format_coord(0,0) ..") rectangle (" .. pgf.format_coord(term.xmax, term.ymax) .. ");\n")
+  end
+end
+
+
+gfx.check_variables = function()
+  local vl = gfx.opt.gnuplot_vars
+  local t = gp.get_all_variables()
+  local sl = {}
+  for i=1,#vl do
+    if t[vl[i]] then
+      sl[vl[i]] = t[vl[i]][3]
+      if t[vl[i]][4] then
+        sl[vl[i].." Im"] = t[vl[i]][4]
+      end
+    end
+  end
+  pgf.write_variables(sl)
+end
+
+
+-- check if the current path should be drawn
+gfx.check_in_path = function()
+  -- also check the bounding box here
+  -- bounding box data is available with the first drawing command
+  if (not gfx.have_plotbox) and gfx.in_picture then
+    gfx.adjust_plotbox()
+    gfx.have_plotbox = true
+  end
+  
+  -- ignore zero length paths
+    if #gfx.path > 1 then
+    -- check all line properties and draw current path
+    gfx.check_color()
+    gfx.check_linetype()
+    gfx.check_linewidth()
+      pgf.draw_path(gfx.path)
+    -- remember last coordinates
+    gfx.start_path(gfx.path[#gfx.path][1], gfx.path[#gfx.path][2])
+  end
+end
+
+-- did the linetype change?
+gfx.check_linetype = function()
+  if gfx.linetype_idx ~= gfx.linetype_idx_set then
+    local lt
+    if gfx.linetype_idx < 0 then
+        lt = pgf.styles.linetypes_axes[math.abs(gfx.linetype_idx)][1]
+    else
+      lt = pgf.styles.linetypes[(gfx.linetype_idx % #pgf.styles.linetypes)+1][1]
+    end
+    pgf.set_linetype(lt)
+    gfx.linetype_idx_set = gfx.linetype_idx
+  end
+end
+
+-- did the color change?
+gfx.check_color = function()
+  if gfx.color_set ~= gfx.color then
+    pgf.set_color(gfx.color)
+    gfx.color_set = gfx.color
+  end
+end
+
+-- sanity check if we already are at this position in our path
+-- and save this position
+gfx.check_coord = function(x, y)
+  if (x == gfx.posx) and (y == gfx.posy) then
+    return true
+  end
+  gfx.posx = x
+  gfx.posy = y
+  return false
+end
+
+-- did the linewidth change?
+gfx.check_linewidth = function()
+  if gfx.linewidth ~= gfx.linewidth_set then
+    pgf.set_linewidth(gfx.linewidth)
+    gfx.linewidth_set = gfx.linewidth
+  end
+end
+
+-- did the pointsize change?
+gfx.check_pointsize = function()
+  if gfx.pointsize ~= gfx.pointsize_set then
+    pgf.set_pointsize(gfx.pointsize)
+    gfx.pointsize_set = gfx.pointsize
+  end
+end
+
+
+gfx.start_path = function(x, y)
+  --  init path with first coords
+  gfx.path = {{x,y}}  
+  gfx.posx = x
+  gfx.posy = y
+end
+
+-- ctype  string  LT|RGB|GRAY
+-- val   table   {name}|{r,g,b}
+gfx.format_color = function(ctype, val)
+  local c
+  if ctype == 'LT' then
+    if val[1] < 0 then
+      if val[1] < -2 then --  LT_NODRAW, LT_BACKGROUND, LT_UNDEFINED
+        c = 'color=gpbgfillcolor'
+      else
+        c = 'color='..pgf.styles.lt_colors_axes[math.abs(val[1])][1]
+      end
+    else
+      c = 'color='..pgf.styles.lt_colors[(val[1] % #pgf.styles.lt_colors)+1][1]
+    end
+    -- c = pgf.styles.lt_colors[((val[1]+3) % #pgf.styles.lt_colors) + 1][1]
+  elseif ctype == 'RGB' then
+    c = string.format("rgb color={%.3f,%.3f,%.3f}", val[1], val[2], val[3])
+  elseif ctype == 'RGBA' then
+      c = string.format("rgb color={%.3f,%.3f,%.3f},opacity=%.3f", val[1], val[2], val[3], val[4])
+  elseif ctype == 'GRAY' then
+    c = string.format("color=black!%i", 100*val[1]+0.5)
+  end
+  return c
+end
+
+gfx.set_color = function(ctype, val)
+  gfx.color = gfx.format_color(ctype, val)
+end
+
+
+--[[===============================================================================================
+
+  The terminal layer
+  
+  The term.* functions are usually called from the gnuplot Lua terminal
+
+]]--===============================================================================================
+
+
+if arg then
+  -- when called from the command line we have
+  -- to initialize the table `term' manually
+  -- to avoid errors
+  term = {}
+else
+  --
+  -- gnuplot terminal default parameters and flags
+  --
+  term.xmax = pgf.DEFAULT_RESOLUTION * pgf.DEFAULT_CANVAS_SIZE_X
+  term.ymax = pgf.DEFAULT_RESOLUTION * pgf.DEFAULT_CANVAS_SIZE_Y
+  term.h_tic =  pgf.DEFAULT_RESOLUTION * pgf.DEFAULT_TIC_SIZE
+  term.v_tic =  pgf.DEFAULT_RESOLUTION * pgf.DEFAULT_TIC_SIZE
+  -- default size for CM@10pt
+  term.h_char = math.floor(pgf.DEFAULT_FONT_H_CHAR * (pgf.DEFAULT_FONT_SIZE/10) * (pgf.DEFAULT_RESOLUTION/1000) + .5)
+  term.v_char = math.floor(pgf.DEFAULT_FONT_V_CHAR * (pgf.DEFAULT_FONT_SIZE/10) * (pgf.DEFAULT_RESOLUTION/1000) + .5)
+  term.description = "Lua PGF/TikZ terminal for TeX and friends"
+  term_default_flags = term.TERM_BINARY + term.TERM_CAN_MULTIPLOT + term.TERM_CAN_DASH + term.TERM_ALPHA_CHANNEL
+                       + term.TERM_LINEWIDTH + term.TERM_IS_LATEX + term.TERM_FONTSCALE
+  term.flags = term_default_flags + term.TERM_CAN_CLIP
+end
+
+
+--
+-- initial = 1  for the initial "set term" call
+--           0  for subsequent option changes -- currently unused, since the changeable options
+--              are hardcoded within gnuplot :-(
+--
+-- t_count   see e.g. int_error()
+--
+term.options = function(opt_str, initial, t_count)
+
+  local o_next = ""
+  local o_type = nil
+  local s_start, s_end = 1, 1
+  local term_opt = ""
+  local term_opt_font, term_opt_size, term_opt_background, term_opt_fontscale, term_opt_scale, term_opt_preamble = "", "", "", "", "", ""
+  local charsize_h, charsize_v, fontsize, fontscale = nil, nil, nil, nil
+  -- trim spaces
+  opt_str = opt_str:gsub("^%s*(.-)%s*$", "%1")
+  local opt_len = string.len(opt_str)
+
+  t_count = t_count - 1
+
+  local set_t_count = function(num) 
+    -- gnuplot handles commas as regular tokens
+    t_count = t_count + 2*num - 2
+  end
+
+  local almost_equals = function(param, opt)
+    local op1, op2
+
+    local st, _ = string.find(opt, "$", 2, true)
+    if st then
+      op1 = string.sub(opt, 1, st-1)
+      op2 = string.sub(opt, st+1)
+      if (string.sub(param, 1, st-1) == op1)
+          and (string.find(op1..op2, param, 1, true) == 1) then
+        return true
+      end
+    elseif opt == param then
+      return true
+    end
+    return false
+  end
+
+  --
+  -- simple parser for options and strings
+  --
+  local get_next_token = function()
+
+    -- beyond the limit?
+    if s_start > opt_len then
+      o_next = ""
+      o_type = nil
+      return
+    end
+
+    t_count = t_count + 1
+
+    -- search the start of the next token
+    s_start, _ = string.find (opt_str, '[^%s]', s_start)
+    if not s_start then
+      o_next = ""
+      o_type = nil
+      return
+    end
+
+    -- a new string argument?
+    local next_char = string.sub(opt_str, s_start, s_start)
+    if next_char == '"' or next_char == "'" then
+      -- find the end of the string by searching for
+      -- the next not escaped quote
+      _ , s_end = string.find (opt_str, '[^\\]'..next_char, s_start+1)
+      if s_end then
+        o_next = string.sub(opt_str, s_start+1, s_end-1)
+        if next_char == '"' then
+          -- Wow! this is to resolve all string escapes, kind of "unescape string"
+          o_next = assert(loadstring("return(\""..o_next.."\")"))()
+        end
+        o_type = "string"
+      else
+        -- FIXME: error: string does not end...
+        -- seems that gnuplot adds missing quotes
+        -- so this will never happen...
+      end
+    else
+      -- ok, it's not a string...
+      -- then find the next white space or end of line
+      -- comma separated strings are regarded as one token
+      s_end, _ = string.find (opt_str, '[^,][%s]+[^,]', s_start)
+      if not s_end then -- reached the end of the string
+        s_end = opt_len + 1
+      else
+        s_end = s_end + 1
+      end
+      o_next = string.sub(opt_str, s_start, s_end-1)
+      if tonumber(o_next) ~= nil then
+        o_type = 'number'
+      else
+      o_type = "op"
+    end
+    end
+    s_start = s_end + 1
+    return
+  end    
+
+  local get_two_sizes = function(str)
+    local args = explode(',', str)
+    set_t_count(#args)
+
+    local num1, num2, unit
+    if #args ~= 2 then
+      return false, nil
+    else
+      num1, unit = gfx.parse_number_unit(args[1])
+      if unit then
+        t_count = t_count + 1
+      end
+      num2, unit = gfx.parse_number_unit(args[2])
+      if unit then
+        t_count = t_count + 1
+      end
+      if not (num1 and num2) then
+        return false, nil
+      end
+    end
+    return num1, num2
+  end
+  
+  local print_help = false
+
+  while true do
+    get_next_token()
+    if not o_type then break end
+    if almost_equals(o_next, "he$lp") then
+      print_help = true
+    elseif almost_equals(o_next, "mono$chrome") then
+      -- no colored lines
+      -- Setting `term.TERM_MONOCHROME' would internally disable colors for all drawings.
+      -- We do it the `soft' way by redefining all colors via a TeX command.
+      -- Maybe an additional terminal option is useful here...
+      gfx.opt.lines_colored = false
+    elseif almost_equals(o_next, "c$olor") or almost_equals(o_next, "c$olour") then
+      -- colored lines
+      gfx.opt.lines_colored = true
+    elseif almost_equals(o_next, "so$lid") then
+      -- no dashed and dotted etc. lines
+      gfx.opt.lines_dashed = false
+    elseif almost_equals(o_next, "notime$stamp") then
+      -- omit output of the timestamp
+      gfx.opt.notimestamp = true
+    elseif almost_equals(o_next, "da$shed") then
+      -- dashed and dotted etc. lines
+      gfx.opt.lines_dashed = true
+    elseif almost_equals(o_next, "gparr$ows") then
+      -- use gnuplot arrows instead of TikZ
+      gfx.opt.gp_arrows = true
+    elseif almost_equals(o_next, "nogparr$ows") then
+      -- use gnuplot arrows instead of TikZ
+      gfx.opt.gp_arrows = false
+    elseif almost_equals(o_next, "gppoint$s") then
+      -- use gnuplot points instead of TikZ
+      gfx.opt.gp_points = true
+    elseif almost_equals(o_next, "nogppoint$s") then
+      -- use gnuplot points instead of TikZ
+      gfx.opt.gp_points = false
+    elseif almost_equals(o_next, "nopic$environment") then
+      -- omit the 'tikzpicture' environment
+      gfx.opt.nopicenv = true
+    elseif almost_equals(o_next, "pic$environment") then
+      -- omit the 'tikzpicture' environment
+      gfx.opt.nopicenv = false
+    elseif almost_equals(o_next, "origin$reset") then
+      -- moves the origin of the TikZ picture to the lower left corner of the plot
+      gfx.opt.set_origin = true
+    elseif almost_equals(o_next, "noorigin$reset") then
+      -- moves the origin of the TikZ picture to the lower left corner of the plot
+      gfx.opt.set_origin = false
+    elseif almost_equals(o_next, "plot$size") then
+      get_next_token()
+      gfx.opt.plotsize_x, gfx.opt.plotsize_y = get_two_sizes(o_next)
+      if not gfx.opt.plotsize_x then
+        gp.int_error(t_count, string.format("error: two comma seperated lengths expected, got `%s'.", o_next))
+      end
+      gfx.opt.set_plotsize = true
+      term_opt_size = string.format("plotsize %s,%s ", gfx.opt.plotsize_x, gfx.opt.plotsize_y)
+      -- we set the canvas size to the plotsize to keep the aspect ratio as good as possible
+      -- and rescale later once we know the actual plot size...
+      term.xmax = gfx.opt.plotsize_x*pgf.DEFAULT_RESOLUTION
+      term.ymax = gfx.opt.plotsize_y*pgf.DEFAULT_RESOLUTION
+    elseif almost_equals(o_next, "si$ze") then
+      get_next_token()
+      local plotsize_x, plotsize_y = get_two_sizes(o_next)
+      if not plotsize_x then
+        gp.int_error(t_count, string.format("error: two comma seperated lengths expected, got `%s'.", o_next))
+      end
+      gfx.opt.set_plotsize = false
+      term_opt_size = string.format("size %s,%s ", plotsize_x, plotsize_y)
+      term.xmax = plotsize_x*pgf.DEFAULT_RESOLUTION
+      term.ymax = plotsize_y*pgf.DEFAULT_RESOLUTION
+    elseif almost_equals(o_next, "char$size") then
+      get_next_token()
+      charsize_h, charsize_v = get_two_sizes(o_next)
+      if not charsize_h then
+        gp.int_error(t_count, string.format("error: two comma seperated lengths expected, got `%s'.", o_next))
+      end
+    elseif almost_equals(o_next, "sc$ale") then
+      get_next_token()
+      local xscale, yscale = get_two_sizes(o_next)
+      if not xscale then
+        gp.int_error(t_count, string.format("error: two comma seperated numbers expected, got `%s'.", o_next))
+      end
+      term_opt_scale = string.format("scale %s,%s ",xscale, yscale)
+      term.xmax = term.xmax * xscale
+      term.ymax = term.ymax * yscale
+    elseif almost_equals(o_next, "tikzpl$ot") then
+      get_next_token()
+      local args = explode(',', o_next)
+      set_t_count(#args)
+      for i = 1,#args do
+        args[i] = tonumber(args[i])
+        if args[i] == nil then
+          gp.int_error(t_count, string.format("error: list of comma seperated numbers expected, got `%s'.", o_next))
+        end
+        args[i] = args[i] - 1
+      end
+      gfx.opt.plot_list = args
+    elseif almost_equals(o_next, "provide$vars") then
+      get_next_token()
+      local args = explode(',', o_next)
+      set_t_count(#args)
+      gfx.opt.gnuplot_vars = args
+    elseif almost_equals(o_next, "tikzar$rows") then
+      -- map the arrow angles to TikZ arrow styles
+      gfx.opt.tikzarrows = true
+    elseif almost_equals(o_next, "notikzar$rows") then
+      -- don't map the arrow angles to TikZ arrow styles
+      gfx.opt.tikzarrows = false
+    elseif almost_equals(o_next, "nobit$map") then
+      -- render images as filled rectangles instead of the nativ
+      -- PS or PDF image format
+      gfx.opt.direct_image = false
+    elseif almost_equals(o_next, "bit$map") then
+      -- render images as nativ PS or PDF image
+      gfx.opt.direct_image = true
+    elseif almost_equals(o_next, "cmyk$image") then
+      -- use cmyk color model for images
+      gfx.opt.cmykimage = true
+    elseif almost_equals(o_next, "rgb$image") then
+      -- use cmyk color model for images
+      gfx.opt.cmykimage = false
+    elseif almost_equals(o_next, "full$doc") or almost_equals(o_next, "stand$alone") then
+      -- produce full tex document
+      gfx.opt.full_doc = true
+    elseif almost_equals(o_next, "nofull$doc") or almost_equals(o_next, "nostand$alone") then
+      -- produce full tex document
+      gfx.opt.full_doc = true
+    elseif almost_equals(o_next, "create$style") then
+      -- creates the coresponding LaTeX style from the script
+      pgf.create_style()
+    elseif almost_equals(o_next, "backg$round") then
+      -- set background color
+      get_next_token()
+      -- ignore rgbcolor keyword if present
+      if almost_equals(o_next, "rgb$color") then get_next_token() end
+      if o_type == 'string' then
+        gfx.opt.bgcolor = gp.parse_color_name(t_count, o_next)
+        term_opt_background = string.format("background '%s'", o_next)
+      else
+        gp.int_error(t_count, string.format("error: string expected, got `%s'.", o_next))
+      end
+    elseif almost_equals(o_next, "fo$nt") then
+      get_next_token()
+      if o_type == 'string' then
+        gfx.opt.default_font, fontsize = gfx.parse_font_string(o_next)
+      else
+        gp.int_error(t_count, string.format("error: string expected, got `%s'.", o_next))
+      end
+      term_opt_font = string.format("font %q ", o_next)
+    elseif almost_equals(o_next, "fonts$cale") or  almost_equals(o_next, "texts$cale") then
+      get_next_token()
+      if o_type == 'number' then
+        fontscale = tonumber(o_next)
+        if fontscale < 0 then
+          fontscale = 1.0
+        end
+      else
+        gp.int_error(t_count, string.format("error: number expected, got `%s'.", o_next))
+      end
+    elseif almost_equals(o_next, "externalimages") then
+      if term.external_images ~= nil then
+        term.external_images = true;
+      else
+        gp.int_warn(t_count, "Externalization of images is not supported.")
+      end
+    elseif almost_equals(o_next, "noexternalimages") then
+      if term.external_images ~= nil then
+        term.external_images = false;
+      else
+        gp.int_warn(t_count, "Externalization of images is not supported.")
+      end
+    elseif almost_equals(o_next, "pre$amble") or almost_equals(o_next, "header") then
+      get_next_token()
+      if o_type == 'string' then
+        term_opt_preamble = term_opt_preamble .. string.format("preamble %q ", o_next)
+        gfx.opt.latex_preamble = gfx.opt.latex_preamble .. o_next .. "\n"
+      else
+        gp.int_error(t_count, string.format("error: string expected, got `%s'.", o_next))
+      end
+    elseif almost_equals(o_next, "nopre$amble") or almost_equals(o_next, "noheader") then
+        gfx.opt.latex_preamble = ''
+    elseif almost_equals(o_next, "con$text") then
+      gfx.opt.tex_format = "context"
+      -- ConTeXt has a default of 12pt
+      fontsize = 12
+    elseif almost_equals(o_next, "tex") then
+      gfx.opt.tex_format = "tex"
+    elseif almost_equals(o_next, "latex") then
+      gfx.opt.tex_format = "latex"
+    elseif almost_equals(o_next, "clip") then
+      gfx.opt.clip = true
+      term.flags = term_default_flags
+      term.flags = term_default_flags + term.TERM_CAN_CLIP
+    elseif almost_equals(o_next, "noclip") then
+      gfx.opt.clip = false
+      term.flags = term_default_flags
+    elseif almost_equals(o_next, "tight$boundingbox") then
+      gfx.opt.tightboundingbox = true
+    elseif almost_equals(o_next, "notight$boundingbox") then
+      gfx.opt.tightboundingbox = false
+    else
+      gp.int_warn(t_count, string.format("unknown option `%s'.", o_next))
+    end
+  end
+
+  -- determine "internal" font size
+  -- FIXME: what happens on "set termoptions font ..." or subsequent terminal calls
+  local term_h_char, term_v_char = term.h_char, term.v_char
+  if fontsize ~= nil then
+    term_h_char = pgf.DEFAULT_FONT_H_CHAR * (fontsize/10) * (pgf.DEFAULT_RESOLUTION/1000)
+    term_v_char = pgf.DEFAULT_FONT_V_CHAR * (fontsize/10) * (pgf.DEFAULT_RESOLUTION/1000)
+    -- on change apply old text scaling
+    if not fontscale then
+      fontscale = gfx.opt.fontscale;
+    end
+  end
+  -- a given character size overwrites font size
+  if charsize_h ~= nil then
+    term_h_char = charsize_h*pgf.DEFAULT_RESOLUTION
+    term_v_char = charsize_v*pgf.DEFAULT_RESOLUTION
+    -- on change apply old text scaling
+    if not fontscale then
+      fontscale = gfx.opt.fontscale;
+    end
+  end
+  if fontscale ~= nil then
+    term_h_char = term_h_char * fontscale
+    term_v_char = term_v_char * fontscale
+    gfx.opt.fontscale = fontscale;
+    term_opt_fontscale = string.format("fontscale %s", gfx.opt.fontscale)
+  end
+  term.h_char = math.floor(term_h_char + .5)
+  term.v_char = math.floor(term_v_char + .5)
+
+
+  if print_help then
+    pgf.print_help(gp.term_out)
+  end
+
+  local tf = function(b,y,n)
+    local addopt = ''
+    if b then 
+      addopt = y
+    else
+      addopt = n
+    end
+    if (string.len(addopt) > 0) then
+      term_opt = term_opt .. addopt .. ' '
+    end
+  end
+
+  tf(true, gfx.opt.tex_format, nil)
+  tf(true, term_opt_font, nil)
+  tf(true, term_opt_size, nil)
+  tf(true, term_opt_background, nil)
+  tf(true, term_opt_fontscale, nil)
+  tf((#gfx.opt.latex_preamble>0), term_opt_preamble, 'nopreamble')
+  tf(gfx.opt.lines_colored, 'color', 'monochrome')
+  tf(gfx.opt.full_doc, 'standalone', 'nostandalone')
+  tf(gfx.opt.lines_dashed, 'dashed', 'solid')
+  tf(gfx.opt.gp_arrows, 'gparrows', 'nogparrows')
+  tf(gfx.opt.tikzarrows, 'tikzarrows', 'notikzarrows')
+  tf(gfx.opt.gp_points, 'gppoints', 'nogppoints')
+  tf(gfx.opt.nopicenv, 'nopicenvironment', 'picenvironment')
+  tf(gfx.opt.set_origin, 'originreset', 'nooriginreset')
+  tf(gfx.opt.direct_image, 'bitmap', 'nobitmap')
+  tf(gfx.opt.cmykimage, 'cmykimage', 'rgbimage')
+  tf(gfx.opt.clip, 'clip', 'noclip')
+  tf(gfx.opt.tightboundingbox, 'tightboundingbox', 'notightboundingbox')
+  if term.external_images ~= nil then
+    tf(term.external_images, 'externalimages', 'noexternalimages')
+  end
+  gp.term_options(term_opt)
+
+  return 1
+end
+
+-- Called once, when the device is first selected.
+term.init = function()
+  if gfx.opt.full_doc then
+    pgf.write_doc_begin(gfx.opt.latex_preamble)
+  end
+  return 1
+end
+
+-- Called just before a plot is going to be displayed.
+term.graphics = function()
+  -- reset some state variables
+  gfx.linetype_idx_set = nil
+  gfx.linewidth_set = nil
+  gfx.pointsize_set = nil
+  gfx.color_set = nil
+  gfx.in_picture = true
+  gfx.have_plotbox = false
+  gfx.boundingbox_cnt = 0
+  gfx.scalex = 1/pgf.DEFAULT_RESOLUTION
+  gfx.scaley = 1/pgf.DEFAULT_RESOLUTION
+  gfx.current_boundingbox = {
+    xleft = nil, xright = nil, ytop = nil, ybot = nil
+  }
+
+    -- put a newline between subsequent plots in fulldoc mode...
+  if gfx.opt.full_doc then
+    gp.write("\n")
+  end
+  pgf.write_graph_begin(gfx.opt.default_font, gfx.opt.nopicenv)
+  return 1
+end
+
+
+term.vector = function(x, y)
+  if #gfx.path == 0 then
+    gfx.start_path(gfx.posx, gfx.posy)
+  elseif not gfx.check_coord(x, y) then
+    -- checked for zero path length and add the path coords to gfx.path
+    gfx.path[#gfx.path+1] = {x,y}
+  end
+  return 1
+end
+
+term.move = function(x, y)
+  -- only "move" if we change our latest position
+  if not gfx.check_coord(x, y) then
+    -- finish old path and start a new one
+    gfx.check_in_path()
+    gfx.start_path(x, y)
+  end
+  return 1
+end
+
+term.linetype = function(ltype)
+  gfx.check_in_path()
+
+  gfx.set_color('LT', {ltype})
+
+  if (ltype < -2) then -- LT_NODRAW, LT_BACKGROUND, LT_UNDEFINED
+    ltype = -2
+  end
+
+  gfx.linetype_idx = ltype
+
+  return 1
+end
+
+term.point = function(x, y, num)
+  if gfx.opt.gp_points then
+    return 0
+  else
+    gfx.check_in_path()
+    gfx.check_color()
+    gfx.check_linewidth()
+    gfx.check_pointsize()
+  
+    local pm
+    if num == -1 then
+      pm = pgf.styles.plotmarks[1][1]
+    else
+      pm = pgf.styles.plotmarks[(num % (#pgf.styles.plotmarks-1)) + 2][1]
+    end
+    pgf.draw_points({{x,y}}, pm)
+    
+    return 1
+  end
+end
+
+
+--[[
+  this differs from the original API
+  one may use the additional parameters to define own styles
+  e.g. "misuse" angle for numbering predefined styles...
+
+  int length        /* head length */
+  double angle      /* head angle in degrees */
+  double backangle  /* head back angle in degrees */
+  int filled        /* arrow head filled or not */
+]]
+term.arrow = function(sx, sy, ex, ey, head, length, angle, backangle, filled)
+  if gfx.opt.gp_arrows then
+    return 0
+  else
+    local headstyle = 0
+    if gfx.opt.tikzarrows then
+      headstyle = angle
+    end
+    gfx.check_in_path()
+    gfx.check_color()
+    gfx.check_linetype()
+    gfx.check_linewidth()
+    pgf.draw_arrow({{sx,sy},{ex,ey}}, gfx.HEAD_STR[head+1], headstyle)
+    return 1
+  end
+end
+
+-- Called immediately after a plot is displayed.
+term.text = function()
+  gfx.check_in_path()
+  pgf.write_graph_end(gfx.opt.nopicenv)
+  gfx.in_picture = false
+  return 1
+end
+
+term.put_text = function(x, y, txt)
+  gfx.check_in_path()
+  gfx.check_color()
+  
+  if (txt ~= '') or (gfx.text_font ~= '')  then -- omit empty nodes
+    pgf.write_text_node({x, y}, txt, gfx.text_angle, gfx.TEXT_ANCHOR[gfx.text_justify], gfx.text_font)
+  end
+  return 1
+end
+
+term.justify_text = function(justify)
+  gfx.text_justify = justify
+  return 1
+end
+
+term.text_angle = function(ang)
+  gfx.text_angle = ang
+  return 1
+end
+
+term.linewidth = function(width)
+  if gfx.linewidth ~= width then
+    gfx.check_in_path()
+    gfx.linewidth = width
+  end
+  return 1
+end
+
+term.pointsize = function(size)
+  if gfx.pointsize ~= size then
+    gfx.check_in_path()
+    gfx.pointsize = size
+  end
+  return 1
+end
+
+term.set_font = function(font)
+  gfx.text_font = gfx.parse_font_string(font)
+  return 1
+end
+
+-- at the moment this is only used to check
+-- the plot's bounding box as seldom as possible
+term.layer = function(l)
+  if l == 'end_text' then
+    -- called after a plot is finished (also after each "mutiplot")
+    gfx.write_boundingbox()
+  end
+  return 1
+end
+
+-- we don't use this, because we are implicitly testing
+-- for closed paths
+term.path = function(p)
+  return 1
+end
+
+
+term.filled_polygon = function(style, fillpar, t)
+  local pattern = nil
+  local color = nil
+  local opacity = 100
+  local saturation = 100
+  
+  gfx.check_in_path()
+
+  if style == 'EMPTY' then
+      -- FIXME: should be the "background color" and not gpbgfillcolor
+      pattern = ''
+      color = 'gpbgfillcolor'
+      saturation = 100
+      opacity = 100
+  elseif style == 'DEFAULT' or style == 'OPAQUE' then -- FIXME: not shure about the opaque style
+      pattern = ''
+      color = gfx.color
+      saturation = 100
+      opacity = 100
+  elseif style == 'SOLID' then
+      pattern = ''
+      color = gfx.color
+      if fillpar < 100 then
+        saturation = fillpar
+      else
+        saturation = 100
+      end
+      opacity = 100
+  elseif style == 'PATTERN' then
+      pattern = pgf.styles.patterns[(fillpar % #pgf.styles.patterns) + 1][1]
+      color = gfx.color
+      saturation = 100
+      opacity = 100
+  elseif style == 'TRANSPARENT_SOLID' then
+      pattern = ''
+      color = gfx.color
+      saturation = 100
+      opacity = fillpar
+  elseif style == 'TRANSPARENT_PATTERN' then
+      pattern = pgf.styles.patterns[(fillpar % #pgf.styles.patterns) + 1][1]
+      color = gfx.color
+      saturation = 100
+      opacity = 0
+  end
+  
+  pgf.draw_fill(t, pattern, color, saturation, opacity)  
+  
+  return 1
+end
+
+
+term.boxfill = function(style, fillpar, x1, y1, width, height)
+  local t = {{x1, y1}, {x1+width, y1}, {x1+width, y1+height}, {x1, y1+height}}
+  return term.filled_polygon(style, fillpar, t)
+end
+
+-- points[row][column]
+-- m: #cols, n: #rows
+-- corners: clip box and draw box coordinates
+-- ctype: "RGB" or "RGBA" or "PALETTE"
+term.image = function(m, n, points, corners, ctype, xfile)
+  gfx.check_in_path()
+  
+  pgf.write_clipbox_begin({corners[3][1],corners[3][2]},{corners[4][1],corners[4][2]})
+  
+    local ll = {corners[1][1],corners[2][2]}
+    local ur = {corners[2][1],corners[1][2]}
+  local xxfile
+
+  if xfile ~= nil then
+    -- strip file extension
+    xxfile = string.match(xfile, "^(.*).png$")
+  else
+    xxfile = ""
+  end
+  -- load exclusively an external file and don't generate inline images
+  if xfile ~= nil and term.external_images == true then
+     pgf.load_image_file(ll, ur, xxfile)
+  elseif gfx.opt.direct_image then
+    if gfx.opt.cmykimage then
+      pgf.draw_raw_cmyk_image(points, m, n, ll, ur, xxfile)
+    else
+      pgf.draw_raw_rgb_image(points, m, n, ll, ur, xxfile)
+    end
+  else
+    -- draw as filled squares
+    local w = (corners[2][1] - corners[1][1])/m
+    local h = (corners[1][2] - corners[2][2])/n
+
+    local yy,yyy,xx,xxx
+    for cnt = 1,#points do
+      xx = corners[1][1]+(cnt%m-1)*w
+      yy = corners[1][2]-math.floor(cnt/m)*h
+      yyy = yy-h
+      xxx = xx+w
+      pgf.draw_fill({{xx, yy}, {xxx, yy}, {xxx, yyy}, {xx, yyy}}, '', gfx.format_color(ctype, points[cnt]) , 100, 100)
+    end
+  end
+  pgf.write_clipbox_end()
+end
+
+term.make_palette = function()
+  -- continuous number of colours
+  return 0
+end
+
+term.previous_palette = function()
+  return 1
+end
+
+term.set_color = function(ctype, lt, value, r, g, b)
+  gfx.check_in_path()
+  -- FIXME gryscale on monochrome?? ... or use xcolor?
+
+  if ctype == 'LT' then
+    gfx.set_color('LT', {lt})
+  elseif ctype == 'FRAC' then
+    if gfx.opt.lines_colored then
+      gfx.set_color('RGB', {r, g , b})
+    else
+      gfx.set_color('GRAY', {value})
+    end
+  elseif ctype == 'RGB' then
+    gfx.set_color('RGB', {r, g , b})
+  else
+    gp.int_error(string.format("set color: unknown type (%s), lt (%i), value (%.3f)\n", ctype, lt, value))
+  end
+  
+  return 1
+end
+
+-- Called when gnuplot is exited.
+term.reset = function(p)
+  gfx.check_in_path()
+  gfx.check_variables()
+  if gfx.opt.full_doc then
+    pgf.write_doc_end()
+  end
+  return 1
+end
+
+--[[===============================================================================================
+
+  command line code
+
+]]--===============================================================================================
+
+term_help = function(helptext)
+  local w
+  for w in string.gmatch(helptext, "([^\n]*)\n") do
+    w = string.gsub(w, "\\", "\\\\")
+    w = string.gsub(w, "\"", "\\\"")
+    io.write('"'..w.."\",\n")
+  end
+--[[  
+  local out = string.gsub(helptext, "\n", "\",\n\"")
+  local out = string.gsub(helptext, "\n", "\",\n\"")
+  io.write(out)]]
+end
+
+if arg then -- called from the command line!
+  if #arg > 0 and arg[1] == 'style' then
+    -- write style file
+    pgf.create_style()
+  elseif arg[1] == 'termhelp' then
+    io.write([["2 lua tikz",
+"?set terminal lua tikz",
+"?set term lua tikz",
+"?term lua tikz",
+" The TikZ driver is one output mode of the generic Lua terminal.",
+"",
+" Syntax:",
+"     set terminal lua tikz",
+"",
+]])
+    pgf.print_help(term_help)
+    io.write("\"\"\n")
+  else
+    io.write([[
+ This script is intended to be called from GNUPLOT.
+
+ For generating the associated TeX/LaTeX/ConTeXt style files
+ just call this script with the additional option 'style':
+
+   # lua gnuplot.lua style
+
+ The TikZ driver provides the following additional terminal options:
+
+]])
+    pgf.print_help(io.write)
+  end
+end
diff --git a/util/X86MAC64/share/man/man1/gnuplot.1 b/util/X86MAC64/share/man/man1/gnuplot.1
new file mode 100644 (file)
index 0000000..5d39ad2
--- /dev/null
@@ -0,0 +1,149 @@
+.\" dummy line
+.TH GNUPLOT 1 " 2 October 2013"
+.UC 4
+.SH NAME
+gnuplot \- an interactive plotting program
+.SH SYNOPSIS
+.B gnuplot
+[X11 options] [options] [file ...]
+.br
+.SH DESCRIPTION
+.B Gnuplot
+is a command-driven interactive plotting program.
+.PP
+If file names are given on the command line,
+gnuplot
+loads each file with the
+.B load
+command, in the order specified, and exits after the last file is
+processed.  If no files are given, \fBgnuplot\fP prompts for
+interactive commands.
+.PP
+Here are some of its features:
+.PP
+Plots any number of functions, built up of C operators, C math library
+functions, and some things C doesn't have like **, sgn(), etc.  
+.PP
+User-defined constants and functions.
+.PP
+All computations performed in the complex domain.  Just the real part is
+plotted by default, but functions like imag() and abs() and arg() are
+available to override this.
+.PP
+Many presentation styles for plotting user data from files, including
+surface-fitting, error bars, boxplots, histograms, heat maps, and simple
+manipulation of image data.  There is an on-line demo collection at
+.br
+.I http://gnuplot.info/demo
+.PP
+Nonlinear least-squares fitting.
+.PP
+2D and 3D plots with mouse-controlled zoom and rotation.
+.PP
+Shell escapes and command line substitution.
+.PP
+Load and save capability.
+.PP
+Support for a huge variety of output devices and file formats.
+.SH OPTIONS
+.PP
+\fB\-p, \-\-persist\fP lets plot windows survive after main gnuplot program exits.
+.PP
+\fB\-d, \-\-default\fP settings.  Do not read from gnuplotrc or ~/.gnuplot on entry.
+.PP
+\fB\-e "command list"\fP executes the requested commands before loading the next input file.
+.PP
+\fB\-h, \-\-help\fP print summary of usage
+.PP
+\fB\-V\fP show current version
+.SH X11 OPTIONS
+.B Gnuplot
+provides the \fIx11\fP terminal type for use
+with X servers. This terminal type is set automatically at startup if
+the \fBGNUTERM\fR environment variable is set to x11,
+or if the \fB\-display\fR command line option is used.
+For terminal type x11, \fIgnuplot\fP
+accepts the standard X Toolkit options and resources such as geometry, font,
+and background. See the X(1) man page for a description of common options.
+For additional X options specific to gnuplot, type \fIhelp x11\fP on the
+gnuplot command line.
+.SH ENVIRONMENT
+A number of shell environment variables are understood by
+gnuplot.  None of these are required.
+.TP
+.B GNUTERM
+The name of the terminal type to be used by default.  This can be
+overridden by the gnuplotrc or .gnuplot start-up files and,
+of course, by later explicit "set terminal" commands.
+.TP
+.B GNUHELP 
+The pathname of the HELP file (gnuplot.gih).
+.TP
+.B HOME
+The name of a directory to search for a .gnuplot file.
+.TP
+.B PAGER
+An output filter for help messages.
+.TP
+.B SHELL
+The program used for the "shell" command.
+.TP
+.B FIT_SCRIPT
+Specifies a gnuplot command to be executed when a
+fit is interrupted---see "help fit".  
+.TP
+.B FIT_LOG
+The name of the logfile maintained by fit.
+.TP
+.B GNUPLOT_LIB
+Additional search directories for data and command files. The variable
+may contain a single directory name, or a list of directories
+separated by ':'. The contents of GNUPLOT_LIB are appended to the
+"loadpath" variable, but not saved with the "save" and "save set"
+commands.
+.TP
+.B GDFONTPATH
+Several gnuplot terminal drivers access TrueType fonts via the gd library.
+This variable gives the font search path for these drivers.
+.TP
+.B GNUPLOT_DEFAULT_GDFONT
+The default font for the terminal drivers that access TrueType fonts
+via the gd library.
+.TP
+.B GNUPLOT_FONTPATH
+The font search path used by the postscript terminal. The format is
+the same as for GNUPLOT_LIB. The contents of GNUPLOT_FONTPATH are
+appended to the "fontpath" variable, but not saved with the "save" and
+"save set" commands.
+.TP
+.B GNUPLOT_PS_DIR
+Used by the postscript driver to locate external prologue
+files. Depending on the build process, gnuplot contains either a
+builtin copy of those files or simply a default hardcoded path. Use
+this variable to test the postscript terminal with custom prologue
+files. See "help postscript prologue".
+.SH FILES
+.TP
+.I gnuplotrc
+When gnuplot is run, it first looks for a system-wide initialization
+file named gnuplotrc.  The standard location of this file expected by
+the program is reported by the "show loadpath" command.
+.TP
+.I .gnuplot
+After loading the system-wide initialization file, if any,
+Gnuplot looks for a private initialization file in the HOME directory.
+It may contain any legal gnuplot commands, but typically they are
+limited to setting the preferred terminal and line types
+and defining frequently-used functions or variables.
+.TP 
+.I fit.log
+The default name of the logfile output by the "fit" command.
+.SH AUTHORS
+Original authors: Thomas Williams and Colin Kelley.
+Starting with gnuplot version 3.8, the project source is cooperatively
+maintained on SourceForge by a large number of contributors.
+.SH BUGS
+Please report bugs using the project bug tracker on SourceForge.
+.SH SEE ALSO
+See the printed manual or the on-line help for details on specific commands.
+Project web site at http://gnuplot.info