6.3 Colours

This paragraph describes  routines  that modify  colours.  A
colour value in DISLIN may be an entry of the current colour
table, or an explicit RGB value. When specifying an explicit
RGB value,  the colour value  must have  the following hexa-
decimal form:  01bbggrr.  The  low-order  byte  contains the
intensity of red, the second byte the intensity of green and
the  third byte the intensity of blue.  The high-order  byte
must have the value 1. The function INTRGB creates an expli-
cit RGB value from RGB coordinates. If the output device can
only display 256 colours and an explicit RGB value is given, 
the nearest entry  in the current  colour table that matches
the  RGB  coordinates  will  be used.  Some routines  define 
colours  also  by name such as COLOR, or by RGB  coordinates
such as SETRGB. 

6.3.1 Changing the Foreground Colour

                         C O L O R

COLOR defines the colours used for plotting text and lines.

The call is:  CALL COLOR (CNAME)               level 1, 2, 3

CNAME         is a character string that can have the values
              'BLACK',  'RED',   'GREEN',  'BLUE',   'CYAN',
              'YELLOW', 'ORANGE', 'MAGENTA', 'WHITE', 'FORE'
              and 'BACK'. The keyword 'FORE' resets the col-
              our  to the default value,  while the  keyword
              'BACK' sets the colour  to the background col-
              our.

Note:         The values  'BLACK' and 'WHITE' define not ab-
              solute colours. If the output format is in re-
              verse mode,  'BLACK' is interpreted as 'WHITE'
              and 'WHITE' is interpreted as 'BLACK'.  If you
              want to use true black and true white, you can
              use the routine SETRGB (0., 0., 0.) and SETRGB
              (1., .1., 1.). 

                         S E T C L R

The  routine  SETCLR  sets  the foreground colour  where the
colour can be specified as a colour table entry or as an ex-
plicit RGB value.

The call is:  CALL SETCLR (NCOL)               level 1, 2, 3

NCOL          is a colour value.
                                Default: NCOL = 255 (White).

                         S E T R G B

The routine  SETRGB defines the  foreground colour specified
in RGB coordinates. 
 
The call is:  CALL SETRGB (XR, XG, XB)         level 1, 2, 3

XR, XG, XB    are the  RGB  coordinates  of a colour  in the 
              range 0 to 1. If the output device cannot dis-
              play true colours, SETRGB sets the nearest en-
              try in the colour table  that matches  the RGB
              coordinates. 

6.3.2 Modifying Colour Tables

                         S E T V L T

SETVLT selects a colour table.

The call is:  CALL SETVLT (CVLT)               level 1, 2, 3
CVLT          is a character string  that defines the colour
              table.
  = 'SMALL'   defines  a  small  colour table with the 8 co-
              lours:   1 = BLACK,    2 = RED,    3 =  GREEN, 
              4 = BLUE,  5 = YELLOW, 6 = ORANGE, 7 =  CYAN
              and 8 = MAGENTA.
  = 'VGA'     defines the  16 standard colours of a VGA gra-
              phics card.
  = 'RAIN'    defines  256  colours  arranged  in a  rainbow
              where 0 means black and 255 means white.
  = 'SPEC'    defines  256  colours  arranged  in a  rainbow
              where 0 means black and 255 means white.  This
              colour  table  uses  more  violet colours than
              'RAIN'.
  = 'GREY'    defines  256 grey scale colours  where 0 means
              black and 255 is white.
  = 'RRAIN'   is the reverse colour table of 'RAIN'.
  = 'RSPEC'   is the reverse colour table of 'SPEC'.
  = 'RGREY'   is the reverse colour table of 'GREY'.
  = 'TEMP'    defines a temperature colour table.
              The default colour table is  'RAIN'.

                          M Y V L T

The routine MYVLT changes the current colour table.

The call is:  CALL MYVLT (XR, XG, XB, N)    level 0, 1, 2, 3

XR, XG, XB    are arrays  containing  RGB coordinates in the
              range 0 to 1.
N             is the number of colour entries.

                         S E T I N D

The routine  SETIND  allows  the user  to change the current
colour table.

The call is:  CALL SETIND (INDEX, XR, XG, XB)  level 1, 2, 3

INDEX         is an index between  0 and 255.
XR, XG, XB    are the  RGB  coordinates  of a  colour in the
              range 0 to 1.

                         V L T F I L

The routine VLTFIL saves the current colour table to a file,
or loads a colour table from a file.

The call is:  CALL VLTFIL (CFIL, COPT)         level 1, 2, 3

CFIL          is a character string containing a filename. 
              Colour entries  are stored  in the file as RGB 
              coordinates in the range 0 to 1.
COPT          is a character string that can have the values 
              'SAVE' and 'LOAD'. 
   
6.3.3 Utitily Routines for Colours

                         I N T R G B

The function  INTRGB  creates  an explicit colour value from 
RGB coordinates.

The call is:  N = INTRGB (XR, XG, XB)       level 0, 1, 2, 3

XR, XG, XB    are the  RGB coordinates  of a colour  in  the 
              range 0 to 1.
N             is the returned colour value.

                         I N D R G B

The function  INDRGB returns the nearest entry in the colour 
table that matches given RGB coordinates.
 
The call is:  N = INDRGB (XR, XG, XB)          level 1, 2, 3

XR, XG, XB    are the  RGB coordinates  of a colour  in  the 
              range 0 to 1.
N             is the returned colour index.


Sometimes,  it is easier to specify colours as HSV coordina-
tes where H is the hue, S the saturation and  V the value of
a colour.  The following routines  convert coordinates  from
the HSV to the RGB model and vice versa.

                         H S V R G B

The routine HSVRGB converts HSV coordinates to RGB coordina-
tes.

The call is:  CALL HSVRGB (XH, XS, XV, XR, XG, XB)
                                               level 1, 2, 3

