aboutsummaryrefslogtreecommitdiffstats
path: root/doc/user
diff options
context:
space:
mode:
Diffstat (limited to 'doc/user')
-rw-r--r--doc/user/README23
-rw-r--r--doc/user/all11
-rw-r--r--doc/user/bas_lang17
-rw-r--r--doc/user/bas_par11
-rw-r--r--doc/user/bgr_boxs15
-rw-r--r--doc/user/bgr_prec6
-rw-r--r--doc/user/dia_defi24
-rw-r--r--doc/user/dia_summ16
-rw-r--r--doc/user/dia_tree16
-rw-r--r--doc/user/equ_math22
-rw-r--r--doc/user/fmt1.awk12
-rw-r--r--doc/user/fmt2.awk16
-rw-r--r--doc/user/fmt_head11
-rw-r--r--doc/user/fmt_marg2
-rw-r--r--doc/user/fmt_setu1
-rw-r--r--doc/user/gra_data30
-rw-r--r--doc/user/gra_func24
-rw-r--r--doc/user/gra_keys10
-rw-r--r--doc/user/gra_plac16
-rw-r--r--doc/user/gra_summ15
-rw-r--r--doc/user/gra_tick8
-rw-r--r--doc/user/mat40
-rw-r--r--doc/user/mat_comm124
-rw-r--r--doc/user/mat_defs55
-rw-r--r--doc/user/mat_disp126
-rw-r--r--doc/user/mat_intr63
-rw-r--r--doc/user/mat_matr295
-rw-r--r--doc/user/mat_summ1314
-rw-r--r--doc/user/mybook540
-rw-r--r--doc/user/mydefs18
-rw-r--r--doc/user/preface5
-rw-r--r--doc/user/prg50
-rw-r--r--doc/user/prg_embe31
-rw-r--r--doc/user/prg_lone23
-rw-r--r--doc/user/prg_opti17
-rw-r--r--doc/user/str_colu2
-rw-r--r--doc/user/str_cont39
-rw-r--r--doc/user/str_cros25
-rw-r--r--doc/user/str_theo26
-rw-r--r--doc/user/tbl6
-rw-r--r--doc/user/typ_apdf19
-rw-r--r--doc/user/typ_book17
-rw-r--r--doc/user/typ_illu1
-rw-r--r--doc/user/typ_over7
-rw-r--r--doc/user/typ_plai8
-rw-r--r--doc/user/vgra13
-rwxr-xr-xdoc/user/vmat1
47 files changed, 2928 insertions, 233 deletions
diff --git a/doc/user/README b/doc/user/README
index 9b8df78..850b67a 100644
--- a/doc/user/README
+++ b/doc/user/README
@@ -4,7 +4,7 @@ This directory contains the Lout source files for the User's Guide
to the Lout Document Formatting System. To produce the Guide,
type the command
- lout -r6 all > user.ps
+ lout -r6 all > user.ps
in this directory. The -r6 flag causes Lout to run over the
document six times. This is needed to completely resolve all
@@ -21,18 +21,17 @@ error message output on the last run for A4 size printing:
lout:
: lout -r beginning run 6:
-lout file "str_indx" (from "str" line 16, from "all" line 39):
- 53,1: 0.3c object too high for 0.0c space; will try elsewhere
-lout file "gra_summ" (from "gra" line 44, from "all" line 47):
- 10,1: 24.1c object too high for 23.6c space; @Scale inserted
-lout file "prg_tabs" (from "prg" line 141, from "all" line 49):
+lout file "gra_tick" (from "gra" line 38, from "all" line 46):
+ 234,1: 23.7c object too high for 23.7c space; @Scale inserted
+lout file "gra_summ" (from "gra" line 44, from "all" line 46):
+ 10,1: 25.7c object too high for 23.6c space; @Scale inserted
+lout file "prg_tabs" (from "prg" line 139, from "all" line 48):
66,23: prg2lout 2,1: program text ended within comment
68,35: prg2lout 2,1: program text ended within comment
-The first warning is about a footnote that did not fit onto the
-first available page. The next is about a large table that had to be
-scaled down slightly to fit on the page. The last two warnings point
-to two places where a C program text ended inside a comment, which in
+The first two warnings are about large tables that had to be scaled
+down slightly to fit on the page. The last two warnings point to
+two places where a C program text ended inside a comment, which in
these cases was deliberate. If you set the document in Letter size
paper, you will get a somewhat different set of warning messages.
@@ -41,7 +40,7 @@ repeated failure to converge, caused by footnotes and floating figures
close to large unbreakable displays.
A copy of the final PostScript output file (A4 paper size) is
-stored at "ftp://ftp.it.usyd.edu.au/jeff/lout/lout-3.36.user.ps.gz".
+stored at "ftp://ftp.it.usyd.edu.au/jeff/lout/lout-3.37.user.ps.gz".
Jeffrey H. Kingston
-27 July 2007
+19 September 2008
diff --git a/doc/user/all b/doc/user/all
index 7c75312..9c49083 100644
--- a/doc/user/all
+++ b/doc/user/all
@@ -1,7 +1,6 @@
@SysInclude { xrgb }
@SysInclude { tab }
@SysInclude { tbl }
-@SysInclude { eq }
@SysInclude { math }
@SysInclude { graph }
@SysInclude { pie }
@@ -10,7 +9,7 @@
@SysInclude { cprint }
@SysInclude { eiffel }
@SysInclude { perl }
-@SysInclude { book }
+@Include { mybook }
# @Include { letterbook } # for testing Letter size formatting
@SysDatabase @Reference { loutrefs }
@@ -23,10 +22,10 @@ Lout
Document Formatting System
}
@Author { Jeffrey H. Kingston }
- @Edition { Version 3.36
-July, 2007 }
+ @Edition { Version 3.37
+September 2008 }
@Publisher {
-Copyright @CopyRight 1991, 2007 Jeffrey H. Kingston,
+Copyright @CopyRight 1991, 2008 Jeffrey H. Kingston,
School of Information Technologies,
The University of Sydney 2006, Australia. ISBN 0 86758 951 5.
}
@@ -41,7 +40,7 @@ The University of Sydney 2006, Australia. ISBN 0 86758 951 5.
@Include { fmt }
@Include { ref }
@Include { tbl }
-@Include { equ }
+@Include { mat }
@Include { bgr }
@Include { dia }
@Include { gra }
diff --git a/doc/user/bas_lang b/doc/user/bas_lang
index 7270b39..7c6ac09 100644
--- a/doc/user/bas_lang
+++ b/doc/user/bas_lang
@@ -33,30 +33,33 @@ At the time of writing, the following languages were available:
B { Portuguese Português pt }
@Rowa
A { English en }
- B { Russian ru }
+ B { Programming }
@Rowa
A { EnglishUK en-GB }
- B { Slovak Slovensky Slovencina }
+ B { Russian ru }
@Rowa
A { Esperanto eo }
- B { Slovenian Slovenia Slovenija sl }
+ B { Slovak Slovensky Slovencina }
@Rowa
A { Finnish Suomi fi }
- B { Spanish Espa{@Char ntilde}ol es }
+ B { Slovenian Slovenia Slovenija sl }
@Rowa
A { French Francais Fran{@Char ccedilla}ais fr }
- B { Swedish Svenska sv }
+ B { Spanish Espa{@Char ntilde}ol es }
@Rowa
A { German Deutsch de }
- B { UpperSorbian hornjoserbsce serbsce }
+ B { Swedish Svenska sv }
@Rowa
A { Hungarian Magyar hu }
+ B { UpperSorbian hornjoserbsce serbsce }
}
File @Code "include/langdefs" in the distribution always has the exact
list of known languages. As shown, most languages have alternative
names, all equally acceptable to the @Code "@Language"
symbol. @Code "EnglishUK" differs from @Code "English" only by applying
-hyphenation rules said to be more appropriate for British English.
+hyphenation rules said to be more appropriate for British English;
+@Code "Programming" is for programming languages and is used by the
+symbols of Chapter {@NumberOf cprint}.
@PP
Since accented characters (Section {@NumberOf characters}) are always
available irrespective of the language, at first sight it might seem
diff --git a/doc/user/bas_par1 b/doc/user/bas_par1
index e5ce503..eaf2839 100644
--- a/doc/user/bas_par1
+++ b/doc/user/bas_par1
@@ -85,6 +85,7 @@ options, consult Section {@NumberOf setup}; here we just explain how
the relevant options work. The options and their default values are
paragap @Index @Code "@ParaGap"
paraindent @Index @Code "@ParaIndent"
+displaygap @Index @Code "@DisplayGap"
@ID @OneRow @Code {
"@ParaGap { 1.30vx }"
"@ParaIndent { 2.00f }"
diff --git a/doc/user/bgr_boxs b/doc/user/bgr_boxs
index 775e305..5e275cf 100644
--- a/doc/user/bgr_boxs
+++ b/doc/user/bgr_boxs
@@ -151,7 +151,20 @@ produce other kinds of boxes:
These also have {@Code "margin"}, {@Code "linewidth"}, {@Code "paint"},
and @Code "texture" options, and @Code "@ShadowBox" has a @Code "shadow"
option which determines the thickness of the shadow (its default value
-is {@Code "0.2f"}).
+is {@Code "0.2f"}). There is no option to change the colour of the
+shadow, but it is quite easy to combine two boxes to get that effect:
+@ID @OneRow @Code @Verbatim {
+lightgrey @Colour @ShadowBox margin { 0c } black @Colour @Box
+{
+ A shadow box
+}
+}
+produces
+@CD lightgrey @Colour @ShadowBox margin { 0c } black @Colour @Box
+{
+ A shadow box
+}
+in which the shadow, and only the shadow, is coloured light grey.
@PP
Boxes are quite at home inside paragraphs, as @Box { a box },
@CurveBox { a curve box }, and @ShadowBox { a shadow box }
diff --git a/doc/user/bgr_prec b/doc/user/bgr_prec
index 7ece8ff..737d9c9 100644
--- a/doc/user/bgr_prec
+++ b/doc/user/bgr_prec
@@ -182,12 +182,12 @@ format the overall document as though the object in question had
zero width or height, but it will still print the entire object.
@PP
For example, you might have an inline equation that causes the
-line spacing to increase to accommodate it -- @E { 2 sup 2 sup N } say --
+line spacing to increase to accommodate it -- @M { 2 sup 2 sup N } say --
but you would rather it didn't. Writing
-@ID @Code "@ZeroHeight @E { 2 sup 2 sup N }"
+@ID @Code "@ZeroHeight @M { 2 sup 2 sup N }"
causes Lout to pretend that the object has zero height, and so
it will not increase the line spacing around this version of
-{@ZeroHeight @E { 2 sup 2 sup N }}, as you can see.
+{@ZeroHeight @M { 2 sup 2 sup N }}, as you can see.
@PP
The @Code "@HShift" and @Code "@VShift" symbols provide a way to move
the printed object with respect to the zero-width one:
diff --git a/doc/user/dia_defi b/doc/user/dia_defi
index 200ce8e..63c1a96 100644
--- a/doc/user/dia_defi
+++ b/doc/user/dia_defi
@@ -16,17 +16,17 @@ symbols that @@Diag offers for helping you create complex shapes.
As explained earlier, a node outline is drawn over its {@I base}, which
is a rectangle containing the following object plus margins. The base
defines a coordinate system with the point (0, 0) at the bottom left
-corner, and @Eq { (xsize, ysize) } at the top right:
+corner, and @M { (xsize, ysize) } at the top right:
@CD @OneRow @Diag {
@Box
nodelabelmargin { 0.3f }
- blabel { @Eq { ysize } }
+ blabel { @M { ysize } }
blabelprox { E }
- clabel { @Eq { 0 } }
+ clabel { @M { 0 } }
clabelprox { E }
- dlabel { @Eq { xsize } }
+ dlabel { @M { xsize } }
dlabelprox { N }
- alabel { @Eq { 0 } }
+ alabel { @M { 0 } }
alabelpos { SW }
alabelprox { N }
paint { lightgrey }
@@ -144,11 +144,11 @@ arc goes anticlockwise; to get a clockwise arc, use
{@Code "["}{@I point}{@Code " clockwise]"}.
@PP
Two points may be separated by
-@Eq { [x sub 1 ``` y sub 1 ``` x sub 2 ``` y sub 2 & ] }, which requests
+@M { [x sub 1 ``` y sub 1 ``` x sub 2 ``` y sub 2 ] }, which requests
that a Bezier curve be drawn between them with control points
bezier.curve @Index { Bezier curve }
-@Eq { (x sub 1 & , y sub 1 & ) } and
-@Eq { (x sub 2 & , y sub 2 & ) }:
+@M { (x sub 1 , y sub 1 ) } and
+@M { (x sub 2 , y sub 2 ) }:
@CD @Diag {
@Node
outline {
@@ -167,10 +167,10 @@ bezier.curve @Index { Bezier curve }
clabelprox { SW }
dlabelprox { NW }
outlinestyle { cdashed cdashed cdashed noline }
- alabel { @Eq { ( x sub 0 , y sub 0 ) } }
- blabel { @Eq { ( x sub 1 , y sub 1 ) } }
- clabel { @Eq { ( x sub 2 , y sub 2 ) } }
- dlabel { @Eq { ( x sub 3 , y sub 3 ) } }
+ alabel { @M { ( x sub 0 , y sub 0 ) } }
+ blabel { @M { ( x sub 1 , y sub 1 ) } }
+ clabel { @M { ( x sub 2 , y sub 2 ) } }
+ dlabel { @M { ( x sub 3 , y sub 3 ) } }
{ 6c @Wide 2c @High }
//
@Link
diff --git a/doc/user/dia_summ b/doc/user/dia_summ
index 529c221..661f1b9 100644
--- a/doc/user/dia_summ
+++ b/doc/user/dia_summ
@@ -1976,28 +1976,28 @@ with the symbols' precedences in parentheses.
@Rowh
@Rowa
A { @I number @Code "=" @I number }
- B { @Eq { non = }; also between lengths (79) }
+ B { @M { non = }; also between lengths (79) }
@Rowa
A { @I number @Code "!=" @I number }
- B { @Eq { non != }; also between lengths (79) }
+ B { @M { non != }; also between lengths (79) }
@Rowa
A { @I number @Code "==" @I number }
- B { @Eq { non = } between angles (79) }
+ B { @M { non = } between angles (79) }
@Rowa
A { @I number @Code "!==" @I number }
- B { @Eq { non != } between angles (79) }
+ B { @M { non != } between angles (79) }
@Rowa
A { @I number @Code "<=" @I number }
- B { @Eq { non <= }; also between lengths (79) }
+ B { @M { non <= }; also between lengths (79) }
@Rowa
A { @I number @Code "<" @I number }
- B { @Eq { non < }; also between lengths (79) }
+ B { @M { non < }; also between lengths (79) }
@Rowa
A { @I number @Code ">=" @I number }
- B { @Eq { non >= }; also between lengths (79) }
+ B { @M { non >= }; also between lengths (79) }
@Rowa
A { @I number @Code ">" @I number }
- B { @Eq { non > }; also between lengths (79) }
+ B { @M { non > }; also between lengths (79) }
@Rowa
A { @Code "not" @I boolean }
B { Logical not (78) }
diff --git a/doc/user/dia_tree b/doc/user/dia_tree
index dd8ad1a..52f52f6 100644
--- a/doc/user/dia_tree
+++ b/doc/user/dia_tree
@@ -139,15 +139,15 @@ stubsub.diagrams @Index { @Code "@StubSub" symbol (diagrams) }
@ID @OneRow {
@Code @Verbatim {
@Tree {
-@Circle @Eq { a }
-@StubSub @Eq { T tsub a }
+@Circle @Math { a }
+@StubSub @Math { T tsub a }
}
}
||7ct
@Diag {
@Tree {
-@Circle @Eq { a }
-@StubSub @Eq { T tsub a }
+@Circle @Math { a }
+@StubSub @Math { T tsub a }
}
}
}
@@ -238,19 +238,19 @@ end of the stub path:
@ID @OneRow {
@Code @Verbatim {
@Tree {
-@Circle @Eq { a }
+@Circle @Math { a }
@StubSub from { SW } to { SE }
@Box outlinestyle { noline }
- @Eq { T tsub a }
+ @Math { T tsub a }
}
}
||7ct
@Diag {
@Tree {
-@Circle @Eq { a }
+@Circle @Math { a }
@StubSub from { SW } to { SE }
@Box outlinestyle { noline }
- @Eq { T tsub a }
+ @Math { T tsub a }
}
}
}
diff --git a/doc/user/equ_math b/doc/user/equ_math
index e9ab835..c665bb1 100644
--- a/doc/user/equ_math
+++ b/doc/user/equ_math
@@ -72,7 +72,7 @@ the limits of a sum are laid out differently depending on the context:
@CAND {
@Math { { sum from { i = 0 } to { n } { i sup 2 } } over { x + y } } }
@CAND {
- @Math { sum from { i = 0 } to { n } { i sup 2 } } }
+ @Math { sum from { i = 0 } to { n } } }
@EndAlignedDisplays
Similarly, the @Code { "big" } symbol that is used in @Code { "@Eq" } to
@@ -145,24 +145,24 @@ equation layout.
@PP
Besides, @Code "@Math" provides several new symbols. Symbols @Code
-"atop" and @Code "below" behave similarly to @Code "from" and @Code
-"to" in @Code "@Eq", respectively. In other words, @Code "atop" prints
+"above" and @Code "below" behave similarly to @Code "from" and @Code
+"to" in @Code "@Eq", respectively. In other words, @Code "above" prints
its left parameter on top of its right parameter, while @Code "below"
does the opposite operation:
-@ID { @Code { "@M { { a atop f } + { z below b } }" }
+@ID { @Code { "@M { { a above f } + { z below b } }" }
|8ct
-@M { { a atop f } + { z below b } } }
+@M { { a above f } + { z below b } } }
@ID {
{ @Code {
-"@Math { sum from { { 1 <= i <= p } atop"
-" { 1 <= j <= q } atop"
+"@Math { sum from { { 1 <= i <= p } above"
+" { 1 <= j <= q } above"
" { 1 <= k <= r } }"
" { a sub { ij } b sub { jk } c sub { ki } } }" }
|8ct
-@Math { sum from { { 1 <= i <= p } atop
- { 1 <= j <= q } atop
+@Math { sum from { { 1 <= i <= p } above
+ { 1 <= j <= q } above
{ 1 <= k <= r } }
{ a sub { ij } b sub { jk } c sub { ki } } } } }
@@ -190,12 +190,12 @@ situations such as the one illustrated below:
@ID { @Code {
"@Math {"
-" lim atop @SubScriptStyle { i --> infinity }"
+" lim above @SubScriptStyle { i --> infinity }"
" f(x) = { g(x) } over { h(x) } }"
}
|8ct
@Math {
- lim atop @SubScriptStyle { i --> infinity }
+ lim above @SubScriptStyle { i --> infinity }
f(x) = { g(x) } over { h(x) } }
}
diff --git a/doc/user/fmt1.awk b/doc/user/fmt1.awk
new file mode 100644
index 0000000..06a6b53
--- /dev/null
+++ b/doc/user/fmt1.awk
@@ -0,0 +1,12 @@
+BEGIN {
+ print "@Tbl"
+ print " mv { 0.5vx }"
+ print " aformat { @Cell ml { 0i } indent { right } @Code A | @Cell B | @Cell |"
+ print " @Cell indent { right } @Code C | @Cell D | @Cell |"
+ print " @Cell indent { right } @Code E | @Cell mr { 0i } F }"
+ print "{"
+}
+NR % 3 == 1 { printf "@Rowa\n A { \"%s\" } B { @Math { %s } }\n", $1, $1 }
+NR % 3 == 2 { printf " C { \"%s\" } D { @Math { %s } }\n", $1, $1 }
+NR % 3 == 0 { printf " E { \"%s\" } F { @Math { %s } }\n", $1, $1 }
+END { print "}" }
diff --git a/doc/user/fmt2.awk b/doc/user/fmt2.awk
new file mode 100644
index 0000000..063acec
--- /dev/null
+++ b/doc/user/fmt2.awk
@@ -0,0 +1,16 @@
+BEGIN {
+ print "@Tbl"
+ print " mv { 0.5vx }"
+ print " aformat { @Cell ml { 0i } indent { right } @Code A | @Cell B | @Cell |"
+ print " @Cell indent { right } @Code C | @Cell D | @Cell |"
+ print " @Cell indent { right } @Code E | @Cell mr { 0i } F }"
+ print "{"
+}
+NR % 3 == 1 { printf "@Rowa\n"
+ printf " A { \"%s from { a } to { b }\" }\n", $1
+ printf " B { @Math { %s from { a } to { b } } }\n", $1 }
+NR % 3 == 2 { printf " C { \"%s from { a } to { b }\" }\n", $1
+ printf " D { @Math { %s from { a } to { b } } }\n", $1 }
+NR % 3 == 0 { printf " E { \"%s from { a } to { b }\" }\n", $1
+ printf " F { @Math { %s from { a } to { b } } }\n", $1 }
+END { print "}" }
diff --git a/doc/user/fmt_head b/doc/user/fmt_head
index 3c902a5..da88b24 100644
--- a/doc/user/fmt_head
+++ b/doc/user/fmt_head
@@ -316,4 +316,15 @@ probably best to set @Code "@SectionGap" and some similar options to
{@Code "2b"} (meaning new page) as well. The @Code "@NumberSeparator"
setup file option (Section {@NumberOf largescale}) affects the format
of the structured page numbers.
+@PP
+There is a @Code "@PageNumberFormat" setup file option that
+pagenumberformat. @Index @Code "@PageNumberFormat"
+allows a uniform format to be applied to every page number.
+Its default value,
+@ID @Code "@PageNumberFormat { number }"
+just produces the number. To change the format, change the
+object within the braces. For example,
+@ID @Code "@PageNumberFormat { (number) }"
+will cause parentheses to be printed around every page number, and so
+on.
@End @Section
diff --git a/doc/user/fmt_marg b/doc/user/fmt_marg
index a938670..bc02956 100644
--- a/doc/user/fmt_marg
+++ b/doc/user/fmt_marg
@@ -23,7 +23,7 @@ are with their default values:
@EvenRightMargin { 2.50c }
}
When setting these options you must ensure that
-@ID @Eq { @Code "@OddLeftMargin" + @Code "@OddRightMargin" =
+@ID @Math { @Code "@OddLeftMargin" + @Code "@OddRightMargin" =
@Code "@EvenLeftMargin" + @Code "@EvenRightMargin" }
In other words, the total margin on odd pages must be the same as on
even pages.
diff --git a/doc/user/fmt_setu b/doc/user/fmt_setu
index 991e1f4..acc0da0 100644
--- a/doc/user/fmt_setu
+++ b/doc/user/fmt_setu
@@ -92,6 +92,7 @@ use. @Index @Code "@Use"
# @InitialSpace { lout }
# @InitialLanguage { English }
# @InitialColour { black }
+ # @InitialBackgroundColour { white }
# @OptimizePages { No }
# @HeadingFont { Bold }
# @ParaGap { 1.3vx @OrIfPlain 1f }
diff --git a/doc/user/gra_data b/doc/user/gra_data
index e03c60a..f39c751 100644
--- a/doc/user/gra_data
+++ b/doc/user/gra_data
@@ -43,21 +43,33 @@ point:
C { filledtriangle }
D { @GraphFilledTriangle }
}
-If the @Code "points" option is omitted or empty, nothing is printed. The
-symbols are centred over the data point. There is a @Code "symbolsize"
+Filled and open squares have exactly the same size, filled and open
+diamonds have exactly the same size, and so on. If the @Code "points"
+option is omitted or empty, nothing is printed. The symbols are
+centred over the data point. There is a @Code "symbolsize"
graphs. @RawIndex { graphs (statistical) }
graphs.symbolsize @SubIndex { @Code symbolsize option }
symbolsize.graph @Index { @Code "symbolsize" option (graphs) }
-option which controls the size (radius) of all these symbols:
+option which controls the size (radius) of all these symbols,
+and a @Code "symbollinewidth" option
+@FootNote {
+The @Code "symbollinewidth" option was introduced in Version 3.37,
+as part of a bug fix which also caused the printed size of some
+symbols to change slightly.
+}
+which controls their line width:
@ID @OneRow @Code {
"@Data"
" symbolsize { 0.15f }"
+" symbollinewidth { 0.5p }"
}
-shows the default, 0.15 times the current font size. More
-precisely, the default value is taken from an option
-to the @Code "@Graph" symbol, also called {@Code "symbolsize"}. By
-setting that option you can therefore set the symbol size of all data
-points in the graph at once; its default value is {@Code "0.15f"}.
+shows their default values, 0.15 times the current font size and half
+a point. More precisely, these default values are taken from options
+to the @Code "@Graph" symbol with the same names. By setting those
+options you can therefore control all data points in the graph at
+once. The @Code "symbollinewidth" option does not affect the
+appearance of @Code { filledsquare }, @Code { filleddiamond },
+@Code { filledcircle }, or @Code { filledtriangle }.
@PP
The @Code "@Data" symbol also has a @Code "pairs" option which
graphs. @RawIndex { graphs (statistical) }
@@ -366,6 +378,6 @@ the original input was
Similarly, {@Code "xonly"} inserts y values 1, 2, and so on. The
default value, {@Code "xandy"}, gives the usual interpretation, and
{@Code "swapxandy"} exchanges adjacent pairs of numbers: the data
-is interpreted as @E { (y, x) } pairs rather than @E { (x, y) }
+is interpreted as @M { (y, x) } pairs rather than @M { (x, y) }
pairs. The layout of data on lines has no effect on the interpretation.
@End @Section
diff --git a/doc/user/gra_func b/doc/user/gra_func
index a2471bd..a2d6fdc 100644
--- a/doc/user/gra_func
+++ b/doc/user/gra_func
@@ -11,23 +11,23 @@ available everywhere that x and y coordinates are required: within
the @Code xticks and @Code yticks options, within the points within
the @Code "objects" option, and within the right parameter of the
@Code "@Data" symbol. For example,
-@ID @OneRow @Code {
-"@Data"
-" pairs { solid }"
-"{"
-" 0 0 pi sin { pi/2 }"
-"}"
+@ID @OneRow @Code @Verbatim {
+@Data
+ pairs { solid }
+{
+ 0 0 pi sin { pi/2 }
+}
}
-draws a solid line from @Eq {(0, 0)} to @Eq {(pi, sin(pi "/" 2))}. Section
+draws a solid line from @M {(0, 0)} to @M {(pi, sin(pi "/" 2))}. Section
{@NumberOf grsummary} lists all the functions; they include the four
-arithmetical operators @Eq { non + }, @Eq { non - }, @Eq { non * }, and
-@Eq { "/" }, as well as {@Code "sin"}, {@Code "cos"}, {@Code "sqrt"}, and
+arithmetical operators @M { non + }, @M { non - }, @M { non * }, and
+@M { "/" }, as well as {@Code "sin"}, {@Code "cos"}, {@Code "sqrt"}, and
many others. Braces are used for grouping, never parentheses.
@PP
For plotting functions there are three looping symbols, {@Code "xloop"},
{@Code "yloop"}, and {@Code "zloop"}. For example, the following plots
-the two functions @Eq { y = 2 } and @Eq { y = sqrt { pi x "/" 4 } + 1 }
-for @Eq { x } from 10 to 500:
+the two functions @M { y = 2 } and @M { y = sqrt { pi x "/" 4 } + 1 }
+for @M { x } from 10 to 500:
@ID -1px @Break @OneRow @Code @Verbatim {
-2p @Font @Graph
style { axes }
@@ -109,7 +109,7 @@ xloop from { -5 } to { +5 } by { 0.2 } do
if cond { abs { x } > 0.1 } then { x 1/x } else {}
}
}
-This plots the function @Eq { y = 1 "/" x }, skipping points near
+This plots the function @M { y = 1 "/" x }, skipping points near
zero. Actually the @Code "else" part could be omitted since its default
value is empty.
@PP
diff --git a/doc/user/gra_keys b/doc/user/gra_keys
index 771a258..e3a7e5a 100644
--- a/doc/user/gra_keys
+++ b/doc/user/gra_keys
@@ -162,10 +162,10 @@ from Section {@NumberOf data}, the complete result is
{ 1720 10000 1730 11500 1740 12654 1750 18202 1760 23750 1770 34583 }
}
-The first eight symbols have a @Code "symbolsize" option with the
-usual meaning and the usual default value ({@Code "0.15f"}). The
-last four symbols have @Code "dashlength" and @Code "linewidth" options
-with the usual default values, {@Code "0.2f"} and {@Code "0.5p"}
-respectively, and a @Code "length" option, which determines the length
+The first eight symbols have a @Code "symbolsize" and @Code "symbollinewidth"
+options with the usual meaning and the usual default values ({@Code "0.15f"}
+and {@Code "0.5p"}). The last four symbols have @Code "dashlength" and
+@Code "linewidth" options with the usual default values, {@Code "0.2f"} and
+{@Code "0.5p"}, and a @Code "length" option, which determines the length
of the line drawn by each symbol; its default value is {@Code "1.0f"}.
@End @Section
diff --git a/doc/user/gra_plac b/doc/user/gra_plac
index b184ed5..4e686f1 100644
--- a/doc/user/gra_plac
+++ b/doc/user/gra_plac
@@ -13,14 +13,14 @@ objects.graph @Index { @Code "objects" option (graphs) }
@ID @OneRow @Code @Verbatim {
@Graph
objects {
- @CTR at {2.5 6.0} @Eq { y = x sup 2 }
- @CTR at {4.5 7.0} @Eq { y = x sup 3 }
+ @CTR at {2.5 6.0} @Math { y = x sup 2 }
+ @CTR at {4.5 7.0} @Math { y = x sup 3 }
}
}
-where we have used the @Code "@Eq" symbol from Chapter {@NumberOf equations}
-to place two equations onto the graph at the points {@Code "2.5 6.0"}
-and {@Code "4.5 7.0"} respectively. An example result appears in the next
-section.
+where we have used the @Code "@Math" symbol from
+Chapter {@NumberOf mathematics} to place two equations onto the graph
+at the points {@Code "2.5 6.0"} and {@Code "4.5 7.0"} respectively. An
+example result appears in the next section.
@PP
In addition to {@Code "@CTR"}, there are eight other symbols which may
be used within the @Code "objects" option in the same way: {@Code "@NW"},
@@ -49,6 +49,6 @@ other decorations.
@PP
The @Code "objects" option may contain @Code "@Graph" symbols, but in
that case, owing to a deficiency in the implementation, those symbols
-will need to have their @Code save options (Section {@NumberOf grerrors})
-set to {@Code yes}.
+must have their @Code save options (Section {@NumberOf grerrors}) set
+to {@Code yes}.
@End @Section
diff --git a/doc/user/gra_summ b/doc/user/gra_summ
index 15662c1..60e9a8e 100644
--- a/doc/user/gra_summ
+++ b/doc/user/gra_summ
@@ -196,6 +196,10 @@ automatic }
A { symbolsize }
B { 0.15f }
C { any @I distance }
+@Rowa
+ A { symbollinewidth }
+ B { 0.5p }
+ C { any @I distance }
}
@I Number means an ordinary decimal number; @I distance means a number
with a unit of measurement (Section {@NumberOf objects}), such as
@@ -273,6 +277,9 @@ their possible values are:
@Rowa
A { symbolsize }
C { any @I distance }
+@Rowa
+ A { symbollinewidth }
+ C { any @I distance }
@Rowb
A { @Code "{" @I sequence @Code "}" }
C { any @I sequence }
@@ -341,7 +348,7 @@ the precedence, if relevant, at right):
A { @I expression @Code "rand" @I expression }
B { 36 }
@Rowa
- A { @I expression @Eq { non * } @I expression }
+ A { @I expression @M { non * } @I expression }
B { 35 }
@Rowa
A { @I expression @Code "/" @I expression }
@@ -353,10 +360,10 @@ the precedence, if relevant, at right):
A { @I expression @Code "mod" @I expression }
B { 34 }
@Rowa
- A { @I expression @Eq { non - } @I expression }
+ A { @I expression @M { non - } @I expression }
B { 33 }
@Rowa
- A { @Eq { non - } @I expression }
+ A { @M { non - } @I expression }
B { 33 }
@Rowa
A { @I expression @Code "+" @I expression }
@@ -368,7 +375,7 @@ the precedence, if relevant, at right):
A { @Code "if cond {" @I boolean @Code "} then {" @I expression
@Code "} else {" @I expression @Code "}" }
}
-A @Eq { non - } immediately followed by a digit or decimal point is
+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
diff --git a/doc/user/gra_tick b/doc/user/gra_tick
index 793390c..23e2402 100644
--- a/doc/user/gra_tick
+++ b/doc/user/gra_tick
@@ -152,7 +152,7 @@ y ticks:
@Data
pairs { filledyhisto }
colour { blue }
- linewidth { 1 pt }
+ linewidth { 1p }
{
0 340
1 410
@@ -205,7 +205,7 @@ y ticks:
@Data
pairs { solid }
colour { red }
- linewidth { 1 pt }
+ linewidth { 1p }
{
0.0 24
1.0 24
@@ -250,7 +250,7 @@ come to yet, but anyway its source is:
rticks { 0@ 50@ 100@ 150@ 200@ 250@ 300@ 350@ 400@ 450@ }
yticks {}
{
- @Data pairs { filledyhisto } colour { blue } linewidth { 1 pt }
+ @Data pairs { filledyhisto } colour { blue } linewidth { 1p }
{
0 340 1 410 2 430 3 340 4 290 5 175 6 140
7 125 8 110 9 100 10 85 11 175 12 0
@@ -279,7 +279,7 @@ come to yet, but anyway its source is:
xticklength { 0c }
yticks { -30@ -20@ -10@ 0@ 10@ 20@ 30@ 40@ }
{
- @Data pairs { solid } colour { red } linewidth { 1 pt }
+ @Data pairs { solid } colour { red } linewidth { 1p }
{
0.0 24 1.0 24 2.0 25 3.0 26 4.0 26 5.0 26 6.0
26 7.0 27 8.0 26 9.0 27 10.0 28 11.0 28 12.0 26
diff --git a/doc/user/mat b/doc/user/mat
new file mode 100644
index 0000000..cbead5c
--- /dev/null
+++ b/doc/user/mat
@@ -0,0 +1,40 @@
+@Chapter
+ @Title { Mathematics }
+ @Tag { mathematics }
+@Begin
+@LP
+This chapter explains how to produce mathematics in Lout,
+equations. @RawIndex { equations @I see mathematics }
+mathematics. @Index mathematics
+mathematics.math @SubIndex { @Code "@Math" }
+math. @Index { @Code "@Math" (mathematics) }
+using the @Code "@Math" symbol
+@FootNote {
+@Code "@Math" follows the equation formatting rules of D. E. Knuth's
+knuth @Index { Knuth, D. E. }
+tex. @Index { @TeX }
+@TeX system. Prior to Version 3.37 of Lout, this chapter described
+a symbol called
+eq. @Index @Code "@Eq"
+{@Code "@Eq"} which was similar to {@Code "@Math"} but less faithful
+to those rules. For backward compatibility the @Code "@Eq" symbol
+is still available and still works exactly as described in the old
+documentation, but there is no reason to use it in new documents.
+}
+like this:
+@ID @Code @Verbatim {
+@Math { int from { 0 } to { 1 } dx over sqrt {1 - x sup 2} = pi over 2 }
+}
+This example produces
+@ID @Math { int from { 0 } to { 1 } dx over sqrt {1 - x sup 2} = pi over 2 }
+The @Code "@Math" symbol looks after all the details of spacing for
+you, and it provides several hundred mathematical symbols.
+@BeginSections
+@Include { mat_intr }
+@Include { mat_comm }
+@Include { mat_matr }
+@Include { mat_disp }
+@Include { mat_defs }
+@Include { mat_summ }
+@EndSections
+@End @Chapter
diff --git a/doc/user/mat_comm b/doc/user/mat_comm
new file mode 100644
index 0000000..4fbb3a7
--- /dev/null
+++ b/doc/user/mat_comm
@@ -0,0 +1,124 @@
+@Section
+ @Title { Commonly used symbols }
+ @Tag { mat_comm }
+@Begin
+@PP
+@Code "@Math" prints characters in the fonts appropriate for mathematics:
+@ID {
+@Code "x - 2"
+|7ct
+@Math { x-2 }
+}
+Here @Math { x } is in Italic, @Math { 2 } is in Roman, and @Math { minus }
+is from the Symbol font. The character @Code "-" is a @I symbol which
+stands for @Math {minus}, and @Code "2" is also a symbol, standing for
+@Math { 2 }. @Code "@Math" offers a vast array of symbols:
+@ID {
+@Code "Omega delta integral partial club"
+|7ct
+@Math { Omega delta integral partial club }
+}
+This section introduces the most commonly used ones;
+Section {@NumberOf mat_summ} has the full list.
+@PP
+Symbols whose names are made from letters should be separated from each
+other by at least one space or end of line, as was done above, or else
+@Code "@Math" will become confused:
+@ID {
+@Code "Omegadelta"
+|7ct
+@Math { Omegadelta }
+}
+Symbols whose names are made from digits and punctuation characters can,
+however, be run together with each other and with symbols made from
+letters:
+@ID {
+@Code "Omega-delta<=2"
+|7ct
+@Math { Omega-delta<=2 }
+}
+This rule applies throughout Lout (Section {@NumberOf spaces}).
+@PP
+Some symbols join objects together in mathematical ways:
+@ID {
+@Code "x sub 2"
+|7ct
+@Math { x sub 2 }
+}
+Here the @Code "sub" symbol has taken the object just to its left, and
+mathematics.sub. @SubIndex { @Code "sub" symbol }
+sub. @Index { @Code "sub" symbol (mathematics) }
+the object just to its right, and joined them into one object in the
+form of a subscript. The two objects are called the left and right
+parameters of {@Code "sub"}, and they may be arbitrary Lout objects.
+@PP
+Similar symbols include {@Code "sup"} for
+mathematics.sup. @SubIndex { @Code "sup" symbol }
+sup. @Index { @Code "sup" symbol (mathematics) }
+superscripting, @Code "over" for built-up fractions,
+mathematics.over. @SubIndex { @Code "over" symbol }
+over. @Index { @Code "over" symbol (mathematics) }
+and @Code sqrt for square roots.
+mathematics.sqrt. @SubIndex { @Code "sqrt" symbol }
+sqrt. @Index { @Code "sqrt" symbol (mathematics) }
+The @Code "-" symbol used earlier is an example of a
+@I { binary operator } symbol, and @Code "<=" is
+mathematics.binary.operators. @SubIndex { binary operators }
+binary.operators. @Index { binary operators (mathematics) }
+a @I { relation } symbol. These take the objects
+mathematics.relation. @SubIndex { relation symbols }
+relation.symbols. @Index { relation symbols (mathematics) }
+to their left and right and display them as shown; it's hard
+to see, but there is slightly more space around relations
+than around binary operators. There are also @I { large operator }
+mathematics.large.operators. @SubIndex { large operators }
+large.operators. @Index { large operators (mathematics) }
+symbols which take @Code { from } and @Code { to } options and
+set them as limits:
+@ID {
+@Code @Verbatim { sum from { i=0 } to { n } i }
+|7ct
+@Math { sum from { i=0 } to { n } i }
+}
+As usual in Lout, options are optional, but when given, their values
+must be enclosed in braces as shown. Section {@NumberOf mat_summ}
+has the full list of large operator symbols.
+@PP
+All these symbols may be used together to produce complicated
+mathematics very easily:
+@ID {
+@Code @Verbatim { sqrt { x sup 2 + y sup 2 } over 2 }
+|7ct
+@Math { sqrt { x sup 2 + y sup 2 } over 2 }
+}
+Braces are used in the usual way for grouping. Leaving them out
+creates ambiguities:
+@ID @Code "a sup b over c"
+There are two possible interpretations for this:
+@IndentedList
+@LI {
+@Code "{a sup b} over c"
+|7ct
+@ZeroHeight @Math { {a sup b} over c }
+}
+@LI {
+@Code "a sup {b over c}"
+|7ct
+@Math { a sup {b over c} }
+}
+@EndList
+@Code "@Math" chooses between them in the following way. Every symbol
+that takes a parameter also has a {@I precedence}, which is a number
+defined in Section {@NumberOf mat_summ}.
+mathematics.precedence @SubIndex { precedence of symbols }
+precedence.mathematics @Index { precedence of symbols (mathematics) }
+The symbol with the higher precedence wins the object lying between
+them. White space between two objects is considered to be a symbol
+whose precedence is lower than that of any @Code "@Math" symbol. If
+two symbols of equal precedence compete for an object, the association
+is towards the left.
+@PP
+In the above case the first interpretation is chosen, because
+@Code "sup" has higher precedence than {@Code "over"}. When
+in doubt, use braces to make the grouping clear.
+@End @Section
diff --git a/doc/user/mat_defs b/doc/user/mat_defs
new file mode 100644
index 0000000..15d4e05
--- /dev/null
+++ b/doc/user/mat_defs
@@ -0,0 +1,55 @@
+@Section
+ @Title { Defining new mathematical symbols }
+@Begin
+@PP
+Whenever you type a particular piece of mathematics repeatedly, you
+can save time by using definitions. Definitions are the subject of
+Section {@NumberOf definitions}, so here we will just give a few examples
+mathematics.definitions @SubIndex { definitions, use with }
+definitions. @RawIndex { definitions }
+definitions.use.with.mathematics @SubIndex { use with mathematics }
+of their use in formatting mathematics.
+@PP
+Suppose for example that @OneCol @Math { p sub i ` log sub 2 ` p sub i }
+occurs frequently in your document. Then
+@ID @Code "def epi { p sub i ` log sub 2 ` p sub i }"
+makes the symbol @Code "epi" stand for the object between the braces:
+@ID {
+@Code @Verbatim { sum from { i=1 } to { n } ` epi }
+|7ct
+@Math { sum from { i=1 } to { n } ` epi }
+}
+Parameters are very useful when parts of the symbol vary:
+@ID @OneRow @Code @Verbatim {
+def ep right x
+{
+ p sub x ` log sub 2 ` p sub x
+}
+}
+The parameter @Code x will be replaced by the object just to the right
+of {@Code "ep"}:
+@ID {
+@Code {
+"sum from { i=1 } to { k } ` ep i +"
+"sum from { j=k+1 } to { n } ep j"
+}
+||7ct
+@Math {
+sum from { i=1 } to { k } ` ep i +
+sum from { j=k+1 } to { n } ep j
+}
+}
+The precedence of the symbols you define will be 100 by default.
+To make the symbols of @Code "@Math" available within such definitions,
+each must be preceded by {@Code "import @Math"}. As explained in Section
+{@NumberOf definitions}, the definitions go into a file called
+{@Code "mydefs"}, which might look like this:
+@ID @OneRow @Code @Verbatim {
+import @Math
+def epi { p sub i ` log sub 2 ` p sub i }
+
+import @Math
+def ep right x { p sub x ` log sub 2 ` p sub x }
+}
+Use of @Code "epi" and @Code "ep" outside @Code "@Math" will cause an error.
+@End @Section
diff --git a/doc/user/mat_disp b/doc/user/mat_disp
new file mode 100644
index 0000000..e250850
--- /dev/null
+++ b/doc/user/mat_disp
@@ -0,0 +1,126 @@
+@Section
+ @Title { Displaying equations }
+ @Tag { mathdisplays }
+@Begin
+@PP
+The result of the @Code "@Math" symbol is an object which, according to the
+displayed.mathematics @Index { displayed mathematics }
+golden rule (Section {@NumberOf objects}), may appear anywhere: inside
+a paragraph, inside a table, and so on. In particular, equations are
+often displayed using the @Code "@CentredDisplay" or @Code "@IndentedDisplay"
+symbols from Section {@NumberOf displays}:
+@ID @Code "@IndentedDisplay @Math { ... }"
+Now displayed equations are often numbered, and often aligned with one
+another on their equals signs. For this there are special display
+symbols which are the the subject of this section. These symbols can
+align and number any display at all, but since in practice they seem to
+be used only with equations, we discuss them here rather than in
+Section {@NumberOf displays} where they really belong.
+@PP
+Let's begin by looking at a first example of a numbered display:
+aligned.displays @Index { aligned displays }
+aligned.equations @Index { aligned mathematics }
+numbered.displays @Index { numbered displays }
+numbered.equations @Index { numbered mathematics }
+@BeginAlignedDisplays
+@CentredAlignedNumberedDisplay
+ @Tag { fibeq }
+@Math { F sub n ^= F sub {n-1} + F sub {n-2} }
+After the display we might have some more text for a while, and then
+we might want a second display, aligned on its equals sign with the
+first, and also numbered in sequence with it:
+@CentredAlignedNumberedDisplay
+@Math { F sub n - F sub {n-1} ^= F sub {n-2} }
+@EndAlignedDisplays
+Notice that the two displays are centred as a block as well as
+aligned. Altogether there are four ways in which displays vary:
+@BL
+@LI { A display can be raw or not raw (see below); }
+@LI { It can be a {@Code "@Display"}, {@Code "@LeftDisplay"},
+{@Code "@IndentedDisplay"}, {@Code "@QuotedDisplay"},
+{@Code "@CentredDisplay"}, {@Code "@CenteredDisplay"},
+or {@Code "@RightDisplay"}; }
+@LI { It can be aligned or not aligned; }
+@LI { It can be numbered or not numbered. }
+@EL
+All possible combinations are allowed. The display that has everything
+is called
+@ID @Code "@RawCentredAlignedNumberedDisplay"
+By leaving out some or all of {@Code Raw}, {@Code Aligned}, and
+{@Code Numbered}, and by changing or leaving out {@Code Centred},
+we get all these combinations. The two displays
+numbereddisplay. @Index @Code "@NumberedDisplay"
+aligneddisplay. @Index @Code "@AlignedDisplay"
+given earlier were made like this:
+@ID @OneRow @Code @Verbatim {
+... a first example of a numbered display:
+@BeginAlignedDisplays
+@CentredAlignedNumberedDisplay
+ @Tag { fibeq }
+@Math { F sub n ^= F sub {n-1} + F sub {n-2} }
+After the display we might ... numbered in sequence with it:
+@CentredAlignedNumberedDisplay @Math { F sub n - F sub {n-1} ^= F sub {n-2} }
+@EndAlignedDisplays
+Notice that the two displays are centred ...
+}
+All numbered displays have an optional @Code "@Tag" option which is
+used for cross referencing (see Section {@NumberOf cross}). Alignment
+and numbering work quite independently; they don't have to start or end
+together, and there can be non-aligned and non-numbered displays among
+the others.
+@PP
+When aligned displays are used, it is necessary to indicate where the
+aligned group begins and ends, by placing @Code "@BeginAlignedDisplays"
+beginaligneddisplays @Index @Code "@BeginAlignedDisplays"
+endaligneddisplays @Index @Code "@EndAlignedDisplays"
+just before the first, and @Code "@EndAlignedDisplays" just after the
+last. The alignment points are indicated by preceding them by the
+symbol {@Code "^"}, so you aren't restricted to aligning at equals
+signs. @Code "@BeginAlignedDisplays" and @Code "@EndAlignedDisplays"
+cannot span across several sections or subsections: the equations
+aligned by them must lie within a single large-scale structure symbol.
+@PP
+In our example of aligned and numbered displays, the two displays
+were separated by some ordinary text. Very often, though, aligned
+displays follow directly after each other. This is a problem, because
+if you have one display directly following another there will be too
+much vertical space between them. This problem was mentioned in
+Section {@NumberOf displays}, and the recommended solution was to
+use a list. However, there are no aligned or numbered (in this sense)
+lists.
+@PP
+Fortunately, each display symbol has a `raw' version, which
+means that no space is inserted above or below the display. Instead,
+raw.displays @Index { raw displays }
+you must insert it yourself using paragraph symbols:
+@ID @OneRow @Code @Verbatim {
+preceding text
+@DP
+@RawAlignedDisplay @Math { ... }
+@DP
+@RawAlignedNumberedDisplay @Math { ... }
+@DP
+following text
+}
+# You get the right spacing by placing {@Code "@DP"} symbols before,
+# between, and after each display; and you get to use the specialized
+# displays that you need.
+Raw and non-raw displays may be numbered and aligned together.
+@PP
+Numbered displays are numbered automatically. Depending on where in
+the document they appear, the number might include a chapter number
+or section number, etc. This is controlled by options in the setup
+file; for example, setting @Code "@ChapterNumInDisplays" to @Code Yes
+ensures that numbered displays will be numbered afresh at the beginning
+of each chapter, and that the number will include a chapter number. There
+is also a @Code "@DisplayNumStyle" option which controls the style of
+displays; the default value, {@Code "(num)"}, encloses the number in
+parentheses as usual for equations.
+@PP
+Every display symbol has an abbreviated form consisting of @Code "@"
+followed by its capital letters only. For example,
+@Code "@BeginAlignedDisplays" may be abbreviated to {@Code "@BAD"}, and
+the display that has everything to {@Code "@RCAND"}. Owing to an
+unfortunate clash between the initial letters of `raw' and `right',
+@Code "@RightDisplay" and the other right displays have no abbreviations.
+@End @Section
diff --git a/doc/user/mat_intr b/doc/user/mat_intr
new file mode 100644
index 0000000..24b5347
--- /dev/null
+++ b/doc/user/mat_intr
@@ -0,0 +1,63 @@
+@Section
+ @Title { Getting started }
+@Begin
+@PP
+The Lout definitions for the @Code "@Math" symbol are accessed via a setup
+file called {@Code "math"}, which you must include at the start of your
+document if
+math.file @Index { @Code "math" file }
+you want mathematics, like this:
+@ID @OneRow @Code {
+"@SysInclude { tbl }"
+"@SysInclude { math }"
+"@SysInclude { doc }"
+"@Doc @Text @Begin"
+"..."
+"@End @Text"
+}
+This shows what to do if you want both tables and mathematics, but you
+may leave out the line for tables if you don't want them. Setup files
+for specialized packages, such as {@Code "tbl"} and {@Code "math"},
+are best included before the main setup file, but may be included in
+any order.
+@PP
+With the @Code "math" file included, you may write
+@ID @Code "@Math { ... }"
+at any point in your document, and the symbols of @Code "@Math" will be
+available between the braces. Any symbols available outside continue
+to be available inside, which means that mathematics may be freely mixed
+with other symbols.
+@PP
+The @Code "@Math" symbol may appear anywhere; its job is to produce
+an object containing mathematics, and it neither knows nor cares where
+that object goes. To display mathematics, use a display symbol
+like @Code "@IndentedDisplay" or @Code "@CentredDisplay"
+(Section {@NumberOf displays}). For example,
+@ID @Code "@CentredDisplay @Math { int from { 0 } to { pi } sin ` x = 0 }"
+produces
+@CentredDisplay @Math { int from { 0 } to { pi } sin ` x = 0 }
+There are also symbols for aligned and numbered displays
+(Section {@NumberOf mathdisplays}).
+@PP
+The @Code "@Math" symbol sets the mathematics in @I { display style },
+mathematics.display.style @SubIndex { display style }
+display.style @Index { display style (mathematics) }
+a style suited to displays. To get mathematics within a paragraph,
+it is best to use a variant of @Code "@Math" called {@Code "@M"}. The
+mathematics.maaa @SubIndex { @Code "@M" }
+maaa. @Index { @Code "@M" (mathematics) }
+value of @Code "@M { ... }" will be kept together on one line, and it
+will appear in @I { text style }, a more compact style suited to
+mathematics.text.style @SubIndex { text style }
+text.style @Index { text style (mathematics) }
+mathematics within paragraphs.
+@PP
+Throughout this chapter we show the Lout input at the left, and its
+result at the right:
+@ID {
+@Code "@Math { {x sup 2 + y sup 2} over 2 }"
+|7ct
+@Math { {x sup 2 + y sup 2} over 2 }
+}
+Subsequent examples will omit the enclosing {@Code "@Math { ... }"}.
+@End @Section
diff --git a/doc/user/mat_matr b/doc/user/mat_matr
new file mode 100644
index 0000000..45c9b76
--- /dev/null
+++ b/doc/user/mat_matr
@@ -0,0 +1,295 @@
+@Section
+ @Title { Matrices }
+ @Tag { matrices }
+@Begin
+@PP
+The @Code matrix symbol {@PageMark matrix} builds an array of objects:
+mathematics.matrix @SubIndex { @Code "matrix" symbol }
+matrix.mathematics @Index { @Code "matrix" symbol (mathematics) }
+@ID {
+@Code @Verbatim {
+matrix
+ atleft { blpar }
+ atright { brpar }
+{
+ row col x sup 2 col y sup 2 col z sup 2
+ row col x col y col z
+ row col 1 col 1 col 1
+}
+}
+||9ct
+@Math {
+matrix
+ atleft { blpar }
+ atright { brpar }
+{
+ row col x sup 2 col y sup 2 col z sup 2
+ row col x col y col z
+ row col 1 col 1 col 1
+}
+}
+}
+The @Code atleft and @Code atright options place vertically scaled
+versions of their values at each side; if either is omitted the value
+is taken to be an empty object of zero width. Although @Code blpar
+and @Code brpar are used here, since the options are vertically
+scaled it would also be reasonable to use just
+@ID @OneRow @Code @Verbatim {
+matrix
+ atleft { ( }
+ atright { ) }
+}
+The right parameter of @Code matrix is the array itself. It must be
+enclosed in braces. It is a sequence of rows introduced by
+@Code row symbols; each row is a sequence of objects introduced
+by @Code col symbols. The @Code row and @Code col symbols have
+low precedence (Section {@NumberOf mat_summ}), but not as low as
+white space between objects, so it is safest to enclose the entries
+in braces, except in simple cases.
+@PP
+Entries built with the @Code col symbol have their objects centred in
+the column. Also available are @Code lcol for left-justified entries,
+@Code ccol meaning the same as {@Code col}, @Code rcol for
+right-justified entries, and @Code mcol for alignment along column
+marks. Each column may contain entries of different kinds, except
+that @Code mcol does not work well with any other sort.
+@PP
+When several matrices appear side by side, slight differences in height
+can cause an unsightly appearance:
+@ID @Math {
+matrix
+ atleft { ( }
+ atright { ) }
+{
+ row col a sub 11 col a sub 12
+ row col a sub 21 col a sub 22
+}
+matrix
+ atleft { ( }
+ atright { ) }
+{
+ row col b sub 11 col b sub 12
+ row col b sub 21 col b sub 22
+}
+=
+matrix
+ atleft { ( }
+ atright { ) }
+{
+ row col c sub 11 col c sub 12
+ row col c sub 21 col c sub 22
+}
+}
+To assist in resolving this problem, the @Code "matrix" symbol has
+a @Code "strut" option, which causes a strut to be inserted into
+every row, guaranteeing that every row has height at least equal
+to the height of the strut. By using
+@ID @Code {
+"matrix"
+" strut { Yes }"
+"..."
+}
+in each of the three matrices above, the result is improved to
+@ID @Math {
+matrix
+ atleft { ( }
+ atright { ) }
+ strut { Yes }
+{
+ row col a sub 11 col a sub 12
+ row col a sub 21 col a sub 22
+}
+matrix
+ atleft { ( }
+ atright { ) }
+ strut { Yes }
+{
+ row col b sub 11 col b sub 12
+ row col b sub 21 col b sub 22
+}
+=
+matrix
+ atleft { ( }
+ atright { ) }
+ strut { Yes }
+{
+ row col c sub 11 col c sub 12
+ row col c sub 21 col c sub 22
+}
+}
+By default, the strut has height @Code "0.5f" (half the current font
+size) both above and below the axis of the row. This can be changed
+by giving any length as the value of the @Code "strut" option:
+@Code "strut { 2.0c }" for two centimetres above and below
+the axis, and so on.
+@PP
+Some symbols are defined which produce `matrices' with commonly needed
+@Code atleft and @Code atright options already set for you:
+@ID {
+@Code { "fmatrix { {n+1} over 2 }" }
+|7ct
+@Math { fmatrix { {n+1} over 2 } }
+}
+As this example shows, these symbols are very useful for getting large
+scaled delimiters around things that aren't necessarily matrices at all.
+Section {@NumberOf mat_summ} has the full list of these symbols.
+@PP
+Every fragment of mathematics has an @I axis running through it which
+is used to position it vertically
+mathematics.axis @SubIndex { axis of }
+axis @Index { axis (in mathematics) }
+with respect to nearby objects. In the Expert's Guide to Lout
+@Cite { $kingston1995lout.expert } this is called a @I { row mark },
+but we'll stick with axis. Here are some examples with the axis
+shown as a dashed line:
+@ID {
+@ShowHMark @Math { x sup 2 }
+||2c
+@ShowHMark @Math { non + }
+||2c
+@ShowHMark @Math { @ExA }
+}
+When these objects are placed adjacent to one another, their
+axes are merged:
+@ID @ShowHMark @Math { x sup 2 + @ExA }
+Most of the time you do not need to think about vertical
+positioning, because for most objects there is just one
+sensible place for the axis to go, and Lout puts it there.
+@PP
+Matrices and the delimiters that enclose them are the two
+exceptions. Lout makes the axis of a matrix pass through
+its exact centre, and it shifts the axes of delimiters
+so that they exactly enclose the thing delimited. These
+choices are never disastrous, but there are other possibilities
+that might be better sometimes.
+@PP
+The axis of a matrix could reasonably be set to the axis
+of any of its rows:
+@ID {
+@ShowHMark @Math {
+matrix userow { yes } {
+ axisrow col { x sup 3 } col { y sup 3 } col { z sup 3 }
+ row col { x sup 2 } col { y sup 2 } col { z sup 2 }
+ row col { x } col { y } col { z }
+}
+}
+||2c
+@ShowHMark @Math {
+matrix userow { yes } {
+ row col { x sup 3 } col { y sup 3 } col { z sup 3 }
+ axisrow col { x sup 2 } col { y sup 2 } col { z sup 2 }
+ row col { x } col { y } col { z }
+}
+}
+||2c
+@ShowHMark @Math {
+matrix userow { yes } {
+ row col { x sup 3 } col { y sup 3 } col { z sup 3 }
+ row col { x sup 2 } col { y sup 2 } col { z sup 2 }
+ axisrow col { x } col { y } col { z }
+}
+}
+}
+Alternatively, it could be set to where Lout usually places it,
+through the exact centre:
+@ID {
+@ShowHMark @Math {
+matrix {
+ row col { x sup 3 } col { y sup 3 } col { z sup 3 }
+ row col { x sup 2 } col { y sup 2 } col { z sup 2 }
+ row col { x } col { y } col { z }
+}
+}
+}
+Delimiters could reasonably keep the axes that they naturally
+have (approximately through their centres, but not exactly):
+@ID {
+@ShowHMark @Math { pmatrix userow { yes } shiftdelim { no } { @ExA } }
+}
+or they could have their axes moved in the way that Lout usually does,
+to the point which allows them to evenly cover the thing delimited:
+@ID {
+@ShowHMark @Math { pmatrix userow { yes } { @ExA } }
+}
+Altogether then there are four possibilities when these two alternatives
+interact:
+@CD lines @Break @Tbl
+ aformat { @Cell 0.5w @VShift A | @Cell | @Cell B | @Cell | @Cell C }
+{
+@Rowa
+ A { }
+ B { Matrix axis
+uses row axis }
+ C { Matrix axis passes
+through centre }
+@Rowa
+ A { Delimiter
+keeps its axis }
+ B { @ShowHMark @Math { pmatrix userow {yes} shiftdelim {no } { @ExA } } }
+ C { @ShowHMark @Math { pmatrix userow {no } shiftdelim {no } { @ExA } } }
+@Rowa
+ A { Delimiter
+axis shifted }
+ B { @ShowHMark @Math { pmatrix userow {yes} shiftdelim {yes} { @ExA } } }
+ C { @ShowHMark @Math { pmatrix userow {no } shiftdelim {yes} { @ExA } } }
+}
+To supply these possibilities, the @Code "matrix" symbol and all
+its variants (@Code "fmatrix" etc.) have two options whose
+values may be {@Code "yes"} or {@Code "no"}:
+@ID @Code @Verbatim {
+matrix
+ userow { no }
+ shiftdelim { yes }
+{
+ ...
+}
+}
+The @Code "userow" option determines whether the axis of the
+matrix will use a row axis; the default is not to, i.e. to
+centre the axis. The @Code "shiftdelim" option determines whether
+the axis of the delimiter will be shifted so that the delimiter
+evenly covers the thing delimited; the default is to do this.
+@PP
+If @Code "userow" is {@Code "yes"}, the next question is
+which row's axis to use to make the overall axis. If you
+do nothing, the first (or only) row's axis becomes the
+overall axis. To select some other row instead, replace
+the @Code "row" symbol that precedes the row by {@Code "axisrow"}:
+@ID @Code @Tbl
+ mv { 0.5vx }
+ mh { 1s }
+ aformat { @Cell A | @Cell | @Cell B | @Cell | @Cell C | @Cell |
+ @Cell D }
+ bformat { @Cell A | @Cell " col" | @Cell B | @Cell " col" | @Cell C |
+ @Cell " col" | @Cell D }
+{
+@Rowa
+ A { "matrix userow { yes } {" &0io }
+@Rowb
+ A { " row" }
+ B { "x sup 3" }
+ C { "y sup 3" }
+ D { "z sup 3" }
+@Rowb
+ A { " axisrow" }
+ B { "x sup 2" }
+ C { "y sup 2" }
+ D { "z sup 2" }
+@Rowb
+ A { " row" }
+ B { "x" }
+ C { "y" }
+ D { "z" }
+@Rowa
+ A { "}" }
+}
+The result of this is
+@ID @ShowHMark @Math {
+matrix userow { yes } {
+ row col { x sup 3 } col { y sup 3 } col { z sup 3 }
+ axisrow col { x sup 2 } col { y sup 2 } col { z sup 2 }
+ row col { x } col { y } col { z }
+}
+}
+with the axis through the second row as desired.
+@End @Section
diff --git a/doc/user/mat_summ b/doc/user/mat_summ
new file mode 100644
index 0000000..f6bf1a2
--- /dev/null
+++ b/doc/user/mat_summ
@@ -0,0 +1,1314 @@
+@Section
+ @Title { Summary }
+ @Tag { mat_summ }
+@Begin
+@PP
+This section is a complete list of the symbols provided by
+{@Code "@Math"}. We divide them into @I { helper }, @I { ordinary },
+@I { variable-building }, @I { large operator }, @I { unary operator },
+@I { binary operator }, @I { relation }, and @I { punctuation } symbols.
+mathematics.precedence @SubIndex { precedence of symbols }
+precedence.mathematics @Index { precedence of symbols (mathematics) }
+The precedences of these symbols, where relevant, are as follows:
+@ID @OneRow @Tbl
+ mv { 0.5vx }
+ aformat { @Cell ml { 0i } A | @Cell indent { ctr } B | @Cell mr { 0i } C }
+ afont { Italic }
+ bformat { @Cell ml { 0i } A | @Cell indent { ctr } B | @Cell mr { 0i } C }
+{
+@Rowa
+ ma { 0i }
+ A { Symbol type }
+ B { Precedence }
+ C { Symbols }
+ rb { yes }
+@Rowb
+ A { Helper }
+ B { 100 }
+ C { @Code { "big" } @Code { "small" } @Code { "vctr" }
+@Code { "@SuperScriptStyle" } etc.
+# @Code { "@SubScriptStyle" }
+# @Code { "@NumeratorStyle" } @Code { "@DenominatorStyle" }
+# @Code { "@SquareRootStyle" }
+}
+@Rowb
+ A { Variable-building }
+ B { 84 }
+ C { @Code { "dot" } @Code { "dotdot" } @Code { "hat" }
+@Code { "tilde" } @Code { "vec" } @Code { "dyad" }
+@Code { "overbar" } @Code { "underbar" }
+}
+@Rowb
+ A { Variable-building }
+ B { 82 }
+ C { @Code { "sub" } @Code { "on" } @Code { "ton" } }
+@Rowb
+ A { Variable-building }
+ B { 80 }
+ C { @Code { "sup" } @Code { "supp" } }
+@Rowb
+ A { Unary operator }
+ B { 70 }
+ C { @Code { sqrt } @Code { root } @Code { zroot } @Code { matrix } etc. }
+@Rowb
+ A { Binary operator }
+ B { 64 }
+ C { @Code { "times" } @Code { "*" } }
+@Rowb
+ A { Binary operator }
+ B { 62 }
+ C { @Code { "div" } @Code { "frac" } @Code { "over" } }
+@Rowb
+ A { Binary operator }
+ B { 60 }
+ C { @Code { "bin" } @Code { "+" } @Code { "-" } and
+all other binary operator symbols }
+@Rowb
+ A { Relation }
+ B { 50 }
+ C { @Code "rel" and all other relation symbols }
+@Rowb
+ A { Punctuation }
+ B { 40 }
+ C { @Code { "punct" } @Code { ";" } @Code { "," } @Code { "col" } }
+@Rowb
+ A { Helper }
+ B { 26 }
+ C { @Code "non" }
+@Rowb
+ A { Helper }
+ B { 24 }
+ C { @Code { "above" } @Code { "below" } @Code { "wideabove" }
+@Code { "widebelow" }
+}
+@Rowb
+ A { Helper }
+ B { 22 }
+ C { @Code { "col" } @Code { "lcol" } @Code { "ccol" }
+@Code { "rcol" } @Code { "mcol" } }
+@Rowb
+ A { Helper }
+ B { 20 }
+ C { @Code { "row" } @Code { "axisrow" } }
+ rb { yes }
+ mb { 0i }
+}
+Results are shown in display style in this section; the other styles
+give more compressed results.
+@BeginSubSections
+
+@SubSection
+ @Title { Helper symbols }
+@Begin
+@LP
+The full list of helper symbols is
+@ID @OneRow @Tbl
+ mv { 0.5vx }
+ aformat { @Cell ml { 0i } A | @Cell mr { 0i } B }
+{
+@Rowa
+ ma { 0i }
+ A { @Code "`" }
+ B { Thin space, as after punctuation symbols }
+@Rowa
+ A { @Code "``" }
+ B { Medium space, as around binary operator symbols }
+@Rowa
+ A { @Code "```" }
+ B { Thick space, as around relation symbols }
+@Rowa
+ A { @Code "big x"
+mathematics.big. @SubIndex { @Code "big" symbol }
+big. @Index { @Code "big" symbol (mathematics) }
+}
+ B { Make @Code x larger }
+@Rowa
+ A { @Code "small x"
+mathematics.small. @SubIndex { @Code "small" symbol }
+small. @Index { @Code "small" symbol (mathematics) }
+}
+ B { Make @Code x smaller }
+@Rowa
+ A { @Code "vctr x"
+mathematics.vctr. @SubIndex { @Code "vctr" symbol }
+vctr. @Index { @Code "vctr" symbol (mathematics) }
+}
+ B { Centre @Code x vertically }
+@Rowa
+ A { @Code "@SuperScriptStyle x"
+mathematics.superscriptstyle. @SubIndex { @Code "@SuperScriptStyle" }
+superscriptstyle. @Index { @Code "@SuperScriptStyle" (mathematics) }
+}
+ B { Set @Code x in the style of a superscript }
+@Rowa
+ A { @Code "@SubScriptStyle x"
+mathematics.subscriptstyle. @SubIndex { @Code "@SubScriptStyle" }
+subscriptstyle. @Index { @Code "@SubScriptStyle" (mathematics) }
+}
+ B { Set @Code x in the style of a subscript }
+@Rowa
+ A { @Code "@NumeratorStyle x"
+mathematics.numeratorstyle. @SubIndex { @Code "@NumeratorStyle" }
+numeratorstyle. @Index { @Code "@NumeratorStyle" (mathematics) }
+}
+ B { Set @Code x in the style of a numerator }
+@Rowa
+ A { @Code "@DenominatorStyle x"
+mathematics.denominatorstyle. @SubIndex { @Code "@DenominatorStyle" }
+denominatorstyle. @Index { @Code "@DenominatorStyle" (mathematics) }
+}
+ B { Set @Code x in the style of a denominator }
+@Rowa
+ A { @Code "@SquareRootStyle x"
+mathematics.squarerootstyle. @SubIndex { @Code "@SquareRootStyle" }
+squarerootstyle. @Index { @Code "@SquareRootStyle" (mathematics) }
+}
+ B { Set @Code x in the style of a square root }
+@Rowa
+ A { @Code { above } @Code { below } @Code { wideabove }
+@Code { widebelow } }
+ B { Vertical stacking (see below) }
+@Rowa
+ A { @Code { "col" } @Code { "lcol" } @Code { "ccol" }
+@Code { "rcol" } @Code { "mcol" } @Code { "row" } @Code { "axisrow" } }
+ B { Used only within matrices (Section {@NumberOf matrices}) }
+@Rowa
+ A { @Code "non x" }
+ B { Remove spaces from @Code x (see below) }
+ mb { 0i }
+}
+where @Code "x" is arbitrary as usual. The @Code "above" symbol prints
+mathematics.above. @SubIndex { @Code "above" symbol }
+above. @Index { @Code "above" symbol (mathematics) }
+the preceding object above the following object, while the @Code "below"
+mathematics.below. @SubIndex { @Code "below" symbol }
+below. @Index { @Code "below" symbol (mathematics) }
+symbol prints it below:
+@ID {
+@Code @Verbatim { { a above f } + { z below b } }
+|7ct
+@Math { { a above f } + { z below b } }
+}
+Here is a larger example:
+@ID { @Code @Verbatim {
+sum from { { 1 <= i <= p } above
+ { 1 <= j <= q } above { 1 <= k <= r } }
+{ a sub ij b sub jk c sub ki }
+}
+||7ct
+@Math {
+ sum from { { 1 <= i <= p } above
+ { 1 <= j <= q } above
+ { 1 <= k <= r } }
+ { a sub { ij } b sub { jk } c sub { ki } }
+}
+}
+The @Code "wideabove" and @Code "widebelow" symbols are like @Code "above"
+mathematics.wideabove. @SubIndex { @Code "wideabove" symbol }
+wideabove. @Index { @Code "wideabove" symbol (mathematics) }
+mathematics.widebelow. @SubIndex { @Code "widebelow" symbol }
+widebelow. @Index { @Code "widebelow" symbol (mathematics) }
+and @Code "below" except that they horizontally scale the right parameter
+to the width of the left:
+@IL
+
+@LI {
+@Code @Verbatim {
+{a, ... , z} wideabove
+{90d @Rotate blbrace}
+}
+||7ct
+@Math { {a, ... , z} wideabove {90d @Rotate blbrace} }
+}
+
+@LI {
+@Code "{a, ... , z} widebelow minus"
+|7ct
+@Math { {a, ... , z} widebelow minus }
+}
+@EL
+The @Code "non" symbol prints the following object without the
+mathematics.non. @SubIndex { @Code "non" symbol }
+non. @Index { @Code "non" symbol (mathematics) }
+horizontal spacing it would usually contain. It has low precedence
+so that, in examples like
+@ID @Code @Verbatim {
+The `@M { non <= }' operation is reflexive and transitive.
+}
+which produces
+@ID {
+The `@M { non <= }' operation is reflexive and transitive.
+}
+it is easy to use the familiar symbolic names for relations and
+operators without getting the usual surrounding spaces, saving
+the trouble of looking up the names of the characters.
+@End @SubSection
+
+@SubSection
+ @Title { Ordinary symbols }
+@Begin
+@LP
+Ordinary symbols are the simplest symbols. They do not take objects
+mathematics.ordinary. @SubIndex { ordinary symbols }
+ordinary. @Index { ordinary symbols (mathematics) }
+to their left or right, and they always look the same except for the
+usual change of size in certain contexts (superscripts, subscripts, etc.).
+There are hundreds of these symbols, so they are presented here in groups.
+@PP
+The first group consists of all the symbols from the Adobe Symbol font;
+these are as for the @Code "@Sym" symbol of Section {@NumberOf characters},
+but within @Code "@Math" you don't type {@Code "@Sym"}:
+@DP
+@Tbl
+ mv { 0.5vx }
+ aformat { @Cell ml {@DisplayIndent} indent {right} w {@LCodeWidth} @Code A |
+ @Cell w {@ResultWidth} B |
+ @Cell indent {right} w {@CodeWidth} @Code C |
+ @Cell w {@ResultWidth} D |
+ @Cell indent {right} w {@CodeWidth} @Code E |
+ @Cell w {@ResultWidth} mr { 0i } F }
+{
+@Rowa
+ ma { 0i }
+ A { "space" } B { @Math { space } }
+ C { "exclam" } D { @Math { exclam } }
+ E { "universal" } F { @Math { universal } }
+@Rowa
+ A { "numbersign" } B { @Math { numbersign } }
+ C { "existential" } D { @Math { existential } }
+ E { "percent" } F { @Math { percent } }
+@Rowa
+ A { "ampersand" } B { @Math { ampersand } }
+ C { "suchthat" } D { @Math { suchthat } }
+ E { "parenleft" } F { @Math { parenleft } }
+@Rowa
+ A { "parenright" } B { @Math { parenright } }
+ C { "asteriskmath" } D { @Math { asteriskmath } }
+ E { "plus" } F { @Math { plus } }
+@Rowa
+ A { "comma" } B { @Math { comma } }
+ C { "minus" } D { @Math { minus } }
+ E { "period" } F { @Math { period } }
+@Rowa
+ A { "slash" } B { @Math { slash } }
+ C { "zero" } D { @Math { zero } }
+ E { "one" } F { @Math { one } }
+@Rowa
+ A { "two" } B { @Math { two } }
+ C { "three" } D { @Math { three } }
+ E { "four" } F { @Math { four } }
+@Rowa
+ A { "five" } B { @Math { five } }
+ C { "six" } D { @Math { six } }
+ E { "seven" } F { @Math { seven } }
+@Rowa
+ A { "eight" } B { @Math { eight } }
+ C { "nine" } D { @Math { nine } }
+ E { "colon" } F { @Math { colon } }
+@Rowa
+ A { "semicolon" } B { @Math { semicolon } }
+ C { "less" } D { @Math { less } }
+ E { "equal" } F { @Math { equal } }
+@Rowa
+ A { "greater" } B { @Math { greater } }
+ C { "question" } D { @Math { question } }
+ E { "congruent" } F { @Math { congruent } }
+@Rowa
+ A { "Alpha" } B { @Math { Alpha } }
+ C { "Beta" } D { @Math { Beta } }
+ E { "Chi" } F { @Math { Chi } }
+@Rowa
+ A { "Delta" } B { @Math { Delta } }
+ C { "Epsilon" } D { @Math { Epsilon } }
+ E { "Phi" } F { @Math { Phi } }
+@Rowa
+ A { "Gamma" } B { @Math { Gamma } }
+ C { "Eta" } D { @Math { Eta } }
+ E { "Iota" } F { @Math { Iota } }
+@Rowa
+ A { "thetaone" } B { @Math { thetaone } }
+ C { "Kappa" } D { @Math { Kappa } }
+ E { "Lambda" } F { @Math { Lambda } }
+@Rowa
+ A { "Mu" } B { @Math { Mu } }
+ C { "Nu" } D { @Math { Nu } }
+ E { "Omicron" } F { @Math { Omicron } }
+@Rowa
+ A { "Pi" } B { @Math { Pi } }
+ C { "Theta" } D { @Math { Theta } }
+ E { "Rho" } F { @Math { Rho } }
+@Rowa
+ A { "Sigma" } B { @Math { Sigma } }
+ C { "Tau" } D { @Math { Tau } }
+ E { "Upsilon" } F { @Math { Upsilon } }
+@Rowa
+ A { "sigmaone" } B { @Math { sigmaone } }
+ C { "Omega" } D { @Math { Omega } }
+ E { "Xi" } F { @Math { Xi } }
+@Rowa
+ A { "Psi" } B { @Math { Psi } }
+ C { "Zeta" } D { @Math { Zeta } }
+ E { "bracketleft" } F { @Math { bracketleft } }
+@Rowa
+ A { "therefore" } B { @Math { therefore } }
+ C { "bracketright" } D { @Math { bracketright } }
+ E { "perpendicular" } F { @Math { perpendicular } }
+@Rowa
+ A { "underscore" } B { @Math { underscore } }
+ C { "radicalex" } D { @Math { radicalex } }
+ E { "alpha" } F { @Math { alpha } }
+@Rowa
+ A { "beta" } B { @Math { beta } }
+ C { "chi" } D { @Math { chi } }
+ E { "delta" } F { @Math { delta } }
+@Rowa
+ A { "epsilon" } B { @Math { epsilon } }
+ C { "phi" } D { @Math { phi } }
+ E { "gamma" } F { @Math { gamma } }
+@Rowa
+ A { "eta" } B { @Math { eta } }
+ C { "iota" } D { @Math { iota } }
+ E { "phione" } F { @Math { phione } }
+@Rowa
+ A { "kappa" } B { @Math { kappa } }
+ C { "lambda" } D { @Math { lambda } }
+ E { "mu" } F { @Math { mu } }
+@Rowa
+ A { "nu" } B { @Math { nu } }
+ C { "omicron" } D { @Math { omicron } }
+ E { "pi" } F { @Math { pi } }
+@Rowa
+ A { "theta" } B { @Math { theta } }
+ C { "rho" } D { @Math { rho } }
+ E { "sigma" } F { @Math { sigma } }
+@Rowa
+ A { "tau" } B { @Math { tau } }
+ C { "upsilon" } D { @Math { upsilon } }
+ E { "omegaone" } F { @Math { omegaone } }
+@Rowa
+ A { "omega" } B { @Math { omega } }
+ C { "xi" } D { @Math { xi } }
+ E { "psi" } F { @Math { psi } }
+@Rowa
+ A { "zeta" } B { @Math { zeta } }
+ C { "braceleft" } D { @Math { braceleft } }
+ E { "bar" } F { @Math { bar } }
+@Rowa
+ A { "braceright" } B { @Math { braceright } }
+ C { "similar" } D { @Math { similar } }
+ E { "Upsilonone" } F { @Math { Upsilonone } }
+@Rowa
+ A { "minute" } B { @Math { minute } }
+ C { "lessequal" } D { @Math { lessequal } }
+ E { "fraction" } F { @Math { fraction } }
+@Rowa
+ A { "infinity" } B { @Math { infinity } }
+ C { "florin" } D { @Math { florin } }
+ E { "club" } F { @Math { club } }
+@Rowa
+ A { "diamond" } B { @Math { diamond } }
+ C { "heart" } D { @Math { heart } }
+ E { "spade" } F { @Math { spade } }
+@Rowa
+ A { "arrowboth" } B { @Math { arrowboth } }
+ C { "arrowleft" } D { @Math { arrowleft } }
+ E { "arrowup" } F { @Math { arrowup } }
+@Rowa
+ A { "arrowright" } B { @Math { arrowright } }
+ C { "arrowdown" } D { @Math { arrowdown } }
+ E { "degree" } F { @Math { degree } }
+@Rowa
+ A { "plusminus" } B { @Math { plusminus } }
+ C { "second" } D { @Math { second } }
+ E { "greaterequal" } F { @Math { greaterequal } }
+@Rowa
+ A { "multiply" } B { @Math { multiply } }
+ C { "proportional" } D { @Math { proportional } }
+ E { "partialdiff" } F { @Math { partialdiff } }
+@Rowa
+ A { "bullet" } B { @Math { bullet } }
+ C { "divide" } D { @Math { divide } }
+ E { "notequal" } F { @Math { notequal } }
+@Rowa
+ A { "equivalence" } B { @Math { equivalence } }
+ C { "approxequal" } D { @Math { approxequal } }
+ E { "ellipsis" } F { @Math { ellipsis } }
+@Rowa
+ A { "arrowvertex" } B { @Math { arrowvertex } }
+ C { "arrowhorizex" } D { @Math { arrowhorizex } }
+ E { "carriagereturn" } F { @Math { carriagereturn } }
+@Rowa
+ A { "aleph" } B { @Math { aleph } }
+ C { "Ifraktur" } D { @Math { Ifraktur } }
+ E { "Rfraktur" } F { @Math { Rfraktur } }
+@Rowa
+ A { "weierstrass" } B { @Math { weierstrass } }
+ C { "circlemultiply" } D { @Math { circlemultiply } }
+ E { "circleplus" } F { @Math { circleplus } }
+@Rowa
+ A { "emptyset" } B { @Math { emptyset } }
+ C { "intersection" } D { @Math { intersection } }
+ E { "union" } F { @Math { union } }
+@Rowa
+ A { { 0.92 1.0 } @Scale "propersuperset" } B { @Math { propersuperset } }
+ C { "reflexsuperset" } D { @Math { reflexsuperset } }
+ E { "notsubset" } F { @Math { notsubset } }
+@Rowa
+ A { "propersubset" } B { @Math { propersubset } }
+ C { "reflexsubset" } D { @Math { reflexsubset } }
+ E { "element" } F { @Math { element } }
+@Rowa
+ A { "notelement" } B { @Math { notelement } }
+ C { "angle" } D { @Math { angle } }
+ E { "gradient" } F { @Math { gradient } }
+@Rowa
+ A { "registerserif" } B { @Math { registerserif } }
+ C { "copyrightserif" } D { @Math { copyrightserif } }
+ E { "trademarkserif" } F { @Math { trademarkserif } }
+@Rowa
+ A { "product" } B { @Math { product } }
+ C { "radical" } D { @Math { radical } }
+ E { "dotmath" } F { @Math { dotmath } }
+@Rowa
+ A { "logicalnot" } B { @Math { logicalnot } }
+ C { "logicaland" } D { @Math { logicaland } }
+ E { "logicalor" } F { @Math { logicalor } }
+@Rowa
+ A { "arrowdblboth" } B { @Math { arrowdblboth } }
+ C { "arrowdblleft" } D { @Math { arrowdblleft } }
+ E { "arrowdblup" } F { @Math { arrowdblup } }
+@Rowa
+ A { "arrowdblright" } B { @Math { arrowdblright } }
+ C { "arrowdbldown" } D { @Math { arrowdbldown } }
+ E { "lozenge" } F { @Math { lozenge } }
+@Rowa
+ A { "angleleft" } B { @Math { angleleft } }
+ C { "registersans" } D { @Math { registersans } }
+ E { "copyrightsans" } F { @Math { copyrightsans } }
+@Rowa
+ A { { 0.92 1.0 } @Scale "trademarksans" } B { @Math { trademarksans } }
+ C { "summation" } D { @Math { summation } }
+ E { "parenlefttp" } F { @Math { parenlefttp } }
+@Rowa
+ A { "parenleftex" } B { @Math { parenleftex } }
+ C { "parenleftbt" } D { @Math { parenleftbt } }
+ E { "bracketlefttp" } F { @Math { bracketlefttp } }
+@Rowa
+ A { "bracketleftex" } B { @Math { bracketleftex } }
+ C { "bracketleftbt" } D { @Math { bracketleftbt } }
+ E { "bracelefttp" } F { @Math { bracelefttp } }
+@Rowa
+ A { "braceleftmid" } B { @Math { braceleftmid } }
+ C { "braceleftbt" } D { @Math { braceleftbt } }
+ E { "braceex" } F { @Math { braceex } }
+@Rowa
+ A { "angleright" } B { @Math { angleright } }
+ C { "integral" } D { @Math { integral } }
+ E { "integraltp" } F { @Math { integraltp } }
+@Rowa
+ A { "integralex" } B { @Math { integralex } }
+ C { "integralbt" } D { @Math { integralbt } }
+ E { "parenrighttp" } F { @Math { parenrighttp } }
+@Rowa
+ A { "parenrightex" } B { @Math { parenrightex } }
+ C { "parenrightbt" } D { @Math { parenrightbt } }
+ E { "bracketrighttp" } F { @Math { bracketrighttp } }
+@Rowa
+ A { "bracketrightex" } B { @Math { bracketrightex } }
+ C { "bracketrightbt" } D { @Math { bracketrightbt } }
+ E { "bracerighttp" } F { @Math { bracerighttp } }
+@Rowa
+ A { "bracerightmid" } B { @Math { bracerightmid } }
+ C { "bracerightbt" } D { @Math { bracerightbt } }
+ mb { 0i }
+}
+@DP
+The symbols that produce the Symbol font characters @Code { theta1 },
+@Code { sigma1 }, @Code { phi1 }, @Code { omega1 }, and @Code { Upsilon1 }
+are called @Code { thetaone }, @Code { sigmaone }, @Code { phione },
+@Code { omegaone }, and @Code { Upsilonone }, since Lout symbol names
+cannot contain both letters and digits. The second group of ordinary
+symbols produces arrows:
+@ID @OneRow @Tbl
+ mv { 0.5vx }
+ aformat { @Cell ml{0i} indent{right} w{@LCodeWidth} @Code A |
+ @Cell w {@ResultWidth} B |
+ @Cell indent {right} w {@CodeWidth} @Code C |
+ @Cell w {@ResultWidth} D |
+ @Cell indent {right} w {@CodeWidth} @Code E |
+ @Cell w {@ResultWidth} mr { 0i } F }
+{
+@Rowa
+ ma { 0i }
+ A { "leftarrow" } B { @Math { leftarrow } }
+ C { "longleftarrow" } D { @Math { longleftarrow } }
+ E { "dblleftarrow" } F { @Math { dblleftarrow } }
+@Rowa
+ A { "dbllongleftarrow" } B { @Math { dbllongleftarrow } }
+ C { "rightarrow" } D { @Math { rightarrow } }
+ E { "longrightarrow" } F { @Math { longrightarrow } }
+@Rowa
+ A { "dblrightarrow" } B { @Math { dblrightarrow } }
+ C { "dbllongrightarrow" } D { @Math { dbllongrightarrow } }
+ E { "leftrightarrow" } F { @Math { leftrightarrow } }
+@Rowa
+ A { "longleftrightarrow" } B { @Math { longleftrightarrow } }
+ C { "dblleftrightarrow" } D { @Math { dblleftrightarrow } }
+ E { { 0.85 1.0 } @Scale "dbllongleftrightarrow" }
+ F { @Math { dbllongleftrightarrow } }
+@Rowa
+ A { "mapsto" } B { @Math { mapsto } }
+ C { "longmapsto" } D { @Math { longmapsto } }
+ E { "hookleftarrow" } F { @Math { hookleftarrow } }
+@Rowa
+ A { "hookrightarrow" } B { @Math { hookrightarrow } }
+ C { "leadsto" } D { @Math { leadsto } }
+ E { "leftharpoonup" } F { @Math { leftharpoonup } }
+@Rowa
+ A { "rightharpoonup" } B { @Math { rightharpoonup } }
+ C { "leftharpoondown" } D { @Math { leftharpoondown } }
+ E { { 0.95 1.0 } @Scale "rightharpoondown" } F { @Math { rightharpoondown } }
+@Rowa
+ A { "rightleftharpoons" } B { @Math { rightleftharpoons } }
+ C { "uparrow" } D { @Math { uparrow } }
+ E { "dbluparrow" } F { @Math { dbluparrow } }
+@Rowa
+ A { "downarrow" } B { @Math { downarrow } }
+ C { "dbldownarrow" } D { @Math { dbldownarrow } }
+ E { "updownarrow" } F { @Math { updownarrow } }
+@Rowa
+ A { "dblupdownarrow" } B { @Math { dblupdownarrow } }
+ C { "nearrow" } D { @Math { nearrow } }
+ E { "searrow" } F { @Math { searrow } }
+@Rowa
+ A { "swarrow" } B { @Math { swarrow } }
+ C { "nwarrow" } D { @Math { nwarrow } }
+ mb { 0i }
+}
+The members of the third group of ordinary symbols stand for themselves,
+but in Roman font rather than the Italic which is the default in
+mathematics:
+@ID @OneRow @Tbl
+ mv { 0.45vx }
+ aformat { @Cell ml {0i} indent {right} w {@LCodeWidth} @Code A |
+ @Cell w {@ResultWidth} B |
+ @Cell indent {right} w {@CodeWidth} @Code C |
+ @Cell w {@ResultWidth} D |
+ @Cell indent {right} w {@CodeWidth} @Code E |
+ @Cell w {@ResultWidth} mr { 0i } F }
+{
+@Rowa
+ ma { 0i }
+ A { "arccos" } B { @Math { arccos } }
+ C { "arcsin" } D { @Math { arcsin } }
+ E { "arctan" } F { @Math { arctan } }
+@Rowa
+ A { "arg" } B { @Math { arg } }
+ C { "cos" } D { @Math { cos } }
+ E { "cosh" } F { @Math { cosh } }
+@Rowa
+ A { "cot" } B { @Math { cot } }
+ C { "coth" } D { @Math { coth } }
+ E { "csc" } F { @Math { csc } }
+@Rowa
+ A { "deg" } B { @Math { deg } }
+ C { "det" } D { @Math { det } }
+ E { "dim" } F { @Math { dim } }
+@Rowa
+ A { "exp" } B { @Math { exp } }
+ C { "gcd" } D { @Math { gcd } }
+ E { "hom" } F { @Math { hom } }
+@Rowa
+ A { "inf" } B { @Math { inf } }
+ C { "ker" } D { @Math { ker } }
+ E { "lg" } F { @Math { lg } }
+@Rowa
+ A { "lim" } B { @Math { lim } }
+ C { "liminf" } D { @ZeroWidth @Math { liminf } }
+ E { "limsup" } F { @Math { limsup } }
+@Rowa
+ A { "ln" } B { @Math { ln } }
+ C { "log" } D { @Math { log } }
+ E { "max" } F { @Math { max } }
+@Rowa
+ A { "min" } B { @Math { min } }
+ C { "Pr" } D { @Math { Pr } }
+ E { "sec" } F { @Math { sec } }
+@Rowa
+ A { "sin" } B { @Math { sin } }
+ C { "sinh" } D { @Math { sinh } }
+ E { "supr" } F { @Math { supr } }
+@Rowa
+ A { "tan" } B { @Math { tan } }
+ C { "tanh" } D { @Math { tanh } }
+ E { "mod" } F { @Math { mod } }
+@Rowa
+ A { "0" } B { @Math { 0 } }
+ C { "1" } D { @Math { 1 } }
+ E { "2" } F { @Math { 2 } }
+@Rowa
+ A { "3" } B { @Math { 3 } }
+ C { "4" } D { @Math { 4 } }
+ E { "5" } F { @Math { 5 } }
+@Rowa
+ A { "6" } B { @Math { 6 } }
+ C { "7" } D { @Math { 7 } }
+ E { "8" } F { @Math { 8 } }
+@Rowa
+ A { "9" } B { @Math { 9 } }
+ C { "!" } D { @Math { ! } }
+ E { "?" } F { @Math { ? } }
+@Rowa
+ A { "%" } B { @Math { % } }
+ C { "(" } D { @Math { ( } }
+ E { ")" } F { @Math { ) } }
+@Rowa
+ A { "[" } B { @Math { [ } }
+ C { "]" } D { @Math { ] } }
+ mb { 0i }
+}
+The fourth group make good values for the @Code "atleft" and
+@Code "atright" options of @Code { matrix }:
+@ID @OneRow @Tbl
+ mv { 0.5vx }
+ aformat { @Cell ml { 0i } indent { right } w {@LCodeWidth} @Code A | @Cell B | @Cell |
+ @Cell indent { right } @Code C | @Cell D | @Cell |
+ @Cell indent { right } @Code E | @Cell F | @Cell |
+ @Cell indent { right } @Code G | @Cell mr { 0i } H }
+{
+@Rowa
+ ma { 0i }
+ strut { 1.2f }
+ A { "lpar" } B { @Math { lpar } }
+ C { "rpar" } D { @Math { rpar } }
+ E { "lbrack" } F { @Math { lbrack } }
+ G { "rbrack" } H { @Math { rbrack } }
+@Rowa
+ strut { 1.2f }
+ A { "lbrace" } B { @Math { lbrace } }
+ C { "rbrace" } D { @Math { rbrace } }
+ E { "lfloor" } F { @Math { lfloor } }
+ G { "rfloor" } H { @Math { rfloor } }
+@Rowa
+ strut { 1.2f }
+ A { "lceil" } B { @Math { lceil } }
+ C { "rceil" } D { @Math { rceil } }
+ E { "langle" } F { @Math { langle } }
+ G { "rangle" } H { @Math { rangle } }
+@Rowa
+ strut { 3.5f }
+ A { "blpar" } B { @Math { blpar } }
+ C { "brpar" } D { @Math { brpar } }
+ E { "blbrack" } F { @Math { blbrack } }
+ G { "brbrack" } H { @Math { brbrack } }
+@Rowa
+ strut { 3.5f }
+ A { "blbrace" } B { @Math { blbrace } }
+ C { "brbrace" } D { @Math { brbrace } }
+ E { "blfloor" } F { @Math { blfloor } }
+ G { "brfloor" } H { @Math { brfloor } }
+@Rowa
+ strut { 3.5f }
+ A { "blceil" } B { @Math { blceil } }
+ C { "brceil" } D { @Math { brceil } }
+ E { "blangle" } F { @Math { blangle } }
+ G { "brangle" } H { @Math { brangle } }
+ mb { 0i }
+}
+The last group is miscellaneous:
+@DP
+@RID @OneRow @Tbl
+ mv { 0.5vx }
+ aformat { @Cell ml {0i} indent {right} w {@LCodeWidth} @Code A |
+ @Cell w {@ResultWidth} B |
+ @Cell indent {right} w {@CodeWidth} @Code C |
+ @Cell w {@ResultWidth} D |
+ @Cell indent {right} w {@CodeWidth} @Code E |
+ @Cell w {@ResultWidth} mr { 0i } F }
+{
+@Rowa
+ ma { 0i }
+ A { "hbar" } B { @Math { hbar } }
+ C { "Re" } D { @Math { Re } }
+ E { "Im" } F { @Math { Im } }
+@Rowa
+ A { "partial" } B { @Math { partial } }
+ C { "infty" } D { @Math { infty } }
+ E { "prime" } F { @Math { prime } }
+@Rowa
+ A { "nabla" } B { @Math { nabla } }
+ C { "surd" } D { @Math { surd } }
+ E { "top" } F { @Math { top } }
+@Rowa
+ A { "bot" } B { @Math { bot } }
+ C { "dbar" } D { @Math { dbar } }
+ E { "triangle" } F { @Math { triangle } }
+@Rowa
+ A { "backslash" } B { @Math { backslash } }
+ C { "forall" } D { @Math { forall } }
+ E { "exists" } F { @Math { exists } }
+@Rowa
+ A { "neg" } B { @Math { neg } }
+ C { "circle" } D { @Math { circle } }
+ E { "filledcircle" } F { @Math { filledcircle } }
+@Rowa
+ A { "square" } B { @Math { square } }
+ C { "ldots" } D { @Math { ldots } }
+ E { "cdots" } F { @Math { cdots } }
+@Rowa
+ A { "vdots" } B { @Math { vdots } }
+ C { "ddots" } D { @Math { ddots } }
+ E { "del" } F { @Math { del } }
+@Rowa
+ A { "grad" } B { @Math { grad } }
+ C { "..." } D { @Math { ... } }
+ E { ",...," } F { @Math { ,..., } }
+@Rowa
+ A { "'" } B { @Math { ' } }
+ C { "''" } D { @Math { '' } }
+ E { "'''" } F { @Math { ''' } }
+@Rowa
+ A { "''''" } B { @Math { '''' } }
+ C { "empty" } D { @Math { empty } }
+ E { "triangleup" } F { @Math { triangleup } }
+@Rowa
+ A { "triangledown" } B { @Math { triangledown } }
+ C { "half" } D { @Math { half } }
+ E { "third" } F { @Math { third } }
+ mb { 0i }
+}
+@End @SubSection
+
+@SubSection
+ @Title { Variable-building symbols }
+@Begin
+@LP
+Under this category are symbols that are mainly used to build
+mathematics.variablebuilding. @SubIndex { variable-building symbols }
+variablebuilding. @Index { variable-building symbols (mathematics) }
+variables. However, as usual in Lout, the objects they link
+together may in fact be arbitrary. First we have symbols that
+place a mark over or under an object:
+mathematics.dot. @SubIndex { @Code "dot" symbol }
+dot. @Index { @Code "dot" symbol (mathematics) }
+mathematics.dotdot. @SubIndex { @Code "dotdot" symbol }
+dotdot. @Index { @Code "dotdot" symbol (mathematics) }
+mathematics.hat. @SubIndex { @Code "hat" symbol }
+hat. @Index { @Code "hat" symbol (mathematics) }
+mathematics.tilde. @SubIndex { @Code "tilde" symbol }
+tilde. @Index { @Code "tilde" symbol (mathematics) }
+mathematics.vec. @SubIndex { @Code "vec" symbol }
+vec. @Index { @Code "vec" symbol (mathematics) }
+mathematics.dyad. @SubIndex { @Code "dyad" symbol }
+dyad. @Index { @Code "dyad" symbol (mathematics) }
+mathematics.overbar. @SubIndex { @Code "overbar" symbol }
+overbar. @Index { @Code "overbar" symbol (mathematics) }
+mathematics.underbar. @SubIndex { @Code "underbar" symbol }
+underbar. @Index { @Code "underbar" symbol (mathematics) }
+@ID @Tbl
+ mv { 0.5vx }
+ aformat { @Cell ml{0i} indent{right} w{@LCodeWidth} @Code A |
+ @Cell w {@ResultWidth} B |
+ @Cell indent {right} w {@CodeWidth} @Code C |
+ @Cell w {@ResultWidth} D |
+ @Cell indent {right} w {@CodeWidth} @Code E |
+ @Cell w {@ResultWidth} mr { 0i } F }
+{
+@Rowa
+ ma { 0i }
+ A { "x dot" } B { @Math { x dot } }
+ C { "x dotdot" } D { @Math { x dotdot } }
+ E { "x hat" } F { @Math { x hat } }
+@Rowa
+ A { "x tilde" } B { @Math { x tilde } }
+ C { "x vec" } D { @Math { x vec } }
+ E { "x dyad" } F { @Math { x dyad } }
+@Rowa
+ A { "{x + y} overbar" } B { @Math { {x + y} overbar } }
+ C { "{x + y} underbar" } D { @Math { {x + y} underbar } }
+ mb { 0i }
+}
+These marks are centred, with a small skew to allow for italic
+slant, except the last two which are extended to the width of
+the object.
+@PP
+The remaining variable-building symbols produce superscripts and
+subscripts:
+# These differ in appearance depending on the style,
+mathematics.sup. @SubIndex { @Code "sup" symbol }
+sup. @Index { @Code "sup" symbol (mathematics) }
+mathematics.sub. @SubIndex { @Code "sub" symbol }
+sub. @Index { @Code "sub" symbol (mathematics) }
+mathematics.tsub. @SubIndex { @Code "tsub" symbol }
+tsub. @Index { @Code "tsub" symbol (mathematics) }
+mathematics.supp. @SubIndex { @Code "supp" symbol }
+supp. @Index { @Code "supp" symbol (mathematics) }
+mathematics.on. @SubIndex { @Code "on" symbol }
+on. @Index { @Code "on" symbol (mathematics) }
+mathematics.ton. @SubIndex { @Code "ton" symbol }
+ton. @Index { @Code "ton" symbol (mathematics) }
+so the results are shown in both display and text style:
+@ID @Tbl
+ mv { 0.6vx }
+ # aformat { @Cell ml {0i} indent {right} @Code A | @Cell B | @Cell C | @Cell |
+ # @Cell indent {right} @Code D | @Cell E | @Cell F | @Cell |
+ # @Cell indent {right} @Code G | @Cell H | @Cell mr {0i} I }
+ aformat { @Cell ml {0i} indent {right} @Code A | @Cell B | @Cell |
+ @Cell indent {right} @Code D | @Cell E | @Cell |
+ @Cell indent {right} @Code G | @Cell mr {0i} H }
+{
+@Rowa
+ ma { 0i }
+ A { "x sup y" } B { @Math { x sup y } } C { @M { x sup y } }
+ D { "x sub y" } E { @Math { x sub y } } F { @M { x sub y } }
+ G { "W tsub y" } H { @Math { W tsub y } } I { @M { W tsub y } }
+@Rowa
+ A { "x supp y on z" } B { @Math {x supp y on z } } C { @M {x supp y on z } }
+ D { "W supp y ton z" } E { @Math {W supp y ton z} } F { @M {W supp y ton z} }
+ mb { 0i }
+}
+The @Code "supp" and @Code "on" (or {@Code "ton"}) symbols must be
+used together as shown; @Code "tsub" and @Code "ton" are exactly like
+@Code "sub" and @Code "on" except that the subscript is tucked in.
+@End @SubSection
+
+@SubSection
+ @Title { Large operator symbols }
+@Begin
+@LP
+Large operator symbols have @Code "from" and @Code "to"
+mathematics.large.operators. @SubIndex { large operators }
+large.operators. @Index { large operators (mathematics) }
+options which work as described for the @Code "sum" symbol
+in Section {@NumberOf mat_comm}. Here they all are, with
+their results in both display style and text style:
+@CD @OneRow @Tbl
+ mv { 0.7vx }
+ strut { 2.5f }
+ aformat { @Cell ml {0i} indent {right} @Code A | @Cell B | @Cell C | @Cell |
+ @Cell indent {right} @Code D | @Cell E | @Cell mr {0i} F }
+{
+@Rowa
+ ma { 0i }
+ A { "sum from { a } to { b } x" }
+ B { @Math { sum from { a } to { b } x } }
+ C { @M { sum from { a } to { b } x } }
+ D { "prod from { a } to { b } x" }
+ E { @Math { prod from { a } to { b } x } }
+ F { @M { prod from { a } to { b } x } }
+@Rowa
+ A { "coprod from { a } to { b } x" }
+ B { @Math { coprod from { a } to { b } x } }
+ C { @M { coprod from { a } to { b } x } }
+ D { "bcap from { a } to { b } x" }
+ E { @Math { bcap from { a } to { b } x } }
+ F { @M { bcap from { a } to { b } x } }
+@Rowa
+ A { "bcup from { a } to { b } x" }
+ B { @Math { bcup from { a } to { b } x } }
+ C { @M { bcup from { a } to { b } x } }
+ D { "bvee from { a } to { b } x" }
+ E { @Math { bvee from { a } to { b } x } }
+ F { @M { bvee from { a } to { b } x } }
+@Rowa
+ A { "bwedge from { a } to { b } x" }
+ B { @Math { bwedge from { a } to { b } x } }
+ C { @M { bwedge from { a } to { b } x } }
+ D { "bodot from { a } to { b } x" }
+ E { @Math { bodot from { a } to { b } x } }
+ F { @M { bodot from { a } to { b } x } }
+@Rowa
+ A { "botimes from { a } to { b } x" }
+ B { @Math { botimes from { a } to { b } x } }
+ C { @M { botimes from { a } to { b } x } }
+ D { "boplus from { a } to { b } x" }
+ E { @Math { boplus from { a } to { b } x } }
+ F { @M { boplus from { a } to { b } x } }
+@Rowa
+ A { "buplus from { a } to { b } x" }
+ B { @Math { buplus from { a } to { b } x } }
+ C { @M { buplus from { a } to { b } x } }
+ D { "int from { a } to { b } x" }
+ E { @Math { int from { a } to { b } x } }
+ F { @M { int from { a } to { b } x } }
+@Rowa
+ A { "oint from { a } to { b } x" }
+ B { @Math { oint from { a } to { b } x } }
+ C { @M { oint from { a } to { b } x } }
+ mb { 0i }
+}
+All these symbols also have a @Code "limits" option; when set to
+@Code "yes" it causes the limits to be shown above and below the
+symbol, when @Code "no" it causes them to be shown as superscripts and
+subscripts, and when omitted it defaults to @Code "yes" in display style
+and @Code "no" otherwise, except for integrals, where the default is
+uniformly @Code "no" as required by mathematical convention.
+@PP
+The @Code "largeop" symbol causes an arbitrary object to be treated
+mathematics.largeop. @SubIndex { @Code "largeop" symbol }
+largeop. @Index { @Code "largeop" symbol (mathematics) }
+options which work as described for the @Code "sum" symbol
+as a large operator:
+@ID {
+@Code @Verbatim { largeop symbol { diamond } from { a } to { b } x }
+|10ct
+@Math { largeop symbol { diamond } from { a } to { b } x }
+}
+In addition to {@Code "limits"}, {@Code "from"}, and {@Code "to"}
+options, @Code "largeop" has a @Code "symbol" option holding the
+object to be made into a large operator. In display style, this
+object is enlarged using the @Code "big" helper function.
+@End @SubSection
+
+@SubSection
+ @Title { Unary operator symbols }
+@Begin
+@LP
+This category mainly contains symbols that take one object on the right
+mathematics.unaryoperator. @SubIndex { unary operators }
+unaryoperator. @Index { unary operators (mathematics) }
+and transform it.
+@IL
+
+@LI {
+@Code "sqrt {x over y}"
+|7ct
+@Math { sqrt {x over y} }
+mathematics.sqrt. @SubIndex { @Code "sqrt" symbol }
+sqrt. @Index { @Code "sqrt" symbol (mathematics) }
+}
+
+@LI {
+@Code "3 root {x over y}"
+|7ct
+@Math { 3 root {x over y} }
+mathematics.root @SubIndex { @Code "root" symbol }
+root.mathematics @Index { @Code "root" symbol (mathematics) }
+}
+
+@LI {
+@Code @Verbatim { matrix atleft { ( } atright { ) } { x } }
+|7ct @Math { matrix atleft { ( } atright { ) } { x } }
+}
+
+@EL
+As usual, any object may appear to the left of {@Code "root"}.
+The @Code "matrix" symbol produces matrices, as explained in
+detail in Section {@NumberOf matrices}. Its following object
+must be enclosed in braces.
+@PP
+There are symbols which produce `matrices' with commonly needed
+@Code atleft and @Code atright options already set for you. Here are
+these symbols, on the left, with the equivalent @Code matrix symbol
+and, on the right, the result produced:
+@ID @Tbl
+ aformat { @Cell ml { 0i } @Code A | @Cell | @Cell @Code B |
+ @Cell | @Cell mr { 0i } C }
+{
+@Rowa
+ ma { 0i }
+ A { "pmatrix { M }" }
+ B { "matrix atleft { ( } atright { ) } { M }" }
+ C { @Math { pmatrix { M } }
+mathematics.pmatrix @SubIndex { @Code "pmatrix" symbol }
+pmatrix.mathematics @Index { @Code "pmatrix" symbol (mathematics) }
+}
+@Rowa
+ A { "bmatrix { M }" }
+ B { "matrix atleft { blbrack } atright { brbrack } { M }" }
+ C { @Math { bmatrix { M } }
+mathematics.bmatrix @SubIndex { @Code "bmatrix" symbol }
+bmatrix.mathematics @Index { @Code "bmatrix" symbol (mathematics) }
+}
+@Rowa
+ A { "brmatrix { M }" }
+ B { "matrix atleft { blbrace } atright { brbrace } { M }" }
+ C { @Math { brmatrix { M } }
+mathematics.brmatrix @SubIndex { @Code "brmatrix" symbol }
+brmatrix.mathematics @Index { @Code "brmatrix" symbol (mathematics) }
+}
+@Rowa
+ A { "fmatrix { M }" }
+ B { "matrix atleft { blfloor } atright { brfloor } { M }" }
+ C { @Math { fmatrix { M } }
+mathematics.fmatrix @SubIndex { @Code "fmatrix" symbol }
+fmatrix.mathematics @Index { @Code "fmatrix" symbol (mathematics) }
+}
+@Rowa
+ A { "cmatrix { M }" }
+ B { "matrix atleft { blceil } atright { brceil } { M }" }
+ C { @Math { cmatrix { M } }
+mathematics.cmatrix @SubIndex { @Code "cmatrix" symbol }
+cmatrix.mathematics @Index { @Code "cmatrix" symbol (mathematics) }
+}
+@Rowa
+ A { "amatrix { M }" }
+ B { "matrix atleft { blangle } atright { brangle } { M }" }
+ C { @Math { amatrix { M } }
+mathematics.amatrix @SubIndex { @Code "amatrix" symbol }
+amatrix.mathematics @Index { @Code "amatrix" symbol (mathematics) }
+}
+ mb { 0i }
+}
+These are very useful for getting large scaled delimiters around things
+that aren't necessarily matrices at all.
+@End @SubSection
+
+@SubSection
+ @Title { Binary operator symbols }
+@Begin
+@LP
+The symbols in this category take an object on the left and on
+mathematics.binary.operators. @SubIndex { binary operators }
+binary.operators. @Index { binary operators (mathematics) }
+the right. The first two produce built-up fractions:
+mathematics.over. @SubIndex { @Code "over" symbol }
+over. @Index { @Code "over" symbol (mathematics) }
+mathematics.frac @SubIndex { @Code "frac" symbol }
+frac.mathematics @Index { @Code "frac" symbol (mathematics) }
+@ID @Tbl
+ aformat { @Cell ml { 0i } indent { right } @Code A | @Cell B | @Cell |
+ @Cell indent { right } @Code C | @Cell mr { 0i } D }
+{
+@Rowa
+ ma { 0i }
+ A { "x over y" } B { @Math { x over y } }
+ C { "x frac y" } D { @Math { x frac y } }
+ mb { 0i }
+}
+The remaining binary operator symbols print the objects to the
+left and right separated by the operator with a medium-width
+space on each side. Most have precedence 80, but a few (those
+representing multiplication and division operations) have higher
+precedence in accordance with mathematical convention. Here is
+the full list of these operators:
+@ID @Tbl
+ mv { 0.5vx }
+ aformat { @Cell ml{0i} indent{right} w{@LCodeWidth} @Code A |
+ @Cell w {@ResultWidth} B |
+ @Cell indent {right} w {@CodeWidth} @Code C |
+ @Cell w {@ResultWidth} D |
+ @Cell indent {right} w {@CodeWidth} @Code E |
+ @Cell w {@ResultWidth} mr { 0i } F }
+{
+@Rowa
+ ma { 0i }
+ A { "x + y" } B { @Math { x + y } }
+ C { "x - y" } D { @Math { x - y } }
+ E { "x +- y" } F { @Math { x +- y } }
+@Rowa
+ A { "x -+ y" } B { @Math { x -+ y } }
+ C { "x setminus y" } D { @Math { x setminus y } }
+ E { "x cdot y" } F { @Math { x cdot y } }
+@Rowa
+ A { "x times y" } B { @Math { x times y } }
+ C { "x * y" } D { @Math { x * y } }
+ E { "x circ y" } F { @Math { x circ y } }
+@Rowa
+ A { "x div y" } B { @Math { x div y } }
+ C { "x cap y" } D { @Math { x cap y } }
+ E { "x cup y" } F { @Math { x cup y } }
+@Rowa
+ A { "x uplus y" } B { @Math { x uplus y } }
+ C { "x sqcap y" } D { @Math { x sqcap y } }
+ E { "x sqcup y" } F { @Math { x sqcup y } }
+@Rowa
+ A { "x triangleleft y" } B { @Math { x triangleleft y } }
+ C { "x triangleright y" } D { @Math { x triangleright y } }
+ E { "x wr y" } F { @Math { x wr y } }
+@Rowa
+ A { "x bigcirc y" } B { @Math { x bigcirc y } }
+ C { "x bigtriangleup y" } D { @Math { x bigtriangleup y } }
+ E { { 0.85 1.0 } @Scale "x bigtriangledown y" }
+ F { @Math { x bigtriangledown y } }
+@Rowa
+ A { "x vee y" } B { @Math { x vee y } }
+ C { "x wedge y" } D { @Math { x wedge y } }
+ E { "x oplus y" } F { @Math { x oplus y } }
+@Rowa
+ A { "x ominus y" } B { @Math { x ominus y } }
+ C { "x otimes y" } D { @Math { x otimes y } }
+ E { "x oslash y" } F { @Math { x oslash y } }
+@Rowa
+ A { "x odot y" } B { @Math { x odot y } }
+ C { "x dagger y" } D { @Math { x dagger y } }
+ E { "x daggerdbl y" } F { @Math { x daggerdbl y } }
+@Rowa
+ A { "x amalg y" } B { @Math { x amalg y } }
+ mb { 0i }
+}
+The @Code "bin" symbol causes an arbitrary object to be treated
+mathematics.bin @SubIndex { @Code "bin" symbol }
+bin.mathematics @Index { @Code "bin" symbol (mathematics) }
+as a binary operator:
+@ID {
+@Code @Verbatim { x bin op { diamond } y }
+|7ct
+@Math { x bin op { diamond } y }
+}
+The @Code "op" option following @Code "bin" contains the object
+to be treated as a binary operator; its two parameters precede
+and follow @Code "bin" as usual.
+@End @SubSection
+
+@SubSection
+ @Title { Relation symbols }
+@Begin
+@LP
+These symbols represent relations. They take an object on
+mathematics.relation. @SubIndex { relation symbols }
+relation.symbols. @Index { relation symbols (mathematics) }
+the left and on the right, and print them separated by the
+relation symbol, with a slightly wider space on each side than
+is used for binary operators. They have lower precedence than
+binary operators, in accordance with mathematical convention. Here
+is the full list of these relations:
+@ID @Tbl
+ mv { 0.5vx }
+ aformat { @Cell ml{0i} indent{right} w{@LCodeWidth} @Code A |
+ @Cell w {@ResultWidth} B |
+ @Cell indent {right} w {@CodeWidth} @Code C |
+ @Cell w {@ResultWidth} D |
+ @Cell indent {right} w {@CodeWidth} @Code E |
+ @Cell w {@ResultWidth} mr { 0i } F }
+{
+@Rowa
+ ma { 0i }
+ A { "x < y" } B { @Math { x < y } }
+ C { "x > y" } D { @Math { x > y } }
+ E { "x = y" } F { @Math { x = y } }
+@Rowa
+ A { "x <= y" } B { @Math { x <= y } }
+ C { "x prec y" } D { @Math { x prec y } }
+ E { "x preceq y" } F { @Math { x preceq y } }
+@Rowa
+ A { "x << y" } B { @Math { x << y } }
+ C { "x subset y" } D { @Math { x subset y } }
+ E { "x subseteq y" } F { @Math { x subseteq y } }
+@Rowa
+ A { "x sqsubseteq y" } B { @Math { x sqsubseteq y } }
+ C { "x in y" } D { @Math { x in y } }
+ E { "x vdash y" } F { @Math { x vdash y } }
+@Rowa
+ A { "x smile y" } B { @Math { x smile y } }
+ C { "x frown y" } D { @Math { x frown y } }
+ E { "x >= y" } F { @Math { x >= y } }
+@Rowa
+ A { "x succ y" } B { @Math { x succ y } }
+ C { "x succeq y" } D { @Math { x succeq y } }
+ E { "x >> y" } F { @Math { x >> y } }
+@Rowa
+ A { "x supset y" } B { @Math { x supset y } }
+ C { "x supseteq y" } D { @Math { x supseteq y } }
+ E { "x sqsupseteq y" } F { @Math { x sqsupseteq y } }
+@Rowa
+ A { "x ni y" } B { @Math { x ni y } }
+ C { "x dashv y" } D { @Math { x dashv y } }
+ E { "x mid y" } F { @Math { x mid y } }
+@Rowa
+ A { "x parallel y" } B { @Math { x parallel y } }
+ C { "x == y" } D { @Math { x == y } }
+ E { "x ~ y" } F { @Math { x ~ y } }
+@Rowa
+ A { "x -~ y" } B { @Math { x -~ y } }
+ C { "x asymp y" } D { @Math { x asymp y } }
+ E { "x ~~ y" } F { @Math { x ~~ y } }
+@Rowa
+ A { "x =~ y" } B { @Math { x =~ y } }
+ C { "x bowtie y" } D { @Math { x bowtie y } }
+ E { "x propto y" } F { @Math { x propto y } }
+@Rowa
+ A { "x models y" } B { @Math { x models y } }
+ C { "x trieq y" } D { @Math { x trieq y } }
+ E { "x doteq y" } F { @Math { x doteq y } }
+@Rowa
+ A { "x perp y" } B { @Math { x perp y } }
+ C { "x notsub y" } D { @Math { x notsub y } }
+ E { "x notin y" } F { @Math { x notin y } }
+@Rowa
+ A { "x != y" } B { @Math { x != y } }
+ C { "x <-> y" } D { @Math { x <-> y } }
+ E { "x <-- y" } F { @Math { x <-- y } }
+@Rowa
+ A { "x --> y" } B { @Math { x --> y } }
+ C { "x up y" } D { @Math { x up y } }
+ E { "x down y" } F { @Math { x down y } }
+@Rowa
+ A { "x <=> y" } B { @Math { x <=> y } }
+ C { "x <== y" } D { @Math { x <== y } }
+ E { "x ==> y" } F { @Math { x ==> y } }
+@Rowa
+ A { "x dblup y" } B { @Math { x dblup y } }
+ C { "x dbldown y" } D { @Math { x dbldown y } }
+ E { "x : y" } F { @Math { x : y } }
+@Rowa
+ A { "x :: y" } B { @Math { x :: y } }
+ C { "x := y" } D { @Math { x := y } }
+ mb { 0i }
+}
+All of these symbols have a @Code "neg" option which, when set
+to {@Code "yes"}, causes a slash to overstrike the relation
+symbol:
+@ID {
+@Code @Verbatim { x ==> neg { yes } y }
+|7ct
+@Math { x ==> neg { yes } y }
+}
+The slash is horizontally centred over the relation symbol,
+which is not always best.
+@PP
+The @Code "rel" symbol causes an arbitrary object to be treated
+mathematics.rel @SubIndex { @Code "rel" symbol }
+rel.mathematics @Index { @Code "rel" symbol (mathematics) }
+as a relation:
+@ID {
+@Code @Verbatim { x rel op { diamond } y }
+|7ct
+@Math { x rel op { diamond } y }
+}
+The @Code "op" option following @Code "rel" contains the object
+to be treated as a relation; @Code "rel" also has the @Code "neg"
+option, plus the left and right parameters as usual.
+@End @SubSection
+
+@SubSection
+ @Title { Punctuation symbols }
+@Begin
+@LP
+These symbols represent punctuation. They take an object on
+mathematics.punctuation. @SubIndex { punctuation symbols }
+punctuation.mathematics @Index { punctuation symbols (mathematics) }
+the left and on the right, and print them separated by the
+punctuation symbol, with no space to the left and a thin
+space to the right. Here is the full list of these symbols:
+@ID @Tbl
+ aformat { @Cell ml{0i} indent{right} w{@LCodeWidth} @Code A |
+ @Cell w {@ResultWidth} B |
+ @Cell indent {right} w {@CodeWidth} @Code C |
+ @Cell w {@ResultWidth} D |
+ @Cell indent {right} w {@CodeWidth} @Code E |
+ @Cell w {@ResultWidth} mr { 0i } F }
+{
+@Rowa
+ ma { 0i }
+ A { "x ; y" } B { @Math { x ; y } }
+ C { "x , y" } D { @Math { x , y } }
+ E { "x col y" } F { @Math { x col y } }
+ mb { 0i }
+}
+The @Code "punct" symbol causes an arbitrary object to be treated
+mathematics.punct @SubIndex { @Code "punct" symbol }
+punct.mathematics @Index { @Code "punct" symbol (mathematics) }
+as punctuation:
+@ID {
+@Code @Verbatim { x punct symbol { diamond } y }
+|7ct
+@Math { x punct symbol { diamond } y }
+}
+The @Code "symbol" option following @Code "punct" contains the object
+to be treated as punctuation; its two parameters precede and follow
+@Code "punct" as usual.
+@End @SubSection
+
+@EndSubSections
+@End @Section
diff --git a/doc/user/mybook b/doc/user/mybook
new file mode 100644
index 0000000..e17cb7a
--- /dev/null
+++ b/doc/user/mybook
@@ -0,0 +1,540 @@
+###############################################################################
+# #
+# Lout setup file for books #
+# #
+# Jeffrey H. Kingston #
+# #
+###############################################################################
+
+
+###############################################################################
+# #
+# @SysInclude commands for standard packages. #
+# #
+###############################################################################
+
+ @SysInclude { langdefs } # language definitions
+ @SysInclude { bsf } # BasicSetup package
+ @SysInclude { dsf } # DocumentSetup package
+ @SysInclude { bookf } # BookSetup extension
+
+
+###############################################################################
+# #
+# @Include command for reading personal definitions from current directory. #
+# #
+###############################################################################
+
+ @Include { mydefs }
+
+###############################################################################
+# #
+# The @BasicSetup @Use clause - basics, lists, paragraphs, displays. #
+# #
+# To change the default value of any option, delete the # at the start of #
+# its line and change the value between braces. #
+# #
+###############################################################################
+
+@Use { @BasicSetup
+ # @InitialFont { Times Base 12p } # initial font
+ # @InitialBreak {{adjust 1.2fx hyphen} @OrIfPlain {ragged 1fx nohyphen}}
+ # @InitialOutdent { 2f @OrIfPlain 4s } # initial outdent
+ # @InitialSpace { lout } # initial space style
+ # @InitialLanguage { English } # initial language
+ # @InitialColour { black } # initial colour
+ # @InitialBackgroundColour { white } # initial background colour
+ # @OptimizePages { No } # optimize page breaks?
+ # @HeadingFont { Bold } # font for @Heading
+ # @FixedWidthFont { Courier Base -1p } # font for @F
+ # @ParaGap { 1.3vx @OrIfPlain 1f } # gap between paragraphs
+ # @ParaIndent { 2.00f @OrIfPlain 5s } # first-line indent for @PP
+ # @DisplayGap { 1.00v @OrIfPlain 1f } # gap above, below displays
+ # @DisplayIndent { 2.00f @OrIfPlain 5s } # @IndentedDisplay indent
+ # @DefaultIndent { 0.5rt } # @Display indent
+ # @DisplayNumStyle { (num) } # style of display numbers
+ # @WideIndent { 4.00f @OrIfPlain 10s } # @WideTaggedList indent
+ # @VeryWideIndent { 8.00f @OrIfPlain 20s } # @VeryWideTaggedList indent
+ # @ListOuterGap { 1.00v @OrIfPlain 1f } # gap before, after lists
+ # @ListGap { 1.00v @OrIfPlain 1f } # gap between list items
+ # @ListIndent { 0s } # indent of list items
+ # @ListRightIndent { 0s } # right indent of list items
+ # @ListLabelWidth { 2.00f @OrIfPlain 5s } # width allowed for list tags
+ # @ListLabelRight { No } # right-adjust list labels
+ # @ListLabelRightGap { 2s } # gap when right-adjusting
+ # @ListFont { } # font of list items
+ # @ListBreak { } # break style of list items
+ # @NumberSeparator { . } # separates nums like 2.3.7
+ # @CrossLinkFormat { @Body } # format of cross links
+ # @ExternalLinkFormat { @Body } # format of external links
+}
+
+
+###############################################################################
+# #
+# The @DocumentSetup @Use clause - page layout plus figures, tables, etc. #
+# #
+# To change the default value of any option, delete the # at the start of #
+# its line and change the value between braces. #
+# #
+###############################################################################
+
+@Use { @DocumentSetup
+ # @PageType { A4 @OrIfPlain Other} # page type (width, height)
+ # @PageWidth { 80s } # page width if type Other
+ # @PageHeight { 66f } # page height if type Other
+ # @PageOrientation { Portrait } # Portrait, Landscape, etc.
+ # @PageBackground { } # background of each page
+ # @TopMargin { 2.5c @OrIfPlain 6f } # top margin of all pages
+ # @FootMargin { 2.5c @OrIfPlain 6f } # bottom margin of all pages
+ # @OddLeftMargin { 2.5c @OrIfPlain 10s } # left margin of odd pages
+ # @OddRightMargin { 2.5c @OrIfPlain 10s } # right margin of odd pages
+ # @EvenLeftMargin { 2.5c @OrIfPlain 10s } # left margin of even pages
+ # @EvenRightMargin { 2.5c @OrIfPlain 10s } # right margin of even pages
+ # @OddLeftBodyMargin { 0c } # extra margin for page body
+ # @OddRightBodyMargin { 0c } # extra margin for page body
+ # @EvenLeftBodyMargin { 0c } # extra margin for page body
+ # @EvenRightBodyMargin{ 0c } # extra margin for page body
+ # @PageBoxType { None } # None Box CurveBox ShadowBox
+ # @PageBoxMargin { 1.00c } # page box margin
+ # @PageBoxLineWidth { } # page box line thickness
+ # @PageBoxPaint { none } # page box paint
+ # @PageBoxShadow { 0.60c } # shadow margin if ShadowBox
+ # @PageEnclose { @Body } # enclose every page in this
+ # @ColumnNumber { 1 } # number of columns (1 to 10)
+ # @ColumnGap { 1.00c @OrIfPlain 6s } # column gap
+
+ # @FigureLocation { PageTop } # default figure location
+ # @FigureFormat { @CC @Body } # default figure format
+ # @FigureWord { figure } # "Figure" word else anything
+ # @FigureNumbers { Arabic } # method of numbering figures
+ # @FigureCaptionPos { Below } # Above or Below
+ # @FigureCaptionFont { -2p } # figure caption font
+ # @FigureCaptionBreak { adjust hyphen 1.2fx } # figure caption break
+ # @FigureCaptionFormat{ {@B { word @NumSep number. &2s }} @Insert caption }
+ # @MakeFigureContents { No } # list of figures at start
+
+ # @TableLocation { PageTop } # default table location
+ # @TableFormat { @CC @Body } # default table format
+ # @TableWord { table } # "Table" word else anything
+ # @TableNumbers { Arabic } # method of numbering tables
+ # @TableCaptionPos { Below } # Above or Below
+ # @TableCaptionFont { -2p } # table caption font
+ # @TableCaptionBreak { adjust hyphen 1.2fx } # table caption break
+ # @TableCaptionFormat { {@B { word @NumSep number. &2s }} @Insert caption }
+ # @MakeTableContents { No } # list of tables at start
+
+ # @FloaterLocation { PageTop } # default floater location
+ # @FloaterFormat { @CC @Body } # default floater format
+ # @FloaterWord { floater } # "Floater" word else anything
+ # @FloaterNumbers { Arabic } # method of numbering floaters
+ # @FloaterCaptionPos { Below } # Above or Below
+ # @FloaterCaptionFont { -2p } # floater caption font
+ # @FloaterCaptionBreak{ adjust hyphen 1.2fx } # floater caption break
+ # @FloaterCaptionFormat{ {@B { word @NumSep number. &2s }} @Insert caption }
+ # @MakeFloaterContents{ No } # list of floaters at start
+
+ # @MakeContents { No } # make contents? Yes or No
+ @MakeContents { Yes } # make contents? Yes or No
+ # @ContentsGap { 0.20v @OrIfPlain 0f } # extra gap above minor entry
+ # @ContentsGapAbove { 0.80v @OrIfPlain 1f } # extra gap above major entry
+ # @ContentsGapBelow { 0.00v @OrIfPlain 0f } # extra gap below major entry
+ # @ContentsFont { Bold } # font for major entry
+ # @ContentsPartGapAbove { 1.00v @OrIfPlain 1f } # extra gap above `part' entry
+ # @ContentsPartGapBelow { 0.00v @OrIfPlain 0f } # extra gap below `part' entry
+ # @ContentsFormat { number @DotSep title } # contents entry format
+ # @ContentsLeader { .. } # leader symbol in contents
+ # @ContentsLeaderGap { 4s @OrIfPlain 2s } # gap between leaders
+ # @ContentsRightWidth { 3f @OrIfPlain 6s } # page numbers column width
+
+ # @MakeReferences { Yes } # make references? Yes or No
+ # @RefCiteStyle { [cite] } # citation style
+ # @RefCiteLabels { @RefNum } # citation items
+ # @RefNumbers { Arabic } # reference numbers
+ # @RefListFormat { Labels } # NoLabels, Labels, etc.
+ # @RefListLabels { [@RefNum] } # ref list label format
+ # @RefListTitle { references } # title of reference list
+ # @ChapRefListTitle { references } # title of chapter ref list
+ # @RefListIndent { 0s } # indent to left of labels
+ # @RefListRightIndent { 0s } # indent to right of items
+ # @RefListGap { @ListGap } # gap between ref list items
+ # @RefListFont { } # font used in reference list
+ # @RefListBreak { } # break style of ref list
+ # @RefListLabelWidth { @ListLabelWidth } # Labels column width
+ # @RefListSortKey { @Tag } # sorting key
+
+ # @MakeGlossary { No } # make glossary? Yes or No
+ # @GlossaryText { @Null } # glossary initial text
+ # @GlossaryFont { } # glossary entries font
+ # @GlossaryBreak { } # glossary entries break
+ # @GlossaryFormat { +3p @Font @S @Name # glossary entries format
+ # @Right @I { @Word&&page @PageNum }
+ # @DP @RawIndentedDisplay @Body }
+ # @GlossaryGap { @DisplayGap } # gap between glossary entries
+ # @GlossaryColumnNumber{ 2 } # glossary columns (1 to 10)
+ # @GlossaryColumnGap { 1.00c @OrIfPlain 6s } # glossary column gap
+ # @InGlossaryFont { smallcaps } # font for @InGlossary
+ # @InGlossaryFormat { @Body } # format for @InGlossary
+
+ # @MakeIndex { No } # make index? Yes or No
+ # @MakeIndex { No } # make index? Yes or No
+ @MakeIndex { Yes } # make index? Yes or No
+ # @IndexText { @Null } # index initial text
+ # @IndexFont { } # index entries font
+ # @IndexBreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break
+ # @IndexFormat { @Body } # @Index format
+ # @SubIndexFormat { {1f @Wide}@Body } # @SubIndex format
+ # @SubSubIndexFormat { {2f @Wide}@Body } # @SubSubIndex format
+ # @IndexTypeOrdinary { @PageNum } # Ordinary pagenum format
+ # @IndexTypeMain { @B @PageNum } # Main pagenum format
+ # @IndexTypeSpecial { @I @PageNum } # Special pagenum format
+ # @IndexRangeFormat { @From--@To } # index page range format
+ # @IndexColumnNumber { 2 } # index columns (1 to 10)
+ # @IndexColumnGap { 1.00c @OrIfPlain 6s } # index column gap
+ # @IndexCtd { Yes } # include (ctd.) lines
+ # @IndexCtdWord { continued } # "ctd." in current lang.
+ # @IndexCtdFormat { @Body @I (@CtdWord) } # format of ctd.
+ # @IndexSpacerAbove { 2v } # space above index spacer
+ # @IndexSpacerBelow { 1v } # space below index spacer
+ # @IndexSpacerFont { +3p } # font of index spacer
+ # @IndexSpacerFormat { @Body } # format of index spacer
+
+ # @MakeIndexA { No } # make index A? Yes or No
+ # @IndexAText { @Null } # index A initial text
+ # @IndexAFont { } # index A entries font
+ # @IndexABreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break
+ # @IndexAFormat { @Body } # @IndexA format
+ # @SubIndexAFormat { {1f @Wide}@Body } # @SubIndexA format
+ # @SubSubIndexAFormat { {2f @Wide}@Body } # @SubSubIndexA format
+ # @IndexATypeOrdinary { @PageNum } # Ordinary pagenum format
+ # @IndexATypeMain { @B @PageNum } # Main pagenum format
+ # @IndexATypeSpecial { @I @PageNum } # Special pagenum format
+ # @IndexARangeFormat { @From--@To } # index page range format
+ # @IndexAColumnNumber { 2 } # index A columns (1 to 10)
+ # @IndexAColumnGap { 1.00c @OrIfPlain 6s } # index A column gap
+ # @IndexACtd { Yes } # include (ctd.) lines
+ # @IndexACtdWord { continued } # "ctd." in current lang.
+ # @IndexACtdFormat { @Body @I (@CtdWord) } # format of ctd.
+ # @IndexASpacerAbove { 2v } # space above index A spacer
+ # @IndexASpacerBelow { 1v } # space below index A spacer
+ # @IndexASpacerFont { +3p } # font of index A spacer
+ # @IndexASpacerFormat { @Body } # format of index A spacer
+
+ # @MakeIndexB { No } # make index B? Yes or No
+ # @IndexBText { @Null } # index B initial text
+ # @IndexBFont { } # index B entries font
+ # @IndexBBreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break
+ # @IndexBFormat { @Body } # @IndexB format
+ # @SubIndexBFormat { {1f @Wide}@Body } # @SubIndexB format
+ # @SubSubIndexBFormat { {2f @Wide}@Body } # @SubSubIndexB format
+ # @IndexBTypeOrdinary { @PageNum } # Ordinary pagenum format
+ # @IndexBTypeMain { @B @PageNum } # Main pagenum format
+ # @IndexBTypeSpecial { @I @PageNum } # Special pagenum format
+ # @IndexBRangeFormat { @From--@To } # index page range format
+ # @IndexBColumnNumber { 2 } # index B columns (1 to 10)
+ # @IndexBColumnGap { 1.00c @OrIfPlain 6s } # index B column gap
+ # @IndexBCtd { Yes } # include (ctd.) lines
+ # @IndexBCtdWord { continued } # "ctd." in current lang.
+ # @IndexBCtdFormat { @Body @I (@CtdWord) } # format of ctd.
+ # @IndexBSpacerAbove { 2v } # space above index B spacer
+ # @IndexBSpacerBelow { 1v } # space below index B spacer
+ # @IndexBSpacerFont { +3p } # font of index B spacer
+ # @IndexBSpacerFormat { @Body } # format of index B spacer
+
+ # @MakeColophon { No } # make colophon? Yes or No
+ # @ColophonFont { } # font for colophon
+ # @ColophonBreak { } # break style for colophon
+ # @ColophonColumnNumber { 1 } # colophon columns (1 to 10)
+ # @ColophonColumnGap { 1.00c @OrIfPlain 6s } # colophon column gap
+
+ # @TopGap { 0.75c @OrIfPlain 2f } # gap between figures
+ # @MidGap { 0.75c @OrIfPlain 2f } # gap above/below body text
+
+ # @FootNoteNumbers { Arabic } # footnote numbers
+ # @FootNoteThrough { No } # numbered through chapter?
+ # @FootNoteLocation { ColFoot } # where the footnote appears
+ # @FootNoteFont { 0.80f } # font for footnotes
+ # @FootNoteBreak { 1.2fx @OrIfPlain 1fx } # break for footnotes
+ # @FootNoteFormat { { number &0.05f } @Insert body } # footnote format
+ # @FootLen { 2.00c @OrIfPlain 10s } # length of footnote line
+ # @FootAboveGap { @DisplayGap } # gap above footnote line
+ # @FootGap { 0.20c @OrIfPlain 1fx } # gap between footnotes
+ # @MarginNoteFont { 0.80f } # font of margin notes
+ # @MarginNoteBreak { ragged 1.10fx } # break style of margin notes
+ # @MarginNoteHGap { 0.5c } # horizontal gap to notes
+ # @MarginNoteVGap { @DisplayGap } # min vertical gap between
+ # @MarginNoteWidth { 1.50c } # width of margin notes
+ # @EndNoteNumbers { Arabic } # endnote numbers
+ # @EndNoteFont { 0.80f } # font of endnotes
+ # @EndNoteBreak { 1.2fx @OrIfPlain 1fx } # break for endnotes
+ # @EndNoteFormat { { number &0.05f } @Insert body } # endnote format
+ # @EndNoteGap { 0.20c @OrIfPlain 1f } # gap between endnotes
+
+ # @TheoremWord { theorem } # "Theorem" word, etc.
+ # @TheoremTitleFormat { (title) } # only if title present
+ # @TheoremFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @DefinitionWord { definition } # "Definition" word, etc.
+ # @DefinitionTitleFormat { (title) } # only if title present
+ # @DefinitionFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @ClaimWord { claim } # "Claim" word, etc.
+ # @ClaimTitleFormat { (title) } # only if title present
+ # @ClaimFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @PropositionWord { proposition } # "Proposition" word, etc.
+ # @PropositionTitleFormat { (title) } # only if title present
+ # @PropositionFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @LemmaWord { lemma } # "Lemma" word, etc.
+ # @LemmaTitleFormat { (title) } # only if title present
+ # @LemmaFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @CorollaryWord { corollary } # "Corollary" word, etc.
+ # @CorollaryTitleFormat { (title) } # only if title present
+ # @CorollaryFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @ExampleWord { example } # "Example" word, etc.
+ # @ExampleTitleFormat { (title) } # only if title present
+ # @ExampleFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @ProofWord { proof } # "Proof" word, etc.
+
+ # @PageHeaders { Simple } # None Simple Titles NoTitles
+ @PageHeaders { Titles } # None Simple Titles NoTitles
+ # @PageNumbers { Arabic } # page numbers
+ # @FirstPageNumber { 1 } # number of first page
+ # @IntroPageNumbers { Roman } # intro page numbers
+ # @IntroFirstPageNumber{ 1 } # number of first intro page
+ # @StructPageNums { No } # make structured page numbers
+ # @PageNumberFormat { number } # format of all page numbers
+
+ # @OddTop { @Centre{- @PageNum -} } # Simple page headers
+ # @OddFoot { @Null }
+ # @EvenTop { @Centre{- @PageNum -} }
+ # @EvenFoot { @Null }
+ # @StartOddTop { @Null }
+ # @StartOddFoot { @Null }
+ # @StartEvenTop { @Null }
+ # @StartEvenFoot { @Null }
+ # @IntroOddTop { @Null }
+ # @IntroOddFoot { @Centre @PageNum }
+ # @IntroEvenTop { @Null }
+ # @IntroEvenFoot { @Centre @PageNum }
+ # @IntroStartOddTop { @Null }
+ # @IntroStartOddFoot { @Null }
+ # @IntroStartEvenTop { @Null }
+ # @IntroStartEvenFoot { @Null }
+
+ # Titles, NoTitles headers
+ # @RunningOddTop { @I {@MinorNum @DotSep @MinorTitle} @Right @B @PageNum }
+ # @RunningOddFoot { @Null }
+ # @RunningEvenTop { @B @PageNum @Right @I {@MajorNum @DotSep @MajorTitle} }
+ # @RunningEvenFoot { @Null }
+ # @RunningStartOddTop { @Null }
+ # @RunningStartOddFoot { @Centre { Bold 0.8f } @Font @PageNum }
+ # @RunningStartEvenTop { @Null }
+ # @RunningStartEvenFoot { @Centre { Bold 0.8f } @Font @PageNum }
+ # @RunningIntroOddTop { @Null }
+ # @RunningIntroOddFoot { @Right @PageNum }
+ # @RunningIntroEvenTop { @Null }
+ # @RunningIntroEvenFoot { @PageNum }
+ # @RunningIntroStartOddTop { @Null }
+ # @RunningIntroStartOddFoot { @Null }
+ # @RunningIntroStartEvenTop { @Null }
+ # @RunningIntroStartEvenFoot { @Null }
+}
+
+
+###############################################################################
+# #
+# The @BookSetup @Use clause - options specific to books. #
+# #
+###############################################################################
+
+@Use { @BookSetup
+ # @TitlePageFont { Helvetica Base} # title page font (not size)
+ # @SeparateIntroNumbering { Yes } # separate intro page numbers
+ # @PrefaceAfterContents { No } # Yes or No
+ # @ChapterStartPages { Any } # Any, Odd, Even, SamePage
+ # @ReferencesBeforeAppendices { No } # references before appendices
+ # @PrefaceWord { preface } # word for "Preface"
+ # @ContentsWord { contents } # word for "Contents"
+ # @FigureListWord { figurelist } # word for "List of Figures"
+ # @TableListWord { tablelist } # word for "List of Tables"
+ # @FloaterListWord { floaterlist } # word for "List of Floaters"
+ # @IntroductionWord { introduction } # word for "Introduction"
+ # @AbbreviationsWord { abbreviations } # word for "Abbreviations"
+ # @ChapterWord { chapter } # word for "Chapter"
+ # @AppendixWord { appendix } # word for "Appendix"
+ # @GlossaryWord { glossary } # word for "Glossary"
+ # @IndexWord { index } # word for "Index"
+ # @IndexAWord { index } # word for "Index" (A)
+ # @IndexBWord { index } # word for "Index" (B)
+ # @ColophonWord { colophon } # word for "Colophon"
+ # @SubPrefaceNumbers { None } # kind of sub-preface numbers
+ # @FirstSubPrefaceNumber { 1 } # first sub-preface number (Arabic)
+ # @SubIntroductionNumbers { None } # kind of sub-introduction numbers
+ # @FirstSubIntroductionNumber { 1 } # first sub-introduction number
+ # @ChapterNumbers { Arabic } # kind of chapter numbers
+ # @FirstChapterNumber { 1 } # first chapter number (Arabic)
+ # @SectionNumbers { Arabic } # kind of section numbers
+ # @FirstSectionNumber { 1 } # first section number (Arabic)
+ # @SubSectionNumbers { Arabic } # kind of subsection numbers
+ # @FirstSubSectionNumber { 1 } # first subsect number (Arabic)
+ # @SubSubSectionNumbers { Arabic } # kind of sub-subs. numbers
+ # @FirstSubSubSectionNumber { 1 } # first sub-sub number (Arabic)
+ # @AppendixNumbers { UCAlpha } # kind of appendix numbers
+ # @FirstAppendixNumber { 1 } # first appendix num (Arabic)
+ # @SubAppendixNumbers { Arabic } # kind of subappendix numbers
+ # @FirstSubAppendixNumber { 1 } # first sub-app num (Arabic)
+ # @SubSubAppendixNumbers { Arabic } # kind of sub-subapp. numbers
+ # @FirstSubSubAppendixNumber { 1 } # first sub-sub num (Arabic)
+ # @PartHeadingFont { Helvetica Base 2.50f } # part head font
+ # @PartHeadingBreak { clines 1.2fx nohyphen } # part head break
+ # @PartHeadingFormat { @CD number @DP @CD title } # part head format
+ # @ChapterHeadingFont { Bold 2.00f } # chapter head font
+ # @ChapterHeadingBreak { ragged 1.2fx nohyphen } # chapter head break
+ # @ChapterHeadingFormat { number @DotSep title } # format of chap. head
+ # @SubPrefaceHeadingFont { Bold } # sub-preface head font
+ # @SubPrefaceHeadingBreak { ragged 1.2fx nohyphen } # sub-preface head break
+ # @SubPrefaceHeadingFormat { number @DotSep title } # format of s.-p. head
+ # @SubIntroductionHeadingFont { Bold } # sub-intro head font
+ # @SubIntroductionHeadingBreak { ragged 1.2fx nohyphen} # sub-intro head break
+ # @SubIntroductionHeadingFormat { number @DotSep title} # format of sub-intro. hd
+ # @SectionHeadingFont { Bold } # section head font
+ # @SectionHeadingBreak { ragged 1.2fx nohyphen } # section head break
+ # @SectionHeadingFormat { number @DotSep title } # section head fmt
+ # @SubSectionHeadingFont { Bold } # subs. head font
+ # @SubSectionHeadingBreak { ragged 1.2fx nohyphen } # subs. head break
+ # @SubSectionHeadingFormat { number @DotSep title } # subs. head fmt
+ # @SubSubSectionHeadingFont { Slope } # sub-subs. head font
+ # @SubSubSectionHeadingBreak { ragged 1.2fx nohyphen } # sub-subs. head break
+ # @SubSubSectionHeadingFormat { number @DotSep title } # sub-subs. head fmt
+ # @AppendixHeadingFont { Bold 2.00f } # appendix head font
+ # @AppendixHeadingBreak { ragged 1.2fx nohyphen } # appendix head break
+ # @AppendixHeadingFormat { number @DotSep title } # appendix head fmt
+ # @SubAppendixHeadingFont { Bold } # subapp. head font
+ # @SubAppendixHeadingBreak { ragged 1.2fx nohyphen } # subapp. head break
+ # @SubAppendixHeadingFormat { number @DotSep title } # subapp. head fmt
+ # @SubSubAppendixHeadingFont { Slope } # sub-suba. head font
+ # @SubSubAppendixHeadingBreak { ragged 1.2fx nohyphen } # sub-suba. head break
+ # @SubSubAppendixHeadingFormat{ number @DotSep title } # sub-suba. head fmt
+ # @AbovePartGap { 4.00f } # gap above part title
+ # @AboveChapterGap { 3.00f } # above major titles
+ # @SubPrefaceGap { 2.0v @OrIfPlain 3f } # between sub-prefaces
+ # @SubIntroductionGap { 2.0v @OrIfPlain 3f } # between sub-intros
+ # @SectionGap { 2.0v @OrIfPlain 3f } # between sections
+ # @SubSectionGap { 1.5v @OrIfPlain 2f } # between subsects
+ # @SubSubSectionGap { 1.5v @OrIfPlain 2f } # between sub-subs.
+ # @SubAppendixGap { 2.0v @OrIfPlain 3f } # between subappendices
+ # @SubSubAppendixGap { 1.5v @OrIfPlain 2f } # between sub-subapps
+ # @PrefaceInContents { Yes } # add preface to contents
+ # @SubPrefaceInContents { No } # add sub-preface to contents
+ # @AbbreviationsInContents { Yes } # add abbreviations to contents
+ # @IntroductionInContents { Yes } # add introduction to contents
+ # @SubIntroductionInContents { No } # add sub-intro to contents
+ # @PartInContents { Yes } # add parts to contents
+ # @ChapterInContents { Yes } # add chapters to contents
+ # @SectionInContents { Yes } # add sections to contents
+ @SubSectionInContents { No } # add subsections to contents
+ # @SubSubSectionInContents { No } # add sub-subsects to contents
+ # @AppendixInContents { Yes } # add appendices to contents
+ # @SubAppendixInContents { Yes } # add subappendices to contents
+ # @SubSubAppendixInContents { No } # add sub-subapps to contents
+ # @ReferencesInContents { Yes } # add ref. section to contents
+ # @GlossaryInContents { Yes } # add glossary to contents
+ # @IndexInContents { Yes } # add index to contents
+ # @IndexAInContents { Yes } # add index A to contents
+ # @IndexBInContents { Yes } # add index B to contents
+ # @ColophonInContents { Yes } # add colophon to contents
+ # @PrefaceContentsIndent { 0f } # indent in contents of preface
+ # @SubPrefaceContentsIndent { 3f } # indent in contents of sub-preface
+ # @AbbreviationsContentsIndent{ 0f } # indent in contents of abbreviations
+ # @IntroductionContentsIndent { 0f } # indent in contents of introduction
+ # @SubIntroductionContentsIndent { 3f } # indent in contents of sub-intro
+ # @PartContentsIndent { 0.5rt } # indent in contents of part (dft is ctr)
+ # @ChapterContentsIndent { 0f } # indent in contents of chapter
+ # @SectionContentsIndent { 3f } # indent in contents of section
+ # @SubSectionContentsIndent { 6f } # indent in contents of subsection
+ # @SubSubSectionContentsIndent{ 9f } # indent in contents of sub-subsection
+ # @AppendixContentsIndent { 0f } # indent in contents of appendix
+ # @SubAppendixContentsIndent { 3f } # indent in contents of sub-appendix
+ # @SubSubAppendixContentsIndent { 6f } # indent in contents of sub-subappendix
+ # @ReferencesContentsIndent { 0f } # indent in contents of references
+ # @GlossaryContentsIndent { 0f } # indent in contents of gloassary
+ # @IndexContentsIndent { 0f } # indent in contents of index
+ # @IndexAContentsIndent { 0f } # indent in contents of index A
+ # @IndexBContentsIndent { 0f } # indent in contents of index B
+ # @ColophonContentsIndent { 0f } # indent in contents of colophon
+ # @SubPrefaceNumInTheorems { No } # theorem num has sub-preface num
+ # @SubIntroductionNumInTheorems { No } # theorem num has sub-intro num
+ # @ChapterNumInTheorems { Yes } # theorem num has chapter num
+ # @SectionNumInTheorems { No } # theorem num has section num
+ # @SubSectionNumInTheorems { No } # theorem num has subsect num
+ # @SubSubSectionNumInTheorems { No } # theorem num has sub-ss. num
+ # @AppendixNumInTheorems { Yes } # theorem num has appendix num
+ # @SubAppendixNumInTheorems { No } # theorem num has sub-app num
+ # @SubSubAppendixNumInTheorems{ No } # theorem num has sub-sa. num
+ # @SubPrefaceNumInDisplays { No } # display num has sub-preface num
+ # @SubIntroductionNumInDisplays { No } # display num has sub-intro num
+ # @ChapterNumInDisplays { Yes } # display num has chapter num
+ # @SectionNumInDisplays { Yes } # display num has section num
+ # @SubSectionNumInDisplays { No } # display num has subsect num
+ # @SubSubSectionNumInDisplays { No } # display num has sub-ss. num
+ # @AppendixNumInDisplays { Yes } # display num has appendix num
+ # @SubAppendixNumInDisplays { Yes } # display num has sub-app num
+ # @SubSubAppendixNumInDisplays{ No } # display num has sub-sa. num
+ # @SubPrefaceNumInFigures { No } # figure num has sub-preface num
+ # @SubIntroductionumInFigures { No } # figure num has sub-intro num
+ # @ChapterNumInFigures { Yes } # figure num has chapter num
+ # @SectionNumInFigures { No } # figure num has section num
+ # @SubSectionNumInFigures { No } # figure num has subsect num
+ # @SubSubSectionNumInFigures { No } # figure num has sub-ss. num
+ # @AppendixNumInFigures { Yes } # figure num has appendix num
+ # @SubAppendixNumInFigures { No } # figure num has sub-app num
+ # @SubSubAppendixNumInFigures { No } # figure num has sub-sa. num
+ # @SubPrefaceNumInTables { No } # table num has sub-preface num
+ # @SubIntroductionumInTables { No } # table num has sub-intro num
+ # @ChapterNumInTables { Yes } # table num has chapter num
+ # @SectionNumInTables { No } # table num has section num
+ # @SubSectionNumInTables { No } # table num has subsect num
+ # @SubSubSectionNumInTables { No } # table num has sub-ss. num
+ # @AppendixNumInTables { Yes } # table num has appendix num
+ # @SubAppendixNumInTables { No } # table num has sub-app num
+ # @SubSubAppendixNumInTables { No } # table num has sub-sa. num
+ # @SubPrefaceNumInFloaters { No } # floater num has sub-preface num
+ # @SubIntroductionumInFloaters{ No } # floater num has sub-intro num
+ # @ChapterNumInFloaters { Yes } # floater num has chapter num
+ # @SectionNumInFloaters { No } # floater num has section num
+ # @SubSectionNumInFloaters { No } # floater num has subsect num
+ # @SubSubSectionNumInFloaters { No } # floater num has sub-ss. num
+ # @AppendixNumInFloaters { Yes } # floater num has appendix num
+ # @SubAppendixNumInFloaters { No } # floater num has sub-app num
+ # @SubSubAppendixNumInFloaters{ No } # floater num has sub-sa. num
+ # @SubPrefaceNumInRunners { No } # runners have sub-preface num
+ # @SubIntroductionNumInRunners { No } # runners have sub-intro num
+ # @SectionNumInRunners { Yes } # runners have section num
+ # @SubSectionNumInRunners { No } # runners have subsect num
+ # @SubSubSectionNumInRunners { No } # runners have sub-ss. num
+ # @SubAppendixNumInRunners { Yes } # runners have sub-app num
+ # @SubSubAppendixNumInRunners { No } # runners have sub-sa. num
+ # @PrefacePrefix { } # for structured page nums
+ # @ContentsPrefix { } # for structured page nums
+ # @FigureContentsPrefix { } # for structured page nums
+ # @TableContentsPrefix { } # for structured page nums
+ # @FloaterContentsPrefix { } # for structured page nums
+ # @AbbreviationsPrefix { } # for structured page nums
+ # @IntroductionPrefix { } # for structured page nums
+ # @ChapterPrefix { } # for structured page nums
+ # @AppendixPrefix { } # for structured page nums
+ # @ReferencesPrefix { } # for structured page nums
+ # @GlossaryPrefix { } # for structured page nums
+ # @IndexPrefix { } # for structured page nums
+ # @IndexAPrefix { } # for structured page nums
+ # @IndexBPrefix { } # for structured page nums
+ # @ColophonPrefix { } # for structured page nums
+}
+
+
+###############################################################################
+# #
+# @Database (and @SysDatabase) clauses go here. #
+# #
+###############################################################################
+
+@SysDatabase @FontDef { fontdefs } # font definitions
+@SysDatabase @RefStyle { refstyle } # reference printing styles
diff --git a/doc/user/mydefs b/doc/user/mydefs
index 6a74278..1ec1678 100644
--- a/doc/user/mydefs
+++ b/doc/user/mydefs
@@ -107,18 +107,22 @@
}
}
- import @Eq
+ import @Math
def epi { p sub i ` log sub 2 ` p sub i }
- import @Eq
+ import @Math
def ep right x { p sub x ` log sub 2 ` p sub x }
- def @Dbl left x right y
- { 1.95i @Wide
- { 1.25i @Wide { |1rt @Code x } |0.2i @Eq {non y} }
- }
+# def @Dbl left x right y
+# { 1.95i @Wide
+# { 1.25i @Wide { |1rt @Code x } |0.2i @Eq {non y} }
+# }
- import @Eq
+ def @LCodeWidth { 3.5c }
+ def @CodeWidth { 4.0c }
+ def @ResultWidth { 1.6c }
+
+ import @Math
def @ExA { 1 over sqrt { 1 - 4 x sup 2 } }
def @@Diag { @Code "@Diag" }
diff --git a/doc/user/preface b/doc/user/preface
index 09e54bf..b3face6 100644
--- a/doc/user/preface
+++ b/doc/user/preface
@@ -18,7 +18,7 @@ gnu. @Index { GNU Public License }
primary source is directory
@ID @Code "ftp://ftp.it.usyd.edu.au/jeff/lout"
containing a gzipped tar file of the current version
-(currently {@Code "lout-3.36.tar.gz"}), and various other things including
+(currently {@Code "lout-3.37.tar.gz"}), and various other things including
a PostScript version of this guide. The distribution contains source code,
libraries, documentation, license, and installation instructions.
@PP
@@ -27,7 +27,8 @@ Lout. To subscribe (or unsubscribe), visit
@ID @Code "http://lists.planix.com/mailman/options.cgi/lout-users/"
After subscribing, to post an item send email to
{@Code "lout-users@lists.planix.com"}; it will be forwarded to all
-subscribers via email.
+subscribers via email. There is also a Lout web
+site at {@Code "http://lout.wiki.sourceforge.net/"}.
@PP
Lout began in 1984 as a research project into the design of a high-level
language for document formatting. At that time my name for the subject
diff --git a/doc/user/prg b/doc/user/prg
index 8643d6b..11d4b7d 100644
--- a/doc/user/prg
+++ b/doc/user/prg
@@ -6,29 +6,10 @@
This chapter describes how to typeset computer program text using Lout
programs. @Index { programs }
computer.programs. @RawIndex { computer programs @I see programs }
-in conjunction with the @Code prg2lout
+along with the @Code prg2lout
prg2lout. @Index { @Code prg2lout filter program }
filter program, which is always installed wherever Lout is.
-# @FootNote {
-# Prior to Version 3.18 of Lout, this chapter described how to typeset
-# programs written in the C programming language using the
-# @Code c2lout filter, and Eiffel programs using the @Code eif2lout
-# filter. These have now been withdrawn and replaced by {@Code prg2lout},
-# which handles multiple languages. Ordinary Lout documents require no
-# modifications as a result of this change.
-# }
-@PP
-It is possible to simply print out one or more program files independently
-of any document. Alternatively, the program text may be printed as part of
-a larger Lout document. Either way, Lout does not lay out the programs in
-the sense of choosing line breaks and indenting; it uses whatever line
-breaks and indenting you give to the program. What Lout does do is cope
-with characters in the program text that it would ordinarily either reject
-or interpret in some way (braces and so on), ensuring that you can include
-program texts with absolutely no modifications; plus, if you wish, Lout
-will print keywords in bold, identifiers in italics, add line numbers, etc.
-@PP
-At the time of writing, the available programming languages are:
+The available languages are:
blue. @Index { Blue program printing }
c. @Index { C and C++ program printing }
eiffel. @Index { Eiffel program printing }
@@ -127,12 +108,29 @@ way to make comments. Whenever we mention C from now on, we mean
both C and C++. See Section {@NumberOf prg_perl} for more on Perl
and its handmaiden Pod. The second to fifth columns of this table will be
explained at various points later in this chapter.
+# @FootNote {
+# Prior to Version 3.18 of Lout, this chapter described how to typeset
+# programs written in the C programming language using the
+# @Code c2lout filter, and Eiffel programs using the @Code eif2lout
+# filter. These have now been withdrawn and replaced by {@Code prg2lout},
+# which handles multiple languages. Ordinary Lout documents require no
+# modifications as a result of this change.
+# }
+@PP
+It is possible to simply print out one or more program files independently
+of any document. Alternatively, the program text may be printed as part of
+a larger Lout document. Either way, Lout does not lay out the programs in
+the sense of choosing line breaks and indenting; it uses whatever line
+breaks and indenting you give to the program. What Lout does do is cope
+with characters in the program text that it would ordinarily either reject
+or interpret in some way (braces and so on), ensuring that you can include
+program texts with absolutely no modifications; plus, if you wish, Lout
+will print keywords in bold, identifiers in italics, add line numbers, etc.
@PP
-The list of languages is likely to expand, because the @Code "prg2lout"
-program has been designed to make it relatively easy to add new languages
-(you don't have to write executable code, just declare a lot of records
-describing your language). Consult the instructions at the top of the
-source file of that program ({@I prg2lout.c}) if you want to try it yourself.
+It is relatively easy to add new languages, since you don't have to write
+executable code, just declare a lot of records describing your language.
+Consult the instructions at the top of file {@I prg2lout.c} if you want
+to try it yourself.
@BeginSections
@Include { prg_lone }
@Include { prg_embe }
diff --git a/doc/user/prg_embe b/doc/user/prg_embe
index 37a5dd2..3228426 100644
--- a/doc/user/prg_embe
+++ b/doc/user/prg_embe
@@ -9,9 +9,6 @@ appropriate to your language, like this:
@ID @OneRow @Code {
"@SysInclude { cprint }"
"@SysInclude { doc }"
-"@Doc @Text @Begin"
-"..."
-"@End @Text"
}
The @Code cprint setup file includes everything needed to set up for C
program formatting; for the other languages, consult the second column
@@ -24,8 +21,7 @@ this for the C language:
@IndentedDisplay @CP {
#include <stdio.h>
-treeprint(p) /* print tree p recursively */
-struct tnode *p;
+treeprint(struct tnode *p) /* print tree p recursively */
{
if (p != NULL) {
treeprint(p->left);
@@ -42,8 +38,7 @@ modifications. The result is
@ID @OneRow @CP {
#include <stdio.h>
-treeprint(p) /* print tree p recursively */
-struct tnode *p;
+treeprint(struct tnode *p) /* print tree p recursively */
{
if (p != NULL) {
treeprint(p->left);
@@ -56,9 +51,21 @@ We have chosen to use the @Code "@IndentedDisplay" symbol from Section
{@NumberOf displays} to obtain an indented display, but in fact
{@Code "@CP"}, {@Code "@Eiffel"} and the rest may appear anywhere at
all: the result is an object in the usual way, which may go
-anywhere. When including a program text within a paragraph, use
-@Code "@OneCol @CP { ... }" (or @Code "@OneCol @Eiffel { ... }" etc. for
-other languages) to prevent it being broken across two lines, if desired.
+anywhere.
+@PP
+It is quite normal to include fragments of programs, particularly
+identifiers, within paragraphs; this is done in the obvious way:
+@ID @OneRow @Code @Verbatim {
+Calling @CP { remove_cooling_rods() } without checking @CP { temp } first
+is not recommended since it may cause the reactor to melt down.
+}
+Use @Code "@OneCol @CP { ... }" (or @Code "@OneCol @Eiffel { ... }" etc. for
+other languages) to prevent the program text being broken across two lines,
+if desired. Hyphenation is on by default in computer programs; however,
+the current language is changed from @Code English or whatever to
+{@Code Programming}, whose hyhenation rules permit hyphenation after
+an underscore character or between a preceding lower-case letter
+and a following upper-case letter, but not elsewhere.
@PP
In cases where the program text has unbalanced braces, it is necessary to
programs. @RawIndex { programs }
@@ -77,8 +84,8 @@ simply add one @Code "@SysInclude" line for each of them and proceed
as before. If your programming language is not currently supported,
a viable alternative is
@ID @Code "@F @Verbatim { ... }"
-These symbols cause the text between braces to be set verbatim in
-a fixed-width font, as explained elsewhere in this guide. This fallback
+This causes the text between braces to be set verbatim in
+a fixed-width font, as explained elsewhere in this guide. This
method will not handle tab and formfeed characters very well. Again,
use @Code "@Verbatim @Begin ... @End @Verbatim" if your program text
contains unbalanced braces.
diff --git a/doc/user/prg_lone b/doc/user/prg_lone
index 06bc497..dfce1de 100644
--- a/doc/user/prg_lone
+++ b/doc/user/prg_lone
@@ -3,31 +3,30 @@
@Tag { alone }
@Begin
@PP
-Printing of program files independently of any document is accomplished by
+Printing of program files independently of any document is done by
programs. @RawIndex { programs }
programs.standalone @SubIndex { stand-alone }
standalone.programs @Index { stand-alone programs }
-the following Unix pipeline:
+the Unix pipeline
@ID @Code "prg2lout -l language options files | lout -s > out.ps"
where @Code language stands for any one of the programming language
names in the first column of the table above. As usual with Lout, the
output will be a PostScript file. Each input file will begin on a new
-page of the output, starting with its name in bold type. The options
-provide control over the final appearance, as follows:
+page of the output, starting with its name in bold type. The @Code options
+are
@WideTaggedList
@TI { {@Code-p}{@I style} } {
-Select a printing style. Your choices are {@Code -pfixed},
-{@Code -pvarying}, and {@Code -psymbol}, with the default value
-varying with the language as given in the fourth column of the
-table above. Consult Section {@NumberOf embedded} for examples
-of these styles.
+Select a printing style (Section {@NumberOf embedded}), either
+{@Code -pfixed}, {@Code -pvarying}, or {@Code -psymbol}. The default
+value varies with the language, as shown in the fourth column of the
+table above.
}
@TI { @Code -n } {
Do not print file names.
}
@TI { {@Code -f}{@I font} } {
-Select a Lout font family. The default is @Code "-fCourier" for
-{@Code -pfixed}, and @Code "-fTimes" for @Code -pvarying and {@Code -psymbol}.
+Select a font family. The default is @Code "-fCourier" for
+{@Code -pfixed}, and @Code "-fTimes" otherwise.
}
@TI { {@Code -v}{@I vsize} } {
Select an inter-line spacing size in Lout units. The default is
@@ -41,7 +40,7 @@ to represent a blank line is to be reduced. The default is @Code { 1.0 },
meaning no reduction.
}
@TI { {@Code -L}{@I number} } {
-Add line numbers to the program print, starting with {@I number}, or
+Add line numbers to the print, starting with {@I number}, or
1 if {@I number} is omitted.
}
@TI { {@Code -N} } {
diff --git a/doc/user/prg_opti b/doc/user/prg_opti
index 6ae4e05..733126b 100644
--- a/doc/user/prg_opti
+++ b/doc/user/prg_opti
@@ -31,9 +31,7 @@ section was in @Code fixed style; we can switch styles like this:
style { varying }
{
#include <stdio.h>
-
-treeprint(p) /* print tree p recursively */
-struct tnode *p;
+treeprint(struct tnode *p) /* print tree p recursively */
{
if (p != NULL) {
treeprint(p->left);
@@ -47,9 +45,7 @@ The result in this case will be
@ID @OneRow @CP style { varying }
{
#include <stdio.h>
-
-treeprint(p) /* print tree p recursively */
-struct tnode *p;
+treeprint(struct tnode *p) /* print tree p recursively */
{
if (p != NULL) {
treeprint(p->left);
@@ -62,9 +58,7 @@ If we use @Code "style { symbol }" we get this:
@ID @OneRow @CP style { symbol }
{
#include <stdio.h>
-
-treeprint(p) /* print tree p recursively */
-struct tnode *p;
+treeprint(struct tnode *p) /* print tree p recursively */
{
if (p != NULL) {
treeprint(p->left);
@@ -121,9 +115,8 @@ receive line numbers or not. It has three acceptable values: {@Code "Yes"},
the default value, meaning that blank lines are printed with line numbers,
just like other lines; {@Code No}, meaning that blank lines are not
assigned line numbers; and {@Code NoPrint}, meaning that blank lines
-are assigned line numbers but these numbers are not printed, so that
-the line numbers printed before and after a single blank line will
-differ by 2.
+are assigned line numbers but these are not printed, so that the line
+numbers printed before and after a blank line will differ by 2.
@PP
The {@Code "style"} option is already familiar. Next comes {@Code "font"},
which determines the font family to use, {@Code "size"},
diff --git a/doc/user/str_colu b/doc/user/str_colu
index dc50194..84e1a4c 100644
--- a/doc/user/str_colu
+++ b/doc/user/str_colu
@@ -23,7 +23,7 @@ value 1 as shown, and @Code "@ColumnGap" may be any length (Section
column.width @RawIndex { column width }
column.width.in.pages @SubIndex { in pages }
using the obvious formula
-@ID @Eq { columnwidth = { pagewidth - margins -
+@ID @Math { columnwidth = { pagewidth - margins -
({@Code "@ColumnNumber"} - 1) times {@Code "@ColumnGap"} }
over @Code "@ColumnNumber"
}
diff --git a/doc/user/str_cont b/doc/user/str_cont
index 3a802ae..da1653c 100644
--- a/doc/user/str_cont
+++ b/doc/user/str_cont
@@ -20,14 +20,18 @@ a table of contents in any type of document.
Section @NumberOf setup describes setup files in general and how to
change the options within them. The options relevant to tables of
contents and their default values are:
-@ID @OneRow @Code {
-"@MakeContents { No }"
-"@ContentsGap { 0.20v }"
-"@ContentsGapAbove { 0.80v }"
-"@ContentsGapBelow { 0.00v }"
-"@ContentsLeader { .. }"
-"@ContentsLeaderGap { 4s }"
-"@ContentsRightWidth { 3f }"
+@ID @OneRow @Code @Verbatim {
+@MakeContents { No }
+@ContentsGap { 0.2v }
+@ContentsGapAbove { 0.8v }
+@ContentsGapBelow { 0.0v }
+@ContentsFont { Bold }
+@ContentsPartGapAbove { 1.0v }
+@ContentsPartGapBelow { 0.0v }
+@ContentsFormat { number @DotSep title }
+@ContentsLeader { .. }
+@ContentsLeaderGap { 4s }
+@ContentsRightWidth { 3f }
}
The @Code "@MakeContents" option may be @Code Yes or {@Code No}, and
makecontents. @Index @Code "@MakeContents"
@@ -39,7 +43,7 @@ file.
contentsgap. @Index @Code "@ContentsGap"
above each line of the table of contents, in addition to the usual
single line spacing; its value may be any length (Section
-{@NumberOf objects}). The default value, {@Code "0.20v"}, is twenty
+{@NumberOf objects}). The default value, {@Code "0.2v"}, is twenty
percent of the current inter-line spacing.
@PP
Some entries, such as those for chapters and appendices in books, are
@@ -48,7 +52,22 @@ entries; instead, @Code "@ContentsGapAbove" and @Code "@ContentsGapBelow"
contentsgapabove. @Index @Code "@ContentsGapAbove"
contentsgapbelow. @Index @Code "@ContentsGapBelow"
are used above and below each of them, again in addition to the usual
-single line spacing.
+single line spacing. @Code "@ContentsFont" also applies only to these
+`major entries', and determines their font. The default value causes
+them to appear in Bold.
+@PP
+@Code "@ContentsPartGapAbove" and @Code "@ContentsPartGapBelow" are
+like @Code "@ContentsGapAbove" and @Code "@ContentsGapBelow", except
+that they are used before and after contents entries that denote
+book parts.
+@PP
+@Code "@ContentsFormat" determines the format of each entry of
+contentsformat. @Index @Code "@ContentsFormat"
+the table of contents. Within it, @Code number stands for the
+number of the chapter, section, or whatever, and @Code title
+for its title. The default value, {@Code "number @DotSep title"},
+produces the number followed by a dot, two spaces, and the title,
+or just the title if there is no number.
@PP
@Code "@ContentsLeader" is the object which is repeated across the page
contentsleader. @Index @Code "@ContentsLeader"
diff --git a/doc/user/str_cros b/doc/user/str_cros
index 0d3f857..c9caaed 100644
--- a/doc/user/str_cros
+++ b/doc/user/str_cros
@@ -53,10 +53,10 @@ of the document. For example, the result for this document is
Cross referencing also applies to large-scale structure symbols such as
@Code "@Chapter" and @Code "@Section" (any symbol with a @Code "@Title"
option), as well as @Code { "@FootNote" }, @Code { "@EndNote" },
-@Code { "@Figure" }, @Code { "@Table" }, the numbered display
-symbols, and @Code "@ListItem" and @Code "@DropListItem" (but not
-@Code "@TagItem" and {@Code "@DropTagItem"}). Each of these symbols
-has a @Code "@Tag" option:
+@Code { "@Figure" }, @Code { "@Table" }, @Code { "@Floater" }, the
+numbered display symbols, and @Code "@ListItem" and @Code "@DropListItem"
+(but not @Code "@TagItem" and {@Code "@DropTagItem"}). Each of these
+symbols has a @Code "@Tag" option:
tag.option. @Index { @Code "@Tag" option }
@ID @OneRow @Code {
"@Section"
@@ -80,7 +80,10 @@ For further information on this point, please consult
Section @NumberOf cross (page @PageOf { cross }).
}
For symbols with a @Code "@Title" option (chapters, sections, etc.)
-there is also the @Code "@TitleOf" symbol:
+or a @Code "@Caption" option (@Code { "@Figure" }, @Code { "@Table" },
+and @Code { "@Floater" }) there is also the @Code "@TitleOf" symbol,
+titleof. @Index @Code "@TitleOf"
+which returns the value of the @Code "@Title" or @Code "@Caption" option:
@ID @OneRow @Code {
"For further information on this point, please consult"
"the @TitleOf { cross } section."
@@ -91,7 +94,15 @@ For further information on this point, please consult
the @TitleOf { cross } section.
}
But this symbol won't work for footnotes, list items, and other
-things without a title.
+things without a title or caption.
+@PP
+For those with more expertise in using Lout, there is a
+pageparityof. @Index @Code "@PageParityOf"
+@Code "@PageParityOf" symbol which is very similar to @Code "@PageOf"
+except that it returns one of the two words @Code "Odd" and @Code "Even"
+instead of a page number, indicating whether the object it references is
+printed on an odd or even page. For example, @Code "@PageParityOf cross"
+produces @Code {@PageParityOf cross}.
@PP
Like all tags, the value of the @Code "@Tag" option should be a simple
word (although Lout does accept multi-word tags). Cross referencing of
@@ -202,7 +213,7 @@ External links are obtained in much the same way as internal ones,
except that the symbol to use is @Code "@ExternalLink" and instead
of supplying a tag, you need to supply a URL:
@ID @Code {
-"\"http://snark.ptc.spbu.ru/~uwe/lout/lout.html\" @ExternalLink { Lout Home Page }"
+"\"http://lout.wiki.sourceforge.net/\" @ExternalLink { Lout Home Page }"
}
Once again the result is the object to the right, modified by any
@Code "@Format" option; and there is an {@Code "@ExternalLinkFormat"}
diff --git a/doc/user/str_theo b/doc/user/str_theo
index 5d85c37..672cd28 100644
--- a/doc/user/str_theo
+++ b/doc/user/str_theo
@@ -7,26 +7,26 @@ examples, and claims }
@PP
theorem. @Index @Code "@Theorem"
A theorem is created like this:
-@ID @OneRow @Code {
-"@LD @Theorem"
-" @Title { Fermat's Last Theorem }"
-"{"
-"@Eq { a sup n + b sup n != c sup n } for all positive integers @Eq { a },"
-"@Eq { b }, @Eq { c } and @Eq { n } when @Eq { n > 2 }."
-"@LP"
-"@Proof I have a proof of this theorem, but the margin"
-"is too small to contain it. @EndProof"
-"}"
+@ID @OneRow @Code @Verbatim {
+@LD @Theorem
+ @Title { Fermat's Last Theorem }
+{
+@M { a sup n + b sup n != c sup n } for all positive integers @M { a },
+@M { b }, @M { c } and @M { n } when @M { n > 2 }.
+@LP
+@Proof I have a proof of this theorem, but the margin
+is too small to contain it. @EndProof
+}
}
where we have used the @Code "@LD" `left display' symbol from
Section {@NumberOf displays} to get a left-justified display,
-and the @Code "@Eq" symbol from Chapter {@NumberOf equations}
+and the @Code "@M" symbol from Chapter {@NumberOf mathematics}
for the equations. The result is
@ID @Theorem
@Title { Fermat's Last Theorem }
{
-@Eq { a sup n + b sup n != c sup n } for all positive integers @Eq { a },
-@Eq { b }, @Eq { c } and @Eq { n } when @Eq { n > 2 }.
+@M { a sup n + b sup n != c sup n } for all positive integers @M { a },
+@M { b }, @M { c } and @M { n } when @M { n > 2 }.
@LP
@Proof I have a proof of this theorem, but the margin
is too small to contain it. @EndProof
diff --git a/doc/user/tbl b/doc/user/tbl
index 012f20e..7b374b3 100644
--- a/doc/user/tbl
+++ b/doc/user/tbl
@@ -17,12 +17,12 @@ tables. @Index { tables }
X { Value of mathematical formulae (millions of dollars) }
@Rowb
A { Quadratic formula }
- B { @Eq { x ^= { minus b +- sqrt { b sup 2 - 4ac } } over 2a } }
+ B { @M { x ^= { minus b +- sqrt { b sup 2 - 4ac } } over 2a } }
C { 3^.5 }
@Rowb
A { Binomial theorem }
- B { @Eq { ( a + b ) sup n ^= big sum from k=0 to infty
-matrix atleft { ( } atright { ) } { n above k } a sup k b sup n-k
+ B { @M { ( a + b ) sup n ^= sum from { k=0 } to { infty }
+pmatrix { row ccol n row ccol k } a sup k b sup n-k
} }
C { 12^ }
}
diff --git a/doc/user/typ_apdf b/doc/user/typ_apdf
index 531f9c9..232610c 100644
--- a/doc/user/typ_apdf
+++ b/doc/user/typ_apdf
@@ -25,4 +25,23 @@ the results are disappointing. The only way to get the best of everything
is to produce PostScript, and then either pass it through a `distillation'
program to produce PDF, or else view it with a PostScript viewer that
understands links.
+@PP
+When generating PostScript for subsequent distillation to PDF, the
+docinfo. @Index @Code "@DocInfo"
+@Code "@DocInfo" symbol may be useful. Placed anywhere in the
+document, it generates PostScript which causes the subsequent PDF to
+contain a `document info dictionary' containing the author of the
+document, its title, and some keywords:
+@ID @Code @Verbatim {
+@DocInfo
+ author { Jeffrey H. Kingston }
+ title { A User's Guide to the Lout Document Formatting System }
+ keywords { Lout, PostScript, PDF }
+}
+The values of the options are restricted to sequences of simple words,
+as shown, since this is all that PDF document info dictionaries may
+contain. All three options are optional; if one is omitted, the
+dictionary will simply not have the corresponding entry, which is
+legal in PDF. There is no way to have the author and title taken
+automatically from @Code "@Author" and @Code "@Title" options.
@End @Section
diff --git a/doc/user/typ_book b/doc/user/typ_book
index c62885e..0f46a47 100644
--- a/doc/user/typ_book
+++ b/doc/user/typ_book
@@ -209,7 +209,22 @@ No @Code "@BeginChapters" or @Code "@EndChapters" symbols are
beginchapters. @Index @Code "@BeginChapters"
endchapters. @Index @Code "@EndChapters"
needed, because these chapters are not inside any other large-scale
-structure symbol. Within a chapter, there may be a sequence of sections,
+structure symbol.
+@PP
+In addition to all the usual options for large-scale structure symbols,
+@Code "@Chapter" offers {@Code "@BypassWord"}, which may be used to
+replace the `Chapter' word for this chapter only. For example,
+@ID @OneRow @Code {
+"@Chapter"
+" @BypassWord { Appendix }"
+"..."
+}
+could be used to place (what appears to the reader to be) an Appendix
+at the end of a part, or indeed anywhere at all. The chapter numbers
+are not affected. To change this word in all chapters, the
+@Code "@ChapterWord" setup file option is preferred.
+@PP
+Within a chapter, there may be a sequence of sections,
each introduced by {@Code "@Section"}, all bracketed
section.books @SubIndex { in books }
by @Code "@BeginSections" and {@Code "@EndSections"}:
diff --git a/doc/user/typ_illu b/doc/user/typ_illu
index ec62140..80b66f3 100644
--- a/doc/user/typ_illu
+++ b/doc/user/typ_illu
@@ -44,6 +44,7 @@ with their default values:
" @InitialSpace { lout }"
" @InitialLanguage { English }"
" @InitialColour { black }"
+" @InitialBackgroundColour { white }"
"{"
" ..."
"}"
diff --git a/doc/user/typ_over b/doc/user/typ_over
index aced99c..8188422 100644
--- a/doc/user/typ_over
+++ b/doc/user/typ_over
@@ -221,6 +221,10 @@ are some of these options and their default values:
# @LectureNumbers { Arabic }
# @OverheadNumbers { Arabic }
# @TitlePageFont { Helvetica Base }
+ # @TitleFormat { @Center clines @Break title }
+ # @AuthorFormat { @Center clines @Break author }
+ # @InstitutionFormat { @Center clines @Break @I institution }
+ # @DateLineFormat { @Center date }
# @AboveTitleGap { 0.5i }
# @AboveAuthorGap { 1.0i }
# @AboveInstitutionGap { 0.5i }
@@ -242,7 +246,8 @@ produces `Contents' in the current language. @Code "@LectureNumbers"
and @Code "@OverheadNumbers" determine the style of numbering of lectures
and overheads, and may be {@Code None}, {@Code Arabic}, {@Code Roman},
{@Code UCRoman}, {@Code Alpha}, or {@Code UCAlpha} as usual. Next come
-options for setting the font of the overall title page, the gap
+options for setting the font of the overall title page, the format of
+the title, author, institution, and dateline parts of it, the gap
above the title, author, institution, and dateline that appear on that
page; then options controlling the appearance of the headings at the
start of each lecture and overhead, and finally options which determine
diff --git a/doc/user/typ_plai b/doc/user/typ_plai
index 8b5c327..00aa8b9 100644
--- a/doc/user/typ_plai
+++ b/doc/user/typ_plai
@@ -24,8 +24,8 @@ example, {@Code "@Bullet"} produces {@Code "o"}. However, the @Code "@Char"
and @Code "@Sym" symbols often produce unprintable characters, and are best
avoided; }
@LI { All font and size changes are ignored, since plain text has only
-one font and size. Every character is taken to be @Eq { 1 frac 10 } inch
-wide and @Eq { 1 frac 6 } inch high; }
+one font and size. Every character is taken to be @M { 1 frac 10 } inch
+wide and @M { 1 frac 6 } inch high; }
@LI { No underlines are printed; }
@LI { No margin notes are printed; }
@LI { Scaled objects are not printed unless the scale factor happens to be 1; }
@@ -43,9 +43,9 @@ The worst problem with plain text is that characters cannot be placed at
arbitrary points on the page. A superscript, for example, is impossible to
place correctly, so Lout uses a different layout for footnote labels (and
makes a mess of equations, which are best avoided). Because of this problem
-it's best to make all horizontal lengths multiples of @Eq {1 frac 10} inch
+it's best to make all horizontal lengths multiples of @M {1 frac 10} inch
(conveniently expressed as {@Code 1s}), and all vertical lengths multiples
-of @Eq { 1 frac 6 } inch (conveniently expressed as {@Code 1f}). To help
+of @M { 1 frac 6 } inch (conveniently expressed as {@Code 1f}). To help
you do this, the setup files contain many entries that look like this
example:
@ID @Code "# @InitialBreak { {adjust 1.2fx hyphen} @OrIfPlain {ragged 1fx nohyphen} }"
diff --git a/doc/user/vgra b/doc/user/vgra
index a4d173d..60b9b5b 100644
--- a/doc/user/vgra
+++ b/doc/user/vgra
@@ -1,11 +1,2 @@
-gvim gra
-gvim gra_intr
-gvim gra_over
-gvim gra_capt
-gvim gra_tick
-gvim gra_data
-gvim gra_plac
-gvim gra_func
-gvim gra_keys
-gvim gra_erro
-gvim gra_summ
+gvt gra gra_intr gra_over gra_capt gra_tick gra_data gra_plac gra_func \
+ gra_keys gra_erro gra_summ
diff --git a/doc/user/vmat b/doc/user/vmat
new file mode 100755
index 0000000..9241985
--- /dev/null
+++ b/doc/user/vmat
@@ -0,0 +1 @@
+gvt mat mat_intr mat_comm mat_matr mat_disp mat_defs mat_summ