summaryrefslogtreecommitdiffstats
path: root/contrib/groff/tmac
diff options
context:
space:
mode:
authorru <ru@FreeBSD.org>2003-05-01 13:09:50 +0000
committerru <ru@FreeBSD.org>2003-05-01 13:09:50 +0000
commitc96557721be60d942f4d486b9ea7f9b7cbb034cc (patch)
tree5bb520ef39570cf7c612b59697308ed396ca84e0 /contrib/groff/tmac
parentf78d5fa81a0b603b2741c98c8f48ce8245a18a4c (diff)
downloadFreeBSD-src-c96557721be60d942f4d486b9ea7f9b7cbb034cc.zip
FreeBSD-src-c96557721be60d942f4d486b9ea7f9b7cbb034cc.tar.gz
Virgin import of FSF groff v1.19
Diffstat (limited to 'contrib/groff/tmac')
-rw-r--r--contrib/groff/tmac/Makefile.sub20
-rw-r--r--contrib/groff/tmac/README13
-rw-r--r--contrib/groff/tmac/X.tmac84
-rw-r--r--contrib/groff/tmac/Xps.tmac9
-rw-r--r--contrib/groff/tmac/a4.tmac18
-rw-r--r--contrib/groff/tmac/an-old.tmac112
-rw-r--r--contrib/groff/tmac/composite.tmac24
-rw-r--r--contrib/groff/tmac/cp1047.tmac192
-rw-r--r--contrib/groff/tmac/doc-common34
-rw-r--r--contrib/groff/tmac/doc-ditroff11
-rw-r--r--contrib/groff/tmac/doc-nroff12
-rw-r--r--contrib/groff/tmac/doc.tmac22
-rw-r--r--contrib/groff/tmac/dvi.tmac102
-rw-r--r--contrib/groff/tmac/ec.tmac19
-rw-r--r--contrib/groff/tmac/eqnrc2
-rw-r--r--contrib/groff/tmac/europs.tmac38
-rw-r--r--contrib/groff/tmac/groff_man.man291
-rw-r--r--contrib/groff/tmac/groff_mdoc.man19
-rw-r--r--contrib/groff/tmac/html-end.tmac25
-rw-r--r--contrib/groff/tmac/html.tmac196
-rw-r--r--contrib/groff/tmac/hyphen.us3
-rw-r--r--contrib/groff/tmac/hyphenex.pl78
-rw-r--r--contrib/groff/tmac/hyphenex.us896
-rw-r--r--contrib/groff/tmac/latin1.tmac198
-rw-r--r--contrib/groff/tmac/latin2.tmac107
-rw-r--r--contrib/groff/tmac/latin9.tmac107
-rw-r--r--contrib/groff/tmac/lbp.tmac67
-rw-r--r--contrib/groff/tmac/lj4.tmac15
-rw-r--r--contrib/groff/tmac/papersize.tmac146
-rw-r--r--contrib/groff/tmac/ps.tmac85
-rw-r--r--contrib/groff/tmac/pspic.tmac4
-rw-r--r--contrib/groff/tmac/troffrc11
-rw-r--r--contrib/groff/tmac/troffrc-end3
-rw-r--r--contrib/groff/tmac/tty-char.tmac10
-rw-r--r--contrib/groff/tmac/tty.tmac18
-rw-r--r--contrib/groff/tmac/www.tmac373
36 files changed, 2688 insertions, 676 deletions
diff --git a/contrib/groff/tmac/Makefile.sub b/contrib/groff/tmac/Makefile.sub
index 4bdea45..0d9cd60 100644
--- a/contrib/groff/tmac/Makefile.sub
+++ b/contrib/groff/tmac/Makefile.sub
@@ -11,33 +11,36 @@ NORMALFILES=\
me.tmac \
mdoc.tmac \
pic.tmac \
- a4.tmac \
+ a4.tmac papersize.tmac \
ec.tmac \
safer.tmac \
trace.tmac \
ps.tmac psold.tmac pspic.tmac psatk.tmac \
dvi.tmac \
tty.tmac tty-char.tmac \
- latin1.tmac cp1047.tmac \
+ latin1.tmac latin2.tmac latin9.tmac cp1047.tmac \
X.tmac Xps.tmac \
lj4.tmac \
lbp.tmac \
- html.tmac www.tmac \
+ html.tmac html-end.tmac \
+ europs.tmac \
+ composite.tmac \
eqnrc \
troffrc troffrc-end \
- hyphen.us
+ hyphen.us hyphenex.us
SPECIALFILES=an.tmac man.tmac s.tmac ms.tmac
STRIPFILES=e.tmac doc.tmac doc-old.tmac
MDOCFILES=doc-common doc-ditroff doc-nroff doc-syms
mdocdir=$(tmacdir)/mdoc
CLEANADD=\
- stamp-wrap stamp-sed *-wrap man.tmac-sed ms.tmac-sed \
+ stamp-wrap stamp-sed *-wrap man.tmac-sed ms.tmac-sed www.tmac-sed \
stamp-strip e.tmac-s doc.tmac-s doc-old.tmac-s \
doc-common-s doc-ditroff-s doc-nroff-s doc-syms-s mdoc.local-s
tmac_s_prefix=
tmac_an_prefix=
tmac_wrap=
sys_tmac_prefix=
+pnmtops_nosetpage="pnmtops"
all: stamp-strip stamp-wrap stamp-sed
@@ -63,6 +66,8 @@ install_data: $(NORMALFILES) $(SPECIALFILES) man.local \
$(INSTALL_DATA) $(srcdir)/an.tmac $(tmacdir)/$(tmac_an_prefix)an.tmac
-rm -f $(tmacdir)/man.tmac
$(INSTALL_DATA) man.tmac-sed $(tmacdir)/man.tmac
+ -rm -f $(tmacdir)/www.tmac
+ $(INSTALL_DATA) www.tmac-sed $(tmacdir)/www.tmac
for f in $(STRIPFILES); do \
rm -f $(tmacdir)/$$f; \
$(INSTALL_DATA) $$f-s $(tmacdir)/$$f; \
@@ -97,11 +102,12 @@ stamp-wrap:
fi
touch $@
-stamp-sed: man.tmac ms.tmac
- for f in man.tmac ms.tmac; do \
+stamp-sed: man.tmac ms.tmac www.tmac
+ for f in man.tmac ms.tmac www.tmac; do \
rm -f $$f-sed; \
sed -e "s;@TMAC_AN_PREFIX@;$(tmac_an_prefix);g" \
-e "s;@TMAC_S_PREFIX@;$(tmac_s_prefix);g" \
+ -e "s;@PNMTOPS_NOSETPAGE@;$(pnmtops_nosetpage);g" \
$(srcdir)/$$f > $$f-sed; \
done
touch $@
diff --git a/contrib/groff/tmac/README b/contrib/groff/tmac/README
index 9821534..19f938a 100644
--- a/contrib/groff/tmac/README
+++ b/contrib/groff/tmac/README
@@ -6,15 +6,4 @@ system written by Donald E. Knuth; the master file can be found at
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.
+See the file itself for a copyright notice.
diff --git a/contrib/groff/tmac/X.tmac b/contrib/groff/tmac/X.tmac
index 8b9a1ba..d19280e 100644
--- a/contrib/groff/tmac/X.tmac
+++ b/contrib/groff/tmac/X.tmac
@@ -14,16 +14,17 @@
.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'
+.char \[or] \h'.1m'\Z'\D'l 0 -.675m''\h'.1m'
+.char ~ \v'-.55m'\s[\En(.s/2u]\v'.2m'\[ti]\v'-.2m'\s0\v'.55m'
+.char ^ \v'-.55m'\s[\En(.s/2u]\v'.3m'\[ha]\v'-.3m'\s0\v'.55m'
.fchar \[va] \o'\[ua]\[da]'
-.fchar \[em] --
+.fchar \[em] \v'-.25m'\h'.05m'\D'l .9m 0'
.fchar \[en] \-
.fchar \[fi] fi
.fchar \[fl] fl
.fchar \[ff] ff
-.fchar \[Fi] ffi
-.fchar \[Fl] ffl
+.fchar \[Fi] f\[fi]
+.fchar \[Fl] f\[fl]
.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'
@@ -43,10 +44,79 @@
.fchar \[rh] \[rA]
.fchar \[bq] ,
.fchar \[aq] '
+.fchar \[IJ] IJ
+.fchar \[ij] ij
+.fchar \[fo] <
+.fchar \[fc] >
+.fchar \[OK] \s[\En[.s]*6u/10u]\[rs]\s[0]/
+.
+.fchar \[<<] <\h'-.3m'<
+.fchar \[>>] >\h'-.3m'>
+.fchar \[|=] \v'.1m'\Z'\[mi]'\v'-.2m'\[ap]\v'.1m'
+.fchar \[nc] \v'.1m'\Z'\h'.2m'\F[T]\f[R]/'\v'-.1m'\[sp]
+.fchar \[ne] \v'.07m'\Z'\h'.2m'\F[T]\f[R]/'\v'-.07m'\[==]
+.fchar \[-h] \F[T]\f[I]\v'-.58m'\Z'\h'.1m'\D'l .3m 0''\v'.58m'h
+.fchar \[hbar] \[-h]
+.
+.de X-achar
+. \" Note that character definitions are always interpreted with
+. \" compatibility mode off.
+. fchar \\$1 \
+\\$3\
+\k[acc]\
+\h'(u;-\w'\\$2'-\w'\\$3'/2+\\En[skw]+(\w'x'*0)-\\En[skw])'\
+\v'(u;\w'x'*0+\\En[rst]+(\w'\\$3'*0)-\\En[rst])'\
+\\$2\
+\v'(u;\w'x'*0-\\En[rst]+(\w'\\$3'*0)+\\En[rst])'\
+\h'|\\En[acc]u'
+. hcode \\$1\\$4
+..
+.
+.X-achar \['C] \' C c
+.X-achar \['c] \' c c
+.X-achar \[:Y] \[ad] Y y
+.
+.de X-frac
+. schar \[\\$1\\$2] \
+\v'-.28m'\s[\\En[.s]*6u/10u]\\$1\s0\v'.28m'\
+\h'-.1m'\[f/]\h'-.1m'\
+\s[\\En[.s]*6u/10u]\\$2
+..
+.
+.de X-frac-mono
+. fschar \\$1 \[\\$2\\$3] \
+\Z'\v'-.28m'\s[\\En[.s]*5u/10u]\\$2\s0\v'.28m''\
+\Z'\h'0.25m'\[f/]'\
+\Z'\h'.35m'\s[\\En[.s]*5u/10u]\\$3\s0'\
+\h'\w'M'u'
+..
+.
+.X-frac 1 8
+.X-frac 3 8
+.X-frac 5 8
+.X-frac 7 8
+.
+.X-frac-mono CR 1 8
+.X-frac-mono CR 3 8
+.X-frac-mono CR 5 8
+.X-frac-mono CR 7 8
+.X-frac-mono CI 1 8
+.X-frac-mono CI 3 8
+.X-frac-mono CI 5 8
+.X-frac-mono CI 7 8
+.X-frac-mono CB 1 8
+.X-frac-mono CB 3 8
+.X-frac-mono CB 5 8
+.X-frac-mono CB 7 8
+.X-frac-mono CBI 1 8
+.X-frac-mono CBI 3 8
+.X-frac-mono CBI 5 8
+.X-frac-mono CBI 7 8
+.
.if '\*[.T]'X100' \
. char \[radicalex] \h'-\w'\[sr]'u'\[radicalex]\h'\w'\[sr]'u'
-.if !\n[_C] \
-. mso pspic.tmac
+.fchar \[sqrtex] \[radicalex]
+.
.cp \n[_C]
.
.do ie '\[char97]'a' \
diff --git a/contrib/groff/tmac/Xps.tmac b/contrib/groff/tmac/Xps.tmac
index 1064ba6..ced2a53 100644
--- a/contrib/groff/tmac/Xps.tmac
+++ b/contrib/groff/tmac/Xps.tmac
@@ -9,7 +9,7 @@
.
.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 \[em] "\v'-.25m'\h'.05m'\D'l .9m 0'\h'.05m'"
.Xps-char \[aq] '
.Xps-char \[bq] ,
.Xps-char \[Bq] ,,
@@ -35,7 +35,7 @@
.Xps-char \[.i] i
.Xps-char \[fo] <
.Xps-char \[fc] >
-.Xps-char \[OK] \s[\En[.s]*6u/10u]\e\s[0]/
+.Xps-char \[OK] \s[\En[.s]*6u/10u]\[rs]\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''"
@@ -43,8 +43,9 @@
\D'l .39m 0''"
.Xps-char \[en] \-
.Xps-char \[%0] %\s[\En[.s]*6u/10u]\f[I]0
-.Xps-char \[lh] \[->]
-.Xps-char \[rh] \[<-]
+.Xps-char \[lh] \[lA]
+.Xps-char \[rh] \[rA]
+.
.cp \n[_C]
.
.do ie '\[char97]'a' \
diff --git a/contrib/groff/tmac/a4.tmac b/contrib/groff/tmac/a4.tmac
index 5001939..80c944d 100644
--- a/contrib/groff/tmac/a4.tmac
+++ b/contrib/groff/tmac/a4.tmac
@@ -1,12 +1,20 @@
.\" a4.tmac
.\"
.\" Set up groff for A4 paper. Must be called before any other macro
-.\" package. For correct PS output, you must also set the
-.\" `paperlength' keyword in devps/DESC to 841890 in case groff hasn't
-.\" guessed it correctly during configuration.
+.\" package.
+.\"
+.\" Some output drivers need an additional command line switch `-p' to
+.\" override the default paper length set in the driver specific DESC
+.\" file.
+.\"
+.\" For example, use the following for PS output:
+.\"
+.\" groff -Tps -P-pa4 -ma4 -ms foo.ms > foo.ps
.
.pl 29.7c
.ll 21c-2i
.
-.\" for ms
-.if !rLL .nr LL \n[.l]u
+.\" for ms, mdoc, man
+.do if !r LL .nr LL \n[.l]u
+.
+.\" EOF
diff --git a/contrib/groff/tmac/an-old.tmac b/contrib/groff/tmac/an-old.tmac
index 3cee907..063ebce 100644
--- a/contrib/groff/tmac/an-old.tmac
+++ b/contrib/groff/tmac/an-old.tmac
@@ -1,6 +1,6 @@
.\" an-old.tmac
.\"
-.\" Copyright (C) 1989, 1990, 1991, 1992, 2001, 2002
+.\" Copyright (C) 1989, 1990, 1991, 1992, 2001, 2002, 2003
.\" Free Software Foundation, Inc.
.\" Written by James Clark (jjc@jclark.com)
.\"
@@ -62,10 +62,15 @@
. ie n .nr LL 78n
. el .nr LL 6.5i
.\}
-.if !r LT \{\
-. ie n .nr LT 78n
-. el .nr LT 6.5i
-.\}
+.if !r LT \
+. nr LT \n[LL]
+.
+.nr FT -.5i
+.
+.\" Default heading font
+.ds HF B
+.
+.nr an-first 1
.
.nr an-html 0
.if '\*[.T]'html' .nr an-html 1
@@ -92,7 +97,7 @@
.\" .TH title section extra1 extra2 extra3
.de1 TH
. if \\n[an-html] \{\
-. HTML-TAG ".tl"
+. HTML-TAG-NS ".tl"
\\$1
. \}
.
@@ -136,9 +141,15 @@
. vs \\n[VS]u
. ll \\n[LL]u
.
-. nr IN 7.2n
+.\" We must select an integer indentation value for nroff;
+.\" see comment in an-do-tag.
+. if !r IN \{\
+. ie t .nr IN 7.2n
+. el .nr IN 7n
+. \}
. PD
-. nr SN 3n \" the indentation of sub-sub-headings relative to sub-headings
+. if !r SN \
+. nr SN 3n \" the indentation of sub-sub-headings relative to sub-headings
. nr an-level 1
. set-an-margin
. nr an-prevailing-indent \\n[IN]
@@ -153,7 +164,7 @@
. el \{\
. wh 0 an-header
. wh -1i an-footer
-. wh -.5i an-p-footer
+. wh \\n[FT]u an-p-footer
.
. if (\\n[nl] > 0) \{\
. ie \\n[C] .bp (\\n[%] + 1)
@@ -192,8 +203,31 @@
. el .nr PD (.4v >? \n[.V])
..
.
+.\" Redefine these to customize the header & footer
+.
+.de1 PT
+. tl '\\*[an-title](\\*[an-section])'\\*[an-extra3]'\\*[an-title](\\*[an-section])'
+..
+.
+.de1 BT
+. if r ps4html \
+. return
+. ie \\n[D] \{\
+. if o .tl '\\*[an-extra2]'\\*[an-extra1]'\\*[an-page-string]'
+. if e .tl '\\*[an-page-string]'\\*[an-extra1]'\\*[an-extra2]'
+. \}
+. el \
+. tl '\\*[an-extra2]'\\*[an-extra1]'\\*[an-page-string]'
+..
+.
.de1 an-header
. an-init
+. if \\n[cR] \{\
+. ie \\n[an-first] \
+. nr an-first 0
+. el \
+. sp .5i
+. \}
. ev 1
. ps \\n[PS]u
. vs \\n[VS]u
@@ -203,7 +237,7 @@
. el \{\
. if !\\n[cR] \
. sp .5i
-. tl '\\*[an-title](\\*[an-section])'\\*[an-extra3]'\\*[an-title](\\*[an-section])'
+. PT
. ie !\\n[cR] \
. sp |1i
. el \
@@ -243,12 +277,7 @@
. ds an-page-string \\n[%]
. \}
. \}
-. ie \\n[D] \{\
-. if o .tl '\\*[an-extra2]'\\*[an-extra1]'\\*[an-page-string]'
-. if e .tl '\\*[an-page-string]'\\*[an-extra1]'\\*[an-extra2]'
-. \}
-. el \
-. tl '\\*[an-extra2]'\\*[an-extra1]'\\*[an-page-string]'
+. BT
. ev
..
.
@@ -271,12 +300,12 @@
. fi
. in \\n[an-margin]u
. ti 0
-. HTML-TAG ".NH \\n[an-level]"
+. HTML-TAG-NS ".NH \\n[an-level]"
. it 1 an-trap
. nr an-no-space-flag 1
. nr an-break-flag 1
. ps \\n[PS-SH]u
-. ft B
+. ft \\*[HF]
. ne (2v + 1u)
. if \\n[.$] \&\\$*
..
@@ -293,7 +322,7 @@
. nr an-no-space-flag 1
. nr an-break-flag 1
. ps \\n[PS-SS]u
-. ft B
+. ft \\*[HF]
. ne (2v + 1u)
. if \\n[.$] \&\\$*
..
@@ -349,49 +378,32 @@
..
.
.de an-do-tag
-. nr an-div? 0
. br
-. ll
. di
+. nr an-div? 0
+. ll
. ie (\\n[dl] + \\n[an-tag-sep] > \\n[an-prevailing-indent]) \{\
. in \\n[an-margin]u
. ne (2v + 1u)
. an-div
-. br
. in (\\n[an-margin]u + \\n[an-prevailing-indent]u)
. \}
. el \{\
+. \" In nroff mode, if the indentation value is not an integer multiple
+. \" of the character cell, it is possible that the following combination
+. \" of .in and .ti yields a different result as the .in request in
+. \" the .ie part above.
. in (\\n[an-margin]u + \\n[an-prevailing-indent]u)
. ti -\\n[an-prevailing-indent]u
. chop an-div
. 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
+\\*[an-div]\\h'|\\n[an-prevailing-indent]u'\c
. HTML-TAG-NS ".col 2"
. \}
..
.
.de1 LP
-. br
. sp \\n[PD]u
. ps \\n[PS]u
. vs \\n[VS]u
@@ -509,7 +521,6 @@
..
.
.de1 RS
-. br
. nr an-saved-margin\\n[an-level] \\n[an-margin]
. nr an-saved-prevailing-indent\\n[an-level] \\n[an-prevailing-indent]
. ie \\n[.$] .nr an-margin +(n;\\$1)
@@ -520,7 +531,6 @@
..
.
.de1 RE
-. br
. ie \\n[.$] .nr an-level ((;\\$1) <? \\n[an-level])
. el .nr an-level -1
. nr an-level (1 >? \\n[an-level])
@@ -573,11 +583,15 @@
.ds lq \(lq
.ds rq \(rq
.
-.ie \n[an-html] \{\
-. rm an-do-tag
-. als an-do-tag an-do-tag-html
+.if !\n[an-html] \{\
+. if !rHY \{\
+. ie \n[cR] \
+. nr HY 12
+. el \
+. nr HY 14
+. \}
+. hy \n[HY]
.\}
-.el .hy 14
.
.\" Load local modifications.
.mso man.local
diff --git a/contrib/groff/tmac/composite.tmac b/contrib/groff/tmac/composite.tmac
new file mode 100644
index 0000000..9326933
--- /dev/null
+++ b/contrib/groff/tmac/composite.tmac
@@ -0,0 +1,24 @@
+.\" composite.tmac
+.
+.do composite ga u0300
+.do composite ` u0300
+.do composite aa u0301
+.do composite ' u0301
+.do composite a^ u0302
+.do composite ^ u0302
+.do composite a~ u0303
+.do composite ~ u0303
+.do composite a- u0304
+.do composite - u0304
+.do composite ab u0306
+.do composite a. u0307
+.do composite . u0307
+.do composite ad u0308
+.do composite ao u030A
+.do composite a" u030B
+.do composite " u030B
+.do composite ah u030C
+.do composite ac u0327
+.do composite ho u0328
+.
+.\" EOF
diff --git a/contrib/groff/tmac/cp1047.tmac b/contrib/groff/tmac/cp1047.tmac
index 8b02753..84135f0 100644
--- a/contrib/groff/tmac/cp1047.tmac
+++ b/contrib/groff/tmac/cp1047.tmac
@@ -2,104 +2,100 @@
.\"
.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]
+.trin \[char66]\[^a]
+.trin \[char67]\[:a]
+.trin \[char68]\[`a]
+.trin \[char69]\['a]
+.trin \[char70]\[~a]
+.trin \[char71]\[oa]
+.trin \[char72]\[,c]
+.trin \[char73]\[~n]
+.trin \[char74]\[ct]
+.trin \[char81]\['e]
+.trin \[char82]\[^e]
+.trin \[char83]\[:e]
+.trin \[char84]\[`e]
+.trin \[char85]\['i]
+.trin \[char86]\[^i]
+.trin \[char87]\[:i]
+.trin \[char88]\[`i]
+.trin \[char89]\[ss]
+.trin \[char98]\[^A]
+.trin \[char99]\[:A]
+.trin \[char100]\[`A]
+.trin \[char101]\['A]
+.trin \[char102]\[~A]
+.trin \[char103]\[oA]
+.trin \[char104]\[,C]
+.trin \[char105]\[~N]
+.trin \[char106]\[bb]
+.trin \[char112]\[/o]
+.trin \[char113]\['E]
+.trin \[char114]\[^E]
+.trin \[char115]\[:E]
+.trin \[char116]\[`E]
+.trin \[char117]\['I]
+.trin \[char118]\[^I]
+.trin \[char119]\[:I]
+.trin \[char120]\[`I]
+.trin \[char128]\[/O]
+.trin \[char138]\[Fo]
+.trin \[char139]\[Fc]
+.trin \[char140]\[Sd]
+.trin \[char141]\['y]
+.trin \[char142]\[Tp]
+.trin \[char143]\[t+-]
+.trin \[char144]\[de]
+.trin \[char154]\[Of]
+.trin \[char155]\[Om]
+.trin \[char156]\[ae]
+.trin \[char157]\[ac]
+.trin \[char158]\[AE]
+.trin \[char159]\[Cs]
+.trin \[char160]\[mc]
+.trin \[char170]\[r!]
+.trin \[char171]\[r?]
+.trin \[char172]\[-D]
+.trin \[char174]\[TP]
+.trin \[char175]\[rg]
+.trin \[char176]\[tno]
+.trin \[char177]\[Po]
+.trin \[char178]\[Ye]
+.trin \[char179]\[pc]
+.trin \[char180]\[co]
+.trin \[char181]\[sc]
+.trin \[char182]\[ps]
+.trin \[char183]\[14]
+.trin \[char184]\[12]
+.trin \[char185]\[34]
+.trin \[char186]\['Y]
+.trin \[char187]\[ad]
+.trin \[char188]\[a-]
+.trin \[char190]\[aa]
+.trin \[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]
+.trin \[char203]\[^o]
+.trin \[char204]\[:o]
+.trin \[char205]\[`o]
+.trin \[char206]\['o]
+.trin \[char207]\[~o]
+.trin \[char218]\[S1]
+.trin \[char219]\[^u]
+.trin \[char220]\[:u]
+.trin \[char221]\[`u]
+.trin \[char222]\['u]
+.trin \[char223]\[:y]
+.trin \[char225]\[tdi]
+.trin \[char234]\[S2]
+.trin \[char235]\[^O]
+.trin \[char236]\[:O]
+.trin \[char237]\[`O]
+.trin \[char238]\['O]
+.trin \[char239]\[~O]
+.trin \[char250]\[S3]
+.trin \[char251]\[^U]
+.trin \[char252]\[:U]
+.trin \[char253]\[`U]
+.trin \[char254]\['U]
.cp \n(_C
diff --git a/contrib/groff/tmac/doc-common b/contrib/groff/tmac/doc-common
index 7310d19..438a749 100644
--- a/contrib/groff/tmac/doc-common
+++ b/contrib/groff/tmac/doc-common
@@ -180,7 +180,7 @@
.eo
.
.
-.\" punctuation values (suffix=3, prefix = 4)
+.\" punctuation values (suffix=3, prefix=4)
.
.nr doc-punct. 3
.nr doc-punct, 3
@@ -321,11 +321,12 @@
. as doc-volume " \*[doc-volume-ds-\$2]
. \}\}\}
. el \{\
-. ie "\$2"unass" .ds doc-volume DRAFT
-. el \{ .ie "\$2"draft" .ds doc-volume DRAFT
-. el \{ .ie "\$2"paper" .ds doc-volume UNTITLED
-. el \
-. tm mdoc warning: .Dt: unknown section `\$2' (#\n[.c])
+. ie "\$2"unass" \
+. ds doc-volume DRAFT
+. el \{ .ie "\$2"draft" \
+. ds doc-volume DRAFT
+. el .if "\$2"paper" \
+. ds doc-volume UNTITLED
. \}\}
. if \A\$3 \{\
. if d doc-volume-ds-\$3 \
@@ -542,7 +543,7 @@
. ev doc-env-dh
. doc-setup-page-layout
. if !\n[cR] \
-' sp \n[doc-header-space]u
+. sp \n[doc-header-space]u
. nr doc-reg-dh \w'\*[doc-caption-font]\*[doc-header-string]\f[]'
. nr doc-reg-dh1 \w'\*[doc-caption-font2]\*[doc-volume]\f[]'
. if (\n[doc-reg-dh] + \n[doc-reg-dh1] + \n[doc-reg-dh] >= \n[.lt]) \{\
@@ -553,8 +554,9 @@
. as doc-header-string "\|.\|.\|.
. \}
. tl \*[doc-caption-font]\*[doc-header-string]\f[]\*[doc-caption-font2]\*[doc-volume]\f[]\*[doc-caption-font]\*[doc-header-string]\f[]
-' sp \n[doc-header-space]u
+. sp \n[doc-header-space]u
. ev
+. ns
..
.
.
@@ -563,11 +565,11 @@
.
.de doc-footer
. ie \n[cR] \
-' br
+. br
. el \{\
. ev doc-caption-enviroment
. doc-setup-page-layout
-' sp \n[doc-footer-space]u
+. sp \n[doc-footer-space]u
. ie \n[D] \{\
. ie o \
. tl %\*[doc-caption-font2]\*[doc-date-string]\f[]\*[doc-caption-font]\*[doc-operating-system]\f[]
@@ -576,7 +578,7 @@
. \}
. el \
. tl \*[doc-caption-font]\*[doc-operating-system]\f[]\*[doc-caption-font2]\*[doc-date-string]\f[]%
-' bp
+. bp
. ev
. \}
..
@@ -602,7 +604,7 @@
. tm mdoc warning: list open at EOF! A .Bl directive has no matching .El
.
. if \n[cR] \{\
-' sp
+. sp
. tl \*[doc-caption-font]\*[doc-operating-system]\f[]\*[doc-caption-font2]\*[doc-date-string]\f[]\*[doc-caption-font]\*[doc-operating-system]\f[]
. \" suppress empty lines after the footer
. pl \n[nl]u
@@ -761,14 +763,14 @@
. doc-parse-args \$@
.
. if t \
-' ad
+. ad
.
. \" this resolves e.g. `.Sh "SEE ALSO"'
. doc-first-parameter \$*
.
. ie "\*[doc-str-dfp]"\*[doc-section-name]" \{\
. doc-setup-header
-' in 0
+. in 0
. \}
. el \{\
. nr doc-in-synopsis-section 0
@@ -805,12 +807,12 @@
. \}
.
. doc-setup-page-layout
-' sp
+. sp
. ns
. ta T .5i
. if !\n[cR] \
. ne 3
-' fi
+. fi
.
. if t \{\
. nr doc-reg-Sh \n[.ss]
diff --git a/contrib/groff/tmac/doc-ditroff b/contrib/groff/tmac/doc-ditroff
index 94f7e50..6c83009 100644
--- a/contrib/groff/tmac/doc-ditroff
+++ b/contrib/groff/tmac/doc-ditroff
@@ -36,10 +36,6 @@
.
.eo
.
-.\" use -rC=1 to number pages continuously
-.
-.if !r C .nr C 0
-.
.\" use -rD=1 for double-sided printing
.
.if !r D .nr D 0
@@ -212,18 +208,11 @@
. wh 0 doc-header
. wh -1.25i doc-footer
.
-. nr nL \n[nl]
. if \n[gX] \
. ds doc-command-name
.
. br
.
-. \" Don't set the page number if this is the first page,
-. \" in case the user has used -n.
-. if \n[nL] \
-. if !\n[C] \
-. nr % 1
-.
. nr gX 0
. e@ doc-end-macro
..
diff --git a/contrib/groff/tmac/doc-nroff b/contrib/groff/tmac/doc-nroff
index 9c5f307..0c04381 100644
--- a/contrib/groff/tmac/doc-nroff
+++ b/contrib/groff/tmac/doc-nroff
@@ -44,10 +44,9 @@
.
.if !r cR .nr cR 1
.
-.\" the following switches are ignored in nroff mode
+.\" the following switch is ignored in nroff mode
.
.nr S 10
-.nr C 0
.
.\" the `doc-xx-font' strings must not be empty!
.
@@ -122,10 +121,7 @@
.\" NS doc-header-space
.
.de doc-setup-page-layout
-. ie \n[cR] \
-. nr doc-header-space 0
-. el \
-. nr doc-header-space .5i
+. nr doc-header-space .5i
. nr doc-footer-space .5i
.
. ie r LL \
@@ -201,7 +197,6 @@
.\" NS doc-header-string
.
.de doc-setup-header
-. nr % 1
. ds doc-header-string "\*[doc-document-title]
. if !"\*[doc-section]"Null" \
. as doc-header-string (\*[doc-section])
@@ -213,9 +208,6 @@
. wh -1.167i doc-footer
. \}
.
-. if ((\n[nl] == 0) : (\n[nl] == -1)) \
-' bp
-.
. e@ doc-end-macro
..
.
diff --git a/contrib/groff/tmac/doc.tmac b/contrib/groff/tmac/doc.tmac
index 3667643..290431a 100644
--- a/contrib/groff/tmac/doc.tmac
+++ b/contrib/groff/tmac/doc.tmac
@@ -767,7 +767,7 @@
.
.
.\" NS doc-do-func-decl macro
-.\" NS do someting special while in SYNOPSIS
+.\" NS do something special while in SYNOPSIS
.\" NS
.\" NS modifies:
.\" NS doc-curr-font
@@ -2652,10 +2652,10 @@
.
. ie t \{\
. nop \*[doc-Li-font]\c
-' ta T 9n
+. ta T 9n
. \}
. el \
-' ta T 8n
+. ta T 8n
. nf
. \}
. el \{ .ie "\$1"-filled" \{\
@@ -2696,14 +2696,10 @@
. nr doc-display-indent-stack\n[doc-display-depth] 0
.
. if \n[doc-display-indent-stack\n[doc-display-depth]] \
-' in +\n[doc-display-indent-stack\n[doc-display-depth]]u
+. in +\n[doc-display-indent-stack\n[doc-display-depth]]u
.
-. if !\n[doc-is-compact] \{\
-. ie "\*[doc-display-type-stack\n[doc-display-depth]]"ragged" \
-. sp \n[doc-display-vertical]u
-. el \
-' sp \n[doc-display-vertical]u
-. \}
+. if !\n[doc-is-compact] \
+. sp \n[doc-display-vertical]u
.
. if !\n[cR] \
. ne 2v
@@ -4317,7 +4313,7 @@
. nr doc-list-indent-stack\n[doc-list-depth] \n[doc-column-indent-width]u
. if !\n[.u] \{\
. fi
-' in +\n[doc-column-indent-width]u
+. in +\n[doc-column-indent-width]u
. \}
. ti -\n[doc-column-indent-width]u
.
@@ -4363,7 +4359,7 @@
.\" NS width register `Dl' set in doc-common
.
.de Dl
-' ta T .5i
+. ta T .5i
. in +\n[doc-display-indent]u
.
. ie \n[doc-arg-limit] \{\
@@ -4398,7 +4394,7 @@
.\" NS width register `D1' set in doc-common
.
.de D1
-' ta T .5i
+. ta T .5i
. in +\n[doc-display-indent]u
.
. ie \n[doc-arg-limit] \{\
diff --git a/contrib/groff/tmac/dvi.tmac b/contrib/groff/tmac/dvi.tmac
index 4eb03b8..27fd5b3 100644
--- a/contrib/groff/tmac/dvi.tmac
+++ b/contrib/groff/tmac/dvi.tmac
@@ -11,27 +11,47 @@
.ftr TT CW
.ftr H HR
.
-.special TR TI
+.special TR TI MI S SA SB CW
.fspecial TI CWI
.fspecial TBI CWI
.fspecial HI CWI
.fspecial HBI CWI
+.fspecial CW SC
+.fspecial CWI SC
.
-.\" 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_]]
+.\" This uses the dvi-char-_-1 string in fixed-width fonts, dvi-char-_-0
+.\" otherwise.
+.fchar _ \R'dvi-char (\w'M' == \w'i')'\E*[dvi-char-_-\\n[dvi-char]]
.\" Normally use a rule.
+.ds dvi-char-_-0 \Z'\v'.08m'\D'R .54m .04m''\h'.5m'
+.\" In fixed-width fonts (CW and CWI) use a real _ character.
+.ds dvi-char-_-1 _
+.
+.fchar \[/l] \
+\R'dvi-char ((\w'M' == \w'i') + \
+ (\En[.f] == \f[CWI]\En[.f]\f[]))'\E*[dvi-char-/l-\\n[dvi-char]]
+.ds dvi-char-/l-0 \[slash@for@l]l
+.ds dvi-char-/l-1 \Z'\v'0.22v'\h'-0.02m'\''l
+.ds dvi-char-/l-2 \Z'\v'0.22v'\h'-0.13m'\''l
+.
+.fchar \[/L] \
+\R'dvi-char ((\w'M' == \w'i') + \
+ (\En[.f] == \f[CWI]\En[.f]\f[]))'\E*[dvi-char-/L-\\n[dvi-char]]
+.ds dvi-char-/L-0 \h'\w'L'u-\w'\[slash@for@l]L'u'\[slash@for@l]L
+.ds dvi-char-/L-1 \Z'\v'0.22v'\h'-0.14m'\''L
+.ds dvi-char-/L-2 \Z'\v'0.22v'\h'-0.21m'\''L
+.
.\" 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 and CWI use a real _ character.
-.ds dvi-char_1 _
+.char \[br] \Z'\v'.25m'\D'R .04m -1m''
+.char \[ul] \Z'\v'.23m'\D'R .54m .04m''\h'.5m'
+.char \[rn] \Z'\v'-.77m'\D'R .54m .04m''\h'.5m'
.
-.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'
+.char \[or] \h'.1m'\Z'\D'l 0 -.675m''\h'.1m'
+.char \[ru] \Z'\v'-.02m'\D'R .54m .04m''\h'.5m'
+.
+.fchar \[sr] \v'-.75m'\[sqrt]\v'.75m'
+.fchar \[sqrtex] \D'R .5m -.04m'\v'.04m'
+.fchar \[radicalex] \v'-.75m'\D'R .5m -.04m'\v'.79m'
.fchar \[co] \
\z\s-2\[ci]\s0\
\h'\w'\s-2\[ci]\s0'u-\w'\s-4C\s0'u/2u'\
@@ -42,16 +62,26 @@
\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'
-.fchar \[fm] \v'-.35m'\s[\\n[.s]*7u/10u]\[prime]\s0\v'.35m'
+.fchar \[fm] \v'-.35m'\s[\En[.s]*7u/10u]\[prime]\s0\v'.35m'
+.fchar \[sd] \v'-.35m'\s[\En[.s]*7u/10u]\[prime]\[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'
-.fchar \[!=] \[slashnot]\[eq]
-.fchar \[tm] \v'-.3m'\s[\\n[.s]/2u]TM\s0\v'.3m'
-.fchar \[aq] '
+.\" SC contains a real \[!=] glyph
+.schar \[!=] \[slashnot]\[eq]
+.schar \[nm] \o'\F[T]\f[R]/\[mo]'
+.fschar CW \[nm] \o'/\[mo]'
+.fschar CWI \[nm] \o'\f[CW]/\[mo]'
+.schar \[ne] \[slashnot]\[==]
+.fschar CW \[ne] \o'/\[==]'
+.fschar CWI \[ne] \o'\f[CW]/\[==]'
+.fchar \[=~] \v'.1m'\Z'\[eq]'\v'-.4m'\[ap]\v'.3m'
+.fchar \[tm] \v'-.3m'\s[\En[.s]/2u]TM\s0\v'.3m'
+.\" TC fonts contain real \[aq] glyphs
+.schar \[aq] '
.fchar \[bq] ,
.fchar \[Bq] ,\h'\w'\[rq]'u-(2u*\w"'"u)',
.fchar \[ho] \s[\En[.s]/2u]\v'.4m'c\v'-.4m'\s0
@@ -62,14 +92,30 @@ 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]
+.fchar \[nc] \[slashnot]\[sp]
.cflags 8 \[an]
-.fchar \[an] \h'-.167m'\[mi]\h'-.167m'
+.schar \[an] \h'-.167m'\[mi]\h'-.167m'
+.fschar CW \[an] -
+.fschar CWI \[an] \f[CW]\[mi]
+.\" we follow the EC ligatures for fixed-width dashes
+.fchar \[em] --
+.fchar \[en] -
+.fchar \[hy] -
+.fschar CW \[va] \o'\[ua]\[da]'
+.fschar CWI \[va] \o'\[ua]\[da]'
+.fschar CW \[<>] \o'\[<-]\[->]'
+.fschar CWI \[<>] \o'\[<-]\[->]'
+.fchar \[lh] \[lA]
+.fchar \[rh] \[rA]
+.
+.fchar \[f/] /
.
.\" Define some fractions.
.de dvi-frac
. 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'
+\v'-.25m'\s[\\En[.s]*7u/10u]\\$1\s0\v'.25m'\
+\h'-.2m'\[f/]\h'-.2m'\
+\v'.25m'\s[\\En[.s]*7u/10u]\\$2\s0\v'-.25m'
..
.
.dvi-frac 1 2
@@ -86,23 +132,27 @@ D\v'-.33m'\s0\v'.33m'
.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<\s+3\v'+.1m'
+.fchar \[fc] \v'-.1m'\s-3>\s+3\v'+.1m'
.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'
.
+.fchar \[IJ] IJ
+.fchar \[ij] ij
+.
.de dvi-achar
. \" 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])'\
+\h'(u;-\w'\\$2'-\w'\\$3'/2+\\En[skw]+(\w'x'*0)-\\En[skw])'\
+\v'(u;\w'x'*0+\\En[rst]+(\w'\\$3'*0)-\\En[rst])'\
\\$2\
-\v'(u;\w'x'*0-\\\\n[rst]+(\w'\\$3'*0)+\\\\n[rst])'\
-\h'|\\\\n[acc]u'
+\v'(u;\w'x'*0-\\En[rst]+(\w'\\$3'*0)+\\En[rst])'\
+\h'|\\En[acc]u'
. hcode \\$1\\$4
..
.
@@ -112,6 +162,7 @@ D\v'-.33m'\s0\v'.33m'
.dvi-achar \[~A] ~ A a
.dvi-achar \[:A] \[ad] A a
.dvi-achar \[oA] \[ao] A a
+.dvi-achar \['C] \' C c
.dvi-achar \[`E] \` E e
.dvi-achar \['E] \' E e
.dvi-achar \[^E] ^ E e
@@ -138,6 +189,7 @@ D\v'-.33m'\s0\v'.33m'
.dvi-achar \[~a] ~ a a
.dvi-achar \[:a] \[ad] a a
.dvi-achar \[oa] \[ao] a a
+.dvi-achar \['c] \' c c
.dvi-achar \[`e] \` e e
.dvi-achar \['e] \' e e
.dvi-achar \[^e] ^ e e
diff --git a/contrib/groff/tmac/ec.tmac b/contrib/groff/tmac/ec.tmac
index d8bff62..045abd3 100644
--- a/contrib/groff/tmac/ec.tmac
+++ b/contrib/groff/tmac/ec.tmac
@@ -29,6 +29,7 @@
.ftr TT CWEC
.ftr H HREC
.
+.special MI S
.fspecial TREC TRTC
.fspecial TIEC TITC
.fspecial TBEC TBTC
@@ -37,18 +38,24 @@
.fspecial HIEC HITC
.fspecial HBEC HBTC
.fspecial HBIEC HBIEC
-.fspecial CWEC CWTC
-.fspecial CWIEC CWITC
+.fspecial CWEC CWTC SC
+.fspecial CWIEC CWITC SC
.
-.\" remove definitions of glyphs which are TC fonts
+.\" remove definitions of glyphs which are in TC fonts
.rchar \[co] \[rg]
.rchar \[ct]
.rchar \[tm]
-.rchar \[aq]
-.rchar \[12] \[14] \[34]
+.rchar \[f/]
.rchar \[S1] \[S2] \[S3]
.rchar \[Of] \[Om]
-.rchar \[Ye] \[Cs]
+.rchar \[Cs]
+.rchar \[de]
+.
+.\" \[pl] and \[eq] must be roman
+.char \[pl] \f[TREC]+
+.char \[eq] \f[TREC]=
+.
+.schar \[nm] \o'\f[TREC]/\[mo]'
.
.\" an ID register
.nr ECFONTS 1
diff --git a/contrib/groff/tmac/eqnrc b/contrib/groff/tmac/eqnrc
index cfdbf3f..874d735 100644
--- a/contrib/groff/tmac/eqnrc
+++ b/contrib/groff/tmac/eqnrc
@@ -22,7 +22,7 @@ ifdef html ! define ps|X|html %1% !
ifdef ps|X|html ! sdefine inf %"\s[\En[.s]*13u/10u]\v'12M'\(if\v'-12M'\s0"% !
ifdef dvi !
-sdefine int %{type "operator" vcenter \(is}%
+sdefine int %{type "operator" vcenter \[integral]}%
sdefine sum %{type "operator" vcenter \[sum]}%
sdefine prod %{type "operator" vcenter \[product]}%
sdefine coprod %{type "operator" vcenter \[coproduct]}%
diff --git a/contrib/groff/tmac/europs.tmac b/contrib/groff/tmac/europs.tmac
new file mode 100644
index 0000000..bbb54f6
--- /dev/null
+++ b/contrib/groff/tmac/europs.tmac
@@ -0,0 +1,38 @@
+.\" europs.tmac
+.
+.do char \[eu] \f[EURO]\N'0'
+.
+.do fschar AB \[Eu] \f[EURO]\N'1'
+.do fschar ABI \[Eu] \f[EURO]\N'3'
+.do fschar AI \[Eu] \f[EURO]\N'2'
+.do fschar AR \[Eu] \f[EURO]\N'0'
+.do fschar BMB \[Eu] \f[EURO]\N'5'
+.do fschar BMBI \[Eu] \f[EURO]\N'7'
+.do fschar BMI \[Eu] \f[EURO]\N'6'
+.do fschar BMR \[Eu] \f[EURO]\N'4'
+.do fschar CB \[Eu] \f[EURO]\N'13'
+.do fschar CBI \[Eu] \f[EURO]\N'15'
+.do fschar CI \[Eu] \f[EURO]\N'14'
+.do fschar CR \[Eu] \f[EURO]\N'12'
+.do fschar HB \[Eu] \f[EURO]\N'9'
+.do fschar HBI \[Eu] \f[EURO]\N'11'
+.do fschar HI \[Eu] \f[EURO]\N'10'
+.do fschar HR \[Eu] \f[EURO]\N'8'
+.do fschar HNB \[Eu] \f[EURO]\N'9'
+.do fschar HNBI \[Eu] \f[EURO]\N'11'
+.do fschar HNI \[Eu] \f[EURO]\N'10'
+.do fschar HNR \[Eu] \f[EURO]\N'8'
+.do fschar NB \[Eu] \f[EURO]\N'5'
+.do fschar NBI \[Eu] \f[EURO]\N'7'
+.do fschar NI \[Eu] \f[EURO]\N'6'
+.do fschar NR \[Eu] \f[EURO]\N'4'
+.do fschar PB \[Eu] \f[EURO]\N'5'
+.do fschar PBI \[Eu] \f[EURO]\N'7'
+.do fschar PI \[Eu] \f[EURO]\N'6'
+.do fschar PR \[Eu] \f[EURO]\N'4'
+.do fschar TB \[Eu] \f[EURO]\N'5'
+.do fschar TBI \[Eu] \f[EURO]\N'7'
+.do fschar TI \[Eu] \f[EURO]\N'6'
+.do fschar TR \[Eu] \f[EURO]\N'4'
+.
+.\" EOF
diff --git a/contrib/groff/tmac/groff_man.man b/contrib/groff/tmac/groff_man.man
index 2a1396e..5886e4f 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, 2002 Free Software Foundation, Inc.
+Copyright (C) 1999-2000, 2001, 2002, 2003 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
@@ -16,17 +16,26 @@ versions, except that this permission notice may be included in
translations approved by the Free Software Foundation instead of in
the original English.
..
+.
.de TQ
-.br
-.ns
-.TP \\$1
+. br
+. ns
+. TP \\$1
..
+.
+.
.TH GROFF_MAN @MAN7EXT@ "@MDATE@" "Groff Version @VERSION@"
.
+.
+.\" -----------------------------------------------------------------
+.
.SH NAME
.
groff_man \- groff `man' macros to support generation of man pages
.
+.
+.\" -----------------------------------------------------------------
+.
.SH SYNOPSIS
.
.B groff
@@ -47,6 +56,9 @@ groff_man \- groff `man' macros to support generation of man pages
.IR files .\|.\|.\&
]
.
+.
+.\" -----------------------------------------------------------------
+.
.SH DESCRIPTION
.
The
@@ -57,22 +69,16 @@ were written by James Clark.
This document provides a brief summary of the use of each macro in that
package.
.
+.
+.\" -----------------------------------------------------------------
+.
.SH OPTIONS
.
The
.B man
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
@@ -80,19 +86,64 @@ page instead of multiple pages.
Say
.B \-rcR=0
to disable it.
+.
.TP
.B \-rC1
If more than one manual page is given on the command line, number the
pages continuously, rather than starting each at\ 1.
+.
.TP
.B \-rD1
Double-sided printing.
Footers for even and odd pages are formatted differently.
+.
+.TP
+.BI \-rFT= dist
+Set distance of the footer relative to the bottom of the page if negative
+or relative to the top if positive.
+The default is -0.5i.
+.
+.TP
+.BI \-rHY= flags
+Set hyphenation flags.
+.
+Possible values are 1\ to hyphenate without restrictions, 2\ to not
+hyphenate the last word on a page, 4\ to not hyphenate the last two
+characters of a word, and 8\ to not hyphenate the first two characters
+of a word.
+.
+These values are additive; the default is\ 14.
+.
+.TP
+.BI \-rIN= width
+Set body text indentation to
+.IR width .
+The default is 7n for
+.IR nroff ,
+7.2n for
+.IR troff .
+For
+.IR nroff ,
+this value should always be an integer multiple of unit `n' to get
+consistent indentation.
+.
+.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 the line length.
+.
.TP
.BI \-rP nnn
Enumeration of pages will start with
.I nnn
rather than with\ 1.
+.
.TP
.BI \-rS xx
Base document font size is
@@ -100,6 +151,13 @@ Base document font size is
points
.RI ( xx
can be 10, 11, or\ 12) rather than 10\ points.
+.
+.TP
+.BI \-rSN= width
+Set sub-subheading indentation to
+.IR width .
+The default is 3n.
+.
.TP
.BI \-rX nnn
After page\ \c
@@ -112,6 +170,9 @@ etc.
For example, the option `\-rX2' will produce the following page numbers:
1, 2, 2a, 2b, 2c, etc.
.
+.
+.\" -----------------------------------------------------------------
+.
.SH USAGE
.
This section describes the available macros for manual pages.
@@ -120,9 +181,10 @@ For further customization, put additional macros and requests into the file
which will be loaded immediately after the
.B man
package.
+.
.TP
.BI .TH " title section " [ extra1 "] [" extra2 "] [" extra3 ]
-Sets the title of the man page to
+Set the title of the man page to
.I title
and the section to
.IR section ,
@@ -142,13 +204,15 @@ in parentheses immediately appended to
.I extra1
will be positioned in the middle of the footer line.
.I extra2
-will be positioned at the left in the footer line (resp. at the left on
+will be positioned at the left in the footer line (or at the left on
even pages and at the right on odd pages if double-sided printing is
active).
.I extra3
is centered in the header line.
+.
.IP
For HTML output, headers and footers are completely supressed.
+.
.IP
Additionally, this macro starts a new page; the new line number is\ 1 again
(except if the `-rC1' option is given on the command line) -- this feature
@@ -156,50 +220,69 @@ is intended only for formatting multiple man pages; a single man page should
contain exactly one
.B TH
macro at the beginning of the file.
+.
.TP
.BI ".SH [" "text for a heading" ]
-Sets up an unnumbered section heading sticking out to the left.
+Set 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 input line if there is
+up to the end of the line (or 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
-value.
+in bold face
+(or the font specified by the string
+.BR HF ),
+one size larger than the base document size.
+Additionally, the left margin and the indentation for the following text
+is reset to the default values.
+.
.TP
.BI ".SS [" "text for a heading" ]
-Sets up an secondary, unnumbered section heading.
+Set up a 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 input line if there is
+up to the end of the line (or 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
-value.
+in bold face
+(or the font specified by the string
+.BR HF ),
+at the same size as the base document size.
+Additionally, the left margin and the indentation for the following text
+is reset to the default values.
+.
.TP
.BI ".TP [" nnn ]
-Sets up an indented paragraph with label.
+Set up an indented paragraph with label.
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.
+it is set to the previous indentation value specified with
+.BR TP ,
+.BR IP ,
+or
+.B HP
+(or to the default value if none of them have been used yet).
+.
+.IP
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
+Nevertheless, if the label is not as wide as the indentation the
paragraph starts at the same line (but indented), continuing on the
following lines.
-If the label is wider than the indentation, then the descriptive part of the
+If the label is wider than the indentation the descriptive part of the
paragraph begins on the line following the label, entirely indented.
Note that neither font shape nor font size of the label is set to a default
value; on the other hand, the rest of the text will have default font
settings.
+.
+.IP
The
.B TP
macro is the macro used for the explanations you are just reading.
+.
.TP
.B .LP
.TQ
@@ -212,23 +295,35 @@ vertical space downwards by the amount specified by the
.B PD
macro.
The font size and shape are reset to the default value (10pt resp. Roman).
-Finally, the current left margin is restored.
+Finally, the current left margin and the indentation are restored.
+.
.TP
.BI ".IP [" designator "] [" nnn ]
-Sets up an indented paragraph, using
+Set up an indented paragraph, using
.I designator
as a tag to mark its beginning.
The indentation is set to
.I nnn
-if that argument is supplied (default unit is `n'), otherwise the default
-indentation value is used.
+if that argument is supplied (the default unit is `n' if omitted), otherwise
+it is set to the previous indentation value specified with
+.BR TP ,
+.BR IP ,
+or
+.B HP
+(or to the default value if none of them have been used yet).
Font size and face of the paragraph (but not the designator) are reset to
its default values.
+.
+.IP
To start an indented paragraph with a particular indentation but without a
designator, use `""' (two doublequotes) as the second argument.
+.
.IP
For example, the following paragraphs were all set up with bullets as the
-designator, using `.IP\ \\(bu\ 4':
+designator, using `.IP\ \\(bu\ 4'.
+The whole block has been enclosed with `.RS' and `.RE' to set the left
+margin temporarily to the current indentation value.
+.
.RS
.IP \(bu 4
.B IP
@@ -244,16 +339,24 @@ This macro produces a paragraph with a left hanging indentation.
is another.
This macro produces an unindented label followed by an indented paragraph.
.RE
+.
.TP
.BI ".HP [" nnn ]
-Sets up a paragraph with hanging left indentation.
+Set up a paragraph with hanging left indentation.
The indentation is set to
.I nnn
-if that argument is supplied (default unit is `n'), otherwise the default
-indentation value is used.
+if that argument is supplied (the default unit is `n' if omitted), otherwise
+it is set to the previous indentation value specified with
+.BR TP ,
+.BR IP ,
+or
+.B HP
+(or to the default value if none of them have been used yet).
Font size and face are reset to its default values.
The following paragraph illustrates the effect of this macro with hanging
-indentation set to\ 4:
+indentation set to\ 4 (enclosed by `.RS' and `.RE' to set the left margin temporarily to
+the current indentation):
+.
.RS
.HP 4
This is a paragraph following an invocation of the
@@ -262,25 +365,37 @@ macro.
As you can see, it produces a paragraph where all lines but the first are
indented.
.RE
+.
.TP
.BI ".RS [" nnn ]
This macro moves the left margin to the right by the value
.I nnn
-if specified (default unit is `n'); otherwise the default indentation value
-is used.
+if specified (default unit is `n'); otherwise it is set to the previous
+indentation value specified with
+.BR TP ,
+.BR IP ,
+or
+.B HP
+(or to the default value if none of them have been used yet).
+The indentation value is then set to the default.
+.
+.IP
Calls to the
.B RS
macro can be nested.
+.
.TP
.BI ".RE [" nnn ]
This macro moves the left margin back to level
-.IR nnn ;
-if no argument is given, it moves one level back.
+.IR nnn ,
+restoring the previous left margin.
+If no argument is given, it moves one level back.
The first level (i.e., no call to
.B RS
yet) has number\ 1, and each call to
.B RS
increases the level by\ 1.
+.
.PP
To summarize, the following macros cause a line break with the insertion of
vertical space (which amount can be changed with the
@@ -300,27 +415,24 @@ 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 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 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.
@@ -333,59 +445,71 @@ Thus
would cause `this' and `that' to appear in bold face, while `word and'
appears in italics.
.RE
+.
.TP
.BI ".IB " text
Causes text to appear alternately in italic and bold face.
The text must be on the same line as the macro call.
+.
.TP
.BI ".RI " text
Causes text on the same line to appear alternately in roman and italic.
The text must be on the same line as the macro call.
+.
.TP
.BI ".IR " text
Causes text on the same line to appear alternately in italic and roman.
The text must be on the same line as the macro call.
+.
.TP
.BI ".BR " text
Causes text on the same line to appear alternately in bold face and roman.
The text must be on the same line as the macro call.
+.
.TP
.BI ".RB " text
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 ".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
+If no text is present on the line where the macro is called the text
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
+If no text is present on the line where the macro is called the text
of the next input line appears in italic.
.
+.
+.\" -----------------------------------------------------------------
+.
.SH "MISCELLANEOUS"
.
-The default indentation is 7.2n for all output devices except for
+The default indentation is 7.2n in troff mode and 7n in nroff mode except for
.B grohtml
which ignores indentation.
+.
.TP
.B .DT
-Sets tabs every 0.5 inches.
+Set tabs every 0.5 inches.
Since this macro is always called during a
.B TH
request, it makes sense to call it only if the tab positions have been
changed.
+.
.TP
.BI ".PD [" nnn ]
-Adjusts the empty space before a new paragraph (resp. section).
-The optional argument gives the amount of space (default units are `v');
-without parameter, the value is reset to its default value (1\ line for tty
-devices, 0.4v\ otherwise).
+Adjust the empty space before a new paragraph or section.
+The optional argument gives the amount of space (default unit is `v');
+without parameter, the value is reset to its default value (1\ line in
+nroff mode, 0.4v\ otherwise).
This affects the macros
.BR SH ,
.BR SS ,
@@ -398,23 +522,55 @@ and
.BR IP ,
and
.BR HP .
+.
+.TP
+.BI ".AT [" system " [" release ]]
+Alter the footer for use with AT&T manpages.
+This command exists only for compatibility; don't use it.
+See the groff info manual for more.
+.
+.TP
+.BI ".UC [" version ]
+Alter the footer for use with BSD manpages.
+This command exists only for compatibility; don't use it.
+See the groff info manual for more.
+.
+.TP
+.B ".PT"
+Print the header string.
+Redefine this macro to get control of the header.
+.
+.TP
+.B ".BT"
+Print the footer string.
+Redefine this macro to get control of the footer.
+.
.PP
The following strings are defined:
.TP
.B \e*S
Switch back to the default font size.
+.
.TP
.B \e*R
The `registered' sign.
+.
.TP
.B \e*(Tm
The `trademark' sign.
+.
.TP
.B \e*(lq
.TQ
.B \e*(rq
Left and right quote.
This is equal to `\e(lq' and `\e(rq', respectively.
+.
+.TP
+.B \e*(HF
+The typeface used to print headings and subheadings.
+The default is `B'.
+.
.PP
If a preprocessor like
.B @g@tbl
@@ -440,6 +596,9 @@ Modern implementations of the
program read this first line and automatically call the right
preprocessor(s).
.
+.
+.\" -----------------------------------------------------------------
+.
.SH FILES
.TP
.B man.tmac
@@ -463,6 +622,9 @@ macros are contained in this file.
.B man.local
Local changes and customizations should be put into this file.
.
+.
+.\" -----------------------------------------------------------------
+.
.SH "SEE ALSO"
.
Since the
@@ -474,16 +636,17 @@ requests, one can, in principle, supplement the functionality of the
macros with individual
.I groff
requests where necessary.
-A complete list of these requests is available on the WWW at
-.PP
-.ce 1
-http://www.cs.pdx.edu/~trent/gnu/groff/groff_toc.html
+See the groff info pages for a complete reference of all requests.
+.
.PP
.BR @g@tbl (@MAN1EXT@),
.BR @g@eqn (@MAN1EXT@),
.BR @g@refer (@MAN1EXT@),
.BR man (1)
.
+.
+.\" -----------------------------------------------------------------
+.
.SH AUTHOR
.
This manual page was originally written for the Debian GNU/Linux system by
diff --git a/contrib/groff/tmac/groff_mdoc.man b/contrib/groff/tmac/groff_mdoc.man
index 5033cb5..e39df7a 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 October 07, 2002
+.Dd February 27, 2003
.Os
.Dt GROFF_MDOC 7
.
@@ -778,14 +778,27 @@ By default, the following architecture keywords are defined:
.Ed
.Pp
.
+If the section number is neither a numeric expression in the range 1 to\~9
+nor one of the above described keywords, the third parameter is used
+verbatim as the volume name.
+.Pp
In the following examples, the left (which is identical to the right) and
the middle part of the manual page header strings are shown.
+Note how
+.Ql \e&
+prevents the digit\~1 from being a valid numeric expression.
.
.Bd -ragged
.Bl -tag -width ".Li .Dt\ FOO\ 2\ i386" -compact -offset indent
.It Li ".Dt FOO 7"
.Ql FOO(7)
.Ql \*[volume-operating-system] \*[volume-ds-7]
+.It Li ".Dt FOO 7 bar"
+.Ql FOO(7)
+.Ql \*[volume-operating-system] \*[volume-ds-7]
+.It Li ".Dt FOO \e&7 bar"
+.Ql FOO(7)
+.Ql bar
.It Li ".Dt FOO 2 i386"
.Ql FOO(2)
.Ql \*[volume-operating-system]/\*[volume-as-i386] \*[volume-ds-2]
@@ -3064,11 +3077,13 @@ display must be ended with the
macro.
It has the following syntax:
.Pp
+.Bd -ragged -compact
.Bl -tag -width ".Li .Bd" -offset indent
.It Li .Bd Xo
.Bro \-literal | \-filled | \-unfilled | \-ragged | \-centered Brc
.Oo \-offset Ao string Ac Oc Oo \-file Ao file name Ac Oc Oo \-compact Oc Xc
.El
+.Ed
.Pp
.
.Bl -tag -width ".Fl file Ao Ar file name Ac " -compact
@@ -3194,6 +3209,7 @@ Most of this document has been formatted with a tag style list
It has the following syntax forms:
.
.Pp
+.Bd -ragged -compact
.Bl -tag -width ".Li .Bl" -offset indent -compact
.It Li .Bl Xo
.Bro \-hang | \-ohang | \-tag | \-diag | \-inset Brc
@@ -3206,6 +3222,7 @@ It has the following syntax forms:
.Bro \-item | \-enum Oo \-nested Oc | \-bullet | \-hyphen | \-dash Brc
.Oo \-offset Ao string Ac Oc Oo \-compact Oc Xc
.El
+.Ed
.Pp
.
And now a detailed description of the list types.
diff --git a/contrib/groff/tmac/html-end.tmac b/contrib/groff/tmac/html-end.tmac
new file mode 100644
index 0000000..0199d201
--- /dev/null
+++ b/contrib/groff/tmac/html-end.tmac
@@ -0,0 +1,25 @@
+.\" html-end.tmac
+.\"
+.nr _C \n(.C
+.cp 0
+.
+.\" turn off all headers and footers for ms, me, and mm macro sets
+.if d EF .EF ''''
+.if d EH .EH ''''
+.if d OF .OF ''''
+.if d OH .OH ''''
+.if d ef .ef ''''
+.if d of .of ''''
+.if d oh .oh ''''
+.if d eh .eh ''''
+.tl ''''
+.
+.\" tell grohtml some default parameter values
+.pl 99999i
+.po 0
+.ll \n[.l]u
+.ta \n[.tabs]
+.
+.cp \n(_C
+.
+.\" end of file, make sure this is the last line
diff --git a/contrib/groff/tmac/html.tmac b/contrib/groff/tmac/html.tmac
index cd30c28..7843a3c 100644
--- a/contrib/groff/tmac/html.tmac
+++ b/contrib/groff/tmac/html.tmac
@@ -23,193 +23,25 @@
.\"
.\" remove hyphenation
.\"
+.nh
+.nr HY 0
+.
.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 ''''
-.if d OF .OF ''''
-.if d OH .OH ''''
-.if d ef .ef ''''
-.if d of .of ''''
-.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]
.
-.pl 99999
+.\" Now set any characters defined in devps/S but not in devhtml to nul --
+.\" these are generated by eqn but not used by grohtml. grops generated
+.\" images during the alternative pass.
+.if !c\[radicalex] .tr \[radicalex]
+.if !c\[arrowverttp] .tr \[arrowverttp]
+.if !c\[arrowvertbt] .tr \[arrowvertbt]
+.if !c\[arrowvertex] .tr \[arrowvertex]
+.if !c\[barex] .tr \[barex]
.
.\" now for the color definitions
.\"
@@ -700,14 +532,14 @@
.
.cp \n(_C
.
-.if !\n(_C \
+.if !\n(_C \{\
. mso pspic.tmac
+. mso www.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 26a4332..86e113c 100644
--- a/contrib/groff/tmac/hyphen.us
+++ b/contrib/groff/tmac/hyphen.us
@@ -1,4 +1,7 @@
% The Plain TeX hyphenation tables [NOT TO BE CHANGED IN ANY WAY!]
+% Unlimited copying and redistribution of this file are permitted as long
+% as this file is not modified. Modifications are permitted, but only if
+% the resulting file is not named hyphen.tex.
\patterns{ % just type <return> if you're not using INITEX
.ach4
.ad4der
diff --git a/contrib/groff/tmac/hyphenex.pl b/contrib/groff/tmac/hyphenex.pl
new file mode 100644
index 0000000..310f9b0
--- /dev/null
+++ b/contrib/groff/tmac/hyphenex.pl
@@ -0,0 +1,78 @@
+#! /usr/bin/perl
+#
+#
+# hyphenex.pl
+#
+# This small filter converts a hyphenation exception log article for
+# TUGBoat to a real \hyphenation block.
+#
+# Written by Werner Lemberg <wl@gnu.org>.
+#
+# Version 1.1 (2003/04/17)
+#
+# Public domain.
+#
+#
+# Usage:
+#
+# [perl] hyphenex.pl < tugboat-article > hyphenation-exceptions
+
+# print header
+print "% Hyphenation exceptions for US English,\n";
+print "% based on the hyphenation exception log article in TUGBoat.\n";
+print "%\n";
+print "% This is an automatically generated file. Do not edit!\n";
+print "%\n";
+print "% Please contact Barbara Beeton <bnb\@ams.org>\n";
+print "% for corrections and omissions.\n";
+print "\n";
+print "\\hyphenation{\n";
+
+while (<>) {
+ # retain only lines starting with \1 ... \6 or \tabalign
+ next if not (m/^\\[123456]/ || m/^\\tabalign/);
+ # remove final newline
+ chop;
+ # remove all TeX commands except \1 ... \6
+ s/\\[^123456\s{]+//g;
+ # remove all paired { ... }
+ 1 while s/{(.*?)}/\1/g;
+ # skip lines which now have only whitespace before `&'
+ next if m/^\s*&/;
+ # remove comments
+ s/%.*//;
+ # remove trailing whitespace
+ s/\s*$//;
+ # remove trailing `*' (used as a marker in the document)
+ s/\*$//;
+ # split at whitespace
+ @field = split(' ');
+ if ($field[0] eq "\\1" || $field[0] eq "\\4") {
+ print " $field[2]\n";
+ }
+ elsif ($field[0] eq "\\2" || $field[0] eq "\\5") {
+ print " $field[2]\n";
+ # handle multiple suffixes separated by commata
+ @suffix_list = split(/,/, "$field[3]");
+ foreach $suffix (@suffix_list) {
+ print " $field[2]$suffix\n";
+ }
+ }
+ elsif ($field[0] eq "\\3" || $field[0] eq "\\6") {
+ # handle multiple suffixes separated by commata
+ @suffix_list = split(/,/, "$field[3],$field[4]");
+ foreach $suffix (@suffix_list) {
+ print " $field[2]$suffix\n";
+ }
+ }
+ else {
+ # for `&', split at `&' with trailing whitespace
+ @field = split(/&\s*/);
+ print " $field[1]\n";
+ }
+}
+
+# print trailer
+print "}\n";
+print "\n";
+print "% EOF\n";
diff --git a/contrib/groff/tmac/hyphenex.us b/contrib/groff/tmac/hyphenex.us
new file mode 100644
index 0000000..69ca757
--- /dev/null
+++ b/contrib/groff/tmac/hyphenex.us
@@ -0,0 +1,896 @@
+% Hyphenation exceptions for US English, based on the hyphenation exception
+% log article in TUGBoat.
+%
+% This is an automatically generated file. Do not edit!
+
+\hyphenation{
+ acad-e-my
+ acad-e-mies
+ ac-cu-sa-tive
+ acryl-amide
+ acryl-alde-hyde
+ add-a-ble
+ add-i-ble
+ adren-a-line
+ aero-space
+ aero-spaces
+ af-ter-thought
+ af-ter-thoughts
+ agron-o-mist
+ agron-o-mists
+ al-ge-bra-i-cal-ly
+ am-phet-a-mine
+ an-a-lyse
+ an-a-lysed
+ analy-ses
+ an-isot-ropy
+ an-isot-ro-pism
+ an-iso-trop-ic
+ an-iso-trop-i-cal-ly
+ anom-aly
+ anom-alies
+ an-ti-deriv-a-tive
+ an-ti-deriv-a-tives
+ an-tin-o-my
+ an-tin-o-mies
+ an-ti-nu-clear
+ an-ti-nu-cle-on
+ an-ti-rev-o-lu-tion-ary
+ apoth-e-o-ses
+ apoth-e-o-sis
+ ap-pen-dix
+ ar-chi-me-dean
+ ar-chi-pel-ago
+ ar-chive
+ ar-chives
+ ar-chiv-ing
+ ar-chiv-ist
+ ar-chiv-ists
+ ar-che-typ-al
+ ar-che-typ-i-cal
+ arc-tan-gent
+ as-sign-a-ble
+ as-sign-or
+ as-sign-ors
+ as-sist-ant-ship
+ as-sist-ant-ships
+ asymp-to-matic
+ as-ymp-tot-ic
+ asyn-chro-nous
+ ath-er-o-scle-ro-sis
+ at-mos-phere
+ at-mos-pheres
+ at-trib-uted
+ at-trib-ut-able
+ au-to-ma-tion
+ au-tom-a-ton
+ au-tom-a-ta
+ av-oir-du-pois
+ band-leader
+ band-leaders
+ bank-rupt
+ bank-rupt-cy
+ bar-onies
+ base-line-skip
+ ba-thym-e-try
+ bathy-scaphe
+ bean-ies
+ be-hav-iour
+ be-hav-iours
+ bevies
+ bib-li-og-ra-phy-style
+ bi-dif-fer-en-tial
+ big-gest
+ bill-able
+ bio-math-e-mat-ics
+ bio-med-i-cine
+ bio-rhythms
+ bit-map
+ bit-maps
+ bland-er
+ bland-est
+ blind-er
+ blondes
+ blue-print
+ blue-prints
+ bo-lom-e-ter
+ bor-no-log-i-cal
+ bot-u-lism
+ brusquer
+ busier
+ busiest
+ bussing
+ butted
+ buzz-word
+ buzz-words
+ ca-coph-o-ny
+ ca-coph-o-nies
+ cam-era-men
+ cart-wheel
+ cart-wheels
+ ca-tarrhs
+ cat-a-stroph-ic
+ cat-a-stroph-i-cally
+ cat-e-noid
+ cat-e-noids
+ cau-li-flow-er
+ cau-li-flow-ers
+ chap-ar-ral
+ chap-ar-rals
+ char-treuse
+ char-treuses
+ chemo-ther-apy
+ chemo-ther-a-pies
+ cho-les-teric
+ cig-a-rette
+ cig-a-rettes
+ cinque-foil
+ co-gnac
+ co-gnacs
+ co-ker-nel
+ co-ker-nels
+ col-lin-ea-tion
+ col-umns
+ com-par-and
+ com-par-ands
+ com-pen-dium
+ com-po-nent-wise
+ comp-trol-ler
+ comp-trol-lers
+ con-form-able
+ con-form-ist
+ con-form-ists
+ con-form-ity
+ con-gress
+ con-gresses
+ con-trib-ute
+ con-trib-utes
+ con-trib-uted
+ co-se-cant
+ co-tan-gent
+ cour-ses
+ crank-shaft
+ croc-o-dile
+ croc-o-diles
+ cross-hatch
+ cross-hatched
+ cryp-to-gram
+ cryp-to-grams
+ cu-nei-form
+ cu-nei-forms
+ dachs-hund
+ dactyl-o-gram
+ dactyl-o-graph
+ data-base
+ data-bases
+ data-path
+ data-paths
+ date-stamp
+ date-stamps
+ de-clar-able
+ de-fin-i-tive
+ de-lec-ta-ble
+ demi-semi-qua-ver
+ demi-semi-qua-vers
+ de-moc-ra-tism
+ demos
+ de-riv-a-tive
+ de-riv-a-tives
+ dia-lec-tic
+ dia-lec-tics
+ dia-lec-ti-cian
+ dia-lec-ti-cians
+ dif-fract
+ direr
+ dire-ness
+ dis-par-and
+ dis-par-ands
+ dis-traught-ly
+ dis-trib-ute
+ dis-trib-uted
+ dou-ble-space
+ dou-ble-spac-ing
+ doll-ish
+ drift-age
+ driv-ers
+ drom-e-dary
+ drom-e-daries
+ du-op-o-list
+ du-op-o-lists
+ du-op-oly
+ dys-lexia
+ dys-lec-tic
+ east-end-ers
+ eco-nom-ics
+ econ-o-mist
+ econ-o-mists
+ ei-gen-class
+ ei-gen-classes
+ ei-gen-val-ue
+ ei-gen-val-ues
+ electro-mechan-i-cal
+ electro-mechano-acoustic
+ elit-ist
+ elit-ists
+ en-tre-pre-neur
+ en-tre-pre-neur-ial
+ ep-i-neph-rine
+ equi-vari-ant
+ equi-vari-ance
+ eth-yl-ene
+ ever-si-ble
+ evert
+ everts
+ evert-ed
+ evert-ing
+ ex-quis-ite
+ ex-tra-or-di-nary
+ fermi-ons
+ fi-nite-ly
+ fla-gel-lum
+ fla-gel-la
+ flam-ma-bles
+ fledg-ling
+ flow-chart
+ flow-charts
+ for-mi-da-ble
+ for-mi-da-bly
+ for-syth-ia
+ forth-right
+ free-loader
+ free-loaders
+ friend-lier
+ fri-vol-ity
+ fri-vol-i-ties
+ friv-o-lous
+ ga-lac-tic
+ gal-axy
+ gal-ax-ies
+ gas-om-e-ter
+ ge-o-des-ic
+ ge-o-det-ic
+ geo-met-ric
+ geo-met-rics
+ ge-ot-ro-pism
+ gno-mon
+ griev-ance
+ griev-ous
+ griev-ous-ly
+ hair-style
+ hair-styles
+ hair-styl-ist
+ half-space
+ half-spaces
+ half-way
+ har-bin-ger
+ har-bin-gers
+ har-le-quin
+ har-le-quins
+ hatch-eries
+ hemi-demi-semi-qua-ver
+ hemi-demi-semi-qua-vers
+ he-mo-glo-bin
+ he-mo-phil-ia
+ hemo-rhe-ol-ogy
+ he-pat-ic
+ her-maph-ro-dite
+ her-maph-ro-dit-ic
+ he-roes
+ hexa-dec-i-mal
+ ho-lo-no-my
+ ho-meo-mor-phic
+ ho-meo-mor-phism
+ ho-mo-thetic
+ horse-rad-ish
+ hy-po-thal-a-mus
+ ideals
+ ideo-graphs
+ idio-syn-crasy
+ idio-syn-cras-ies
+ ig-nit-er
+ ig-nit-ers
+ ig-ni-tor
+ ignore-spaces
+ im-ped-ances
+ in-du-bi-ta-ble
+ in-fin-ite-ly
+ in-fin-i-tes-i-mal
+ in-fra-struc-ture
+ in-fra-struc-tures
+ in-ter-dis-ci-pli-nary
+ in-ter-ga-lac-tic
+ in-utile
+ in-util-i-ty
+ ir-re-duc-ible
+ ir-rev-o-ca-ble
+ isot-ropy
+ iso-trop-ic
+ itin-er-ary
+ itin-er-ar-ies
+ je-re-mi-ads
+ key-stroke
+ key-strokes
+ kiln-ing
+ lac-i-est
+ lam-en-ta-ble
+ land-scap-er
+ land-scap-ers
+ lar-ce-ny
+ lar-ce-n-ist
+ leaf-hop-per
+ leaf-hop-pers
+ let-ter-spac-ing
+ life-span
+ life-spans
+ life-style
+ life-styles
+ light-weight
+ lim-ou-sines
+ line-backer
+ line-spacing
+ li-on-ess
+ lith-o-graphed
+ lith-o-graphs
+ lo-bot-omy
+ lo-bot-om-ize
+ loges
+ long-est
+ lo-quac-ity
+ macro-eco-nomics
+ mal-a-prop-ism
+ man-u-script
+ mar-gin-al
+ math-e-ma-ti-cian
+ math-e-ma-ti-cians
+ mattes
+ med-ic-aid
+ medi-ocre
+ medi-oc-ri-ties
+ mega-lith
+ mega-liths
+ meta-bol-ic
+ me-tab-o-lism
+ me-tab-o-lisms
+ meta-lan-guage
+ meta-lan-guages
+ meta-phor-ic
+ me-trop-o-lis
+ me-trop-o-lis-es
+ met-ro-pol-i-tan
+ met-ro-pol-i-tans
+ micro-eco-nomics
+ mi-cro-fiche
+ mi-cro-fiches
+ micro-organ-ism
+ micro-organ-isms
+ mill-age
+ mil-li-liter
+ mimeo-graphed
+ mimeo-graphs
+ mim-ic-ries
+ min-is
+ mini-sym-po-sium
+ mini-sym-po-sia
+ mi-nut-er
+ mi-nut-est
+ mis-chie-vous-ly
+ mi-sers
+ mi-sog-a-my
+ mod-el-ling
+ mol-e-cule
+ mol-e-cules
+ mon-archs
+ money-len-der
+ money-len-ders
+ mono-chrome
+ mono-en-er-getic
+ mon-oid
+ mono-pole
+ mono-poles
+ mo-nop-oly
+ mono-spline
+ mono-splines
+ mono-strofic
+ mo-not-o-nies
+ mo-not-o-nous
+ mo-ron-ism
+ mo-ron-isms
+ mos-qui-to
+ mos-qui-tos
+ mos-qui-toes
+ mud-room
+ mud-rooms
+ mul-ti-fac-eted
+ mul-ti-plic-able
+ multi-user
+ neo-fields
+ neo-nazi
+ neo-nazis
+ new-est
+ news-let-ter
+ news-let-ters
+ no-name
+ non-ar-ith-met-ic
+ non-emer-gency
+ non-equi-vari-ance
+ none-the-less
+ non-euclid-ean
+ non-iso-mor-phic
+ non-pseudo-com-pact
+ non-smooth
+ non-uni-form
+ non-uni-form-ly
+ nor-ep-i-neph-rine
+ not-with-stand-ing
+ nu-cleo-tide
+ nu-cleo-tides
+ nut-crack-er
+ nut-crack-ers
+ oer-steds
+ oli-gop-o-list
+ oli-gop-o-lists
+ oli-gop-oly
+ oli-gop-ol-ies
+ op-er-and
+ op-er-ands
+ orang-utan
+ orang-utans
+ or-tho-don-tist
+ or-tho-don-tists
+ or-tho-ker-a-tol-ogy
+ ortho-nitro-toluene
+ over-view
+ over-views
+ ox-id-ic
+ pad-ding
+ pain-less-ly
+ palmate
+ par-a-bola
+ par-a-bol-ic
+ pa-rab-o-loid
+ par-a-digm
+ par-a-digms
+ para-chute
+ para-chutes
+ para-di-methyl-benzene
+ para-fluoro-toluene
+ para-graph-er
+ para-le-gal
+ par-al-lel-ism
+ para-mag-net-ism
+ para-medic
+ para-methyl-anisole
+ pa-ram-e-trize
+ para-mil-i-tary
+ para-mount
+ path-o-gen-ic
+ peev-ish
+ peev-ish-ness
+ pen-ta-gon
+ pen-ta-gons
+ pe-tro-le-um
+ phe-nom-e-non
+ phenyl-ala-nine
+ phi-lat-e-list
+ phi-lat-e-lists
+ pho-neme
+ pho-nemes
+ pho-ne-mic
+ phos-phor-ic
+ pho-to-graphs
+ pho-to-off-set
+ pho-to-off-sets
+ pic-a-dor
+ pipe-line
+ pipe-lines
+ pi-ra-nhas
+ placa-ble
+ plant-hop-per
+ plant-hop-pers
+ pleas-ance
+ plug-in
+ plug-ins
+ pol-ter-geist
+ poly-ene
+ poly-eth-yl-ene
+ po-lyg-a-mist
+ po-lyg-a-mists
+ polyg-on-i-za-tion
+ po-lyph-o-nous
+ poly-styrene
+ pome-gran-ate
+ poro-elas-tic
+ por-ous
+ por-ta-ble
+ post-am-ble
+ post-am-bles
+ post-hu-mous
+ post-script
+ post-scripts
+ pos-tur-al
+ pre-am-ble
+ pre-am-bles
+ pre-loaded
+ pre-par-ing
+ pre-print
+ pre-prints
+ pre-proces-sor
+ pre-proces-sors
+ pre-split-ting
+ priest-esses
+ pret-ty-prin-ter
+ pret-ty-prin-ting
+ pro-ce-dur-al
+ process
+ pro-cur-ance
+ prog-e-nies
+ prog-e-ny
+ pro-hib-i-tive
+ pro-hib-i-tive-ly
+ pro-sciut-to
+ pro-test-er
+ pro-test-ers
+ pro-tes-tor
+ pro-tes-tors
+ pro-to-lan-guage
+ pro-to-typ-al
+ prov-ince
+ prov-inces
+ pro-vin-cial
+ pseu-do-dif-fer-en-tial
+ pseu-do-fi-nite
+ pseu-do-fi-nite-ly
+ pseu-do-forces
+ pseu-dog-ra-pher
+ pseu-do-group
+ pseu-do-groups
+ pseu-do-nym
+ pseu-do-nyms
+ pseu-do-word
+ pseu-do-words
+ psy-che-del-ic
+ psychs
+ pu-bes-cence
+ quad-ding
+ qua-drat-ic
+ qua-drat-ics
+ quad-ra-ture
+ quad-ri-pleg-ic
+ quaint-er
+ quaint-est
+ qua-si-equiv-a-lence
+ qua-si-equiv-a-lences
+ qua-si-hy-po-nor-mal
+ qua-si-rad-i-cal
+ qua-si-resid-ual
+ qua-si-smooth
+ qua-si-sta-tion-ary
+ qua-si-topos
+ qua-si-tri-an-gu-lar
+ quin-tes-sence
+ quin-tes-sences
+ quin-tes-sen-tial
+ rab-bit-ry
+ ra-di-og-ra-phy
+ raff-ish
+ raff-ish-ly
+ ram-shackle
+ rav-en-ous
+ re-arrange-ment
+ re-arrange-ments
+ rec-i-proc-i-ties
+ rec-i-proc-i-ty
+ rec-tan-gle
+ rec-tan-gles
+ re-di-rect
+ re-di-rect-ion
+ re-duc-ible
+ re-echo
+ re-po-si-tion
+ re-po-si-tions
+ re-print
+ re-prints
+ re-stor-able
+ retro-fit
+ retro-fit-ted
+ re-us-able
+ re-use
+ re-wire
+ re-write
+ rhi-noc-er-os
+ right-eous
+ right-eous-ness
+ ring-leader
+ ring-leaders
+ ro-bot
+ ro-bots
+ ro-bot-ics
+ round-table
+ round-tables
+ sales-clerk
+ sales-clerks
+ sales-woman
+ sales-women
+ sal-mo-nel-la
+ sal-ta-tion
+ sar-sa-par-il-la
+ sauer-kraut
+ scat-o-log-i-cal
+ sched-ul-ing
+ schiz-o-phrenic
+ schnau-zer
+ school-child
+ school-child-ren
+ school-teacher
+ school-teach-ers
+ scru-ti-ny
+ scyth-ing
+ sec-re-tar-iat
+ sec-re-tar-iats
+ sem-a-phore
+ sem-a-phores
+ se-mes-ter
+ semi-def-i-nite
+ semi-di-rect
+ semi-ho-mo-thet-ic
+ semi-ring
+ semi-rings
+ semi-sim-ple
+ semi-skilled
+ sero-epi-de-mi-o-log-i-cal
+ ser-vo-mech-anism
+ ser-vo-mech-anisms
+ ses-qui-pe-da-lian
+ set-up
+ set-ups
+ se-vere-ly
+ shape-able
+ shoe-string
+ shoe-strings
+ side-step
+ side-steps
+ side-swipe
+ sky-scraper
+ sky-scrapers
+ smoke-stack
+ smoke-stacks
+ snor-kel-ing
+ so-le-noid
+ so-le-noids
+ solute
+ solutes
+ sov-er-eign
+ sov-er-eigns
+ spa-ces
+ spe-cious
+ spe-lunk-er
+ spend-thrift
+ spher-oid
+ spher-oid-al
+ sphin-ges
+ spic-i-ly
+ spin-ors
+ spokes-woman
+ spokes-women
+ sports-cast
+ sports-cast-er
+ spor-tive-ly
+ sports-wear
+ sports-writer
+ sports-writers
+ spright-lier
+ squea-mish
+ stand-alone
+ star-tling
+ star-tling-ly
+ sta-tis-tics
+ stealth-ily
+ steeple-chase
+ stereo-graph-ic
+ sto-chas-tic
+ strange-ness
+ strap-hanger
+ strat-a-gem
+ strat-a-gems
+ stretch-i-er
+ strong-hold
+ strong-est
+ stu-pid-er
+ stu-pid-est
+ sub-dif-fer-en-tial
+ sum-ma-ble
+ super-ego
+ super-egos
+ su-prema-cist
+ su-prema-cists
+ sur-veil-lance
+ swim-ming-ly
+ symp-to-matic
+ syn-chro-mesh
+ syn-chro-nous
+ syn-chro-tron
+ talk-a-tive
+ ta-pes-try
+ ta-pes-tries
+ tar-pau-lin
+ te-leg-ra-pher
+ tele-ki-net-ic
+ tele-ro-bot-ics
+ tem-po-rar-ily
+ ten-ure
+ test-bed
+ text-width
+ text-widths
+ thal-a-mus
+ ther-mo-elas-tic
+ time-stamp
+ time-stamps
+ tool-kit
+ tool-kits
+ topo-graph-i-cal
+ toques
+ trai-tor-ous
+ trans-ceiver
+ trans-ceivers
+ trans-gress
+ trans-ver-sal
+ trans-ver-sals
+ trans-ves-tite
+ trans-ves-tites
+ tra-vers-a-ble
+ tra-ver-sal
+ tra-ver-sals
+ treach-eries
+ trou-ba-dour
+ tur-key
+ tur-keys
+ turn-around
+ turn-arounds
+ typ-al
+ un-at-tached
+ un-err-ing-ly
+ un-friend-ly
+ un-friend-li-er
+ vaguer
+ vaude-ville
+ vaude-villes
+ vic-ars
+ vil-lain-ess
+ vi-vip-a-rous
+ voice-print
+ vspace
+ wad-ding
+ wall-flower
+ wall-flow-ers
+ warm-est
+ waste-water
+ wave-guide
+ wave-let
+ wave-lets
+ web-like
+ week-night
+ week-nights
+ wheel-chair
+ wheel-chairs
+ which-ever
+ white-sided
+ white-space
+ white-spaces
+ wide-spread
+ wing-spread
+ witch-craft
+ word-spac-ing
+ work-around
+ work-arounds
+ work-horse
+ work-horses
+ wrap-around
+ wretch-ed
+ wretch-ed-ly
+ yes-ter-year
+ al-ge-brai-sche
+ Al-le-ghe-ny
+ Ar-kan-sas
+ Aus-tral-asian
+ auto-mati-sier-ter
+ Be-die-nung
+ Bembo
+ bib-li-o-gra-phi-sche
+ Bos-ton
+ Brown-ian
+ Bruns-wick
+ Bu-da-pest
+ Car-ib-bean
+ Charles-ton
+ Char-lottes-ville
+ Co-lum-bia
+ Czecho-slo-va-kia
+ Dijk-stra
+ dy-na-mi-sche
+ Eng-lish
+ Euler-ian
+ Evan-ston
+ Feb-ru-ary
+ Fest-schrift
+ Flor-i-da
+ For-schungs-in-sti-tut
+ funk-tsional
+ Gauss-ian
+ Greifs-wald
+ Grothen-dieck
+ Grund-leh-ren
+ Hai-fa
+ Hamil-ton-ian
+ Hel-sinki
+ Her-mit-ian
+ Hibbs
+ Hok-kai-do
+ Jan-u-ary
+ Ja-pa-nese
+ Kad-om-tsev
+ Kan-sas
+ Karls-ruhe
+ Kor-te-weg
+ Krishna
+ Krish-na-ism
+ Krish-nan
+ Lan-cas-ter
+ Le-gendre
+ Leices-ter
+ Lip-schitz
+ Lip-schitz-ian
+ Lou-i-si-ana
+ Man-ches-ter
+ Mar-kov-ian
+ Markt-ober-dorf
+ Mass-a-chu-setts
+ Min-ne-ap-o-lis
+ Min-ne-sota
+ Mos-cow
+ Nach-richten
+ Nash-ville
+ Nij-me-gen
+ Noe-ther-ian
+ Noord-wijker-hout
+ No-vem-ber
+ Pa-ler-mo
+ Pe-trov-ski
+ Phil-a-del-phia
+ Poin-care
+ Po-ten-tial-glei-chung
+ raths-kel-ler
+ Rie-mann-ian
+ Ryd-berg
+ schot-tische
+ Schro-ding-er
+ Schwa-ba-cher
+ Schwarz-schild
+ Sep-tem-ber
+ Stokes-sche
+ Stutt-gart
+ Sus-que-han-na
+ Tau-ber-ian
+ tech-ni-sche
+ Ten-nes-see
+ ty-po-graphique
+ Ukrain-ian
+ ver-all-ge-mein-erte
+ Ver-ein-i-gung
+ Ver-tei-lun-gen
+ viiith
+ viith
+ Wahr-schein-lich-keits-theo-rie
+ Wer-ther-ian
+ Win-ches-ter
+ Wirt-schaft
+ wis-sen-schaft-lich
+ xviiith
+ xviith
+ xxiiird
+ xxiind
+ Ying-yong Shu-xue Ji-suan
+ Zea-land
+ Zeit-schrift
+}
+
+% EOF
diff --git a/contrib/groff/tmac/latin1.tmac b/contrib/groff/tmac/latin1.tmac
index 01cb561..c521c28 100644
--- a/contrib/groff/tmac/latin1.tmac
+++ b/contrib/groff/tmac/latin1.tmac
@@ -2,104 +2,106 @@
.\"
.nr _C \n(.C
.cp 0
-.de latin1-tr
-. 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]
+.\" 0xA1
+.trin \[char161]\[r!]
+.trin \[char162]\[ct]
+.trin \[char163]\[Po]
+.trin \[char164]\[Cs]
+.trin \[char165]\[Ye]
+.trin \[char166]\[bb]
+.trin \[char167]\[sc]
+.trin \[char168]\[ad]
+.trin \[char169]\[co]
+.trin \[char170]\[Of]
+.trin \[char171]\[Fo]
+.trin \[char172]\[tno]
.\" 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]
+.trin \[char174]\[rg]
+.trin \[char175]\[a-]
+.\" 0xB0
+.trin \[char176]\[de]
+.trin \[char177]\[t+-]
+.trin \[char178]\[S2]
+.trin \[char179]\[S3]
+.trin \[char180]\[aa]
+.trin \[char181]\[mc]
+.trin \[char182]\[ps]
+.trin \[char183]\[pc]
+.trin \[char184]\[ac]
+.trin \[char185]\[S1]
+.trin \[char186]\[Om]
+.trin \[char187]\[Fc]
+.trin \[char188]\[14]
+.trin \[char189]\[12]
+.trin \[char190]\[34]
+.trin \[char191]\[r?]
+.\" 0xC0
+.trin \[char192]\[`A]
+.trin \[char193]\['A]
+.trin \[char194]\[^A]
+.trin \[char195]\[~A]
+.trin \[char196]\[:A]
+.trin \[char197]\[oA]
+.trin \[char198]\[AE]
+.trin \[char199]\[,C]
+.trin \[char200]\[`E]
+.trin \[char201]\['E]
+.trin \[char202]\[^E]
+.trin \[char203]\[:E]
+.trin \[char204]\[`I]
+.trin \[char205]\['I]
+.trin \[char206]\[^I]
+.trin \[char207]\[:I]
+.\" 0xD0
+.trin \[char208]\[-D]
+.trin \[char209]\[~N]
+.trin \[char210]\[`O]
+.trin \[char211]\['O]
+.trin \[char212]\[^O]
+.trin \[char213]\[~O]
+.trin \[char214]\[:O]
+.trin \[char215]\[tmu]
+.trin \[char216]\[/O]
+.trin \[char217]\[`U]
+.trin \[char218]\['U]
+.trin \[char219]\[^U]
+.trin \[char220]\[:U]
+.trin \[char221]\['Y]
+.trin \[char222]\[TP]
+.trin \[char223]\[ss]
+.\" 0xE0
+.trin \[char224]\[`a]
+.trin \[char225]\['a]
+.trin \[char226]\[^a]
+.trin \[char227]\[~a]
+.trin \[char228]\[:a]
+.trin \[char229]\[oa]
+.trin \[char230]\[ae]
+.trin \[char231]\[,c]
+.trin \[char232]\[`e]
+.trin \[char233]\['e]
+.trin \[char234]\[^e]
+.trin \[char235]\[:e]
+.trin \[char236]\[`i]
+.trin \[char237]\['i]
+.trin \[char238]\[^i]
+.trin \[char239]\[:i]
+.\" 0xF0
+.trin \[char240]\[Sd]
+.trin \[char241]\[~n]
+.trin \[char242]\[`o]
+.trin \[char243]\['o]
+.trin \[char244]\[^o]
+.trin \[char245]\[~o]
+.trin \[char246]\[:o]
+.trin \[char247]\[tdi]
+.trin \[char248]\[/o]
+.trin \[char249]\[`u]
+.trin \[char250]\['u]
+.trin \[char251]\[^u]
+.trin \[char252]\[:u]
+.trin \[char253]\['y]
+.trin \[char254]\[Tp]
+.trin \[char255]\[:y]
.cp \n[_C]
diff --git a/contrib/groff/tmac/latin2.tmac b/contrib/groff/tmac/latin2.tmac
new file mode 100644
index 0000000..ffdc39c
--- /dev/null
+++ b/contrib/groff/tmac/latin2.tmac
@@ -0,0 +1,107 @@
+.\" latin2.tmac
+.\"
+.nr _C \n(.C
+.cp 0
+.\" 0xA1
+.trin \[char161]\[A ho]
+.trin \[char162]\[ab]
+.trin \[char163]\[/L]
+.trin \[char164]\[Cs]
+.trin \[char165]\[L ah]
+.trin \[char166]\[S aa]
+.trin \[char167]\[sc]
+.trin \[char168]\[ad]
+.trin \[char169]\[vS]
+.trin \[char170]\[S ac]
+.trin \[char171]\[T ah]
+.trin \[char172]\[Z aa]
+.\" The soft-hyphen character is only an input character
+.tr \[char173]\%
+.trin \[char174]\[vZ]
+.trin \[char175]\[Z a.]
+.\" 0xB0
+.trin \[char176]\[de]
+.trin \[char177]\[a ho]
+.trin \[char178]\[ho]
+.trin \[char179]\[/l]
+.trin \[char180]\[aa]
+.trin \[char181]\[l ah]
+.trin \[char182]\[s aa]
+.trin \[char183]\[ah]
+.trin \[char184]\[ac]
+.trin \[char185]\[vs]
+.trin \[char186]\[s ac]
+.trin \[char187]\[t ah]
+.trin \[char188]\[z aa]
+.trin \[char189]\[a"]
+.trin \[char190]\[vz]
+.trin \[char191]\[z a.]
+.\" C0
+.trin \[char192]\[R aa]
+.trin \[char193]\['A]
+.trin \[char194]\[^A]
+.trin \[char195]\[A ab]
+.trin \[char196]\[:A]
+.trin \[char197]\[L aa]
+.trin \[char198]\[C aa]
+.trin \[char199]\[,C]
+.trin \[char200]\[C ah]
+.trin \[char201]\['E]
+.trin \[char202]\[E ho]
+.trin \[char203]\[:E]
+.trin \[char204]\[E ah]
+.trin \[char205]\['I]
+.trin \[char206]\[^I]
+.trin \[char207]\[D ah]
+.\" 0xD0
+.trin \[char208]\[u0110]
+.trin \[char209]\[N aa]
+.trin \[char210]\[N ah]
+.trin \[char211]\['O]
+.trin \[char212]\[^O]
+.trin \[char213]\[O a"]
+.trin \[char214]\[:O]
+.trin \[char215]\[tmu]
+.trin \[char216]\[R ah]
+.trin \[char217]\[U ao]
+.trin \[char218]\['U]
+.trin \[char219]\[U a"]
+.trin \[char220]\[:U]
+.trin \[char221]\['Y]
+.trin \[char222]\[T ac]
+.trin \[char223]\[ss]
+.\" 0xE0
+.trin \[char224]\[r aa]
+.trin \[char225]\['a]
+.trin \[char226]\[^a]
+.trin \[char227]\[a ab]
+.trin \[char228]\[:a]
+.trin \[char229]\[l aa]
+.trin \[char230]\[c aa]
+.trin \[char231]\[,c]
+.trin \[char232]\[c ah]
+.trin \[char233]\['e]
+.trin \[char234]\[e ho]
+.trin \[char235]\[:e]
+.trin \[char236]\[e ah]
+.trin \[char237]\['i]
+.trin \[char238]\[^i]
+.trin \[char239]\[d ah]
+.\" 0xF0
+.trin \[char240]\[u0111]
+.trin \[char241]\[n aa]
+.trin \[char242]\[n ah]
+.trin \[char243]\['o]
+.trin \[char244]\[^o]
+.trin \[char245]\[o a"]
+.trin \[char246]\[:o]
+.trin \[char247]\[tdi]
+.trin \[char248]\[r ah]
+.trin \[char249]\[u ao]
+.trin \[char250]\['u]
+.trin \[char251]\[u a"]
+.trin \[char252]\[:u]
+.trin \[char253]\['y]
+.trin \[char254]\[t ac]
+.trin \[char255]\[a.]
+.cp \n[_C]
diff --git a/contrib/groff/tmac/latin9.tmac b/contrib/groff/tmac/latin9.tmac
new file mode 100644
index 0000000..6d56232
--- /dev/null
+++ b/contrib/groff/tmac/latin9.tmac
@@ -0,0 +1,107 @@
+.\" latin9.tmac
+.\"
+.nr _C \n(.C
+.cp 0
+.\" 0xA1
+.trin \[char161]\[r!]
+.trin \[char162]\[ct]
+.trin \[char163]\[Po]
+.trin \[char164]\[Eu]
+.trin \[char165]\[Ye]
+.trin \[char166]\[vS]
+.trin \[char167]\[sc]
+.trin \[char168]\[vs]
+.trin \[char169]\[co]
+.trin \[char170]\[Of]
+.trin \[char171]\[Fo]
+.trin \[char172]\[tno]
+.\" The soft-hyphen character is only an input character
+.tr \[char173]\%
+.trin \[char174]\[rg]
+.trin \[char175]\[a-]
+.\" 0xB0
+.trin \[char176]\[de]
+.trin \[char177]\[t+-]
+.trin \[char178]\[S2]
+.trin \[char179]\[S3]
+.trin \[char180]\[vZ]
+.trin \[char181]\[mc]
+.trin \[char182]\[ps]
+.trin \[char183]\[pc]
+.trin \[char184]\[vz]
+.trin \[char185]\[S1]
+.trin \[char186]\[Om]
+.trin \[char187]\[Fc]
+.trin \[char188]\[OE]
+.trin \[char189]\[oe]
+.trin \[char190]\[:Y]
+.trin \[char191]\[r?]
+.\" 0xC0
+.trin \[char192]\[`A]
+.trin \[char193]\['A]
+.trin \[char194]\[^A]
+.trin \[char195]\[~A]
+.trin \[char196]\[:A]
+.trin \[char197]\[oA]
+.trin \[char198]\[AE]
+.trin \[char199]\[,C]
+.trin \[char200]\[`E]
+.trin \[char201]\['E]
+.trin \[char202]\[^E]
+.trin \[char203]\[:E]
+.trin \[char204]\[`I]
+.trin \[char205]\['I]
+.trin \[char206]\[^I]
+.trin \[char207]\[:I]
+.\" 0xD0
+.trin \[char208]\[-D]
+.trin \[char209]\[~N]
+.trin \[char210]\[`O]
+.trin \[char211]\['O]
+.trin \[char212]\[^O]
+.trin \[char213]\[~O]
+.trin \[char214]\[:O]
+.trin \[char215]\[tmu]
+.trin \[char216]\[/O]
+.trin \[char217]\[`U]
+.trin \[char218]\['U]
+.trin \[char219]\[^U]
+.trin \[char220]\[:U]
+.trin \[char221]\['Y]
+.trin \[char222]\[TP]
+.trin \[char223]\[ss]
+.\" 0xE0
+.trin \[char224]\[`a]
+.trin \[char225]\['a]
+.trin \[char226]\[^a]
+.trin \[char227]\[~a]
+.trin \[char228]\[:a]
+.trin \[char229]\[oa]
+.trin \[char230]\[ae]
+.trin \[char231]\[,c]
+.trin \[char232]\[`e]
+.trin \[char233]\['e]
+.trin \[char234]\[^e]
+.trin \[char235]\[:e]
+.trin \[char236]\[`i]
+.trin \[char237]\['i]
+.trin \[char238]\[^i]
+.trin \[char239]\[:i]
+.\" 0xF0
+.trin \[char240]\[Sd]
+.trin \[char241]\[~n]
+.trin \[char242]\[`o]
+.trin \[char243]\['o]
+.trin \[char244]\[^o]
+.trin \[char245]\[~o]
+.trin \[char246]\[:o]
+.trin \[char247]\[tdi]
+.trin \[char248]\[/o]
+.trin \[char249]\[`u]
+.trin \[char250]\['u]
+.trin \[char251]\[^u]
+.trin \[char252]\[:u]
+.trin \[char253]\['y]
+.trin \[char254]\[Tp]
+.trin \[char255]\[:y]
+.cp \n[_C]
diff --git a/contrib/groff/tmac/lbp.tmac b/contrib/groff/tmac/lbp.tmac
index e764122..9ac3be4 100644
--- a/contrib/groff/tmac/lbp.tmac
+++ b/contrib/groff/tmac/lbp.tmac
@@ -2,6 +2,7 @@
.\"
.nr _C \n(.C
.cp 0
+.
.ftr CW CR
.ftr C CR
.ftr CO CI
@@ -14,6 +15,72 @@
.ftr Hx HNBI
.ftr EBI EI
.ftr CBI CI
+.
+.fchar \[fi] fi
+.fchar \[fl] fl
+.fchar \[ff] ff
+.fchar \[Fi] f\[fi]
+.fchar \[Fl] f\[fl]
+.fchar \[OE] OE
+.fchar \[oe] oe
+.fchar \[IJ] IJ
+.fchar \[ij] ij
+.fchar \[.i] i
+.fchar \[lq] ``
+.fchar \[rq] ''
+.fchar \[fo] \v'-.1m'\s-3<\s+3\v'+.1m'
+.fchar \[fc] \v'-.1m'\s-3>\s+3\v'+.1m'
+.fchar \[em] \v'-.25m'\h'.05m'\D'l .9m 0'
+.
+.char \[or] \h'.1m'\Z'\D'l 0 -.675m''\h'.1m'
+.
+.\" This is designed so that \[ul], \[rn], and \[br] form corners.
+.char \[br] \Z'\v'.25m'\D'R .04m -1m''
+.char \[rn] \Z'\v'-.77m'\D'R .54m .04m''\h'.5m'
+.char \[ul] \Z'\v'.23m'\D'R .54m .04m''\h'.5m'
+.
+.char \[ru] \Z'\v'-.02m'\D'R .54m .04m''\h'.5m'
+.
+.fchar \[|=] \v'.075m'\Z'\[mi]'\v'-.15m'\[ap]\v'.075m'
+.
+.de lbp-achar
+. \" Note that character definitions are always interpreted with
+. \" compatibility mode off.
+. fchar \\$1 \
+\\$3\
+\k[acc]\
+\h'(u;-\w'\\$2'-\w'\\$3'/2+\\En[skw]+(\w'x'*0)-\\En[skw])'\
+\v'(u;\w'x'*0+\\En[rst]+(\w'\\$3'*0)-\\En[rst])'\
+\\$2\
+\v'(u;\w'x'*0-\\En[rst]+(\w'\\$3'*0)+\\En[rst])'\
+\h'|\\En[acc]u'
+. hcode \\$1\\$4
+..
+.
+.lbp-achar \['A] \' A a
+.lbp-achar \['C] \' C c
+.lbp-achar \['c] \' c c
+.lbp-achar \['I] \' I i
+.lbp-achar \['O] \' O o
+.lbp-achar \['U] \' U u
+.lbp-achar \['Y] \' Y y
+.lbp-achar \['y] \' y y
+.lbp-achar \[:E] \[ad] E e
+.lbp-achar \[:I] \[ad] I i
+.lbp-achar \[:Y] \[ad] Y y
+.lbp-achar \[^A] ^ A a
+.lbp-achar \[^E] ^ E e
+.lbp-achar \[^I] ^ I i
+.lbp-achar \[^O] ^ O o
+.lbp-achar \[^U] ^ U u
+.lbp-achar \[`A] \` A a
+.lbp-achar \[`E] \` E e
+.lbp-achar \[`I] \` I i
+.lbp-achar \[`O] \` O o
+.lbp-achar \[`U] \` U u
+.lbp-achar \[~O] ~ O o
+.lbp-achar \[~o] ~ o o
+.
.cp \n(_C
.
.do mso latin1.tmac
diff --git a/contrib/groff/tmac/lj4.tmac b/contrib/groff/tmac/lj4.tmac
index 524e935..9418023 100644
--- a/contrib/groff/tmac/lj4.tmac
+++ b/contrib/groff/tmac/lj4.tmac
@@ -14,11 +14,18 @@
.ftr HO UI
.ftr HX UBI
.
+.char \[or] \h'.1m'\Z'\D'l 0 -.675m''\h'.1m'
+.
.\" 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'
+.char \[br] \Z'\v'.25m'\D'R .04m -1m''
+.char \[rn] \Z'\v'-.77m'\D'R .54m .04m''\h'.5m'
+.char \[ul] \Z'\v'.23m'\D'R .54m .04m''\h'.5m'
+.
+.char \[ru] \Z'\v'-.02m'\D'R .54m .04m''\h'.5m'
+.
+.fchar \[OK] \s[\En[.s]*6u/10u]\[rs]\s[0]/
+.
+.fchar \[sqrtex] \[radicalex]
.
.cp \n[_C]
.
diff --git a/contrib/groff/tmac/papersize.tmac b/contrib/groff/tmac/papersize.tmac
new file mode 100644
index 0000000..fdfb580
--- /dev/null
+++ b/contrib/groff/tmac/papersize.tmac
@@ -0,0 +1,146 @@
+.\" papersize.tmac
+.\"
+.\" Set up groff for various paper sizes.
+.\"
+.\" Usage:
+.\"
+.\" groff ... -dpaper=<format> ...
+.\"
+.\" Possible values for `format' are the same as the predefined `papersize'
+.\" values (only lowercase; see the groff_font man page) except a7-d7.
+.\" An appended `l' (ell) character denotes landscape orientation.
+.\" Examples: `a4', `c3l', `letterl'.
+.\"
+.\" Most output drivers need additional command line switches `-p' and
+.\" `-l' to override the default paper length and orientation as set in
+.\" the driver specific DESC file.
+.\"
+.\" For example, use the following for PS output on A4 paper in landscape
+.\" orientation::
+.\"
+.\" groff -Tps -dpaper=a4l -P-pa4 -P-l -ms foo.ms > foo.ps
+.
+.nr _C \n(.C
+.cp 0
+.
+.if d paper \{\
+. ds paper-a0-length 118.9c
+. ds paper-a0-width 84.1c
+. ds paper-a1-length 84.1c
+. ds paper-a1-width 59.4c
+. ds paper-a2-length 59.4c
+. ds paper-a2-width 42c
+. ds paper-a3-length 42c
+. ds paper-a3-width 29.7c
+. ds paper-a4-length 29.7c
+. ds paper-a4-width 21c
+. ds paper-a5-length 21c
+. ds paper-a5-width 14.8c
+. ds paper-a6-length 14.8c
+. ds paper-a6-width 10.5c
+.
+. ds paper-b0-length 141.4c
+. ds paper-b0-width 100c
+. ds paper-b1-length 100c
+. ds paper-b1-width 70.7c
+. ds paper-b2-length 70.7c
+. ds paper-b2-width 50c
+. ds paper-b3-length 50c
+. ds paper-b3-width 35.3c
+. ds paper-b4-length 35.3c
+. ds paper-b4-width 25c
+. ds paper-b5-length 25c
+. ds paper-b5-width 17.6c
+. ds paper-b6-length 17.6c
+. ds paper-b6-width 12.5c
+.
+. ds paper-c0-length 129.7c
+. ds paper-c0-width 91.7c
+. ds paper-c1-length 91.7c
+. ds paper-c1-width 64.8c
+. ds paper-c2-length 64.8c
+. ds paper-c2-width 45.8c
+. ds paper-c3-length 45.8c
+. ds paper-c3-width 32.4c
+. ds paper-c4-length 32.4c
+. ds paper-c4-width 22.9c
+. ds paper-c5-length 22.9c
+. ds paper-c5-width 16.2c
+. ds paper-c6-length 16.2c
+. ds paper-c6-width 11.4c
+.
+. ds paper-d0-length 109.0c
+. ds paper-d0-width 77.1c
+. ds paper-d1-length 77.1c
+. ds paper-d1-width 54.5c
+. ds paper-d2-length 54.5c
+. ds paper-d2-width 38.5c
+. ds paper-d3-length 38.5c
+. ds paper-d3-width 27.2c
+. ds paper-d4-length 27.2c
+. ds paper-d4-width 19.2c
+. ds paper-d5-length 19.2c
+. ds paper-d5-width 13.6c
+. ds paper-d6-length 13.6c
+. ds paper-d6-width 9.6c
+.
+. ds paper-letter-length 11i
+. ds paper-letter-width 8.5i
+. ds paper-legal-length 14i
+. ds paper-legal-width 8.5i
+. ds paper-tabloid-length 17i
+. ds paper-tabloid-width 11i
+. ds paper-ledger-length 11i
+. ds paper-ledger-width 17i
+. ds paper-statement-length 8.5i
+. ds paper-statement-width 5.5i
+. ds paper-executive-length 10i
+. ds paper-executive-width 7.5i
+.
+. ds paper-com10-length 9.5i
+. ds paper-com10-width 4.125i
+. ds paper-monarch-length 7.5i
+. ds paper-monarch-width 3.875i
+. ds paper-dl-length 22c
+. ds paper-dl-width 11c
+.
+. ds paper-p \*[paper]
+. ds paper-l \*[paper]
+. length paper-n \*[paper]
+. if (\n[paper-n] > 1) \{\
+. substring paper-p 0 -2
+. substring paper-l -1 -1
+. if !d paper-\*[paper-p]-length \{\
+. ds paper-p \*[paper]
+. ds paper-l
+. \}
+. \}
+.
+. nr paper-w 0
+.
+. ie d paper-\*[paper-p]-length \{\
+. ie '\*[paper-l]'l' \{\
+. pl \*[paper-\*[paper-p]-width]
+. ll (\*[paper-\*[paper-p]-length] - 2i)
+. \}
+. el \{\
+. ie '\*[paper-l]'' \{\
+. pl \*[paper-\*[paper-p]-length]
+. ll (\*[paper-\*[paper-p]-width] - 2i)
+. \}
+. el \
+. nr paper-w 1
+. \}
+. \}
+. el \
+. nr paper-w 1
+.
+. ie \n[paper-w] \
+. tm warning: Unknown paper size `\*[paper]'
+. el \
+. if !r LL .nr LL \n[.l]u \" for ms, mdoc, man
+.\}
+.
+.cp \n[_C]
+.
+.\" EOF
diff --git a/contrib/groff/tmac/ps.tmac b/contrib/groff/tmac/ps.tmac
index 01868ce..05374ac 100644
--- a/contrib/groff/tmac/ps.tmac
+++ b/contrib/groff/tmac/ps.tmac
@@ -25,7 +25,9 @@
.ftr C CR
.
.cflags 8 \[an]
+.
.char \[radicalex] \h'-\w'\[sr]'u'\[radicalex]\h'\w'\[sr]'u'
+.fchar \[sqrtex] \[radicalex]
.char \[mo] \h'.08m'\[mo]\h'-.08m'
.char \[nm] \h'.08m'\[nm]\h'-.08m'
.char \[parenlefttp] \[parenlefttp]\h'.016m'
@@ -35,21 +37,88 @@
.char \[parenrightbt] \[parenrightbt]\h'.016m'
.char \[parenrightex] \[parenrightex]\h'.016m'
.
+.char \[or] \h'.1m'\Z'\D'l 0 -.675m''\h'.1m'
+.
+.\" This is designed so that \(ul, \(rn and \(br form corners.
+.char \[ul] \v'.25m'\D'l .5m 0'\v'-.25m'
+.char \[br] \Z'\v'.25m'\D'l 0 -1m''
+.char \[rn] \v'-.75m'\D'l .5m 0'\v'.75m'
+.
+.char \[ru] \D'l .5m 0'
+.
.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 \[Fi] f\[fi]
+.fchar \[Fl] f\[fl]
.fchar \[ff] ff
+.fchar \[fi] fi
+.fchar \[fl] fl
.fchar \[ij] ij
.fchar \[IJ] IJ
.fchar \[tm] \s-3\v'-.3m'TM\v'+.3m'\s+3
.
+.fchar \[<<] <\h'-.2m'<
+.fchar \[>>] >\h'-.2m'>
+.fchar \[|=] \v'.075m'\Z'\[mi]'\v'-.15m'\[ap]\v'.075m'
+.fchar \[nc] \v'.1m'\Z'\h'.15m'\F[T]\f[R]/'\v'-.1m'\[sp]
+.fchar \[ne] \v'.07m'\Z'\h'.13m'\F[T]\f[R]/'\v'-.07m'\[==]
+.fchar \[-h] \F[T]\f[I]\v'-.53m'\Z'\h'.05m'\D'l .3m 0''\v'.53m'h
+.fchar \[hbar] \[-h]
+.
+.de ps-achar
+. \" Note that character definitions are always interpreted with
+. \" compatibility mode off.
+. fchar \\$1 \
+\\$3\
+\k[acc]\
+\h'(u;-\w'\\$2'-\w'\\$3'/2+\\En[skw]+(\w'x'*0)-\\En[skw])'\
+\v'(u;\w'x'*0+\\En[rst]+(\w'\\$3'*0)-\\En[rst])'\
+\\$2\
+\v'(u;\w'x'*0-\\En[rst]+(\w'\\$3'*0)+\\En[rst])'\
+\h'|\\En[acc]u'
+. hcode \\$1\\$4
+..
+.
+.ps-achar \['C] \' C c
+.ps-achar \['c] \' c c
+.
+.de ps-frac
+. schar \[\\$1\\$2] \
+\v'-.28m'\s[\\En[.s]*6u/10u]\\$1\s0\v'.28m'\
+\[f/]\
+\s[\\En[.s]*6u/10u]\\$2
+..
+.
+.de ps-frac-mono
+. fschar \\$1 \[\\$2\\$3] \
+\Z'\v'-.28m'\s[\\En[.s]*5u/10u]\\$2\s0\v'.28m''\
+\Z'\h'.35m'\s[\\En[.s]*5u/10u]\\$3\s0'\
+\h'.02m'\[f/]\h'-.02m'
+..
+.
+.ps-frac 1 8
+.ps-frac 3 8
+.ps-frac 5 8
+.ps-frac 7 8
+.
+.ps-frac-mono CR 1 8
+.ps-frac-mono CR 3 8
+.ps-frac-mono CR 5 8
+.ps-frac-mono CR 7 8
+.ps-frac-mono CI 1 8
+.ps-frac-mono CI 3 8
+.ps-frac-mono CI 5 8
+.ps-frac-mono CI 7 8
+.ps-frac-mono CB 1 8
+.ps-frac-mono CB 3 8
+.ps-frac-mono CB 5 8
+.ps-frac-mono CB 7 8
+.ps-frac-mono CBI 1 8
+.ps-frac-mono CBI 3 8
+.ps-frac-mono CBI 5 8
+.ps-frac-mono CBI 7 8
+.
.\" pic tests this register to see whether it should use \X'ps:...'
.nr 0p 1
.
@@ -612,4 +681,6 @@
.el \
. do mso cp1047.tmac
.
+.do mso europs.tmac
+.
.\" make sure that no blank lines creep in at the end of this file.
diff --git a/contrib/groff/tmac/pspic.tmac b/contrib/groff/tmac/pspic.tmac
index 6382d91..9fe7e3e 100644
--- a/contrib/groff/tmac/pspic.tmac
+++ b/contrib/groff/tmac/pspic.tmac
@@ -2,8 +2,8 @@
.\"
.\" Define the PSPIC macro.
.\"
-.\" When used other than with -Tps or -Tdvi, it will draw a box around where
-.\" the picture would go.
+.\" When used other than with -Tps, -Tdvi, or -Thtml it will draw a box
+.\" around where the picture would go.
.
.de PSPIC
. nr ps-offset-mode 0
diff --git a/contrib/groff/tmac/troffrc b/contrib/groff/tmac/troffrc
index f51eb87..61cb32d 100644
--- a/contrib/groff/tmac/troffrc
+++ b/contrib/groff/tmac/troffrc
@@ -18,7 +18,7 @@
.do ds troffrc!cp1047 tty.tmac
.do ds troffrc!lj4 lj4.tmac
.do ds troffrc!lbp lbp.tmac
-.do ds troffrc!html www.tmac
+.do ds troffrc!html html.tmac
.do if d troffrc!\*[.T] \
. do mso \*[troffrc!\*[.T]]
.do rm troffrc!ps troffrc!Xps troffrc!dvi troffrc!X75 troffrc!X75-12 \
@@ -33,7 +33,14 @@ troffrc!X100 troffrc!X100-12 troffrc!lj4 troff!lbp troffrc!html
.\" Set the hyphenation language to `us'.
.do hla us
.
-.\" Load hyphenation patterns from `hyphen.us' (in the tmac directory).
+.\" Load hyphenation patterns and exceptions.
.do hpf hyphen.us
+.do hpfa hyphenex.us
+.
+.\" Load composite mappings.
+.do mso composite.tmac
+.
+.\" Handle paper formats
+.do mso papersize.tmac
.
.\" Don't let blank lines creep in here.
diff --git a/contrib/groff/tmac/troffrc-end b/contrib/groff/tmac/troffrc-end
index 928c923..ef4f008 100644
--- a/contrib/groff/tmac/troffrc-end
+++ b/contrib/groff/tmac/troffrc-end
@@ -2,7 +2,7 @@
.
.\" this file is parsed after all macro sets have been read
.
-.do if '\*[.T]'html' .do mso html.tmac
+.do if '\*[.T]'html' .do mso html-end.tmac
.
.\" if we are running the postscript device for html images then load www.tmac
.do if r ps4html .do mso www.tmac
@@ -14,6 +14,7 @@
.do if !d HTML-IMAGE-LEFT .do ds HTML-IMAGE-LEFT
.do if !d HTML-IMAGE-END .do ds HTML-IMAGE-END
.do if !d HTML-TAG .do ds HTML-TAG
+.do if !d HTML-TAG-NS .do ds HTML-TAG-NS
.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 a0c2b4b..aeeda50 100644
--- a/contrib/groff/tmac/tty-char.tmac
+++ b/contrib/groff/tmac/tty-char.tmac
@@ -45,6 +45,7 @@
.tty-char \[di] -:-
.tty-char \[tdi] -:-
.tty-char \[no] ~
+.tty-char \[tno] ~
.tty-char \[gr] \Z'\*[tty-rn]'V
.tty-char \[is] \z'\z,I
.tty-char \[mo] E
@@ -66,6 +67,7 @@
.tty-char \[*c] \z,E
.tty-char \[*d] d
.tty-char \[*e] e
+.tty-char \[+e] e
.tty-char \[*f] \z|o
.tty-char \[+f] \z|o
.tty-char \[*g] y
@@ -111,6 +113,7 @@
.tty-char \[ho] \[ac]
.tty-char \[/_] \z_/
.tty-char \[=~] =~
+.tty-char \[|=] -~
.tty-char \[Ah] N
.tty-char \[CR] _|
.tty-char \[fa] \z-V
@@ -121,12 +124,17 @@
.tty-char \[te] 3
.if c\[md] .tty-char \[tf] .\[md].
.tty-char \[tf] .:.
+.if c\[md] .tty-char \[3d] .\[md].
+.tty-char \[3d] .:.
.tty-char \[wp] p
.tty-char \[~~] ~~
.tty-char \[Fn] \z,f
.tty-char \[Bq] ,,
-.tty-char \[bq] ,
.tty-char \[lz] <>
+.tty-char \[lf] |_
+.tty-char \[rf] _|
+.tty-char \[lc] |~
+.tty-char \[rc] ~|
.\" Latin-1 characters
.tty-char \[r!] \z,i
.tty-char \[Po] \z-L
diff --git a/contrib/groff/tmac/tty.tmac b/contrib/groff/tmac/tty.tmac
index e6bd598..4b337fd 100644
--- a/contrib/groff/tmac/tty.tmac
+++ b/contrib/groff/tmac/tty.tmac
@@ -21,22 +21,30 @@
.fchar \[14] 1/4
.fchar \[12] 1/2
.fchar \[34] 3/4
+.fchar \[18] 1/8
+.fchar \[38] 3/8
+.fchar \[58] 5/8
+.fchar \[78] 7/8
.fchar \[ff] ff
.fchar \[fi] fi
.fchar \[fl] fl
-.fchar \[Fi] ffi
-.fchar \[Fl] ffl
+.fchar \[Fi] f\[fi]
+.fchar \[Fl] f\[fl]
.fchar \[<-] <-
.fchar \[->] ->
.fchar \[<>] <->
.fchar \[em] --
.fchar \[+-] +-
.fchar \[t+-] +-
+.fchar \[-+] -+
.fchar \[co] (C)
.fchar \[<=] <=
.fchar \[>=] >=
+.fchar \[<<] <<
+.fchar \[>>] >>
.fchar \[!=] !=
.fchar \[==] ==
+.fchar \[ne] !==
.fchar \[~=] ~=
.fchar \[sq] []
.fchar \[lh] <=
@@ -49,9 +57,13 @@
.fchar \[oe] oe
.fchar \[AE] AE
.fchar \[ae] ae
+.fchar \[IJ] IJ
+.fchar \[ij] ij
.fchar \[an] -
.fchar \[eu] EUR
.fchar \[Eu] EUR
+.fchar \[.i] i
+.fchar \[bq] ,
.
.\" color definitions
.defcolor black rgb #000000
@@ -68,7 +80,7 @@
.ie '\*(.T'cp1047' \
. do mso cp1047.tmac
.el \
-. if '\*(.T'latin1' \
+. if !'\*(.T'ascii' \
. do mso latin1.tmac
.
.\" If you want the character definitions in tty-char.tmac to be loaded
diff --git a/contrib/groff/tmac/www.tmac b/contrib/groff/tmac/www.tmac
index 0db647e..621da7e 100644
--- a/contrib/groff/tmac/www.tmac
+++ b/contrib/groff/tmac/www.tmac
@@ -1,8 +1,47 @@
-.\" www.tmac
-.\"
-.\" A simple set of macros to provide HTML documents with basic
-.\" www functionality. It should work with any macro set.
-.\"
+.ig
+www.tmac - macro package for adding HTML elements to roff documents.
+
+File position: <groff_source_top>/tmac/www.tmac
+Installed position: groff's main macro directory.
+
+------------------------------------------------------------------------
+ Legalize
+------------------------------------------------------------------------
+
+This file is part of groff, the GNU roff type-setting system.
+
+Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+written by Gaius Mulley <gaius@glam.ac.uk>, with additions by
+Werner Lemberg <wl@gnu.org> and Bernd Warken <bwarken@mayn.de>.
+
+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.
+
+
+------------------------------------------------------------------------
+ Description
+------------------------------------------------------------------------
+
+A simple set of macros to provide HTML documents with basic
+www functionality. It should work with any macro set.
+..
+.
+.\" --------------------------------------------------------------------
+.\" Setup
+.\" --------------------------------------------------------------------
+.
.nr _C \n(.C
.cp 0
.
@@ -10,8 +49,6 @@
.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
@@ -27,9 +64,187 @@
. .
.\}
.
+.
+.\" --------------------------------------------------------------------
+.\" Test for `.substring'; result in register `www.substring_ok'.
+.\" The automated break points in .URL addresses are only added if
+.\" this register is non-zero.
+.\"
+.nr www:substring_ok 0
+.de www:@test_substring
+. if !d substring \
+. return
+. ds \\$0:s abcdefg\"
+. substring \\$0:s 1 1
+. if !'\\*[\\$0:s]'b' \{\
+. rm \\$0:s
+. return
+. \}
+. ds \\$0:s abcdefg\"
+. substring \\$0:s 0 0
+. if !'\\*[\\$0:s]'a' \{\
+. rm \\$0:s
+. return
+. \}
+. ds \\$0:s abcdefg\"
+. substring \\$0:s 1 -1
+. if !'\\*[\\$0:s]'bcdefg' \{\
+. rm \\$0:s
+. return
+. \}
+. nr www:substring_ok 1
+. rm \\$0:s
+..
+.www:@test_substring
+.rm www:@test_substring
+.
+.
+.\" --------------------------------------------------------------------
+.\" Local Macros
+.\" --------------------------------------------------------------------
+.
+.\" --------------------------------------------------------------------
+.\" www:error (<test>...)
+.\"
+.\" Print error message
+.\"
.de www-error
. tm \\n[.F]:\\n[.c]: macro error: \\$*
..
+.als www:error www-error
+.
+.\" --------------------------------------------------------------------
+.\" www:lenstr (<register_name> <string_name>)
+.\"
+.\" Store length of string named <string_name> into register named
+.\" <register_name>.
+.\"
+.de www:lenstr
+. if !(\\n[.$] == 2) \{\
+. tm .\\$0 expects 2 arguments.
+. ab
+. \}
+. length \\$0:n x\\*[\\$2]
+. nr \\$1 (\\n[\\$0:n]-1)
+. rr \\$0:n
+..
+.\" --------------------------------------------------------------------
+.\" www:splitstr (<name>)
+.\"
+.\" Add a space character between any two adjacent characters in string
+.\" <name> and restore result into the string variable <name>; space
+.\" characters are first replaced by the word `space'.
+.\"
+.de www:splitstr
+. if !(\\n[.$] == 1) \
+. www:error .\\$0 expects 1 argument.
+. if '\\*[\\$1]'' \
+. return
+. ds \\$0:r "\\*[\\$1]\""
+. ds \\$0:s\"
+. while 1 \{\
+. ds \\$0:c "\\*[\\$0:r]\""
+. substring \\$0:c 0 0\"
+. ie '\\*[\\$0:c]' ' \
+. as \\$0:s " space\""
+. el \
+. as \\$0:s " \\*[\\$0:c]\""
+. www:lenstr \\$0:n \\$0:r
+. if (\\n[\\$0:n] <= 1) \{\
+. break
+. \}
+. substring \\$0:r 1 -1\"
+. \}
+. if !'\\*[\\$0:s]'' \
+. substring \\$0:s 1 -1
+. ds \\$1 \\*[\\$0:s]
+. rm \\$0:c
+. rr \\$0:n
+. rm \\$0:r
+. rm \\$0:s
+..
+.\" --------------------------------------------------------------------
+.\" www:url_breaks (<string_name>)
+.\"
+.\" Add `\:' (possible break point) within URL strings after `/'.
+.\"
+.\" Smart about multiple `/', existing `\:', and space characters;
+.\" does not set a break point if less than 5 characters would go to
+.\" the next line.
+.\"
+.de www:url_breaks
+. if !(\\n[.$] == 1) \
+. www:error .\\$0 expects 1 argument.
+. if !\n[www:substring_ok] \
+. return
+. ds \\$0:s "\\*[\\$1]\""
+. www:splitstr \\$0:s
+. www:url_breaks_splitted \\$0:s \\*[\\$0:s]
+. ds \\$1 "\\*[\\$0:s]\""
+. rm \\$0:s
+..
+.\" --------------------------------------------------------------------
+.\" www:url_breaks_splitted (<result> <char> [<char>...])
+.\"
+.\" Add `\:' within URL strings, but arguments are a splitted string.
+.\"
+.\" Arguments: >=2: <result> <char> [<char>...]
+.\"
+.de www:url_breaks_splitted
+. nr \\$0:min 5 \" minimal number of characters for next line
+. if (\\n[.$] < 2) \
+. www:error .\\$0 expects at least 2 arguments.
+. ds \\$0:res \\$1\"
+. shift
+. ds \\$0:s\"
+. nr \\$0:done 0
+. while !\\n[\\$0:done] \{\
+. if (\\n[.$] <= 0) \{\
+. nr \\$0:done 1
+. break
+. \}
+. if '\\$1'space' \{\
+. as \\$0:s " \""
+. shift
+. continue
+. \}
+. if (\\n[.$] < \\n[\\$0:min]) \{\
+. as \\$0:s "\\$1\""
+. shift
+. continue
+. \}
+. if !'\\$1'/' \{\
+. as \\$0:s "\\$1\""
+. shift
+. continue
+. \}
+. \" we are at a `/' character
+. while '\\$1'/' \{\
+. as \\$0:s /\"
+. if (\\n[.$] == 0) \{\
+. nr \\$0:done 1
+. break
+. \}
+. shift
+. \}
+. if \\n[\\$0:done] \
+. break
+. if (\\n[.$] < \\n[\\$0:min]) \
+. continue
+. if '\\$1'\:' \
+. shift
+. as \\$0:s \:\"
+. \}
+. ds \\*[\\$0:res] \\*[\\$0:s]\"
+. rm \\$0:res
+. rm \\$0:s
+..
+.\" --------------------------------------------------------------------
+.\" User Interface
+.\" --------------------------------------------------------------------
+.
+.\" --------------------------------------------------------------------
+.\" HTML (<address> <description> [<punctuation>])
.\"
.\" the main auxiliary macro for the HTML interface
.\"
@@ -47,47 +262,61 @@
. 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'.
+.\" 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:\\$*^
..
-.\"
+.\" --------------------------------------------------------------------
.\" BCL foreground background active not-visited visited
.\"
.de BCL
. HTML <body text=\\$1 bgcolor=\\$2 link=\\$3 alink=\\$4 vlink=\\$5>
..
-.\"
+.\" --------------------------------------------------------------------
.\" BGIMG imagefile
.\"
.de BGIMG
. HTML <body background=\\$1>
..
-.\"
-.\" URL url description [after]
+.\" --------------------------------------------------------------------
+.\" URL url [description] [after]
+.\" if description is absent then the url becomes the anchor text
.\"
.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
+. ds \\$0:adr \\$1\"
+. www:url_breaks \\$0:adr
+. ie \\n[www-html] \{\
+. ie '\\$2'' \
+. HTML <a href="\\$1">\\$1</a>\\$3
+. el \
+. HTML <a href="\\$1">\\$2</a>\\$3
+. \}
+. el \{\
+. if !r ps4html .ad l
+. ie '\\$2'' \
+. nop \%\[la]\m[blue]\f[C]\\*[\\$0:adr]\f[]\m[]\[ra]\\$3
+. el \
+. nop \m[blue]\\$2\m[] \%\[la]\f[C]\\*[\\$0:adr]\f[]\[ra]\\$3
+. if !r ps4html .ad
+. \}
+. rm \\$0:adr
..
-.\"
+.\" --------------------------------------------------------------------
.\" FTP url description [after]
.\"
-.\" Same as UTL.
+.\" Same as URL.
.\"
.als FTP URL
-.\"
+.\" --------------------------------------------------------------------
.\" MTO address description [after]
.\"
.\" ADDRESS is the email address (without the `mailto:' prefix).
@@ -117,7 +346,7 @@
. nop \m[blue]\\$2\m[] \%\[la]\f[C]\\$1\f[]\[ra]\\$3
. \}
..
-.\"
+.\" --------------------------------------------------------------------
.\" TAG name
.\"
.\" Generate an html name NAME.
@@ -125,7 +354,7 @@
.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).
@@ -155,7 +384,7 @@
. el \
. nop \[la]\f[C]\\$1\f[]\[ra]
..
-.\"
+.\" --------------------------------------------------------------------
.\" HTML-TAG
.\"
.\" Emit a tag for grohtml. This is an internal macro.
@@ -167,7 +396,7 @@
. nop \X^html-tag:\\$*^
. \}
..
-.\"
+.\" --------------------------------------------------------------------
.\" HTML-TAG-NS
.\"
.\" Emit a tag for grohtml (without a space). This is an internal macro.
@@ -176,7 +405,7 @@
. if \\n[www-html] \
. nop \X^html-tag:\\$*^\c
..
-.\"
+.\" --------------------------------------------------------------------
.\" PIMG [-R|-L|-C] filename [width] [height]
.\"
.\" Include a png image. It will work for -Tps and -Thtml.
@@ -219,7 +448,7 @@
. el \{\
. if !r ps4html \{\
. www-make-unique-name
-. sy pngtopnm \\$2 | pnmcrop -white | pnmtops -noturn > \\*[www-unique-name].eps
+. sy pngtopnm \\$2 | pnmcrop -white | @PNMTOPS_NOSETPAGE@ -noturn > \\*[www-unique-name].eps
. ie '\\$1'-C' \
. PSPIC \\*[www-unique-name].eps \\$3 \\$4
. el \
@@ -228,6 +457,9 @@
. \}
..
.
+.\" --------------------------------------------------------------------
+.\" auxiliary definitions for MPIMG
+.\"
.nr www-left-ll-trap 0
.nr www-left-po-trap 0
.nr www-right-ll-trap 0
@@ -274,7 +506,7 @@
. 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
@@ -303,7 +535,7 @@
. el \{\
. if !r ps4html \{\
. www-make-unique-name
-. sy pngtopnm \\$2 | pnmcrop -white | pnmtops -noturn > \\*[www-unique-name].eps
+. sy pngtopnm \\$2 | pnmcrop -white | @PNMTOPS_NOSETPAGE@ -noturn > \\*[www-unique-name].eps
. ie '\\$1'-R' \{\
. \" we must now disable a possible left image trap
. sp -1
@@ -343,7 +575,7 @@
. \}
. \}
..
-.\"
+.\" --------------------------------------------------------------------
.\" HnS n
.\"
.\" Begin heading. Heading level is N.
@@ -371,7 +603,7 @@
. www-error "HnE found without a corresponding HnS"
. br
..
-.\"
+.\" --------------------------------------------------------------------
.\" LK
.\"
.\" Emit the automatically collected links derived from
@@ -380,7 +612,7 @@
.de LK
. HTML-TAG ".links"
..
-.\"
+.\" --------------------------------------------------------------------
.\" HR
.\"
.\" Produce a horizontal line
@@ -393,7 +625,7 @@
. el \
. sp
..
-.\"
+.\" --------------------------------------------------------------------
.\" NHR
.\"
.\" Suppresses the generation of the top and bottom rules which grohtml
@@ -408,7 +640,7 @@
.de www-end-nowhere
. di
..
-.\"
+.\" --------------------------------------------------------------------
.\" HTL
.\"
.\" Generate an HTML title only. This differs from the -ms .TL macro
@@ -427,6 +659,9 @@
. \}
..
.
+.\" --------------------------------------------------------------------
+.\" auxiliary definitions for ULS / ULE
+.\"
.ds www-level1 \[bu]\ \ \"
.ds www-level2 \[sq]\ \ \"
.ds www-level3 \[ci]\ \ \"
@@ -449,7 +684,7 @@
. www-error "trying to terminate a list which does not exist"
. nr www-level -1
..
-.\"
+.\" --------------------------------------------------------------------
.\" ULS
.\"
.\" Start an unordered list.
@@ -464,7 +699,7 @@
. nr www-depth +\w'\\*[www-level\\n[www-level]]'u
. \}
..
-.\"
+.\" --------------------------------------------------------------------
.\" ULE
.\"
.\" End an unordered list.
@@ -474,11 +709,11 @@
. HTML "</ul>"
. el \{\
. nr www-depth -\w'\\*[www-level\\n[www-level]]'u
-. in \\n[www-depth]
+. in \\n[www-depth]u
. \}
. www-pop-level
..
-.\"
+.\" --------------------------------------------------------------------
.\" LI
.\"
.\" Insert a list item.
@@ -492,7 +727,7 @@
. nop \\*[www-level\\n[www-level]]\c
. \}
..
-.\"
+.\" --------------------------------------------------------------------
.\" DC l text [color]
.\"
.\" L is the letter to be dropped and enlarged.
@@ -513,9 +748,19 @@
. el \{\
. ie r ps4html \{\
. www-make-unique-name
+. \" To avoid interferences with another DC macro call which is located
+. \" very near to the current one, we draw the glyph on a separate page.
+. \" Otherwise it could theoretically happen that the dropped capital
+. \" glyphs overlap.
+. bp
+. ev www-DC
+. vs 80p
. 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]
+. nop \m[\\*[www-dropcolor]]\s[40]\O[3]\\$1\O[4]
+. nop \O[2]\O[0]
+. br
+. ev
+. bp
. \}
. el \{\
. nr dummy \w'\\$1'u
@@ -527,6 +772,8 @@
. \}
. nop \\$2
..
+.\" --------------------------------------------------------------------
+.\" Setup around HTML-IMAGE and friends
.\"
.\" now set up TS, TE, EQ, EN default macros
.\"
@@ -537,9 +784,10 @@
.\"
.\" 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.
-.\"
+.\" here are some tags specially for -Tps or -Thtml when invoked by
+.\" pre-html to generate png images from postscript.
+.
+.\" --------------------------------------------------------------------
.\" HTML-DO-IMAGE - tells troff to issue an image marker which can be
.\" read back by pre-html
.\"
@@ -549,7 +797,7 @@
. 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
@@ -561,7 +809,7 @@
.
.nr www-png-no 0
.
-.\"
+.\" --------------------------------------------------------------------
.\" www-make-unique-name - generates another unique name in string
.\" `www-unique-name'
.\"
@@ -569,7 +817,7 @@
. nr www-png-no +1
. ds www-unique-name \\*[www-image-template]\\n[www-png-no]
..
-.\"
+.\" --------------------------------------------------------------------
.\" HTML-IMAGE and friends tell grohtml that this region of text needs
.\" to be rendered as an image.
.\"
@@ -594,11 +842,42 @@
. HTML-DO-IMAGE \\*[www-unique-name] i
..
.
+.\" --------------------------------------------------------------------
+.\" Final Setup
+.\" --------------------------------------------------------------------
+.
.if \n[www-html] \{\
. nh
. nr HY 0
.\}
+.
+.\"
+.\" start of some code
+.\"
+.
+.de CDS
+.ft C
+.nf
+..
+.\"
+.\" end of some code
+.\"
+.
+.de CDE
+.fi
+.ft P
+..
+.
.if r ps4html .nop \O[0]
.cp \n(_C
.
+.\" now set
+.
+.\" --------------------------------------------------------------------
+.\" Emacs settings
+.\" --------------------------------------------------------------------
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
.\" EOF
OpenPOWER on IntegriCloud