XH, XS, XV    are the hue, saturation and value of a colour.
              XH  must be  in the range  0  to  360  degrees
              while  XS and XV can have values between 0 and
              1. In the HSV model, colours lie in a spectral
              order on a six-sided pyramid where red corres-
              ponds to the angle 0, green to 120 and blue to
              240 degrees.
XR, XG, XB    are the  RGB  coordinates  in the range 0 to 1
              calculated by HSVRGB.

                         R G B H S V

The routine RGBHSV converts RGB coordinates to HSV coordina-
tes.

The call is:  CALL RGBHSV (XR, XG, XB, XH, XS, XV)
                                               level 1, 2, 3

6.4 Text and Numbers

                        H E I G H T

HEIGHT defines the character height.

The call is:  CALL HEIGHT (NHCHAR)             level 1, 2, 3
NHCHAR        is the character height in plot coordinates.
                                        Default: NHCHAR = 36

                         A N G L E

This routine modifies the direction of text plotted with the
routines MESSAG, NUMBER, RLMESS and RLNUMB.

The call is:  CALL ANGLE (NDEG)                level 1, 2, 3

NDEG          is an angle measured in degrees and a counter-
              clockwise direction.
                                           Default: NDEG = 0

                         T X T J U S

The routine  TXTJUS  defines  the alignment  of text plotted
with the routines MESSAG and NUMBER.

The call is:  CALL TXTJUS (CJUS)               level 1, 2, 3

CJUS          is a character string that can have the values
              'LEFT', 'RIGHT' and 'CENT'. The starting point
              of text and numbers will be interpreted as up-
              per left,  upper right and upper centre point.
                                     Default: CJUS = 'LEFT'.

                         F R M E S S

FRMESS defines the thickness  of frames around  text plotted
by MESSAG.

The call is:  CALL FRMESS (NFRM)               level 1, 2, 3

NFRM          is the  thickness  of frames in plot coordina-
              tes.  If  NFRM  is negative,  frames  will  be
              thickened from the inside. If positive, frames
              will be thickened towards the outside.
                                           Default: NFRM = 0

                         N U M F M T

NUMFMT modifies  the format of numbers plotted by NUMBER and
RLNUMB.

The call is:  CALL  NUMFMT (COPT)              level 1, 2, 3

COPT          is a character string defining the format.
  = 'FLOAT'   will plot numbers in floating-point format.
  = 'EXP'     will  plot numbers in exponential format where
              fractions range between 1 and 10.
  = 'FEXP'    will plot  numbers  in the  format fEn where f
              ranges between 1 and 10.
  = 'LOG'     will plot numbers logarithmically with base 10
              and the corresponding exponents. The exponents
              must be passed to NUMBER and RLNUMB.
                                    Default: COPT = 'FLOAT'.

Note:         SETEXP and SETBAS alter the position  and size 
              of exponents.

                         N U M O D E

NUMODE  alters the appearance  of numbers plotted by  NUMBER
and RLNUMB.

The call is:  CALL NUMODE (CDEC, CGRP, CPOS, CFIX)
                                               level 1, 2, 3

CDEC          is a character string that defines the decimal
              notation.
  = 'POINT'   defines a point.
  = 'COMMA'   defines a comma.
CGRP          is a character string  that defines  the grou-
              ping of 3 digits.
  = 'NONE'    means no grouping.
  = 'SPACE'   defines a space as separator.
  = 'POINT'   defines a point as separator.
  = 'COMMA'   defines a comma as separator.
CPOS          is a  character string  that defines  the sign
              preceding positive numbers.
  = 'NONE'    means no preceding sign.
  = 'SPACE'   defines a space as a preceding sign.
  = 'PLUS'    defines a plus as a preceding sign.
CFIX          is a  character  string  specifying  character
              spacing.
  = 'NOEQUAL' is used for proportional spacing.
  = 'EQUAL'   is used for non-proportional spacing.
                 Default: ('POINT','NONE','NONE','NOEQUAL').

                         C H A S P C

CHASPC affects intercharacter spacing.

The call is:  CALL CHASPC (XSPC)               level 1, 2, 3

XSPC          is a real number  that contains  a multiplier.
              If XSPC < 0, the  intercharacter spacing  will
              be reduced by XSPC * NH plot coordinates where
              NH is the current character height.  If XSPC >
              0, the spacing will be  enlarged by  XSPC * NH
              plot coordinates.
                                          Default: XSPC = 0.

                         C H A W T H

CHAWTH affects the width of characters.

The call is:  CALL CHAWTH (XWTH)               level 1, 2, 3

XWTH          is a real number between 0 and 2. If XWTH < 1,
              the character width will be reduced. If XWTH >
              1, the character width will be enlarged.
                                          Default: XWTH = 1.

                         C H A A N G

CHAANG defines an inclination angle for characters.

The call is:  CALL CHAANG (ANGLE)              level 1, 2, 3
ANGLE         is the  inclination angle  between  characters
              and the vertical direction in degrees  (-60 <=
              ANGLE <= 60).
                                         Default: ANGLE = 0.

                         F I X S P C

All fonts in  DISLIN except for the default font are propor-
tional. After a call to FIXSPC  the characters  of a propor-
tional  font will  also be plotted with a constant character
width.

The call is:  CALL FIXSPC (XFAC)               level 1, 2, 3

XFAC          is a real number containing a  scaling factor.
              Characters  will be centred  in a box of width
              XFAC * XMAX  where XMAX is the largest charac-
              ter width of the current font.

6.5 Fonts

The  following  routines  define  character sets  of varying
style and plot velocity.  All fonts  except for  the default
font  DISALF  are proportional.  Each font provides 6 alpha-
bets.


