@Section
   @Title { Summary }
   @Tag { grsummary }
@Begin
@PP
The options to the @Code "@Graph" symbol, their default values, and
graphs. @RawIndex { graphs (statistical) }
graphs.summary @SubIndex { summary of all options }
their possible values are:
@ID -2.5px @Break -1p @Font @Tab
   hmargin { 0.15c }
   @Fmta { @Col @Code { "    "A } ! @Col @Code "{" ! @Col @Code B !
	   @Col @Code "}" ! @Col ! @Col ! @Col C }
   @Fmtb { @Col @Code A ! @Col ! @Col ! @Col ! @Col ! @Col ! @Col }
{
@Rowb
    A { "@Graph" }
@Rowa
    A { style }
    B { frame }
    C { {@Code frame}, {@Code grid}, {@Code axes}, or {@Code none} }
@Rowa
    A { font }
    B {  }
    C { Any value suitable for {@Code "@Font"} }
@Rowa
    A { xorigin }
    B { none }
    C { {@Code none} or any @I number }
@Rowa
    A { yorigin }
    B { none }
    C { {@Code none} or any @I number }
@Rowa
    A { xlog }
    B { none }
    C { {@Code none} or any @I number greater than 1 }
@Rowa
    A { ylog }
    B { none }
    C { {@Code none} or any @I number greater than 1 }
@Rowa
    A { width }
    B { 6.0c }
    C { any @I distance }
@Rowa
    A { height }
    B { 4.0c }
    C { any @I distance }
@Rowa
    A { xextra }
    B { auto }
    C { any @I distance ({@Code auto} means @Code "0.5c" for {@Code frame} else {@Code "0c"}) }
@Rowa
    A { yextra }
    B { auto }
    C { any @I distance ({@Code auto} means @Code "0.5c" for {@Code frame} else {@Code "0c"}) }
@Rowa
    A { xdecreasing }
    B { no }
    C { @Code yes or @Code no }
@Rowa
    A { ydecreasing }
    B { no }
    C { @Code yes or @Code no }
@Rowa
    A { leftcaption }
    B { }
    C { any Lout object }
@Rowa
    A { rightcaption }
    B { }
    C { any Lout object }
@Rowa
    A { abovecaption }
    B { }
    C { any Lout object }
@Rowa
    A { belowcaption }
    B { }
    C { any Lout object }
@Rowa
    A { leftgap }
    B { 1.5c }
    C { any @I distance }
@Rowa
    A { rightgap }
    B { 0.5c }
    C { any @I distance }
@Rowa
    A { abovegap }
    B { 0.5c }
    C { any @I distance }
@Rowa
    A { belowgap }
    B { 0.5c }
    C { any @I distance }
@Rowa
    A { hidecaptions }
    B { yes }
    C { @Code yes or @Code no }
@Rowa
    A { xmin }
    B { none }
    C { @Code none or any {@I number} }
@Rowa
    A { xmax }
    B { none }
    C { @Code none or any {@I number} }
@Rowa
    A { ymin }
    B { none }
    C { @Code none or any {@I number} }
@Rowa
    A { ymax }
    B { none }
    C { @Code none or any {@I number} }
@Rowa
    A { xticksep }
    B { none }
    C { {@Code none} or any @I number greater than 0 }
@Rowa
    A { yticksep }
    B { none }
    C { {@Code none} or any @I number greater than 0 }
@Rowa
    A { rticksep }
    B { none }
    C { {@Code none} or any @I number greater than 0 }
@Rowa
    A { xticks }
    B { auto  }
    C { @I sequence (of numbers and strings), or @Code auto (automatic) }
@Rowa
    A { yticks }
    B { auto }
    C { @I sequence (of numbers and strings), or @Code auto (automatic) }
@Rowa
    A { rticks }
    B { }
    C { @I sequence (of numbers and strings), or @Code auto (automatic) }
@Rowa
    A { xticklength }
    B { 0.5f }
    C { any @I distance }
@Rowa
    A { yticklength }
    B { 0.5f }
    C { any @I distance }
@Rowa
    A { rticklength }
    B { 0.5f }
    C { any @I distance }
@Rowa
    A { objects }
    B { }
    C { sequence of {@Code "@CTR"}, {@Code "@NW"}, {@Code "@SW"}, {@Code "@SE"},
{@Code "@NE"}, {@Code "@N"}, {@Code "@W"}, {@Code "@S"}, {@Code "@E"} symbols }
@Rowa
    A { save }
    B { no }
    C { {@Code no} or {@Code yes} }
@Rowa
    A { points }
    B { none }
    C { {@Code none}, {@Code plus}, {@Code cross}, {@Code square},
{@Code filledsquare}, {@Code diamond}, {@Code filleddiamond},
{@Code circle}, {@Code filledcircle}, {@Code triangle}, {@Code filledtriangle} }
@Rowa
    A { symbolsize }
    B { 0.15f }
    C { any @I distance }
@Rowa
    A { symbollinewidth }
    B { 0.5p }
    C { any @I distance }
@Rowa
    A { pairs }
    B { none }
    C { {@Code none}, {@Code solid}, {@Code dashed}, {@Code dotted},
{@Code dotdashed}, {@Code dotdotdashed}, {@Code dotdotdotdashed}, 
{@Code yhisto}, {@Code xhisto}, {@Code filledyhisto}, {@Code filledxhisto},
{@Code surfaceyhisto}, {@Code surfacexhisto} }
@Rowa
    A { dashlength }
    B { 0.2f }
    C { any @I distance }
@Rowa
    A { linewidth }
    B { 0.5p }
    C { any @I distance }
@Rowa
    A { "colour/color" }
    B { none }
    C { {@Code none} or any colour from Section {@NumberOf colour}}
@Rowa
    A { paint }
    B { no }
    C { {@Code none}, {@Code no}, or {@Code yes} }
@Rowa
    A { texture }
    B { solid }
    C { any texture from Section {@NumberOf textures} }
@Rowa
    A { dataformat }
    B { xandy }
    C { {@Code xandy}, {@Code yonly}, {@Code xonly}, {@Code swapxandy} }
}
@I Number means an ordinary decimal number; @I distance means a number
with a unit of measurement (Section {@NumberOf objects}), such as
@Code { 5c } or {@Code 0.5f}.  In general, numbers denote x or y
values while distances denote lengths on the printed result.
@PP
The minimum plottable x value is the minimum of all the x data,
{@Code xticks}, {@Code xorigin}, {@Code xmin}, and {@Code xmax} whenever
these are not {@Code none}.  If @Code xticks is {@Code none}, this
minimum may be reduced further to a `round' number.  The maximum plottable
x value is the maximum of the same values, and it may be increased further
if {@Code xticks} is {@Code none}.  Similar remarks apply to y values.
@PP
The value of the @Code "objects" option is a sequence of zero or more of
the following:
@ID @Tab
    vmargin { 0.5vx }
    @Fmta { @Col A ! @Col { @Code "at {" @I expression @I expression
@Code "}" } ! @Col @I object }
{
@Rowa A { @Code "@CTR" }
@Rowa A { @Code "@NW"  }
@Rowa A { @Code "@SW"  }
@Rowa A { @Code "@SE"  }
@Rowa A { @Code "@NE"  }
@Rowa A { @Code "@N"   }
@Rowa A { @Code "@W"   }
@Rowa A { @Code "@S"   }
@Rowa A { @Code "@E"   }
}
where @I object is an arbitrary Lout object.  Each of these nine symbols
also has a @Code "margin" option whose value may be any non-negative
distance, with default value {@Code "0.3f"}.
@PP
The options to the @Code "@Data" symbol, their default values, and
their possible values are:
@ID 0.85vx @Break @Tab
   hmargin { 0.15c }
   @Fmta { @Col @Code { "    "A } ! @Col @Code "{" ! @Col @I inherited !
	   @Col @Code "}" ! @Col ! @Col ! @Col C }
   @Fmtb { @Col A ! @Col ! @Col ! @Col ! @Col ! @Col ! @Col }
{
@Rowb
    A { @Code "@Data" }
@Rowa
    A { points }
    C { {@Code none}, {@Code plus}, {@Code cross}, {@Code square},
{@Code filledsquare}, {@Code diamond}, {@Code filleddiamond},
{@Code circle}, {@Code filledcircle},
{@Code triangle}, {@Code filledtriangle} }
@Rowa
    A { symbolsize }
    C { any @I distance }
@Rowa
    A { symbollinewidth }
    C { any @I distance }
@Rowa
    A { pairs }
    C { {@Code none}, {@Code solid}, {@Code dashed}, {@Code dotted},
{@Code dotdashed}, {@Code dotdotdashed}, {@Code dotdotdotdashed}, 
{@Code yhisto}, {@Code xhisto}, {@Code filledyhisto}, {@Code filledxhisto},
{@Code surfaceyhisto}, {@Code surfacexhisto} }
@Rowa
    A { dashlength }
    C { any @I distance }
@Rowa
    A { linewidth }
    C { any @I distance }
@Rowa
    A { "colour/color" }
    C { {@Code none}, or any colour name from Section {@NumberOf colour} }
@Rowa
    A { paint }
    C { {@Code no} or {@Code yes} }
@Rowa
    A { texture }
    C { Any texture from Section {@NumberOf textures} }
@Rowa
    A { dataformat }
    C { {@Code xandy}, {@Code yonly}, {@Code xonly} }
@Rowb
    A { @Code "{" @I sequence @Code "}" }
    C { any @I sequence }
}
@I Inherited means that the default value is taken from the
@Code "@Graph" option with the same name.
Furthermore, every option of {@Code "@Graph"} and {@Code "@Data"},
as well as of {@Code "@GraphPlus"}, {@Code "@GraphNoLine"}, and the
other symbols from Section {@NumberOf key}, appears in the setup file,
and giving a value to an option there makes that value the default
value for every {@Code "@Graph"} in your document.  For example,
if you want every data set in every graph to use {@Code "dashed"}
for {@Code "pairs"}, you can set the @Code "pairs" option in the
setup file to {@Code "dashed"}, and then all your data sets will
have dashed lines unless you override the setup file value by
some other value to the {@Code "pairs"} option of a {@Code "@Graph"}
or @Code "@Data" symbol.
@PP
The right parameter of @Code "@Data" contains a @I sequence of zero
or more {@I expressions}.  The {@Code xticks}, {@Code yticks}, and
{@Code rticks} options also are sequences, which may contain @Code "@"
and labels as well as expressions.  An @I expression is any of the
following (operators are shown in decreasing precedence order, with
the precedence, if relevant, at right):
@ID @Tab
    vmargin { 0.5vx }
    @Fmta { @Col A ! @Col ! @Col B }
{
@Rowa
    A { @I number }
@Rowa
    A { @Code x   (within @Code xloop only) }
@Rowa
    A { @Code y   (within @Code yloop only) }
@Rowa
    A { @Code z   (within @Code zloop only) }
@Rowa
    A { @Code pi }
@Rowa
    A { @Code e }
@Rowa
    A { @Code "{" @I expression @Code "}" }
@Rowa
    A { @Code "sqrt" @I expression }
    B { 40 }
@Rowa
    A { @Code "abs" @I expression }
    B { 40 }
@Rowa
    A { @Code "ceiling" @I expression }
    B { 40 }
@Rowa
    A { @Code "floor" @I expression }
    B { 40 }
@Rowa
    A { @Code "truncate" @I expression }
    B { 40 }
@Rowa
    A { @Code "round" @I expression }
    B { 40 }
@Rowa
    A { @Code "cos" @I expression }
    B { 40 }
@Rowa
    A { @Code "sin" @I expression }
    B { 40 }
@Rowa
    A { @I expression @Code "atan" @I expression }
    B { 39 }
@Rowa
    A { @I expression @Code "exp" @I expression }
    B { 38 }
@Rowa
    A { @I expression @Code "log" @I expression }
    B { 37 }
@Rowa
    A { @I expression @Code "rand" @I expression }
    B { 36 }
@Rowa
    A { @I expression @M { non * } @I expression }
    B { 35 }
@Rowa
    A { @I expression @Code "/" @I expression }
    B { 34 }
@Rowa
    A { @I expression @Code "idiv" @I expression }
    B { 34 }
@Rowa
    A { @I expression @Code "mod" @I expression }
    B { 34 }
@Rowa
    A { @I expression @M { non - } @I expression }
    B { 33 }
@Rowa
    A { @M { non - } @I expression }
    B { 33 }
@Rowa
    A { @I expression @Code "+" @I expression }
    B { 32 }
@Rowa
    A { @Code "+" @I expression }
    B { 32 }
@Rowa
   A { @Code "if cond {" @I boolean @Code "} then {" @I expression
@Code "} else {" @I expression @Code "}" }
}
A @M { non - } immediately followed by a digit or decimal point is
always taken to be a minus sign, never a subtraction.  The left
parameter of @Code "exp" and @Code "log" is the base of the
exponentiation and logarithm respectively; @Code "idiv" is integer
division; and @Code "rand" returns a uniform random integer lying between
its two parameters (inclusive).  Now a @I sequence is zero or more of
the following:
@ID @Tab
    vmargin { 0.5vx }
    @Fmta { @Col A }
{
@Rowa
   A { 2c @Wide "@" (within {@Code xticks}, {@Code yticks}, and {@Code rticks} only) }
@Rowa
   A { 2c @Wide { ({@I label}) } (within {@Code xticks}, {@Code yticks}, and {@Code rticks} only) }
@Rowa
   A { @I expression }
@Rowa
   A { @Code "xloop from {" @I expression @Code "} to {" @I expression
@Code "} by {" @I expression @Code "} do {" @I sequence @Code "}" }
@Rowa
   A { @Code "yloop from {" @I expression @Code "} to {" @I expression
@Code "} by {" @I expression @Code "} do {" @I sequence @Code "}" }
@Rowa
   A { @Code "zloop from {" @I expression @Code "} to {" @I expression
@Code "} by {" @I expression @Code "} do {" @I sequence @Code "}" }
@Rowa
   A { @Code "if cond {" @I boolean @Code "} then {" @I sequence
@Code "} else {" @I sequence @Code "}" }
}
The @Code "by" part of the loop symbols is optional with default
value 1; the @Code "else" part of @Code "if" is optional with
default value equal to the empty sequence.  A @I boolean is any one of
the following things, again shown in decreasing precedence order, with
the precedence at right:
@ID @Tab
    vmargin { 0.5vx }
    @Fmta { @Col A ! @Col ! @Col B }
{
@Rowa
    A { @Code true }
@Rowa
    A { @Code false }
@Rowa
    A { @Code "{" @I boolean @Code "}" }
@Rowa
    A { @I expression @Code = @I expression }
    B { 30 }
@Rowa
    A { @I expression @Code != @I expression }
    B { 30 }
@Rowa
    A { @I expression @Code < @I expression }
    B { 30 }
@Rowa
    A { @I expression @Code <= @I expression }
    B { 30 }
@Rowa
    A { @I expression @Code > @I expression }
    B { 30 }
@Rowa
    A { @I expression @Code >= @I expression }
    B { 30 }
@Rowa
    A { @Code not @I boolean }
    B { 25 }
@Rowa
    A { @I boolean @Code and @I boolean }
    B { 24 }
@Rowa
    A { @I boolean @Code xor @I boolean }
    B { 23 }
@Rowa
    A { @I boolean @Code or @I boolean }
    B { 22 }
@Rowa
   A { @Code "if cond {" @I boolean @Code "} then {" @I boolean
@Code "} else {" @I boolean @Code "}" }
}
@End @Section
