summaryrefslogtreecommitdiffstats
path: root/contrib/groff/tmac
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/groff/tmac')
-rw-r--r--contrib/groff/tmac/Makefile.sub12
-rw-r--r--contrib/groff/tmac/README20
-rw-r--r--contrib/groff/tmac/X.tmac77
-rw-r--r--contrib/groff/tmac/Xps.tmac87
-rw-r--r--contrib/groff/tmac/an-old.tmac128
-rw-r--r--contrib/groff/tmac/andoc.tmac5
-rw-r--r--contrib/groff/tmac/cp1047.tmac105
-rw-r--r--contrib/groff/tmac/doc.tmac120
-rw-r--r--contrib/groff/tmac/dvi.tmac801
-rw-r--r--contrib/groff/tmac/e.tmac40
-rw-r--r--contrib/groff/tmac/ec.tmac57
-rw-r--r--contrib/groff/tmac/groff_man.man62
-rw-r--r--contrib/groff/tmac/groff_mdoc.man104
-rw-r--r--contrib/groff/tmac/groff_ms.man1103
-rw-r--r--contrib/groff/tmac/groff_trace.man546
-rw-r--r--contrib/groff/tmac/groff_www.man415
-rw-r--r--contrib/groff/tmac/html.tmac706
-rw-r--r--contrib/groff/tmac/hyphen.us21
-rw-r--r--contrib/groff/tmac/latin1.tmac196
-rw-r--r--contrib/groff/tmac/lbp.tmac4
-rw-r--r--contrib/groff/tmac/lj4.tmac17
-rw-r--r--contrib/groff/tmac/ps.tmac605
-rw-r--r--contrib/groff/tmac/psold.tmac2
-rw-r--r--contrib/groff/tmac/pspic.tmac146
-rw-r--r--contrib/groff/tmac/s.tmac132
-rw-r--r--contrib/groff/tmac/trace.tmac54
-rw-r--r--contrib/groff/tmac/troffrc-end10
-rw-r--r--contrib/groff/tmac/tty-char.tmac385
-rw-r--r--contrib/groff/tmac/tty.tmac104
-rw-r--r--contrib/groff/tmac/www.tmac626
30 files changed, 5609 insertions, 1081 deletions
diff --git a/contrib/groff/tmac/Makefile.sub b/contrib/groff/tmac/Makefile.sub
index 954e177..4bdea45 100644
--- a/contrib/groff/tmac/Makefile.sub
+++ b/contrib/groff/tmac/Makefile.sub
@@ -1,11 +1,10 @@
-MAN5=\
- groff_tmac.n
MAN7=\
groff_ms.n \
groff_man.n \
groff_me.n \
groff_mdoc.n \
- groff_mwww.n
+ groff_trace.n \
+ groff_www.n
NORMALFILES=\
mandoc.tmac andoc.tmac an-old.tmac \
@@ -13,14 +12,17 @@ NORMALFILES=\
mdoc.tmac \
pic.tmac \
a4.tmac \
+ ec.tmac \
safer.tmac \
trace.tmac \
ps.tmac psold.tmac pspic.tmac psatk.tmac \
dvi.tmac \
- tty.tmac tty-char.tmac latin1.tmac \
+ tty.tmac tty-char.tmac \
+ latin1.tmac cp1047.tmac \
X.tmac Xps.tmac \
lj4.tmac \
- html.tmac mwww.tmac www.tmac \
+ lbp.tmac \
+ html.tmac www.tmac \
eqnrc \
troffrc troffrc-end \
hyphen.us
diff --git a/contrib/groff/tmac/README b/contrib/groff/tmac/README
new file mode 100644
index 0000000..9821534
--- /dev/null
+++ b/contrib/groff/tmac/README
@@ -0,0 +1,20 @@
+The file `hyphen.us' is identical to the file `hyphen.tex', part of the TeX
+system written by Donald E. Knuth; the master file can be found at
+
+ ftp://labrea.stanford.edu/pub/tex/dist/lib/hyphen.tex .
+
+It has been renamed for consistency, i.e., to make patterns available under
+the filenames `hyphen.<language>', e.g. `hyphen.de' or `hyphen.uk'.
+
+From the file ftp://labrea.stanford.edu/tex/README; `hyphen.tex' is also in
+this directory:
+
+ The files in this directory are master files maintained personally by
+ Donald E. Knuth. Nobody else is authorized to make any changes whatever
+ to them! If you modify the files for any purpose, you must give your
+ files a different name, so that installations of TeX throughout the
+ world will be 100% compatible when they use the official source files.
+
+ All of the files here are available for anonymous FTP by anyone and may
+ be freely redistributed. Some are copyrighted; see the files themselves
+ for more details.
diff --git a/contrib/groff/tmac/X.tmac b/contrib/groff/tmac/X.tmac
index 464770c..8b9a1ba 100644
--- a/contrib/groff/tmac/X.tmac
+++ b/contrib/groff/tmac/X.tmac
@@ -10,39 +10,48 @@
.ftr HO HI
.ftr HX HBI
.ftr NX NBI
-.char \(ru \D'l .5m 0'
-.char \(ul \v'.25m'\D'l .5m 0'\v'-.25m'
-.char \(br \v'.25m'\D'l 0 -1m'\v'.75m'
-.char \(rn \v'-.75m'\D'l .5m 0'\v'.75m'
-.char ~ \v'-.55m'\\s[\\n(.s/2u]\v'.2m'\(ti\v'-.2m'\s0\v'.55m'
-.char ^ \v'-.55m'\\s[\\n(.s/2u]\v'.3m'\(ha\v'-.3m'\s0\v'.55m'
-.if !c\(va .char \(va \o'\(ua\(da'
-.if !c\(em .char \(em --
-.if !c\(en .char \(en \-
-.if !c\(fi .char \(fi fi
-.if !c\(fl .char \(fl fl
-.if !c\(ff .char \(ff ff
-.if !c\(Fi .char \(Fi ffi
-.if !c\(Fl .char \(Fl ffl
-.if !c\(ci .char \(ci \v'-.25m'\h'.05m'\D'c .5m'\h'.05m'\v'.25m'
-.if !c\(sq .char \(sq \h'.05m'\D'l .5m 0'\D'l 0 -.5m'\D'l -.5m 0'\D'l 0 .5m'\h'.55m'
-.if !c\(ga .char \(ga \Z'\v'-.7m'\D'l .22m .18m''\h'.33m'
-.if !c\(dg .char \(dg \Z'\h'.25m'\v'.15m'\D'l 0 -.8m'\v'.2m'\h'-.195m'\
+.char \[ru] \D'l .5m 0'
+.char \[ul] \v'.25m'\D'l .5m 0'\v'-.25m'
+.char \[br] \v'.25m'\D'l 0 -1m'\v'.75m'
+.char \[rn] \v'-.75m'\D'l .5m 0'\v'.75m'
+.char ~ \v'-.55m'\\s[\\n(.s/2u]\v'.2m'\[ti]\v'-.2m'\s0\v'.55m'
+.char ^ \v'-.55m'\\s[\\n(.s/2u]\v'.3m'\[ha]\v'-.3m'\s0\v'.55m'
+.fchar \[va] \o'\[ua]\[da]'
+.fchar \[em] --
+.fchar \[en] \-
+.fchar \[fi] fi
+.fchar \[fl] fl
+.fchar \[ff] ff
+.fchar \[Fi] ffi
+.fchar \[Fl] ffl
+.fchar \[ci] \v'-.25m'\h'.05m'\D'c .5m'\h'.05m'\v'.25m'
+.fchar \[sq] \h'.05m'\D'l .5m 0'\D'l 0 -.5m'\D'l -.5m 0'\D'l 0 .5m'\h'.55m'
+.fchar \[ga] \Z'\v'-.7m'\D'l .22m .18m''\h'.33m'
+.fchar \[dg] \Z'\h'.25m'\v'.15m'\D'l 0 -.8m'\v'.2m'\h'-.195m'\
\D'l .39m 0''\h'.5m'
-.if !c\(dd .char \(dd \Z'\h'.25m'\v'.15m'\D'l 0 -.8m'\v'.2m'\h'-.195m'\
+.fchar \[dd] \Z'\h'.25m'\v'.15m'\D'l 0 -.8m'\v'.2m'\h'-.195m'\
\D'l .39m 0'\v'.4m'\D'l -.39m 0''\h'.5m'
-.if !c\(lq .char \(lq ``
-.if !c\(rq .char \(rq ''
-.if !c\(Bq .char \(Bq ,,
-.if !c\(OE .char \(OE O\h'-.25m'E
-.if !c\(oe .char \(oe o\h'-.14m'e
-.if !c\(ah .char \(ah \v'-.55m'\s[\En[.s]/2u]v\s0\v'.55m'
-.if !c\(ao .char \(ao \v'-.55m'\s[\En[.s]*6u/10u]\D'c .25m'\s0\v'.55m'
-.if !c\(ho .char \(ho \s[\En[.s]/2u]\v'.4m'c\v'-.4m'\s0
-.if !c\(lh .tr \(lh\(lA
-.if !c\(rh .tr \(rh\(rA
-.if !c\(bq .tr \(bq,
-.if !c\(aq .tr \(aq'
-.if '\*(.T'X100' .char \[radicalex] \h'-\w'\(sr'u'\[radicalex]\h'\w'\(sr'u'
-.if !\n(_C .mso pspic.tmac
-.cp \n(_C
+.fchar \[lq] ``
+.fchar \[rq] ''
+.fchar \[Bq] ,,
+.fchar \[OE] O\h'-.25m'E
+.fchar \[oe] o\h'-.14m'e
+.fchar \[ah] \v'-.55m'\s[\En[.s]/2u]v\s0\v'.55m'
+.fchar \[ao] \v'-.55m'\s[\En[.s]*6u/10u]\D'c .25m'\s0\v'.55m'
+.fchar \[ho] \s[\En[.s]/2u]\v'.4m'c\v'-.4m'\s0
+.fchar \[lh] \[lA]
+.fchar \[rh] \[rA]
+.fchar \[bq] ,
+.fchar \[aq] '
+.if '\*[.T]'X100' \
+. char \[radicalex] \h'-\w'\[sr]'u'\[radicalex]\h'\w'\[sr]'u'
+.if !\n[_C] \
+. mso pspic.tmac
+.cp \n[_C]
+.
+.do ie '\[char97]'a' \
+. do mso latin1.tmac
+.el \
+. do mso cp1047.tmac
+.
+.\" make sure that no blank lines creep in at the end of this file.
diff --git a/contrib/groff/tmac/Xps.tmac b/contrib/groff/tmac/Xps.tmac
index ddb037a..1064ba6 100644
--- a/contrib/groff/tmac/Xps.tmac
+++ b/contrib/groff/tmac/Xps.tmac
@@ -4,43 +4,52 @@
.nr _C \n(.C
.cp 0
.de Xps-char
-.char \\$1 \Z"\X'ps: invis'\\$2\X'ps: endinvis'"\\$1
+. char \\$1 \Z"\X'ps: invis'\\$2\X'ps: endinvis'"\\$1
..
-.Xps-char \(bu \fS\(bu\fP
-.Xps-char \(em "\v'-.25m'\h'.05m'\D'l .9m 0'\h'.05m'"
-.Xps-char \(aq '
-.Xps-char \(bq ,
-.Xps-char \(Bq ,,
-.Xps-char \(lq ``
-.Xps-char \(rq ''
-.Xps-char \(OE OE
-.Xps-char \(oe oe
-.Xps-char \(Fn \fS\(Fn\fP
-.Xps-char \(vS \o'\(ahS'
-.Xps-char \(vs \o'\(ahs'
-.Xps-char \(vZ \o'\(ahZ'
-.Xps-char \(vz \o'\(ahz'
-.Xps-char \(/L \o'/L'
-.Xps-char \(/l \o'/l'
-.Xps-char \(:Y \o'\(adY'
-.Xps-char \(a" \(sd
-.Xps-char \(a. \v'-.6m'.
-.Xps-char \(ga "\Z'\v'-.7m'\D'l .22m .18m''\h'.33m'"
-.Xps-char \(ab \v'-.55m'\s'\\\\n(.s*6u/10u'u\s0
-.Xps-char \(ah \v'-.55m'\s[\En[.s]/2u]v\s0\v'.55m'
-.Xps-char \(ao "\v'-.55m'\s[\En[.s]*6u/10u]\D'c .25m'\s0\v'.55m'"
-.Xps-char \(ho \s[\En[.s]/2u]\v'.4m'c\v'-.4m'\s0
-.Xps-char \(.i i
-.Xps-char \(fo <
-.Xps-char \(fc >
-.Xps-char \(OK \s'\\\\n(.s*6u/10u'\e\s0/
-.Xps-char \(tm \v'-.3m'\s'\\\\n(.s*6u/10u'TM\s0\v'.3m'
-.Xps-char \(dd "\Z'\h'.25m'\v'.15m'\D'l 0 -.8m'\v'.2m'\h'-.195m'\
-\D'l .39m 0'\v'.4m'\D'l -.39m 0''\h'.5m'"
-.Xps-char \(dg "\Z'\h'.25m'\v'.15m'\D'l 0 -.8m'\v'.2m'\h'-.195m'\
-\D'l .39m 0''\h'.5m'"
-.Xps-char \(en \-
-.Xps-char \(%0 %\s'\\\\n(.s*6u/10u'\fI0\fP\s0
-.Xps-char \(lh \(->
-.Xps-char \(rh \(<-
-.cp \n(_C
+.
+.Xps-char \[bu] \f[S]\[bu]
+.Xps-char \[f/] \f[S]\[f/]
+.Xps-char \[em] "\v'-.25m'\h'.05m'\D'l .9m 0'"
+.Xps-char \[aq] '
+.Xps-char \[bq] ,
+.Xps-char \[Bq] ,,
+.Xps-char \[lq] ``
+.Xps-char \[rq] ''
+.Xps-char \[OE] OE
+.Xps-char \[oe] oe
+.Xps-char \[Fn] \f[S]\[Fn]
+.Xps-char \[vS] \o'\[ah]S'
+.Xps-char \[vs] \o'\[ah]s'
+.Xps-char \[vZ] \o'\[ah]Z'
+.Xps-char \[vz] \o'\[ah]z'
+.Xps-char \[/L] \o'/L'
+.Xps-char \[/l] \o'/l'
+.Xps-char \[:Y] \o'\[ad]Y'
+.Xps-char \[a"] \[sd]
+.Xps-char \[a.] \v'-.6m'.
+.Xps-char \[ga] "\Z'\v'-.7m'\D'l .22m .18m''"
+.Xps-char \[ab] \v'-.55m'\s[\En[.s]*6u/10u]u\s[0]
+.Xps-char \[ah] \v'-.55m'\s[\En[.s]/2u]v\s[0]
+.Xps-char \[ao] "\v'-.55m'\s[\En[.s]*6u/10u]\D'c .25m'\s[0]"
+.Xps-char \[ho] \s[\En[.s]/2u]\v'.4m'c\s[0]
+.Xps-char \[.i] i
+.Xps-char \[fo] <
+.Xps-char \[fc] >
+.Xps-char \[OK] \s[\En[.s]*6u/10u]\e\s[0]/
+.Xps-char \[tm] \v'-.3m'\s[\En[.s]*6u/10u]TM\s[0]
+.Xps-char \[dd] "\Z'\h'.25m'\v'.15m'\D'l 0 -.8m'\v'.2m'\h'-.195m'\
+\D'l .39m 0'\v'.4m'\D'l -.39m 0''"
+.Xps-char \[dg] "\Z'\h'.25m'\v'.15m'\D'l 0 -.8m'\v'.2m'\h'-.195m'\
+\D'l .39m 0''"
+.Xps-char \[en] \-
+.Xps-char \[%0] %\s[\En[.s]*6u/10u]\f[I]0
+.Xps-char \[lh] \[->]
+.Xps-char \[rh] \[<-]
+.cp \n[_C]
+.
+.do ie '\[char97]'a' \
+. do mso latin1.tmac
+.el \
+. do mso cp1047.tmac
+.
+.\" make sure that no blank lines creep in at the end of this file.
diff --git a/contrib/groff/tmac/an-old.tmac b/contrib/groff/tmac/an-old.tmac
index 1402e4d..3cee907 100644
--- a/contrib/groff/tmac/an-old.tmac
+++ b/contrib/groff/tmac/an-old.tmac
@@ -1,6 +1,7 @@
.\" an-old.tmac
.\"
-.\" Copyright (C) 1989, 1990, 1991, 1992, 2001 Free Software Foundation, Inc.
+.\" Copyright (C) 1989, 1990, 1991, 1992, 2001, 2002
+.\" Free Software Foundation, Inc.
.\" Written by James Clark (jjc@jclark.com)
.\"
.\" This file is part of groff.
@@ -30,16 +31,18 @@
.\" -rXnnn => Number pages after nnn as nnna, nnnb, nnnc, ...
.\"
.\" The file man.local is loaded at the end. Put local additions there.
-.\" If you need to add things to TH, use `.am TH'.
+.\" If you need to add things to TH, use `.am1 TH'.
.\"
.
.if !\n(.g .ab These man macros work only with groff.
.
+.do if d RI .nx
+.
.nr _C \n(.C
.cp 0
.
-.if (\n[.x]\n[.y]\n[.Y] < 1171) \
-. ab You need GNU troff version 1.17.1 or higher to run this version of man!
+.if (\n[.x]\n[.y] < 118) \
+. ab You need GNU troff version 1.18 or higher to run this version of man!
.
.if !r D .nr D 0
.if !r C .nr C 0
@@ -55,11 +58,33 @@
. el .nr cR 0
.\}
.
+.if !r LL \{\
+. ie n .nr LL 78n
+. el .nr LL 6.5i
+.\}
+.if !r LT \{\
+. ie n .nr LT 78n
+. el .nr LT 6.5i
+.\}
+.
.nr an-html 0
.if '\*[.T]'html' .nr an-html 1
.if \n[an-html] .nr C 1
.if r ps4html .nr C 1
.
+.\" we redefine .ne to avoid page breaks; instead, the page length is
+.\" increased to the necessary amount (this is needed for tables)
+.if n \{\
+. de1 ne
+. ie \\n[.$] \
+. nr an-ne \\$*
+. el \
+. nr an-ne 1v
+. if (\\n[an-ne] >= \\n[.t]) \
+. pl +(\\n[an-ne]u - \\n[.t]u + 1v)
+. .
+.\}
+.
.de set-an-margin
. nr an-margin \\n[IN]
..
@@ -67,7 +92,7 @@
.\" .TH title section extra1 extra2 extra3
.de1 TH
. if \\n[an-html] \{\
-. HTML-TAG ".tl"
+. HTML-TAG ".tl"
\\$1
. \}
.
@@ -109,6 +134,7 @@
.
. ps \\n[PS]u
. vs \\n[VS]u
+. ll \\n[LL]u
.
. nr IN 7.2n
. PD
@@ -171,6 +197,7 @@
. ev 1
. ps \\n[PS]u
. vs \\n[VS]u
+. lt \\n[LT]u
. ie \\n[an-html] \
. tl ''''
. el \{\
@@ -196,6 +223,7 @@
. ev 1
. ps \\n[PS]u
. vs \\n[VS]u
+. lt \\n[LT]u
. ie \\n[an-html] \{\
. ds an-page-string
. ds an-extra1
@@ -226,7 +254,7 @@
.
.de1 an-end
. nr % 1
-. pl +3v
+. pl +4v
. fl
. sp 3
. an-p-footer
@@ -249,7 +277,7 @@
. nr an-break-flag 1
. ps \\n[PS-SH]u
. ft B
-. if !\\n[cR] .ne (2v + 1u)
+. ne (2v + 1u)
. if \\n[.$] \&\\$*
..
.
@@ -266,7 +294,7 @@
. nr an-break-flag 1
. ps \\n[PS-SS]u
. ft B
-. if !\\n[cR] .ne (2v + 1u)
+. ne (2v + 1u)
. if \\n[.$] \&\\$*
..
.
@@ -279,7 +307,7 @@
.de1 I
. it 1 an-trap
. ft I
-. if \\n[.$] \&\\$*
+. if \\n[.$] \,\\$*\/
..
.
.de1 SM
@@ -299,12 +327,9 @@
. sp \\n[PD]u
. if \\n[.$] .nr an-prevailing-indent (n;\\$1)
. it 1 an-trap
+. in 0
+. ll -\\n[an-margin]u
. if !\\n[an-div?] .di an-div
-. ie \\n[an-html] .in \\n[an-margin]u
-. el \{\
-. in 0
-. ll -\\n[an-margin]u
-. \}
. nr an-div? 1
..
.
@@ -330,7 +355,7 @@
. di
. ie (\\n[dl] + \\n[an-tag-sep] > \\n[an-prevailing-indent]) \{\
. in \\n[an-margin]u
-. if !\\n[cR] .ne (2v + 1u)
+. ne (2v + 1u)
. an-div
. br
. in (\\n[an-margin]u + \\n[an-prevailing-indent]u)
@@ -339,11 +364,32 @@
. in (\\n[an-margin]u + \\n[an-prevailing-indent]u)
. ti -\\n[an-prevailing-indent]u
. chop an-div
-. if !\\n[cR] .ne (1v + 1u)
+. ne (1v + 1u)
\\*[an-div]\\h'|\\n[an-prevailing-indent]u'\c
. \}
..
.
+.de an-do-tag-html
+. nr an-div? 0
+. br
+. ll
+. di
+. ie ((\\n[dl] + \\n[an-tag-sep]) > \\n[an-prevailing-indent]) \{\
+. in \\n[an-margin]u
+. an-div
+. br
+. in (\\n[an-margin]u + \\n[an-prevailing-indent]u + \\n[an-tag-sep]u)
+. \}
+. el \{\
+. in (\\n[an-margin]u + \\n[an-prevailing-indent]u + \\n[an-tag-sep]u)
+. ti \\n[an-margin]u
+. chop an-div
+. HTML-TAG-NS ".col 1"
+\\*[an-div]\\h'|\\n[an-prevailing-indent]u'\\h'\\n[an-tag-sep]u'\c
+. HTML-TAG-NS ".col 2"
+. \}
+..
+.
.de1 LP
. br
. sp \\n[PD]u
@@ -363,7 +409,7 @@
. vs \\n[VS]u
. ft R
. sp \\n[PD]u
-. if !\\n[cR] .ne (1v + 1u)
+. ne (1v + 1u)
. in (\\n[an-margin]u + \\n[an-prevailing-indent]u)
. \}
. el \{\
@@ -378,7 +424,7 @@
. vs \\n[VS]u
. ft R
. sp \\n[PD]u
-. if !\\n[cR] .ne (1v + 1u)
+. ne (1v + 1u)
. if \\n[.$] .nr an-prevailing-indent (n;\\$1)
. in (\\n[an-margin]u + \\n[an-prevailing-indent]u)
. ti \\n[an-margin]u
@@ -483,17 +529,55 @@
. in \\n[an-margin]u
..
.
+.\" table support
+.
+.de1 TS
+. sp \\n[PD]u
+. HTML-IMAGE
+..
+.
+.de1 T&
+..
+.
+.de1 TE
+. HTML-IMAGE-END
+..
+.
+.\" dummy equation delimiters
+.de1 EQ
+. HTML-IMAGE
+..
+.de1 EN
+. HTML-IMAGE-END
+..
+.
+.de1 R
+\c
+. ie \\n[.$] \{\
+. tm `R' is a string (producing the registered sign), not a macro.
+. nop \\$*
+. \}
+. el \{\
+. ie c\[rg] \
+. nop \[rg]\c
+. el \
+. nop (Reg.)\c
+. \}
+..
+.
.\" these strings must work in compatibility mode also
.
-.ds S \s(\\n(PS
-.ie c\[rg] .ds R \(rg
-.el .ds R (Reg.)
+.ds S \s'\\n(PSu'
.ie c\[tm] .ds Tm \(tm
.el .ds Tm (TM)
.ds lq \(lq
.ds rq \(rq
.
-.if !\n[an-html] .hy 14
+.ie \n[an-html] \{\
+. rm an-do-tag
+. als an-do-tag an-do-tag-html
+.\}
+.el .hy 14
.
.\" Load local modifications.
.mso man.local
diff --git a/contrib/groff/tmac/andoc.tmac b/contrib/groff/tmac/andoc.tmac
index f6a16db..bfb869a 100644
--- a/contrib/groff/tmac/andoc.tmac
+++ b/contrib/groff/tmac/andoc.tmac
@@ -12,3 +12,8 @@
.do mso an-old.tmac
\\*(TH\\
..
+.\" dummy equation macros -- eqnrc is read before .TH or .Dd is parsed.
+.de EQ
+..
+.de EN
+..
diff --git a/contrib/groff/tmac/cp1047.tmac b/contrib/groff/tmac/cp1047.tmac
new file mode 100644
index 0000000..8b02753
--- /dev/null
+++ b/contrib/groff/tmac/cp1047.tmac
@@ -0,0 +1,105 @@
+.\" cp1047.tmac
+.\"
+.nr _C \n(.C
+.cp 0
+.de cp1047-tr
+. if c\\$2 .if !c\\$1 .trin \\$1\\$2
+..
+.
+.cp1047-tr \[char66] \[^a]
+.cp1047-tr \[char67] \[:a]
+.cp1047-tr \[char68] \[`a]
+.cp1047-tr \[char69] \['a]
+.cp1047-tr \[char70] \[~a]
+.cp1047-tr \[char71] \[oa]
+.cp1047-tr \[char72] \[,c]
+.cp1047-tr \[char73] \[~n]
+.cp1047-tr \[char74] \[ct]
+.cp1047-tr \[char81] \['e]
+.cp1047-tr \[char82] \[^e]
+.cp1047-tr \[char83] \[:e]
+.cp1047-tr \[char84] \[`e]
+.cp1047-tr \[char85] \['i]
+.cp1047-tr \[char86] \[^i]
+.cp1047-tr \[char87] \[:i]
+.cp1047-tr \[char88] \[`i]
+.cp1047-tr \[char89] \[ss]
+.cp1047-tr \[char98] \[^A]
+.cp1047-tr \[char99] \[:A]
+.cp1047-tr \[char100] \[`A]
+.cp1047-tr \[char101] \['A]
+.cp1047-tr \[char102] \[~A]
+.cp1047-tr \[char103] \[oA]
+.cp1047-tr \[char104] \[,C]
+.cp1047-tr \[char105] \[~N]
+.cp1047-tr \[char106] \[bb]
+.cp1047-tr \[char112] \[/o]
+.cp1047-tr \[char113] \['E]
+.cp1047-tr \[char114] \[^E]
+.cp1047-tr \[char115] \[:E]
+.cp1047-tr \[char116] \[`E]
+.cp1047-tr \[char117] \['I]
+.cp1047-tr \[char118] \[^I]
+.cp1047-tr \[char119] \[:I]
+.cp1047-tr \[char120] \[`I]
+.cp1047-tr \[char128] \[/O]
+.cp1047-tr \[char138] \[Fo]
+.cp1047-tr \[char139] \[Fc]
+.cp1047-tr \[char140] \[Sd]
+.cp1047-tr \[char141] \['y]
+.cp1047-tr \[char142] \[Tp]
+.cp1047-tr \[char143] \[t+-]
+.cp1047-tr \[char144] \[de]
+.cp1047-tr \[char154] \[Of]
+.cp1047-tr \[char155] \[Om]
+.cp1047-tr \[char156] \[ae]
+.cp1047-tr \[char157] \[ac]
+.cp1047-tr \[char158] \[AE]
+.cp1047-tr \[char159] \[Cs]
+.cp1047-tr \[char160] \[mc]
+.cp1047-tr \[char170] \[r!]
+.cp1047-tr \[char171] \[r?]
+.cp1047-tr \[char172] \[-D]
+.cp1047-tr \[char174] \[TP]
+.cp1047-tr \[char175] \[rg]
+.cp1047-tr \[char176] \[no]
+.cp1047-tr \[char177] \[Po]
+.cp1047-tr \[char178] \[Ye]
+.cp1047-tr \[char179] \[pc]
+.cp1047-tr \[char180] \[co]
+.cp1047-tr \[char181] \[sc]
+.cp1047-tr \[char182] \[ps]
+.cp1047-tr \[char183] \[14]
+.cp1047-tr \[char184] \[12]
+.cp1047-tr \[char185] \[34]
+.cp1047-tr \[char186] \['Y]
+.cp1047-tr \[char187] \[ad]
+.cp1047-tr \[char188] \[a-]
+.cp1047-tr \[char190] \[aa]
+.cp1047-tr \[char191] \[tmu]
+.\" The soft-hyphen character is only an input character
+.tr \[char202]\%
+.cp1047-tr \[char203] \[^o]
+.cp1047-tr \[char204] \[:o]
+.cp1047-tr \[char205] \[`o]
+.cp1047-tr \[char206] \['o]
+.cp1047-tr \[char207] \[~o]
+.cp1047-tr \[char218] \[S1]
+.cp1047-tr \[char219] \[^u]
+.cp1047-tr \[char220] \[:u]
+.cp1047-tr \[char221] \[`u]
+.cp1047-tr \[char222] \['u]
+.cp1047-tr \[char223] \[:y]
+.cp1047-tr \[char225] \[tdi]
+.cp1047-tr \[char234] \[S2]
+.cp1047-tr \[char235] \[^O]
+.cp1047-tr \[char236] \[:O]
+.cp1047-tr \[char237] \[`O]
+.cp1047-tr \[char238] \['O]
+.cp1047-tr \[char239] \[~O]
+.cp1047-tr \[char250] \[S3]
+.cp1047-tr \[char251] \[^U]
+.cp1047-tr \[char252] \[:U]
+.cp1047-tr \[char253] \[`U]
+.cp1047-tr \[char254] \['U]
+.cp \n(_C
diff --git a/contrib/groff/tmac/doc.tmac b/contrib/groff/tmac/doc.tmac
index b212e18..3667643 100644
--- a/contrib/groff/tmac/doc.tmac
+++ b/contrib/groff/tmac/doc.tmac
@@ -51,11 +51,14 @@
. ab This version of mdoc can be run with GNU troff only!
.
.
+.do if d Dd .nx
+.
+.
.cp 0
.
.
-.if (\n[.x]\n[.y] < 117) \
-. ab You need GNU troff version 1.17 or higher to run this version of mdoc!
+.if (\n[.x]\n[.y] < 118) \
+. ab You need GNU troff version 1.18 or higher to run this version of mdoc!
.
.
.\" Load start-up files
@@ -155,7 +158,7 @@
.
. \" handle `|' and `...' specially
. ie "\$1"|" \
-. ds doc-arg\n[doc-arg-limit] \f[R]|\f[P]
+. ds doc-arg\n[doc-arg-limit] \f[R]|\f[]
. el \{ .ie "\$1"..." \
. ds doc-arg\n[doc-arg-limit] \|.\|.\|.
. el \
@@ -204,7 +207,7 @@
. nr doc-arg-limit +1
.
. ie "\*[doc-arg\n[doc-arg-limit]]"|" \
-. ds doc-arg\n[doc-arg-limit] \f[R]|\f[P]
+. ds doc-arg\n[doc-arg-limit] \f[R]|\f[]
. el \{ .if "\*[doc-arg\n[doc-arg-limit]]"..." \
. ds doc-arg\n[doc-arg-limit] \|.\|.\|.
. \}
@@ -357,7 +360,7 @@
.
. if !\n[.$] \{\
. \" no arguments
-. nop \|\-\|\f[P]\s[0]
+. nop \|\-\|\f[]\s[0]
. \}\}
.
. if !\n[doc-arg-limit] \
@@ -366,12 +369,12 @@
. nr doc-arg-ptr +1
. ie (\n[doc-arg-limit] < \n[doc-arg-ptr]) \{\
. \" last argument
-. nop \|\-\f[P]\s[0]\c
+. nop \|\-\f[]\s[0]\c
. doc-print-and-reset
. \}
. el \{\
. ie (\n[doc-type\n[doc-arg-ptr]] == 1) \{\
-. nop \|\-\f[P]\s[0]\c
+. nop \|\-\f[]\s[0]\c
. \*[doc-arg\n[doc-arg-ptr]]
. \}
. el \{\
@@ -400,7 +403,7 @@
. ds doc-str-dfr "\*[doc-arg\n[doc-arg-ptr]]
.
. ie (\n[doc-reg-dfr1] == 1) \{\
-. nop \f[P]\s[0]\c
+. nop \f[]\s[0]\c
. \*[doc-str-dfr]
. \}
. el \{\
@@ -416,10 +419,10 @@
. nop \)\*[Ba]\c
. \}
. el \{\
-. ie "\*[doc-str-dfr]"\f[R]|\f[P]" \{\
+. ie "\*[doc-str-dfr]"\f[R]|\f[]" \{\
. if \n[doc-reg-Fl] \
. nop \|\-\*[doc-space]\c
-. nop \f[R]|\f[P]\c
+. nop \f[R]|\f[]\c
. \}
. el \{\
. \" two consecutive hyphen characters?
@@ -430,14 +433,14 @@
. \}\}\}
. el \{\
. nop \f[\n[doc-curr-font]]\s[\n[doc-curr-size]u]\c
-. nop \)\*[doc-str-dfr]\f[P]\s[0]\c
+. nop \)\*[doc-str-dfr]\f[]\s[0]\c
. \}
.
. ie (\n[doc-arg-limit] == \n[doc-arg-ptr]) \{\
. \" last argument
. if (\n[doc-reg-dfr1] == 4) \
. nop \|\-\c
-. nop \f[P]\s[0]\c
+. nop \f[]\s[0]\c
. doc-print-and-reset
. \}
. el \{\
@@ -486,7 +489,7 @@
. el \{\
. \" punctuation character
. nop \f[\n[doc-curr-font]]\s[\n[doc-curr-size]u]\c
-. nop \)\*[doc-str-dpr]\f[P]\s[0]\c
+. nop \)\*[doc-str-dpr]\f[]\s[0]\c
. \}
.
. nr doc-arg-ptr +1
@@ -513,7 +516,7 @@
. if !(\n[doc-type\n[doc-arg-ptr]] == 4) \
. break
. nop \f[\n[doc-curr-font]]\s[\n[doc-curr-size]u]\c
-. nop \)\*[doc-arg\n[doc-arg-ptr]]\f[P]\s[0]\c
+. nop \)\*[doc-arg\n[doc-arg-ptr]]\f[]\s[0]\c
. nr doc-arg-ptr +1
. \}
..
@@ -544,7 +547,8 @@
. nr doc-arg-ptr +1
. ie (\n[doc-arg-limit] >= \n[doc-arg-ptr]) \{\
. if (\n[doc-type\n[doc-arg-ptr]] == 1) \{\
-. tm Usage: .\$0 \*[doc-\$0-usage] ... (#\n[.c])
+. tmc mdoc warning: Using a macro as first argument
+. tm1 " cancels effect of .\$0 (#\n[.c])
.
. \" the right action here would be to reset the argument counters
. \" and bail out -- unfortunately, a small number of manual pages
@@ -595,7 +599,7 @@
.
. if !\n[.$] \{\
. \" no argument
-. nop \)\*[doc-str-Ar-default]\&\f[P]\s[0]
+. nop \)\*[doc-str-Ar-default]\&\f[]\s[0]
. \}\}
.
. if !\n[doc-arg-limit] \
@@ -604,7 +608,7 @@
. nr doc-arg-ptr +1
. doc-print-prefixes
. ie (\n[doc-arg-limit] < \n[doc-arg-ptr]) \{\
-. nop \)\*[doc-str-Ar-default]\&\f[P]\s[0]\c
+. nop \)\*[doc-str-Ar-default]\&\f[]\s[0]\c
. doc-print-and-reset
. \}
. el \{\
@@ -923,7 +927,7 @@
. doc-reset-args
. \}
. el \{\
-. nop \*[doc-Nm-font]\*[doc-command-name]\f[P]\s[0]\c
+. nop \*[doc-Nm-font]\*[doc-command-name]\f[]\s[0]\c
. doc-print-and-reset
. \}\}
. el \{\
@@ -936,7 +940,7 @@
. el \{\
. \" replace previous argument (Nm) with default value
. nr doc-arg-ptr -1
-. ds doc-arg\n[doc-arg-ptr] "\*[doc-Nm-font]\*[doc-command-name]\f[P]\s[0]
+. ds doc-arg\n[doc-arg-ptr] "\*[doc-Nm-font]\*[doc-command-name]\f[]\s[0]
. nr doc-type\n[doc-arg-ptr] 2
. ds doc-space\n[doc-arg-ptr] "\*[doc-space]
.
@@ -988,7 +992,7 @@
.
. if !\n[.$] \{\
. \" default value
-. nop \*[doc-Pa-font]~\f[P]\s[0]
+. nop \*[doc-Pa-font]~\f[]\s[0]
. \}\}
.
. if !\n[doc-arg-limit] \
@@ -1015,7 +1019,7 @@
. doc-print-recursive
. \}
. el \{\
-. nop \*[doc-Pa-font]~\f[P]\s[0]\c
+. nop \*[doc-Pa-font]~\f[]\s[0]\c
. doc-print-and-reset
. \}
..
@@ -1936,7 +1940,7 @@
. doc-print-and-reset
. \}
.
-. \" shall we finish .It request?
+. \" shall we finish .It macro?
. if !"\*[doc-macro-name]"It" \
. if \n[doc-in-list] \
. if !\n[doc-nesting-level] \
@@ -2022,7 +2026,7 @@
.
.de Ap
. ie !\n[doc-arg-limit] \
-. tm Usage: `Ap' cannot be first request on a line (no `.Ap') (#\n[.c])
+. tm Usage: `Ap' cannot be first macro on a line (no `.Ap') (#\n[.c])
. el \{\
. nop \)'\)\c
. nr doc-arg-ptr +1
@@ -2375,7 +2379,7 @@
.
.
.\" NS doc-fontmode-font-stackXXX global register
-.\" NS stack of saved current font values from `Bf' request
+.\" NS stack of saved current font values from `Bf' macro
.\" NS
.\" NS limit:
.\" NS doc-fontmode-depth
@@ -2384,7 +2388,7 @@
.
.
.\" NS doc-fontmode-size-stackXXX global register
-.\" NS stack of saved current size values from `Bf' request
+.\" NS stack of saved current size values from `Bf' macro
.\" NS
.\" NS limit:
.\" NS doc-fontmode-depth
@@ -2426,7 +2430,7 @@
. el \{ .ie "\$1"-symbolic" \
. nop \*[doc-Sy-font]\c
. el \{\
-. tmc mdoc warning: Unknown keyword `\$1' in .Bf request
+. tmc mdoc warning: Unknown keyword `\$1' in .Bf macro
. tm1 " (#\n[.c])
. \}\}\}\}\}\}\}
. el \
@@ -2494,7 +2498,7 @@
. doc-set-hard-space
. \}
. el \{\
-. tm mdoc warning: Unknown keyword `\$1' in .Bk request (#\n[.c])
+. tm mdoc warning: Unknown keyword `\$1' in .Bk macro (#\n[.c])
. nr doc-keep-type 3
. \}\}\}
.
@@ -2675,7 +2679,7 @@
. \}
. el \{\
. tm1 "mdoc warning: Unknown keyword `\$1' (or missing display type)
-. tm1 " in .Bd request (#\n[.c])
+. tm1 " in .Bd macro (#\n[.c])
. nr doc-reg-Bd 0
. \}\}\}\}\}
.
@@ -2763,7 +2767,7 @@
. \" character yields identical numerical results (ignoring the
. \" scaling indicator)
. ds doc-str-ddBa "\$2
-. substring doc-str-ddBa 1 -1
+. substring doc-str-ddBa 0 -2
. if \B(\*[doc-str-ddBa]) \{\
. nr doc-reg-ddBa3 (;(\$2))
. nr doc-reg-ddBa4 (\*[doc-str-ddBa])
@@ -2803,7 +2807,7 @@
. tm mdoc warning: .Bd `-file' keyword requires argument (#\n[.c])
. \}
. el \
-. tm mdoc warning: Unknown keyword `\$1' in .Bd request (#\n[.c])
+. tm mdoc warning: Unknown keyword `\$1' in .Bd macro (#\n[.c])
. \}\}
.
. if (\n[doc-reg-ddBa] < \n[.$]) \{\
@@ -2960,7 +2964,7 @@
. \}
. el \{\
. tm1 "mdoc warning: Unknown list type `\$1' (or missing list type)
-. tm1 " in .Bl request
+. tm1 " in .Bl macro
. tm
. nr doc-arg-ptr 0
. \}\}\}\}\}\}\}\}\}\}\}
@@ -3070,7 +3074,7 @@
. nr doc-list-indent-stack\n[doc-list-depth] +\n[doc-reg-dBla1]n
. \}
. el \
-. tm mdoc warning: `-nested' allowed with nested .Bl requests only (#\n[.c])
+. tm mdoc warning: `-nested' allowed with nested .Bl macros only (#\n[.c])
. \}
.
. el \{ .ie "\*[doc-arg\n[doc-arg-ptr]]"-width" \{\
@@ -3078,10 +3082,10 @@
. ds doc-tag-width-stack\n[doc-list-depth] TagwidtH
.
. ds doc-str-dBla "\*[doc-arg\n[doc-arg-ptr]]
-. substring doc-str-dBla 1 2
+. substring doc-str-dBla 0 0
. ie .\*[doc-str-dBla] \{\
. ds doc-str-dBla "\*[doc-arg\n[doc-arg-ptr]]
-. substring doc-str-dBla 2
+. substring doc-str-dBla 1
. doc-first-parameter \*[doc-str-dBla]
. doc-get-width "\*[doc-str-dfp]
. doc-get-arg-type "\*[doc-str-dfp]
@@ -3125,7 +3129,7 @@
. \" character yields identical numerical results (ignoring the
. \" scaling indicator)
. ds doc-str-dBla1 "\*[doc-str-dBla]
-. substring doc-str-dBla1 1 -1
+. substring doc-str-dBla1 0 -2
. if \B(\*[doc-str-dBla1]) \{\
. nr doc-reg-dBla3 (;(\*[doc-str-dBla]))
. nr doc-reg-dBla4 (\*[doc-str-dBla1])
@@ -3167,7 +3171,7 @@
. warn (\n[.warn] - (\n[.warn] / 32 % 2 * 32))
.
. ds doc-str-dBla1 "\*[doc-str-dBla]
-. substring doc-str-dBla1 1 -1
+. substring doc-str-dBla1 0 -2
. if \B(\*[doc-str-dBla1]) \{\
. nr doc-reg-dBla3 (;(\*[doc-str-dBla]))
. nr doc-reg-dBla4 (\*[doc-str-dBla1])
@@ -3204,10 +3208,10 @@
. ie "\*[doc-list-type-stack\n[doc-list-depth]]"column-list" \{\
. nr doc-num-columns +1
. ds doc-str-dBla \*[doc-arg\n[doc-arg-ptr]]
-. substring doc-str-dBla 1 2
+. substring doc-str-dBla 0 0
. ie .\*[doc-str-dBla] \{\
. ds doc-str-dBla "\*[doc-arg\n[doc-arg-ptr]]
-. substring doc-str-dBla 2
+. substring doc-str-dBla 1
. doc-first-parameter \*[doc-str-dBla]
. doc-get-width "\*[doc-str-dfp]
. doc-get-arg-type "\*[doc-str-dfp]
@@ -3242,7 +3246,7 @@
. \}
. el \{\
. tmc mdoc warning: Unknown keyword `\*[doc-arg\n[doc-arg-ptr]]'
-. tm1 " in .Bl request (#\n[.c])
+. tm1 " in .Bl macro (#\n[.c])
. \}\}
.
. if (\n[doc-arg-limit] > \n[doc-arg-ptr]) \
@@ -3666,7 +3670,7 @@
.
. ie (\n[doc-reg-It] == 1) \{\
. if \n[.$] \{\
-. tm1 "mdoc warning: .It requests in lists of type `\*[doc-str-It]'
+. tm1 "mdoc warning: .It macros in lists of type `\*[doc-str-It]'
. tm1 " don't take arguments (#\n[.c])
. \}\}
. el \{\
@@ -3693,13 +3697,13 @@
. doc-print-recursive
. \}\}\}
. el \{\
-. tm1 "mdoc warning: .It requests in lists of type `\*[doc-str-It]'
+. tm1 "mdoc warning: .It macros in lists of type `\*[doc-str-It]'
. tm1 " require arguments (#\n[.c])
. \}
. \}
.
. \" the previous call of `.doc-print-recursive' can contain calls to
-. \" opening requests like `.Ao'; we then defer the call of `doc-xxx-list'
+. \" opening macros like `.Ao'; we then defer the call of `doc-xxx-list'
. if !\n[doc-nesting-level] \
. doc-\*[doc-str-It]
..
@@ -3854,7 +3858,7 @@
.
.de doc-bullet-list
. nr doc-in-list 1
-. nop \)\*[doc-Sy-font]\[bu]\f[P]
+. nop \)\*[doc-Sy-font]\[bu]\f[]
. doc-do-list
..
.
@@ -3867,7 +3871,7 @@
.
.de doc-dash-list
. nr doc-in-list 1
-. nop \)\*[doc-Sy-font]\-\f[P]
+. nop \)\*[doc-Sy-font]\-\f[]
. doc-do-list
..
.
@@ -3965,9 +3969,9 @@
. \}
. el \{\
. chop doc-item-box\n[doc-list-depth]
-. nr doc-reg-dtl1 \n[.k]u
-. nop \*[doc-item-box\n[doc-list-depth]]\c
-. nop \h'|(\n[doc-reg-dtl1]u - \n[.k]u + \n[doc-reg-dtl]u)'\c
+. \" Using \Z prevents stretching of the spaces in the tag
+. nop \Z'\*[doc-item-box\n[doc-list-depth]]'\c
+. nop \h'\n[doc-reg-dtl]u'\c
. nr doc-have-space 1
. \}
.
@@ -4185,7 +4189,7 @@
. ie (\n[doc-type\n[doc-arg-ptr]] == 2) \{\
. nr doc-curr-font \n[.f]
. nr doc-curr-size \n[.ps]
-. ds doc-arg\n[doc-arg-ptr] \*[doc-Xr-font]\*[doc-arg\n[doc-arg-ptr]]\f[P]\s[0]
+. ds doc-arg\n[doc-arg-ptr] \*[doc-Xr-font]\*[doc-arg\n[doc-arg-ptr]]\f[]\s[0]
.
. if (\n[doc-arg-limit] > \n[doc-arg-ptr]) \{\
. nr doc-reg-Xr (\n[doc-arg-ptr] + 1)
@@ -4581,7 +4585,7 @@
.
. if \n[.$] \
. nop \*[doc-Ft-font]\$*\c
-. nop \ \f[P]\c
+. nop \ \f[]\c
..
.
.
@@ -4677,12 +4681,12 @@
. if (\n[doc-func-arg-count] > 1) \{\
. nop \f[\n[doc-curr-font]]\s[\n[doc-curr-size]u]\|,\)\c
. nop \)\*[doc-space\n[doc-arg-ptr]]\*[doc-Fa-font]\c
-. nop \)\*[doc-arg\n[doc-arg-ptr]]\f[P]\s[0]\c
+. nop \)\*[doc-arg\n[doc-arg-ptr]]\f[]\s[0]\c
. \}
.
. if (\n[doc-func-arg-count] == 1) \{\
. nop \|\*[doc-Fa-font]\*[doc-arg\n[doc-arg-ptr]]\c
-. nop \f[P]\s[0]\c
+. nop \f[]\s[0]\c
. \}
. nr doc-func-arg-count +1
. doc-do-func
@@ -4771,7 +4775,7 @@
. nr doc-curr-font \n[.f]
. nr doc-curr-size \n[.ps]
. nop \*[doc-Fn-font]\*[doc-arg\n[doc-arg-ptr]]\c
-. nop \f[P]\s[0]\*[lp]\)\c
+. nop \f[]\s[0]\*[lp]\)\c
.
. nr doc-arg-ptr +1
. if (\n[doc-arg-limit] >= \n[doc-arg-ptr]) \{\
@@ -4833,7 +4837,7 @@
. if (\n[doc-type\n[doc-arg-ptr]] == 2) \{\
. nr doc-reg-ddfa (\n[doc-arg-ptr] - 1)
. nop \|\f[\n[doc-curr-font]]\s[\n[doc-curr-size]u],\)\c
-. nop \)\*[doc-space\n[doc-reg-ddfa]]\f[P]\s[0]\|\c
+. nop \)\*[doc-space\n[doc-reg-ddfa]]\f[]\s[0]\|\c
. doc-do-func-args
. \}\}
..
@@ -4934,7 +4938,7 @@
. nr doc-curr-size \n[.ps]
.
. nop \*[doc-Fn-font]\*[doc-arg\n[doc-arg-ptr]]\c
-. nop \f[P]\s[0]\*[lp]\)\c
+. nop \f[]\s[0]\*[lp]\)\c
. doc-reset-args
. \}
..
@@ -5034,7 +5038,7 @@
.
.
.\" Very crude references: Stash all reference info into boxes, print out
-.\" reference on .Re request and clean up. Ordering very limited, no fancy
+.\" reference on .Re macro and clean up. Ordering very limited, no fancy
.\" citations, but can do articles, journals, and books -- need to add
.\" several missing options (like city etc). Should be able to grab a refer
.\" entry, massage it a wee bit (prefix a `.' to the %[A-Z]) and not worry
@@ -6133,19 +6137,19 @@
.ds doc-str-Rv-std-prefix "The
.ds doc-str-Rv-std-suffix "function returns the value\~0 if successful;
.as doc-str-Rv-std-suffix " otherwise the value\~-1 is returned and
-.as doc-str-Rv-std-suffix " the global variable \*[doc-Va-font]errno\f[P]
+.as doc-str-Rv-std-suffix " the global variable \*[doc-Va-font]errno\f[]
.as doc-str-Rv-std-suffix " is set to indicate the error.
.
.ds doc-str-Rv-stds-prefix "The
.ds doc-str-Rv-stds-and "and
.ds doc-str-Rv-stds-suffix "functions return the value\~0 if successful;
.as doc-str-Rv-stds-suffix " otherwise the value\~-1 is returned and
-.as doc-str-Rv-stds-suffix " the global variable \*[doc-Va-font]errno\f[P]
+.as doc-str-Rv-stds-suffix " the global variable \*[doc-Va-font]errno\f[]
.as doc-str-Rv-stds-suffix " is set to indicate the error.
.
.ds doc-str-Rv-std0 "Upon successful completion, the value\~0 is returned;
.as doc-str-Rv-std0 " otherwise the value\~-1 is returned and
-.as doc-str-Rv-std0 " the global variable \*[doc-Va-font]errno\f[P]
+.as doc-str-Rv-std0 " the global variable \*[doc-Va-font]errno\f[]
.as doc-str-Rv-std0 " is set to indicate the error.
.
.de Rv
diff --git a/contrib/groff/tmac/dvi.tmac b/contrib/groff/tmac/dvi.tmac
index 5fec427..4eb03b8 100644
--- a/contrib/groff/tmac/dvi.tmac
+++ b/contrib/groff/tmac/dvi.tmac
@@ -2,60 +2,76 @@
.\"
.nr _C \n(.C
.cp 0
+.
.ftr CR CW
.ftr C CW
.ftr CO CWI
.ftr CI CWI
+.ftr CB CW
.ftr TT CW
-.ftr HR H
-.\" This uses the dvi-char_1 string in font CW, dvi-char_0 otherwise.
-.char _ \R'dvi-char_ \\n(.f=\f(CW\\n(.f\fP'\\*[dvi-char_\\n[dvi-char_]]
-.char \[ul] \R'dvi-char_ \w'M'=\w'i''\\*[dvi-char_\\n[dvi-char_]]
+.ftr H HR
+.
+.special TR TI
+.fspecial TI CWI
+.fspecial TBI CWI
+.fspecial HI CWI
+.fspecial HBI CWI
+.
+.\" This uses the dvi-char_1 string in font CW or CWI, dvi-char_0 otherwise.
+.fchar _ \
+\R'dvi-char_ ((\\n[.f] == \f[CW]\\n[.f]\f[]) : \
+ (\\n[.f] == \f[CWI]\\n[.f]\f[]))'\\*[dvi-char_\\n[dvi-char_]]
+.fchar \[ul] \R'dvi-char_ \w'M'==\w'i''\\*[dvi-char_\\n[dvi-char_]]
.\" Normally use a rule.
.\" This is designed so that \(ul, \(rn and \(br form corners.
.ds dvi-char_0 \Z'\v'.23m'\D'R .54m .04m''\h'.5m'
-.\" In font CW use a real _ character.
+.\" In font CW and CWI use a real _ character.
.ds dvi-char_1 _
-.if !c\[radicalex] .char \[radicalex] \D'R .5m -.04m'\v'.04m'
-.if !c\[br] .char \[br] \Z'\v'.25m'\D'R .04m -1m''
-.if !c\[ru] .char \[ru] \Z'\v'-.02m'\D'R .54m .04m''\h'.5m'
-.if !c\[rn] .char \[rn] \Z'\v'-.77m'\D'R .54m .04m''\h'.5m'
-.if !c\[co] .char \[co] \
-\z\s-2\(ci\s0\
-\h'\w'\s-2\(ci\s0'u-\w'\s-4C\s0'u/2u'\
+.
+.fchar \[radicalex] \D'R .5m -.04m'\v'.04m'
+.fchar \[br] \Z'\v'.25m'\D'R .04m -1m''
+.fchar \[ru] \Z'\v'-.02m'\D'R .54m .04m''\h'.5m'
+.fchar \[rn] \Z'\v'-.77m'\D'R .54m .04m''\h'.5m'
+.fchar \[co] \
+\z\s-2\[ci]\s0\
+\h'\w'\s-2\[ci]\s0'u-\w'\s-4C\s0'u/2u'\
\s-4C\s0\
-\h'\w'\s-2\(ci\s0'u-\w'\s-4C\s0'u/2u'
-.if !c\[rg] .char \[rg] \
-\z\s-2\(ci\s0\
-\h'\w'\s-2\(ci\s0'u-\w'\s-4R\s0'u/2u'\
+\h'\w'\s-2\[ci]\s0'u-\w'\s-4C\s0'u/2u'
+.fchar \[rg] \
+\z\s-2\[ci]\s0\
+\h'\w'\s-2\[ci]\s0'u-\w'\s-4R\s0'u/2u'\
\s-4R\s0\
-\h'\w'\s-2\(ci\s0'u-\w'\s-4R\s0'u/2u'
-.if !c\[fm] .char \[fm] \v'-.35m'\s[\\n(.s*7u/10u]\[prime]\s0\v'.35m'
-.if !c\[de] .char \[de] \h'.05m'\v'-.54m'\D'c .3m'\v'.54m'\h'.05m'
-.if !c\[ct] .char \[ct] \o'c/'
-.if !c\[sq] .char \[sq] \Z'\h'.05m'\D'R .4m -.04m'\v'.04m'\h'-.04m'\
+\h'\w'\s-2\[ci]\s0'u-\w'\s-4R\s0'u/2u'
+.fchar \[fm] \v'-.35m'\s[\\n[.s]*7u/10u]\[prime]\s0\v'.35m'
+.fchar \[de] \h'.05m'\v'-.54m'\D'c .3m'\v'.54m'\h'.05m'
+.fchar \[ct] \o'c/'
+.fchar \[sq] \
+\Z'\h'.05m'\D'R .4m -.04m'\v'.04m'\h'-.04m'\
\D'R .04m -.4m'\v'.04m'\D'R -.4m -.04m'\D'R .04m .4m''\h'.5m'
.\"char \[sq] \h'.05m'\D'l .4m 0'\D'l 0 -.4m'\D'l -.4m 0'\D'l 0 .4m'\h'.45m'
-.if !c\[!=] .char \[!=] \[slashnot]\(eq
-.if !c\[tm] .char \[tm] \v'-.3m'\s[\\n(.s/2u]TM\s0\v'.3m'
-.if !c\[aq] .char \[aq] '
-.if !c\[bq] .char \[bq] ,
-.if !c\[Bq] .char \[Bq] ,\h'\w'\(rq'u-(2u*\w"'"u)',
-.if !c\[ho] .char \[ho] \s[\En[.s]/2u]\v'.4m'c\v'-.4m'\s0
-.if !c\[-D] .char \[-D] \Z'\v'-.1m'\h'.05m'-'D
-.if !c\[Sd] .char \[Sd] \Z'\v'-.3m'\h'.35m'-'\(pd
-.if !c\[TP] .char \[TP] I\h'-.25m'\v'-.33m'\s[\En[.s]*6u/10u]\v'.33m'D\
-\v'-.33m'\s0\v'.33m'
-.if !c\[Tp] .char \[Tp] \zlp
-.if !c\[nb] .char \[nb] \[slashnot]\(sb
-.cflags 8 \(an
-.if !c\[an] .char \[an] \h'-.167m'\(mi\h'-.167m'
+.fchar \[!=] \[slashnot]\[eq]
+.fchar \[tm] \v'-.3m'\s[\\n[.s]/2u]TM\s0\v'.3m'
+.fchar \[aq] '
+.fchar \[bq] ,
+.fchar \[Bq] ,\h'\w'\[rq]'u-(2u*\w"'"u)',
+.fchar \[ho] \s[\En[.s]/2u]\v'.4m'c\v'-.4m'\s0
+.fchar \[-D] \Z'\v'-.1m'\h'.05m'-'D
+.fchar \[Sd] \Z'\v'-.3m'\h'.35m'-'\[pd]
+.fchar \[TP] \
+I\h'-.25m'\v'-.33m'\s[\En[.s]*6u/10u]\v'.33m'\
+D\v'-.33m'\s0\v'.33m'
+.fchar \[Tp] \zlp
+.fchar \[nb] \[slashnot]\[sb]
+.cflags 8 \[an]
+.fchar \[an] \h'-.167m'\[mi]\h'-.167m'
+.
.\" Define some fractions.
.de dvi-frac
-.if !c\[\\$1\\$2] .char \[\\$1\\$2] \
-\v'-.25m'\s[\\\\n(.s*7u/10u]\\$1\s0\v'.25m'\h'-.2m'\
-/\h'-.2m'\v'.25m'\s[\\\\n(.s*7u/10u]\\$2\s0\v'-.25m'
+. fchar \[\\$1\\$2] \
+\v'-.25m'\s[\\\\n[.s]*7u/10u]\\$1\s0\v'.25m'\h'-.2m'\
+/\h'-.2m'\v'.25m'\s[\\\\n[.s]*7u/10u]\\$2\s0\v'-.25m'
..
+.
.dvi-frac 1 2
.dvi-frac 3 4
.dvi-frac 1 4
@@ -63,85 +79,650 @@
.dvi-frac 3 8
.dvi-frac 5 8
.dvi-frac 7 8
+.
.\" support for ISO Latin-1
-.if !c\[S1] .char \[S1] \v'-.2m'\s-31\s+3\v'+.2m'
-.if !c\[S2] .char \[S2] \v'-.2m'\s-32\s+3\v'+.2m'
-.if !c\[S3] .char \[S3] \v'-.2m'\s-33\s+3\v'+.2m'
-.if !c\[Of] .char \[Of] \v'-.2m'\s'\En(.s*6u/10u'\o'_a'\s0\v'.2m'
-.if !c\[Om] .char \[Om] \v'-.2m'\s'\En(.s*6u/10u'\o'_o'\s0\v'.2m'
-.if !c\[Fo] .char \[Fo] <<
-.if !c\[Fc] .char \[Fc] >>
-.if !c\[bb] .char \[bb] |
-.if !c\[Ye] .char \[Ye] \o'-Y'
-.if !c\[Cs] .char \[Cs] \o'\[mu]o'
+.fchar \[S1] \v'-.2m'\s-31\s+3\v'+.2m'
+.fchar \[S2] \v'-.2m'\s-32\s+3\v'+.2m'
+.fchar \[S3] \v'-.2m'\s-33\s+3\v'+.2m'
+.fchar \[Of] \v'-.2m'\s'\En[.s]*6u/10u'\o'_a'\s0\v'.2m'
+.fchar \[Om] \v'-.2m'\s'\En[.s]*6u/10u'\o'_o'\s0\v'.2m'
+.fchar \[Fo] \v'-.1m'\s-3<\h'-.3m'<\s+3\v'+.1m'
+.fchar \[Fc] \v'-.1m'\s-3>\h'-.3m'>\s+3\v'+.1m'
+.fchar \[bb] |
+.fchar \[Ye] \o'-Y'
+.fchar \[Cs] \o'\[mu]o'
+.
.de dvi-achar
-.\" Note that character definitions are always interpreted with
-.\" compatibility mode off.
-.if !c\\$1 \{\
-.char \\$1 \\$3\
+. \" Note that character definitions are always interpreted with
+. \" compatibility mode off.
+. fchar \\$1 \
+\\$3\
\k[acc]\
\h'(u;-\w'\\$2'-\w'\\$3'/2+\\\\n[skw]+(\w'x'*0)-\\\\n[skw])'\
\v'(u;\w'x'*0+\\\\n[rst]+(\w'\\$3'*0)-\\\\n[rst])'\
\\$2\
\v'(u;\w'x'*0-\\\\n[rst]+(\w'\\$3'*0)+\\\\n[rst])'\
\h'|\\\\n[acc]u'
-.\}
-.hcode \\$1\\$4
+. hcode \\$1\\$4
..
-.dvi-achar \(`A \` A a
-.dvi-achar \('A \' A a
-.dvi-achar \(^A ^ A a
-.dvi-achar \(~A ~ A a
-.dvi-achar \(:A \(ad A a
-.dvi-achar \(oA \(ao A a
-.dvi-achar \(`E \` E e
-.dvi-achar \('E \' E e
-.dvi-achar \(^E ^ E e
-.dvi-achar \(:E \(ad E e
-.dvi-achar \(`I \` I i
-.dvi-achar \('I \' I i
-.dvi-achar \(^I ^ I i
-.dvi-achar \(:I \(ad I i
-.dvi-achar \(~N ~ N n
-.dvi-achar \(`O \` O o
-.dvi-achar \('O \' O o
-.dvi-achar \(^O ^ O o
-.dvi-achar \(~O ~ O o
-.dvi-achar \(:O \(ad O o
-.dvi-achar \(`U \` U u
-.dvi-achar \('U \' U u
-.dvi-achar \(^U ^ U u
-.dvi-achar \(:U \(ad U u
-.dvi-achar \('Y \' Y y
-.dvi-achar \(`a \` a a
-.dvi-achar \('a \' a a
-.dvi-achar \(^a ^ a a
-.dvi-achar \(~a ~ a a
-.dvi-achar \(:a \(ad a a
-.dvi-achar \(oa \(ao a a
-.dvi-achar \(`e \` e e
-.dvi-achar \('e \' e e
-.dvi-achar \(^e ^ e e
-.dvi-achar \(:e \(ad e e
-.dvi-achar \(`i \` \(.i i
-.dvi-achar \('i \' \(.i i
-.dvi-achar \(^i ^ \(.i i
-.dvi-achar \(:i \(ad \(.i i
-.dvi-achar \(~n ~ n n
-.dvi-achar \(`o \` o o
-.dvi-achar \('o \' o o
-.dvi-achar \(^o ^ o o
-.dvi-achar \(~o ~ o o
-.dvi-achar \(:o \(ad o o
-.dvi-achar \(`u \` u u
-.dvi-achar \('u \' u u
-.dvi-achar \(^u ^ u u
-.dvi-achar \(:u \(ad u u
-.dvi-achar \('y \' y y
-.dvi-achar \(:y \(ad y y
-.if !c\(,C .char \(,C \o'\(acC'
-.hcode \(,Cc
-.if !c\(,c .char \(,c \o'\(acc'
-.hcode \(,cc
+.
+.dvi-achar \[`A] \` A a
+.dvi-achar \['A] \' A a
+.dvi-achar \[^A] ^ A a
+.dvi-achar \[~A] ~ A a
+.dvi-achar \[:A] \[ad] A a
+.dvi-achar \[oA] \[ao] A a
+.dvi-achar \[`E] \` E e
+.dvi-achar \['E] \' E e
+.dvi-achar \[^E] ^ E e
+.dvi-achar \[:E] \[ad] E e
+.dvi-achar \[`I] \` I i
+.dvi-achar \['I] \' I i
+.dvi-achar \[^I] ^ I i
+.dvi-achar \[:I] \[ad] I i
+.dvi-achar \[~N] ~ N n
+.dvi-achar \[`O] \` O o
+.dvi-achar \['O] \' O o
+.dvi-achar \[^O] ^ O o
+.dvi-achar \[~O] ~ O o
+.dvi-achar \[:O] \[ad] O o
+.dvi-achar \[`U] \` U u
+.dvi-achar \['U] \' U u
+.dvi-achar \[^U] ^ U u
+.dvi-achar \[:U] \[ad] U u
+.dvi-achar \['Y] \' Y y
+.dvi-achar \[:Y] \[ad] Y y
+.dvi-achar \[`a] \` a a
+.dvi-achar \['a] \' a a
+.dvi-achar \[^a] ^ a a
+.dvi-achar \[~a] ~ a a
+.dvi-achar \[:a] \[ad] a a
+.dvi-achar \[oa] \[ao] a a
+.dvi-achar \[`e] \` e e
+.dvi-achar \['e] \' e e
+.dvi-achar \[^e] ^ e e
+.dvi-achar \[:e] \[ad] e e
+.dvi-achar \[`i] \` \[.i] i
+.dvi-achar \['i] \' \[.i] i
+.dvi-achar \[^i] ^ \[.i] i
+.dvi-achar \[:i] \[ad] \[.i] i
+.dvi-achar \[~n] ~ n n
+.dvi-achar \[`o] \` o o
+.dvi-achar \['o] \' o o
+.dvi-achar \[^o] ^ o o
+.dvi-achar \[~o] ~ o o
+.dvi-achar \[:o] \[ad] o o
+.dvi-achar \[`u] \` u u
+.dvi-achar \['u] \' u u
+.dvi-achar \[^u] ^ u u
+.dvi-achar \[:u] \[ad] u u
+.dvi-achar \['y] \' y y
+.dvi-achar \[:y] \[ad] y y
+.dvi-achar \[vs] \[ah] s s
+.dvi-achar \[vS] \[ah] S s
+.dvi-achar \[vz] \[ah] z z
+.dvi-achar \[vZ] \[ah] Z z
+.fchar \[,C] \o'\[ac]C'
+.hcode \[,C]c
+.fchar \[,c] \o'\[ac]c'
+.hcode \[,c]c
+.
+.\" now for color definitions
+.\"
+.\" this is a composite of MIT's X Consortium red/green/blue (rgb) color
+.\" specifications, X Consortium version 10.41, 1994.
+.\"
+.defcolor black rgb #000000
+.defcolor grey rgb #bebebe
+.defcolor dimgrey rgb #696969
+.defcolor lightgray rgb #d3d3d3
+.defcolor lightslategrey rgb #778899
+.defcolor slategray rgb #708090
+.defcolor slategray1 rgb #c6e2ff
+.defcolor slategray2 rgb #b9d3ee
+.defcolor slategray3 rgb #9fb6cd
+.defcolor slategray4 rgb #6c7b8b
+.defcolor slategrey rgb #708090
+.defcolor grey0 rgb #000000
+.defcolor grey1 rgb #030303
+.defcolor grey2 rgb #050505
+.defcolor grey3 rgb #080808
+.defcolor grey4 rgb #0a0a0a
+.defcolor grey5 rgb #0d0d0d
+.defcolor grey6 rgb #0f0f0f
+.defcolor grey7 rgb #121212
+.defcolor grey8 rgb #141414
+.defcolor grey9 rgb #171717
+.defcolor grey10 rgb #1a1a1a
+.defcolor grey11 rgb #1c1c1c
+.defcolor grey12 rgb #1f1f1f
+.defcolor grey13 rgb #212121
+.defcolor grey14 rgb #242424
+.defcolor grey15 rgb #262626
+.defcolor grey16 rgb #292929
+.defcolor grey17 rgb #2b2b2b
+.defcolor grey18 rgb #2e2e2e
+.defcolor grey19 rgb #303030
+.defcolor grey20 rgb #333333
+.defcolor grey21 rgb #363636
+.defcolor grey22 rgb #383838
+.defcolor grey23 rgb #3b3b3b
+.defcolor grey24 rgb #3d3d3d
+.defcolor grey25 rgb #404040
+.defcolor grey26 rgb #424242
+.defcolor grey27 rgb #454545
+.defcolor grey28 rgb #474747
+.defcolor grey29 rgb #4a4a4a
+.defcolor grey30 rgb #4d4d4d
+.defcolor grey31 rgb #4f4f4f
+.defcolor grey32 rgb #525252
+.defcolor grey33 rgb #545454
+.defcolor grey34 rgb #575757
+.defcolor grey35 rgb #595959
+.defcolor grey36 rgb #5c5c5c
+.defcolor grey37 rgb #5e5e5e
+.defcolor grey38 rgb #616161
+.defcolor grey39 rgb #636363
+.defcolor grey40 rgb #666666
+.defcolor grey41 rgb #696969
+.defcolor grey42 rgb #6b6b6b
+.defcolor grey43 rgb #6e6e6e
+.defcolor grey44 rgb #707070
+.defcolor grey45 rgb #737373
+.defcolor grey46 rgb #757575
+.defcolor grey47 rgb #787878
+.defcolor grey48 rgb #7a7a7a
+.defcolor grey49 rgb #7d7d7d
+.defcolor grey50 rgb #7f7f7f
+.defcolor grey51 rgb #828282
+.defcolor grey52 rgb #858585
+.defcolor grey53 rgb #878787
+.defcolor grey54 rgb #8a8a8a
+.defcolor grey55 rgb #8c8c8c
+.defcolor grey56 rgb #8f8f8f
+.defcolor grey57 rgb #919191
+.defcolor grey58 rgb #949494
+.defcolor grey59 rgb #969696
+.defcolor grey60 rgb #999999
+.defcolor grey61 rgb #9c9c9c
+.defcolor grey62 rgb #9e9e9e
+.defcolor grey63 rgb #a1a1a1
+.defcolor grey64 rgb #a3a3a3
+.defcolor grey65 rgb #a6a6a6
+.defcolor grey66 rgb #a8a8a8
+.defcolor grey67 rgb #ababab
+.defcolor grey68 rgb #adadad
+.defcolor grey69 rgb #b0b0b0
+.defcolor grey70 rgb #b3b3b3
+.defcolor grey71 rgb #b5b5b5
+.defcolor grey72 rgb #b8b8b8
+.defcolor grey73 rgb #bababa
+.defcolor grey74 rgb #bdbdbd
+.defcolor grey75 rgb #bfbfbf
+.defcolor grey76 rgb #c2c2c2
+.defcolor grey77 rgb #c4c4c4
+.defcolor grey78 rgb #c7c7c7
+.defcolor grey79 rgb #c9c9c9
+.defcolor grey80 rgb #cccccc
+.defcolor grey81 rgb #cfcfcf
+.defcolor grey82 rgb #d1d1d1
+.defcolor grey83 rgb #d4d4d4
+.defcolor grey84 rgb #d6d6d6
+.defcolor grey85 rgb #d9d9d9
+.defcolor grey86 rgb #dbdbdb
+.defcolor grey87 rgb #dedede
+.defcolor grey88 rgb #e0e0e0
+.defcolor grey89 rgb #e3e3e3
+.defcolor grey90 rgb #e5e5e5
+.defcolor grey91 rgb #e8e8e8
+.defcolor grey92 rgb #ebebeb
+.defcolor grey93 rgb #ededed
+.defcolor grey94 rgb #f0f0f0
+.defcolor grey95 rgb #f2f2f2
+.defcolor grey96 rgb #f5f5f5
+.defcolor grey97 rgb #f7f7f7
+.defcolor grey98 rgb #fafafa
+.defcolor grey99 rgb #fcfcfc
+.defcolor grey100 rgb #ffffff
+.defcolor aliceblue rgb #f0f8ff
+.defcolor blueviolet rgb #8a2be2
+.defcolor cadetblue rgb #5f9ea0
+.defcolor cadetblue1 rgb #98f5ff
+.defcolor cadetblue2 rgb #8ee5ee
+.defcolor cadetblue3 rgb #7ac5cd
+.defcolor cadetblue4 rgb #53868b
+.defcolor cornflowerblue rgb #6495ed
+.defcolor darkslateblue rgb #483d8b
+.defcolor darkturquoise rgb #00ced1
+.defcolor deepskyblue rgb #00bfff
+.defcolor deepskyblue1 rgb #00bfff
+.defcolor deepskyblue2 rgb #00b2ee
+.defcolor deepskyblue3 rgb #009acd
+.defcolor deepskyblue4 rgb #00688b
+.defcolor dodgerblue rgb #1e90ff
+.defcolor dodgerblue1 rgb #1e90ff
+.defcolor dodgerblue2 rgb #1c86ee
+.defcolor dodgerblue3 rgb #1874cd
+.defcolor dodgerblue4 rgb #104e8b
+.defcolor lightblue rgb #add8e6
+.defcolor lightblue1 rgb #bfefff
+.defcolor lightblue2 rgb #b2dfee
+.defcolor lightblue3 rgb #9ac0cd
+.defcolor lightblue4 rgb #68838b
+.defcolor lightcyan rgb #e0ffff
+.defcolor lightcyan1 rgb #e0ffff
+.defcolor lightcyan2 rgb #d1eeee
+.defcolor lightcyan3 rgb #b4cdcd
+.defcolor lightcyan4 rgb #7a8b8b
+.defcolor lightskyblue rgb #87cefa
+.defcolor lightskyblue1 rgb #b0e2ff
+.defcolor lightskyblue2 rgb #a4d3ee
+.defcolor lightskyblue3 rgb #8db6cd
+.defcolor lightskyblue4 rgb #607b8b
+.defcolor lightslateblue rgb #8470ff
+.defcolor lightsteelblue rgb #b0c4de
+.defcolor lightsteelblue1 rgb #cae1ff
+.defcolor lightsteelblue2 rgb #bcd2ee
+.defcolor lightsteelblue3 rgb #a2b5cd
+.defcolor lightsteelblue4 rgb #6e7b8b
+.defcolor mediumaquamarine rgb #66cdaa
+.defcolor mediumblue rgb #0000cd
+.defcolor mediumslateblue rgb #7b68ee
+.defcolor mediumturquoise rgb #48d1cc
+.defcolor midnightblue rgb #191970
+.defcolor navyblue rgb #000080
+.defcolor paleturquoise rgb #afeeee
+.defcolor paleturquoise1 rgb #bbffff
+.defcolor paleturquoise2 rgb #aeeeee
+.defcolor paleturquoise3 rgb #96cdcd
+.defcolor paleturquoise4 rgb #668b8b
+.defcolor powderblue rgb #b0e0e6
+.defcolor royalblue rgb #4169e1
+.defcolor royalblue1 rgb #4876ff
+.defcolor royalblue2 rgb #436eee
+.defcolor royalblue3 rgb #3a5fcd
+.defcolor royalblue4 rgb #27408b
+.defcolor skyblue rgb #87ceeb
+.defcolor skyblue1 rgb #87ceff
+.defcolor skyblue2 rgb #7ec0ee
+.defcolor skyblue3 rgb #6ca6cd
+.defcolor skyblue4 rgb #4a708b
+.defcolor slateblue rgb #6a5acd
+.defcolor slateblue1 rgb #836fff
+.defcolor slateblue2 rgb #7a67ee
+.defcolor slateblue3 rgb #6959cd
+.defcolor slateblue4 rgb #473c8b
+.defcolor steelblue rgb #4682b4
+.defcolor steelblue1 rgb #63b8ff
+.defcolor steelblue2 rgb #5cacee
+.defcolor steelblue3 rgb #4f94cd
+.defcolor steelblue4 rgb #36648b
+.defcolor aquamarine rgb #7fffd4
+.defcolor aquamarine1 rgb #7fffd4
+.defcolor aquamarine2 rgb #76eec6
+.defcolor aquamarine3 rgb #66cdaa
+.defcolor aquamarine4 rgb #458b74
+.defcolor azure rgb #f0ffff
+.defcolor azure1 rgb #f0ffff
+.defcolor azure2 rgb #e0eeee
+.defcolor azure3 rgb #c1cdcd
+.defcolor azure4 rgb #838b8b
+.defcolor blue rgb #0000ff
+.defcolor blue1 rgb #0000ff
+.defcolor blue2 rgb #0000ee
+.defcolor blue3 rgb #0000cd
+.defcolor blue4 rgb #00008b
+.defcolor cyan rgb #00ffff
+.defcolor cyan1 rgb #00ffff
+.defcolor cyan2 rgb #00eeee
+.defcolor cyan3 rgb #00cdcd
+.defcolor cyan4 rgb #008b8b
+.defcolor navy rgb #000080
+.defcolor turquoise rgb #40e0d0
+.defcolor turquoise1 rgb #00f5ff
+.defcolor turquoise2 rgb #00e5ee
+.defcolor turquoise3 rgb #00c5cd
+.defcolor turquoise4 rgb #00868b
+.defcolor darkslategray rgb #2f4f4f
+.defcolor darkslategray1 rgb #97ffff
+.defcolor darkslategray2 rgb #8deeee
+.defcolor darkslategray3 rgb #79cdcd
+.defcolor darkslategray4 rgb #528b8b
+.defcolor rosybrown rgb #bc8f8f
+.defcolor rosybrown1 rgb #ffc1c1
+.defcolor rosybrown2 rgb #eeb4b4
+.defcolor rosybrown3 rgb #cd9b9b
+.defcolor rosybrown4 rgb #8b6969
+.defcolor saddlebrown rgb #8b4513
+.defcolor sandybrown rgb #f4a460
+.defcolor beige rgb #f5f5dc
+.defcolor brown rgb #a52a2a
+.defcolor brown1 rgb #ff4040
+.defcolor brown2 rgb #ee3b3b
+.defcolor brown3 rgb #cd3333
+.defcolor brown4 rgb #8b2323
+.defcolor burlywood rgb #deb887
+.defcolor burlywood1 rgb #ffd39b
+.defcolor burlywood2 rgb #eec591
+.defcolor burlywood3 rgb #cdaa7d
+.defcolor burlywood4 rgb #8b7355
+.defcolor chocolate rgb #d2691e
+.defcolor chocolate1 rgb #ff7f24
+.defcolor chocolate2 rgb #ee7621
+.defcolor chocolate3 rgb #cd661d
+.defcolor chocolate4 rgb #8b4513
+.defcolor peru rgb #cd853f
+.defcolor tan rgb #d2b48c
+.defcolor tan1 rgb #ffa54f
+.defcolor tan2 rgb #ee9a49
+.defcolor tan3 rgb #cd853f
+.defcolor tan4 rgb #8b5a2b
+.defcolor darkgreen rgb #006400
+.defcolor darkkhaki rgb #bdb76b
+.defcolor darkolivegreen rgb #556b2f
+.defcolor darkolivegreen1 rgb #caff70
+.defcolor darkolivegreen2 rgb #bcee68
+.defcolor darkolivegreen3 rgb #a2cd5a
+.defcolor darkolivegreen4 rgb #6e8b3d
+.defcolor darkseagreen rgb #8fbc8f
+.defcolor darkseagreen1 rgb #c1ffc1
+.defcolor darkseagreen2 rgb #b4eeb4
+.defcolor darkseagreen3 rgb #9bcd9b
+.defcolor darkseagreen4 rgb #698b69
+.defcolor forestgreen rgb #228b22
+.defcolor greenyellow rgb #adff2f
+.defcolor lawngreen rgb #7cfc00
+.defcolor lightseagreen rgb #20b2aa
+.defcolor limegreen rgb #32cd32
+.defcolor mediumseagreen rgb #3cb371
+.defcolor mediumspringgreen rgb #00fa9a
+.defcolor mintcream rgb #f5fffa
+.defcolor olivedrab rgb #6b8e23
+.defcolor olivedrab1 rgb #c0ff3e
+.defcolor olivedrab2 rgb #b3ee3a
+.defcolor olivedrab3 rgb #9acd32
+.defcolor olivedrab4 rgb #698b22
+.defcolor palegreen rgb #98fb98
+.defcolor palegreen1 rgb #9aff9a
+.defcolor palegreen2 rgb #90ee90
+.defcolor palegreen3 rgb #7ccd7c
+.defcolor palegreen4 rgb #548b54
+.defcolor seagreen rgb #2e8b57
+.defcolor seagreen1 rgb #54ff9f
+.defcolor seagreen2 rgb #4eee94
+.defcolor seagreen3 rgb #43cd80
+.defcolor seagreen4 rgb #2e8b57
+.defcolor springgreen rgb #00ff7f
+.defcolor springgreen1 rgb #00ff7f
+.defcolor springgreen2 rgb #00ee76
+.defcolor springgreen3 rgb #00cd66
+.defcolor springgreen4 rgb #008b45
+.defcolor yellowgreen rgb #9acd32
+.defcolor chartreuse rgb #7fff00
+.defcolor chartreuse1 rgb #7fff00
+.defcolor chartreuse2 rgb #76ee00
+.defcolor chartreuse3 rgb #66cd00
+.defcolor chartreuse4 rgb #458b00
+.defcolor green rgb #00ff00
+.defcolor green1 rgb #00ff00
+.defcolor green2 rgb #00ee00
+.defcolor green3 rgb #00cd00
+.defcolor green4 rgb #008b00
+.defcolor khaki rgb #f0e68c
+.defcolor khaki1 rgb #fff68f
+.defcolor khaki2 rgb #eee685
+.defcolor khaki3 rgb #cdc673
+.defcolor khaki4 rgb #8b864e
+.defcolor darkorange rgb #ff8c00
+.defcolor darkorange1 rgb #ff7f00
+.defcolor darkorange2 rgb #ee7600
+.defcolor darkorange3 rgb #cd6600
+.defcolor darkorange4 rgb #8b4500
+.defcolor darksalmon rgb #e9967a
+.defcolor lightcoral rgb #f08080
+.defcolor lightsalmon rgb #ffa07a
+.defcolor lightsalmon1 rgb #ffa07a
+.defcolor lightsalmon2 rgb #ee9572
+.defcolor lightsalmon3 rgb #cd8162
+.defcolor lightsalmon4 rgb #8b5742
+.defcolor peachpuff rgb #ffdab9
+.defcolor peachpuff1 rgb #ffdab9
+.defcolor peachpuff2 rgb #eecbad
+.defcolor peachpuff3 rgb #cdaf95
+.defcolor peachpuff4 rgb #8b7765
+.defcolor bisque rgb #ffe4c4
+.defcolor bisque1 rgb #ffe4c4
+.defcolor bisque2 rgb #eed5b7
+.defcolor bisque3 rgb #cdb79e
+.defcolor bisque4 rgb #8b7d6b
+.defcolor coral rgb #ff7f50
+.defcolor coral1 rgb #ff7256
+.defcolor coral2 rgb #ee6a50
+.defcolor coral3 rgb #cd5b45
+.defcolor coral4 rgb #8b3e2f
+.defcolor honeydew rgb #f0fff0
+.defcolor honeydew1 rgb #f0fff0
+.defcolor honeydew2 rgb #e0eee0
+.defcolor honeydew3 rgb #c1cdc1
+.defcolor honeydew4 rgb #838b83
+.defcolor orange rgb #ffa500
+.defcolor orange1 rgb #ffa500
+.defcolor orange2 rgb #ee9a00
+.defcolor orange3 rgb #cd8500
+.defcolor orange4 rgb #8b5a00
+.defcolor salmon rgb #fa8072
+.defcolor salmon1 rgb #ff8c69
+.defcolor salmon2 rgb #ee8262
+.defcolor salmon3 rgb #cd7054
+.defcolor salmon4 rgb #8b4c39
+.defcolor sienna rgb #a0522d
+.defcolor sienna1 rgb #ff8247
+.defcolor sienna2 rgb #ee7942
+.defcolor sienna3 rgb #cd6839
+.defcolor sienna4 rgb #8b4726
+.defcolor deeppink rgb #ff1493
+.defcolor deeppink1 rgb #ff1493
+.defcolor deeppink2 rgb #ee1289
+.defcolor deeppink3 rgb #cd1076
+.defcolor deeppink4 rgb #8b0a50
+.defcolor hotpink rgb #ff69b4
+.defcolor hotpink1 rgb #ff6eb4
+.defcolor hotpink2 rgb #ee6aa7
+.defcolor hotpink3 rgb #cd6090
+.defcolor hotpink4 rgb #8b3a62
+.defcolor indianred rgb #cd5c5c
+.defcolor indianred1 rgb #ff6a6a
+.defcolor indianred2 rgb #ee6363
+.defcolor indianred3 rgb #cd5555
+.defcolor indianred4 rgb #8b3a3a
+.defcolor lightpink rgb #ffb6c1
+.defcolor lightpink1 rgb #ffaeb9
+.defcolor lightpink2 rgb #eea2ad
+.defcolor lightpink3 rgb #cd8c95
+.defcolor lightpink4 rgb #8b5f65
+.defcolor mediumvioletred rgb #c71585
+.defcolor mistyrose rgb #ffe4e1
+.defcolor mistyrose1 rgb #ffe4e1
+.defcolor mistyrose2 rgb #eed5d2
+.defcolor mistyrose3 rgb #cdb7b5
+.defcolor mistyrose4 rgb #8b7d7b
+.defcolor orangered rgb #ff4500
+.defcolor orangered1 rgb #ff4500
+.defcolor orangered2 rgb #ee4000
+.defcolor orangered3 rgb #cd3700
+.defcolor orangered4 rgb #8b2500
+.defcolor palevioletred rgb #db7093
+.defcolor palevioletred1 rgb #ff82ab
+.defcolor palevioletred2 rgb #ee799f
+.defcolor palevioletred3 rgb #cd6889
+.defcolor palevioletred4 rgb #8b475d
+.defcolor violetred rgb #d02090
+.defcolor violetred1 rgb #ff3e96
+.defcolor violetred2 rgb #ee3a8c
+.defcolor violetred3 rgb #cd3278
+.defcolor violetred4 rgb #8b2252
+.defcolor firebrick rgb #b22222
+.defcolor firebrick1 rgb #ff3030
+.defcolor firebrick2 rgb #ee2c2c
+.defcolor firebrick3 rgb #cd2626
+.defcolor firebrick4 rgb #8b1a1a
+.defcolor pink rgb #ffc0cb
+.defcolor pink1 rgb #ffb5c5
+.defcolor pink2 rgb #eea9b8
+.defcolor pink3 rgb #cd919e
+.defcolor pink4 rgb #8b636c
+.defcolor red rgb #ff0000
+.defcolor red1 rgb #ff0000
+.defcolor red2 rgb #ee0000
+.defcolor red3 rgb #cd0000
+.defcolor red4 rgb #8b0000
+.defcolor tomato rgb #ff6347
+.defcolor tomato1 rgb #ff6347
+.defcolor tomato2 rgb #ee5c42
+.defcolor tomato3 rgb #cd4f39
+.defcolor tomato4 rgb #8b3626
+.defcolor darkorchid rgb #9932cc
+.defcolor darkorchid1 rgb #bf3eff
+.defcolor darkorchid2 rgb #b23aee
+.defcolor darkorchid3 rgb #9a32cd
+.defcolor darkorchid4 rgb #68228b
+.defcolor darkviolet rgb #9400d3
+.defcolor lavenderblush rgb #fff0f5
+.defcolor lavenderblush1 rgb #fff0f5
+.defcolor lavenderblush2 rgb #eee0e5
+.defcolor lavenderblush3 rgb #cdc1c5
+.defcolor lavenderblush4 rgb #8b8386
+.defcolor mediumorchid rgb #ba55d3
+.defcolor mediumorchid1 rgb #e066ff
+.defcolor mediumorchid2 rgb #d15fee
+.defcolor mediumorchid3 rgb #b452cd
+.defcolor mediumorchid4 rgb #7a378b
+.defcolor mediumpurple rgb #9370db
+.defcolor mediumpurple1 rgb #ab82ff
+.defcolor mediumpurple2 rgb #9f79ee
+.defcolor mediumpurple3 rgb #8968cd
+.defcolor mediumpurple4 rgb #5d478b
+.defcolor lavender rgb #e6e6fa
+.defcolor magenta rgb #ff00ff
+.defcolor magenta1 rgb #ff00ff
+.defcolor magenta2 rgb #ee00ee
+.defcolor magenta3 rgb #cd00cd
+.defcolor magenta4 rgb #8b008b
+.defcolor maroon rgb #b03060
+.defcolor maroon1 rgb #ff34b3
+.defcolor maroon2 rgb #ee30a7
+.defcolor maroon3 rgb #cd2990
+.defcolor maroon4 rgb #8b1c62
+.defcolor orchid rgb #da70d6
+.defcolor orchid1 rgb #ff83fa
+.defcolor orchid2 rgb #ee7ae9
+.defcolor orchid3 rgb #cd69c9
+.defcolor orchid4 rgb #8b4789
+.defcolor plum rgb #dda0dd
+.defcolor plum1 rgb #ffbbff
+.defcolor plum2 rgb #eeaeee
+.defcolor plum3 rgb #cd96cd
+.defcolor plum4 rgb #8b668b
+.defcolor purple rgb #a020f0
+.defcolor purple1 rgb #9b30ff
+.defcolor purple2 rgb #912cee
+.defcolor purple3 rgb #7d26cd
+.defcolor purple4 rgb #551a8b
+.defcolor thistle rgb #d8bfd8
+.defcolor thistle1 rgb #ffe1ff
+.defcolor thistle2 rgb #eed2ee
+.defcolor thistle3 rgb #cdb5cd
+.defcolor thistle4 rgb #8b7b8b
+.defcolor violet rgb #ee82ee
+.defcolor antiquewhite rgb #faebd7
+.defcolor antiquewhite1 rgb #ffefdb
+.defcolor antiquewhite2 rgb #eedfcc
+.defcolor antiquewhite3 rgb #cdc0b0
+.defcolor antiquewhite4 rgb #8b8378
+.defcolor floralwhite rgb #fffaf0
+.defcolor ghostwhite rgb #f8f8ff
+.defcolor navajowhite rgb #ffdead
+.defcolor navajowhite1 rgb #ffdead
+.defcolor navajowhite2 rgb #eecfa1
+.defcolor navajowhite3 rgb #cdb38b
+.defcolor navajowhite4 rgb #8b795e
+.defcolor oldlace rgb #fdf5e6
+.defcolor whitesmoke rgb #f5f5f5
+.defcolor gainsboro rgb #dcdcdc
+.defcolor ivory rgb #fffff0
+.defcolor ivory1 rgb #fffff0
+.defcolor ivory2 rgb #eeeee0
+.defcolor ivory3 rgb #cdcdc1
+.defcolor ivory4 rgb #8b8b83
+.defcolor linen rgb #faf0e6
+.defcolor seashell rgb #fff5ee
+.defcolor seashell1 rgb #fff5ee
+.defcolor seashell2 rgb #eee5de
+.defcolor seashell3 rgb #cdc5bf
+.defcolor seashell4 rgb #8b8682
+.defcolor snow rgb #fffafa
+.defcolor snow1 rgb #fffafa
+.defcolor snow2 rgb #eee9e9
+.defcolor snow3 rgb #cdc9c9
+.defcolor snow4 rgb #8b8989
+.defcolor wheat rgb #f5deb3
+.defcolor wheat1 rgb #ffe7ba
+.defcolor wheat2 rgb #eed8ae
+.defcolor wheat3 rgb #cdba96
+.defcolor wheat4 rgb #8b7e66
+.defcolor white rgb #ffffff
+.defcolor blanchedalmond rgb #ffebcd
+.defcolor darkgoldenrod rgb #b8860b
+.defcolor darkgoldenrod1 rgb #ffb90f
+.defcolor darkgoldenrod2 rgb #eead0e
+.defcolor darkgoldenrod3 rgb #cd950c
+.defcolor darkgoldenrod4 rgb #8b6508
+.defcolor lemonchiffon rgb #fffacd
+.defcolor lemonchiffon1 rgb #fffacd
+.defcolor lemonchiffon2 rgb #eee9bf
+.defcolor lemonchiffon3 rgb #cdc9a5
+.defcolor lemonchiffon4 rgb #8b8970
+.defcolor lightgoldenrod rgb #eedd82
+.defcolor lightgoldenrod1 rgb #ffec8b
+.defcolor lightgoldenrod2 rgb #eedc82
+.defcolor lightgoldenrod3 rgb #cdbe70
+.defcolor lightgoldenrod4 rgb #8b814c
+.defcolor lightgoldenrodyellow rgb #fafad2
+.defcolor lightyellow rgb #ffffe0
+.defcolor lightyellow1 rgb #ffffe0
+.defcolor lightyellow2 rgb #eeeed1
+.defcolor lightyellow3 rgb #cdcdb4
+.defcolor lightyellow4 rgb #8b8b7a
+.defcolor palegoldenrod rgb #eee8aa
+.defcolor papayawhip rgb #ffefd5
+.defcolor cornsilk rgb #fff8dc
+.defcolor cornsilk1 rgb #fff8dc
+.defcolor cornsilk2 rgb #eee8cd
+.defcolor cornsilk3 rgb #cdc8b1
+.defcolor cornsilk4 rgb #8b8878
+.defcolor gold rgb #ffd700
+.defcolor gold1 rgb #ffd700
+.defcolor gold2 rgb #eec900
+.defcolor gold3 rgb #cdad00
+.defcolor gold4 rgb #8b7500
+.defcolor goldenrod rgb #daa520
+.defcolor goldenrod1 rgb #ffc125
+.defcolor goldenrod2 rgb #eeb422
+.defcolor goldenrod3 rgb #cd9b1d
+.defcolor goldenrod4 rgb #8b6914
+.defcolor moccasin rgb #ffe4b5
+.defcolor yellow rgb #ffff00
+.defcolor yellow1 rgb #ffff00
+.defcolor yellow2 rgb #eeee00
+.defcolor yellow3 rgb #cdcd00
+.defcolor yellow4 rgb #8b8b00
+.
.cp \n(_C
-.do mso latin1.tmac
+.
+.if !\n(.C \
+. mso pspic.tmac
+.
+.do ie '\[char97]'a' \
+. do mso latin1.tmac
+.el \
+. do mso cp1047.tmac
diff --git a/contrib/groff/tmac/e.tmac b/contrib/groff/tmac/e.tmac
index 8ea4074..b8dd9f3 100644
--- a/contrib/groff/tmac/e.tmac
+++ b/contrib/groff/tmac/e.tmac
@@ -184,7 +184,7 @@
.rs
.if \\n(hm>0 \
. sp |\\n(hmu \" move to header position
-.@t $h \" output header title
+.@t $h\" \" output header title
.if \\n(tm<=0 \
. nr tm \n(.Vu
.sp |\\n(tmu \" move to top of text
@@ -200,7 +200,7 @@
' @b
.\}
.el \
-. @n \" begin the column
+. @n\" \" begin the column
.if \n@>2 .tm << @h
..
.de @n \" --- new column or page
@@ -222,7 +222,7 @@
.nr ?f 0 \" reset footnote flag
.if \\n(?o \
\{\
-. (f _ \" reprocess footnotes which run off page
+. (f _\" \" reprocess footnotes which run off page
. nf
. |o
. fi
@@ -234,7 +234,7 @@
\{\
. nr _i \\n(.i
. in 0
-. |h \" output the table header
+. |h\" \" output the table header
. in \\n(_iu
. rr _i
. mk #T \" for tbl commands
@@ -249,7 +249,7 @@
. nr ?w 0
.\}
.os
-.$H \" special column header macro
+.$H\" \" special column header macro
.ns
..
.de @f \" --- footer
@@ -260,7 +260,7 @@
.if \\n(?T \
\{\
. nr T. 1 \" for tbl commands (to output bottom line)
-. T# 1 \" output the sides and bottom lines
+. T# 1\" \" output the sides and bottom lines
. br
.\}
.ev 2
@@ -271,11 +271,11 @@
. @k |b\" \" output bottom of page tables
.\}
.if \\n(?f \
-. @o \" output footnote if present
+. @o\" \" output footnote if present
.ie \\n($c<\\n($m \
-. @c \" handle new column
+. @c\" \" handle new column
.el \
-. @e \" new page
+. @e\" \" new page
.ev
.if \n@>2 .tm << @f
..
@@ -315,14 +315,14 @@
.@O \\n(_ou
.rs
.sp |\\n(.pu-\\n(fmu-((\\n(tpp*\\n($vu)/100u) \" move to footer position
-.@t $f \" output footer title
+.@t $f\" \" output footer title
.nr ?h 0
.bp
..
.de @t \" --- output header or footer title
.if !\\n(?h \
\{\
-. sz \\n(tp \" set header/footer type fonts, etc.
+. sz \\n(tp\" \" set header/footer type fonts, etc.
. @F \\n(tf
. lt \\n(_Lu \" make title span entire page
. nf
@@ -375,7 +375,7 @@
. if \\n(.$>0 \
. pn \\$1
. if \\n(?I \
-. @h \" 'spring' the header trap
+. @h\" \" 'spring' the header trap
.\}
.br
.wh 0 @h \" reset header
@@ -678,7 +678,7 @@
.de 2c \" *** double columned output
.br
.if \\n($m>1 \
-. 1c \" revert to 1c if already 2c
+. 1c\" \" revert to 1c if already 2c
.nr $c 1
.nr $m 2
.if \\n(.$>1 \
@@ -795,7 +795,7 @@
.sp \\n(bsu+\\n(.Lv-1v
..
.de @( \" --- begin keep
-.if !"\\n(.z"" .tm Line \\n(c. -- Illegal nested keep \\n(.z
+.if !"\\n(.z"" .tm Line \\n(c. -- Invalid nested keep \\n(.z
.@M
.di |k
\!'rs
@@ -905,7 +905,7 @@
. nr ?e 0
. di
. if \\n(dn \
-. @q \" actual equation output
+. @q\" \" actual equation output
. rm |e
. ev
.\}
@@ -916,7 +916,7 @@
.sp \\n(esu \" output rest of preceeding text
.if !"\\n(.z"" \!.ne \\n(_Qu
.ne \\n(_Qu+\n(.Vu \" keep it on one page
-.@C 2 \" .ev 2 may be jumbled from header
+.@C 2\" \" .ev 2 may be jumbled from header
.if \\n(_d=1 \
. in (\\n(.lu+\\n($iu-\\n(dlu)/2u
.if \\n(_d=2 \
@@ -967,7 +967,7 @@
.nr ?T \\n(_T
.nr _i \\n(.i
.in 0
-.|h \" put in the initial header
+.|h\" \" put in the initial header
.in \\n(_iu
.rr _i
.mk #T
@@ -1215,7 +1215,7 @@ in \\f2\\*([B\\f1, \c
.\" *** FOOTNOTING ***
.de (f \" *** begin footnote
.ec
-.if "\\n(.z"|f" .tm Line \\n(c. -- Illegal footnote nesting
+.if "\\n(.z"|f" .tm Line \\n(c. -- Invalid footnote nesting
.ie "\\n(.z"" \
\{\
. nr _D \\n(dn
@@ -1403,7 +1403,7 @@ in \\f2\\*([B\\f1, \c
.rm |x
..
.de +c \" *** begin chapter
-.ep \" force out footnotes
+.ep\" \" force out footnotes
.if \\n(?o:\\n(?a \
\{\
. bp \" force out a table or more footnote
@@ -1452,7 +1452,7 @@ in \\f2\\*([B\\f1, \c
. pn 1 \" must do before .ep
.if !\\n(_0=\\n(_M .if \\n(_M=3 \
. pn 1 \" must do before .ep
-.ep \" end page for correct page number types
+.ep\" \" end page for correct page number types
.if \\n(_0=1 \
\{\
. af ch 1
diff --git a/contrib/groff/tmac/ec.tmac b/contrib/groff/tmac/ec.tmac
new file mode 100644
index 0000000..d8bff62
--- /dev/null
+++ b/contrib/groff/tmac/ec.tmac
@@ -0,0 +1,57 @@
+.\" ec.tmac
+.\"
+.\" Switch to EC fonts.
+.\"
+.\" Load this file before any language-specific stuff.
+.\"
+.\" hcode values are not handled.
+.\"
+.
+.nr _C \n(.C
+.cp 0
+.
+.ftr R REC
+.ftr I IEC
+.ftr B BEC
+.ftr BI BIEC
+.
+.sty 1 R
+.sty 2 B
+.sty 3 I
+.sty 4 BI
+.
+.ftr CW CWEC
+.ftr CWI CWIEC
+.ftr CR CWEC
+.ftr C CWEC
+.ftr CO CWIEC
+.ftr CI CWIEC
+.ftr TT CWEC
+.ftr H HREC
+.
+.fspecial TREC TRTC
+.fspecial TIEC TITC
+.fspecial TBEC TBTC
+.fspecial TBIEC TBITC
+.fspecial HREC HRTC
+.fspecial HIEC HITC
+.fspecial HBEC HBTC
+.fspecial HBIEC HBIEC
+.fspecial CWEC CWTC
+.fspecial CWIEC CWITC
+.
+.\" remove definitions of glyphs which are TC fonts
+.rchar \[co] \[rg]
+.rchar \[ct]
+.rchar \[tm]
+.rchar \[aq]
+.rchar \[12] \[14] \[34]
+.rchar \[S1] \[S2] \[S3]
+.rchar \[Of] \[Om]
+.rchar \[Ye] \[Cs]
+.
+.\" an ID register
+.nr ECFONTS 1
+.
+.cp \n(_C
+.\" EOF
diff --git a/contrib/groff/tmac/groff_man.man b/contrib/groff/tmac/groff_man.man
index 89efa4f..2a1396e 100644
--- a/contrib/groff/tmac/groff_man.man
+++ b/contrib/groff/tmac/groff_man.man
@@ -1,5 +1,5 @@
.ig
-Copyright (C) 1999-2000, 2001 Free Software Foundation, Inc.
+Copyright (C) 1999-2000, 2001, 2002 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
@@ -32,19 +32,19 @@ groff_man \- groff `man' macros to support generation of man pages
.B groff
.B \-man
[
-.IR options .\|.\|.
+.IR options .\|.\|.\&
]
[
-.IR files .\|.\|.
+.IR files .\|.\|.\&
]
.br
.B groff
.B \-m\ man
[
-.IR options .\|.\|.
+.IR options .\|.\|.\&
]
[
-.IR files .\|.\|.
+.IR files .\|.\|.\&
]
.
.SH DESCRIPTION
@@ -64,6 +64,16 @@ The
macros understand the following command line options (which define various
registers).
.TP
+.BI \-rLL= line-length
+Set line length.
+If this option is not given, the line length defaults to 78n in nroff mode
+and 6.5i in troff mode.
+.TP
+.BI \-rLT= title-length
+Set title length.
+If this option is not given, the title length defaults to 78n in nroff mode
+and 6.5i in troff mode.
+.TP
.B \-rcR=1
This option (the default if in nroff mode) will create a single, very long
page instead of multiple pages.
@@ -151,8 +161,8 @@ macro at the beginning of the file.
Sets up an unnumbered section heading sticking out to the left.
Prints out all the text following
.B SH
-up to the end of the line (resp. the text in the next line if there is no
-argument to
+up to the end of the line (resp. the text in the next input line if there is
+no argument to
.BR SH )
in bold face, one size larger than the base document size.
Additionally, the left margin for the following text is reset to its default
@@ -162,8 +172,8 @@ value.
Sets up an secondary, unnumbered section heading.
Prints out all the text following
.B SS
-up to the end of the line (resp. the text in the next line if there is no
-argument to
+up to the end of the line (resp. the text in the next input line if there is
+no argument to
.BR SS )
in bold face, at the same size as the base document size.
Additionally, the left margin for the following text is reset to its default
@@ -175,8 +185,8 @@ The indentation is set to
.I nnn
if that argument is supplied (the default unit is `n' if omitted), otherwise
it is set to the default indentation value.
-The first line of text following this macro is interpreted as a string to be
-printed flush-left, as it is appropriate for a label.
+The first input line of text following this macro is interpreted as a string
+to be printed flush-left, as it is appropriate for a label.
It is not interpreted as part of a paragraph, so there is no attempt to fill
the first line with text from the following input lines.
Nevertheless, if the label is not as wide as the indentation, then the
@@ -290,18 +300,27 @@ The macros
and
.B RE
also cause a break but no insertion of vertical space.
+Finally, the macros
+.BR SH ,
+.BR SS ,
+.B LP
+.RB ( PP ,
+.BR P ),
+and
+.B RS
+reset the indentation to its default value.
.
.SH "MACROS TO SET FONTS"
.
The standard font is Roman; the default text size is 10\ point.
.TP
.BI ".SM [" text ]
-Causes the text on the same line or the text on the next line to appear in a
-font that is one point size smaller than the default font.
+Causes the text on the same line or the text on the next input line to
+appear in a font that is one point size smaller than the default font.
.TP
.BI ".SB [" text ]
-Causes the text on the same line or the text on the next line to appear in
-boldface font, one point size smaller than the default font.
+Causes the text on the same line or the text on the next input line to
+appear in boldface font, one point size smaller than the default font.
.TP
.BI ".BI " text
Causes text on the same line to appear alternately in bold face and italic.
@@ -335,28 +354,19 @@ The text must be on the same line as the macro call.
Causes text on the same line to appear alternately in roman and bold face.
The text must be on the same line as the macro call.
.TP
-.BI ".R [" text ]
-Causes
-.I text
-to appear in roman font.
-If no text is present on the line where the macro is called, then the text
-of the next line appears in roman.
-This is the default font to which text is returned at the end of processing
-of the other macros.
-.TP
.BI ".B [" text ]
Causes
.I text
to appear in bold face.
If no text is present on the line where the macro is called, then the text
-of the next line appears in bold face.
+of the next input line appears in bold face.
.TP
.BI ".I [" text ]
Causes
.I text
to appear in italic.
If no text is present on the line where the macro is called, then the text
-of the next line appears in italic.
+of the next input line appears in italic.
.
.SH "MISCELLANEOUS"
.
diff --git a/contrib/groff/tmac/groff_mdoc.man b/contrib/groff/tmac/groff_mdoc.man
index c13ad1f..5033cb5 100644
--- a/contrib/groff/tmac/groff_mdoc.man
+++ b/contrib/groff/tmac/groff_mdoc.man
@@ -46,7 +46,7 @@
.\" for an already extremely slow package.
.\"
.
-.Dd July 20, 2001
+.Dd October 07, 2002
.Os
.Dt GROFF_MDOC 7
.
@@ -102,7 +102,7 @@ options, function names, function parameters, pathnames, variables, cross
references to other manual pages, and so on.
These domain items have value for both the author and the future user of the
manual page.
-It is hoped the consistency gained across the manual set will provide easier
+Hopefully, the consistency gained across the manual set will provide easier
translation to future documentation tools.
.Pp
Throughout the
@@ -245,7 +245,7 @@ as follows:
The
.Nm \-mdoc
package attempts to simplify the process of writing a man page.
-Theoretically, one should not have to learn the dirty details of
+Theoretically, one should not have to learn the tricky details of
.Tn GNU
.Xr troff 1
to use
@@ -265,10 +265,10 @@ a macro is called by placing a
.Ql .\&
(dot character) at the beginning of a line followed by the two-character
(or three-character) name for the macro.
-There can be space characters between the dot and the macro name (but
+There can be space or tab characters between the dot and the macro name.
+Arguments may follow the macro separated by spaces (but
.Em no
tabs).
-Arguments may follow the macro separated by spaces (again, no tabs).
It is the dot character at the beginning of the line which causes
.Tn GNU
.Xr troff 1
@@ -281,11 +281,8 @@ a macro invocation, precede the
.Ql .\&
(dot) with the
.Ql \e&
-escape sequence.
-The
-.Ql \e&
-translates literally to a zero-width space, and is never displayed in
-the output.
+escape sequence which translates literally to a zero-width space, and is
+never displayed in the output.
.Pp
In general,
.Tn GNU
@@ -307,14 +304,13 @@ argument lists are
.Em parsed
for callable macro names.
This means an argument on the argument list which matches a general text or
-manual domain macro name and is determined to be callable will be executed
-or called when it is processed.
+manual domain macro name (and which is defined to be callable) will be
+executed or called when it is processed.
In this case the argument, although the name of a macro, is not preceded by
a
.Ql .\&
(dot).
-It is in this manner that many macros are nested; for example the
-option macro,
+This makes it possible to nest macros; for example the option macro,
.Ql .Op ,
may
.Em call
@@ -361,15 +357,22 @@ are parsed, but as it was cumbersome to constantly refer to macros as
being callable and being able to call other macros, the term parsed
has been used.
.
+.Pp
+In the following, we call an
+.Nm \-mdoc
+macro which starts a line (with a leading dot) a
+.Em command
+if this distinction is necessary.
+.
.Ss "Passing Space Characters in an Argument"
.
Sometimes it is desirable to give as an argument a string containing one or
-more blank space characters.
-This may be necessary to specify arguments to macros which expect particular
-arrangement of items in the argument list. Additionally, it makes
+more blank space characters, say, to specify arguments to commands which
+expect particular arrangement of items in the argument list.
+Additionally, it makes
.Nm \-mdoc
working faster.
-For example, the function macro
+For example, the function command
.Ql .Fn
expects the first argument to be the name of a function and any remaining
arguments to be function parameters.
@@ -438,7 +441,7 @@ It is a wise preventive measure to globally remove all blank spaces
from
.Ao blank-space Ac Ns Ao end-of-line Ac
character sequences.
-Should the need arise to force a blank character at the end of a line, it
+Should the need arise to use a blank character at the end of a line, it
may be forced with an unpaddable space and the
.Ql \e&
escape character.
@@ -559,33 +562,33 @@ extension); the rest of such a line is ignored.
The body of a man page is easily constructed from a basic template:
.
.Bd -literal -offset indent
-\&.\e" The following requests are required for all man pages.
+\&.\e" The following commands are required for all man pages.
\&.Dd Month day, year
\&.Os [OPERATING_SYSTEM] [version/release]
\&.Dt DOCUMENT_TITLE [section number] [architecture/volume]
\&.Sh NAME
\&.Nm name
\&.Nd one line description of name
-\&.\e" This next request is for sections 2 and 3 only.
+\&.\e" This next command is for sections 2 and 3 only.
\&.\e" .Sh LIBRARY
\&.Sh SYNOPSIS
\&.Sh DESCRIPTION
-\&.\e" The following requests should be uncommented and
+\&.\e" The following commands should be uncommented and
\&.\e" used where appropriate.
\&.\e" .Sh IMPLEMENTATION NOTES
-\&.\e" This next request is for sections 2, 3 and 9 function
+\&.\e" This next command is for sections 2, 3 and 9 function
\&.\e" return values only.
\&.\e" .Sh RETURN VALUES
-\&.\e" This next request is for sections 1, 6, 7 and 8 only.
+\&.\e" This next command is for sections 1, 6, 7 and 8 only.
\&.\e" .Sh ENVIRONMENT
\&.\e" .Sh FILES
\&.\e" .Sh EXAMPLES
-\&.\e" This next request is for sections 1, 6, 7, 8 and 9 only
+\&.\e" This next command is for sections 1, 6, 7, 8 and 9 only
\&.\e" (command return values (to shell) and
\&.\e" fprintf/stderr type diagnostics).
\&.\e" .Sh DIAGNOSTICS
\&.\e" .Sh COMPATIBILITY
-\&.\e" This next request is for sections 2, 3 and 9 error
+\&.\e" This next command is for sections 2, 3 and 9 error
\&.\e" and signal handling only.
\&.\e" .Sh ERRORS
\&.\e" .Sh SEE ALSO
@@ -596,7 +599,7 @@ The body of a man page is easily constructed from a basic template:
.Ed
.Pp
.
-The first items in the template are the macros
+The first items in the template are the commands
.Ql .Dd ,
.Ql .Os ,
and
@@ -605,7 +608,7 @@ the document date, the operating system the man page or subject source is
developed or modified for, and the man page title (in
.Em upper case )
along with the section of the manual the page belongs in.
-These macros identify the page and are discussed below in
+These commands identify the page and are discussed below in
.Sx TITLE MACROS .
.Pp
The remaining items in the template are section headers
@@ -653,6 +656,21 @@ Example:
.Pp
Except stated explicitly, all macros are parsed and callable.
.Pp
+Note that a macro takes effect up to the next nested macro.
+For example,
+.Ql ".Ic foo Aq bar"
+doesn't produce
+.Sq Ic "foo <bar>"
+but
+.Sq Ic foo Aq bar .
+Consequently, a warning message is emitted for most commands if the first
+argument is a macro itself since it cancels the effect of the calling
+command completely.
+Another consequence is that quoting macros never insert literal quotes;
+.Sq Ic "foo <bar>"
+has been produced by
+.Ql ".Ic \*[q]foo <bar>\*[q]" .
+.Pp
Most macros have a default width value which can be used to specify a label
width
.Pf ( Fl width )
@@ -898,7 +916,7 @@ Slightly different variations of this language are used to describe the
three different aspects of writing a man page.
First, there is the description of
.Nm \-mdoc
-macro request usage.
+macro command usage.
Second is the description of a
.Ux
command
@@ -918,7 +936,7 @@ command is:
.Pp
.
.Ql .Xx
-is a macro command or request, and anything following it are arguments to
+is a macro command, and anything following it are arguments to
be processed.
In the second case, the description of a
.Ux
@@ -1053,7 +1071,7 @@ impose an order on their argument lists.
All content macros are capable of recognizing and properly handling
punctuation, provided each punctuation character is separated by a leading
space.
-If a request is given:
+If a command is given:
.Pp
.Dl \&.Ar sptr, ptr),
.Pp
@@ -1147,7 +1165,7 @@ In the
.Sx AUTHORS
section, the
.Ql .An
-request causes a line break allowing each new name to appear on its own
+command causes a line break allowing each new name to appear on its own
line.
If this is not desirable,
.
@@ -1211,7 +1229,7 @@ In the
.Sx SYNOPSIS
section a
.Ql .Cd
-request causes a line break before and after its arguments are printed.
+command causes a line break before and after its arguments are printed.
.Pp
.
The default width is 12n.
@@ -1359,7 +1377,7 @@ In the
.Sx SYNOPSIS
section a
.Ql .Fd
-request causes a line break if a function has already been presented and a
+command causes a line break if a function has already been presented and a
break has not occurred.
This leaves a nice vertical space in between the previous function call and
the declaration for the next function.
@@ -2047,7 +2065,7 @@ For possible values of
.Ao version Ac
see the description of the
.Ql .Os
-request above in section
+command above in section
.Sx "TITLE MACROS" .
.
.Ss "FreeBSD Macro"
@@ -2066,7 +2084,7 @@ For possible values of
.Ao version Ac
see the description of the
.Ql .Os
-request above in section
+command above in section
.Sx "TITLE MACROS" .
.
.Ss "OpenBSD Macro"
@@ -2337,7 +2355,7 @@ Note: The
macro always invokes the
.Ql .No
macro after eliminating the space unless another macro name follows it.
-If used as a request (i.e., the second form above in the
+If used as a command (i.e., the second form above in the
.Sq Usage
line),
.Ql .Ns
@@ -3825,6 +3843,7 @@ The following strings are predefined:
.It Li Gt Ta > Ta \*[Gt] Ta "greater than"
.It Li Pm Ta +\- Ta \*[Pm] Ta "plus minus"
.It Li If Ta infinity Ta \*[If] Ta "infinity"
+.It Li Am Ta \*[Am] Ta \*[Am] Ta "ampersand"
.It Li Na Ta \*[Na] Ta \*[Na] Ta "not a number"
.It Li Ba Ta \*[Ba] Ta \*[Ba] Ta "vertical bar"
.El
@@ -3917,6 +3936,17 @@ Register
is ignored for
.Tn TTY
devices.
+.Pp
+The line and title length can be changed by setting the registers
+.Ql LL
+and
+.Ql LT ,
+respectively:
+.Pp
+.Dl groff -Tutf8 -rLL=100n -rLT=100n -mdoc foo.man | less
+.Pp
+If not set, both registers default to 78n for TTY devices and 6.5i
+otherwise.
.
.
.Sh FILES
diff --git a/contrib/groff/tmac/groff_ms.man b/contrib/groff/tmac/groff_ms.man
index 590b060..5b3e941 100644
--- a/contrib/groff/tmac/groff_ms.man
+++ b/contrib/groff/tmac/groff_ms.man
@@ -1,5 +1,6 @@
+'\" t
.ig
-Copyright (C) 1989-1995, 2001 Free Software Foundation, Inc.
+Copyright (C) 1989-1995, 2001, 2002 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
@@ -23,71 +24,911 @@ groff_ms \- groff ms macros
.B groff
.B \-ms
[
-.IR options .\|.\|.
+.IR options .\|.\|.\&
]
[
-.IR files .\|.\|.
+.IR files .\|.\|.\&
]
.br
.B groff
.B \-m\ ms
[
-.IR options .\|.\|.
+.IR options .\|.\|.\&
]
[
-.IR files .\|.\|.
+.IR files .\|.\|.\&
]
+.\" -----
.SH DESCRIPTION
-This manual page describes the GNU version of the ms macros,
-which is part of the groff document formatting system.
-The groff ms macros are intended to be compatible with the
-documented behaviour of the 4.3
+This manual page describes the GNU version of the
+.I ms
+macros,
+part of the
+.I groff
+typesetting system.
+The
+.I ms
+macros are mostly compatible with the
+documented behavior of the 4.3
.SM BSD
-Unix ms macros subject to the following limitations:
+Unix
+.I ms
+macros (see
+.I Differences from troff ms
+below for details).
+The
+.I ms
+macros are suitable for reports, letters, books, and
+technical documentation.
+.\" -----
+.SH USAGE
+The
+.I ms
+macro package expects files to have
+a certain amount of structure.
+The simplest documents can begin with a paragraph macro
+and consist of text separated by paragraph macros
+or even blank lines.
+Longer documents have a structure as follows:
+.TP
+.B "Document type"
+If you use the
+.B RP
+(report) macro at the beginning of the document,
+.I groff
+prints the cover page information on its own page;
+otherwise it prints the information on the
+first page with your document text immediately following.
+Other document formats found in AT&T
+.I troff
+are specific to AT&T
+or Berkeley, and are not supported in
+.IR "groff ms" .
+.TP
+.B "Format and layout"
+By setting number registers,
+you can change your document's type (font and size),
+margins, spacing, headers and footers, and footnotes.
+See
+.I "Document control registers"
+below for more details.
+.TP
+.B "Cover page"
+A cover page consists of a title,
+and optionally the author's name and institution,
+an abstract, and the date.
+See
+.I "Cover page macros"
+below for more details.
+.TP
+.B "Body"
+Following the cover page is your document.
+It consists of paragraphs, headings, and lists.
+.TP
+.B "Table of contents"
+Longer documents usually include a table of contents,
+which you can add by placing the
+.B TC
+macro at the end of your document.
+.\" -----
+.SS "Document control registers"
+The following table lists the document control
+number registers.
+For the sake of consistency,
+set registers related to margins at the beginning of your document,
+or just after the
+.B RP
+macro.
+.LP
+.ne 9
+.B Margin settings
+.RS
+.na
+.TS
+cb s cb s s cb s cb s
+afCW s l s s l s l s.
+Reg. Definition Effective Default
+_
+PO T{
+Page offset (left margin)
+T} T{
+next page
+T} 1i
+LL T{
+Line length
+T} next para. 6i
+LT T{
+Header/footer length
+T} next para. 6i
+HM T{
+Top (header) margin
+T} next page 1i
+FM T{
+Bottom (footer) margin
+T} next page 1i
+_
+.TE
+.RE
+.LP
+.ne 7
+.B Text settings
+.RS
+.TS
+cb s cb s s cb s cb s
+afCW s l s s l s l s.
+Reg. Definition Effective Default
+_
+PS T{
+Point size
+T} next para. 10p
+VS T{
+Line spacing (leading)
+T} next para. 12p
+_
+.TE
+.RE
+.LP
+.ne 7
+.B Paragraph settings
+.RS
+.TS
+cb cb s cb cb
+afCW l s l l .
+Reg. Definition Effective Default
+_
+PI T{
+Initial indent
+T} next para. 5n
+PD T{
+Space between paragraphs
+T} next para. 0.3v
+QI T{
+Quoted paragraph indent
+T} next para. 5n
+_
+.TE
+.RE
+.LP
+.ne 7
+.B Footnote settings
+.RS
+.TS
+cb cb cb cb
+afCW l l l .
+Reg. Definition Effective Default
+_
+FL Footnote length next footnote LL*5/6
+FI Footnote indent next footnote 2n
+FF Footnote format next footnote 0
+_
+.TE
+.RE
+.LP
+.ne 6
+.B Other settings
+.RS
+.TS
+cb s cb s s cb s cb s
+afCW s l s s l s l s.
+Reg. Definition Effective Default
+_
+MINGW T{
+Minimum width between columns
+T} next page 2n
+_
+.TE
+.ad
+.RE
+.\" -----
+.SS "Cover page macros"
+Use the following macros to create a cover page for your document
+in the order shown.
+.TP
+.B \&.RP [no]
+Specifies the report format for your document.
+The report format creates a separate cover page.
+With no
+.B RP
+macro,
+.I groff
+prints a subset of the
+cover page on page\~1 of your document.
+.IP
+If you use the optional
+.B no
+argument,
+.I groff
+prints a title page but
+does not repeat any of the title page information
+(title, author, abstract, etc.\&)
+on page\~1 of the document.
+.TP
+.B \&.P1
+(P-one) Prints the header on page\~1.
+The default is to suppress the header.
+.TP
+.BI "\&.DA [" xxx ]
+(optional) Print the current date,
+or the arguments to the macro if any,
+on the title page (if specified)
+and in the footers.
+This is the default for
+.IR nroff .
+.TP
+.BI "\&.ND [" xxx ]
+(optional) Print the current date,
+or the arguments to the macro if any,
+on the title page (if specified)
+but not in the footers.
+This is the default for
+.IR troff .
+.TP
+.B \&.TL
+Specifies the document title.
+.I Groff
+collects text following the
+.B TL
+macro into the title, until reaching the author name or abstract.
+.TP
+.B \&.AU
+Specifies the author's name.
+You can specify multiple authors by using an
+.B AU
+macro for each author.
+.TP
+.B \&.AI
+Specifies the author's institution.
+You can specify multiple institutions.
+.TP
+.B \&.AB [no]
+Begins the abstract.
+The default is to print the word
+.BR ABSTRACT ,
+centered and in italics, above the text of the abstract.
+The option
+.B no
+suppresses this heading.
+.TP
+.B \&.AE
+End the abstract.
+.\" -----
+.SS Paragraphs
+Use the
+.B PP
+macro to create indented paragraphs,
+and the
+.B LP
+macro to create paragraphs with no initial indent.
+.PP
+The
+.B QP
+macro indents all text at both left and right margins.
+The effect is identical to the HTML
+.B <BLOCKQUOTE>
+element.
+The next paragraph or heading
+returns margins to normal.
+.PP
+The
+.B XP
+macro produces an exdented paragraph.
+The first line of the paragraph begins at
+the left margin,
+and subsequent lines are indented
+(the opposite of
+.BR PP ).
+.SS Headings
+Use headings to create a hierarchical structure
+for your document.
+The
+.I ms
+macros print headings in
+.B bold
+using the same font family and point size as the body text.
+.PP
+The following heading macros are available:
+.TP
+.BI \&.NH \0xx
+Numbered heading.
+The argument
+.I xx
+is either a numeric argument to indicate the
+level of the heading, or
+.I S\ xx\ xx\ \c
+".\|.\|."
+to set the section number explicitly.
+If you specify heading levels out of sequence,
+such as invoking
+.B ".NH\ 3"
+after
+.BR ".NH\ 1" ,
+.I groff
+prints a warning on standard error.
+.TP
+.B \&.SH
+Unnumbered subheading.
+.\" -----
+.SS Highlighting
+The
+.I ms
+macros provide a variety of methods to highlight
+or emphasize text:
+.TP
+.BI "\&.B [" txt " [" post " [" pre ]]]
+Sets its first argument in
+.BR "bold type" .
+If you specify a second argument,
+.I groff
+prints it in the previous font after
+the bold text, with no intervening space
+(this allows you to set punctuation after
+the highlighted text without highlighting
+the punctuation).
+Similarly, it prints the third argument (if any)
+in the previous font
+.B before
+the first argument.
+For example,
+.RS
+.IP
+\&.B foo ) (
+.RE
+.IP
+prints
+.RB ( foo ).
+.IP
+If you give this macro no arguments,
+.I groff
+prints all text following in bold until
+the next highlighting, paragraph, or heading macro.
+.TP
+.BI "\&.R [" txt " [" post " [" pre ]]]
+Sets its first argument in
+roman (or regular) type.
+It operates similarly to the
+.B B
+macro otherwise.
+.TP
+.BI "\&.I [" txt " [" post " [" pre ]]]
+Sets its first argument in
+.IR "italic type" .
+It operates similarly to the
+.B B
+macro otherwise.
+.TP
+.BI "\&.CW [" txt " [" post " [" pre ]]]
+Sets its first argument in a constant width face.
+It operates similarly to the
+.B B
+macro otherwise.
+.TP
+.BI "\&.BI [" txt " [" post " [" pre ]]]
+Sets its first argument in bold italic type.
+It operates similarly to the
+.B B
+macro otherwise.
+.TP
+.BI "\&.BX [" txt ]
+Prints its argument and draws a box around it.
+If you want to box a string that contains spaces,
+use a digit-width space (\[rs]0).
+.TP
+.BI "\&.UL [" txt " [" post ]]
+Prints its first argument with an underline.
+If you specify a second argument,
+.I groff
+prints it in the previous font after
+the underlined text, with no intervening space.
+.TP
+.B \&.LG
+Prints all text following in larger type
+(2\~points larger than the current point size) until
+the next font size, highlighting, paragraph, or heading macro.
+You can specify this macro multiple times
+to enlarge the point size as needed.
+.TP
+.B \&.SM
+Prints all text following in
+smaller type
+(2\~points smaller than the current point size) until
+the next type size, highlighting, paragraph, or heading macro.
+You can specify this macro multiple times
+to reduce the point size as needed.
+.TP
+.B \&.NL
+Prints all text following in
+the normal point size
+(that is, the value of the
+.B PS
+register).
+.TP
+.BI \[rs]*{ text \[rs]*}
+Print the enclosed
+.I text
+as a superscript.
+.\" -----
+.SS Indents
+You may need to indent sections of text.
+A typical use for indents is to create nested lists and sublists.
+.PP
+Use the
+.B RS
+and
+.B RE
+macros to start and end a section of indented text, respectively.
+The
+.B PI
+register controls the amount of indent.
+.PP
+You can nest indented sections as deeply as needed by
+using multiple, nested pairs of
+.B RS
+and
+.BR RE .
+.\" -----
+.SS Lists
+The
+.B IP
+macro handles duties for all lists.
+Its syntax is as follows:
+.TP
+.BI ".IP [" marker " [" width ]]
+.IP
+The
+.I marker
+is usually a bullet character
+.B \[rs](bu
+for unordered lists,
+a number (or auto-incrementing number register) for numbered lists,
+or a word or phrase for indented (glossary-style) lists.
+.IP
+The
+.I width
+specifies the indent for the body of each list item.
+Once specified, the indent remains the same for all
+list items in the document until specified again.
+.\" -----
+.br
+.ne 15
+.SS "Tab stops"
+Use the
+.B ta
+request to set tab stops as needed.
+Use the
+.B TA
+macro to reset tabs to the default (every 5n).
+You can redefine the
+.B TA
+macro to create a different set of default tab stops.
+.\" -----
+.SS "Displays and keeps"
+Use displays to show text-based examples or figures
+(such as code listings).
+Displays turn off filling, so lines of code can be
+displayed as-is without inserting
+.B br
+requests in between each line.
+Displays can be
+.I kept
+on a single page, or allowed to break across pages.
+The following table shows the display types available.
+.RS
+.ne 11
+.na
+.TS
+cb s s s cbt s s
+cb s cb s ^ s s
+lfCW s lfCW s l s s.
+Display macro Type of display
+With keep No keep
+_
+\&.DS L \&.LD Left-justified.
+\&.DS I [\fIindent\fP] \&.ID T{
+Indented (default indent in the \fBDI\fP register).
+T}
+\&.DS B \&.BD T{
+Block-centered (left-justified, longest line centered).
+T}
+\&.DS C \&.CD Centered.
+\&.DS R \&.RD Right-justified.
+_
+.TE
+.RE
+.ad
+.LP
+Use the
+.B DE
+macro to end any display type.
+.PP
+To
+.I keep
+text together on a page,
+such as
+a paragraph that refers to a table (or list, or other item)
+immediately following, use the
+.B KS
+and
+.B KE
+macros.
+The
+.B KS
+macro begins a block of text to be kept on a single page,
+and the
+.B KE
+macro ends the block.
+.PP
+You can specify a
+.I "floating keep"
+using the
+.B KF
+and
+.B KE
+macros.
+If the keep cannot fit on the current page,
+.I groff
+holds the contents of the keep and allows text following
+the keep (in the source file) to fill in the remainder of
+the current page.
+When the page breaks,
+whether by an explicit
+.B bp
+request or by reaching the end of the page,
+.I groff
+prints the floating keep at the top of the new page.
+This is useful for printing large graphics or tables
+that do not need to appear exactly where specified.
+.\" -----
+.SS "Tables, figures, equations, and references"
+The
+.I -ms
+macros support the standard
+.I groff
+preprocessors:
+.IR tbl ,
+.IR pic ,
+.IR eqn ,
+and
+.IR refer .
+Mark text meant for preprocessors by enclosing it
+in pairs of tags as follows:
+.TP
+.BR "\&.TS [H]" " and " \&.TE
+Denotes a table, to be processed by the
+.I tbl
+preprocessor.
+The optional
+.BR H "\~argument"
+instructs
+.I groff
+to create a running header with the information
+up to the
+.B TH
+macro.
+.I Groff
+prints the header at the beginning of the table;
+if the table runs onto another page,
+.I groff
+prints the header on the next page as well.
+.TP
+.BR \&.PS " and " \&.PE
+Denotes a graphic, to be processed by the
+.I pic
+preprocessor.
+You can create a
+.I pic
+file by hand, using the
+AT&T
+.I pic
+manual available on the Web as a reference,
+or by using a graphics program such as
+.IR xfig .
+.TP
+.BR "\&.EQ [\fI\,align\/\fP]" " and " \&.EN
+Denotes an equation, to be processed by the
+.I eqn
+preprocessor.
+The optional
+.I align
+argument can be
+.BR C ,
+.BR L ,
+or\~\c
+.B I
+to center (the default), left-justify, or indent
+the equation.
+.TP
+.BR \&.[ " and " \&.]
+Denotes a reference, to be processed by the
+.I refer
+preprocessor.
+The GNU
+.IR @g@refer (@MAN1EXT@)
+manual page provides a comprehensive reference
+to the preprocessor and the format of the
+bibliographic database.
+.\" -----
+.SS Footnotes
+The
+.I ms
+macros provide a flexible footnote system.
+You can specify a numbered footnote by using the
+.B \[rs]**
+escape, followed by the text of the footnote
+enclosed by
+.B FS
+and
+.B FE
+macros.
+.PP
+You can specify symbolic footnotes
+by placing the mark character (such as
+.B \[rs](dg
+for the dagger character) in the body text,
+followed by the text of the footnote
+enclosed by
+.B FS\ \[rs](dg
+and
+.B FE
+macros.
+.PP
+You can control how
+.I groff
+prints footnote numbers by changing the value of the
+.B FF
+register as follows:
+.RS
+.ne 7
+.TP
+0
+Prints the footnote number as a superscript; indents the footnote (default).
+.TP
+1
+Prints the number followed by a period (like\~1.\&)
+and indents the footnote.
+.TP
+2
+Like\~1, without an indent.
+.TP
+3
+Like\~1, but prints the footnote number as a hanging paragraph.
+.LP
+.RE
+You can use footnotes safely within keeps and displays,
+but avoid using numbered footnotes within floating keeps.
+You can set a second
+.B \[rs]**
+between a
+.B \[rs]**
+and its corresponding
+.BR .FS ;
+as long as each
+.B .FS
+occurs
+.I after
+the corresponding
+.B \[rs]**
+and the occurrences of
+.B .FS
+are in the same order as the corresponding occurrences of
+.BR \[rs]** .
+.\" -----
+.SS "Headers and footers"
+There are two ways to define headers and footers:
+.IP \(bu 3n
+Use the strings
+.BR LH ,
+.BR CH ,
+and
+.B RH
+to set the left, center, and right headers; use
+.BR LF ,
+.BR CF ,
+and
+.B RF
+to set the left, center, and right footers.
+This works best for documents that do not distinguish
+between odd and even pages.
.IP \(bu
-the internals of groff ms are not similar to the internals of Unix ms
-and so documents that depend upon implementation details of Unix ms
-may well not work with groff ms;
+Use the
+.B OH
+and
+.B EH
+macros to define headers for the odd and even pages; and
+.B OF
+and
+.B EF
+macros to define footers for the odd and even pages.
+This is more flexible than defining the individual strings.
+The syntax for these macros is as follows:
+.RS
+.IP
+.BI "\&.OH '" left ' center ' right '
+.RE
+.IP
+You can replace the quote (') marks with any character not
+appearing in the header or footer text.
+.\" -----
+.SS Margins
+You control margins using a set of number registers.
+The following table lists the register names and defaults:
+.RS
+.ne 8
+.na
+.TS
+cb s cb s s cb s cb s
+afCW s l s s l s l s.
+Reg. Definition Effective Default
+_
+PO T{
+Page offset (left margin)
+T} next page 1i
+LL T{
+Line length
+T} next para. 6i
+LT T{
+Header/footer length
+T} next para. 6i
+HM T{
+Top (header) margin
+T} next page 1i
+FM T{
+Bottom (footer) margin
+T} next page 1i
+_
+.TE
+.RE
+.ad
+.PP
+Note that there is no right margin setting.
+The combination of page offset and line length
+provide the information necessary to
+derive the right margin.
+.\" -----
+.SS "Multiple columns"
+The
+.I ms
+macros can set text in as many columns as will reasonably
+fit on the page.
+The following macros are available.
+All of them force a page break if a multi-column mode is already set.
+However, if the current mode is single-column, starting a multi-column
+mode does
+.I not
+force a page break.
+.TP
+.B \&.1C
+Single-column mode.
+.TP
+.B \&.2C
+Two-column mode.
+.TP
+.BI "\&.MC [" width " [" gutter ]]
+Multi-column mode.
+If you specify no arguments, it is equivalent to the
+.B 2C
+macro.
+Otherwise,
+.I width
+is the width of each column and
+.I gutter
+is the space between columns.
+The
+.B MINGW
+number register is the default gutter width.
+.\" -----
+.SS "Creating a table of contents"
+Wrap text that you want to appear in the
+table of contents in
+.B XS
+and
+.B XE
+macros.
+Use the
+.B TC
+macro to print the table of contents at the end of the document,
+resetting the page number to\~\c
+.B i
+(Roman numeral\~1).
+.PP
+You can manually create a table of contents
+by specifying a page number as the first argument to
+.BR XS .
+Add subsequent entries using the
+.B XA
+macro.
+For example:
+.RS
+.PP
+.ne 8
+.nf
+\&.XS 1
+Introduction
+\&.XA 2
+A Brief History of the Universe
+\&.XA 729
+Details of Galactic Formation
+\&.\|.\|.
+\&.XE
+.fi
+.RE
+.LP
+Use the
+.B PX
+macro to print a manually-generated table of contents
+without resetting the page number.
+.PP
+If you give the argument
+.B no
+to either
+.B PX
+or
+.BR TC ,
+.I groff
+suppresses printing the title
+specified by the
+.B \[rs]*[TOC]
+string.
+.\" -----
+.SH "DIFFERENCES FROM troff ms"
+The
+.I "groff ms"
+macros are a complete re-implementation,
+using no original AT&T code.
+Since they take advantage of the extended features in
+.IR groff ,
+they cannot be used with AT&T
+.IR troff .
+Other differences include:
+.IP \(bu 3n
+The internals of
+.I "groff ms"
+differ from the internals of Unix
+.IR ms .
+Documents that depend upon implementation details of Unix
+.I ms
+may not format properly with
+.IR "groff ms" .
.IP \(bu
-there is no support for typewriter-like devices;
+The error-handling policy of
+.I "groff ms"
+is to detect and report errors,
+rather than silently to ignore them.
+.IP \(bu
+Bell Labs localisms are not implemented.
.IP \(bu
Berkeley localisms, in particular the
.B TM
and
.B CT
-macros, are not implemented;
+macros,
+are not implemented.
.IP \(bu
-groff ms
-does not provide cut marks;
+.I "Groff ms"
+does not work in compatibility mode (e.g.\& with the
+.B \-C
+option).
.IP \(bu
-multiple line spacing is not allowed
-(use a larger vertical spacing instead);
+There is no support for typewriter-like devices.
.IP \(bu
-groff ms does not work in compatibility mode (eg with the
-.B \-C
-option);
+.I "Groff ms"
+does not provide cut marks.
.IP \(bu
-the error-handling policy of groff ms
-is to detect and report errors,
-rather than silently to ignore them.
-.LP
-The groff ms macros make use of many features of GNU troff
-and therefore cannot be used with any other troff.
-.LP
-Bell Labs localisms are not implemented in either the
-.SM BSD
-ms macros or in the groff ms macros.
-.LP
-Some Unix ms documentation says that the
+Multiple line spacing is not supported
+(use a larger vertical spacing instead).
+.IP \(bu
+Some Unix
+.I ms
+documentation says that the
.B CW
and
.B GW
number registers can be used to control the column width and
gutter width respectively.
-This is not the case.
These number registers are not used in groff ms.
-.LP
-Macros that cause a reset set the indent.
+.IP \(bu
+Macros that cause a reset
+(paragraphs, headings, etc.)
+may change the indent.
Macros that change the indent do not increment or decrement
the indent, but rather set it absolutely.
This can cause problems for documents that define
@@ -99,61 +940,33 @@ request but instead the
and
.B RE
macros.
-.LP
+.IP \(bu
The number register
.B GS
-is set to 1 by the groff ms macros,
-but is not used by the Unix ms macros.
-It is intended that documents that need to determine whether
-they are being formatted with Unix ms or groff ms make use of this
-number register.
-.LP
-Footnotes are implemented so that they can safely be used within
-keeps and displays.
-Automatically numbered footnotes within floating keeps are
-not recommended.
-It is safe to have another
-.B \e**
-between a
-.B \e**
-and the corresponding
-.BR .FS ;
-it is required only that each
-.B .FS
-occur after the corresponding
-.B \e**
-and that the occurrences of
-.B .FS
-are in the same order as the corresponding occurrences of
-.BR \e** .
-.LP
-The strings
-.B \e*{
-and
-.B \e*}
-can be used to begin and end a superscript.
-.LP
-Some Unix V10 ms features are implemented.
-The
-.BR B ,
-.BR I
-and
-.B BI
-macros can have an optional third argument which will be printed
-in the current font before the first argument.
-There is a macro
-.B CW
-like
-.B B
-that changes to a constant-width font.
-.LP
-The following strings can be redefined to adapt the groff ms macros
-to languages other than English:
-.LP
-.nf
-.ta \w'REFERENCES'u+2n
+is set to\~1 by the
+.I "groff ms"
+macros,
+but is not used by the Unix
+.I ms
+macros.
+Documents that need to determine whether
+they are being formatted with Unix
+.I ms
+or
+.I "groff ms"
+should use this number register.
+.br
+.ne 22
+.SS Strings
+You can redefine the following strings to adapt the
+.I "groff ms"
+macros to languages other than English:
+.TS
+center;
+cb cb
+afCW l .
String Default Value
-.sp .3v
+_
REFERENCES References
ABSTRACT ABSTRACT
TOC Table of Contents
@@ -169,69 +982,94 @@ MONTH9 September
MONTH10 October
MONTH11 November
MONTH12 December
-.fi
+_
+.TE
+.PP
+The
+.B \[rs]*-
+string produces an em dash \[em] like this.
+.\" -----
+.SS Text Settings
+The
+.B FAM
+string sets the default font family.
+If this string is undefined at initialization,
+it is set to Times.
.LP
-The font family is reset from the string
-.BR FAM ;
-at initialization if this string is undefined it is set to the current
-font family.
The point size, vertical spacing, and inter-paragraph spacing for footnotes
-are taken from the number registers
+are controlled by the number registers
.BR FPS ,
.BR FVS ,
and
.BR FPD ;
at initialization these are set to
-.BR \en(PS-2 ,
-.BR \en[FPS]+2 ,
+.BR \[rs]n(PS-2 ,
+.BR \[rs]n[FPS]+2 ,
and
-.B \en(PD/2
-respectively; however, if any of these registers has been defined
-before initialization, it will not be set.
+.B \[rs]n(PD/2
+respectively.
+If any of these registers are defined before initialization,
+the initialization macro does not change them.
+.LP
The hyphenation flags (as set by the
-.B .hy
+.B hy
request) are set from the
.B HY
register;
-if this has not been defined at initialization,
-it will be set to 14.
-.LP
-Right-aligned displays are available with
-.B ".DS R"
-and
-.BR .RD .
+the default is\~14.
+.PP
+Improved accent marks
+(as originally defined in Berkeley's
+.I ms
+version)
+are available by specifying the
+.B AM
+macro at the beginning of your document.
+You can place an accent over most characters
+by specifying the string defining the accent
+directly after the character.
+For example,
+.B n\[rs]*~
+produces an n with a tilde over it.
+.\" -----
+.SH "NAMING CONVENTIONS"
.LP
The following conventions are used for names of macros, strings and
number registers.
-External names available to documents that use the groff ms
+External names available to documents that use the
+.I "groff ms"
macros contain only uppercase letters and digits.
-Internally the macros are divided into modules.
+.LP
+Internally the macros are divided into modules;
+naming conventions are as follows:
+.IP \(bu 3n
Names used only within one module are of the form
-.IB module * name\fR.
+.IB \%module * name\fR.
+.IP \(bu
Names used outside the module in which they are defined are of the form
-.IB module @ name\fR.
+.IB \%module @ name\fR.
+.IP \(bu
Names associated with a particular environment are of the form
-.IB environment : name;
+.IB \%environment : name;
these are used only within the
.B par
-module,
-and
+module.
+.IP \(bu
.I name
does not have a module prefix.
+.IP \(bu
Constructed names used to implement arrays are of the form
-.IB array ! index\fR.
+.IB \%array ! index\fR.
+.PP
Thus the groff ms macros reserve the following names:
+.IP \(bu 3n
+Names containing the characters
+.BR * ,
+.BR @ ,
+and\~\c
+.BR : .
.IP \(bu
-names containing
-.BR * ;
-.IP \(bu
-names containing
-.BR @ ;
-.IP \(bu
-names containing
-.BR : ;
-.IP \(bu
-names containing only uppercase letters and digits.
+Names containing only uppercase letters and digits.
.SH FILES
.B @MACRODIR@/ms.tmac
(a wrapper file for
@@ -243,10 +1081,15 @@ names containing only uppercase letters and digits.
.BR @g@troff (@MAN1EXT@),
.BR @g@tbl (@MAN1EXT@),
.BR @g@pic (@MAN1EXT@),
-.BR @g@eqn (@MAN1EXT@)
-.br
-.BR ms (@MAN7EXT@)
-.
+.BR @g@eqn (@MAN1EXT@),
+.BR @g@refer (@MAN1EXT@),
+.I Groff: The GNU Implementation of troff
+by Trent Fisher and Werner Lemberg.
+.SH AUTHOR
+Original manual page by James Clark
+.IR "et al" ;
+rewritten by Larry Kollar
+(\fIlkollar@despammed.com\fR).
.\" Local Variables:
.\" mode: nroff
.\" End:
diff --git a/contrib/groff/tmac/groff_trace.man b/contrib/groff/tmac/groff_trace.man
new file mode 100644
index 0000000..f7f1ae8
--- /dev/null
+++ b/contrib/groff/tmac/groff_trace.man
@@ -0,0 +1,546 @@
+.
+.TH GROFF_TRACE @MAN7EXT@ "@MDATE@" "Groff Version @VERSION@"
+.SH NAME
+groff_trace \- groff macro package trace.tmac
+.SH SYNOPSIS
+.\" The .SH was moved to this place to make `apropos' happy.
+.
+.
+.\" --------------------------------------------------------------------
+.\" Legalize
+.\" --------------------------------------------------------------------
+.
+.ig
+groff_trace.7
+
+File position: <groff-source>/tmac/groff_trace.man
+
+Last update: 14 July 2002
+
+This file is part of groff, the GNU roff type-setting system.
+
+Copyright (C) 2002 Free Software Foundation, Inc.
+written by Bernd Warken <bwarken@mayn.de>
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being this .ig-section and AUTHOR, with no
+Front-Cover Texts, and with no Back-Cover Texts.
+
+A copy of the Free Documentation License is included as a file called
+FDL in the main directory of the groff source package.
+..
+.
+.\" --------------------------------------------------------------------
+.\" Setup
+.\" --------------------------------------------------------------------
+.
+.mso www.tmac
+.
+.if n \{\
+. mso tty-char.tmac
+. ftr CR R
+. ftr CI I
+. ftr CB B
+.\}
+.
+.ds Ellipsis .\|.\|.\&\"
+.
+.\" Global static variables for inter-macro communication
+.rr @+Example_font
+.
+.\" --------------------------------------------------------------------
+.\" setup for the macro definitions below
+.\"
+.\" naming: namespace:category_macro.variable_name (experimental)
+.
+.\" --------------------------------------------------------------------
+.\" configuration of prompt for `.Shell_cmd'* macros
+.ds trace:Shell_cmd.prompt_text sh#\" prompt for shell commands
+.ds trace:Shell_cmd+.prompt_text >\" prompt on continuation lines
+.ds trace:Shell_cmd_base.prompt_font I\" font for prompts
+.
+.\" automatically determine setup from the configuration above
+.als @f trace:Shell_cmd_base.prompt_font\"
+.als @t trace:Shell_cmd.prompt_text\"
+.als @t+ trace:Shell_cmd+.prompt_text\"
+.ds trace:Shell_cmd.prompt \f[\*[@f]]\*[@t]\f[]\" needed
+.ds trace:Shell_cmd+.prompt \f[\*[@f]]\*[@t+]\f[]\" needed
+.nr @w \w'\*[trace:Shell_cmd.prompt]'\"
+.nr @w+ \w'\*[trace:Shell_cmd+.prompt]'\"
+.ft \*[@f]
+.\" Full prompt width is maximum of texts plus 1m
+.nr trace:Shell_cmd_base.prompt_width (\n[@w]>?\n[@w+]+1m)\" needed
+.ft
+.rm @f
+.rm @f+
+.rm @t
+.rm @t+
+.rr @w
+.rr @w+
+.
+.\"--------------------------------------------------------------------
+.\" Ignore all arguments like a comment, even after a .eo call.
+.de c
+..
+.c --------------------------------------------------------------------
+.de BIR
+. ie (\\n[.$] < 3) \
+. BI \\$@
+. el \{\
+. ds @tmp@ \fB\\$1\f[]\fI\\$2\f[]
+. shift 2
+. Text \\*[@tmp@]\fR\\$*\f[]
+. rm @tmp@
+. \}
+..
+.c --------------------------------------------------------------------
+.c .Env_var (<env_var_name> [<punct>])
+.c
+.c Display an environment variable, with optional punctuation.
+.c
+.de Env_var
+. nh
+. SM
+. Text \f[CB]\\$1\f[]\\$2
+. hy
+..
+.c --------------------------------------------------------------------
+.c .Error (<text>...)
+.c
+.c Print error message to terminal and abort.
+.c
+.de Error
+. tm \\$*
+. ab
+..
+.c --------------------------------------------------------------------
+.de Example
+. if r@+Example_font \
+. Error previous .Example was not terminated by a ./Example
+. nr @+Example_font \\n[.f]
+. nh
+. nf
+.c RS \\n[trace:Shell_cmd_base.prompt_width]u
+. ft CR
+..
+.c --------------------------------------------------------------------
+.de /Example
+. if !r@+Example_font \
+. Error no previous call to .Example
+. ft \\n[@+Example_font]
+.c RE
+. fi
+. hy
+. rr @+Example_font
+..
+.c --------------------------------------------------------------------
+.de Macdef
+. if (\\n[.$] <= 0) \
+. Error \\$0 needs at least one argument.
+. ds @s .\f[B]\\$1\f[]\"
+. shift
+. if (\\n[.$] > 0) \
+. as @s \~\f[I]\\$*\f[]\"
+. IP \\*[@s]
+. rm @s
+..
+.c --------------------------------------------------------------------
+.de Macdef+
+. br
+. ns
+. Macdef \\$@
+..
+.c --------------------------------------------------------------------
+.c .Shell_cmd (<CR> [<CI>] ...)
+.c
+.c A shell command line; display args alternating in fonts CR and CI.
+.c
+.c Examples:
+.c .Shell_cmd "groffer --dpi 100 file"
+.c result: `sh# groffer --dpi 100 file'
+.c with 'sh#' in font I, the rest in CR
+.c
+.c .Shell_cmd groffer\~--dpi\~100\~file
+.c result: the same as above
+.c
+.c .Shell_cmd "groffer --dpi=" value " file"
+.c result: sh# groffer --dpi=value file
+.c with `groffer --dpi=' and `file' in CR; `value' in CI
+.c
+.c .Shell_cmd groffer\~--dpi= value \~file
+.c result: the same as the previous example
+.c
+.de Shell_cmd
+. trace:Shell_cmd_base "\*[trace:Shell_cmd.prompt]" \\$@
+..
+.c --------------------------------------------------------------------
+.c .Shell_cmd+ (<CR> [<CI>] ...)
+.c
+.c A continuation line for .Shell_cmd.
+.c
+.de Shell_cmd+
+. trace:Shell_cmd_base "\*[trace:Shell_cmd+.prompt]" \\$@
+..
+.c --------------------------------------------------------------------
+.c .Shell_cmd_base (<prompt> [<CR> [<CI>] ...])
+.c
+.c A shell command line; display args alternating in fonts CR and CI.
+.c Internal, do not use directly.
+.c
+.c Globals: read-only register @.Shell_cmd_width
+.c
+.de trace:Shell_cmd_base
+. if (\\n[.$] <= 0) \
+. return
+. nr @+font \\n[.f]\"
+. ds @prompt \\$1\"
+. ft CR
+. c gap between prompt and command
+. nr @+gap \\n[trace:Shell_cmd_base.prompt_width]-\\w'\\*[@prompt]'\"
+. ds @res \\*[@prompt]\h'\\n[@+gap]u'\"
+. shift
+. ds @cf CR\"
+. while (\\n[.$] > 0) \{\
+. as @res \\f[\\*[@cf]]\\$1\"
+. shift
+. ie '\\*[@cf]'CR' \
+. ds @cf I\"
+. el \
+. ds @cf CR\"
+. \}
+. br
+. ad l
+. nh
+. nf
+. Text \\*[@res]\"
+. fi
+. hy
+. ad
+. br
+. ft \\n[@+font]
+. rr @+font
+. rr @+gap
+. rm @cf
+. rm @res
+..
+.c --------------------------------------------------------------------
+.c .Text (<text>...)
+.c
+.c Treat the arguments as text, no matter how they look.
+.c
+.de Text
+. if (\\n[.$] == 0) \
+. return
+. nop \)\\$*\)
+..
+.c --------------------------------------------------------------------
+.c .Topic ([<indent>])
+.c
+.c A bulleted paragraph.
+.c
+.de Topic
+. ie (\\n[.$] = 0) \
+. .ds @indent 2m\"
+. el \
+. .ds @indent \\$1\"
+. TP \\*[@indent]
+. Text \[bu]
+. rm @indent
+..
+.c --------------------------------------------------------------------
+.c .TP+ ()
+.c
+.c Continuation line for .TP header.
+.c
+.de TP+
+. br
+. ns
+. TP \\$1
+..
+.c --------------------------------------------------------------------
+.de 'char
+. ds @tmp@ `\f(CR\\$1\f[]'
+. shift
+. Text \\*[@tmp@]\\$*
+. rm @tmp@
+..
+.c --------------------------------------------------------------------
+.de option
+. ds @tmp@ \f(CB\\$1\f[]
+. shift 1
+. Text \\*[@tmp@]\\$*
+. rm @tmp@
+..
+.c --------------------------------------------------------------------
+.de argument
+. ds @tmp@ \f(CI\\$1\f[]
+. shift 1
+. Text \\*[@tmp@]\\$*
+. rm @tmp@
+..
+.c --------------------------------------------------------------------
+.de request
+. ds @tmp@ \f(CB\\$1\f[]
+. shift 1
+. Text .\\*[@tmp@]\\$*
+. rm @tmp@
+..
+.c --------------------------------------------------------------------
+.de escape
+. ds @tmp@ \f[CB]\\$1\f[]
+. shift 1
+. Text \[rs]\\*[@tmp@]\\$*
+. rm @tmp@
+..
+.
+.
+.\" --------------------------------------------------------------------
+.\" SH SYNOPSIS
+.\" --------------------------------------------------------------------
+.
+.B groff -m trace
+.RI [ options\*[Ellipsis] ]
+.RI [ files\*[Ellipsis] ]
+.
+.
+.P
+Elements in brackets denote optional arguments, and the ellipsis means
+that there can be any number of arguments of this kind.
+.
+.
+.\" --------------------------------------------------------------------
+.SH DESCRIPTION
+.\" --------------------------------------------------------------------
+.
+The
+.I trace
+macro package of
+.BR groff (@MAN1EXT@)
+can be a valuable tool for debugging documents written in the roff
+formatting language.
+.
+A call stack trace is protocolled on standard error, that means, a
+diagnostic message is emitted on entering and exiting of a macro call.
+.
+This greatly eases to track down an error in some macro.
+.
+.
+.P
+This tracing process is activated by specifying the groff or troff
+command line option
+.BR "-m\~trace" .
+This works also with the
+.BR groffer (@MAN1EXT@)
+viewer program.
+.
+A finer control can be obtained by including the macro file within the
+document by the groff macro call
+.BR ".mso\~trace.tmac" .
+Only macros that are defined after this line are traced.
+.
+.
+.P
+If some other macro package should be traced as well it must be specified
+after
+.BR "-m\~trace"
+on the command line.
+.
+.
+.P
+The macro file
+.B trace.tmac
+is unusual because it does not contain any macros to be called by a
+user.
+.
+Instead, the existing macro definition and appending facilities are
+modified such that they display diagnostic messages.
+.
+.
+.\" --------------------------------------------------------------------
+.SH EXAMPLES
+.\" --------------------------------------------------------------------
+.
+.P
+In the following examples, a roff fragment is fed into groff via
+standard input.
+.
+As we are only interested in the diagnostic messages (standard error)
+on the terminal, the normal formatted output (standard output) is
+redirected into the nirvana device
+.IR /dev/null .
+The resulting diagnostic messages are displayed directly below the
+corresponding example.
+.
+.
+.\" --------------------------------------------------------------------
+.SS "Command line option"
+.
+.P
+.Shell_cmd "echo '."
+.Shell_cmd+ ".de test_macro"
+.Shell_cmd+ ".."
+.Shell_cmd+ ".test_macro"
+.Shell_cmd+ ".test_macro some dummy arguments"
+.Shell_cmd+ "' | groff -m trace >/dev/null"
+.P
+.Example
+*** de trace enter: test_macro
+*** trace exit: test_macro
+*** de trace enter: test_macro "some" "dummy" "arguments"
+*** trace exit: test_macro "some" "dummy" "arguments"
+./Example
+.
+.P
+The entry and the exit of each macro call is displayed on the terminal
+(standard output) \[em] together with the arguments (if any).
+.
+.
+.\" --------------------------------------------------------------------
+.SS "Nested macro calls"
+.
+.P
+.Shell_cmd "echo '."
+.Shell_cmd+ ".de child"
+.Shell_cmd+ ".."
+.Shell_cmd+ ".de parent"
+.Shell_cmd+ ".child"
+.Shell_cmd+ ".."
+.Shell_cmd+ ".parent"
+.Shell_cmd+ "' | groff -m trace >/dev/null"
+.P
+.Example
+*** de trace enter: parent
+*** de trace enter: child
+*** trace exit: child
+*** trace exit: parent
+./Example
+.
+.P
+This shows that macro calls can be nested.
+.
+This powerful feature can help to tack down quite complex call stacks.
+.
+.
+.\" --------------------------------------------------------------------
+.SS "Activating with .mso"
+.
+.Shell_cmd "echo '."
+.Shell_cmd+ ".de before"
+.Shell_cmd+ ..
+.Shell_cmd+ ".mso trace.tmac"
+.Shell_cmd+ ".de after"
+.Shell_cmd+ ..
+.Shell_cmd+ .before
+.Shell_cmd+ .after
+.Shell_cmd+ .before
+.Shell_cmd+ "' | groff >/dev/null"
+.P
+.Example
+*** de trace enter: after
+*** trace exit: after
+./Example
+.
+.P
+Here, the tracing is activated within the document, not by a command
+line option.
+.
+As tracing was not active when macro
+.I before
+was defined, no call of this macro is protocolled; on the other hand,
+the macro
+.I after
+is fully protocolled.
+.
+.
+.\" --------------------------------------------------------------------
+.SH FILES
+.\" --------------------------------------------------------------------
+.
+The
+.I trace
+macros are kept in the file
+.B trace.tmac
+located in the
+.IR "tmac directory" ;
+see
+.BR groff_tmac (@MAN5EXT@)
+for details.
+.
+.
+.\" --------------------------------------------------------------------
+.SH ENVIRONMENT
+.\" --------------------------------------------------------------------
+.
+.TP
+.Env_var $GROFF_TMAC_PATH
+A colon-separated list of additional tmac directories in which to
+search for macro files; see
+.BR groff_tmac (@MAN5EXT@)
+for details.
+.
+.
+.\" --------------------------------------------------------------------
+.SH AUTHOR
+.\" --------------------------------------------------------------------
+.
+Copyright (C) 2002 Free Software Foundation, Inc.
+.
+.P
+This document is distributed under the terms of the FDL (GNU Free
+Documentation License) version 1.1 or later.
+.
+You should have received a copy of the FDL on your system, it is also
+available on-line at the
+.URL http://\:www.gnu.org/\:copyleft/\:fdl.html "GNU copyleft site" .
+.
+.P
+This document is part of
+.IR groff ,
+the GNU roff distribution.
+.
+It was written by
+.MTO bwarken@mayn.de "Bernd Warken".
+.
+.
+.\" --------------------------------------------------------------------
+.SH "SEE ALSO"
+.\" --------------------------------------------------------------------
+.
+.TP
+.BR groff (@MAN1EXT@)
+An overview of the groff system.
+.
+.
+.TP
+.BR troff (@MAN1EXT@)
+For details on option
+.BR -m .
+.
+.
+.TP
+.BR groffer (@MAN1EXT@)
+A viewer program for all kinds of roff documents.
+.
+.
+.TP
+.BR groff_tmac (@MAN5EXT@)
+A general description of groff macro packages.
+.
+.
+.TP
+.BR groff (@MAN7EXT@)
+A short reference for the groff formatting language.
+.
+.
+.P
+A complete reference for all parts of the groff system is found in the
+groff
+.BR info (1)
+file.
+.
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
diff --git a/contrib/groff/tmac/groff_www.man b/contrib/groff/tmac/groff_www.man
new file mode 100644
index 0000000..d659777
--- /dev/null
+++ b/contrib/groff/tmac/groff_www.man
@@ -0,0 +1,415 @@
+.TH GROFF_WWW @MAN7EXT@ "@MDATE@" "Groff Version @VERSION@"
+.\" Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
+.\" Written by Gaius Mulley (gaius@glam.ac.uk)
+.\"
+.\" This file is part of groff.
+.\"
+.\" groff is free software; you can redistribute it and/or modify it under
+.\" the terms of the GNU General Public License as published by the Free
+.\" Software Foundation; either version 2, or (at your option) any later
+.\" version.
+.\"
+.\" groff is distributed in the hope that it will be useful, but WITHOUT ANY
+.\" WARRANTY; without even the implied warranty of MERCHANTABILITY or
+.\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+.\" for more details.
+.\"
+.\" You should have received a copy of the GNU General Public License along
+.\" with groff; see the file COPYING. If not, write to the Free Software
+.\" Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+.\"
+.\" user level guide to using the -mwww macroset
+.\"
+.
+.do mso www.tmac
+.
+.\" we need the .LK here as we use it in the middle as an example --
+.\" once the user requests .LK then the automatic generation of links
+.\" at the top of the document is suppressed.
+.LK
+.
+.
+.SH NAME
+groff_www \- groff macros for authoring web pages
+.HR
+.SH SYNOPSIS
+.B "groff \-mwww"
+[ options ]
+file ...
+.
+.
+.SH DESCRIPTION
+This manual page describes the GNU \-mwww macro package, which is part of
+the groff document formatting system.
+The manual page is very a basic guide, and the html device driver
+.RB ( grohtml )
+has been completely rewritten but still remains as in an alpha state.
+It has been included into the distribution so that a lot of people have a
+chance to test it.
+Note that this macro file will be automatically called (via the
+.B troffrc
+file) if you use
+.BR \-Thtml .
+.PP
+To see the hyperlinks in action, please format this man page with the
+.B grohtml
+device.
+.PP
+Here is a summary of the functions found in this macro set.
+.ta 2iL
+.nf
+\&.HX automatic heading level cut off;
+ $1 point for sections/headers
+\&.BCL specify colours on a web page
+\&.BGIMG specify background image
+\&.URL create a url using two parameters
+\&.FTP create an ftp reference
+\&.MTO create a html email address
+\&.FTP create an ftp reference
+\&.TAG generate an html name
+\&.IMG include an image file
+\&.PIMG include png image
+\&.MPIMG place png on the margin and
+ wrap text around it
+\&.HnS begin heading
+\&.HnE end heading
+\&.LK emit automatically collected links.
+\&.HR produce a horizontal rule
+\&.NHR suppress automatic generation of rules.
+\&.HTL only generate HTML title
+\&.ULS unorder list begin
+\&.ULE unorder list end
+\&.LI insert a list item
+\&.DC generate a drop capital
+\&.HTML pass an html raw request to the
+ device driver
+.fi
+.PP
+Output of the
+.BR pic ,
+.BR eqn ,
+.BR refer ,
+and
+.B tbl
+preprocessors is acceptable as input.
+.
+.
+.SH REQUESTS
+.TP
+.B HX
+Specify the cut off depth when generating links from section headings.
+For example, a parameter of\~2 would cause
+.B grohtml
+to generate a list of links for
+.B .NH\ 1
+and
+.B .NH\ 2
+but not for
+.BR .NH\ 3 .
+Whereas
+.RS
+.IP
+.nf
+.B .HX 0
+.fi
+.RE
+.IP
+will tell
+.B grohtml
+that no heading links should be created at all.
+Another method for turning automatic headings off is by issuing the
+the command line switch
+.B \-P\-l
+to
+.BR groff .
+.
+.TP
+.B BCL
+This macro takes five parameters: foreground, background, active hypertext
+link, hypertext link not yet visited, and visited hypertext link colour.
+.
+.TP
+.B BGIMG
+the only parameter to this macro is the background image file.
+.
+.TP
+.B URL
+generates
+.TAG URL
+a URL using either two or three arguments.
+The first parameter is the actual URL, the second is the name of the link,
+and the third is optional stuff to be printed immediately afterwards.
+Hyphenation is disabled while printing the actual URL; explicit breakpoints
+should be inserted with the
+.B \[rs]:
+escape.
+Here is how to encode
+.URL http://\:foo.\:org/ "foo" :
+.RS
+.IP
+.B .URL http://\[rs]:foo.\[rs]:org/ "foo" :
+.RE
+.IP
+If this is processed by a device other than
+.B \-Thtml
+it appears as:
+.RS
+.IP
+\m[blue]foo\m[] \[la]\f[C]http://foo.org\f[]\[ra]:
+.RE
+.IP
+The URL macro can be of any type; for example we can reference
+.URL pic.html "Eric Raymond's pic guide"
+by:
+.RS
+.IP
+.B .URL pic.html \[dq]Eric Raymond's pic guide\[dq]
+.RE
+.
+.TP
+.B MTO
+Generate an email html reference.
+The first argument is mandatory as the email address.
+The optional second argument is the text you see in your browser, and
+an optional third argument is stuff printed immediately afterwards.
+Hyphenation is disabled while printing the actual email address.
+For example,
+.MTO joe@user.org "Joe User"
+was achieved by the following macro:
+.RS
+.IP
+.B .MTO joe@user.org \[dq]Joe User\[dq]
+.RE
+.IP
+Note that all the URLs actually are treated as consuming no textual space
+in groff.
+This could be considered as a bug since it causes some problems.
+To circumvent this,
+.B www.tmac
+inserts a zero-width character which expands to a harmless space (only if
+run with
+.BR \-Thtml ).
+.
+.TP
+.B FTP
+indicates that data can be obtained via ftp.
+The first argument is the url and the second is the browser text.
+A third argument, similar to the macros above, is intended for stuff printed
+immediately afterwards.
+The second and the third parameter are optional.
+Hyphenation is disabled while printing the actual URL.
+As an example, here the location of the
+.FTP ftp://\:ftp.gnu.org/ "GNU ftp server" .
+The macro example above was specified by:
+.RS
+.IP
+.B .FTP ftp://\[rs]:ftp.gnu.org/ \[dq]GNU ftp server\[dq] .
+.RE
+.
+.TP
+.B TAG
+Generates an html name tag from its argument.
+This can then be referenced using the
+.URL #URL URL
+macro.
+As you can see, you must precede the tag name with
+.B #
+since it is a local reference.
+This link was achieved via placing a TAG in the URL description above;
+the source looks like this:
+.RS
+.IP
+.nf
+.ft B
+\&.TP
+\&.B URL
+generates
+\&.TAG URL
+a URL using either two or three arguments.
+\&.\|.\|.
+.fi
+.ft P
+.RE
+.
+.TP
+.B IMG
+Include a picture into the document.
+The first argument is the horizontal location: right, left, or center
+.RB ( \-R ,
+.BR \-L ,
+or
+.BR \-C ).
+The second argument is the filename.
+The optional third and fourth arguments are the width and height.
+If the width is absent it defaults to 1\~inch.
+If the height is absent it defaults to the width.
+This maps onto an html img tag.
+If you are including a png image then it is advisable to use the
+.B PIMG
+macro.
+.
+.TP
+.B PIMG
+Include an image in PNG format.
+This macro takes exactly the same parameters as the
+.B IMG
+macro; it has the advantage of working with postscript and html devices
+also since it can automatically convert the image into the EPS format,
+using the following programs
+of the
+.B netpbm
+package:
+.BR pngtopnm ,
+.BR pnmcrop ,
+and
+.BR pnmtops .
+If the document isn't processed with
+.B \-Thtml
+it is necessary to use the
+.B \-U
+option of groff.
+.
+.TP
+.B MPIMG
+Place a PNG image on the margin and wrap text around it.
+The first parameter is the alignment: left or right
+.RB ( \-L
+or
+.BR \-R ).
+The second argument is the filename.
+The optional third and fourth arguments are the width and height.
+If the width is absent it defaults to 1\~inch.
+If the height is absent it defaults to the width.
+.
+.TP
+.B HnS
+Begin heading.
+The heading level is specified by the first parameter.
+Use this macro of your headings contain URLs.
+Example:
+.RS
+.IP
+.nf
+.ft B
+\&.HnS 1
+\&.HR
+GNU Troff
+\&.URL http://groff.ffii.org (Groff)
+\&\(em a
+\&.URL http://www.gnu.org/ GNU
+\&project.
+\&Hosted by
+\&.URL http://ffii.org/ FFII .
+\&.HR
+\&.HnE
+.ft P
+.fi
+.RE
+.
+.TP
+.B HnE
+End heading.
+.
+.TP
+.B LK
+.TAG LK
+Force grohtml to place the automatically generated links at this position.
+If this manual page has been processed with
+.B \-Thtml
+those links can be seen right here.
+.
+.LK
+.
+.
+.SH SECTION HEADING LINKS
+By default
+.B grohtml
+generates links to all section headings and places these at the top of the
+html document. (See
+.URL #LK LINKS
+for details of how to switch this off or alter the position).
+.
+.TP
+.B HR
+Generate a full-width horizontal rule.
+.
+.TP
+.B NHR
+Suppress generation of the top and bottom rules which grohtml emits
+by default.
+.
+.TP
+.B HTL
+Generate an HTML title only.
+This differs from the
+.B TL
+macro of the
+.B ms
+macro package which generates both an HTML title and an H1 heading.
+Use it to provide an HTML title as search engine fodder but a graphic title
+in the document.
+.
+.TP
+.B HTML
+All text after this macro is treated as raw html.
+If the document is processed without
+.B \-Thtml
+then the macro is ignored.
+Internally, this macro is used as a building block for other higher-level
+macros.
+.IP
+For example, the
+.B BGIMG
+macro is defined as
+.RS
+.IP
+.nf
+.ft B
+\&.de BGIMG
+\&. HTML <body background=\[rs]$1>
+\&..
+.ft P
+.fi
+.RE
+.
+.TP
+.B DC
+Produce a drop capital.
+The first parameter is the letter to be dropped and enlarged, the second
+parameter is the ajoining text whose height the first letter should not
+exceed.
+The optional third parameter is the color of the dropped letter.
+.
+.
+.SH LIMITATIONS OF GROHTML
+.LP
+.B tbl
+information is currently rendered as a PNG image.
+.
+.
+.SH FILES
+@MACRODIR@/www.tmac
+.
+.
+.SH "SEE ALSO"
+.BR groff (@MAN1EXT@),
+.BR @g@troff (@MAN1EXT@)
+.BR grohtml (@MAN1EXT@),
+.BR netpbm (1)
+.
+.
+.SH AUTHOR
+.B grohtml
+was written by
+.MTO gaius@glam.ac.uk "Gaius Mulley"
+.
+.
+.SH BUGS
+Report bugs to the
+.MTO bug-groff@\:gnu.org "Groff Bug Mailing List" .
+Include a complete, self-contained example that will allow the bug to be
+reproduced, and say which version of groff you are using.
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
diff --git a/contrib/groff/tmac/html.tmac b/contrib/groff/tmac/html.tmac
index c5591c8..cd30c28 100644
--- a/contrib/groff/tmac/html.tmac
+++ b/contrib/groff/tmac/html.tmac
@@ -2,6 +2,9 @@
.\"
.nr _C \n(.C
.cp 0
+.
+.nroff
+.
.ftr CW CR
.ftr C CR
.ftr CO CI
@@ -10,24 +13,184 @@
.ftr HO HI
.ftr HX HBI
.ftr NX NBI
-.if !c\(em .char \(em --
-.if !c\(en .char \(en \-
-.if !c\(fi .char \(fi fi
-.if !c\(fl .char \(fl fl
-.if !c\(ff .char \(ff ff
-.if !c\(Fi .char \(Fi ffi
-.if !c\(Fl .char \(Fl ffl
-.if !c\(lq .char \(lq ``
-.if !c\(rq .char \(rq ''
-.if !c\(Bq .char \(bq ,,
-.if !c\(OE .char \(OE OE
-.if !c\(oe .char \(oe oe
-.if !c\(lh .char \(lh <-
-.if !c\(rh .char \(rh ->
-.if !c\(bq .tr \(bq,
-.if !c\(aq .tr \(aq'
-.if !\n(_C .mso pspic.tmac
-.cp \n(_C
+.
+.fchar \[fi] fi
+.fchar \[fl] fl
+.fchar \[ff] ff
+.fchar \[Fi] ffi
+.fchar \[Fl] ffl
+.
+.\"
+.\" remove hyphenation
+.\"
+.de hy
+..
+.de nh
+..
+.
+.\" Now set any characters defined in devps/S but not in devhtml/S to nul --
+.\" these are generated by eqn but not used by grohtml. grops generated
+.\" images during the alternative pass.
+.if !c\[*y] .tr \[*y]
+.if !c\[fa] .tr \[fa]
+.if !c\[te] .tr \[te]
+.if !c\[st] .tr \[st]
+.if !c\[=~] .tr \[=~]
+.if !c\[*A] .tr \[*A]
+.if !c\[*B] .tr \[*B]
+.if !c\[*X] .tr \[*X]
+.if !c\[*D] .tr \[*D]
+.if !c\[*E] .tr \[*E]
+.if !c\[*F] .tr \[*F]
+.if !c\[*G] .tr \[*G]
+.if !c\[*Y] .tr \[*Y]
+.if !c\[*I] .tr \[*I]
+.if !c\[+h] .tr \[+h]
+.if !c\[*K] .tr \[*K]
+.if !c\[*L] .tr \[*L]
+.if !c\[*M] .tr \[*M]
+.if !c\[*N] .tr \[*N]
+.if !c\[*O] .tr \[*O]
+.if !c\[*P] .tr \[*P]
+.if !c\[*H] .tr \[*H]
+.if !c\[*R] .tr \[*R]
+.if !c\[*S] .tr \[*S]
+.if !c\[*T] .tr \[*T]
+.if !c\[ts] .tr \[ts]
+.if !c\[*W] .tr \[*W]
+.if !c\[*C] .tr \[*C]
+.if !c\[*Q] .tr \[*Q]
+.if !c\[*Z] .tr \[*Z]
+.if !c\[3d] .tr \[3d]
+.if !c\[tf] .tr \[tf]
+.if !c\[pp] .tr \[pp]
+.if !c\[radicalex] .tr \[radicalex]
+.if !c\[*a] .tr \[*a]
+.if !c\[*b] .tr \[*b]
+.if !c\[*x] .tr \[*x]
+.if !c\[*d] .tr \[*d]
+.if !c\[*e] .tr \[*e]
+.if !c\[*f] .tr \[*f]
+.if !c\[*g] .tr \[*g]
+.if !c\[*y] .tr \[*y]
+.if !c\[*i] .tr \[*i]
+.if !c\[+f] .tr \[+f]
+.if !c\[*k] .tr \[*k]
+.if !c\[*l] .tr \[*l]
+.if !c\[*m] .tr \[*m]
+.if !c\[*n] .tr \[*n]
+.if !c\[*o] .tr \[*o]
+.if !c\[*p] .tr \[*p]
+.if !c\[*h] .tr \[*h]
+.if !c\[*r] .tr \[*r]
+.if !c\[*s] .tr \[*s]
+.if !c\[*t] .tr \[*t]
+.if !c\[*u] .tr \[*u]
+.if !c\[+p] .tr \[+p]
+.if !c\[*w] .tr \[*w]
+.if !c\[*c] .tr \[*c]
+.if !c\[*q] .tr \[*q]
+.if !c\[*z] .tr \[*z]
+.if !c\[ap] .tr \[ap]
+.if !c\[*U] .tr \[*U]
+.if !c\[fm] .tr \[fm]
+.if !c\[<=] .tr \[<=]
+.if !c\[f/] .tr \[f/]
+.if !c\[if] .tr \[if]
+.if !c\[Fn] .tr \[Fn]
+.if !c\[CL] .tr \[CL]
+.if !c\[DI] .tr \[DI]
+.if !c\[HE] .tr \[HE]
+.if !c\[SP] .tr \[SP]
+.if !c\[<>] .tr \[<>]
+.if !c\[<-] .tr \[<-]
+.if !c\[ua] .tr \[ua]
+.\" .if !c\[arrowverttp] .tr \[arrowverttp]
+.if !c\[->] .tr \[->]
+.if !c\[da] .tr \[da]
+.\" .if !c\[arrowvertbt] .tr \[arrowvertbt]
+.if !c\[de] .tr \[de]
+.if !c\[sd] .tr \[sd]
+.if !c\[>=] .tr \[>=]
+.if !c\[pt] .tr \[pt]
+.if !c\[pd] .tr \[pd]
+.if !c\[bu] .tr \[bu]
+.if !c\[di] .tr \[di]
+.if !c\[!=] .tr \[!=]
+.if !c\[==] .tr \[==]
+.if !c\[~~] .tr \[~~]
+.if !c\[~=] .tr \[~=]
+.\" .if !c\[arrowvertex] .tr \[arrowvertex]
+.if !c\[an] .tr \[an]
+.if !c\[CR] .tr \[CR]
+.if !c\[Ah] .tr \[Ah]
+.if !c\[Im] .tr \[Im]
+.if !c\[Re] .tr \[Re]
+.if !c\[wp] .tr \[wp]
+.if !c\[c*] .tr \[c*]
+.if !c\[c+] .tr \[c+]
+.if !c\[es] .tr \[es]
+.if !c\[ca] .tr \[ca]
+.if !c\[cu] .tr \[cu]
+.if !c\[sp] .tr \[sp]
+.if !c\[ip] .tr \[ip]
+.if !c\[nb] .tr \[nb]
+.if !c\[sb] .tr \[sb]
+.if !c\[ib] .tr \[ib]
+.if !c\[mo] .tr \[mo]
+.if !c\[nm] .tr \[nm]
+.if !c\[/_] .tr \[/_]
+.if !c\[gr] .tr \[gr]
+.\" .if !c\[product] .tr \[product]
+.if !c\[sr] .tr \[sr]
+.if !c\[md] .tr \[md]
+.if !c\[no] .tr \[no]
+.if !c\[AN] .tr \[AN]
+.if !c\[OR] .tr \[OR]
+.if !c\[hA] .tr \[hA]
+.if !c\[lA] .tr \[lA]
+.if !c\[uA] .tr \[uA]
+.if !c\[rA] .tr \[rA]
+.if !c\[dA] .tr \[dA]
+.if !c\[lz] .tr \[lz]
+.if !c\[la] .tr \[la]
+.if !c\[sum] .tr \[sum]
+.\" .if !c\[parenlefttp] .tr \[parenlefttp]
+.\" .if !c\[parenleftex] .tr \[parenleftex]
+.\" .if !c\[parenleftbt] .tr \[parenleftbt]
+.\" .if !c\[bracketlefttp] .tr \[bracketlefttp]
+.if !c\[lc] .tr \[lc]
+.\" .if !c\[bracketleftex] .tr \[bracketleftex]
+.\" .if !c\[bracketleftbt] .tr \[bracketleftbt]
+.if !c\[lf] .tr \[lf]
+.\" .if !c\[bracelefttp] .tr \[bracelefttp]
+.if !c\[lt] .tr \[lt]
+.\" .if !c\[braceleftmid] .tr \[braceleftmid]
+.if !c\[lk] .tr \[lk]
+.\" .if !c\[braceleftbt] .tr \[braceleftbt]
+.if !c\[lb] .tr \[lb]
+.\" .if !c\[braceex] .tr \[braceex]
+.\" .if !c\[bracerightex] .tr \[bracerightex]
+.\" .if !c\[braceleftex] .tr \[braceleftex]
+.\" .if !c\[barex] .tr \[barex]
+.if !c\[bv] .tr \[bv]
+.if !c\[ra] .tr \[ra]
+.if !c\[is] .tr \[is]
+.\" .if !c\[parenrighttp] .tr \[parenrighttp]
+.\" .if !c\[parenrightex] .tr \[parenrightex]
+.\" .if !c\[parenrightbt] .tr \[parenrightbt]
+.\" .if !c\[bracketrighttp] .tr \[bracketrighttp]
+.if !c\[rc] .tr \[rc]
+.\" .if !c\[bracketrightex] .tr \[bracketrightex]
+.\" .if !c\[bracketrightbt] .tr \[bracketrightbt]
+.if !c\[rf] .tr \[rf]
+.\" .if !c\[bracerighttp] .tr \[bracerighttp]
+.if !c\[rt] .tr \[rt]
+.\" .if !c\[bracerightmid] .tr \[bracerightmid]
+.if !c\[rk] .tr \[rk]
+.\" .if !c\[bracerightbt] .tr \[bracerightbt]
+.if !c\[rb] .tr \[rb]
+.
.\" now turn off all headers and footers for ms, me and mm macro sets
.if d EF .EF ''''
.if d EH .EH ''''
@@ -38,10 +201,513 @@
.if d oh .oh ''''
.if d eh .eh ''''
.tl ''''
+.
.\" it doesn't make sense to use hyphenation with html, so we turn it off.
.hy 0
.nr HY 0
+.
.\" avoid line breaks after hyphen-like characters.
-.cflags 0 -\(hy\(em\(en\[shc]
+.cflags 0 -\[hy]\[em]\[en]\[shc]
+.
.pl 99999
-.\" eof of file, make sure this is the last time
+.
+.\" now for the color definitions
+.\"
+.\" html-4.0 colors
+.\"
+.defcolor white rgb #ffffff
+.defcolor fuchsia rgb #ff00ff
+.
+.\" these colors are compliant with html-3.0 and above
+.defcolor aliceblue rgb #eff7ff
+.defcolor antiquewhite rgb #f9e8d2
+.defcolor antiquewhite1 rgb #feedd6
+.defcolor antiquewhite2 rgb #ebdbc5
+.defcolor antiquewhite3 rgb #c8b9a6
+.defcolor antiquewhite4 rgb #817468
+.defcolor aquamarine rgb #43b7ba
+.defcolor aquamarine1 rgb #87fdce
+.defcolor aquamarine2 rgb #7deabe
+.defcolor aquamarine3 rgb #69c69f
+.defcolor aquamarine4 rgb #417c64
+.defcolor azure rgb #efffff
+.defcolor azure2 rgb #deecec
+.defcolor azure3 rgb #bcc7c7
+.defcolor azure4 rgb #7a7d7d
+.defcolor beige rgb #f5f3d7
+.defcolor bisque rgb #fde0bc
+.defcolor bisque2 rgb #ead0ae
+.defcolor bisque3 rgb #c7af92
+.defcolor bisque4 rgb #816e59
+.defcolor black rgb #000000
+.defcolor blanchedalmond rgb #fee8c6
+.defcolor blue rgb #0000ff
+.defcolor blue1 rgb #1535ff
+.defcolor blue2 rgb #1531ec
+.defcolor blue3 rgb #1528c7
+.defcolor blue4 rgb #151b7e
+.defcolor blueviolet rgb #7931df
+.defcolor brown rgb #980517
+.defcolor brown1 rgb #f63526
+.defcolor brown2 rgb #e42d17
+.defcolor brown3 rgb #c22217
+.defcolor burlywood1 rgb #fcce8e
+.defcolor burlywood2 rgb #eabe83
+.defcolor burlywood3 rgb #c6a06d
+.defcolor burlywood4 rgb #806341
+.defcolor cadetblue rgb #578693
+.defcolor cadetblue1 rgb #99f3ff
+.defcolor cadetblue2 rgb #8ee2ec
+.defcolor cadetblue3 rgb #77bfc7
+.defcolor cadetblue4 rgb #4c787e
+.defcolor chartreuse rgb #8afb17
+.defcolor chartreuse2 rgb #7fe817
+.defcolor chartreuse3 rgb #6cc417
+.defcolor chartreuse4 rgb #437c17
+.defcolor chocolate rgb #c85a17
+.defcolor coral rgb #f76541
+.defcolor coral2 rgb #e55b3c
+.defcolor coral3 rgb #c34a2c
+.defcolor coral4 rgb #7e2817
+.defcolor cornflowerblue rgb #151b8d
+.defcolor cornsilk rgb #fff7d7
+.defcolor cornsilk2 rgb #ece5c6
+.defcolor cornsilk3 rgb #c8c2a7
+.defcolor cornsilk4 rgb #817a68
+.defcolor cyan rgb #00ffff
+.defcolor cyan1 rgb #57feff
+.defcolor cyan2 rgb #50ebec
+.defcolor cyan3 rgb #46c7c7
+.defcolor cyan4 rgb #307d7e
+.defcolor darkgoldenrod rgb #af7817
+.defcolor darkgoldenrod1 rgb #fbb117
+.defcolor darkgoldenrod2 rgb #e8a317
+.defcolor darkgoldenrod3 rgb #c58917
+.defcolor darkgoldenrod4 rgb #7f5217
+.defcolor darkgreen rgb #254117
+.defcolor darkkhaki rgb #b7ad59
+.defcolor darkolivegreen rgb #4a4117
+.defcolor darkolivegreen1 rgb #ccfb5d
+.defcolor darkolivegreen2 rgb #bce954
+.defcolor darkolivegreen3 rgb #a0c544
+.defcolor darkolivegreen4 rgb #667c26
+.defcolor darkorange rgb #f88017
+.defcolor darkorange1 rgb #f87217
+.defcolor darkorange2 rgb #e56717
+.defcolor darkorange3 rgb #c35617
+.defcolor darkorange4 rgb #7e3117
+.defcolor darkorchid rgb #7d1b7e
+.defcolor darkorchid1 rgb #b041ff
+.defcolor darkorchid2 rgb #a23bec
+.defcolor darkorchid3 rgb #8b31c7
+.defcolor darkorchid4 rgb #571b7e
+.defcolor darksalmon rgb #e18b6b
+.defcolor darkseagreen rgb #8bb381
+.defcolor darkseagreen1 rgb #c3fdb8
+.defcolor darkseagreen2 rgb #b5eaaa
+.defcolor darkseagreen3 rgb #99c68e
+.defcolor darkseagreen4 rgb #617c58
+.defcolor darkslateblue rgb #2b3856
+.defcolor darkslategray rgb #25383c
+.defcolor darkslategray1 rgb #9afeff
+.defcolor darkslategray2 rgb #8eebec
+.defcolor darkslategray3 rgb #78c7c7
+.defcolor darkslategray4 rgb #4c7d7e
+.defcolor darkturquoise rgb #3b9c9c
+.defcolor darkviolet rgb #842dce
+.defcolor deeppink rgb #f52887
+.defcolor deeppink2 rgb #e4287c
+.defcolor deeppink3 rgb #c12267
+.defcolor deeppink4 rgb #7d053f
+.defcolor deepskyblue rgb #3bb9ff
+.defcolor deepskyblue2 rgb #38acec
+.defcolor deepskyblue3 rgb #3090c7
+.defcolor deepskyblue4 rgb #25587e
+.defcolor dimgray rgb #463e41
+.defcolor dodgerblue rgb #1589ff
+.defcolor dodgerblue2 rgb #157dec
+.defcolor dodgerblue3 rgb #1569c7
+.defcolor dodgerblue4 rgb #153e7e
+.defcolor firebrick rgb #800517
+.defcolor firebrick1 rgb #f62817
+.defcolor firebrick2 rgb #e42217
+.defcolor firebrick3 rgb #c11b17
+.defcolor floralwhite rgb #fff9ee
+.defcolor forestgreen rgb #4e9258
+.defcolor gainsboro rgb #d8d9d7
+.defcolor ghostwhite rgb #f7f7ff
+.defcolor gold rgb #d4a017
+.defcolor gold1 rgb #fdd017
+.defcolor gold2 rgb #eac117
+.defcolor gold3 rgb #c7a317
+.defcolor gold4 rgb #806517
+.defcolor goldenrod rgb #edda74
+.defcolor goldenrod1 rgb #fbb917
+.defcolor goldenrod2 rgb #e9ab17
+.defcolor goldenrod3 rgb #c68e17
+.defcolor goldenrod4 rgb #805817
+.defcolor gray rgb #736f6e
+.defcolor gray0 rgb #150517
+.defcolor gray100 rgb #ffffff
+.defcolor gray18 rgb #250517
+.defcolor gray21 rgb #2b1b17
+.defcolor gray23 rgb #302217
+.defcolor gray24 rgb #302226
+.defcolor gray25 rgb #342826
+.defcolor gray26 rgb #34282c
+.defcolor gray27 rgb #382d2c
+.defcolor gray28 rgb #3b3131
+.defcolor gray29 rgb #3e3535
+.defcolor gray30 rgb #413839
+.defcolor gray31 rgb #41383c
+.defcolor gray32 rgb #463e3f
+.defcolor gray34 rgb #4a4344
+.defcolor gray35 rgb #4c4646
+.defcolor gray36 rgb #4e4848
+.defcolor gray37 rgb #504a4b
+.defcolor gray38 rgb #544e4f
+.defcolor gray39 rgb #565051
+.defcolor gray40 rgb #595454
+.defcolor gray41 rgb #5c5858
+.defcolor gray42 rgb #5f5a59
+.defcolor gray43 rgb #625d5d
+.defcolor gray44 rgb #646060
+.defcolor gray45 rgb #666362
+.defcolor gray46 rgb #696565
+.defcolor gray47 rgb #6d6968
+.defcolor gray48 rgb #6e6a6b
+.defcolor gray49 rgb #726e6d
+.defcolor gray50 rgb #747170
+.defcolor gray51 rgb #787473
+.defcolor gray52 rgb #7a7777
+.defcolor gray53 rgb #7c7979
+.defcolor gray54 rgb #807d7c
+.defcolor gray55 rgb #82807e
+.defcolor gray56 rgb #858381
+.defcolor gray57 rgb #878583
+.defcolor gray58 rgb #8b8987
+.defcolor gray59 rgb #8d8b89
+.defcolor gray60 rgb #8f8e8d
+.defcolor gray61 rgb #939190
+.defcolor gray62 rgb #959492
+.defcolor gray63 rgb #999795
+.defcolor gray64 rgb #9a9998
+.defcolor gray65 rgb #9e9c9b
+.defcolor gray66 rgb #a09f9d
+.defcolor gray67 rgb #a3a2a0
+.defcolor gray68 rgb #a5a4a3
+.defcolor gray69 rgb #a9a8a6
+.defcolor gray70 rgb #acaba9
+.defcolor gray71 rgb #aeadac
+.defcolor gray72 rgb #b1b1af
+.defcolor gray73 rgb #b3b3b1
+.defcolor gray74 rgb #b7b6b4
+.defcolor gray75 rgb #b9b8b6
+.defcolor gray76 rgb #bcbbba
+.defcolor gray77 rgb #bebebc
+.defcolor gray78 rgb #c1c1bf
+.defcolor gray79 rgb #c3c4c2
+.defcolor gray80 rgb #c7c7c5
+.defcolor gray81 rgb #cacac9
+.defcolor gray82 rgb #cccccb
+.defcolor gray83 rgb #d0cfcf
+.defcolor gray84 rgb #d2d2d1
+.defcolor gray85 rgb #d5d5d4
+.defcolor gray86 rgb #d7d7d7
+.defcolor gray87 rgb #dbdbd9
+.defcolor gray88 rgb #dddddc
+.defcolor gray89 rgb #e0e0e0
+.defcolor gray90 rgb #e2e3e1
+.defcolor gray91 rgb #e5e6e4
+.defcolor gray92 rgb #e8e9e8
+.defcolor gray93 rgb #ebebea
+.defcolor gray94 rgb #eeeeee
+.defcolor gray95 rgb #f0f1f0
+.defcolor gray96 rgb #f4f4f3
+.defcolor gray97 rgb #f6f6f5
+.defcolor gray98 rgb #f9f9fa
+.defcolor gray99 rgb #fbfbfb
+.defcolor green rgb #00ff00
+.defcolor green1 rgb #5ffb17
+.defcolor green2 rgb #59e817
+.defcolor green3 rgb #4cc417
+.defcolor green4 rgb #347c17
+.defcolor greenyellow rgb #b1fb17
+.defcolor honeydew rgb #f0feee
+.defcolor honeydew2 rgb #deebdc
+.defcolor honeydew3 rgb #bcc7b9
+.defcolor honeydew4 rgb #7a7d74
+.defcolor hotpink rgb #f660ab
+.defcolor hotpink1 rgb #f665ab
+.defcolor hotpink2 rgb #e45e9d
+.defcolor hotpink3 rgb #c25283
+.defcolor hotpink4 rgb #7d2252
+.defcolor indianred rgb #5e2217
+.defcolor indianred1 rgb #f75d59
+.defcolor indianred2 rgb #e55451
+.defcolor indianred3 rgb #c24641
+.defcolor indianred4 rgb #7e2217
+.defcolor ivory rgb #ffffee
+.defcolor ivory2 rgb #ececdc
+.defcolor ivory3 rgb #c9c7b9
+.defcolor ivory4 rgb #817d74
+.defcolor khaki rgb #ada96e
+.defcolor khaki1 rgb #fff380
+.defcolor khaki2 rgb #ede275
+.defcolor khaki3 rgb #c9be62
+.defcolor khaki4 rgb #827839
+.defcolor lavender rgb #e3e4fa
+.defcolor lavenderblush rgb #fdeef4
+.defcolor lavenderblush2 rgb #ebdde2
+.defcolor lavenderblush3 rgb #c8bbbe
+.defcolor lavenderblush4 rgb #817679
+.defcolor lawngreen rgb #87f717
+.defcolor lemonchiffon rgb #fff8c6
+.defcolor lemonchiffon2 rgb #ece5b6
+.defcolor lemonchiffon3 rgb #c9c299
+.defcolor lemonchiffon4 rgb #827b60
+.defcolor lightblue rgb #addfff
+.defcolor lightblue1 rgb #bdedff
+.defcolor lightblue2 rgb #afdcec
+.defcolor lightblue3 rgb #95b9c7
+.defcolor lightblue4 rgb #5e767e
+.defcolor lightcoral rgb #e77471
+.defcolor lightcyan rgb #e0ffff
+.defcolor lightcyan2 rgb #cfecec
+.defcolor lightcyan3 rgb #afc7c7
+.defcolor lightcyan4 rgb #717d7d
+.defcolor lightgoldenrod rgb #ecd872
+.defcolor lightgoldenrod1 rgb #ffe87c
+.defcolor lightgoldenrod2 rgb #ecd672
+.defcolor lightgoldenrod3 rgb #c8b560
+.defcolor lightgoldenrod4 rgb #817339
+.defcolor lightgoldenrodyellow rgb #faf8cc
+.defcolor lightpink rgb #faafba
+.defcolor lightpink1 rgb #f9a7b0
+.defcolor lightpink2 rgb #e799a3
+.defcolor lightpink3 rgb #c48189
+.defcolor lightpink4 rgb #7f4e52
+.defcolor lightsalmon rgb #f9966b
+.defcolor lightsalmon2 rgb #e78a61
+.defcolor lightsalmon3 rgb #c47451
+.defcolor lightsalmon4 rgb #7f462c
+.defcolor lightseagreen rgb #3ea99f
+.defcolor lightskyblue rgb #82cafa
+.defcolor lightskyblue2 rgb #a0cfec
+.defcolor lightskyblue3 rgb #87afc7
+.defcolor lightskyblue4 rgb #566d7e
+.defcolor lightslateblue rgb #736aff
+.defcolor lightslategray rgb #6d7b8d
+.defcolor lightsteelblue rgb #728fce
+.defcolor lightsteelblue1 rgb #c6deff
+.defcolor lightsteelblue2 rgb #b7ceec
+.defcolor lightsteelblue3 rgb #9aadc7
+.defcolor lightsteelblue4 rgb #646d7e
+.defcolor lightyellow rgb #fffedc
+.defcolor lightyellow2 rgb #edebcb
+.defcolor lightyellow3 rgb #c9c7aa
+.defcolor lightyellow4 rgb #827d6b
+.defcolor limegreen rgb #41a317
+.defcolor linen rgb #f9eee2
+.defcolor magenta rgb #ff00ff
+.defcolor magenta1 rgb #f43eff
+.defcolor magenta2 rgb #e238ec
+.defcolor magenta3 rgb #c031c7
+.defcolor maroon rgb #810541
+.defcolor maroon1 rgb #f535aa
+.defcolor maroon2 rgb #e3319d
+.defcolor maroon3 rgb #c12283
+.defcolor maroon4 rgb #7d0552
+.defcolor mediumaquamarine rgb #348781
+.defcolor mediumblue rgb #152dc6
+.defcolor mediumforestgreen rgb #347235
+.defcolor mediumgoldenrod rgb #ccb954
+.defcolor mediumorchid rgb #b048b5
+.defcolor mediumorchid1 rgb #d462ff
+.defcolor mediumorchid2 rgb #c45aec
+.defcolor mediumorchid3 rgb #a74ac7
+.defcolor mediumorchid4 rgb #6a287e
+.defcolor mediumpurple rgb #8467d7
+.defcolor mediumpurple1 rgb #9e7bff
+.defcolor mediumpurple2 rgb #9172ec
+.defcolor mediumpurple3 rgb #7a5dc7
+.defcolor mediumpurple4 rgb #4e387e
+.defcolor mediumseagreen rgb #306754
+.defcolor mediumslateblue rgb #5e5a80
+.defcolor mediumspringgreen rgb #348017
+.defcolor mediumturquoise rgb #48cccd
+.defcolor mediumvioletred rgb #ca226b
+.defcolor midnightblue rgb #151b54
+.defcolor mintcream rgb #f5fff9
+.defcolor mistyrose rgb #fde1dd
+.defcolor mistyrose2 rgb #ead0cc
+.defcolor mistyrose3 rgb #c6afac
+.defcolor mistyrose4 rgb #806f6c
+.defcolor moccasin rgb #fde0ac
+.defcolor navajowhite rgb #fddaa3
+.defcolor navajowhite2 rgb #eac995
+.defcolor navajowhite3 rgb #c7aa7d
+.defcolor navajowhite4 rgb #806a4b
+.defcolor navy rgb #150567
+.defcolor oldlace rgb #fcf3e2
+.defcolor olivedrab rgb #658017
+.defcolor olivedrab1 rgb #c3fb17
+.defcolor olivedrab2 rgb #b5e917
+.defcolor olivedrab3 rgb #99c517
+.defcolor olivedrab4 rgb #617c17
+.defcolor orange rgb #f87a17
+.defcolor orange1 rgb #fa9b17
+.defcolor orange2 rgb #e78e17
+.defcolor orange3 rgb #c57717
+.defcolor orange4 rgb #7f4817
+.defcolor orangered rgb #f63817
+.defcolor orangered2 rgb #e43117
+.defcolor orangered3 rgb #c22817
+.defcolor orangered4 rgb #7e0517
+.defcolor orchid rgb #e57ded
+.defcolor orchid1 rgb #f67dfa
+.defcolor orchid2 rgb #e473e7
+.defcolor orchid3 rgb #c160c3
+.defcolor orchid4 rgb #7d387c
+.defcolor palegoldenrod rgb #ede49e
+.defcolor palegreen rgb #79d867
+.defcolor palegreen1 rgb #a0fc8d
+.defcolor palegreen2 rgb #94e981
+.defcolor palegreen3 rgb #7dc56c
+.defcolor palegreen4 rgb #4e7c41
+.defcolor paleturquoise rgb #aeebec
+.defcolor paleturquoise1 rgb #bcfeff
+.defcolor paleturquoise2 rgb #adebec
+.defcolor paleturquoise3 rgb #92c7c7
+.defcolor paleturquoise4 rgb #5e7d7e
+.defcolor palevioletred rgb #d16587
+.defcolor palevioletred1 rgb #f778a1
+.defcolor palevioletred2 rgb #e56e94
+.defcolor palevioletred3 rgb #c25a7c
+.defcolor palevioletred4 rgb #7e354d
+.defcolor papayawhip rgb #feeccf
+.defcolor peachpuff rgb #fcd5b0
+.defcolor peachpuff2 rgb #eac5a3
+.defcolor peachpuff3 rgb #c6a688
+.defcolor peachpuff4 rgb #806752
+.defcolor peru rgb #c57726
+.defcolor pink rgb #faafbe
+.defcolor pink2 rgb #e7a1b0
+.defcolor pink3 rgb #c48793
+.defcolor pink4 rgb #7f525d
+.defcolor plum rgb #b93b8f
+.defcolor plum1 rgb #f9b7ff
+.defcolor plum2 rgb #e6a9ec
+.defcolor plum3 rgb #c38ec7
+.defcolor plum4 rgb #7e587e
+.defcolor powderblue rgb #addce3
+.defcolor purple rgb #8e35ef
+.defcolor purple1 rgb #893bff
+.defcolor purple2 rgb #7f38ec
+.defcolor purple3 rgb #6c2dc7
+.defcolor purple4 rgb #461b7e
+.defcolor red rgb #ff0000
+.defcolor red1 rgb #f62217
+.defcolor red2 rgb #e41b17
+.defcolor rosybrown rgb #b38481
+.defcolor rosybrown1 rgb #fbbbb9
+.defcolor rosybrown2 rgb #e8adaa
+.defcolor rosybrown3 rgb #c5908e
+.defcolor rosybrown4 rgb #7f5a58
+.defcolor royalblue rgb #2b60de
+.defcolor royalblue1 rgb #306eff
+.defcolor royalblue2 rgb #2b65ec
+.defcolor royalblue3 rgb #2554c7
+.defcolor royalblue4 rgb #15317e
+.defcolor salmon1 rgb #f88158
+.defcolor salmon2 rgb #e67451
+.defcolor salmon3 rgb #c36241
+.defcolor salmon4 rgb #7e3817
+.defcolor sandybrown rgb #ee9a4d
+.defcolor seagreen rgb #4e8975
+.defcolor seagreen1 rgb #6afb92
+.defcolor seagreen2 rgb #64e986
+.defcolor seagreen3 rgb #54c571
+.defcolor seagreen4 rgb #387c44
+.defcolor seashell rgb #fef3eb
+.defcolor seashell2 rgb #ebe2d9
+.defcolor seashell3 rgb #c8bfb6
+.defcolor seashell4 rgb #817873
+.defcolor sienna rgb #8a4117
+.defcolor sienna1 rgb #f87431
+.defcolor sienna2 rgb #e66c2c
+.defcolor sienna3 rgb #c35817
+.defcolor sienna4 rgb #7e3517
+.defcolor skyblue rgb #6698ff
+.defcolor skyblue1 rgb #82caff
+.defcolor skyblue2 rgb #79baec
+.defcolor skyblue3 rgb #659ec7
+.defcolor skyblue4 rgb #41627e
+.defcolor slateblue rgb #737ca1
+.defcolor slateblue1 rgb #7369ff
+.defcolor slateblue2 rgb #6960ec
+.defcolor slateblue3 rgb #574ec7
+.defcolor slateblue4 rgb #342d7e
+.defcolor slategray rgb #657383
+.defcolor slategray1 rgb #c2dfff
+.defcolor slategray2 rgb #b4cfec
+.defcolor slategray3 rgb #98afc7
+.defcolor slategray4 rgb #616d7e
+.defcolor snow rgb #fff9fa
+.defcolor snow2 rgb #ece7e6
+.defcolor snow3 rgb #c8c4c2
+.defcolor snow4 rgb #817c7b
+.defcolor springgreen rgb #4aa02c
+.defcolor springgreen1 rgb #5efb6e
+.defcolor springgreen2 rgb #57e964
+.defcolor springgreen3 rgb #4cc552
+.defcolor springgreen4 rgb #347c2c
+.defcolor steelblue rgb #4863a0
+.defcolor steelblue1 rgb #5cb3ff
+.defcolor steelblue2 rgb #56a5ec
+.defcolor steelblue3 rgb #488ac7
+.defcolor steelblue4 rgb #2b547e
+.defcolor tan rgb #d8af79
+.defcolor tan1 rgb #fa9b3c
+.defcolor tan2 rgb #e78e35
+.defcolor thistle rgb #d2b9d3
+.defcolor thistle1 rgb #fcdfff
+.defcolor thistle2 rgb #e9cfec
+.defcolor thistle3 rgb #c6aec7
+.defcolor thistle4 rgb #806d7e
+.defcolor tomato rgb #f75431
+.defcolor tomato2 rgb #e54c2c
+.defcolor tomato3 rgb #c23e17
+.defcolor turquoise rgb #43c6db
+.defcolor turquoise1 rgb #52f3ff
+.defcolor turquoise2 rgb #4ee2ec
+.defcolor turquoise3 rgb #43bfc7
+.defcolor turquoise4 rgb #30787e
+.defcolor violet rgb #8d38c9
+.defcolor violetred rgb #e9358a
+.defcolor violetred1 rgb #f6358a
+.defcolor violetred2 rgb #e4317f
+.defcolor violetred3 rgb #c12869
+.defcolor violetred4 rgb #7d0541
+.defcolor wheat rgb #f3daa9
+.defcolor wheat1 rgb #fee4b1
+.defcolor wheat2 rgb #ebd3a3
+.defcolor wheat3 rgb #c8b189
+.defcolor wheat4 rgb #816f54
+.defcolor yellow rgb #ffff00
+.defcolor yellow1 rgb #fffc17
+.defcolor yellowgreen rgb #52d017
+.
+.cp \n(_C
+.
+.if !\n(_C \
+. mso pspic.tmac
+.
+.do ie '\[char97]'a' \
+. do mso latin1.tmac
+.el \
+. do mso cp1047.tmac
+.
+.\" tell grohtml the page offset
+.po
+.\" end of file, make sure this is the last line
diff --git a/contrib/groff/tmac/hyphen.us b/contrib/groff/tmac/hyphen.us
index d86c3d5..26a4332 100644
--- a/contrib/groff/tmac/hyphen.us
+++ b/contrib/groff/tmac/hyphen.us
@@ -1,5 +1,5 @@
-% Hyphenation patterns for US English.
-% These are the standard Plain TeX hyphenation patterns (in hyphen.tex).
+% The Plain TeX hyphenation tables [NOT TO BE CHANGED IN ANY WAY!]
+\patterns{ % just type <return> if you're not using INITEX
.ach4
.ad4der
.af1t
@@ -4447,3 +4447,20 @@ zo5ol
zte4
4z1z2
z4zy
+}
+\hyphenation{ % Do NOT make any alterations to this list! --- DEK
+as-so-ciate
+as-so-ciates
+dec-li-na-tion
+oblig-a-tory
+phil-an-thropic
+present
+presents
+project
+projects
+reci-procity
+re-cog-ni-zance
+ref-or-ma-tion
+ret-ri-bu-tion
+ta-ble
+}
diff --git a/contrib/groff/tmac/latin1.tmac b/contrib/groff/tmac/latin1.tmac
index 9cc15cc..01cb561 100644
--- a/contrib/groff/tmac/latin1.tmac
+++ b/contrib/groff/tmac/latin1.tmac
@@ -3,101 +3,103 @@
.nr _C \n(.C
.cp 0
.de latin1-tr
-.if c\\$2 .if !c\\$1 .tr \\$1\\$2
+. if c\\$2 .if !c\\$1 .trin \\$1\\$2
..
-.latin1-tr \[char161] \(r!
-.latin1-tr \[char162] \(ct
-.latin1-tr \[char163] \(Po
-.latin1-tr \[char164] \(Cs
-.latin1-tr \[char165] \(Ye
-.latin1-tr \[char166] \(bb
-.latin1-tr \[char167] \(sc
-.latin1-tr \[char168] \(ad
-.latin1-tr \[char169] \(co
-.latin1-tr \[char170] \(Of
-.latin1-tr \[char171] \(Fo
-.latin1-tr \[char172] \(no
-.latin1-tr \[char173] \[shc]
-.latin1-tr \[char174] \(rg
-.latin1-tr \[char175] \(a-
-.latin1-tr \[char176] \(de
-.latin1-tr \[char177] \(+-
-.latin1-tr \[char178] \(S2
-.latin1-tr \[char179] \(S3
-.latin1-tr \[char180] \(aa
-.latin1-tr \[char181] \(*m
-.latin1-tr \[char182] \(ps
-.latin1-tr \[char183] \(pc
-.latin1-tr \[char184] \(ac
-.latin1-tr \[char185] \(S1
-.latin1-tr \[char186] \(Om
-.latin1-tr \[char187] \(Fc
-.latin1-tr \[char188] \(14
-.latin1-tr \[char189] \(12
-.latin1-tr \[char190] \(34
-.latin1-tr \[char191] \(r?
-.latin1-tr \[char192] \(`A
-.latin1-tr \[char193] \('A
-.latin1-tr \[char194] \(^A
-.latin1-tr \[char195] \(~A
-.latin1-tr \[char196] \(:A
-.latin1-tr \[char197] \(oA
-.latin1-tr \[char198] \(AE
-.latin1-tr \[char199] \(,C
-.latin1-tr \[char200] \(`E
-.latin1-tr \[char201] \('E
-.latin1-tr \[char202] \(^E
-.latin1-tr \[char203] \(:E
-.latin1-tr \[char204] \(`I
-.latin1-tr \[char205] \('I
-.latin1-tr \[char206] \(^I
-.latin1-tr \[char207] \(:I
-.latin1-tr \[char208] \(-D
-.latin1-tr \[char209] \(~N
-.latin1-tr \[char210] \(`O
-.latin1-tr \[char211] \('O
-.latin1-tr \[char212] \(^O
-.latin1-tr \[char213] \(~O
-.latin1-tr \[char214] \(:O
-.latin1-tr \[char215] \(mu
-.latin1-tr \[char216] \(/O
-.latin1-tr \[char217] \(`U
-.latin1-tr \[char218] \('U
-.latin1-tr \[char219] \(^U
-.latin1-tr \[char220] \(:U
-.latin1-tr \[char221] \('Y
-.latin1-tr \[char222] \(TP
-.latin1-tr \[char223] \(ss
-.latin1-tr \[char224] \(`a
-.latin1-tr \[char225] \('a
-.latin1-tr \[char226] \(^a
-.latin1-tr \[char227] \(~a
-.latin1-tr \[char228] \(:a
-.latin1-tr \[char229] \(oa
-.latin1-tr \[char230] \(ae
-.latin1-tr \[char231] \(,c
-.latin1-tr \[char232] \(`e
-.latin1-tr \[char233] \('e
-.latin1-tr \[char234] \(^e
-.latin1-tr \[char235] \(:e
-.latin1-tr \[char236] \(`i
-.latin1-tr \[char237] \('i
-.latin1-tr \[char238] \(^i
-.latin1-tr \[char239] \(:i
-.latin1-tr \[char240] \(Sd
-.latin1-tr \[char241] \(~n
-.latin1-tr \[char242] \(`o
-.latin1-tr \[char243] \('o
-.latin1-tr \[char244] \(^o
-.latin1-tr \[char245] \(~o
-.latin1-tr \[char246] \(:o
-.latin1-tr \[char247] \(di
-.latin1-tr \[char248] \(/o
-.latin1-tr \[char249] \(`u
-.latin1-tr \[char250] \('u
-.latin1-tr \[char251] \(^u
-.latin1-tr \[char252] \(:u
-.latin1-tr \[char253] \('y
-.latin1-tr \[char254] \(Tp
-.latin1-tr \[char255] \(:y
-.cp \n(_C
+.
+.latin1-tr \[char161] \[r!]
+.latin1-tr \[char162] \[ct]
+.latin1-tr \[char163] \[Po]
+.latin1-tr \[char164] \[Cs]
+.latin1-tr \[char165] \[Ye]
+.latin1-tr \[char166] \[bb]
+.latin1-tr \[char167] \[sc]
+.latin1-tr \[char168] \[ad]
+.latin1-tr \[char169] \[co]
+.latin1-tr \[char170] \[Of]
+.latin1-tr \[char171] \[Fo]
+.latin1-tr \[char172] \[no]
+.\" The soft-hyphen character is only an input character
+.tr \[char173]\%
+.latin1-tr \[char174] \[rg]
+.latin1-tr \[char175] \[a-]
+.latin1-tr \[char176] \[de]
+.latin1-tr \[char177] \[t+-]
+.latin1-tr \[char178] \[S2]
+.latin1-tr \[char179] \[S3]
+.latin1-tr \[char180] \[aa]
+.latin1-tr \[char181] \[mc]
+.latin1-tr \[char182] \[ps]
+.latin1-tr \[char183] \[pc]
+.latin1-tr \[char184] \[ac]
+.latin1-tr \[char185] \[S1]
+.latin1-tr \[char186] \[Om]
+.latin1-tr \[char187] \[Fc]
+.latin1-tr \[char188] \[14]
+.latin1-tr \[char189] \[12]
+.latin1-tr \[char190] \[34]
+.latin1-tr \[char191] \[r?]
+.latin1-tr \[char192] \[`A]
+.latin1-tr \[char193] \['A]
+.latin1-tr \[char194] \[^A]
+.latin1-tr \[char195] \[~A]
+.latin1-tr \[char196] \[:A]
+.latin1-tr \[char197] \[oA]
+.latin1-tr \[char198] \[AE]
+.latin1-tr \[char199] \[,C]
+.latin1-tr \[char200] \[`E]
+.latin1-tr \[char201] \['E]
+.latin1-tr \[char202] \[^E]
+.latin1-tr \[char203] \[:E]
+.latin1-tr \[char204] \[`I]
+.latin1-tr \[char205] \['I]
+.latin1-tr \[char206] \[^I]
+.latin1-tr \[char207] \[:I]
+.latin1-tr \[char208] \[-D]
+.latin1-tr \[char209] \[~N]
+.latin1-tr \[char210] \[`O]
+.latin1-tr \[char211] \['O]
+.latin1-tr \[char212] \[^O]
+.latin1-tr \[char213] \[~O]
+.latin1-tr \[char214] \[:O]
+.latin1-tr \[char215] \[tmu]
+.latin1-tr \[char216] \[/O]
+.latin1-tr \[char217] \[`U]
+.latin1-tr \[char218] \['U]
+.latin1-tr \[char219] \[^U]
+.latin1-tr \[char220] \[:U]
+.latin1-tr \[char221] \['Y]
+.latin1-tr \[char222] \[TP]
+.latin1-tr \[char223] \[ss]
+.latin1-tr \[char224] \[`a]
+.latin1-tr \[char225] \['a]
+.latin1-tr \[char226] \[^a]
+.latin1-tr \[char227] \[~a]
+.latin1-tr \[char228] \[:a]
+.latin1-tr \[char229] \[oa]
+.latin1-tr \[char230] \[ae]
+.latin1-tr \[char231] \[,c]
+.latin1-tr \[char232] \[`e]
+.latin1-tr \[char233] \['e]
+.latin1-tr \[char234] \[^e]
+.latin1-tr \[char235] \[:e]
+.latin1-tr \[char236] \[`i]
+.latin1-tr \[char237] \['i]
+.latin1-tr \[char238] \[^i]
+.latin1-tr \[char239] \[:i]
+.latin1-tr \[char240] \[Sd]
+.latin1-tr \[char241] \[~n]
+.latin1-tr \[char242] \[`o]
+.latin1-tr \[char243] \['o]
+.latin1-tr \[char244] \[^o]
+.latin1-tr \[char245] \[~o]
+.latin1-tr \[char246] \[:o]
+.latin1-tr \[char247] \[tdi]
+.latin1-tr \[char248] \[/o]
+.latin1-tr \[char249] \[`u]
+.latin1-tr \[char250] \['u]
+.latin1-tr \[char251] \[^u]
+.latin1-tr \[char252] \[:u]
+.latin1-tr \[char253] \['y]
+.latin1-tr \[char254] \[Tp]
+.latin1-tr \[char255] \[:y]
+.cp \n[_C]
diff --git a/contrib/groff/tmac/lbp.tmac b/contrib/groff/tmac/lbp.tmac
index 0d17b63..e764122 100644
--- a/contrib/groff/tmac/lbp.tmac
+++ b/contrib/groff/tmac/lbp.tmac
@@ -12,4 +12,8 @@
.ftr Hi HNI
.ftr Hb HNB
.ftr Hx HNBI
+.ftr EBI EI
+.ftr CBI CI
.cp \n(_C
+.
+.do mso latin1.tmac
diff --git a/contrib/groff/tmac/lj4.tmac b/contrib/groff/tmac/lj4.tmac
index b5644e4..524e935 100644
--- a/contrib/groff/tmac/lj4.tmac
+++ b/contrib/groff/tmac/lj4.tmac
@@ -2,6 +2,7 @@
.\"
.nr _C \n(.C
.cp 0
+.
.ftr CW CR
.ftr C CR
.ftr CX CBI
@@ -12,9 +13,13 @@
.ftr HI UI
.ftr HO UI
.ftr HX UBI
-.\" This is designed so that \(ul, \(rn and \(br form corners.
-.if !c\[br] .char \[br] \Z'\v'.25m'\D'R .04m -1m''
-.if !c\[ru] .char \[ru] \Z'\v'-.02m'\D'R .54m .04m''\h'.5m'
-.if !c\[rn] .char \[rn] \Z'\v'-.77m'\D'R .54m .04m''\h'.5m'
-.if !c\[ul] .char \[ul] \Z'\v'.23m'\D'R .54m .04m''\h'.5m'
-.cp \n(_C
+.
+.\" This is designed so that \[ul], \[rn], and \[br] form corners.
+.fchar \[br] \Z'\v'.25m'\D'R .04m -1m''
+.fchar \[ru] \Z'\v'-.02m'\D'R .54m .04m''\h'.5m'
+.fchar \[rn] \Z'\v'-.77m'\D'R .54m .04m''\h'.5m'
+.fchar \[ul] \Z'\v'.23m'\D'R .54m .04m''\h'.5m'
+.
+.cp \n[_C]
+.
+.do mso latin1.tmac
diff --git a/contrib/groff/tmac/ps.tmac b/contrib/groff/tmac/ps.tmac
index 1aeacfd..01868ce 100644
--- a/contrib/groff/tmac/ps.tmac
+++ b/contrib/groff/tmac/ps.tmac
@@ -2,6 +2,7 @@
.\"
.nr _C \n(.C
.cp 0
+.
.ftr AX ABI
.ftr KR BMR
.ftr KI BMI
@@ -22,33 +23,593 @@
.ftr PX PBI
.ftr ZI ZCMI
.ftr C CR
-.cflags 8 \(an
-.char \[radicalex] \h'-\w'\(sr'u'\[radicalex]\h'\w'\(sr'u'
-.char \(mo \h'.08m'\(mo\h'-.08m'
-.char \(nm \h'.08m'\(nm\h'-.08m'
+.
+.cflags 8 \[an]
+.char \[radicalex] \h'-\w'\[sr]'u'\[radicalex]\h'\w'\[sr]'u'
+.char \[mo] \h'.08m'\[mo]\h'-.08m'
+.char \[nm] \h'.08m'\[nm]\h'-.08m'
.char \[parenlefttp] \[parenlefttp]\h'.016m'
.char \[parenleftbt] \[parenleftbt]\h'.016m'
.char \[parenleftex] \[parenleftex]\h'.016m'
.char \[parenrighttp] \[parenrighttp]\h'.016m'
.char \[parenrightbt] \[parenrightbt]\h'.016m'
.char \[parenrightex] \[parenrightex]\h'.016m'
-.if !c\[va] .char \[va] \o'\[ua]\[da]'
-.if !c\[ci] \
-.char \[ci] \v'-.25m'\h'.05m'\D'c .5m'\h'.05m'\v'.25m'
-.if !c\[sq] \
-.char \[sq] \h'.05m'\D'l .5m 0'\D'l 0 -.5m'\D'l -.5m 0'\D'l 0 .5m'\h'.55m'
-.if !c\[ru] .char \[ru] \D'l .5m 0'
-.if !c\[ul] .char \[ul] \v'.25m'\D'l .5m 0'\v'-.25m'
-.if !c\[br] .char \[br] \Z'\v'.25m'\D'l 0 -1m''
-.if !c\[rn] .char \[rn] \v'-.75m'\D'l .5m 0'\v'.75m'
-.if !c\[or] .char \[or] \h'.1m'\Z'\D'l 0 -.675m''\h'.1m'
-.if !c\[Fi] .char \[Fi] ffi
-.if !c\[Fl] .char \[Fl] ffl
-.if !c\[ff] .char \[ff] ff
-.if !c\[ij] .char \[ij] ij
-.if !c\[IJ] .char \[IJ] IJ
-.if !c\[tm] .char \[tm] \s-3\v'-.3m'TM\v'+.3m'\s+3
+.
+.fchar \[va] \o'\[ua]\[da]'
+.fchar \[ci] \v'-.25m'\h'.05m'\D'c .5m'\h'.05m'\v'.25m'
+.fchar \[sq] \h'.05m'\D'l .5m 0'\D'l 0 -.5m'\D'l -.5m 0'\D'l 0 .5m'\h'.55m'
+.fchar \[ru] \D'l .5m 0'
+.fchar \[ul] \v'.25m'\D'l .5m 0'\v'-.25m'
+.fchar \[br] \Z'\v'.25m'\D'l 0 -1m''
+.fchar \[rn] \v'-.75m'\D'l .5m 0'\v'.75m'
+.fchar \[or] \h'.1m'\Z'\D'l 0 -.675m''\h'.1m'
+.fchar \[Fi] ffi
+.fchar \[Fl] ffl
+.fchar \[ff] ff
+.fchar \[ij] ij
+.fchar \[IJ] IJ
+.fchar \[tm] \s-3\v'-.3m'TM\v'+.3m'\s+3
+.
.\" pic tests this register to see whether it should use \X'ps:...'
.nr 0p 1
-.cp \n(_C
-.if !\n(.C .mso pspic.tmac
+.
+.\" now for color definitions
+.\"
+.\" this is a composite of MIT's X Consortium red/green/blue (rgb) color
+.\" specifications, X Consortium version 10.41, 1994.
+.defcolor black rgb #000000
+.defcolor grey rgb #bebebe
+.defcolor dimgrey rgb #696969
+.defcolor lightgray rgb #d3d3d3
+.defcolor lightslategrey rgb #778899
+.defcolor slategray rgb #708090
+.defcolor slategray1 rgb #c6e2ff
+.defcolor slategray2 rgb #b9d3ee
+.defcolor slategray3 rgb #9fb6cd
+.defcolor slategray4 rgb #6c7b8b
+.defcolor slategrey rgb #708090
+.defcolor grey0 rgb #000000
+.defcolor grey1 rgb #030303
+.defcolor grey2 rgb #050505
+.defcolor grey3 rgb #080808
+.defcolor grey4 rgb #0a0a0a
+.defcolor grey5 rgb #0d0d0d
+.defcolor grey6 rgb #0f0f0f
+.defcolor grey7 rgb #121212
+.defcolor grey8 rgb #141414
+.defcolor grey9 rgb #171717
+.defcolor grey10 rgb #1a1a1a
+.defcolor grey11 rgb #1c1c1c
+.defcolor grey12 rgb #1f1f1f
+.defcolor grey13 rgb #212121
+.defcolor grey14 rgb #242424
+.defcolor grey15 rgb #262626
+.defcolor grey16 rgb #292929
+.defcolor grey17 rgb #2b2b2b
+.defcolor grey18 rgb #2e2e2e
+.defcolor grey19 rgb #303030
+.defcolor grey20 rgb #333333
+.defcolor grey21 rgb #363636
+.defcolor grey22 rgb #383838
+.defcolor grey23 rgb #3b3b3b
+.defcolor grey24 rgb #3d3d3d
+.defcolor grey25 rgb #404040
+.defcolor grey26 rgb #424242
+.defcolor grey27 rgb #454545
+.defcolor grey28 rgb #474747
+.defcolor grey29 rgb #4a4a4a
+.defcolor grey30 rgb #4d4d4d
+.defcolor grey31 rgb #4f4f4f
+.defcolor grey32 rgb #525252
+.defcolor grey33 rgb #545454
+.defcolor grey34 rgb #575757
+.defcolor grey35 rgb #595959
+.defcolor grey36 rgb #5c5c5c
+.defcolor grey37 rgb #5e5e5e
+.defcolor grey38 rgb #616161
+.defcolor grey39 rgb #636363
+.defcolor grey40 rgb #666666
+.defcolor grey41 rgb #696969
+.defcolor grey42 rgb #6b6b6b
+.defcolor grey43 rgb #6e6e6e
+.defcolor grey44 rgb #707070
+.defcolor grey45 rgb #737373
+.defcolor grey46 rgb #757575
+.defcolor grey47 rgb #787878
+.defcolor grey48 rgb #7a7a7a
+.defcolor grey49 rgb #7d7d7d
+.defcolor grey50 rgb #7f7f7f
+.defcolor grey51 rgb #828282
+.defcolor grey52 rgb #858585
+.defcolor grey53 rgb #878787
+.defcolor grey54 rgb #8a8a8a
+.defcolor grey55 rgb #8c8c8c
+.defcolor grey56 rgb #8f8f8f
+.defcolor grey57 rgb #919191
+.defcolor grey58 rgb #949494
+.defcolor grey59 rgb #969696
+.defcolor grey60 rgb #999999
+.defcolor grey61 rgb #9c9c9c
+.defcolor grey62 rgb #9e9e9e
+.defcolor grey63 rgb #a1a1a1
+.defcolor grey64 rgb #a3a3a3
+.defcolor grey65 rgb #a6a6a6
+.defcolor grey66 rgb #a8a8a8
+.defcolor grey67 rgb #ababab
+.defcolor grey68 rgb #adadad
+.defcolor grey69 rgb #b0b0b0
+.defcolor grey70 rgb #b3b3b3
+.defcolor grey71 rgb #b5b5b5
+.defcolor grey72 rgb #b8b8b8
+.defcolor grey73 rgb #bababa
+.defcolor grey74 rgb #bdbdbd
+.defcolor grey75 rgb #bfbfbf
+.defcolor grey76 rgb #c2c2c2
+.defcolor grey77 rgb #c4c4c4
+.defcolor grey78 rgb #c7c7c7
+.defcolor grey79 rgb #c9c9c9
+.defcolor grey80 rgb #cccccc
+.defcolor grey81 rgb #cfcfcf
+.defcolor grey82 rgb #d1d1d1
+.defcolor grey83 rgb #d4d4d4
+.defcolor grey84 rgb #d6d6d6
+.defcolor grey85 rgb #d9d9d9
+.defcolor grey86 rgb #dbdbdb
+.defcolor grey87 rgb #dedede
+.defcolor grey88 rgb #e0e0e0
+.defcolor grey89 rgb #e3e3e3
+.defcolor grey90 rgb #e5e5e5
+.defcolor grey91 rgb #e8e8e8
+.defcolor grey92 rgb #ebebeb
+.defcolor grey93 rgb #ededed
+.defcolor grey94 rgb #f0f0f0
+.defcolor grey95 rgb #f2f2f2
+.defcolor grey96 rgb #f5f5f5
+.defcolor grey97 rgb #f7f7f7
+.defcolor grey98 rgb #fafafa
+.defcolor grey99 rgb #fcfcfc
+.defcolor grey100 rgb #ffffff
+.defcolor aliceblue rgb #f0f8ff
+.defcolor blueviolet rgb #8a2be2
+.defcolor cadetblue rgb #5f9ea0
+.defcolor cadetblue1 rgb #98f5ff
+.defcolor cadetblue2 rgb #8ee5ee
+.defcolor cadetblue3 rgb #7ac5cd
+.defcolor cadetblue4 rgb #53868b
+.defcolor cornflowerblue rgb #6495ed
+.defcolor darkslateblue rgb #483d8b
+.defcolor darkturquoise rgb #00ced1
+.defcolor deepskyblue rgb #00bfff
+.defcolor deepskyblue1 rgb #00bfff
+.defcolor deepskyblue2 rgb #00b2ee
+.defcolor deepskyblue3 rgb #009acd
+.defcolor deepskyblue4 rgb #00688b
+.defcolor dodgerblue rgb #1e90ff
+.defcolor dodgerblue1 rgb #1e90ff
+.defcolor dodgerblue2 rgb #1c86ee
+.defcolor dodgerblue3 rgb #1874cd
+.defcolor dodgerblue4 rgb #104e8b
+.defcolor lightblue rgb #add8e6
+.defcolor lightblue1 rgb #bfefff
+.defcolor lightblue2 rgb #b2dfee
+.defcolor lightblue3 rgb #9ac0cd
+.defcolor lightblue4 rgb #68838b
+.defcolor lightcyan rgb #e0ffff
+.defcolor lightcyan1 rgb #e0ffff
+.defcolor lightcyan2 rgb #d1eeee
+.defcolor lightcyan3 rgb #b4cdcd
+.defcolor lightcyan4 rgb #7a8b8b
+.defcolor lightskyblue rgb #87cefa
+.defcolor lightskyblue1 rgb #b0e2ff
+.defcolor lightskyblue2 rgb #a4d3ee
+.defcolor lightskyblue3 rgb #8db6cd
+.defcolor lightskyblue4 rgb #607b8b
+.defcolor lightslateblue rgb #8470ff
+.defcolor lightsteelblue rgb #b0c4de
+.defcolor lightsteelblue1 rgb #cae1ff
+.defcolor lightsteelblue2 rgb #bcd2ee
+.defcolor lightsteelblue3 rgb #a2b5cd
+.defcolor lightsteelblue4 rgb #6e7b8b
+.defcolor mediumaquamarine rgb #66cdaa
+.defcolor mediumblue rgb #0000cd
+.defcolor mediumslateblue rgb #7b68ee
+.defcolor mediumturquoise rgb #48d1cc
+.defcolor midnightblue rgb #191970
+.defcolor navyblue rgb #000080
+.defcolor paleturquoise rgb #afeeee
+.defcolor paleturquoise1 rgb #bbffff
+.defcolor paleturquoise2 rgb #aeeeee
+.defcolor paleturquoise3 rgb #96cdcd
+.defcolor paleturquoise4 rgb #668b8b
+.defcolor powderblue rgb #b0e0e6
+.defcolor royalblue rgb #4169e1
+.defcolor royalblue1 rgb #4876ff
+.defcolor royalblue2 rgb #436eee
+.defcolor royalblue3 rgb #3a5fcd
+.defcolor royalblue4 rgb #27408b
+.defcolor skyblue rgb #87ceeb
+.defcolor skyblue1 rgb #87ceff
+.defcolor skyblue2 rgb #7ec0ee
+.defcolor skyblue3 rgb #6ca6cd
+.defcolor skyblue4 rgb #4a708b
+.defcolor slateblue rgb #6a5acd
+.defcolor slateblue1 rgb #836fff
+.defcolor slateblue2 rgb #7a67ee
+.defcolor slateblue3 rgb #6959cd
+.defcolor slateblue4 rgb #473c8b
+.defcolor steelblue rgb #4682b4
+.defcolor steelblue1 rgb #63b8ff
+.defcolor steelblue2 rgb #5cacee
+.defcolor steelblue3 rgb #4f94cd
+.defcolor steelblue4 rgb #36648b
+.defcolor aquamarine rgb #7fffd4
+.defcolor aquamarine1 rgb #7fffd4
+.defcolor aquamarine2 rgb #76eec6
+.defcolor aquamarine3 rgb #66cdaa
+.defcolor aquamarine4 rgb #458b74
+.defcolor azure rgb #f0ffff
+.defcolor azure1 rgb #f0ffff
+.defcolor azure2 rgb #e0eeee
+.defcolor azure3 rgb #c1cdcd
+.defcolor azure4 rgb #838b8b
+.defcolor blue rgb #0000ff
+.defcolor blue1 rgb #0000ff
+.defcolor blue2 rgb #0000ee
+.defcolor blue3 rgb #0000cd
+.defcolor blue4 rgb #00008b
+.defcolor cyan rgb #00ffff
+.defcolor cyan1 rgb #00ffff
+.defcolor cyan2 rgb #00eeee
+.defcolor cyan3 rgb #00cdcd
+.defcolor cyan4 rgb #008b8b
+.defcolor navy rgb #000080
+.defcolor turquoise rgb #40e0d0
+.defcolor turquoise1 rgb #00f5ff
+.defcolor turquoise2 rgb #00e5ee
+.defcolor turquoise3 rgb #00c5cd
+.defcolor turquoise4 rgb #00868b
+.defcolor darkslategray rgb #2f4f4f
+.defcolor darkslategray1 rgb #97ffff
+.defcolor darkslategray2 rgb #8deeee
+.defcolor darkslategray3 rgb #79cdcd
+.defcolor darkslategray4 rgb #528b8b
+.defcolor rosybrown rgb #bc8f8f
+.defcolor rosybrown1 rgb #ffc1c1
+.defcolor rosybrown2 rgb #eeb4b4
+.defcolor rosybrown3 rgb #cd9b9b
+.defcolor rosybrown4 rgb #8b6969
+.defcolor saddlebrown rgb #8b4513
+.defcolor sandybrown rgb #f4a460
+.defcolor beige rgb #f5f5dc
+.defcolor brown rgb #a52a2a
+.defcolor brown1 rgb #ff4040
+.defcolor brown2 rgb #ee3b3b
+.defcolor brown3 rgb #cd3333
+.defcolor brown4 rgb #8b2323
+.defcolor burlywood rgb #deb887
+.defcolor burlywood1 rgb #ffd39b
+.defcolor burlywood2 rgb #eec591
+.defcolor burlywood3 rgb #cdaa7d
+.defcolor burlywood4 rgb #8b7355
+.defcolor chocolate rgb #d2691e
+.defcolor chocolate1 rgb #ff7f24
+.defcolor chocolate2 rgb #ee7621
+.defcolor chocolate3 rgb #cd661d
+.defcolor chocolate4 rgb #8b4513
+.defcolor peru rgb #cd853f
+.defcolor tan rgb #d2b48c
+.defcolor tan1 rgb #ffa54f
+.defcolor tan2 rgb #ee9a49
+.defcolor tan3 rgb #cd853f
+.defcolor tan4 rgb #8b5a2b
+.defcolor darkgreen rgb #006400
+.defcolor darkkhaki rgb #bdb76b
+.defcolor darkolivegreen rgb #556b2f
+.defcolor darkolivegreen1 rgb #caff70
+.defcolor darkolivegreen2 rgb #bcee68
+.defcolor darkolivegreen3 rgb #a2cd5a
+.defcolor darkolivegreen4 rgb #6e8b3d
+.defcolor darkseagreen rgb #8fbc8f
+.defcolor darkseagreen1 rgb #c1ffc1
+.defcolor darkseagreen2 rgb #b4eeb4
+.defcolor darkseagreen3 rgb #9bcd9b
+.defcolor darkseagreen4 rgb #698b69
+.defcolor forestgreen rgb #228b22
+.defcolor greenyellow rgb #adff2f
+.defcolor lawngreen rgb #7cfc00
+.defcolor lightseagreen rgb #20b2aa
+.defcolor limegreen rgb #32cd32
+.defcolor mediumseagreen rgb #3cb371
+.defcolor mediumspringgreen rgb #00fa9a
+.defcolor mintcream rgb #f5fffa
+.defcolor olivedrab rgb #6b8e23
+.defcolor olivedrab1 rgb #c0ff3e
+.defcolor olivedrab2 rgb #b3ee3a
+.defcolor olivedrab3 rgb #9acd32
+.defcolor olivedrab4 rgb #698b22
+.defcolor palegreen rgb #98fb98
+.defcolor palegreen1 rgb #9aff9a
+.defcolor palegreen2 rgb #90ee90
+.defcolor palegreen3 rgb #7ccd7c
+.defcolor palegreen4 rgb #548b54
+.defcolor seagreen rgb #2e8b57
+.defcolor seagreen1 rgb #54ff9f
+.defcolor seagreen2 rgb #4eee94
+.defcolor seagreen3 rgb #43cd80
+.defcolor seagreen4 rgb #2e8b57
+.defcolor springgreen rgb #00ff7f
+.defcolor springgreen1 rgb #00ff7f
+.defcolor springgreen2 rgb #00ee76
+.defcolor springgreen3 rgb #00cd66
+.defcolor springgreen4 rgb #008b45
+.defcolor yellowgreen rgb #9acd32
+.defcolor chartreuse rgb #7fff00
+.defcolor chartreuse1 rgb #7fff00
+.defcolor chartreuse2 rgb #76ee00
+.defcolor chartreuse3 rgb #66cd00
+.defcolor chartreuse4 rgb #458b00
+.defcolor green rgb #00ff00
+.defcolor green1 rgb #00ff00
+.defcolor green2 rgb #00ee00
+.defcolor green3 rgb #00cd00
+.defcolor green4 rgb #008b00
+.defcolor khaki rgb #f0e68c
+.defcolor khaki1 rgb #fff68f
+.defcolor khaki2 rgb #eee685
+.defcolor khaki3 rgb #cdc673
+.defcolor khaki4 rgb #8b864e
+.defcolor darkorange rgb #ff8c00
+.defcolor darkorange1 rgb #ff7f00
+.defcolor darkorange2 rgb #ee7600
+.defcolor darkorange3 rgb #cd6600
+.defcolor darkorange4 rgb #8b4500
+.defcolor darksalmon rgb #e9967a
+.defcolor lightcoral rgb #f08080
+.defcolor lightsalmon rgb #ffa07a
+.defcolor lightsalmon1 rgb #ffa07a
+.defcolor lightsalmon2 rgb #ee9572
+.defcolor lightsalmon3 rgb #cd8162
+.defcolor lightsalmon4 rgb #8b5742
+.defcolor peachpuff rgb #ffdab9
+.defcolor peachpuff1 rgb #ffdab9
+.defcolor peachpuff2 rgb #eecbad
+.defcolor peachpuff3 rgb #cdaf95
+.defcolor peachpuff4 rgb #8b7765
+.defcolor bisque rgb #ffe4c4
+.defcolor bisque1 rgb #ffe4c4
+.defcolor bisque2 rgb #eed5b7
+.defcolor bisque3 rgb #cdb79e
+.defcolor bisque4 rgb #8b7d6b
+.defcolor coral rgb #ff7f50
+.defcolor coral1 rgb #ff7256
+.defcolor coral2 rgb #ee6a50
+.defcolor coral3 rgb #cd5b45
+.defcolor coral4 rgb #8b3e2f
+.defcolor honeydew rgb #f0fff0
+.defcolor honeydew1 rgb #f0fff0
+.defcolor honeydew2 rgb #e0eee0
+.defcolor honeydew3 rgb #c1cdc1
+.defcolor honeydew4 rgb #838b83
+.defcolor orange rgb #ffa500
+.defcolor orange1 rgb #ffa500
+.defcolor orange2 rgb #ee9a00
+.defcolor orange3 rgb #cd8500
+.defcolor orange4 rgb #8b5a00
+.defcolor salmon rgb #fa8072
+.defcolor salmon1 rgb #ff8c69
+.defcolor salmon2 rgb #ee8262
+.defcolor salmon3 rgb #cd7054
+.defcolor salmon4 rgb #8b4c39
+.defcolor sienna rgb #a0522d
+.defcolor sienna1 rgb #ff8247
+.defcolor sienna2 rgb #ee7942
+.defcolor sienna3 rgb #cd6839
+.defcolor sienna4 rgb #8b4726
+.defcolor deeppink rgb #ff1493
+.defcolor deeppink1 rgb #ff1493
+.defcolor deeppink2 rgb #ee1289
+.defcolor deeppink3 rgb #cd1076
+.defcolor deeppink4 rgb #8b0a50
+.defcolor hotpink rgb #ff69b4
+.defcolor hotpink1 rgb #ff6eb4
+.defcolor hotpink2 rgb #ee6aa7
+.defcolor hotpink3 rgb #cd6090
+.defcolor hotpink4 rgb #8b3a62
+.defcolor indianred rgb #cd5c5c
+.defcolor indianred1 rgb #ff6a6a
+.defcolor indianred2 rgb #ee6363
+.defcolor indianred3 rgb #cd5555
+.defcolor indianred4 rgb #8b3a3a
+.defcolor lightpink rgb #ffb6c1
+.defcolor lightpink1 rgb #ffaeb9
+.defcolor lightpink2 rgb #eea2ad
+.defcolor lightpink3 rgb #cd8c95
+.defcolor lightpink4 rgb #8b5f65
+.defcolor mediumvioletred rgb #c71585
+.defcolor mistyrose rgb #ffe4e1
+.defcolor mistyrose1 rgb #ffe4e1
+.defcolor mistyrose2 rgb #eed5d2
+.defcolor mistyrose3 rgb #cdb7b5
+.defcolor mistyrose4 rgb #8b7d7b
+.defcolor orangered rgb #ff4500
+.defcolor orangered1 rgb #ff4500
+.defcolor orangered2 rgb #ee4000
+.defcolor orangered3 rgb #cd3700
+.defcolor orangered4 rgb #8b2500
+.defcolor palevioletred rgb #db7093
+.defcolor palevioletred1 rgb #ff82ab
+.defcolor palevioletred2 rgb #ee799f
+.defcolor palevioletred3 rgb #cd6889
+.defcolor palevioletred4 rgb #8b475d
+.defcolor violetred rgb #d02090
+.defcolor violetred1 rgb #ff3e96
+.defcolor violetred2 rgb #ee3a8c
+.defcolor violetred3 rgb #cd3278
+.defcolor violetred4 rgb #8b2252
+.defcolor firebrick rgb #b22222
+.defcolor firebrick1 rgb #ff3030
+.defcolor firebrick2 rgb #ee2c2c
+.defcolor firebrick3 rgb #cd2626
+.defcolor firebrick4 rgb #8b1a1a
+.defcolor pink rgb #ffc0cb
+.defcolor pink1 rgb #ffb5c5
+.defcolor pink2 rgb #eea9b8
+.defcolor pink3 rgb #cd919e
+.defcolor pink4 rgb #8b636c
+.defcolor red rgb #ff0000
+.defcolor red1 rgb #ff0000
+.defcolor red2 rgb #ee0000
+.defcolor red3 rgb #cd0000
+.defcolor red4 rgb #8b0000
+.defcolor tomato rgb #ff6347
+.defcolor tomato1 rgb #ff6347
+.defcolor tomato2 rgb #ee5c42
+.defcolor tomato3 rgb #cd4f39
+.defcolor tomato4 rgb #8b3626
+.defcolor darkorchid rgb #9932cc
+.defcolor darkorchid1 rgb #bf3eff
+.defcolor darkorchid2 rgb #b23aee
+.defcolor darkorchid3 rgb #9a32cd
+.defcolor darkorchid4 rgb #68228b
+.defcolor darkviolet rgb #9400d3
+.defcolor lavenderblush rgb #fff0f5
+.defcolor lavenderblush1 rgb #fff0f5
+.defcolor lavenderblush2 rgb #eee0e5
+.defcolor lavenderblush3 rgb #cdc1c5
+.defcolor lavenderblush4 rgb #8b8386
+.defcolor mediumorchid rgb #ba55d3
+.defcolor mediumorchid1 rgb #e066ff
+.defcolor mediumorchid2 rgb #d15fee
+.defcolor mediumorchid3 rgb #b452cd
+.defcolor mediumorchid4 rgb #7a378b
+.defcolor mediumpurple rgb #9370db
+.defcolor mediumpurple1 rgb #ab82ff
+.defcolor mediumpurple2 rgb #9f79ee
+.defcolor mediumpurple3 rgb #8968cd
+.defcolor mediumpurple4 rgb #5d478b
+.defcolor lavender rgb #e6e6fa
+.defcolor magenta rgb #ff00ff
+.defcolor magenta1 rgb #ff00ff
+.defcolor magenta2 rgb #ee00ee
+.defcolor magenta3 rgb #cd00cd
+.defcolor magenta4 rgb #8b008b
+.defcolor maroon rgb #b03060
+.defcolor maroon1 rgb #ff34b3
+.defcolor maroon2 rgb #ee30a7
+.defcolor maroon3 rgb #cd2990
+.defcolor maroon4 rgb #8b1c62
+.defcolor orchid rgb #da70d6
+.defcolor orchid1 rgb #ff83fa
+.defcolor orchid2 rgb #ee7ae9
+.defcolor orchid3 rgb #cd69c9
+.defcolor orchid4 rgb #8b4789
+.defcolor plum rgb #dda0dd
+.defcolor plum1 rgb #ffbbff
+.defcolor plum2 rgb #eeaeee
+.defcolor plum3 rgb #cd96cd
+.defcolor plum4 rgb #8b668b
+.defcolor purple rgb #a020f0
+.defcolor purple1 rgb #9b30ff
+.defcolor purple2 rgb #912cee
+.defcolor purple3 rgb #7d26cd
+.defcolor purple4 rgb #551a8b
+.defcolor thistle rgb #d8bfd8
+.defcolor thistle1 rgb #ffe1ff
+.defcolor thistle2 rgb #eed2ee
+.defcolor thistle3 rgb #cdb5cd
+.defcolor thistle4 rgb #8b7b8b
+.defcolor violet rgb #ee82ee
+.defcolor antiquewhite rgb #faebd7
+.defcolor antiquewhite1 rgb #ffefdb
+.defcolor antiquewhite2 rgb #eedfcc
+.defcolor antiquewhite3 rgb #cdc0b0
+.defcolor antiquewhite4 rgb #8b8378
+.defcolor floralwhite rgb #fffaf0
+.defcolor ghostwhite rgb #f8f8ff
+.defcolor navajowhite rgb #ffdead
+.defcolor navajowhite1 rgb #ffdead
+.defcolor navajowhite2 rgb #eecfa1
+.defcolor navajowhite3 rgb #cdb38b
+.defcolor navajowhite4 rgb #8b795e
+.defcolor oldlace rgb #fdf5e6
+.defcolor whitesmoke rgb #f5f5f5
+.defcolor gainsboro rgb #dcdcdc
+.defcolor ivory rgb #fffff0
+.defcolor ivory1 rgb #fffff0
+.defcolor ivory2 rgb #eeeee0
+.defcolor ivory3 rgb #cdcdc1
+.defcolor ivory4 rgb #8b8b83
+.defcolor linen rgb #faf0e6
+.defcolor seashell rgb #fff5ee
+.defcolor seashell1 rgb #fff5ee
+.defcolor seashell2 rgb #eee5de
+.defcolor seashell3 rgb #cdc5bf
+.defcolor seashell4 rgb #8b8682
+.defcolor snow rgb #fffafa
+.defcolor snow1 rgb #fffafa
+.defcolor snow2 rgb #eee9e9
+.defcolor snow3 rgb #cdc9c9
+.defcolor snow4 rgb #8b8989
+.defcolor wheat rgb #f5deb3
+.defcolor wheat1 rgb #ffe7ba
+.defcolor wheat2 rgb #eed8ae
+.defcolor wheat3 rgb #cdba96
+.defcolor wheat4 rgb #8b7e66
+.defcolor white rgb #ffffff
+.defcolor blanchedalmond rgb #ffebcd
+.defcolor darkgoldenrod rgb #b8860b
+.defcolor darkgoldenrod1 rgb #ffb90f
+.defcolor darkgoldenrod2 rgb #eead0e
+.defcolor darkgoldenrod3 rgb #cd950c
+.defcolor darkgoldenrod4 rgb #8b6508
+.defcolor lemonchiffon rgb #fffacd
+.defcolor lemonchiffon1 rgb #fffacd
+.defcolor lemonchiffon2 rgb #eee9bf
+.defcolor lemonchiffon3 rgb #cdc9a5
+.defcolor lemonchiffon4 rgb #8b8970
+.defcolor lightgoldenrod rgb #eedd82
+.defcolor lightgoldenrod1 rgb #ffec8b
+.defcolor lightgoldenrod2 rgb #eedc82
+.defcolor lightgoldenrod3 rgb #cdbe70
+.defcolor lightgoldenrod4 rgb #8b814c
+.defcolor lightgoldenrodyellow rgb #fafad2
+.defcolor lightyellow rgb #ffffe0
+.defcolor lightyellow1 rgb #ffffe0
+.defcolor lightyellow2 rgb #eeeed1
+.defcolor lightyellow3 rgb #cdcdb4
+.defcolor lightyellow4 rgb #8b8b7a
+.defcolor palegoldenrod rgb #eee8aa
+.defcolor papayawhip rgb #ffefd5
+.defcolor cornsilk rgb #fff8dc
+.defcolor cornsilk1 rgb #fff8dc
+.defcolor cornsilk2 rgb #eee8cd
+.defcolor cornsilk3 rgb #cdc8b1
+.defcolor cornsilk4 rgb #8b8878
+.defcolor gold rgb #ffd700
+.defcolor gold1 rgb #ffd700
+.defcolor gold2 rgb #eec900
+.defcolor gold3 rgb #cdad00
+.defcolor gold4 rgb #8b7500
+.defcolor goldenrod rgb #daa520
+.defcolor goldenrod1 rgb #ffc125
+.defcolor goldenrod2 rgb #eeb422
+.defcolor goldenrod3 rgb #cd9b1d
+.defcolor goldenrod4 rgb #8b6914
+.defcolor moccasin rgb #ffe4b5
+.defcolor yellow rgb #ffff00
+.defcolor yellow1 rgb #ffff00
+.defcolor yellow2 rgb #eeee00
+.defcolor yellow3 rgb #cdcd00
+.defcolor yellow4 rgb #8b8b00
+.
+.cp \n[_C]
+.
+.if !\n(.C \
+. mso pspic.tmac
+.
+.do ie '\[char97]'a' \
+. do mso latin1.tmac
+.el \
+. do mso cp1047.tmac
+.
+.\" make sure that no blank lines creep in at the end of this file.
diff --git a/contrib/groff/tmac/psold.tmac b/contrib/groff/tmac/psold.tmac
index 28a446b..03889d1 100644
--- a/contrib/groff/tmac/psold.tmac
+++ b/contrib/groff/tmac/psold.tmac
@@ -45,7 +45,7 @@ I\h'-.25m'\v'-.33m'\s'\En(.s*6u/10u'\v'.33m'D\v'-.33m'\s0\v'.33m'
.tr \[char177]\[+-]
.tr \[char178]\[S2]
.tr \[char179]\[S3]
-.tr \[char181]\[*m]
+.tr \[char181]\[mc]
.tr \[char185]\[S1]
.tr \[char188]\[14]
.tr \[char189]\[12]
diff --git a/contrib/groff/tmac/pspic.tmac b/contrib/groff/tmac/pspic.tmac
index ab06668..6382d91 100644
--- a/contrib/groff/tmac/pspic.tmac
+++ b/contrib/groff/tmac/pspic.tmac
@@ -1,60 +1,106 @@
.\" pspic.tmac
.\"
.\" Define the PSPIC macro.
-.\" When used other than with -Tps, it will draw a box around where
+.\"
+.\" When used other than with -Tps or -Tdvi, it will draw a box around where
.\" the picture would go.
+.
.de PSPIC
-.nr ps-offset-mode 0
-.ie '\\$1'-L' \{\
-. nr ps-offset-mode 1
-. shift
-. HTML-DO-IMAGE \\$1 l
-.\}
-.el \{\
-. ie '\\$1'-R' \{\
-. nr ps-offset-mode 2
-. shift
-. HTML-DO-IMAGE \\$1 r
-. \}
-. el \{\
-. if '\\$1'-I' \{\
-. nr ps-offset-mode 3
-. nr ps-offset (m;\\$2)
-. shift 2
-. \}
-. HTML-DO-IMAGE \\$1 i
-. \}
-.\}
-.br
-.psbb \\$1
-.if (\\n[llx] : \\n[lly] : \\n[urx] : \\n[ury]) \{\
-. nr ps-wid (\\n[urx]-\\n[llx])
-. nr ps-ht (\\n[ury]-\\n[lly])
-. if \\n[ps-wid]<0 .nr ps-wid 0-\\n[ps-wid]
-. if \\n[ps-ht]<0 .nr ps-ht 0-\\n[ps-ht]
-. ie \\n[.$]>=2 .nr ps-deswid (i;\\$2)
-. el .nr ps-deswid \\n[.l]-\\n[.i]<?\\n[ps-wid]p
-. nr ps-desht \\n[ps-deswid]*1000+(\\n[ps-wid]/2)/\\n[ps-wid]\
-*\\n[ps-ht]+500/1000
-. if \\n[.$]>=3&(\\n[ps-desht]>(i;0\\$3)) \{\
-. nr ps-desht (i;\\$3)
-. nr ps-deswid \\n[ps-desht]*1000+(\\n[ps-ht]/2)/\\n[ps-ht]\
-*\\n[ps-wid]+500/1000
-. \}
-. ne \\n[ps-desht]u+1v
-. if \\n[ps-offset-mode]=0 .nr ps-offset \\n[.l]-\\n[.i]-\\n[ps-deswid]/2
-. if \\n[ps-offset-mode]=1 .nr ps-offset 0
-. if \\n[ps-offset-mode]=2 .nr ps-offset \\n[.l]-\\n[.i]-\\n[ps-deswid]
-. ie \\n[.$]>=3 .ds ps-desht \\n[ps-desht]
-. el .ds ps-desht \" empty
+. nr ps-offset-mode 0
+. ie '\\$1'-L' \{\
+. nr ps-offset-mode 1
+. shift
+. HTML-DO-IMAGE \\$1 l
+. \}
+. el \{\
+. ie '\\$1'-R' \{\
+. nr ps-offset-mode 2
+. shift
+. HTML-DO-IMAGE \\$1 r
+. \}
+. el \{\
+. ie '\\$1'-I' \{\
+. nr ps-offset-mode 3
+. nr ps-offset (m;\\$2)
+. shift 2
+. HTML-DO-IMAGE \\$1 i
+. \}
+. el \
+. HTML-DO-IMAGE \\$1 c
+. \}
+. \}
+.
+. br
+.
+. psbb \\$1
+. if (\\n[llx] : \\n[lly] : \\n[urx] : \\n[ury]) \{\
+. nr ps-wid (\\n[urx] - \\n[llx])
+. nr ps-ht (\\n[ury] - \\n[lly])
+. if (\\n[ps-wid] < 0) \
+. nr ps-wid (-\\n[ps-wid])
+. if (\\n[ps-ht] < 0) \
+. nr ps-ht (-\\n[ps-ht])
+. ie (\\n[.$] >= 2) \
+. nr ps-deswid (i;\\$2)
+. el \
+. nr ps-deswid ((\\n[.l] - \\n[.i]) <? \\n[ps-wid]p)
+. nr ps-desht (\\n[ps-deswid] * 1000 + (\\n[ps-wid] / 2) \
+ / \\n[ps-wid] * \\n[ps-ht] \
+ + 500 / 1000)
+. if ((\\n[.$] >= 3) & (\\n[ps-desht] > (i;0\\$3))) \{\
+. nr ps-desht (i;\\$3)
+. nr ps-deswid (\\n[ps-desht] * 1000 + (\\n[ps-ht] / 2) \
+ / \\n[ps-ht] * \\n[ps-wid] \
+ + 500 / 1000)
+. \}
+.
+. ne (\\n[ps-desht]u + 1v)
+.
+. if (\\n[ps-offset-mode] == 0) \
+. nr ps-offset (\\n[.l] - \\n[.i] - \\n[ps-deswid] / 2)
+. if (\\n[ps-offset-mode] == 1) \
+. nr ps-offset 0
+. if (\\n[ps-offset-mode] == 2) \
+. nr ps-offset (\\n[.l] - \\n[.i] - \\n[ps-deswid])
+.
+. ie '\*[.T]'dvi' \{\
+. ie (\\n[ps-wid]p == \\n[ps-deswid]) \{\
+. ds ps-scale \" empty
+. ds ps-hoffset hoffset=-\\n[llx]
+. ds ps-voffset voffset=-\\n[lly]
+. \}
+. el \{\
+. nr ps-scale (\\n[ps-deswid] * 100 / \\n[ps-wid]p)
+. nr ps-hoffset (-\\n[llx] * \\n[ps-scale] / 100)
+. nr ps-voffset (-\\n[lly] * \\n[ps-scale] / 100)
+. ds ps-scale hscale=\\n[ps-scale] vscale=\\n[ps-scale]
+. ds ps-hoffset hoffset=\\n[ps-hoffset]
+. ds ps-voffset voffset=\\n[ps-voffset]
+. \}
+.
+\h'\\n[ps-offset]u'\
+\v'\\n[ps-desht]u'\
+\X'psfile=\\$1 \\*[ps-hoffset] \\*[ps-voffset] \\*[ps-scale]'
+. \}
+. el \{\
+. ie (\\n[.$] >= 3) \
+. ds ps-desht \\n[ps-desht]
+. el \
+. ds ps-desht \" empty
+.
\h'\\n[ps-offset]u'\
\X'ps: invis'\
\Z'\D'p 0 \\n[ps-desht]u \\n[ps-deswid]u 0 0 -\\n[ps-desht]u''\
\X'ps: endinvis'\
-\v'\\n[ps-desht]u'\X'ps: import \\$1 \
-\\n[llx] \\n[lly] \\n[urx] \\n[ury] \\n[ps-deswid] \\*[ps-desht]'
-. br
-. sp \\n[ps-desht]u
-.\}
-.HTML-IMAGE-END
+\v'\\n[ps-desht]u'\
+\X'ps: import \
+ \\$1 \\n[llx] \\n[lly] \\n[urx] \\n[ury] \\n[ps-deswid] \\*[ps-desht]'
+. \}
+.
+. br
+. sp \\n[ps-desht]u
+. \}
+. HTML-IMAGE-END
..
+.
+.\" end of pspic.tmac
diff --git a/contrib/groff/tmac/s.tmac b/contrib/groff/tmac/s.tmac
index 7d1ad49..e36c3e2 100644
--- a/contrib/groff/tmac/s.tmac
+++ b/contrib/groff/tmac/s.tmac
@@ -3,7 +3,8 @@
s.tmac
-Copyright (C) 1989, 1990, 1991, 1992 Free Software Foundation, Inc.
+Copyright (C) 1989, 1990, 1991, 1992, 2001, 2002
+ Free Software Foundation, Inc.
Written by James Clark (jjc@jclark.com)
This file is part of groff.
@@ -25,8 +26,9 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
.if !\n(.g .ab These ms macros require groff.
.if \n(.C \
. ab The groff ms macros do not work in compatibility mode.
-.\" Enable warnings. You can delete this if you want.
-.warn
+.\" Enable warnings (only if none are given on the command line).
+.\" You can delete this if you want.
+.if (\n[.warn] == 65543) .warn
.\" See if already loaded.
.if r GS .nx
.nr GS 1
@@ -264,8 +266,8 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
.ns
.@PP
.if '\*(.T'html' \{\
-. cov*tl-au-print
-. als cov*tl-au-print @nop
+. cov*tl-au-print
+. als cov*tl-au-print @nop
. par@reset-env
. par@reset
. cov*print
@@ -303,7 +305,7 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
. bp 1
. als FS @FS
. als FE @FE
-. CHECK-FOOTER-AND-KEEP
+. CHECK-FOOTER-AND-KEEP
. \}
. br
.\}
@@ -1153,19 +1155,35 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
. par*pop-tag-env
. di
. chop par*label
-. ie '\*(.T'html' \{\
-. if \\n[dl]+1n<=\\n[\\n[.ev]:ai] .HTML-TAG ".ip"
-. ti 0
-\&\\$1
+. ti -\\n[\\n[.ev]:ai]u
+. ie \\n[dl]+1n<=\\n[\\n[.ev]:ai] \\*[par*label]\h'|\\n[\\n[.ev]:ai]u'\c
+. el \{\
+\\*[par*label]
. br
. \}
+. rm par*label
+.\}
+..
+.de @IP-html
+.if \\n[.$]>1 .nr \\n[.ev]:ai (n;\\$2)
+.par*start \\n[\\n[.ev]:ai] 0
+.if !'\\$1'' \{\
+. \" Divert the label so as to freeze any spaces.
+. di par*label
+. par*push-tag-env
+\&\\$1
+. par*pop-tag-env
+. di
+. chop par*label
+. ti -\\n[\\n[.ev]:ai]u
+. ie \\n[dl]+1n<=\\n[\\n[.ev]:ai] \{\
+. HTML-TAG-NS ".col 1"
+\\$1\h'|\\n[\\n[.ev]:ai]u'\c
+. HTML-TAG-NS ".col 2"
+. \}
. el \{\
-. ti -\\n[\\n[.ev]:ai]u
-. ie \\n[dl]+1n<=\\n[\\n[.ev]:ai] \\*[par*label]\h'|\\n[\\n[.ev]:ai]u'\c
-. el \{\
-\\*[par*label]
-. br
-. \}
+\\$1
+. br
. \}
. rm par*label
.\}
@@ -1562,7 +1580,13 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
.\}
.di eqn*div
.in 0
-.nf
+.if \\n[eqn*type]=0 .HTML-IMAGE-LEFT
+.if \\n[eqn*type]=1 \{\
+. if '\*(.T'html' .RS
+. HTML-IMAGE-INLINE
+.\}
+.if \\n[eqn*type]=2 .HTML-IMAGE
+.if !'\*(.T'html' .nf
..
.de @div-end!eqn*div
.@EN
@@ -1575,13 +1599,17 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
. di
. nr eqn*have-num 0
. if !'\\*[eqn*num]'' .nr eqn*have-num 1
-. if \\n[dl]:\\n[eqn*have-num] \{\
-. sp \\n[DD]u
+. ie \\n[dl]:\\n[eqn*have-num] \{\
+. if !'\*(.T'html' .sp \\n[DD]u
. par@reset
. ds eqn*tabs \\n[.tabs]
. nf
. ie \\n[dl] \{\
-. ds@need \\n[dn]u-1v+\n[.V]u
+.\" --fixme-- this really should not be necessary
+.\" and indicates that there is extra space creeping into
+.\" an equation when ps4html is enabled..
+. ie r ps4html .ds@need \\n[dn]u-1v+\n[.V]u+1i
+. el .ds@need \\n[dn]u-1v+\n[.V]u
. chop eqn*div
. ie \\n[eqn*type]=0 \{\
. ta (u;\\n[.l]-\\n[.i])R
@@ -1599,10 +1627,23 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
. ta (u;\\n[.l]-\\n[.i])R
\t\\*[eqn*num]
. \}
-. sp \\n[DD]u
+. if !'\*(.T'html' .sp \\n[DD]u
. ta \\*[eqn*tabs]
. \}
-. fi
+. el \{
+.\" must terminate empty equations in html and ps4html as they contain
+.\" the HTML-IMAGE-END suppression nodes
+. if \\n[dl] .chop eqn*div
+. if '\*(.T'html' \\*[eqn*div]
+. if r ps4html \\*[eqn*div]
+. \}
+. if !'\*(.T'html' .fi
+. if \\n[eqn*type]=0 .HTML-IMAGE-END
+. if \\n[eqn*type]=1 \{\
+. HTML-IMAGE-END
+. if '\*(.T'html' .RE
+. \}
+. if \\n[eqn*type]=2 .HTML-IMAGE-END
.\}
..
.\" ****************************
@@ -1618,7 +1659,9 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
..
.de @TS
.sp \\n[DD]u
+.\" .if !'\*(.T'html' .sp \\n[DD]u
.if '\\$1'H' .di tbl*header-div
+.HTML-IMAGE
..
.de tbl@top-hook
.if \\n[tbl*have-header] \{\
@@ -1660,8 +1703,9 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
.ie '\\n(.z'tbl*header-div' .@error-recover .TS H but no .TH before .TE
.el \{\
. nr tbl*have-header 0
-. sp \\n[DD]u
+. if !'\*(.T'html' .sp \\n[DD]u
.\}
+. HTML-IMAGE-END
.\" reset tabs
.TA
..
@@ -1686,8 +1730,10 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
. ds@need (u;\\$1)+1v
. in +(u;\\n[.l]-\\n[.i]-\\$2/2>?0)
.\}
+.HTML-IMAGE
..
.de PE
+.HTML-IMAGE-END
.par@reset
.sp \\n[DD]u+.5m
..
@@ -1904,31 +1950,35 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
.\" however this produced wierd results, so I've moved back to a more reliable
.\" but less interesting solution --fixme--
. if '\*(.T'html' \{\
-. rm KF
-. als KF KS
-. rm FS
-. de FS
-. br
-. HTML-IMAGE
+. rm KF
+. als KF KS
+. rm FS
+. de FS
+. br
+. HTML-IMAGE
\\..
-. rm FE
-. de FE
-. br
-. HTML-IMAGE-END
+. rm FE
+. de FE
+. br
+. HTML-IMAGE-END
\\..
. \}
. if r ps4html \{\
-. rm FS
-. de FS
-. br
-. HTML-IMAGE
+. rm FS
+. de FS
+. br
+. HTML-IMAGE
\\..
-. rm FE
-. de FE
-. br
-. HTML-IMAGE-END
+. rm FE
+. de FE
+. br
+. HTML-IMAGE-END
\\..
. \}
..
.par@load-init
+.if '\*(.T'html' \{\
+. rm @IP
+. als @IP @IP-html
+.\}
.\" Make sure that no blank lines creep in at the end of this file.
diff --git a/contrib/groff/tmac/trace.tmac b/contrib/groff/tmac/trace.tmac
index 143f954..c341b76 100644
--- a/contrib/groff/tmac/trace.tmac
+++ b/contrib/groff/tmac/trace.tmac
@@ -2,28 +2,60 @@
.\"
.\" Load this before a macro package that you want to trace.
.
+.nr _C \n(.C
+.cp 0
+.
+.do ds !!sp " \"
+.
.eo
.
.rn de !!de
.
+.
.!!de de
-. ecs
+. do ecs
. ec
-. !!de \$1
-. ie "\$1"\\$0" .tm *** trace enter: \\$0 \\$@
-. el .tm *** trace enter \$1: \\$0 \\$@
-. nop \\*[!!\$1]\\
-. ie "\$1"\\$0" .tm *** trace exit: \\$0 \\$@
-. el .tm *** trace exit \$1: \\$0 \\$@
+. do !!de \$1
+. ie "\$1"\\$0" .do tm1 "\\*[!!sp]*** de trace enter: \\$0 \\$@
+. el .do tm1 "\*[!!sp]*** trace enter \$1: \\$0 \\$@
+. do as !!sp " \"
+. do nop \\*[!!\$1]\\
+. do substring !!sp 1
+. ie "\$1"\\$0" .do tm1 "\\*[!!sp]*** trace exit: \\$0 \\$@
+. el .do tm1 "\*[!!sp]*** trace exit \$1: \\$0 \\$@
\..
.
-. ds !!d1 !!\$1
-. ds !!d2 \$2
+. do ds !!d1 !!\$1
+. do ds !!d2 \$2
.
-. ecr
-. dei !!d1 !!d2
+. do ecr
+. do dei !!d1 !!d2
+..
+.
+.rn am !!am
+.
+.!!am am
+. do ecs
+. ec
+. do !!am \$1
+. ie "\$1"\\$0" .do tm1 "\\*[!!sp]*** am trace enter: \\$0 \\$@
+. el .do tm1 "\*[!!sp]*** am trace enter \$1: \\$0 \\$@
+. as !!sp " \"
+. do nop \\*[!!\$1]\\
+. substring !!sp 1
+. ie "\$1"\\$0" .do tm1 "\\*[!!sp]*** trace exit: \\$0 \\$@
+. el .do tm1 "\*[!!sp]*** trace exit \$1: \\$0 \\$@
+\..
+.
+. do ds !!a1 !!\$1
+. do ds !!a2 \$2
+.
+. do ecr
+. do ami !!a1 !!a2
..
.
.ec
.
+.cp \n(_C
+.
.\" EOF
diff --git a/contrib/groff/tmac/troffrc-end b/contrib/groff/tmac/troffrc-end
index f786059..928c923 100644
--- a/contrib/groff/tmac/troffrc-end
+++ b/contrib/groff/tmac/troffrc-end
@@ -1,14 +1,13 @@
-.\"
.\" final startup file for troff
+.
.\" this file is parsed after all macro sets have been read
-.\"
+.
.do if '\*[.T]'html' .do mso html.tmac
+.
.\" if we are running the postscript device for html images then load www.tmac
-.\"
.do if r ps4html .do mso www.tmac
-.\"
+.
.\" for all other devices blank out these macros
-.\"
.do if !d HTML-IMAGE-INLINE .do ds HTML-IMAGE-INLINE
.do if !d HTML-IMAGE .do ds HTML-IMAGE
.do if !d HTML-IMAGE-RIGHT .do ds HTML-IMAGE-RIGHT
@@ -16,4 +15,5 @@
.do if !d HTML-IMAGE-END .do ds HTML-IMAGE-END
.do if !d HTML-TAG .do ds HTML-TAG
.do if !d HTML-DO-IMAGE .do ds HTML-DO-IMAGE
+.
.\" Don't let blank lines creep in here.
diff --git a/contrib/groff/tmac/tty-char.tmac b/contrib/groff/tmac/tty-char.tmac
index 02a1071..a0c2b4b 100644
--- a/contrib/groff/tmac/tty-char.tmac
+++ b/contrib/groff/tmac/tty-char.tmac
@@ -9,196 +9,209 @@
.\" as well as on devices that support overstriking
.\" - represent the character's graphical shape (not its meaning)
.\"
+.\" Note that the optical appearance of the definitions contained in this
+.\" file is inferior compared to that of the replacement characters defined
+.\" in the file tty.tmac.
+.\"
.nr _C \n(.C
.cp 0
+.
.de tty-char
-.if !c\\$1 .char \\$1 "\\$2
+. if !c\\$1 .char \\$1 "\\$2
..
-.ie c\(a- .ds tty-rn \(a-
-.el .ds tty-rn \v'-1m'_\v'+1m'
-.tty-char \(tm tm
-.tty-char \(rn \*[tty-rn]
-.tty-char \(ua \z|^
-.tty-char \(da \z|v
-.tty-char \(sc S
-.tty-char \(ct \z/c
-.tty-char \(dg \z|-
-.tty-char \(dd \z|=
-.tty-char \(ib (\z=_
-.tty-char \(ip \z=_)
-.tty-char \(sb (=
-.tty-char \(sp =)
-.tty-char \(if oo
-.tty-char \(pt oc
-.tty-char \(es {}
-.tty-char \(ca (^)
-.tty-char \(cu U
-.tty-char \(de o
-.tty-char \(di -:-
-.tty-char \(no ~
-.tty-char \(gr \Z'\*[tty-rn]'V
-.tty-char \(is \z'\z,I
-.tty-char \(mo E
-.tty-char \(pd a
-.tty-char \(sr \e/
-.tty-char \(*C \z_H
-.tty-char \(*D \z_/\z_\e
-.tty-char \(*F \zIO
-.tty-char \(*G |\*[tty-rn]
-.tty-char \(*H \z-O
-.tty-char \(*L /\e
-.tty-char \(*P TT
-.tty-char \(*Q \zIY
-.tty-char \(*S \z_\Z'\*[tty-rn]'>
-.tty-char \(*W \z_O
-.if c\(ss .tty-char \(*b \(ss
-.tty-char \(*b B
-.tty-char \(*a a
-.tty-char \(*c \z,E
-.tty-char \(*d d
-.tty-char \(*e e
-.tty-char \(*f \z|o
-.tty-char \(+f \z|o
-.tty-char \(*g y
-.tty-char \(*h \z-0
-.tty-char \(+h \z-0
-.tty-char \(*i i
-.tty-char \(*k k
-.tty-char \(*l \z>\e
-.tty-char \(*m \z,u
-.tty-char \(*n v
-.tty-char \(*p \z-n
-.tty-char \(+p \z-w
-.tty-char \(*q \z|u
-.tty-char \(*r p
-.tty-char \(*s \z-o
-.tty-char \(*t \z~t
-.tty-char \(*u u
-.tty-char \(*w w
-.tty-char \(*x x
-.tty-char \(*y n
-.tty-char \(*z \z,C
-.tty-char \(ts s
-.\" Definition of \(ss should follow that of \(*b.
-.tty-char \(ss B
-.tty-char \(c* \zO\(mu
-.tty-char \(c+ \zO+
-.tty-char \(AN ^
-.tty-char \(OR v
-.tty-char \(uA \z=^
-.tty-char \(dA \z=v
-.if c\(md .tty-char \(pc \(md
-.if c\(pc .tty-char \(md \(pc
-.if c\(pc .tty-char \(a. \(pc
-.tty-char \(Im I
-.tty-char \(Re R
-.tty-char \(/L \z/L
-.tty-char \(/l \z/l
-.tty-char \(%0 %o
-.tty-char \(ao o
-.tty-char \(a" """"
-.tty-char \(ab \z'`
-.tty-char \(ah v
-.tty-char \(ho \(ac
-.tty-char \(/_ \z_/
-.tty-char \(=~ =~
-.tty-char \(Ah N
-.tty-char \(CR _|
-.tty-char \(fa \z-V
-.tty-char \(nm \z/E
-.tty-char \(pp \z_|
-.tty-char \(sd ''
-.tty-char \(st -)
-.tty-char \(te 3
-.if c\(md .tty-char \(tf .\(md.
-.tty-char \(tf .:.
-.tty-char \(wp p
-.tty-char \(~~ ~~
-.tty-char \(Fn \z,f
-.tty-char \(Bq ,,
-.tty-char \(bq ,
-.tty-char \(lz <>
+.
+.ie c\[a-] \
+. ds tty-rn \[a-]
+.el \
+. ds tty-rn \v'-1m'_\v'+1m'
+.tty-char \[tm] tm
+.tty-char \[rn] \*[tty-rn]
+.tty-char \[ua] \z|^
+.tty-char \[da] \z|v
+.tty-char \[sc] S
+.tty-char \[ct] \z/c
+.tty-char \[dg] \z|-
+.tty-char \[dd] \z|=
+.tty-char \[ib] (\z=_
+.tty-char \[ip] \z=_)
+.tty-char \[sb] (=
+.tty-char \[sp] =)
+.tty-char \[if] oo
+.tty-char \[pt] oc
+.tty-char \[es] {}
+.tty-char \[ca] (^)
+.tty-char \[cu] U
+.tty-char \[de] o
+.tty-char \[di] -:-
+.tty-char \[tdi] -:-
+.tty-char \[no] ~
+.tty-char \[gr] \Z'\*[tty-rn]'V
+.tty-char \[is] \z'\z,I
+.tty-char \[mo] E
+.tty-char \[pd] a
+.tty-char \[sr] \e/
+.tty-char \[*C] \z_H
+.tty-char \[*D] \z_/\z_\e
+.tty-char \[*F] \zIO
+.tty-char \[*G] |\*[tty-rn]
+.tty-char \[*H] \z-O
+.tty-char \[*L] /\e
+.tty-char \[*P] TT
+.tty-char \[*Q] \zIY
+.tty-char \[*S] \z_\Z'\*[tty-rn]'>
+.tty-char \[*W] \z_O
+.if c\[ss] .tty-char \[*b] \[ss]
+.tty-char \[*b] B
+.tty-char \[*a] a
+.tty-char \[*c] \z,E
+.tty-char \[*d] d
+.tty-char \[*e] e
+.tty-char \[*f] \z|o
+.tty-char \[+f] \z|o
+.tty-char \[*g] y
+.tty-char \[*h] \z-0
+.tty-char \[+h] \z-0
+.tty-char \[*i] i
+.tty-char \[*k] k
+.tty-char \[*l] \z>\e
+.tty-char \[*m] \z,u
+.tty-char \[*n] v
+.tty-char \[*p] \z-n
+.tty-char \[+p] \z-w
+.tty-char \[*q] \z|u
+.tty-char \[*r] p
+.tty-char \[*s] \z-o
+.tty-char \[*t] \z~t
+.tty-char \[*u] u
+.tty-char \[*w] w
+.tty-char \[*x] x
+.tty-char \[*y] n
+.tty-char \[*z] \z,C
+.tty-char \[ts] s
+.\" Definition of \[ss] should follow that of \[*b].
+.tty-char \[ss] B
+.tty-char \[c*] \zO\[mu]
+.tty-char \[c+] \zO+
+.tty-char \[AN] ^
+.tty-char \[OR] v
+.tty-char \[uA] \z=^
+.tty-char \[dA] \z=v
+.if c\[md] .tty-char \[pc] \[md]
+.if c\[pc] .tty-char \[md] \[pc]
+.if c\[pc] .tty-char \[a.] \[pc]
+.tty-char \[Im] I
+.tty-char \[Re] R
+.tty-char \[/L] \z/L
+.tty-char \[/l] \z/l
+.tty-char \[%0] %o
+.tty-char \[ao] o
+.tty-char \[a"] """"
+.tty-char \[ab] \z'`
+.tty-char \[ah] v
+.tty-char \[ho] \[ac]
+.tty-char \[/_] \z_/
+.tty-char \[=~] =~
+.tty-char \[Ah] N
+.tty-char \[CR] _|
+.tty-char \[fa] \z-V
+.tty-char \[nm] \z/E
+.tty-char \[pp] \z_|
+.tty-char \[sd] ''
+.tty-char \[st] -)
+.tty-char \[te] 3
+.if c\[md] .tty-char \[tf] .\[md].
+.tty-char \[tf] .:.
+.tty-char \[wp] p
+.tty-char \[~~] ~~
+.tty-char \[Fn] \z,f
+.tty-char \[Bq] ,,
+.tty-char \[bq] ,
+.tty-char \[lz] <>
.\" Latin-1 characters
-.tty-char \(r! \z,i
-.tty-char \(Po \z-L
-.tty-char \(Cs \zox
-.tty-char \(Ye \z=Y
-.tty-char \(bb |
-.tty-char \(ad """"
-.tty-char \(Of \z_a
-.tty-char \(Fo <<
-.tty-char \(a- \*[tty-rn]
-.tty-char \(S2 2
-.tty-char \(S3 3
-.tty-char \(ps 9|
-.tty-char \(md .
-.tty-char \(pc .
-.tty-char \(ac ,
-.tty-char \(S1 1
-.tty-char \(Om \z_o
-.tty-char \(Fc >>
-.tty-char \(r? \z'c
-.tty-char \(`A \z`A
-.tty-char \('A \z'A
-.tty-char \(^A \z^A
-.tty-char \(~A \z~A
-.tty-char \(:A \z"A
-.tty-char \(oA \zoA
-.tty-char \(,C \z,C
-.tty-char \(`E \z`E
-.tty-char \('E \z'E
-.tty-char \(^E \z^E
-.tty-char \(:E \z"E
-.tty-char \(`I \z`I
-.tty-char \('I \z'I
-.tty-char \(^I \z^I
-.tty-char \(:I \z"I
-.tty-char \(-D \z-D
-.tty-char \(~N \z~N
-.tty-char \(`O \z`O
-.tty-char \('O \z'O
-.tty-char \(^O \z^O
-.tty-char \(~O \z~O
-.tty-char \(:O \z"O
-.tty-char \(/O \z/O
-.tty-char \(`U \z`U
-.tty-char \('U \z'U
-.tty-char \(^U \z^U
-.tty-char \(:U \z"U
-.tty-char \('Y \z'Y
-.tty-char \(TP \zIb
-.tty-char \(`a \z`a
-.tty-char \('a \z'a
-.tty-char \(^a \z^a
-.tty-char \(~a \z~a
-.tty-char \(:a \z"a
-.tty-char \(oa \zoa
-.tty-char \(,c \z,c
-.tty-char \(`e \z`e
-.tty-char \('e \z'e
-.tty-char \(^e \z^e
-.tty-char \(:e \z"e
-.tty-char \(`i \z`i
-.tty-char \('i \z'i
-.tty-char \(^i \z^i
-.tty-char \(:i \z"i
-.tty-char \(Sd \z`\z'o
-.tty-char \(~n \z~n
-.tty-char \(`o \z`o
-.tty-char \('o \z'o
-.tty-char \(^o \z^o
-.tty-char \(~o \z~o
-.tty-char \(:o \z"o
-.tty-char \(/o \z/o
-.tty-char \(`u \z`u
-.tty-char \('u \z'u
-.tty-char \(^u \z^u
-.tty-char \(:u \z"u
-.tty-char \('y \z'y
-.tty-char \(Tp \zpb
-.tty-char \(:y \z"y
-.\"tty-char \(:y \ij
+.tty-char \[r!] \z,i
+.tty-char \[Po] \z-L
+.tty-char \[Cs] \zox
+.tty-char \[Ye] \z=Y
+.tty-char \[bb] |
+.tty-char \[ad] """"
+.tty-char \[Of] \z_a
+.tty-char \[Fo] <<
+.tty-char \[a-] \*[tty-rn]
+.tty-char \[S2] 2
+.tty-char \[S3] 3
+.tty-char \[ps] 9|
+.tty-char \[md] .
+.tty-char \[pc] .
+.tty-char \[ac] ,
+.tty-char \[S1] 1
+.tty-char \[Om] \z_o
+.tty-char \[Fc] >>
+.tty-char \[r?] \z'c
+.tty-char \[`A] \z`A
+.tty-char \['A] \z'A
+.tty-char \[^A] \z^A
+.tty-char \[~A] \z~A
+.tty-char \[:A] \z"A
+.tty-char \[oA] \zoA
+.tty-char \[,C] \z,C
+.tty-char \[`E] \z`E
+.tty-char \['E] \z'E
+.tty-char \[^E] \z^E
+.tty-char \[:E] \z"E
+.tty-char \[`I] \z`I
+.tty-char \['I] \z'I
+.tty-char \[^I] \z^I
+.tty-char \[:I] \z"I
+.tty-char \[-D] \z-D
+.tty-char \[~N] \z~N
+.tty-char \[`O] \z`O
+.tty-char \['O] \z'O
+.tty-char \[^O] \z^O
+.tty-char \[~O] \z~O
+.tty-char \[:O] \z"O
+.tty-char \[/O] \z/O
+.tty-char \[`U] \z`U
+.tty-char \['U] \z'U
+.tty-char \[^U] \z^U
+.tty-char \[:U] \z"U
+.tty-char \['Y] \z'Y
+.tty-char \[TP] \zIb
+.tty-char \[`a] \z`a
+.tty-char \['a] \z'a
+.tty-char \[^a] \z^a
+.tty-char \[~a] \z~a
+.tty-char \[:a] \z"a
+.tty-char \[oa] \zoa
+.tty-char \[,c] \z,c
+.tty-char \[`e] \z`e
+.tty-char \['e] \z'e
+.tty-char \[^e] \z^e
+.tty-char \[:e] \z"e
+.tty-char \[`i] \z`i
+.tty-char \['i] \z'i
+.tty-char \[^i] \z^i
+.tty-char \[:i] \z"i
+.tty-char \[Sd] \z`\z'o
+.tty-char \[~n] \z~n
+.tty-char \[`o] \z`o
+.tty-char \['o] \z'o
+.tty-char \[^o] \z^o
+.tty-char \[~o] \z~o
+.tty-char \[:o] \z"o
+.tty-char \[/o] \z/o
+.tty-char \[`u] \z`u
+.tty-char \['u] \z'u
+.tty-char \[^u] \z^u
+.tty-char \[:u] \z"u
+.tty-char \['y] \z'y
+.tty-char \[Tp] \zpb
+.tty-char \[:y] \z"y
+.\"tty-char \[:y] \ij
.tty-char \[arrowvertex] |
-.cp \n(_C
-.if !'\*(.T'cp1047' \
+.tty-char \[mc] \z,u
+.cp \n[_C]
+.
+.ie '\*(.T'cp1047' \
+. do mso cp1047.tmac
+.el \
. do mso latin1.tmac
diff --git a/contrib/groff/tmac/tty.tmac b/contrib/groff/tmac/tty.tmac
index e680435..e6bd598 100644
--- a/contrib/groff/tmac/tty.tmac
+++ b/contrib/groff/tmac/tty.tmac
@@ -2,49 +2,75 @@
.\"
.nr _C \n(.C
.cp 0
+.
.nroff
+.ta T 0.8i
+.
.\" Don't warn about non-existent fonts.
.warn \n[.warn]-(\n[.warn]/131072%2*131072)
+.
.po 0
-.if c\[shc] .shc \[shc]
-.de tty-char
-.if !c\\$1 .char \\$1 "\\$2
-..
-.ie c\(pc .tr \(bu\(pc
-.el .if c\(md .tr \(bu\(md
-.tty-char \(bu \z+o
-.tty-char \(14 1/4
-.tty-char \(12 1/2
-.tty-char \(34 3/4
-.tty-char \(ff ff
-.tty-char \(fi fi
-.tty-char \(fl fl
-.tty-char \(Fi ffi
-.tty-char \(Fl ffl
-.tty-char \(<- <-
-.tty-char \(-> ->
-.tty-char \(<> <->
-.tty-char \(em --
-.tty-char \(+- +-
-.tty-char \(co (C)
-.tty-char \(<= <=
-.tty-char \(>= >=
-.tty-char \(!= !=
-.tty-char \(== ==
-.tty-char \(~= ~=
-.tty-char \(sq []
-.tty-char \(lh <=
-.tty-char \(rh =>
-.tty-char \(lA <=
-.tty-char \(rA =>
-.tty-char \(hA <=>
-.tty-char \(rg (R)
-.tty-char \(OE OE
-.tty-char \(oe oe
-.tty-char \(AE AE
-.tty-char \(ae ae
-.tty-char \(an -
-.cp \n(_C
+.
+.ie c\[pc] \
+. tr \[bu]\[pc]
+.el \
+. if c\[md] \
+. tr \[bu]\[md]
+.
+.fchar \[bu] \z+o
+.fchar \[14] 1/4
+.fchar \[12] 1/2
+.fchar \[34] 3/4
+.fchar \[ff] ff
+.fchar \[fi] fi
+.fchar \[fl] fl
+.fchar \[Fi] ffi
+.fchar \[Fl] ffl
+.fchar \[<-] <-
+.fchar \[->] ->
+.fchar \[<>] <->
+.fchar \[em] --
+.fchar \[+-] +-
+.fchar \[t+-] +-
+.fchar \[co] (C)
+.fchar \[<=] <=
+.fchar \[>=] >=
+.fchar \[!=] !=
+.fchar \[==] ==
+.fchar \[~=] ~=
+.fchar \[sq] []
+.fchar \[lh] <=
+.fchar \[rh] =>
+.fchar \[lA] <=
+.fchar \[rA] =>
+.fchar \[hA] <=>
+.fchar \[rg] (R)
+.fchar \[OE] OE
+.fchar \[oe] oe
+.fchar \[AE] AE
+.fchar \[ae] ae
+.fchar \[an] -
+.fchar \[eu] EUR
+.fchar \[Eu] EUR
+.
+.\" color definitions
+.defcolor black rgb #000000
+.defcolor red rgb #ff0000
+.defcolor green rgb #00ff00
+.defcolor blue rgb #0000ff
+.defcolor yellow rgb #ffff00
+.defcolor magenta rgb #ff00ff
+.defcolor cyan rgb #00ffff
+.defcolor white rgb #ffffff
+.
+.cp \n[_C]
+.
+.ie '\*(.T'cp1047' \
+. do mso cp1047.tmac
+.el \
+. if '\*(.T'latin1' \
+. do mso latin1.tmac
+.
.\" If you want the character definitions in tty-char.tmac to be loaded
.\" automatically, remove the `\"' from the next line.
.\"do mso tty-char.tmac
diff --git a/contrib/groff/tmac/www.tmac b/contrib/groff/tmac/www.tmac
index 0bef6b6..0db647e 100644
--- a/contrib/groff/tmac/www.tmac
+++ b/contrib/groff/tmac/www.tmac
@@ -1,157 +1,541 @@
.\" www.tmac
.\"
.\" A simple set of macros to provide HTML documents with basic
-.\" www functionality. It will work with any macro set.
+.\" www functionality. It should work with any macro set.
.\"
.nr _C \n(.C
.cp 0
+.
.nr www-html 0
-.if '\*(.T'html' .nr www-html 1
-.\"
+.if '\*[.T]'html' .nr www-html 1
+.
+.\" set up www-image-template
+.\" (cannot do this in html.tmac as the image device must
+.\" also know about this string)
+.
+.if !d www-image-template \
+. ds www-image-template
+.
+.if r ps4html \{\
+. \" remove the title command when we are generating images for html
+. \" (stops a title accidentally appearing inside an image)
+. di www-notitle
+. tl ''''
+. di
+. rm tl
+. de tl
+. .
+.\}
+.
+.de www-error
+. tm \\n[.F]:\\n[.c]: macro error: \\$*
+..
.\"
+.\" the main auxiliary macro for the HTML interface
.\"
.de HTML
. if \\n[www-html] \{\
-.\" the following line makes the vertical mode leave, so to say
-\&
-\X^html:\\$*^
+. \" the following line makes the vertical mode leave, so to say
+. nop \&
+. nop \X^html:\\$*^
. \}
..
-.de HTMLINDEX
-. if \\n[www-html] \X^index:\\$*^
+.\"
+.\" an auxiliary macro for HTML (without following space)
+.\"
+.de HTML-NS
+. if \\n[www-html] \
+. nop \X^html:\\$*^\c
+..
+.\"
+.\" HX n
+.\"
+.\" Automatic heading level cut off.
+.\"
+.\" N is the depth limit of automatically linked headings. So a depth
+.\" of 2 would cause grohtml to generate a list of links for `.NH 1' and
+.\" `.NH 2' but not for `.NH 3'.
+.\"
+.de HX
+. if \\n[www-html] \
+. nop \X^index:\\$*^
..
.\"
-.\" BODYCOLOR - $1 is foreground color
-.\" $2 is background color
-.\" $3 is the color of an active hypertext link
-.\" $4 is the color of a hypertext link not yet visited
-.\" $5 is the color of a visited hypertext link
+.\" BCL foreground background active not-visited visited
.\"
-.de BODYCOLOR
+.de BCL
. HTML <body text=\\$1 bgcolor=\\$2 link=\\$3 alink=\\$4 vlink=\\$5>
..
.\"
-.\" BACKGROUND - $1 is the background image file
+.\" BGIMG imagefile
.\"
-.de BACKGROUND
+.de BGIMG
. HTML <body background=\\$1>
..
.\"
-.\" URL - $1 is the classical underlined blue text
-.\" $2 is the url
-.\" $3 is optional stuff printed immediately after $3
+.\" URL url description [after]
.\"
.de URL
+. ie \\n[www-html] \
+. HTML <a href="\\$1">\\$2</a>\\$3
+. el \
+. nop \m[blue]\\$2\m[] \%\[la]\f[C]\\$1\f[]\[ra]\\$3
+..
+.\"
+.\" FTP url description [after]
+.\"
+.\" Same as UTL.
+.\"
+.als FTP URL
+.\"
+.\" MTO address description [after]
+.\"
+.\" ADDRESS is the email address (without the `mailto:' prefix).
+.\"
+.\" DESCRIPTION is the optional name. If an empty argument is given,
+.\" ADDRESS is used instead.
+.\"
+.\" AFTER is optional stuff printed immediately after ADDRESS
+.\" (resp. DESCRIPTION).
+.\"
+.\" Example:
+.\"
+.\" Foobar has been written by
+.\" .MTO fred@foo.bar "Fredrick Bloggs" .
+.\"
+.de MTO
. ie \\n[www-html] \{\
-. HTML <a href="\\$2">\\$1</a>\\$3
+. ie '\\$2'' \
+. URL mailto:\\$1 \\$1 "\\$3"
+. el \
+. URL mailto:\\$1 "\\$2" "\\$3"
. \}
. el \{\
-\\$1 \%\(la\fC\\$2\fP\(ra\\$3
+. ie '\\$2'' \
+. nop \%\m[blue]\f[C]\\$1\f[]\m[]\\$3
+. el \
+. nop \m[blue]\\$2\m[] \%\[la]\f[C]\\$1\f[]\[ra]\\$3
. \}
..
.\"
-.\" FTP - $1 is the classical underlined blue text
-.\" $2 is the ftp url
-.\" $3 is optional stuff printed immediately after $2
-.de FTP
+.\" TAG name
+.\"
+.\" Generate an html name NAME.
+.\"
+.de TAG
+. HTML <a name="\\$1"></a>
+..
+.\"
+.\" IMG [-R|-L|-C] filename [width] [height]
+.\"
+.\" Include an image of any type (will only work for -Thtml).
+.\"
+.\" Alignment is centered by default (-C).
+.\" Default value for WIDTH is 1i.
+.\" If HEIGHT is not given, WIDTH is used as the height.
+.\"
+.de IMG
. ie \\n[www-html] \{\
-. HTML <a href=\\$2>\\$1</a>\\$3
+. ie '\\$2'-R' \
+. HTML-TAG ".right-image"
+. el \{\
+. ie '\\$2'-L' \
+. HTML-TAG ".left-image"
+. el \
+. HTML-TAG ".centered-image"
+. \}
+. nr www-width 100
+. if !'\\$3'' \
+. nr www-width \\$3
+. nr www-height \\n[www-width]
+. if !'\\$4'' \
+. nr www-height \\$4
+. HTML <img src="\\$1" width=\\n[www-width] height=\\n[www-height]>
. \}
-. el \{\
-\\$1 \%\(la\fC\\$2\fP\(ra\\$3
+. el \
+. nop \[la]\f[C]\\$1\f[]\[ra]
+..
+.\"
+.\" HTML-TAG
+.\"
+.\" Emit a tag for grohtml. This is an internal macro.
+.\"
+.de HTML-TAG
+. if \\n[www-html] \{\
+. \" the following line makes the vertical mode leave, so to say
+. nop \&
+. nop \X^html-tag:\\$*^
. \}
..
.\"
-.\" MAILTO - generate html email reference
-.\" $1 is the email address (without the `mailto:' prefix)
-.\" $2 is the optional name
-.\" $3 is optional stuff printed immediately after $2 (resp. $1)
+.\" HTML-TAG-NS
.\"
-.\" example:
+.\" Emit a tag for grohtml (without a space). This is an internal macro.
.\"
-.\" Foobar has been written by
-.\" .MAILTO fred@foo.bar "Fredrick Bloggs" .
+.de HTML-TAG-NS
+. if \\n[www-html] \
+. nop \X^html-tag:\\$*^\c
+..
+.\"
+.\" PIMG [-R|-L|-C] filename [width] [height]
.\"
-.de MAILTO
+.\" Include a png image. It will work for -Tps and -Thtml.
+.\" The default value for WIDTH and HEIGHT is zero; the default
+.\" alignment is centering (-C).
.\"
-.\" force reset after a potential heading by performing some motion..
-.\" how do we do this --fixme--
-.\" \h'\w' ''\h'-\w' '' doesn't work..
+.\" Note: This macro can only be used with the `-U' option of groff,
+.\" activating unsafe mode, if not used with -Thtml; the PNG image
+.\" is then converted to the EPS format using netpbm utilities.
+.\"
+.de PIMG
. ie \\n[www-html] \{\
-. ie '\\$2'' \{\
-. HTML "<a href=mailto:\\$1>\\$1</a>\\$3"
+. ie '\\$1'-R' \
+. HTML-TAG ".right-image"
+. el \{\
+. ie '\\$1'-L' \
+. HTML-TAG ".left-image"
+. el \
+. HTML-TAG ".centered-image"
+. \}
+. nr www-width 0
+. nr www-height 0
+. if !'\\$3'' \
+. nr www-width (\\$3 * 100 / 240)
+. if !'\\$4'' \
+. nr www-height (\\$4 * 100 / 240)
+. ie (\\n[www-width] == 0) \{\
+. ie (\\n[www-height] == 0) \
+. HTML <img src="\\$2">
+. el \
+. HTML <img src="\\$1" height=\\n[www-height]>
. \}
. el \{\
-. HTML "<a href=mailto:\\$1>\\$2</a>\\$3"
+. ie (\\n[www-height] == 0) \
+. HTML <img src="\\$2" width=\\n[www-width]>
+. el \
+. HTML <img src="\\$2" width=\\n[www-width] height=\\n[www-height]>
. \}
. \}
. el \{\
-. ie '\\$2'' \{\
-\fC\\$1\fP\\$3
+. if !r ps4html \{\
+. www-make-unique-name
+. sy pngtopnm \\$2 | pnmcrop -white | pnmtops -noturn > \\*[www-unique-name].eps
+. ie '\\$1'-C' \
+. PSPIC \\*[www-unique-name].eps \\$3 \\$4
+. el \
+. PSPIC \\$1 \\*[www-unique-name].eps \\$3 \\$4
. \}
-. el \{\
-\\$2 \%\(la\fC\\$1\fP\(ra\\$3
+. \}
+..
+.
+.nr www-left-ll-trap 0
+.nr www-left-po-trap 0
+.nr www-right-ll-trap 0
+.
+.de www-finish-left-po
+. po -\\n[www-left-indent]u
+. wh \\n[www-left-po-trap]u
+. nr www-left-indent 0
+..
+.
+.de www-finish-right-ll
+. ll +\\n[www-right-indent]u
+. \" now see whether we need to inline www-finish-left-ll
+. if (\\n[www-left-ll-trap]u > 0) \
+. if ((\\n[www-right-ll-trap]u + 1v) >= \\n[www-left-ll-trap]u) \{\
+. mk www-left-po-trap
+. nr www-left-po-trap +1v
+. wh \\n[www-left-po-trap]u www-finish-left-po
+. ll +\\n[www-left-indent]u
+. wh \\n[www-left-ll-trap]u
+. nr www-left-ll-trap 0
+. \}
+. \" and see whether we need to inline www-finish-left-po
+. if (\\n[www-left-po-trap]u > 0) \
+. if ((\\n[www-right-ll-trap]u + 1v) >= \\n[www-left-po-trap]u) \{\
+. po -\\n[www-left-indent]u
+. wh \\n[www-left-po-trap]u
+. nr www-left-indent 0
+. \}
+. wh \\n[www-right-ll-trap]u
+. nr www-right-ll-trap 0
+..
+.
+.de www-finish-left-ll
+. if (\\n[www-right-ll-trap] > 0) \
+. if ((\\n[www-left-ll-trap] + 1v) >= \\n[www-right-ll-trap]) \{\
+. ll +\\n[www-right-indent]u
+. nr www-right-ll-trap 0
+. \}
+. mk www-left-po-trap
+. nr www-left-po-trap +1v
+. wh \\n[www-left-po-trap]u www-finish-left-po
+. ll +\\n[www-left-indent]u
+. wh \\n[www-left-ll-trap]u
+. nr www-left-ll-trap 0
+..
+.\"
+.\" MPIMG [-R|-L] filename [width] [height]
+.\"
+.\" Include a png image and wrap text around it. It will work for
+.\" -Tps and -Thtml. The default value for WIDTH is 1i; default value
+.\" for HEIGHT is WIDTH; the default alignment is left (-L).
+.\"
+.\" Note: This macro can only be used with the `-U' option of groff,
+.\" activating unsafe mode, if not used with -Thtml; the PNG image
+.\" is then converted to the EPS format using netpbm utilities.
+.\"
+.de MPIMG
+. nr www-width 1i
+. if !'\\$3'' \
+. nr www-width \\$3
+. nr www-height \\n[www-width]
+. if !'\\$4'' \
+. nr www-height \\$4
+. nr www-width (\\n[www-width] * 100 / 240)
+. nr www-height (\\n[www-height] * 100 / 240)
+. ie \\n[www-html] \{\
+. ie '\\$1'-R' \
+. HTML <img src="\\$2" align=right width=\\n[www-width] height=\\n[www-height]>
+. el \
+. HTML <img src="\\$2" align=left width=\\n[www-width] height=\\n[www-height]>
+. \}
+. el \{\
+. if !r ps4html \{\
+. www-make-unique-name
+. sy pngtopnm \\$2 | pnmcrop -white | pnmtops -noturn > \\*[www-unique-name].eps
+. ie '\\$1'-R' \{\
+. \" we must now disable a possible left image trap
+. sp -1
+. if (\\n[www-left-ll-trap] > 0) \
+. wh \\n[www-left-ll-trap]u
+. if (\\n[www-left-po-trap] > 0) \
+. wh \\n[www-left-po-trap]u
+. PSPIC -R \\*[www-unique-name].eps \\$3 \\$4
+. sp -\\n[ps-desht]u
+. nr www-right-indent \\n[ps-deswid]u
+. ll -\\n[www-right-indent]u
+. mk www-right-ll-trap
+. nr www-right-ll-trap +(\\n[ps-desht]u - 1v)
+. wh \\n[www-right-ll-trap]u www-finish-right-ll
+. \" now restore possible left trap
+. if (\\n[www-left-ll-trap] > 0) \
+. wh \\n[www-left-ll-trap]u www-finish-left-ll
+. if (\\n[www-left-po-trap] > 0) \
+. wh \\n[www-left-po-trap]u
+. \}
+. el \{\
+. \" we must now disable a possible right image trap
+. if (\\n[www-right-ll-trap] > 0) \
+. wh \\n[www-right-ll-trap]u
+. PSPIC -L \\*[www-unique-name].eps \\$3 \\$4
+. sp -\\n[ps-desht]u
+. nr www-left-indent \\n[ps-deswid]u
+. po +\\n[www-left-indent]u
+. ll -\\n[www-left-indent]u
+. mk www-left-ll-trap
+. nr www-left-ll-trap +(\\n[ps-desht]u - 1v)
+. wh \\n[www-left-ll-trap]u www-finish-left-ll
+. \" now restore possible right trap
+. if (\\n[www-right-ll-trap] > 0) \
+. wh \\n[www-right-ll-trap]u www-finish-right-ll
+. \}
. \}
. \}
..
.\"
-.\" TAG - generate an html name $1
+.\" HnS n
.\"
-.de TAG
-. HTML <a name="\\$1"></a>
+.\" Begin heading. Heading level is N.
+.\"
+.\" HnE
+.\"
+.\" End heading.
+.\"
+.\" If your heading contains URL, FTP, MTO macros you might wish to
+.\" disable automatic links to headings. This can be done via `-P-l'
+.\" from the command line or by using a cakk to `.HX 0'.
+.\"
+.nr www-heading-no -1
+.
+.de HnS
+. ie '\\$1'' \
+. nr www-heading-no 1
+. el \
+. nr www-heading-no \\$1
+. HTML-TAG ".NH \\n[www-heading-no]"
+..
+.
+.de HnE
+. if (\\n[www-heading-no] == -1) \
+. www-error "HnE found without a corresponding HnS"
+. br
+..
+.\"
+.\" LK
+.\"
+.\" Emit the automatically collected links derived from
+.\" section/numbered headings at this position.
+.\"
+.de LK
+. HTML-TAG ".links"
..
.\"
-.\" IMAGE - reference an image
-.\" $1 is the image file
-.\" $2 is the alignment r, l or c (center by default)
-.\" $3 is the x width (default if absent 400 pixels)
-.\" $4 is the y width (default if absent is the x value)
+.\" HR
+.\"
+.\" Produce a horizontal line
.\"
-.de IMAGE
+.de HR
. ie \\n[www-html] \{\
-. ie '\\$2'r' .HTML-TAG ".right-image"
-. el \{\
-. ie '\\$2'l' .HTML-TAG ".left-image"
-. el .HTML-TAG ".centered-image"
-. \}
-. nr HTMLWIDTH 400
-. if !'\\$3'' \{\
-. nr HTMLWIDTH \\$3
-. \}
-. nr HTMLHEIGHT \\n[HTMLWIDTH]
-. if !'\\$4'' \{\
-. nr HTMLHEIGHT \\$4
-. \}
-. HTML <img src="\\$1" width=\\n[HTMLWIDTH] height=\\n[HTMLHEIGHT]>
+. ti 0
+. HTML-NS <hr>
. \}
+. el \
+. sp
+..
+.\"
+.\" NHR
+.\"
+.\" Suppresses the generation of the top and bottom rules which grohtml
+.\" emits by default.
+.\"
+.de NHR
+. HTML-TAG ".no-auto-rule"
+..
+.\"
+.\" www-end-nowhere - end of input trap called to finish diversion.
+.\"
+.de www-end-nowhere
+. di
+..
+.\"
+.\" HTL
+.\"
+.\" Generate an HTML title only. This differs from the -ms .TL macro
+.\" which generates both an HTML title and a H1 heading.
+.\"
+.\" This is useful when an author wishes to use a HTML title as search
+.\" engine fodder but a graphic title in the document.
+.\"
+.\" The macro terminates when a space or break is seen (.sp, .br).
+.\"
+.de HTL
+. HTML-TAG ".html-tl"
+. if !\\n[www-html] \{\
+. di www-nowhere
+. it 2 www-end-nowhere
+. \}
+..
+.
+.ds www-level1 \[bu]\ \ \"
+.ds www-level2 \[sq]\ \ \"
+.ds www-level3 \[ci]\ \ \"
+.nr www-level 0
+.nr www-depth 0
+.
+.\"
+.\" Auxiliary macro for ULS.
+.\"
+.de www-push-level
+. nr www-level +1
+. if (\\n[www-level] > 3) \
+. www-error "too many levels of indentation (\\n[www-level])"
+..
+.\"
+.\" Auxiliary macro for ULE.
+.\"
+.de www-pop-level
+. if !\\n[www-level] \
+. www-error "trying to terminate a list which does not exist"
+. nr www-level -1
+..
+.\"
+.\" ULS
+.\"
+.\" Start an unordered list.
+.\"
+.de ULS
+. www-push-level
+. ie \\n[www-html] \
+. HTML "<ul>"
. el \{\
-. B1
-\(la\fC\\$1\fP\(ra
-. B2
+. if (\\n[www-level] == 1) \
+. nr www-depth \\n[.i]
+. nr www-depth +\w'\\*[www-level\\n[www-level]]'u
. \}
..
-.\" HTML-TAG - emit a tag for the new grohtml
-.de HTML-TAG
-. if \\n[www-html] \{\
-.\" the following line makes the vertical mode leave, so to say
-\&
-\X^html-tag:\\$*^
+.\"
+.\" ULE
+.\"
+.\" End an unordered list.
+.\"
+.de ULE
+. ie \\n[www-html] \
+. HTML "</ul>"
+. el \{\
+. nr www-depth -\w'\\*[www-level\\n[www-level]]'u
+. in \\n[www-depth]
. \}
+. www-pop-level
..
-.\" LINKS - emit the automatically collected links derived from section/numbered
-.\" headings at this position.
-.de LINKS
-. HTML-TAG ".links"
+.\"
+.\" LI
+.\"
+.\" Insert a list item.
+.\"
+.de LI
+. ie \\n[www-html] \
+. HTML "<li>"
+. el \{\
+. in \\n[www-depth]u
+. ti -\w'\\*[www-level\\n[www-level]]'u
+. nop \\*[www-level\\n[www-level]]\c
+. \}
..
.\"
-.\" LINE - produce a horizontal line
-.\"
-.de LINE
-. ti 0
-. HTML <hr>
+.\" DC l text [color]
+.\"
+.\" L is the letter to be dropped and enlarged.
+.\"
+.\" TEXT is the following text whose height the first letter should not
+.\" exceed.
+.\"
+.\" COLOR is the optional color of the dropped letter (default black).
+.\"
+.de DC
+. ds www-dropcolor black
+. if !'\\$3'' \
+. ds www-dropcolor \\$3
+. ie '\*(.T'html' \{\
+. www-make-unique-name
+. MPIMG -L \\*[www-unique-name].png "(\\n[.v] * 2u)"
+. \}
+. el \{\
+. ie r ps4html \{\
+. www-make-unique-name
+. nop \O[5i\\*[www-unique-name].png]\O[1]
+. nop \m[\\*[www-dropcolor]]\s[40]\O[3]\\$1\O[4]\s0\m[]
+. nop \O[2]\O[1]
+. \}
+. el \{\
+. nr dummy \w'\\$1'u
+. nr dcht ((\\n[.v] + \\n[rst]) * \\n[.ps] / \\n[rst])
+. char \[dcap] \m[\\*[www-dropcolor]]\s'\\n[dcht]u'\\$1
+. nop \v'\\n[.v]u'\\[dcap]\v'-\\n[.v]u'\c
+' ti \w'\\[dcap]'u
+. \}
+. \}
+. nop \\$2
..
.\"
-.\" supplimentary macros used by other macro sets
+.\" now set up TS, TE, EQ, EN default macros
+.\"
+.do if !d TS .do ds TS HTML-IMAGE
+.do if !d TE .do ds TE HTML-IMAGE-END
+.do if !d EQ .do ds EQ HTML-IMAGE
+.do if !d EN .do ds EN HTML-IMAGE-END
+.\"
+.\" supplementary macros used by other macro sets
.\"
.\" here are some tags specially for -Tps or -Thtml when invoked by pre-html
.\" to generate png images from postscript.
@@ -160,59 +544,61 @@
.\" read back by pre-html
.\"
.de HTML-DO-IMAGE
-. if r ps4html .begin \{\
-. image \\$2 \\$1.png
-. bp
-. tl ''''
-\O[0]\O[1]
-. \}
-. if \\n[www-html] .begin \{\
-. image \\$2 \\$1.png
-\O[0]
-. \}
+. if r ps4html \
+. nop \O[5\\$2\\$1.png]\O[1]\O[3]
+. if \\n[www-html] \
+. nop \O[5\\$2\\$1.png]\O[0]\O[3]
..
.\"
.\" HTML-IMAGE-END - terminates an image for html
.\"
.de HTML-IMAGE-END
-. if r ps4html \O[2]\O[1]\O[4]
-. if \\n[www-html] \O[2]\O[1]\O[4]
+. if r ps4html \
+. nop \O[4]\O[2]\O[0]
+. if \\n[www-html] \
+. nop \O[4]\O[2]\O[1]
..
-.nr png-no 0
+.
+.nr www-png-no 0
+.
.\"
-.\" MAKE-UNIQUE-NAME - generates another unique name
+.\" www-make-unique-name - generates another unique name in string
+.\" `www-unique-name'
.\"
-.de MAKE-UNIQUE-NAME
-. nr png-no \\n[png-no]+1
-. ds HTML-UNIQUE-NAME \\n(.F-auto-\\n[png-no]
+.de www-make-unique-name
+. nr www-png-no +1
+. ds www-unique-name \\*[www-image-template]\\n[www-png-no]
..
.\"
-.\" HTML-IMAGE - is the same name as a tag generated from eqn/tbl/pic.
-.\" Although the tags generated via the preprocessor
-.\" are given image names by pre-html and troff.
-.\" The macros below can only be invoked by *other macro sets*
-.\" not user troff input since the contents of macro sets are
-.\" not seen by pre-html.
+.\" HTML-IMAGE and friends tell grohtml that this region of text needs
+.\" to be rendered as an image.
.\"
.de HTML-IMAGE
-.\" generates a centered image
-. MAKE-UNIQUE-NAME
-. HTML-DO-IMAGE \\*[HTML-UNIQUE-NAME] c
+. \" generates a centered image
+. www-make-unique-name
+. HTML-DO-IMAGE \\*[www-unique-name] c
..
+.
.de HTML-IMAGE-RIGHT
-. MAKE-UNIQUE-NAME
-. HTML-DO-IMAGE \\*[HTML-UNIQUE-NAME] r
+. www-make-unique-name
+. HTML-DO-IMAGE \\*[www-unique-name] r
..
+.
.de HTML-IMAGE-LEFT
-. MAKE-UNIQUE-NAME
-. HTML-DO-IMAGE \\*[HTML-UNIQUE-NAME] l
+. www-make-unique-name
+. HTML-DO-IMAGE \\*[www-unique-name] l
..
+.
.de HTML-IMAGE-INLINE
-. MAKE-UNIQUE-NAME
-. HTML-DO-IMAGE \\*[HTML-UNIQUE-NAME] i
+. www-make-unique-name
+. HTML-DO-IMAGE \\*[www-unique-name] i
..
+.
.if \n[www-html] \{\
. nh
. nr HY 0
.\}
+.if r ps4html .nop \O[0]
.cp \n(_C
+.
+.\" EOF
OpenPOWER on IntegriCloud