The calls are:   CALL DISALF   - default font
                 CALL SIMPLX   - single stroke font
                 CALL COMPLX   - complex font
                 CALL DUPLX    - double stroke font
                 CALL TRIPLX   - triple stroke font
                 CALL GOTHIC   - gothic font
                 CALL SERIF    - complex shaded font
                 CALL HELVE    - shaded font
                 CALL HELVES   - shaded font with small cha-
                                 racters

Note:         If one  of the shaded fonts  SERIF,  HELVE  or
              HELVES is used,  only the outlines of  charac-
              ters  are plotted  to minimize  plotting time.
              With the statement CALL SHDCHA characters will
              be shaded.

                         P S F O N T

PSFONT defines a PostScript font.

The call is:  CALL PSFONT (CFONT)              level 1, 2, 3

CFONT         is a  character  string  containing  the font.
              Standard font names in PostScript are:

       Times-Roman                   Courier
       Times-Bold                    Courier-Bold
       Times-Italic                  Courier-Oblique
       Times-BoldItalic              Courier-BoldOblique
       Helvetica                     AvantGarde-Book
       Helvetica-Bold                AvantGarde-Demi
       Helvetica-Oblique             AvantGarde-BookOblique
       Helvetica-BoldOblique         AvantGarde-DemiOblique
       Helvetica-Narrow              Bookman-Light
       Helvetica-Narrow-Bold         Bookman-LightItalic
       Helvetica-Narrow-Oblique      Bookman-Demi
       Helvetica-Narrow-BoldOblique  Bookman-DemiItalic
       NewCenturySchlbk-Roman        Palatino-Roman
       NewCenturySchlbk-Italic       Palatino-Italic
       NewCenturySchlbk-Bold         Palatino-Bold
       NewCenturySchlbk-BoldItalic   Palatino-BoldItalic
       ZapfChancery-MediumItalic     Symbol
       ZapfDingbats

Notes:     -  The file format  must be set to  'PS',  'EPS',  
              'PDF' or 'SVG'  with the routine  METAFL.  For
              SVG files,  the Times,  Helvetica and  Courier
              fonts can be used. 
           -  Font names cannot be shortened.  Some printers
              provide  additional  non-standard fonts. These
              fonts should be specified exactly in upper and
              lower  characters as they are described in the
              printer  manuals.  PostScript  suppresses  any
              graphics  if there is  a syntax  error  in the
              font name.  Standard font names  are not case-
              sensitive.
           -  A call  to a  DISLIN  font  resets  PostScript
              fonts.

                         W I N F N T

WINFNT defines a TrueType font  for screen output on Windows
displays.

The call is:  CALL WINFNT (CFONT)              level 1, 2, 3

CFONT         is a  character  string  containing  the font.
              The following  fonts can  normally be  used on
              the Windows 95/NT operating system:

              Courier New
              Courier New Bold
              Courier New Italic
              Courier New Bold Italic
              Times New Roman
              Times New Roman Bold
              Times New Roman Italic
              Times New Roman Bold Italic
              Arial
              Arial Bold
              Arial Italic
              Arial Bold Italic

                         X 1 1 F N T

X11FNT  defines an  X11 font  for screen output on  X11 dis-
plays. 

The call is:  CALL X11FNT (CFONT, COPT)        level 1, 2, 3

CFONT         is a  character  string  containing  the first
              part of an X11 font.
COPT          is a character string containing the last part
              of an  X11 font. IF COPT = 'STANDARD', the va-
              lue '-*-*-*-*-iso8859-1'  is used for the last
              part of an X11 font.

Notes:      - CFONT  must  begin  and end with the separator 
              '-'  and must contain the first five fields of
              an X11 font.  DISLIN adds  then the point size
              and a transformation matrix to the font. 
              IF COPT has not the value 'STANDARD',  it must
              begin with  the character '-'  and contain the
              last 6 fields of an X11 font.
            - Here are  some  examples for the  contents  of 
              CFONT:
                     -Adobe-Times-Medium-R-Normal-
                     -Adobe-Times-Bold-R-Normal-
                     -Adobe-Times-Bold-I-Normal-
                     -Adobe-Helvetica-Bold-R-Normal-
                     -Adobe-Courier-Medium-R-Normal-

                         B M P F N T

BMPFNT defines a  DISLIN  bitmap font  that can be used  for 
screen output and raster formats such as PNG and TIFF. 
The call is:  CALL BMPFNT (CFONT)              level 1, 2, 3
         or:  void bmpfnt (char *cfont);
CFONT         is a character string that can have the values
              'COMPLX', 'SIMPLX' and 'HELVE'.
Note:         DISLIN bitmap fonts are  added to increase the 
              quality  of  directly  created  raster formats 
              such as  PNG and TIFF where  X11 and  TrueType
              fonts cannot be used.

                         H W F O N T

The routine HWFONT sets a standard hardware font if hardware
fonts are supported by the current file format. For example,
if the file format is PostScript, the font 'Times Roman'  is
used, if the file format is 'CONS' or 'XWIN', 'Times New Ro-
man' is used for Windows  and  '-*-Times-Bold-R-Normal-'  is
used for X11. If no hardware fonts are supported,  COMPLX is
used.

The call is:  CALL HWFONT                      level 1, 2, 3

                         C H A C O D

The routine CHACOD defines the coding of characters.  

The call is:  CALL CHACOD (COPT)               level 1, 2, 3

COPT          is a character string that can have the values
              'STANDARD', 'ISO1', 'ISO2' and 'ISO3'. 
              If COPT = 'ISO1',  characters  in strings will
              be  interpreted  as ISO-Latin-1 coded,  and if 
              COPT = 'ISO2' or 'ISO3',  characters  will  be
              interpreted as  ISO-Latin-2 or ISO-Latin-3 co-
              ded. The DISLIN vector font 'COMPLX' and fonts
              defined by BMPFNT contain ISO-Latin-2 and ISO-
              Latin-3 characters.
                                        Default: 'STANDARD'.

                         B A S A L F

BASALF defines the base alphabet.

The call is:  CALL BASALF (CALPH)              level 1, 2, 3

CALPH         is a character string that can have the values
              'STANDARD', 'ITALIC', 'GREEK', 'SCRIPT', 'RUS-
              SIAN' and 'MATHEMATIC'. These alphabets can be
              used with all fonts.
                                        Default: 'STANDARD'.

                         S M X A L F

SMXALF  defines  shift characters  to shift between the base
and an alternate alphabet.

The call is:  CALL SMXALF (CALPH, C1, C2, N)   level 1, 2, 3

CALPH         is a character string  containing an alphabet.
              In addition to the names in BASALF,  CALPH can
              have the value 'INSTRUCTION'.
C1            is a character  that shifts  to the  alternate
              alphabet.
C2            is a character  that  shifts  back to the base
              alphabet.  C1 and  C2 may be identical.  After
              the  last  plotted  character  of a  character
              string,  DISLIN  automatically  shifts back to
              the base alphabet.
N             is an integer between 1 and 6.  Up to 6 alter-
              nate alphabets can be defined.

                         P S M O D E

The routine  PSMODE  enables  Greek  and  Italic  PostScript
characters in Postscript fonts.  By default,  DISLIN  vector
characters are used for Greek and Italic characters in Post-
Script fonts.

The call is:  CALL PSMODE (COPT)               level 1, 2, 3

COPT          is a character string that can have the values 
              'NONE', 'GREEK', 'ITALIC' and 'BOTH'.
                                            Default: 'NONE'.

                         E U S H F T

EUSHFT  defines a shift  character  to plot special European
characters.

The call is:  CALL EUSHFT (CNAT, CHAR)         level 1, 2, 3

CNAT          is a character string that can have the values
              'GERMAN',   'FRENCH',   'SPANISH',   'DANISH',
              'ACUTE' , 'GRAVE', 'CIRCUM' and 'TURKISH'.
CHAR          is a shift character. For example, with CNAT =
              'GERMAN', the characters A, O, U, a, o, u  and
              s placed directly  after CHAR  will be plotted
              as Ae, Oe, Ue, ae, oe, ue and ss.

Notes:     -  Shift characters can be defined multiple where
              the characters must be different.
           -  The Turkish  characters are  only supported by
              COMPLX and  by the bitmap  fonts  defined with
              BITMAP. The other European characters are also
              supported by PostScript.
           -  If the shift  characters should be  plotted in
              a text string, they must be doubled.

6.6 Indices and Exponents

Indices and exponents can be  plotted  by using control cha-
racters  in characters strings,  or by using the  TeX syntax
described in paragraph 6.7.  There are  3 predefined control
characters in DISLIN which can be altered with the  routines
NEWMIX and SETMIX. The predefined character

     [     is used  for exponents.  The character  height is
           reduced by the scaling factor FEXP and the pen is
           moved up  FBAS * NH  plot coordinates where NH is
           the current character height.

     ]     is used for indices. The pen is moved down FBAS *
           NH  plot coordinates and the  character height is
           reduced by the scaling factor FEXP.

     $     is used to move  the pen  back to the  base-line.
           This will  automatically be done at  the end of a
           character string.

FBAS and FEXP have the default values  0.6 and 0.8,  respec-
tively, these values can be changed with the routines SETBAS
and SETEXP.

                        M I X A L F

This routine instructs DISLIN  to search for control charac-
ters in character strings.

The call is:  CALL MIXALF                      level 1, 2, 3

                         S E T B A S

SETBAS  defines the position  of indices and exponents. This
routine also affects logarithmic axis labels.

The call is:  CALL SETBAS (FBAS)               level 1, 2, 3

FBAS          is a real number used as a scaling factor. The
              pen will be moved up or down by FBAS * NH plot
              coordinates to plot exponents or indices.   NH
              is the current character height.
                                       Default:  FBAS = 0.6.

                         S E T E X P

SETEXP sets the character height of indices and exponents.

The call is:  CALL SETEXP (FEXP)               level 1, 2, 3

FEXP          is a real number used as a scaling factor. The
              character  height of indices  and exponents is
              set to  FEXP * NH where NH is the current cha-
              racter height.
                                        Default:  FEXP = 0.8

                         N E W M I X

NEWMIX  defines an alternate set  of control characters  for
plotting indices and exponents.  The default characters '[',
']' and '$' are replaced by '^', '_' and '%'.

The call is:  CALL NEWMIX                      level 1, 2, 3

                         S E T M I X

SETMIX  defines global control characters for plotting indi-
ces/exponents and TeX commands.

The call is:  CALL SETMIX (CHAR, CMIX)         level 1, 2, 3

CHAR          is a new control character.
CMIX          is a  character string  that defines the func-
              tion of the  control character.  CMIX can have
              the  values  'EXP',  'IND',  'RES',  'LEG' and 
              'TEX'  for exponents,  indices,  resetting the
              base-line, for multiple text lines in legends, 
              and for TeX commands, respectively.

Note:         The routines NEWMIX and SETMIX only modify the
              control characters. A call to MIXALF is always
              necessary to plot indices and exponents.

6.7 Instruction Alphabet

The instruction alphabet contains commands  that control pen
movements and character sizes during the plotting of charac-
ter strings.  It is provided for the representation  of com-
plicated formulas.  An alternate method for plotting of com-
plicated formulas is  described  in paragraph 6.7,  "TeX In-
structions for Mathematical Formulas".

The  instruction alphabet  can be  used  in the same  way as 
other alphabets in DISLIN. Shift characters  must be defined
with the routine  SMXALF  to switch between the base and the
instruction  alphabet.   The  commands  of  the  instruction  
alphabet  consist  of a single  character  and  an  optional 
parameter.  If the parameter is omitted, DISLIN will use de-
fault values.  A parameter  can be a real number, an integer 
or the  character  'X'  which  resets the  parameter back to 
the entry value at the beginning of the character string.
Commands of  the instruction alphabet  can only  change plot
parameters temporarily within a character string. At the end
of a  character string,  all parameters  are reset  to their
entry values.

The following table summarizes all instruction commands. The
character  r means  a real parameter and  i an integer.  The
base-line  of character  strings  is placed  directly  below
them.  Commands can be given in uppercase or  lowercase let-
ters.  Real  parameters  can  be  specified  without decimal
points while integer parameters cannot have  decimal points. 
Several commands can follow one another. Blanks between com-
mands will be ignored.

                    Instruction-Alphabet
                           
------------------------------------------------------------
| Cmd. Par.  Default            Description                |
------------------------------------------------------------
|  A   real     1.    moves the pen horizontally by r * NH |
|                     plot  coordinates  where  NH is  the |
|                     current character height.  If r < 0, |
|                     the pen  will be moved backwards.    |
|                                                          |
|  C   integer  1     moves the pen horizontally by i cha- |
|                     racter  spaces.  If i < 0,  the  pen |
|                     will be moved backwards.             |
|                                                          |
|  D   real     1.    moves the pen  down from  the  base- |
|                     line by r * NH plot coordinates.  If |
|                     r > 0,  NH  is the  entry  character |
|                     height.  If r < 0, NH is the current |
|                     character height.                    |
|                                                          |
|  E                  moves the pen up by 0.75 * character |
|                     height  and  reduces  the  character |
|                     height  by  the  scaling  factor 0.6 |
|                     (for exponents).                     |
|                                                          |
|  F   integer   1    moves the pen horizontally by i spa- |
|                     ces.  If i is  negative,  the pen is |
|                     moved backwards.                     |
|                                                          |
|  G   integer   1    moves  the pen  horizontally  to the |
|                     tab position with the index i, where |
|                      1 <= i <= 20.                       |
|                                                          |
|  H   real      0.6  sets the character height to r * NH. |
|                     If r > 0, NH is the entry  character |
|                     height. If r < 0,  NH is the current |
|                     character height.                    |
|                                                          |
|  I                  moves the pen down by 0.35 * charac- |
|                     ter  height  and multiplies the cha- |
|                     racter height by 0.6 (for indices).  |
|                                                          |
|  J   integer   1    underscores twice from the tab posi- |
|                     tion i to the current pen position.  |
|                                                          |
|  K   real      0.8  is used to plot characters with con- |
|                     stant  widths.  Characters  will  be |
|                     centred  in a  box  with  the  width |
|                     r * W where W is the largest charac- |
|                     ter length in the current font.  The |
|                     global routine is FIXSPC.            |
|                                                          |
|  L   integer   1    underscores from the  tab position i |
|                     to the current pen position.         |
|                                                          |
|  M   integer   1    defines the base alphabet.           |
|                     (1 = STAND.,  2 = GREEK,  3 = MATH., |
|                     4 = ITAL., 5 = SCRIPT, 6 = RUSSIAN). |
------------------------------------------------------------


------------------------------------------------------------
| Cmd. Par.  Default            Description                |
------------------------------------------------------------
|  N   integer   1    sets a  colour  i,  where  0 <= i <= |
|                     255. The global routine is SETCLR.   |
|                                                          |
|  O   real      0.   moves the  base-line  vertically  by |
|                     r * character height.  If  r < 0 the |
|                     base-line is moved down.             |
|                                                          |
|  P   integer   1    defines a  horizontal  tab  position |
|                     with the index i  at the current pen |
|                     position, where 1 <= i <= 20.        |
|                     All tab positions are initialized to |
|                     the beginning of the string.         |
|                                                          |
|  R                  resets the  character height and the |
|                     base-line to their entry values.     |
|                                                          |
|  S   integer   0    plots a  symbol  with  the number i, |
|                     where 0 <= i <= 21.                  |
|                                                          |
|  T   integer   0    moves the pen  horizontally from the |
|                     beginning  of the  string  by i plot |
|                     coordinates.                         |
|                                                          |
|  U   real      1.   moves the pen up  from the base-line |
|                     by  r * NH  plot coordinates. If r > |
|                     0, NH is the entry character height. |
|                     If r < 0,  NH is the current charac- |
|                     ter height.                          |
|                                                          |
|  V   integer   1    plots a horizontal line from the tab |
|                     position i to  the current pen posi- |
|                     tion.  The line is moved up from the |
|                     base-line  by 0.5 * character height |
|                     plot coordinates.                    |
|                                                          |
|  W   real      1.   affects the width of characters. The |
|                     global routine is CHAWTH.            |
|                                                          |
|  Y   real      0.   affects  the  character spacing. The |
|                     global routine is CHASPC.            |
|                                                          |
|  Z   real      0.   defines  an  inclination  angle  for | 
|                     characters,  where  -60 <= r <= 60.  |
|                     The global routine is CHAANG.        |
------------------------------------------------------------


6.8 TeX Instructions for Mathematical Formulas

6.8.1 Introduction

This paragraph presents  an alternate method  to the  DISLIN 
instruction alphabet for plotting mathematical formulas. The 
text formatting  language  TeX  has a  very easy  method for 
describing  mathematical  formulas.  Since  this  method  is 
well-known by many scientists,  an emulation  mode  for  TeX
instructions is added to DISLIN with version 7.4.

TeX instructions can be enabled in DISLIN with the statement 
CALL TEXMOD ('ON').  If TeX mode is enabled, mixed alphabets
defined with SMXALF  and the control characters  for indices
and exponents described in paragraph 6.5 will be ignored.

Mathematical formulas in TeX mode are produced in  DISLIN by
some special descriptive text.  This means that  DISLIN must
be informed that the following text is to be  interpreted as
a mathematical formula.  The character $ in a  text switches
from text to math mode,  and from math  to text mode. There-
fore,  mathematical formulas  must be enclosed  in a pair of
dollar signs.

Numbers that  appear  within  formulas are called constants,
whereas simple  variables are represented by single letters.
The universal practice in mathematical typesetting is to put
constants in Roman typeface and variables in italics. DISLIN
uses this  rule by  default  in math mode.  The rule  can be 
modified with the routine TEXOPT. Blanks are totally ignored
in math mode and spaces are included automatically by DISLIN
between constants, variables and operators.

The characters  $, {, } and \ have a special meaning  in TeX
mode  and therefore  cannot act as printable characters.  To
include them in normal text,  the commands \$, \{, \} and \\
must be used. Additional, the characters _ and ^ have a spe-
cial  meaning  in math mode  and can be handled  in the same 
way.

6.8.2 Enabling TeX Mode and TeX Options

                         T E X M  O D

The routine TEXMOD can be used to enable TeX mode in DISLIN. 
In TeX mode, all character strings passed to DISLIN routines
can contain  TeX instructions for plotting mathematical for-
mulas.
 
The call is:  CALL TEXMOD (CMODE)              level 1, 2, 3 

CMODE         is a character string that can have the values
              'ON' and 'OFF'.  CMODE = 'ON' enables TeX mode
              and CMODE = 'OFF' disables TeX mode.
                                     Default: CMODE = 'OFF'.

                         T E X O P T

The routine TEXOPT sets some TeX options.
 
The call is:  CALL TEXOPT (COPT, CTYPE)        level 1, 2, 3 

COPT          is a character string that can have the values
              'ON' and 'OFF'.
CTYPE         is a  character  string  that  can contain the 
              keywords 'LIMITS' and 'ITALIC'. 'LIMITS' means
              that the limits for sums and integrals will be
              placed  above  and below  the sum and integral 
              signs  instead  of  following  them.  'ITALIC'
              means that for math mode variables will be put
              in italics.
                                  Default: ('ON', 'LIMITS'),
                                           ('ON', 'ITALIC').

                         T E X V A L

The routine TEXVAL sets a factor for the size of indices and
exponents.
 
The call is:  CALL TEXVAL (X, COPT)        level 1, 2, 3 

X             is a  floatingpoint  variable  containing  the
              factor.
COPT          is a  character  string  that  can contain the 
              keyword 'EXP'.
                                      Default: (1.0, 'EXP').

6.8.3 Exponents and Indices
  
Exponents and indices are characters  that are either raised
or lowered  relative  to the base line of the text. The cha-
racter ^ sets  the next character as an exponent,  while the 
character _ sets it as an index.
 
When exponents  and indices occur together,  their  order is 
unimportant. If the exponent or index contains more than one
character,  the group  of  characters  must  be  inclosed in 
braces { }.

Multiple raisings  and lowerings are generated by applying ^
and _ to the exponents and indices.

Note: The commands ^ and _ are only allowed in math mode.

6.8.4 Fractions

The instruction \frac{numerator}{denominator} can be used in 
TeX math mode for plotting fractions. The numerator is plot-
ted  on top  of the  denominator  with a horizontal fraction 
line between them.  Fractions may be nested  to a depth of 8
within one another.

6.8.5 Roots 

Roots can be plotted with the syntax \sqrt[n]{arg} where the
optional part [n] can be omitted.
Roots may be nested inside one another to a depth of 8.

6.8.6 Sums and Integrals

Summation  and integral  signs  can be plotted  with the two
instructions \sum and \int.  Sums and  integrals  can posses
upper and lower limits that can be plotted with the exponent
and index instructions ^ and _.  By default,  the limits are
placed  below  and above  the summation  and integral signs. 
This can be  modfified with the routine  TEXMOD  or with the
instruction  \nolimits  following the summation and integral
signs.

6.8.7 Greek Letters

The following  Greek  letters  are available  in text and in 
math mode.  If they are used in text mode,  the first  blank
character  after the letter will be interpreted as a sepera-
tor and will be ignored.

  \alpha       \theta          o               \chi   
  \beta        \iota           \pi             \psi
  \gamma       \kappa          \rho            \omega
  \delta       \lambda         \sigma
  \epsilon     \mu             \tau
  \zeta        \nu             \upsilon
  \eta         \xi             \phi

  \Gamma       \Lambda         \Sigma          \Psi
  \Delta       \Xi             \Upsilon        \Omega
  \Theta       \Pi             \Phi

6.8.8 Mathematical Symbols

The following mathematical symbols are available in text and
in math mode.

  \pm          \cdot           \cup            \odot
  \mp          \ast            \vee            \oplus
  \times       \star           \wedge          \ominus
  \div         \cap            \setminus

  \le, \leq    \ge, \geq       \neq            \sim 
  \subset      \supset         \cong           \mid
  \subseteq    \supseteq       \equiv          \notin
  \in          \ni             \parallel       \not=

  \leftarrow   \rightarrow     \Leftrightarrow \downarrow
  \Leftarrow   \Rightarrow     \uparrow

  \emptyset    \surd           \forall         \backlslash
  \nabla       \partial        \exists         \infty
  \perp

6.8.9 Alternate Alphabets

The DISLIN alphabets 'STANDARD', 'ITALIC', 'GREEK', 'SCRIPT'
and 'RUSSIAN' can be used in TeX mode with the  instructions
\rm, \it, \gr, \cal and \ru.

6.8.10 Function Names

The  standard  for mathematical  formulas is to set variable 
names  in  italics but the names of functions in Roman.  The 
following  function names will be recognized by  DISLIN  and
plotted in Roman.

  \arccos  \arcsin  \arctan  \arg    \cos    \cosh   \cot
  \coth    \csc     \dec     \dim    \exp    \hom    \ln
  \log     \sec     \sin     \sinh   \tan    \tanh

6.8.11 Accents

Accents are  available in  TeX  mode  in the  same way as in
normal DISLIN mode (see EUSHFT)

6.8.12 Lines above and below Formulas

The commands \overline{arg}  and \underline{arg} can be used
to draw lines over and under a formula. 
The command  \vec{arg}  draws  a  vector over a formula. All 
commands can be used in TeX text and math mode.

6.8.13 Horizontal Spacing

Small amounts of horizontal spacing can be added in TeX mode
with the following commands:

  \,  small space      = 3/18 of the current character size
  \:  medium space     = 4/18 of the current character size
  \;  large space      = 5/18 of the current character size
  \!  negative space   = -3/18 of the current character size

Larger amounts of horizontal  spacing can be added  with the
commands:

  \quad  extra space   = 1/1 of the current character size
  \qquad extra space   = 2/1 of the current character size

6.8.14 Selecting Character Size in TeX Mode

The commands   \tiny,  \scriptsize,  \footnotesize,  \small,  
\normalsize, \large, \Large, \LARGE, \huge and  \Huge can be
used in TeX mode for modifying the character size.  The com-
mand \normalsize is corresponding to  the current  character
size before  the  call  of  the text  plotting routine.  The 
character size  is decreased or increased by a factor of 1.2
for neighbouring character size commands.

6.8.15 Colours in TeX Mode

The commands  \black,  \red,  \green, \blue, \cyan, \yellow, 
\orange,  \magenta,  \white, \fore and \back set the corre-
sponding colours in TeX mode.

6.9 Curve Attributes

                         C H N C R V

CHNCRV defines attributes that will be automatically changed
by  CURVE  after a  certain  number  of calls to the routine
CURVE.

The call is:    CALL CHNCRV (CATT)             level 1, 2, 3

CATT = 'NONE'   means that CURVE changes no attributes.
     = 'COLOR'  means that colours will be changed.
     = 'LINE'   means that line styles will be changed.
     = 'BOTH'   means that  colours  and line styles will be
                changed.
                                     Default: CATT = 'NONE'.

Note:           The sequence of colours is WHITE/BLACK, RED,
                GREEN, YELLOW, BLUE, ORANGE, CYAN and MAGEN-
                TA.  The sequence  of line styles is  SOLID,
                DOT,  DASH,  CHNDSH, CHNDOT, DASHM, DOTL and
                DASHL. The symbol number  is always changed.
                It will be  incremented  by 1  starting with
                the  current symbol defined by MARKER.

The following  three routines  are useful when automatic at-
tribute setting is selected and the routine  CURVE is called
several times to  plot a single curve.

                         I N C C R V 

INCCRV  defines the number  of calls after which  CURVE will
automatically change attributes.

The call is:  CALL INCCRV (NCRV)               level 1, 2, 3

NCRV          is the number of  curves  that will be plotted
              with identical attributes.
                                           Default: NCRV = 1

                         C H N A T T 

CHNATT  is an alternative  routine to  INCCRV.  It is useful
when the number of curves plotted with  identical attributes
varies.  CHNATT defines  new attributes that will be used by
CURVE during the next call.

The call is:  CALL CHNATT                      level 1, 2, 3

Notes:     -  CHNATT changes  only attributes specified with
              CHNCRV.
           -  Attributes cannot be skipped by calling CHNATT
              several times; the order of the attribute cyc-
              les must be changed.

                         R E S A T T 

In general,  curve attributes will be repeated after 8 chan-
ges. With the routine the attributes can be reset earlier.

The call is:  CALL RESATT                      level 1, 2, 3

                         I N C M R K

INCMRK selects line or symbol mode for CURVE.

The call is:  CALL INCMRK (NMRK)               level 1, 2, 3

NMRK  = - n   means that  CURVE  plots only  symbols.  Every
              n-th point will be marked by a symbol.
      =   0   means that CURVE connects points with lines.
      =   n   means that CURVE  plots lines  and marks every
              n-th point with a symbol.
                                           Default: NMRK = 0

                         M A R K E R 

The symbols used  to plot  points  can be  selected with the
routine MARKER. The symbol number  will be  incremented by 1
after a certain  number of calls to CURVE defined by INCCRV.

The call is:  CALL MARKER (NSYM)               level 1, 2, 3

NSYM          is the  symbol  number  between 0 and 21.  The
              symbols are shown in appendix B.
                                           Default: NSYM = 0

                         H S Y M B L 

HSYMBL defines the size of symbols.

The call is:  CALL HSYMBL (NHSYM)              level 1, 2, 3

NHSYM         is the size of symbols in plot coordinates.
                                         Default: NHSYM = 35

                         M Y S Y M B 

MYSYMB sets an user-defined symbol.

The call is:  CALL MYSYMB (XRAY, YRAY, N, ISYM, IFLAG)
                                               level 1, 2, 3

XRAY, YRAY    are the X- and Y-coordinates  of the symbol in
              the range -1 and 1.
N             is the number of coordinates in XRAY and YRAY.
ISYM          is a non negative number  that will be used as
              symbol number.
IFLAG         is an  Integer  that can have the values 0 and 
              1. If IFLAG = 1, the symbol will be filled.

Note:         The number of points in  MYSYMB is limited  to
              100 for Fortran 77. There is no limitation for
              the C and Fortran 90 versions of DISLIN. 

                         T H K C R V 

THKCRV defines the thickness of curves.

The call is:  CALL THKCRV (NTHK)               level 1, 2, 3

NTHK          is the thickness  of curves  in plot coordina-
              tes.
                                      Default:      NTHK = 1

                         G A P C R V
 
GAPCRV defines a data gap  used in the routine CURVE. If the
distance between two neightbouring  X coordinates is greater
than  the  gap  value,  CURVE  will not  connect  these data
points.  

The call is:  CALL GAPCRV (XGAP)               level 1, 2, 3

XGAP          is the gap value.

                         P O L C R V 

POLCRV defines an interpolation method used by CURVE to con-
nect points.

The call is:  CALL POLCRV (CPOL)               level 1, 2, 3

CPOL          is a character string  containing the interpo-
              lation method.
  = 'LINEAR'  defines linear interpolation.
  = 'STEP'    defines step interpolation.
  = 'STAIRS'  defines step interpolation.
  = 'BARS'    defines bar interpolation.
  = 'FBARS'   defines filled bar interpolation.
  = 'STEM'    defines stem interpolation.
  = 'SPLINE'  defines spline interpolation.
  = 'PSPLINE' defines parametric spline interpolation.
                                   Default: CPOL = 'LINEAR'.

Notes:     -  The width of bars can be set with BARWTH.
           -  For  spline  interpolation,  the X-coordinates
              must have different values and be in ascending
              order.  There is no restriction  for a parame-
              tric spline.  The order of spline  polynomials
              and the  number of interpolated  points can be
              modified with SPLMOD.

                         S P L M O D

SPLMOD  defines the  order of polynomials  and the number of
interpolated  points  used  for  the  interpolation  methods
'SPLINE' and 'PSPLINE'.

The call is:  CALL  SPLMOD (NGRAD, NPTS)       level 1, 2, 3

NGRAD         is the  order of the  spline polynomials  (2 -
              10).  It affects the number of points accepted
              by  CURVE  which  is determined by the formula
              (2 * NGRAD + 1) * N <= 1000. For example, with
              a cubic spline, up to 142 points can be passed
              to CURVE.
NPTS          is the number of points  that will be interpo-
              lated in the range XRAY(1) to XRAY(N).
                                          Default: (3, 200).

                         B A R W T H

BARWTH sets the width of bars plotted by CURVE.

The call is:  CALL BARWTH (XWTH)               level 1, 2, 3

XWTH          defines the bar width.  If positive, the abso-
              lute value  of   XWTH * (XRAY(1) - XRAY(2)) is
              used.  If negative, the absolute value of XWTH
              is used  where XWTH is specified in plot coor-
              dinates.
                                        Default: XWTH = 0.75

Note:         If XWTH is positive and polar scaling is enab-
              led,  the absolute value of  XWTH * (YRAY(2) -
              YRAY(1)) defines the width of bars. If XWTH is
              negative for polar scaling, the absolute value
              of XWTH  is used where  XWTH must be specified
              in degrees.
    
                         N O C H E K 

The routine  NOCHEK  can be used  to suppress the listing of
points that lie outside of the axis scaling.

The call is:  CALL NOCHEK                      level 1, 2, 3

6.10 Line Attributes

                      L I N E  S T Y L E S

The routines SOLID, DOT,  DASH,  CHNDSH, CHNDOT, DASHM, DOTL
and  DASHL  define  different  line styles.  They are called
without parameters.  The routine  LINTYP (NTYP)  can also be
used to set line styles where  NTYP  is an integer between 0
and 7 and corresponds to the line styles above.  The routine
MYLINE sets user-defined line styles.

                         M Y L I N E 

MYLINE defines a global line style.

The call is:  CALL MYLINE (NRAY, N)            level 1, 2, 3

NRAY          is an array  of positive  integers characteri-
              zing the line style.  Beginning with pen-down,
              a pen-down and pen-up will be done alternately
              according  to the  specified lengths in  NRAY.
              The lengths must be given in plot coordinates.
N             is the number of elements in NRAY.

Examples:     The values of  NRAY  for the  predefined  line
              styles  are given below:

              SOLID :        NRAY = {1} 
              DOT   :        NRAY = {1, 10} 
              DASH  :        NRAY = {10, 10} 
              CHNDSH:        NRAY = {30, 15, 10, 15} 
              CHNDOT:        NRAY = {1, 15, 15, 15} 
              DASHM :        NRAY = {20, 15} 
              DOTL  :        NRAY = {1, 20} 
              DASHL :        NRAY = {30, 20}

                         L I N W I D 

The routine LINWID sets the line width.

The call is:  CALL LINWID (NWIDTH)             level 1, 2, 3

NWIDTH        is the line width in plot coordinates.
                                         Default: NWIDTH = 1

Note:         To define smaller line widhts than 1 (i.e. for
              PostScript files), the routine PENWID (XWIDTH)
              can be used where  XWIDTH has the same meaning
              as NWIDTH.

                         L N C A P 

The routine LNCAP sets the current line cap parameter.

The call is:  CALL LNCAP (CAP)                 level 1, 2, 3

CAP           is a character string defining the line cap.
  = 'ROUND'   defines rounded caps.
  = 'CUT'     defines square caps.
  = 'LONG'    defines square caps where stroke  ends will be
              continued equal to half the line width.
                                      Default: CAP = 'LONG'.

                         L N J O I N 

The routine LNJOIN sets the current line join parameter.

The call is:  CALL LNJOIN (CJOIN)              level 1, 2, 3

CJOIN         is a character  string containing the the line
              join.
  = 'SHARP'   defines sharp corners between path segments.
  = 'TRUNC'   defines  truncated  corners  between path seg-
              ments.
                                   Default: CJOIN = 'TRUNC'.

                         L N M L T 

The routine  LNMLT  sets  the current miter limit parameter.
This  routine  can be  useful  if the  line join  is set  to
'SHARP'.

The call is:  CALL LNMLT (XFC)                 level 1, 2, 3

XFC           is a  floatingpoint  number  where  XFC * line
              width will  be used  as the  miter limit.  The
              miter length is the distance between the inner
              and outside edge of a path corner.
                                           Default: XFC = 2.
