aboutsummaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorRuslan Ermilov <ru@FreeBSD.org>2001-04-17 12:12:05 +0000
committerRuslan Ermilov <ru@FreeBSD.org>2001-04-17 12:12:05 +0000
commit1d5f6a94a87add2c3eb035043f48bb7fe1906661 (patch)
treef3137c4283de8869ebcae1dd0fe43f590276c1dc /contrib
parentc8d1b47c7fde3a8a3f5530bd5e3939bba340ab4b (diff)
downloadsrc-1d5f6a94a87add2c3eb035043f48bb7fe1906661.tar.gz
src-1d5f6a94a87add2c3eb035043f48bb7fe1906661.zip
Virgin import of FSF groff v1.17
Notes
Notes: svn path=/vendor/groff/dist/; revision=75584
Diffstat (limited to 'contrib')
-rw-r--r--contrib/groff/ChangeLog1757
-rw-r--r--contrib/groff/INSTALL10
-rw-r--r--contrib/groff/MORE.STUFF69
-rw-r--r--contrib/groff/Makefile.comm6
-rw-r--r--contrib/groff/Makefile.in59
-rw-r--r--contrib/groff/Makefile.sub3
-rw-r--r--contrib/groff/NEWS238
-rw-r--r--contrib/groff/PROBLEMS65
-rw-r--r--contrib/groff/README2
-rw-r--r--contrib/groff/REVISION2
-rw-r--r--contrib/groff/VERSION2
-rw-r--r--contrib/groff/aclocal.m416
-rwxr-xr-xcontrib/groff/configure130
-rw-r--r--contrib/groff/configure.in4
-rw-r--r--contrib/groff/contrib/mm/ChangeLog521
-rw-r--r--contrib/groff/contrib/mm/Makefile.sim66
-rw-r--r--contrib/groff/contrib/mm/Makefile.sub55
-rw-r--r--contrib/groff/contrib/mm/NOTES105
-rw-r--r--contrib/groff/contrib/mm/README37
-rw-r--r--contrib/groff/contrib/mm/examples/APP352
-rw-r--r--contrib/groff/contrib/mm/examples/B1B291
-rw-r--r--contrib/groff/contrib/mm/examples/COVER235
-rw-r--r--contrib/groff/contrib/mm/examples/IND4191
-rw-r--r--contrib/groff/contrib/mm/examples/LT1058
-rw-r--r--contrib/groff/contrib/mm/examples/LT.se1062
-rw-r--r--contrib/groff/contrib/mm/examples/ML169
-rw-r--r--contrib/groff/contrib/mm/examples/MOVE175
-rw-r--r--contrib/groff/contrib/mm/examples/MUL535
-rw-r--r--contrib/groff/contrib/mm/examples/NCOL196
-rw-r--r--contrib/groff/contrib/mm/examples/ND17
-rw-r--r--contrib/groff/contrib/mm/examples/README32
-rw-r--r--contrib/groff/contrib/mm/examples/References975
-rw-r--r--contrib/groff/contrib/mm/examples/SETR109
-rw-r--r--contrib/groff/contrib/mm/groff_mm.man1897
-rw-r--r--contrib/groff/contrib/mm/groff_mmse.man82
-rw-r--r--contrib/groff/contrib/mm/m.tmac3477
-rw-r--r--contrib/groff/contrib/mm/mm/0.MT146
-rw-r--r--contrib/groff/contrib/mm/mm/4.MT81
-rw-r--r--contrib/groff/contrib/mm/mm/5.MT34
-rw-r--r--contrib/groff/contrib/mm/mm/ms.cov84
-rw-r--r--contrib/groff/contrib/mm/mm/se_ms.cov3
-rw-r--r--contrib/groff/contrib/mm/mmroff.man48
-rwxr-xr-xcontrib/groff/contrib/mm/mmroff.pl134
-rw-r--r--contrib/groff/contrib/mm/mse.tmac184
-rw-r--r--contrib/groff/doc/Makefile6
-rw-r--r--contrib/groff/doc/groff.texinfo6416
-rw-r--r--contrib/groff/doc/homepage.ms16
-rw-r--r--contrib/groff/doc/meref.me4
-rw-r--r--contrib/groff/doc/pic.ms33
-rw-r--r--contrib/groff/font/devX100-12/CB308
-rw-r--r--contrib/groff/font/devX100-12/CBI308
-rw-r--r--contrib/groff/font/devX100-12/CI308
-rw-r--r--contrib/groff/font/devX100-12/CR308
-rw-r--r--contrib/groff/font/devX100-12/DESC9
-rw-r--r--contrib/groff/font/devX100-12/HB308
-rw-r--r--contrib/groff/font/devX100-12/HBI308
-rw-r--r--contrib/groff/font/devX100-12/HI308
-rw-r--r--contrib/groff/font/devX100-12/HR308
-rw-r--r--contrib/groff/font/devX100-12/Makefile.sub2
-rw-r--r--contrib/groff/font/devX100-12/NB308
-rw-r--r--contrib/groff/font/devX100-12/NBI308
-rw-r--r--contrib/groff/font/devX100-12/NI308
-rw-r--r--contrib/groff/font/devX100-12/NR308
-rw-r--r--contrib/groff/font/devX100-12/S226
-rw-r--r--contrib/groff/font/devX100-12/TB308
-rw-r--r--contrib/groff/font/devX100-12/TBI308
-rw-r--r--contrib/groff/font/devX100-12/TI308
-rw-r--r--contrib/groff/font/devX100-12/TR308
-rw-r--r--contrib/groff/font/devX100/CB308
-rw-r--r--contrib/groff/font/devX100/CBI308
-rw-r--r--contrib/groff/font/devX100/CI308
-rw-r--r--contrib/groff/font/devX100/CR308
-rw-r--r--contrib/groff/font/devX100/DESC9
-rw-r--r--contrib/groff/font/devX100/HB308
-rw-r--r--contrib/groff/font/devX100/HBI308
-rw-r--r--contrib/groff/font/devX100/HI308
-rw-r--r--contrib/groff/font/devX100/HR308
-rw-r--r--contrib/groff/font/devX100/Makefile.sub2
-rw-r--r--contrib/groff/font/devX100/NB308
-rw-r--r--contrib/groff/font/devX100/NBI308
-rw-r--r--contrib/groff/font/devX100/NI308
-rw-r--r--contrib/groff/font/devX100/NR308
-rw-r--r--contrib/groff/font/devX100/S226
-rw-r--r--contrib/groff/font/devX100/TB308
-rw-r--r--contrib/groff/font/devX100/TBI308
-rw-r--r--contrib/groff/font/devX100/TI308
-rw-r--r--contrib/groff/font/devX100/TR308
-rw-r--r--contrib/groff/font/devX75-12/CB308
-rw-r--r--contrib/groff/font/devX75-12/CBI308
-rw-r--r--contrib/groff/font/devX75-12/CI308
-rw-r--r--contrib/groff/font/devX75-12/CR308
-rw-r--r--contrib/groff/font/devX75-12/DESC9
-rw-r--r--contrib/groff/font/devX75-12/HB308
-rw-r--r--contrib/groff/font/devX75-12/HBI308
-rw-r--r--contrib/groff/font/devX75-12/HI308
-rw-r--r--contrib/groff/font/devX75-12/HR308
-rw-r--r--contrib/groff/font/devX75-12/Makefile.sub2
-rw-r--r--contrib/groff/font/devX75-12/NB308
-rw-r--r--contrib/groff/font/devX75-12/NBI308
-rw-r--r--contrib/groff/font/devX75-12/NI308
-rw-r--r--contrib/groff/font/devX75-12/NR308
-rw-r--r--contrib/groff/font/devX75-12/S226
-rw-r--r--contrib/groff/font/devX75-12/TB308
-rw-r--r--contrib/groff/font/devX75-12/TBI308
-rw-r--r--contrib/groff/font/devX75-12/TI308
-rw-r--r--contrib/groff/font/devX75-12/TR308
-rw-r--r--contrib/groff/font/devX75/CB308
-rw-r--r--contrib/groff/font/devX75/CBI308
-rw-r--r--contrib/groff/font/devX75/CI308
-rw-r--r--contrib/groff/font/devX75/CR308
-rw-r--r--contrib/groff/font/devX75/DESC9
-rw-r--r--contrib/groff/font/devX75/HB308
-rw-r--r--contrib/groff/font/devX75/HBI308
-rw-r--r--contrib/groff/font/devX75/HI308
-rw-r--r--contrib/groff/font/devX75/HR308
-rw-r--r--contrib/groff/font/devX75/Makefile.sub2
-rw-r--r--contrib/groff/font/devX75/NB308
-rw-r--r--contrib/groff/font/devX75/NBI308
-rw-r--r--contrib/groff/font/devX75/NI308
-rw-r--r--contrib/groff/font/devX75/NR308
-rw-r--r--contrib/groff/font/devX75/S226
-rw-r--r--contrib/groff/font/devX75/TB308
-rw-r--r--contrib/groff/font/devX75/TBI308
-rw-r--r--contrib/groff/font/devX75/TI308
-rw-r--r--contrib/groff/font/devX75/TR308
-rw-r--r--contrib/groff/font/devascii/DESC.proto8
-rw-r--r--contrib/groff/font/devascii/Makefile.sub31
-rw-r--r--contrib/groff/font/devascii/R.proto167
-rw-r--r--contrib/groff/font/devcp1047/DESC.proto8
-rw-r--r--contrib/groff/font/devcp1047/Makefile.sub32
-rw-r--r--contrib/groff/font/devcp1047/R.proto356
-rw-r--r--contrib/groff/font/devdvi/B358
-rw-r--r--contrib/groff/font/devdvi/BI365
-rw-r--r--contrib/groff/font/devdvi/CW160
-rw-r--r--contrib/groff/font/devdvi/CWI160
-rw-r--r--contrib/groff/font/devdvi/DESC.in10
-rw-r--r--contrib/groff/font/devdvi/EX144
-rw-r--r--contrib/groff/font/devdvi/H307
-rw-r--r--contrib/groff/font/devdvi/HB307
-rw-r--r--contrib/groff/font/devdvi/HI308
-rw-r--r--contrib/groff/font/devdvi/I366
-rw-r--r--contrib/groff/font/devdvi/MI136
-rw-r--r--contrib/groff/font/devdvi/Makefile.sub11
-rw-r--r--contrib/groff/font/devdvi/R441
-rw-r--r--contrib/groff/font/devdvi/S153
-rw-r--r--contrib/groff/font/devdvi/SA143
-rw-r--r--contrib/groff/font/devdvi/SB132
-rwxr-xr-xcontrib/groff/font/devdvi/generate/CompileFonts15
-rw-r--r--contrib/groff/font/devdvi/generate/Makefile107
-rw-r--r--contrib/groff/font/devdvi/generate/cork.map206
-rw-r--r--contrib/groff/font/devdvi/generate/msam.map127
-rw-r--r--contrib/groff/font/devdvi/generate/msbm.map121
-rw-r--r--contrib/groff/font/devdvi/generate/texb.map127
-rw-r--r--contrib/groff/font/devdvi/generate/texex.map100
-rw-r--r--contrib/groff/font/devdvi/generate/texi.map127
-rw-r--r--contrib/groff/font/devdvi/generate/texmi.map32
-rw-r--r--contrib/groff/font/devdvi/generate/texr.map127
-rw-r--r--contrib/groff/font/devdvi/generate/texsy.map100
-rw-r--r--contrib/groff/font/devdvi/generate/textt.map126
-rw-r--r--contrib/groff/font/devhtml/DESC.proto12
-rw-r--r--contrib/groff/font/devhtml/Makefile.sub34
-rw-r--r--contrib/groff/font/devhtml/R.proto315
-rw-r--r--contrib/groff/font/devlatin1/DESC.proto8
-rw-r--r--contrib/groff/font/devlatin1/Makefile.sub32
-rw-r--r--contrib/groff/font/devlatin1/R.proto357
-rw-r--r--contrib/groff/font/devlbp/CB272
-rw-r--r--contrib/groff/font/devlbp/CI272
-rw-r--r--contrib/groff/font/devlbp/CR272
-rw-r--r--contrib/groff/font/devlbp/DESC.in9
-rw-r--r--contrib/groff/font/devlbp/EB272
-rw-r--r--contrib/groff/font/devlbp/EI272
-rw-r--r--contrib/groff/font/devlbp/ER272
-rw-r--r--contrib/groff/font/devlbp/HB491
-rw-r--r--contrib/groff/font/devlbp/HBI492
-rw-r--r--contrib/groff/font/devlbp/HI492
-rw-r--r--contrib/groff/font/devlbp/HNB491
-rw-r--r--contrib/groff/font/devlbp/HNBI491
-rw-r--r--contrib/groff/font/devlbp/HNI491
-rw-r--r--contrib/groff/font/devlbp/HNR491
-rw-r--r--contrib/groff/font/devlbp/HR491
-rw-r--r--contrib/groff/font/devlbp/Makefile.sub18
-rw-r--r--contrib/groff/font/devlbp/TB513
-rw-r--r--contrib/groff/font/devlbp/TBI493
-rw-r--r--contrib/groff/font/devlbp/TI521
-rw-r--r--contrib/groff/font/devlbp/TR517
-rw-r--r--contrib/groff/font/devlj4/ALBB790
-rw-r--r--contrib/groff/font/devlj4/ALBR805
-rw-r--r--contrib/groff/font/devlj4/AOB748
-rw-r--r--contrib/groff/font/devlj4/AOI813
-rw-r--r--contrib/groff/font/devlj4/AOR735
-rw-r--r--contrib/groff/font/devlj4/CB350
-rw-r--r--contrib/groff/font/devlj4/CBI351
-rw-r--r--contrib/groff/font/devlj4/CI351
-rw-r--r--contrib/groff/font/devlj4/CLARENDON351
-rw-r--r--contrib/groff/font/devlj4/CORONET351
-rw-r--r--contrib/groff/font/devlj4/CR350
-rw-r--r--contrib/groff/font/devlj4/DESC.in9
-rw-r--r--contrib/groff/font/devlj4/GB749
-rw-r--r--contrib/groff/font/devlj4/GBI752
-rw-r--r--contrib/groff/font/devlj4/GI686
-rw-r--r--contrib/groff/font/devlj4/GR872
-rw-r--r--contrib/groff/font/devlj4/LGB350
-rw-r--r--contrib/groff/font/devlj4/LGI351
-rw-r--r--contrib/groff/font/devlj4/LGR350
-rw-r--r--contrib/groff/font/devlj4/MARIGOLD351
-rw-r--r--contrib/groff/font/devlj4/Makefile.sub33
-rw-r--r--contrib/groff/font/devlj4/OB817
-rw-r--r--contrib/groff/font/devlj4/OBI810
-rw-r--r--contrib/groff/font/devlj4/OI923
-rw-r--r--contrib/groff/font/devlj4/OR899
-rw-r--r--contrib/groff/font/devlj4/S195
-rw-r--r--contrib/groff/font/devlj4/TB991
-rw-r--r--contrib/groff/font/devlj4/TBI1045
-rw-r--r--contrib/groff/font/devlj4/TI1131
-rw-r--r--contrib/groff/font/devlj4/TR878
-rw-r--r--contrib/groff/font/devlj4/UB829
-rw-r--r--contrib/groff/font/devlj4/UBI779
-rw-r--r--contrib/groff/font/devlj4/UCB790
-rw-r--r--contrib/groff/font/devlj4/UCBI698
-rw-r--r--contrib/groff/font/devlj4/UCI840
-rw-r--r--contrib/groff/font/devlj4/UCR759
-rw-r--r--contrib/groff/font/devlj4/UI983
-rw-r--r--contrib/groff/font/devlj4/UR880
-rw-r--r--contrib/groff/font/devlj4/generate/Makefile170
-rw-r--r--contrib/groff/font/devlj4/generate/special.map178
-rw-r--r--contrib/groff/font/devlj4/generate/text.map344
-rw-r--r--contrib/groff/font/devps/AB574
-rw-r--r--contrib/groff/font/devps/ABI575
-rw-r--r--contrib/groff/font/devps/AI575
-rw-r--r--contrib/groff/font/devps/AR574
-rw-r--r--contrib/groff/font/devps/BMB441
-rw-r--r--contrib/groff/font/devps/BMBI444
-rw-r--r--contrib/groff/font/devps/BMI437
-rw-r--r--contrib/groff/font/devps/BMR433
-rw-r--r--contrib/groff/font/devps/CB339
-rw-r--r--contrib/groff/font/devps/CBI340
-rw-r--r--contrib/groff/font/devps/CI340
-rw-r--r--contrib/groff/font/devps/CR339
-rw-r--r--contrib/groff/font/devps/DESC.in11
-rw-r--r--contrib/groff/font/devps/HB561
-rw-r--r--contrib/groff/font/devps/HBI562
-rw-r--r--contrib/groff/font/devps/HI630
-rw-r--r--contrib/groff/font/devps/HNB561
-rw-r--r--contrib/groff/font/devps/HNBI562
-rw-r--r--contrib/groff/font/devps/HNI630
-rw-r--r--contrib/groff/font/devps/HNR629
-rw-r--r--contrib/groff/font/devps/HR629
-rw-r--r--contrib/groff/font/devps/Makefile.sub35
-rw-r--r--contrib/groff/font/devps/NB473
-rw-r--r--contrib/groff/font/devps/NBI594
-rw-r--r--contrib/groff/font/devps/NI535
-rw-r--r--contrib/groff/font/devps/NR522
-rw-r--r--contrib/groff/font/devps/PB461
-rw-r--r--contrib/groff/font/devps/PBI463
-rw-r--r--contrib/groff/font/devps/PI465
-rw-r--r--contrib/groff/font/devps/PR466
-rw-r--r--contrib/groff/font/devps/S227
-rw-r--r--contrib/groff/font/devps/SS194
-rw-r--r--contrib/groff/font/devps/TB548
-rw-r--r--contrib/groff/font/devps/TBI531
-rw-r--r--contrib/groff/font/devps/TI544
-rw-r--r--contrib/groff/font/devps/TR536
-rw-r--r--contrib/groff/font/devps/ZCMI494
-rw-r--r--contrib/groff/font/devps/ZD193
-rw-r--r--contrib/groff/font/devps/ZDR193
-rw-r--r--contrib/groff/font/devps/download5
-rw-r--r--contrib/groff/font/devps/generate/Makefile227
-rwxr-xr-xcontrib/groff/font/devps/generate/afmname44
-rw-r--r--contrib/groff/font/devps/generate/dingbats.map2
-rw-r--r--contrib/groff/font/devps/generate/dingbats.rmap1
-rw-r--r--contrib/groff/font/devps/generate/lgreekmap28
-rw-r--r--contrib/groff/font/devps/generate/symbol.sed33
-rw-r--r--contrib/groff/font/devps/generate/symbolchars60
-rw-r--r--contrib/groff/font/devps/generate/symbolsl.afm203
-rw-r--r--contrib/groff/font/devps/generate/textmap453
-rw-r--r--contrib/groff/font/devps/prologue.ps228
-rw-r--r--contrib/groff/font/devps/psstrip.sed7
-rw-r--r--contrib/groff/font/devps/symbol.afm212
-rw-r--r--contrib/groff/font/devps/symbolmap513
-rw-r--r--contrib/groff/font/devps/symbolsl.ps41
-rw-r--r--contrib/groff/font/devps/text.enc231
-rw-r--r--contrib/groff/font/devps/zapfdr.afm222
-rw-r--r--contrib/groff/font/devps/zapfdr.ps225
-rw-r--r--contrib/groff/font/devutf8/DESC.proto8
-rw-r--r--contrib/groff/font/devutf8/Makefile.sub32
-rw-r--r--contrib/groff/font/devutf8/NOTES75
-rw-r--r--contrib/groff/font/devutf8/R.proto473
-rw-r--r--contrib/groff/gendef.sh8
-rw-r--r--contrib/groff/man/groff.man218
-rw-r--r--contrib/groff/man/groff_char.man4
-rw-r--r--contrib/groff/man/groff_font.man26
-rw-r--r--contrib/groff/man/groff_out.man17
-rw-r--r--contrib/groff/man/roff.man65
-rwxr-xr-xcontrib/groff/mdate.sh1
-rw-r--r--contrib/groff/src/devices/grodvi/Makefile.sub6
-rw-r--r--contrib/groff/src/devices/grodvi/dvi.cc912
-rw-r--r--contrib/groff/src/devices/grodvi/grodvi.man174
-rw-r--r--contrib/groff/src/devices/grohtml/Makefile.sub16
-rw-r--r--contrib/groff/src/devices/grohtml/grohtml.man137
-rw-r--r--contrib/groff/src/devices/grohtml/html-chars.h27
-rw-r--r--contrib/groff/src/devices/grohtml/html-text.cc829
-rw-r--r--contrib/groff/src/devices/grohtml/html-text.h109
-rw-r--r--contrib/groff/src/devices/grohtml/html.h96
-rw-r--r--contrib/groff/src/devices/grohtml/output.cc335
-rw-r--r--contrib/groff/src/devices/grohtml/post-html.cc2933
-rw-r--r--contrib/groff/src/devices/grolbp/Makefile.sub6
-rw-r--r--contrib/groff/src/devices/grolbp/charset.h69
-rw-r--r--contrib/groff/src/devices/grolbp/grolbp.man357
-rw-r--r--contrib/groff/src/devices/grolbp/lbp.cc765
-rw-r--r--contrib/groff/src/devices/grolbp/lbp.h511
-rw-r--r--contrib/groff/src/devices/grolj4/Makefile.sub6
-rw-r--r--contrib/groff/src/devices/grolj4/grolj4.man144
-rw-r--r--contrib/groff/src/devices/grolj4/lj4.cc710
-rw-r--r--contrib/groff/src/devices/grops/Makefile.sub12
-rw-r--r--contrib/groff/src/devices/grops/TODO29
-rw-r--r--contrib/groff/src/devices/grops/grops.man861
-rw-r--r--contrib/groff/src/devices/grops/ps.cc1570
-rw-r--r--contrib/groff/src/devices/grops/ps.h122
-rw-r--r--contrib/groff/src/devices/grops/psfig.diff106
-rw-r--r--contrib/groff/src/devices/grops/psrm.cc1118
-rw-r--r--contrib/groff/src/devices/grotty/Makefile.sub6
-rw-r--r--contrib/groff/src/devices/grotty/TODO3
-rw-r--r--contrib/groff/src/devices/grotty/grotty.man12
-rw-r--r--contrib/groff/src/devices/grotty/tty.cc509
-rw-r--r--contrib/groff/src/include/Makefile.sub42
-rw-r--r--contrib/groff/src/include/assert.h39
-rw-r--r--contrib/groff/src/include/cmap.h56
-rw-r--r--contrib/groff/src/include/cset.h75
-rw-r--r--contrib/groff/src/include/device.h21
-rw-r--r--contrib/groff/src/include/driver.h35
-rw-r--r--contrib/groff/src/include/errarg.h46
-rw-r--r--contrib/groff/src/include/error.h58
-rw-r--r--contrib/groff/src/include/font.h116
-rw-r--r--contrib/groff/src/include/getopt.h169
-rw-r--r--contrib/groff/src/include/groff-getopt.h68
-rw-r--r--contrib/groff/src/include/html-strings.h31
-rw-r--r--contrib/groff/src/include/htmlindicate.h59
-rw-r--r--contrib/groff/src/include/index.h42
-rw-r--r--contrib/groff/src/include/lib.h133
-rw-r--r--contrib/groff/src/include/macropath.h23
-rw-r--r--contrib/groff/src/include/nonposix.h136
-rw-r--r--contrib/groff/src/include/posix.h51
-rw-r--r--contrib/groff/src/include/printer.h77
-rw-r--r--contrib/groff/src/include/ptable.h168
-rw-r--r--contrib/groff/src/include/refid.h35
-rw-r--r--contrib/groff/src/include/search.h96
-rw-r--r--contrib/groff/src/include/searchpath.h30
-rw-r--r--contrib/groff/src/include/stringclass.h195
-rw-r--r--contrib/groff/src/libs/libbib/Makefile.sub14
-rw-r--r--contrib/groff/src/libs/libbib/common.cc38
-rw-r--r--contrib/groff/src/libs/libbib/index.cc641
-rw-r--r--contrib/groff/src/libs/libbib/linear.cc503
-rw-r--r--contrib/groff/src/libs/libbib/map.c71
-rw-r--r--contrib/groff/src/libs/libbib/search.cc132
-rw-r--r--contrib/groff/src/libs/libdriver/Makefile.sub7
-rw-r--r--contrib/groff/src/libs/libdriver/input.cc504
-rw-r--r--contrib/groff/src/libs/libdriver/printer.cc271
-rw-r--r--contrib/groff/src/libs/libgroff/Makefile.sub84
-rw-r--r--contrib/groff/src/libs/libgroff/assert.cc34
-rw-r--r--contrib/groff/src/libs/libgroff/change_lf.cc37
-rw-r--r--contrib/groff/src/libs/libgroff/device.cc36
-rw-r--r--contrib/groff/src/libs/libgroff/errarg.cc118
-rw-r--r--contrib/groff/src/libs/libgroff/error.cc137
-rw-r--r--contrib/groff/src/libs/libgroff/fatal.cc27
-rw-r--r--contrib/groff/src/libs/libgroff/filename.cc1
-rw-r--r--contrib/groff/src/libs/libgroff/fmod.c28
-rw-r--r--contrib/groff/src/libs/libgroff/font.cc938
-rw-r--r--contrib/groff/src/libs/libgroff/fontfile.cc66
-rw-r--r--contrib/groff/src/libs/libgroff/getcwd.c54
-rw-r--r--contrib/groff/src/libs/libgroff/getopt.c1055
-rw-r--r--contrib/groff/src/libs/libgroff/getopt1.c188
-rw-r--r--contrib/groff/src/libs/libgroff/htmlindicate.cc97
-rw-r--r--contrib/groff/src/libs/libgroff/iftoa.c65
-rw-r--r--contrib/groff/src/libs/libgroff/illegal.cc19
-rw-r--r--contrib/groff/src/libs/libgroff/itoa.c43
-rw-r--r--contrib/groff/src/libs/libgroff/lf.cc62
-rw-r--r--contrib/groff/src/libs/libgroff/lineno.cc1
-rw-r--r--contrib/groff/src/libs/libgroff/macropath.cc30
-rw-r--r--contrib/groff/src/libs/libgroff/matherr.c45
-rw-r--r--contrib/groff/src/libs/libgroff/nametoindex.cc118
-rw-r--r--contrib/groff/src/libs/libgroff/new.cc68
-rw-r--r--contrib/groff/src/libs/libgroff/prime.cc26
-rw-r--r--contrib/groff/src/libs/libgroff/progname.cc1
-rw-r--r--contrib/groff/src/libs/libgroff/ptable.cc52
-rw-r--r--contrib/groff/src/libs/libgroff/putenv.c95
-rw-r--r--contrib/groff/src/libs/libgroff/searchpath.cc132
-rw-r--r--contrib/groff/src/libs/libgroff/strerror.c41
-rw-r--r--contrib/groff/src/libs/libgroff/string.cc311
-rw-r--r--contrib/groff/src/libs/libgroff/strsave.cc31
-rw-r--r--contrib/groff/src/libs/libgroff/strtol.c128
-rw-r--r--contrib/groff/src/libs/libgroff/tmpfile.cc186
-rw-r--r--contrib/groff/src/preproc/eqn/Makefile.sub59
-rw-r--r--contrib/groff/src/preproc/eqn/TODO49
-rw-r--r--contrib/groff/src/preproc/eqn/box.cc611
-rw-r--r--contrib/groff/src/preproc/eqn/box.h277
-rw-r--r--contrib/groff/src/preproc/eqn/delim.cc381
-rw-r--r--contrib/groff/src/preproc/eqn/eqn.cc1277
-rw-r--r--contrib/groff/src/preproc/eqn/eqn.h51
-rw-r--r--contrib/groff/src/preproc/eqn/eqn.man882
-rw-r--r--contrib/groff/src/preproc/eqn/eqn.y331
-rw-r--r--contrib/groff/src/preproc/eqn/eqn_tab.h67
-rw-r--r--contrib/groff/src/preproc/eqn/lex.cc1165
-rw-r--r--contrib/groff/src/preproc/eqn/limit.cc195
-rw-r--r--contrib/groff/src/preproc/eqn/list.cc237
-rw-r--r--contrib/groff/src/preproc/eqn/main.cc419
-rw-r--r--contrib/groff/src/preproc/eqn/mark.cc121
-rw-r--r--contrib/groff/src/preproc/eqn/neqn.man21
-rw-r--r--contrib/groff/src/preproc/eqn/neqn.sh4
-rw-r--r--contrib/groff/src/preproc/eqn/other.cc601
-rw-r--r--contrib/groff/src/preproc/eqn/over.cc196
-rw-r--r--contrib/groff/src/preproc/eqn/pbox.h141
-rw-r--r--contrib/groff/src/preproc/eqn/pile.cc293
-rw-r--r--contrib/groff/src/preproc/eqn/script.cc221
-rw-r--r--contrib/groff/src/preproc/eqn/special.cc115
-rw-r--r--contrib/groff/src/preproc/eqn/sqrt.cc179
-rw-r--r--contrib/groff/src/preproc/eqn/text.cc528
-rw-r--r--contrib/groff/src/preproc/grn/Makefile.sub17
-rw-r--r--contrib/groff/src/preproc/grn/README60
-rw-r--r--contrib/groff/src/preproc/grn/gprint.h84
-rw-r--r--contrib/groff/src/preproc/grn/grn.man636
-rw-r--r--contrib/groff/src/preproc/grn/hdb.cc326
-rw-r--r--contrib/groff/src/preproc/grn/hgraph.cc1043
-rw-r--r--contrib/groff/src/preproc/grn/hpoint.cc49
-rw-r--r--contrib/groff/src/preproc/grn/main.cc905
-rw-r--r--contrib/groff/src/preproc/html/Makefile.sub7
-rw-r--r--contrib/groff/src/preproc/html/pre-html.cc1160
-rw-r--r--contrib/groff/src/preproc/html/pre-html.h37
-rw-r--r--contrib/groff/src/preproc/html/pushbackbuffer.cc337
-rw-r--r--contrib/groff/src/preproc/html/pushbackbuffer.h54
-rw-r--r--contrib/groff/src/preproc/pic/Makefile.sub31
-rw-r--r--contrib/groff/src/preproc/pic/TODO37
-rw-r--r--contrib/groff/src/preproc/pic/common.cc497
-rw-r--r--contrib/groff/src/preproc/pic/common.h70
-rw-r--r--contrib/groff/src/preproc/pic/lex.cc1940
-rw-r--r--contrib/groff/src/preproc/pic/main.cc635
-rw-r--r--contrib/groff/src/preproc/pic/object.cc1833
-rw-r--r--contrib/groff/src/preproc/pic/object.h217
-rw-r--r--contrib/groff/src/preproc/pic/output.h79
-rw-r--r--contrib/groff/src/preproc/pic/pic.cc5216
-rw-r--r--contrib/groff/src/preproc/pic/pic.h104
-rw-r--r--contrib/groff/src/preproc/pic/pic.man883
-rw-r--r--contrib/groff/src/preproc/pic/pic.y1812
-rw-r--r--contrib/groff/src/preproc/pic/pic_tab.h131
-rw-r--r--contrib/groff/src/preproc/pic/position.h47
-rw-r--r--contrib/groff/src/preproc/pic/tex.cc412
-rw-r--r--contrib/groff/src/preproc/pic/text.h28
-rw-r--r--contrib/groff/src/preproc/pic/troff.cc504
-rw-r--r--contrib/groff/src/preproc/refer/Makefile.sub23
-rw-r--r--contrib/groff/src/preproc/refer/TODO124
-rw-r--r--contrib/groff/src/preproc/refer/command.cc807
-rw-r--r--contrib/groff/src/preproc/refer/command.h36
-rw-r--r--contrib/groff/src/preproc/refer/label.cc1602
-rw-r--r--contrib/groff/src/preproc/refer/label.y1177
-rw-r--r--contrib/groff/src/preproc/refer/ref.cc1160
-rw-r--r--contrib/groff/src/preproc/refer/ref.h120
-rw-r--r--contrib/groff/src/preproc/refer/refer.cc1234
-rw-r--r--contrib/groff/src/preproc/refer/refer.h78
-rw-r--r--contrib/groff/src/preproc/refer/refer.man1302
-rw-r--r--contrib/groff/src/preproc/refer/token.cc378
-rw-r--r--contrib/groff/src/preproc/refer/token.h88
-rw-r--r--contrib/groff/src/preproc/soelim/Makefile.sub6
-rw-r--r--contrib/groff/src/preproc/soelim/TODO1
-rw-r--r--contrib/groff/src/preproc/soelim/soelim.cc347
-rw-r--r--contrib/groff/src/preproc/soelim/soelim.man85
-rw-r--r--contrib/groff/src/preproc/tbl/Makefile.sub12
-rw-r--r--contrib/groff/src/preproc/tbl/main.cc1528
-rw-r--r--contrib/groff/src/preproc/tbl/table.cc2778
-rw-r--r--contrib/groff/src/preproc/tbl/table.h152
-rw-r--r--contrib/groff/src/preproc/tbl/tbl.man178
-rw-r--r--contrib/groff/src/roff/groff/Makefile.sub8
-rw-r--r--contrib/groff/src/roff/groff/groff.cc731
-rw-r--r--contrib/groff/src/roff/groff/groff.man47
-rw-r--r--contrib/groff/src/roff/groff/pipeline.c411
-rw-r--r--contrib/groff/src/roff/groff/pipeline.h30
-rw-r--r--contrib/groff/src/roff/grog/Makefile.sub26
-rw-r--r--contrib/groff/src/roff/grog/grog.man86
-rw-r--r--contrib/groff/src/roff/grog/grog.pl183
-rw-r--r--contrib/groff/src/roff/grog/grog.sh91
-rw-r--r--contrib/groff/src/roff/nroff/Makefile.sub20
-rw-r--r--contrib/groff/src/roff/nroff/nroff.man16
-rwxr-xr-xcontrib/groff/src/roff/nroff/nroff.sh15
-rw-r--r--contrib/groff/src/roff/troff/Makefile.sub48
-rw-r--r--contrib/groff/src/roff/troff/TODO134
-rw-r--r--contrib/groff/src/roff/troff/charinfo.h171
-rw-r--r--contrib/groff/src/roff/troff/column.cc732
-rw-r--r--contrib/groff/src/roff/troff/dictionary.cc212
-rw-r--r--contrib/groff/src/roff/troff/dictionary.h92
-rw-r--r--contrib/groff/src/roff/troff/div.cc1161
-rw-r--r--contrib/groff/src/roff/troff/div.h156
-rw-r--r--contrib/groff/src/roff/troff/env.cc3439
-rw-r--r--contrib/groff/src/roff/troff/env.h350
-rw-r--r--contrib/groff/src/roff/troff/hvunits.h340
-rw-r--r--contrib/groff/src/roff/troff/input.cc6891
-rw-r--r--contrib/groff/src/roff/troff/input.h92
-rw-r--r--contrib/groff/src/roff/troff/node.cc5621
-rw-r--r--contrib/groff/src/roff/troff/node.h584
-rw-r--r--contrib/groff/src/roff/troff/number.cc692
-rw-r--r--contrib/groff/src/roff/troff/reg.cc473
-rw-r--r--contrib/groff/src/roff/troff/reg.h76
-rw-r--r--contrib/groff/src/roff/troff/request.h84
-rw-r--r--contrib/groff/src/roff/troff/symbol.cc150
-rw-r--r--contrib/groff/src/roff/troff/symbol.h73
-rw-r--r--contrib/groff/src/roff/troff/token.h218
-rw-r--r--contrib/groff/src/roff/troff/troff.h88
-rw-r--r--contrib/groff/src/roff/troff/troff.man2462
-rw-r--r--contrib/groff/src/utils/addftinfo/Makefile.sub11
-rw-r--r--contrib/groff/src/utils/addftinfo/addftinfo.cc218
-rw-r--r--contrib/groff/src/utils/addftinfo/addftinfo.man107
-rw-r--r--contrib/groff/src/utils/addftinfo/guess.cc490
-rw-r--r--contrib/groff/src/utils/addftinfo/guess.h44
-rw-r--r--contrib/groff/src/utils/afmtodit/Makefile.sub23
-rw-r--r--contrib/groff/src/utils/afmtodit/afmtodit.man225
-rw-r--r--contrib/groff/src/utils/afmtodit/afmtodit.pl331
-rw-r--r--contrib/groff/src/utils/hpftodit/Makefile.sub6
-rw-r--r--contrib/groff/src/utils/hpftodit/hpftodit.cc827
-rw-r--r--contrib/groff/src/utils/hpftodit/hpftodit.man155
-rw-r--r--contrib/groff/src/utils/indxbib/Makefile.sub31
-rw-r--r--contrib/groff/src/utils/indxbib/dirnamemax.c49
-rw-r--r--contrib/groff/src/utils/indxbib/eign133
-rw-r--r--contrib/groff/src/utils/indxbib/indxbib.cc805
-rw-r--r--contrib/groff/src/utils/indxbib/indxbib.man207
-rw-r--r--contrib/groff/src/utils/indxbib/signal.c63
-rw-r--r--contrib/groff/src/utils/lkbib/Makefile.sub6
-rw-r--r--contrib/groff/src/utils/lkbib/lkbib.cc137
-rw-r--r--contrib/groff/src/utils/lkbib/lkbib.man110
-rw-r--r--contrib/groff/src/utils/lookbib/Makefile.sub7
-rw-r--r--contrib/groff/src/utils/lookbib/lookbib.cc140
-rw-r--r--contrib/groff/src/utils/lookbib/lookbib.man78
-rw-r--r--contrib/groff/src/utils/pfbtops/Makefile.sub6
-rw-r--r--contrib/groff/src/utils/pfbtops/pfbtops.c131
-rw-r--r--contrib/groff/src/utils/pfbtops/pfbtops.man44
-rw-r--r--contrib/groff/src/utils/tfmtodit/Makefile.sub6
-rw-r--r--contrib/groff/src/utils/tfmtodit/tfmtodit.cc874
-rw-r--r--contrib/groff/src/utils/tfmtodit/tfmtodit.man175
-rw-r--r--contrib/groff/src/xditview/ChangeLog413
-rw-r--r--contrib/groff/src/xditview/DESC9
-rw-r--r--contrib/groff/src/xditview/Dvi.c573
-rw-r--r--contrib/groff/src/xditview/Dvi.h46
-rw-r--r--contrib/groff/src/xditview/DviChar.c664
-rw-r--r--contrib/groff/src/xditview/DviChar.h37
-rw-r--r--contrib/groff/src/xditview/DviP.h233
-rw-r--r--contrib/groff/src/xditview/FontMap17
-rw-r--r--contrib/groff/src/xditview/GXditview-ad.h52
-rw-r--r--contrib/groff/src/xditview/GXditview.ad57
-rw-r--r--contrib/groff/src/xditview/INSTALL20
-rw-r--r--contrib/groff/src/xditview/Imakefile.in104
-rw-r--r--contrib/groff/src/xditview/Menu.h46
-rw-r--r--contrib/groff/src/xditview/README14
-rw-r--r--contrib/groff/src/xditview/TODO17
-rw-r--r--contrib/groff/src/xditview/XFontName.c256
-rw-r--r--contrib/groff/src/xditview/XFontName.h45
-rw-r--r--contrib/groff/src/xditview/ad2c62
-rw-r--r--contrib/groff/src/xditview/device.c600
-rw-r--r--contrib/groff/src/xditview/device.h21
-rw-r--r--contrib/groff/src/xditview/draw.c721
-rw-r--r--contrib/groff/src/xditview/font.c471
-rw-r--r--contrib/groff/src/xditview/gray1.bm4
-rw-r--r--contrib/groff/src/xditview/gray2.bm4
-rw-r--r--contrib/groff/src/xditview/gray3.bm4
-rw-r--r--contrib/groff/src/xditview/gray4.bm4
-rw-r--r--contrib/groff/src/xditview/gray5.bm4
-rw-r--r--contrib/groff/src/xditview/gray6.bm4
-rw-r--r--contrib/groff/src/xditview/gray7.bm4
-rw-r--r--contrib/groff/src/xditview/gray8.bm4
-rw-r--r--contrib/groff/src/xditview/gxditview.man246
-rw-r--r--contrib/groff/src/xditview/lex.c103
-rw-r--r--contrib/groff/src/xditview/page.c88
-rw-r--r--contrib/groff/src/xditview/parse.c335
-rw-r--r--contrib/groff/src/xditview/xdit.bm14
-rw-r--r--contrib/groff/src/xditview/xdit_mask.bm14
-rw-r--r--contrib/groff/src/xditview/xditview.c594
-rw-r--r--contrib/groff/src/xditview/xtotroff.c311
-rwxr-xr-xcontrib/groff/test-groff3
-rw-r--r--contrib/groff/tmac/Makefile.sub97
-rw-r--r--contrib/groff/tmac/X.tmac48
-rw-r--r--contrib/groff/tmac/Xps.tmac46
-rw-r--r--contrib/groff/tmac/a4.tmac12
-rw-r--r--contrib/groff/tmac/an-old.tmac478
-rw-r--r--contrib/groff/tmac/an.tmac3
-rw-r--r--contrib/groff/tmac/andoc.tmac14
-rw-r--r--contrib/groff/tmac/doc-common1258
-rw-r--r--contrib/groff/tmac/doc-ditroff550
-rw-r--r--contrib/groff/tmac/doc-nroff426
-rw-r--r--contrib/groff/tmac/doc-old.tmac1858
-rw-r--r--contrib/groff/tmac/doc-syms880
-rw-r--r--contrib/groff/tmac/doc.tmac6189
-rw-r--r--contrib/groff/tmac/dvi.tmac147
-rw-r--r--contrib/groff/tmac/e.tmac1663
-rw-r--r--contrib/groff/tmac/fixmacros.sed1
-rw-r--r--contrib/groff/tmac/groff_man.man82
-rw-r--r--contrib/groff/tmac/groff_mdoc.man4257
-rw-r--r--contrib/groff/tmac/groff_me.man16
-rw-r--r--contrib/groff/tmac/groff_ms.man17
-rw-r--r--contrib/groff/tmac/groff_mwww.man275
-rw-r--r--contrib/groff/tmac/groff_tmac.man116
-rw-r--r--contrib/groff/tmac/html.tmac47
-rw-r--r--contrib/groff/tmac/hyphen.us4449
-rw-r--r--contrib/groff/tmac/latin1.tmac103
-rw-r--r--contrib/groff/tmac/lbp.tmac15
-rw-r--r--contrib/groff/tmac/lj4.tmac20
-rw-r--r--contrib/groff/tmac/man.local4
-rw-r--r--contrib/groff/tmac/man.tmac3
-rw-r--r--contrib/groff/tmac/mandoc.tmac3
-rw-r--r--contrib/groff/tmac/mdoc.local2
-rw-r--r--contrib/groff/tmac/mdoc.tmac3
-rw-r--r--contrib/groff/tmac/me.tmac3
-rw-r--r--contrib/groff/tmac/ms.tmac3
-rw-r--r--contrib/groff/tmac/mwww.tmac3
-rw-r--r--contrib/groff/tmac/pic.tmac12
-rw-r--r--contrib/groff/tmac/ps.tmac54
-rw-r--r--contrib/groff/tmac/psatk.tmac63
-rw-r--r--contrib/groff/tmac/psfig.tmac89
-rw-r--r--contrib/groff/tmac/psold.tmac61
-rw-r--r--contrib/groff/tmac/pspic.tmac60
-rw-r--r--contrib/groff/tmac/s.tmac1934
-rw-r--r--contrib/groff/tmac/safer.tmac5
-rw-r--r--contrib/groff/tmac/strip.sed10
-rw-r--r--contrib/groff/tmac/trace.tmac29
-rw-r--r--contrib/groff/tmac/troffrc28
-rw-r--r--contrib/groff/tmac/troffrc-end17
-rw-r--r--contrib/groff/tmac/tty-char.tmac204
-rw-r--r--contrib/groff/tmac/tty.tmac50
-rw-r--r--contrib/groff/tmac/www.tmac211
-rw-r--r--contrib/groff/win32-diffs11
624 files changed, 227190 insertions, 4270 deletions
diff --git a/contrib/groff/ChangeLog b/contrib/groff/ChangeLog
index 897767e919dd..e9b435aafa04 100644
--- a/contrib/groff/ChangeLog
+++ b/contrib/groff/ChangeLog
@@ -1,3 +1,1755 @@
+Version 1.17 released
+=====================
+
+2001-04-17 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/Makefile.sub (install-data): mdoc.local-s is in current
+ directory, not in $(srcdir).
+
+2001-04-16 Werner LEMBERG <wl@gnu.org>
+
+ * doc/groff.texinfo: More info on conditionals.
+
+2001-04-15 Werner LEMBERG <wl@gnu.org>
+
+ * doc/groff.texinfo: Added some info about groff internals.
+
+ * src/roff/troff/node.cc (make_glyph_node): Emit warning message
+ about missing special character only if the name is non-null.
+
+2001-04-14 Werner LEMBERG <wl@gnu.org>
+
+ Removing the grohtml-old device driver which is now obsolete.
+
+ * src/devices/grohtml-old/*: Removed.
+ * font/devhtml-old/*: Removed.
+ * src/libgroff/htmlindicate.cc (graphic_start, graphic_end): Remove
+ comments.
+ * Makefile.in (CCPROGDIRS, DEVDIRS): Updated.
+ * test-groff (PATH): Updated.
+ * tmac/Makefile.sub (NORMALFILES): Updated.
+ * tmac/an-old.tmac: Remove special code for html-old device.
+ Replace `html-or-html-old' register with `an-html'.
+ * tmac/eqnrc: Updated.
+ * tmac/html-old.tmac: Removed.
+ * tmac/troffrc, tmac/troffrc-end: Updated.
+ * tmac/www.tmac: Remove special code for html-old device.
+ Replace `html-or-html-old' register with `www-html'.
+
+ * src/libgroff/tmpfile.cc (remove_tmp_files),
+ src/libgroff/htmlindicate.cc (graphic_end), include/htmlindicate.h,
+ src/preproc/grn/*.cc, src/roff/groff/env.{cc,h}: Remove `void'
+ parameter if used as a single argument for consistency with rest of
+ source code.
+
+ * aclocal.m4, tmac/an-old.tmac: Fix copyright.
+
+2001-04-13 Ruslan Ermilov <ru@FreeBSD.org>
+
+ * src/roff/troff/troff.man: Fixing typos.
+
+2001-04-13 Werner LEMBERG <wl@gnu.org>
+
+ * doc/pic.ms: Fixing many font switches.
+ * doc/groff.texinfo: Fixes, additions.
+ * MORE.STUFF: Updated.
+
+2001-04-12 Gaius Mulley <gaius@glam.ac.uk>
+
+ * src/devices/grohtml/grohtml.man: Updated manual page regarding
+ simple anchor.
+ * src/preproc/html/pre-html.cc (createImage): Fixed right hand
+ cropping of images.
+ (removeTempFiles): New function to tidy up temporary files.
+ * src/preproc/html/pre-html.cc (main): Calls `removeTempFiles()'.
+ Many fixes to do with the new inline suppress node and image regions
+ are much tighter.
+ * src/devices/grohtml/post-html.cc: New method `is_auto_img'.
+ (generate_img_src): New function.
+ (html_printer::do_auto_image): Utilizes it.
+ (do_heading, do_title): Include inline images within their contents.
+ (html_printer::begin_page): Tidied up comments that are issued to
+ the html output file.
+ (html_printer::do_fill): Fixed so that `.nf' works with fonts other
+ than courier.
+ (text_glob::is_br): New method used by do_heading.
+ * tmac/s.tmac: If -Thtml then emit $1 in .IP rather than its
+ equivalent diversion.
+ * src/include/html-strings.h: Altered image tags to reflect the
+ inline image node.
+ * src/include/htmlindicate.h (html_end_suppress): Added `is_inline'
+ parameter.
+ * src/preproc/eqn/main.cc: Will suppress generation of image tags if
+ it is already inside a pic image. Only emit tags if the argument
+ `-Tps:html' is present.
+ * src/preproc/tbl/main.cc: Changes to reflect additional
+ `html_end_suppress' parameter.
+ * src/roff/troff/env.cc: Only emit eol tag if a node has been
+ emitted since the last eol tag was written.
+ * src/roff/troff/env.h: New boolean `emitted_node'.
+ * src/roff/troff/input.cc (do_suppress): Handles extra suppress
+ nodes \O3, \O4, \O5. No longer use `output_low_mark_miny'.
+ * src/roff/troff/node.cc (check_charinfo): New method.
+ (troff_output_file::determine_line_limits): Alterations to limit
+ checking.
+ * tmac/www.tmac: Changes to reflect new suppress nodes.
+
+2001-04-12 Bruno Haible <haible@clisp.cons.org>
+
+ * src/devices/grohtml/post-html.cc (html_printer::add_to_sbuf):
+ Escape the html_glyph in the buffer.
+ (str_translate_to_html): Output the unescaped escaped_char.
+ * src/devices/grohtml/html-text.cc (issue_table_begin): Set
+ `frame=void', not `frame=none'. Add `border=0'.
+
+2001-04-12 Ruslan Ermilov <ru@FreeBSD.org>
+
+ * contrib/mm/groff_mm.man: Fixing some typos.
+
+2001-04-12 Werner LEMBERG <wl@gnu.org>
+
+ * PROBLEMS: Add some words on how to avoid wrapper macros.
+
+2001-04-11 Blake McBride <blake@florida-software.com>
+
+ * src/include/nonposix.h (fileno) [_MSC_VER]: Removed.
+
+2001-04-11 Werner LEMBERG <wl@gnu.org>
+
+ * font/devlbp/Makefile.sub (CLEANADD): Set it.
+ * tmac/Makefile.sub (CLEANADD): Add tmac.local-s.
+ * Makefile.in (dist): Don't remove src/xditview/Imakefile, but ...
+ * Makefile.sub (DISTCLEANFILES): Here.
+
+ * libs/libgroff/new.cc: Include `nonposix.h'.
+ * win32-diffs: Updated.
+
+2001-04-10 Ruslan Ermilov <ru@FreeBSD.org>
+
+ Added skeleton macro for defunct macros.
+
+ Updated documentation.
+
+ When inside displays, an empty input line warning should be
+ suppressed. If another macro call is put inside a display,
+ all subsequent empty lines found in that display caused a
+ warning to be emitted.
+
+ * tmac/doc.tmac (doc-defunct-macro): New macro.
+ (Db, Ds, Ex, Or, Sf): Reimplemented using this macro.
+ (doc-restore-global-vars): Fixed typo.
+ (doc-empty-line): Check the `doc-display-depth' register to
+ determine whether we are inside display or not.
+
+ * tmac/doc-common: Removed `Or' and `Sf' registers.
+ Moved obsolete `Ds' macro to doc.tmac.
+
+ * tmac/groff_mdoc.man: Bump document date.
+ Document `.Vt' under ``Variable Types''.
+ Removed documentation for obsolete `.Or' macro.
+
+2001-04-10 Werner LEMBERG <wl@gnu.org>
+
+ * NEWS: Updated.
+ * doc/groff.texinfo: Many fixes, additions, clarifications, etc.
+
+2001-04-10 Bruno Haible <haible@clisp.cons.org>
+
+ * src/devices/grodvi/dvi.cc (main): Accept --help and --version.
+ (usage): Add stream argument. Don't exit.
+ * src/devices/grohtml/post-html.cc (main): Accept --help and --version.
+ Write --version output to stdout, not stderr.
+ (usage): Add stream argument. Don't exit.
+ * src/devices/grohtml-old/html.cc (main): Accept --help and --version.
+ (usage): Add stream argument. Don't exit.
+ * src/devices/grolbp/lbp.cc (long_options): Use symbolic getopt.h
+ constants.
+ (usage): Add stream argument. Don't exit.
+ (main): Write --help output to stdout, not stderr.
+ * src/devices/grolj4/lj4.cc (main): Accept --help and --version.
+ (usage): Add stream argument. Don't exit.
+ * src/devices/grops/ps.cc (main): Accept --help and --version.
+ (usage): Add stream argument. Don't exit.
+ * src/devices/grotty/tty.cc (main): Accept --help and --version.
+ (usage): Add stream argument. Don't exit.
+ * src/preproc/eqn/main.cc (usage): Add stream argument. Don't exit.
+ (main): Accept --help and --version.
+ * src/preproc/grn/main.cc (usage): Add stream argument. Don't exit.
+ (main): Accept --help and --version.
+ * src/preproc/html/pre-html.cc (usage): Add stream argument.
+ (scanArguments): Accept --help and --version.
+ * src/preproc/pic/main.cc (usage): Add stream argument. Don't exit.
+ (main): Accept --help and --version.
+ * src/preproc/refer/refer.cc (main): Accept --help and --version.
+ (usage): Add stream argument. Don't exit.
+ * src/preproc/soelim/soelim.cc (usage): Add stream argument. Don't
+ exit.
+ (main): Accept --help and --version.
+ * src/preproc/tbl/main.cc (usage): Add stream argument. Don't exit.
+ (main): Accept --help and --version.
+ * src/roff/groff/groff.cc (main): Accept --help and --version.
+ (synopsis): Add stream argument.
+ (help): Write --help output to stdout, not stderr.
+ (usage): Add stream argument. Don't exit.
+ * src/roff/grog/grog.pl: Accept --help and --version.
+ (help): New sub.
+ * src/roff/grog/grog.sh: Accept --help and --version.
+ * src/roff/nroff/nroff.sh: Accept --help and --version.
+ * src/roff/troff/input.cc (USAGE_EXIT_CODE): Remove macro.
+ (usage): Add stream argument. Don't exit.
+ (main): Accept --help and --version.
+ * src/utils/addftinfo/addftinfo.cc (main): Accept --help and --version.
+ (usage): New function with stream argument, doesn't exit.
+ * src/utils/hpftodit/hpftodit.cc (main): Accept --help and --version.
+ (usage): New function with stream argument, doesn't exit.
+ * src/utils/indxbib/indxbib.cc (main): Accept --help and --version.
+ (usage): Add stream argument. Don't exit.
+ * src/utils/lkbib/lkbib.cc (usage): Add stream argument. Don't exit.
+ (main): Accept --help and --version.
+ * src/utils/lookbib/lookbib.cc (usage): Add stream argument. Don't
+ exit.
+ (main): Accept --help and --version.
+ * src/utils/pfbtops/pfbtops.c (usage): Add stream argument. Don't exit.
+ (main): Accept --help and --version.
+ * src/utils/tfmtodit/tfmtodit.cc (main): Accept --help and --version.
+ (usage): Add stream argument. Don't exit.
+
+2001-04-10 Ruslan Ermilov <ru@freebsd.org>
+
+ Fix indentation in SYNOPSIS.
+
+ Updated to include changes of latest BSD mdoc version (basically,
+ the only change is that `.Fn' and `.Fc' put a final semicolon after
+ a function declaration in the SYNOPSIS section).
+
+ * tmac/doc.tmac (doc-in-synopsis-count): Replaced with ...
+ (doc-in-synopsis-section): New variable. Updated all related
+ functions.
+ (doc-indent-synopsis-active): New register.
+ (Nd, Fn, Fo): Use it.
+ (Cd): It requires manipulation of \n[doc-indent-synopsis] so that
+ `.Cd' with long argument line produces indented wrapped lines.
+ Also, the misplaced `.nop \*[doc-Nm-font]\c'' caused extra
+ undesirable line break to be output.
+ (doc-do-func-decl, Nm, Vt, Fn, Fo): Remove extraneous calls to
+ `.rs'.
+ (Fn, Fc): Add final `;' to output.
+ (doc-save-global-vars, doc-restore-global-vars): Updated.
+ * tmac/doc-common: Remove `Ex' register.
+ Updated.
+ * tmac/doc-ditroff, tmac/doc-nroff, tmac/doc-syms: Updated
+ copyright.
+
+2001-04-06 Ruslan Ermilov <ru@freebsd.org>
+
+ * tmac/doc.tmac (Cd): Simplify code.
+ * tmac/groff_mdoc.man: Document some behaviour of `Cd' request.
+
+2001-04-06 Werner Lemberg <wl@gnu.org>
+
+ Implement continuous underlining for nroff mode. To do that, a new
+ request in the ditroff language has been added: `x u N' (N is 0
+ or 1).
+
+ \X and \Y are now transparent to end-of-sentence recognition.
+
+ * src/include/printer.h (printer): Add `type' parameter to `special'
+ method.
+ * src/libs/libdriver/printer.cc (printer::special): Updated.
+ * src/libs/libdriver/input.cc (do_file): Handle `x u N'.
+
+ * src/devices/dvi/dvi.cc (dvi_printer::special): Handle only
+ specials of type `p'.
+ * src/devices/grohtml/post-html.cc (html_printer::special): Ditto.
+ * src/devices/grohtml-old/html.cc (html_printer::special): Ditto.
+ * src/devices/grops/ps.cc (ps_printer::special): Ditto.
+ * src/devices/grotty/tty.cc: Add new enum CU_MODE.
+ (glyph::order): New method.
+ (tty_printer::add_char): Use it.
+ (tty_printer::special): New method.
+ (tty_printer::end_page): Implement it.
+
+ * src/roff/troff/node.h (special_node): Add `no_init_string' member.
+ * src/roff/troff/node.cc (special_node::special_node): Add parameter
+ to set `no_init_string'.
+ (special_node::tprint_start): Use it.
+ (special_node::same, special_node::copy): Updated.
+ (special_node::ends_sentence): New method.
+ (troff_output_file::start_special): Add parameter to include
+ inititialization of special conditionally.
+
+ * src/roff/troff/env.h (environment): New member `underline_spaces'.
+ * src/roff/troff/env.cc (do_underline_special): New function.
+ (environment::set_font): Use it.
+ (do_underline): Use it. This was `underline()'.
+ (underline): Call `do_underline()'.
+ (continuous_underline): New function which calls `do_underline()'.
+ (environment::newline): Use `do_underline_special()'.
+ (init_env_requests): Updated.
+
+ * NEWS, man/troff_out.man: Updated.
+
+2001-04-06 Bruno Haible <haible@clisp.cons.org>
+
+ * font/devutf8/R.proto: Fix code of 'shc'.
+
+2001-04-06 Ruslan Ermilov <ru@freebsd.org>
+
+ Many fixes. Diag lists can now be nested also; additionally,
+ `-compact' and `-offset' are supported.
+
+ * tmac/doc.tmac (doc-have-indent): Replaced with ...
+ (doc-list-have-indent-stackXXX): A new register stack.
+ (doc-have-diag-list): Removed.
+ (Bl): Use `doc-list-have-indent-stackXXX'.
+ (El): Updated.
+ (doc-diag-list): Use `doc-compact-list-stackXXX'.
+ (doc-tag-list): Use `doc-list-have-indent-stackXXX'.
+ (doc-set-vertical-and-indent): Ditto.
+ (doc-next-list-depth): Removed.
+ (doc-increment-list-stack): Updated.
+ (doc-decrement-list-stack): Use `doc-list-depth' instead of
+ `doc-next-list-depth'.
+ (doc-end-list, doc-end-column-list): Don't use
+ `doc-increment-list-stack'.
+ (doc-set-column-tab): Don't use `doc-list-offset-stackXXX'.
+ (doc-save-global-vars, doc-restore-global-vars): Updated.
+ * tmac/doc-common: Updated.
+ * tmac/groff_mdoc.man: Updated.
+ * NEWS: Fix typo.
+
+2001-04-02 Werner LEMBERG <wl@gnu.org>
+
+ * src/devices/grotty/grotty.man: Fix grammatical error.
+
+2001-03-30 Ruslan Ermilov <ru@freebsd.org>
+
+ Remove .Ld from mdoc package; replace it with special handling of
+ `...'.
+
+ * tmac/doc-common: Remove `Ld' register.
+ Uncomment `doc-volume-ds-*' strings.
+ Remove `doc-operating-system-default'.
+ (Os): Updated.
+ * tmac/doc-syms (Ld): Removed.
+ * tmac/doc.tmac (doc-parse-args, doc-parse-arg-vector): Handle
+ `...' specially.
+ * NEWS: Updated.
+
+ * tmac/groff_mdoc.man: Many fixes and updates.
+
+2001-03-29 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/troffrc-end: Protect data with `.do'. Reported by T. Kurt
+ Bond <tkb@tkb.mpl.com>.
+ * tmac/www.tmac: Save compatibility mode.
+
+2001-03-28 Ruslan Ermilov <ru@freebsd.org>
+
+ * tmac/groff_mdoc.man: Many fixes.
+
+2001-03-28 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/soelim/soelim.man: Document that `.<whitespace>so'
+ isn't recognized.
+
+2001-03-27 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/an-old.tmac (TP, an-do-tag): Reduce line length while in
+ diversion. This fixes overlong tags.
+
+2001-03-26 Werner LEMBERG <wl@gnu.org>
+
+ * doc/groff.texinfo: Fixed and improved documentation of fonts.
+ * tmac/doc-syms: Fix error messages.
+ * tmac/an-old.tmac: Remove incorrect double backslashes.
+
+2001-03-24 Ruslan Ermilov <ru@freebsd.org>
+
+ * tmac/Makefile.sub: Strip mdoc.local also
+ * tmac/strip.sed: Fixed.
+
+2001-03-24 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/doc-nroff, tmac/doc-ditroff: Implement -rSxx switch for
+ selecting the font size.
+ * tmac/groff_mdoc.man, NEWS: Document it.
+
+2001-03-23 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/div.cc (save_vertical_space): Add default argument
+ to `sv' request.
+ * src/roff/troff/env.cc (family_change): Make `.fam' accept no
+ argument to restore previous font family.
+ * src/roff/troff/troff.man, man/groff.man, NEWS: Updated.
+
+ * doc/groff.texinfo: More fixes and additions (mainly for font
+ manipulating commands).
+
+ * tmac/groff_mdoc.reference.man: Small updates and renamed to ...
+ * tmac/groff_mdoc.man: This. The quick reference has been removed.
+ * tmac/Makefile.sub, NEWS: Updated.
+
+2001-03-23 Werner LEMBERG <wl@gnu.org>
+
+ Replaced mdoc implementation. The new version is `state of the
+ art', using almost all new features of groff 1.17 -- it won't run
+ with older versions.
+
+ * tmac/doc.tmac: Completely rewritten.
+ * tmac/doc-common: Ditto.
+ * tmac/doc-nroff: Ditto.
+ * tmac/doc-ditroff: Ditto.
+ * tmac/doc-syms: Ditto.
+ * tmac/mdoc.local: New file.
+ * tmac/groff_mdoc.samples.man: Replaced with ...
+ * tmac/groff_mdoc.reference.man: New file, covering mdoc completely.
+ * tmac/strip.sed: Updated.
+ * tmac/Makefile.sub: Updated.
+ * INSTALL: Updated.
+
+ * tmac/groff_man.man: Add `man.local' to the FILES section.
+
+2001-03-22 Werner LEMBERG <wl@gnu.org>
+
+ * doc/groff.texinfo: Added many @noindent.
+ Replaced @end_Example -> @endExample.
+ Added info whether registers are r/o.
+ Many other additions and fixes.
+
+2001-03-21 Werner LEMBERG <wl@gnu.org>
+
+ * doc/groff.texinfo: Added macro @Var (and some hacks due to bugs
+ in makeinfo of texinfo 4.0) to be used in @Def* macros.
+ Improved @Def* macros: Now the exact syntax of request, register,
+ and escapes is shown.
+ Added macros for parentheses and brackets to be used in @Def*.
+ Many fixes and improvements of the documentation.
+
+2001-03-20 Werner LEMBERG <wl@gnu.org>
+
+ * doc/groff.texinfo: Added new index: `st' (for strings).
+ Added macros @Defstr(x).
+ Added macro @Example (adding @group).
+ Other minor improvements.
+
+2001-03-19 Werner LEMBERG <wl@gnu.org>
+
+ * doc/groff.texinfo: Added two new indices: `es' (for escapes) and
+ `rq' for requests. `fn' is no longer used.
+ Added macros @Defreq(x), @Defreg(x), and @Defesc(x).
+ Removed @Deffn(x).
+
+ * tmac/an-old.tmac (an-p-footer): If `cR' is set, replace page
+ number with name of man page.
+
+2001-03-19 Larry Kollar <kollar@alltel.net>
+
+ * doc/groff.texinfo: Complete revision. Added many @Deffn to gain
+ consistency.
+
+2001-03-19 Werner LEMBERG <wl@gnu.org>
+
+ * man/groff_font.man: Document `prepro', `postpro', and `print'.
+ * src/roff/groff/groff.man: Improve documentation of `-l' and `-L'.
+ * src/devices/grohtml/grohtml.man: Fixing typos.
+
+2001-03-19 Gaius Mulley <gaius@glam.ac.uk>
+
+ * tmac/s.tmac (@IP): Pass `.ip' html tag.
+ * tmac/groff_mwww.man: Remove .LINE macro
+ * tmac/www.tmac (LINE): Add `.ti'.
+
+ * src/devices/grohtml/post-html.cc (html_printer): New member
+ `indent'.
+ (html_printer::emit_raw): Use it.
+ (html_printer::do_linelength): Ditto.
+ (html_printer::do_pageoffset): Ditto.
+ (html_printer::do_indentation): Ditto.
+ (html_printer::do_tempindent): Ditto.
+ (html_printer::do_break): Ditto.
+ (html_printer::begin_page): Ditto.
+ (html_printer::do_indentedparagraph): New function.
+ (html_printer::troff_tag): Handle `.ip'.
+ * src/devices/grohtml/html-text.cc (html_text::issue_table_begin):
+ Add `<td width=...>' handling.
+ (html_text::do_table): Add parameter.
+ (html_text::do_indent): Updated.
+ * src/devices/groohtml/html-text.h: Updated.
+
+2001-03-16 Gaius Mulley <gaius@glam.ac.uk>
+
+ Introduced simple html tables to implement indentation.
+
+ * src/devices/grohtml/html.h (word, word_list): New structures.
+ (simple_output): Use it.
+ * src/devices/grohtml/post-html.cc: Add `INDENTATION'.
+ (html_printer): Improve indentation handling.
+ (html_printer::emit_raw): Set `in_table' element. Handle
+ indentation if set.
+ (html_printer::write_header): Move conditional downwards.
+ Don't allow whitespace in tags.
+ (html_printer::do_linelength): Handle line length and indentation
+ conditionally.
+ (html_printer::do_pageoffset): Handle indentation conditionally.
+ (html_printer::do_indentation): Ditto.
+ (html_printer::do_tempindent): New function member.
+ (html_printer::do_fill): Take care of indentation.
+ (html_printer::do_flush): Finish table.
+ (html_printer::do_links): Ditto.
+ (html_printer::do_break): New function for handling `.br' and `.ti'.
+ (html_printer::troff_tag): Use it.
+ Handle `.ti'.
+ (html_printer::flush_globs): Fix.
+ (html_printer::flush_page): Finish table.
+ (html_printer::html_printer): Fix error message. Set up
+ `linelength'.
+ (html_printer::add_to_sbuf): Remove special handling of character
+ code 255.
+ (to_unicode): Remove `stop()'.
+ (html_printer::write_title): Cleanup.
+ (html_printer::begin_page): Use `put_string()'. Handle indentation.
+ (html_printer::~html_printer): Flush text and end the line.
+ Use `put_string()'.
+ * src/devices/grohtml/html_text.h: Add more *_TAG enum values.
+ * src/devices/grohtml/html_text.cc (html_text::end_tag): Fix
+ emission of tags.
+ (html_text::start_tag): Disable newlines.
+ (html_text::table_is_void): New function.
+ (html_text::issue_table_begin): Ditto.
+ (html_text::issue_table_end): Ditto.
+ (html_text::push_para): Better table handling.
+ (html_text::do_indent): New function.
+ (html_text::do_table): Ditto.
+ (html_text::done_table): Ditto.
+ (html_text::do_tt): Handle PRE_TAG.
+ (html_text::is_in_table): New function.
+ (html_text::check_emit_text): Handle tables.
+ (html_text::do_emittext): Use `nl()'.
+ (html_text::do_para): Handle table.
+ (html_text::remove_def): New function.
+ * src/devices/grohtml/output.cc (word, word_list): Implement
+ methods.
+ (simple_output::end_line): Flush last word.
+ (simple_output::simple_comment): Ditto.
+ (simple_output::begin_comment): Recoded.
+ (simple_output::end_comment): Ditto.
+ (simple_output::comment_arg): Removed.
+ (simple_output::check_newline): Improve test and flush last word.
+ (simple_output::space_or_newline): Improved.
+ (simple_output::write_newline): Replaced with...
+ (simple_output::nl): This.
+ (simple_output::put_raw_char): Flush last word.
+ (simple_output::check_space): Removed.
+ (simple_output::put_translated_string): Ditto.
+ (simple_output::put_string): Simplified.
+ (simple_output::put_number): Updated.
+ (simple_output::put_float): Ditto.
+ (simple_output::put_symbol): Removed.
+ (simple_output::enable_newlines): Add `check_newline()'.
+ (simple_output::flush_last_word): New function.
+
+ * src/roff/troff/enc.cc (no_fill): Remove call to add_html_tag().
+ * src/roff/troff/div.cc (page_offset): Add call to add_html_tag().
+
+ * tmac/s.tmac (@PP, @IP): Add html conditional code.
+ * tmac/an-old.tmac (TP): Ditto.
+
+2001-03-09 Ruslan Ermilov <ru@freebsd.org>
+
+ * mdate.sh: Make it POSIX compliant.
+
+2001-03-09 Werner LEMBERG <wl@gnu.org>
+
+ Added the `return' request to end a macro immediately. It simply
+ pops iterators from the input stack until a macro iterator is found.
+
+ * src/roff/troff/input.cc (input_iterator::is_macro,
+ macro_iterator::is_macro): New member.
+ (input_return_boundary): New class to signal an immediate return
+ to while_request().
+ (input_stack::add_return_boundary, input_stack::is_return_boundary):
+ New functions.
+ (input_stack::clear): Use it.
+ (input_stack::pop_macro): New function.
+ (while_request): Use `is_return_boundary()'.
+ (return_macro_request): New function.
+ (init_input_requests): Use it.
+
+ * src/roff/troff/TODO: Updated.
+ * NEWS, src/roff/troff/troff.man, man/groff.man: Document it.
+
+2001-03-08 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/input.cc (input_iterator::is_boundary): Minor
+ cleanup.
+
+2001-03-07 Werner LEMBERG <wl@gnu.org>
+
+ Make `\B' more rigid.
+
+ * src/roff/troff/number.cc (parse_expr, parse_term): Add `rigid'
+ parameter.
+ (get_number_rigidly): New function.
+ * src/roff/troff/input.cc (do_expr_test): Use it.
+ * src/roff/troff/token.h: Updated.
+
+ * src/roff/troff/request.h: Fix typo (init_html_request ->
+ init_markup_request).
+
+2001-03-04 Gaius Mulley <gaius@glam.ac.uk>
+
+ Fixed grohtml handling of any named glyph for glyph indexes < 0x80.
+ Cosmetic changes to `.html-begin', `.html-end', `.html-image' which
+ are now `.begin', `.end', `.image'.
+
+ * src/devices/grohtml/post-html.cc: Adding UNICODE_DESC_START.
+ (html_printer::add_to_sbuf): Changing type of `code' parameter.
+ Use add_char_to_sbuf().
+ (to_unicode): New function.
+ (char_translate_to_html): Changing type of `ch' parameter.
+ Use `to_unicode()'.
+ (html_printer::~html_printer): Comment out doctype string.
+ * src/preproc/html/pre-html.cc (write_end_image): Use `.end'
+ instead of `.html-end'.
+ (write_start_image): Use `.begin' and `.image' instead of
+ `.html-begin' and `.html-image'.
+ * src/roff/troff/input.cc: Rename `html_level' to `begin_level'.
+ (html_begin): Renamed to ...
+ (begin): This.
+ (html_end): Renamed to ...
+ (end): This.
+ (html_image): Renamed to ...
+ (image): This.
+ (init_html_requests): Renamed to ...
+ (init_markup_requests): This.
+ * tmac/www.tmac: Updated.
+
+2001-02-28 Bram <bram@avontuur.org>
+
+ * src/libs/libgroff/font.cc (font_widths_cache): Fixing syntax of
+ constructor.
+
+2001-02-26 David Leonard <david.leonard@csee.uq.edu.au>
+
+ * doc/meref.me: Fixing some typos.
+
+2001-02-16 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/node.cc (space_node::get_hyphenation_type): New
+ method. Return `HYPHEN_MIDDLE' if it was `\:'.
+ * src/roff/troff/node.h: Updated.
+
+2001-02-17 Ruslan Ermilov <ru@FreeBSD.org>
+
+ * tmac/groff_tmac.man: Fix typo.
+
+2001-02-16 Werner LEMBERG <wl@gnu.org>
+
+ Fixing a bug which prevented proper end-of-sentence recognition
+ between an `unformatted' box and the following text. As a
+ consequence, vertical line distances are no longer preserved in
+ boxes after a call to `.unformat' -- because boxes aren't
+ line-oriented (contrary to diversions), this doesn't make sense
+ anyway.
+
+ * src/roff/troff/node.cc (*node::set_unformat_flag): Add return
+ value.
+ (vertical_size_node::set_unformat_flag): New method.
+ * src/roff/troff/node.hh: Updated.
+ * src/roff/troff/input.cc (word_space_node::reread,
+ hmotion_node::reread): Reset `unformat' flag after usage.
+ (unformat_macro): Append only if `set_unformat_flag()' returns
+ non-zero.
+ * src/roff/troff/troff.man: Updated.
+
+2001-02-15 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/troff.man, NEWS, man/groff.man: Improved
+ documentation of `asciify' and `unformat' requests.
+
+2001-02-13 Werner LEMBERG <wl@gnu.org>
+
+ Redesigned the `unformat' request. It is no longer connected with
+ `asciify' but rather uses new `reread()' methods if the `unformat'
+ flag is set. Additionally, the handling of space characters after
+ unformatting has been fixed so that they retain their width.
+
+ * src/roff/troff/node.h (width_list): New structure to store
+ original widths of spaces.
+ (node): Added `unformat' member.
+ Replaced `num_spaces' variable with `orig_width' list.
+ * src/roff/troff/node.cc (*node::asciify,
+ asciify_reverse_node_list): Removed `unformat_only' flag and related
+ code.
+ (word_space_node::asciify, word_space_node::word_space_node): Use
+ `orig_width'.
+ (word_space_node::~word_space_node): New destructor.
+ (word_space_node::copy): Updated to handle `orig_width'.
+ (hmotion_node::copy, unbreakable_space_node::copy): Updated.
+ (*node::merge_space): Update `orig_width' list if necessary.
+ (*node::set_unformat_flag): New methods to set the `unformat' flag.
+ * src/roff/troff/enc.cc (environment::space_newline): Use
+ `width_list'.
+ (environment::space): Added method to handle space width and
+ sentence space width as parameters. Use `width_list'.
+ (environment::make_tab_node): Updated.
+ * src/roff/troff/env.h: Updated.
+ * src/roff/troff/input.cc (word_space_node::reread,
+ unbreakable_space_node::reread, hmotion_node::reread): New methods
+ to handle nodes specially if `unformat' flag is set.
+ (do_asciify_macro): Renamed back to ...
+ (asciify_macro): This.
+ (unformat_macro): New implementation to simply set the `unformat'
+ flag.
+
+ * MORE.STUFF: Added more info about deroff.
+
+2001-02-08 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/node.h (unbreakable_space_node, hmotion_node,
+ space_char_hmotion_node, overstrike_node): Add `get_hyphen_list()'
+ and `add_self()' methods to avoid hyphenation. For example, the
+ hyphen list for `foo\0\0bar' was `foobar', causing insertion of a
+ soft hyphen after `foo'. Now the hyphen list is correctly
+ `foo<ignore><ignore>bar'.
+
+2001-02-05 Yoshiteru Kageyama <yt-kage@cb3.so-net.ne.jp>
+
+ * tmac/groff_tmac.man: Fix `BIR' macro.
+
+2001-02-04 Werner LEMBERG <wl@gnu.org>
+
+ A new escape sequence `\:', inserting a zero-width break point.
+
+ * src/roff/troff/input.h: Adding `ESCAPE_COLON'.
+ * src/roff/troff/input.cc (get_copy, token::next, asciify):
+ Implement it.
+ * src/roff/troff/node.h (node): Add `is_escape_colon()' virtual
+ method.
+ (space_node): Add `was_escape_colon' member. Add `is_escape_colon()'
+ and `asciify()' methods.
+ * src/roff/troff/node.cc (space_node::space_node): Updated.
+ (space_node::asciify): Handle `was_escape_colon'.
+ * NEWS, src/roff/troff/troff.man, man/groff.man: Document it.
+
+ Handle `\~' similar to other comparable requests.
+
+ * src/roff/troff/input.cc (process_input_stack): Remove now obsolete
+ label.
+ (token::next): Move creation of an unbreakable_space_node to...
+ (token::add_to_node_list): Here.
+
+ Fix a bug which sometimes prevented hyphenation of words connected
+ with `\~' or `\ ' (and other escape sequences handled as
+ TOKEN_NODE). This also fixes a hyphenation problem with boxes
+ (after a call to the `unformat' request).
+
+ * src/roff/troff/env.h (environment::possibly_break_line,
+ environment::hyphenate_line): Introducing `start_here' parameter.
+ * src/roff/troff/env.cc (environment::space_newline,
+ environment::space): Use it.
+ (environment::possibly_break_line, environment::hyphenate_line):
+ Implement it.
+ * src/roff/troff/input.cc (process_input_stack): Use it.
+ * src/roff/troff/node.h (unbreakable_space_node, hmotion_node,
+ space_char_hmotion_node, overstrike_node): Add
+ `get_hyphenation_type()' method.
+ * src/roff/troff/node.cc (break_char_node::asciify): Don't asciify
+ if `unformat_only' is active.
+
+2001-01-30 Werner LEMBERG <wl@gnu.org>
+
+ Implemented new read-only number register `.linetabs' which
+ returns 1 if in line-tabs mode, 0 otherwise.
+
+ * src/roff/troff/env.h (environment): Add get_line_tabs() member.
+ * src/roff/troff/env.cc (get_line_tabs): New function.
+ (init_env_requests): Use it.
+ * NEWS, src/roff/troff/troff.man, man/groff.man: Document it.
+
+ * VERSION, REVISION: Changing to 1.17.0.
+
+2001-01-28 Werner LEMBERG <wl@gnu.org>
+
+ Fixed a bug which prevented hyphenation of words which are finished
+ with `\)'.
+
+ * src/roff/troff/token.h (token): Add enum type
+ `TOKEN_TRANSPARENT_DUMMY' and method `transparent_dummy()'.
+ * src/roff/troff/input.cc (token::next, token::description,
+ get_line_arg, token::add_to_node_list, token::process): Use it.
+
+2001-01-27 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/div.h (diversion): Add `saved_prev_line_interrupted'.
+ * src/roff/troff/div.cc (do_divert): Use it.
+
+ * src/roff/troff/input.cc (asciify): Add ESCAPE_RIGHT_PARENTHESIS.
+
+2001-01-25 Werner LEMBERG <wl@gnu.org>
+
+ Adding the `linetabs' request. If set, tab distances are not
+ computed relative to the input line but relative to the output line.
+
+ * src/roff/troff/env.h (environment): New member `line_tabs'.
+ * src/roff/troff/env.cc (line_tabs_request): Implement request.
+ (environment::environment, environment::copy): Updated.
+ (environment::distance_to_next_tab): Use `line_tabs'.
+ (init_env_requests): Register request.
+ * src/roff/troff/troff.man, man/groff.man, NEWS: Document it. Other
+ fixes.
+
+2001-01-24 Werner LEMBERG <wl@gnu.org>
+
+ Introducing a new read-only register `.int' which is set to a
+ positive value if the last output line is interrupted (i.e., if it
+ contains `\c').
+
+ * src/roff/troff/env.cc (init_env_requests): Add it.
+ * NEWS, src/roff/troff/troff.man, man/groff.man: Document it.
+
+2001-01-23 Gaius Mulley <gaius@glam.ac.uk>
+
+ * tmac/mwww.tmac: Call `www.tmac', not `arkup.tmac'.
+ * src/preproc/html/pre-html.cc (findPrefix): New function which
+ generates the troff executable name via the system prefix.
+ * src/preproc/eqn/main.cc: Modified warning message.
+
+2001-01-23 Werner LEMBERG <wl@gnu.org>
+
+ troff's `box' and `boxa' requests didn't preserve temporary
+ indentation.
+
+ * src/roff/troff/div.h (diversion): Add `saved_saved_indent' and
+ `saved_target_text_length' members.
+ * src/roff/troff/div.cc (do_divert): Use them.
+
+ Tabs (but not yet leaders and fields) are now handled correctly by
+ `asciify' request.
+
+ * node.h (hmotion_node): Add field `was_tab'.
+ * env.cc (environment::make_tab_node): Set it.
+ * node.cc (hmotion_node::copy, hmotion_node::asciify): Use it.
+
+ Added new request `unformat' which will, contrary to `asciify',
+ preserve font information after unformatting (i.e., only nodes
+ dealing with horizontal space are converted back to input
+ characters).
+
+ * input.cc (asciify_macro): Renamed to ...
+ (do_asciify_macro): this, having a new parameter `unformat_only'.
+ (asciify_macro, unformat_macro): New; using do_asciify_macro.
+ (init_input_requests): Added `unformat'.
+ * node.cc (*_node::asciify), asciify_reverse_node_list: Added
+ parameter to control asciification process.
+ * node.h (*_node::asciify): Ditto.
+ * NEWS, src/roff/troff/troff.man, man/groff.man: Document it.
+
+2001-01-20 Werner LEMBERG <wl@gnu.org>
+
+ * doc/groff.texinfo: Minor improvement of `.in' documentation.
+
+2001-01-18 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/ps.tmac: Remove call of psold.tmac.
+ * tmac/psold.tmac: Comment updated.
+ * tmac/psnew.tmac: Removed since no longer needed.
+ * tmac/Makefile.sub, NEWS, src/devices/grops/grops.man: Updated.
+
+ * font/devutf8/R.proto: Adding `shc' glyph.
+ * font/devutf8/NOTES: Updated.
+
+ * test-groff: Updated.
+
+2001-01-15 Gaius Mulley <gaius@glam.ac.uk>
+
+ First cut of the new html device driver. Changes to pre-html and
+ the new grohtml are too numerous to be documented here.
+
+ Stuff related to `html' has been renamed to `html-old' and `html2'
+ stuff has been renamed to `html' (including directories). The new
+ html device driver is therefore invoked as `-Thtml'.
+
+ Added new `\O' escape to suppress output (needed by html driver).
+
+ Added functions and code to pass info about input-level commands
+ (`.in', `.fl', etc.) to html driver.
+
+ Three new functions (.html-begin, .html-end, and .html-image) for
+ better html handling: `html-begin' will execute the remaining line
+ if at the outermost nesting level, increasing an internal counter.
+ `html-end' does the same but decreases the internal counter.
+ `html_image' puts its arguments into a special node (suppress_node)
+ to define an image region.
+
+ The `output' request has been removed.
+
+ * tmac/html-tags.tmac: Removed.
+ * tmac/arkup.tmac: Updated and renamed to ...
+ * tmac/www.tmac: New file.
+ * tmac/markup.tmac Updated and renamed to ...
+ * tmac/mwww.tmac: New file.
+ * tmac/Makefile.sub: Updated.
+ * tmac/an-old.tmac: Updated.
+ * tmac/eqnrc: Updated.
+ * tmac/groff_man.man
+ * tmac/groff_markup.man: Updated and renamed to ...
+ * tmac/groff_mwww.man: New file.
+ * tmac/groff_tmac.man: Updated.
+ * tmac/html-old.tmac: Updated and Renamed from html.tmac.
+ * tmac/html.tmac: Updated and renamed from html2.tmac.
+ * tmac/pspic.tmac: Updated html support.
+ * tmac/s.tmac: Added html output support.
+ * tmac/troffrc, tmac/troffrc-end: Updated.
+
+ * Makefile.in, doc/Makefile: Updated.
+ * doc/groff.texinfo: Added info about new `\O' escape.
+ * doc/homepage.ms: Use `MAILTO' macro.
+
+ * font/devhtml/DESC.proto: Add `C' font.
+ * font/devhtml/Makefile.sub: Updated.
+ * font/devhtml/R.proto: Minor fixes.
+ * font/devhtml-old/Makefile.sub: Updated.
+
+ * src/devices/grohtml-old/Makefile.sub: Updated.
+
+ * src/libs/libdriver/printer.cc (printer::get_font_from_index): New
+ method.
+ * src/libs/libgroff/htmlindicate.cc (html_begin_suppress,
+ graphic_start): Add `inline' parameter. Update.
+ (html_end_suppress, graphic_end): Update.
+
+ * src/include/html-strings.h: New file.
+ * src/include/htmlindicate.h: Comments updated.
+ * src/include/printer.h: Updated.
+
+ * src/preproc/eqn/main.cc (do_file, main): Updated.
+ * src/preproc/pic/troff.cc (troff_output::start_picture,
+ troff_output::finish_picture): Updated.
+ * src/preproc/tbl/main.cc (process_input_file): Updated.
+
+ * src/roff/groff/groff.cc (main): Updated.
+ Pass device arguments to predrivers also.
+ Use `ps' device for `eqn' preprocessor if `-Thtml' is given.
+ * src/roff/troff/env.h (environment): Updated.
+ New elements `need_eol' and `ignore_next_eol' (for html output).
+ * src/roff/troff/env.cc (environment::environment): Add initializers
+ for `need_eol' and `ignore_next_eol'.
+ (environment::add_html_tag_eol, environment::add_html_tag_tabs): New
+ functions.
+ (point_size, fill, no_fill, center, right_justify, line_length,
+ indent, temporary_indent, break_request, handle_tab): Use
+ `add_html_tag()'.
+ (set_tabs): Use `add_html_tag_tabs()'.
+ (environment::add_html_tag): Updated.
+ (environment::do_break): Updated.
+ * src/roff/troff/div.cc (space_request, flush_output): Use
+ `environment::add_html_tag()'.
+ * src/roff/troff/input.cc: Updated.
+ New variable `html_level' to indicate nested `html-begin' requests.
+ (file_iterator::fill): Use `environment::add_html_tag_eol()'.
+ (non_interpreted_char_node, token_node, non_interpreted_node): Add
+ `force_tprint()' method.
+ (token::next): Handle `\O'.
+ (do_suppress): Implement it.
+ (html_begin, html_end, html_image): New functions.
+ (init_output_requests): Renamed to ...
+ (init_html_requests): this.
+ (main): Use it.
+ (macro::append_str, macro::append_unsigned, macro::append_int): New
+ methods.
+ New variable `output_low_mark_miny' to limit minimal value of y.
+ (reset_output_registers): Use it.
+ (output_request): Removed.
+ (get_output_registers): New function.
+ * src/roff/troff/node.h (node): Make `force_tprint()' virtual.
+ (*_node): Added `force_tprint()' if necessary.
+ (special_node): New elements `tf' and `get_tfont()'.
+ (suppress_node): New class.
+ * src/roff/troff/node.cc:
+ New global variables `image_no' and `suppress_start_page'.
+ (real_output_file): New method `is_on()'.
+ (troff_output_file): New method `start_special(tfont)'.
+ (troff_output_file::really_print_line): Use `tprint' conditionally.
+ (real_output_file::print_line): Updated.
+ (real_output_file::on): Updated.
+ (*_node): Added `force_tprint()'.
+ (special_node::special_node): Initializer updated.
+ (special_node::same, special_node::copy, special_node::tprint_start):
+ Updated.
+ (get_reg_int, get_reg_str): New functions.
+ (suppress_node::*): New methods.
+ New global variables last_position, last_image_filename;
+ (min): New inline function.
+ * src/roff/troff/reg.h, src/roff/troff/request.h,
+ src/roff/troff/troff.h: Updated.
+
+2001-01-13 Werner LEMBERG <wl@gnu.org>
+
+ * NEWS, src/roff/troff/troff.man, doc/groff.texinfo: Fix
+ documentation of `asciify' request.
+
+2001-01-12 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/input.cc: Move definition of special characters
+ like `ESCAPE_TILDE' to ...
+ * src/roff/troff/input.h: New file.
+ * src/roff/troff/Makefile.sub (HDRS): Add it.
+
+ Extending the .asciify request to `unformat' space characters also.
+
+ * src/roff/troff/node.h (word_space_node): Add `num_spaces' element
+ to count input space characters.
+ Update constructors to take care of it.
+ * src/roff/troff/node.cc (space_char_hmotion_node::asciify): Use
+ `ESCAPE_SPACE' instead of normal space.
+ (word_space_node::asciify): New method.
+ (unbreakable_space_node::asciify): New method.
+ (word_space_node::merge_space): New method.
+ * src/roff/troff/env.cc (environment::space_newline,
+ environment::space): Add code to initialize `num_spaces' (using the
+ constructor of `word_space_node').
+ * NEWS, src/roff/troff/troff.man, man/groff.man, doc/groff.texinfo:
+ Document it.
+
+2001-01-09 Werner LEMBERG <wl@gnu.org>
+
+ * man/groff_char.man: Use table header traps only conditionally.
+
+2001-01-09 Bjarni Ingi Gíslason <bjarniig@hi.is>
+
+ * man/groff_char.man: Add `ý' and `Ý' to the `acute' group.
+
+2001-01-08 Werner LEMBERG <wl@gnu.org>
+
+ Introducing the `box' and `boxa' requests which are similar to
+ `di' resp. `da' but omitting a partially filled line (which is
+ restored after ending the diversion).
+
+ * src/roff/troff/div.h (diversion): Add elements to save partially
+ filled line.
+ * src/roff/troff/div.cc (do_divert): Add parameter `boxing' to save
+ partially filled line.
+ (divert, divert_append): Updated.
+ (box, box_append): New functions.
+ (init_div_requests): Use them.
+ * src/roff/troff/env.h (environment): do_divert() is now a friend.
+ * NEWS, src/roff/troff/troff.man, man/groff.man: Document it.
+
+ * doc/groff.texinfo: Fix documentation of `lf' request.
+
+2000-12-25 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/troff.man, NEWS: Document `writem' request.
+
+2000-12-21 Werner LEMBERG <wl@gnu.org>
+
+ Ignore `ss' request if in compatibility mode.
+
+ * src/roff/troff/input.cc: Make `compatible_flag' non-static.
+ * src/roff/troff/env.h: Added extern `compatible_flag' declaration.
+ * src/roff/troff/env.cc (space_size): Use it.
+
+ * doc/groff.texinfo, src/roff/troff/troff.man: Fix documentation of
+ `ss' request in nroff mode.
+
+ * tmac/an-old.tmac: Fixed some serious bugs introduced with latest
+ changes.
+
+2000-12-15 Ruslan Ermilov <ru@FreeBSD.org>
+
+ * tmac/troffrc, tmac/troffrc-end: Convert tmac.* to *.tmac.
+
+2000-12-13 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/eqn/Makefile.sub (MAN1): Added neqn.man.
+ * src/preproc/eqn/neqn.man: Small fixes and additions.
+
+2000-12-13 Ruslan Ermilov <ru@FreeBSD.org>
+
+ * src/utils/addftinfo/addftinfo.man, src/devices/grops/grops.man:
+ Fixing typo.
+
+ * src/preproc/eqn/neqn.man: New file.
+
+ * src/preproc/tbl/table.cc (table::print): Fix `indent cannot be
+ negative' warning.
+
+ * tmac/e.tmac: Add `T&' macro.
+ Fix `indent cannot be negative' warning.
+ * tmac/s.tmac: Fix `indent cannot be negative' warning.
+
+2000-12-07 Werner LEMBERG <wl@gnu.org>
+
+ * src/include/lib.h: Replaced __ALPHA with __alpha symbol.
+
+2000-12-06 Werner LEMBERG <wl@gnu.org>
+
+ * PROBLEMS: Added info about adding -lPW on HP-UX to satisfy the
+ `alloca' symbol .
+
+ * MORE.STUFF: Added info about deroff for djgpp.
+
+ * tmac/an-old.tmac, tmac/groff_man.man, doc/groff.texinfo, NEWS: Fix
+ documentation of -rcR switch.
+
+2000-12-03 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/an-old.tmac: Implementing the -rcR switch (similar to mdoc);
+ if -rcR=1 (which is now the default in nroff mode), a single, very
+ long page is created instead of multiple pages: All `ne' and `wh'
+ requests are put into conditionals; a new macro `an-end' is added to
+ be called with `em'.
+
+ Some other minor cleanups.
+
+ * NEWS, tmac/groff_man.man, doc/groff.texinfo: Updated.
+
+2000-12-02 Werner LEMBERG <wl@gnu.org>
+
+ Fixing a bug which prevented hyphenation in words followed
+ immediately by a TOKEN_NODE (e.g. `\ ', `\~', etc.).
+
+ * src/roff/troff/input.cc (process_input_stack <token::TOKEN_NODE>):
+ Adding possibly_break_line().
+ * src/roff/troff/env.h (environment): Make possibly_break_line()
+ public.
+
+ Make `\~' usable in .tr request.
+
+ * src/roff/troff/token.h (token_type): Add TOKEN_STRETCHABLE_SPACE.
+ (token): Add stretchable_space().
+ * src/roff/troff/input.cc (token::next, token::delimiter,
+ token::description, process_input_stack, do_translate,
+ add_to_node_list, token::process): Use it.
+ * src/roff/troff/node.h (node): Add fourth parameter to add_char()
+ for adjusting the space.
+ * src/roff/troff/node.cc (node::add_char): Implement it. Add code
+ for stretchable space.
+ * src/roff/troff/input.cc (token::add_to_node_list): Use it.
+ (make_node): Add code for stretchable space.
+ * src/roff/troff/env.cc (environment::add_char): Use it.
+ * src/roff/troff/input.cc: Add ESCAPE_TILDE special character.
+ (get_copy, token::next, transparent_translate, asciify): Use it.
+
+ * NEWS, src/roff/troff/troff.man, src/roff/troff/TODO,
+ doc/groff.texinfo: Updated.
+ * man/groff.man: Small reorderings.
+
+2000-11-23 Werner LEMBERG <wl@gnu.org>
+
+ * NEWS: Fixes.
+ * src/preproc/eqn/main.cc (main): Use `config_macro_path' for -M
+ option.
+ * src/roff/troff/input.cc (main): Add `config_macro_path' and
+ `safer_macro_path' to -M option.
+ * src/roff/troff/troff.man: Fixes.
+
+2000-11-22 Werner LEMBERG <wl@gnu.org>
+
+ Use safer path (except for config files) if -U isn't specified. Add
+ a special macro path (without home and current directory) for config
+ files. Add home directory to unsafe path for consistency. Don't
+ include the home directory in the font path.
+
+ * src/lib/libgroff/macropath.cc: Add `config_macro_path', change
+ `macro_path'.
+ * src/include/macropath.h: Add `config_macrp_path'.
+ * src/lib/libgroff/fontfile.cc: Fix font path.
+ * src/roff/troff/input.cc (process_startup_file): Use
+ `config_macro_path'.
+ (main): Select unsafe path if -U is given.
+
+ * src/preproc/eqn/main.cc (main): Fixing search path for
+ configuration file.
+ * src/preproc/eqn/eqn.man: Updated.
+
+ * src/roff/troff/troff.man, man/roff.man, tmac/groff_tmac.man:
+ Updated.
+
+ * src/preproc/grn/grn.man, src/devices/grodvi/grodvi.man,
+ src/devices/grohtml/grohtml.man, src/devices/grolbp/grplbp.man,
+ src/devices/grolj4/grolj4.man, src/devices/grops/grops.man,
+ src/devices/grotty/grotty.man: Updated.
+
+ * Makefile.in: Fix comments.
+
+2000-11-17 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/safer.tmac: Empty file added (again) for compatibility
+ reasons.
+ * tmac/Makefile.sub: Updated.
+
+2000-11-16 Werner LEMBERG <wl@gnu.org>
+
+ * src/devices/grodvi/dvi.cc (main),
+ src/devices/grohtml2/post-html.cc (main),
+ src/devices/grolbp/lbp.cc (main), src/devices/grolj4/lj4.cc
+ (main), src/devices/grops/ps.cc (main), src/devices/grotty/tty.cc
+ (main), src/preproc/eqn/main.cc (main), src/preproc/grn/main.cc
+ (main), src/preproc/html2/pre-html.cc (main),
+ src/preproc/pic/main.cc (main), src/preproc/refer/refer.cc (main),
+ src/preproc/soelim/soelim.cc (main), src/preproc/tbl/main.cc
+ (main), src/roff/groff/groff.cc (main), src/roff/troff/input.cc
+ (main), src/utils/hpftodit/hpftodit.cc (main),
+ src/utils/indxbib/indxbib.cc (main), src/utils/lkbib/lkbib.cc
+ (main), src/utils/lookbib/lookbib.cc (main),
+ src/utils/pfbtops/pfbtops.c (main), src/utils/tfmtodit/tfmtodit.cc
+ (main): Use stdout for -v.
+ * src/roff/groff/groff.cc (run_commands),
+ src/roff/groff/pipeline.c (run_pipeline): New parameter `no_pipe'
+ to make direct printing to stdout possible.
+ * src/roff/groff/pipeline.h: Updated.
+
+ * src/utils/afmtodit/afmtodit.pl: Add -v switch.
+ * src/utils/afmtodit/Makefile.sub (afmtodit): Use @VERSION@.
+ * src/utils/afmtodit/afmtodit.man: Updated.
+
+ * src/utils/addftinfo/addftinfo.cc (main): Add -v switch.
+ (version): New function.
+ (usage): Updated.
+ * src/utils/addftinfo/addftinfo.man: Updated.
+
+ * src/devices/*/*, src/preproc/*/*, src/roff/*/*, src/utils/*/*:
+ Fixing copyright dates.
+
+ * src/preproc/eqn/neqn.sh: Adding GROFF_BIN_PATH to path instead of
+ replacing it.
+
+ * src/devices/grolbp/lbp.cc (main): Use Version_string instead of
+ version_string.
+
+ * src/roff/nroff/Makefile.sub (nroff): Fix use of @VERSION@.
+
+2000-11-15 Werner LEMBERG <wl@gnu.org>
+
+ In all programs, make -v return immediately with exit status 0 to
+ be compliant with the GNU standard.
+
+ * src/devices/grodvi/dvi.cc (main),
+ src/devices/grohtml2/post-html.cc (main),
+ src/devices/grolbp/lbp.cc (main), src/devices/grolj4/lj4.cc
+ (main), src/devices/grops/ps.cc (main), src/devices/grotty/tty.cc
+ (main) src/preproc/eqn/main.cc (main), src/preproc/grn/main.cc
+ (main), src/preproc/html2/pre-html.cc (main),
+ src/preproc/pic/main.cc (main), src/preproc/refer/refer.cc (main),
+ src/preproc/soelim/soelim.cc (main), src/preproc/tbl/main.cc
+ (main), src/roff/groff/groff.cc (main), src/roff/troff/input.cc
+ (main): Implement it.
+ * NEWS: Updated.
+
+ * src/roff/groff/groff.cc (main): Add copyright notice. Add refer
+ and postprocessors to the -v option.
+
+ * src/roff/grog/grog.pl: Implement -v.
+ * src/roff/grog/Makefile.sub (grog): Use @VERSION@.
+ * src/roff/grog/grog.man, doc/groff.texinfo: Updated.
+
+ * src/roff/nroff/nroff.sh: Implement -v.
+ * src/roff/nroff/Makefile.sub (nroff): Use @VERSION@.
+ * src/roff/nroff/nroff.man: Updated.
+
+ * src/preproc/eqn/main.cc (main): Fix comment typo.
+
+ * MORE.STUFF: Added info about djgpp port of grap.
+
+2000-11-14 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/grog/grog.{pl,sh}: Implemented -C switch for compatibility
+ mode (or rather, implemented non-compatibility mode).
+ * NEWS, src/roff/grog/grog.man, doc/groff.texinfo: Updated.
+
+ * src/roff/groff/groff.cc (main): Add BIN_PATH to PATH instead of
+ replacing it -- we don't find gxditview otherwise.
+ * NEWS, src/roff/groff/groff.man, doc/groff.texinfo: Updated.
+
+ * src/preproc/pic/depend: Removed. Unnecessary.
+
+ Implemented dummy keyword `solid' in pic for compatibility with
+ AT&T pic.
+
+ * lex.cc (lookup_keyword): Added `solid'.
+ * pic.y: Added SOLID with dummy rule.
+ * pic.cc, pic_tab.h: Regenerated.
+ * doc/pic.ms: Updated.
+
+2000-11-13 Werner LEMBERG <wl@gnu.org>
+
+ For security reasons, don't use the current directory but the home
+ directory while searching and scanning troffrc and troffrc-end.
+ Similarly, replace the current directory with the home directory
+ in the font path.
+
+ * Makefile.in (fontpath, tmacpath): Remove current directory.
+
+ * src/libs/libgroff/searchpath.cc (search_path::search_path): Add
+ two parameters `add_home' and `add_current'.
+ (search_path::~search_path, search_path::command_line_dir,
+ search_path::open_file): Remove tests for `dirs' being zero.
+ * src/include/searchpath.h: Adjust.
+ * src/libs/libgroff/macropath.cc, src/include/macropath.h: Add
+ `safer_macro_path'.
+ * src/libs/libgroff/fontfile.cc: Adjust `font_path'.
+
+ * src/roff/troff/troff.h: Add `searchpath.h' and `mac_path'.
+ * src/roff/troff/input.cc: Use `mac_path', initialized with
+ `macro_path'.
+ (process_startup_file): Set `mac_path' to `safer_macro_path'.
+ * src/roff/troff/env.cc: Use `mac_path'.
+
+ * src/preproc/eqn/main.cc (main): Use `safer_macro_path'.
+
+ * NEWS, man/roff.man, src/roff/troff/troff.man,
+ src/roff/groff/groff.man, tmac/groff_tmac.man, arch/djgpp/README:
+ Updated.
+
+2000-11-12 Werner LEMBERG <wl@gnu.org>
+
+ * src/include/lib.h: Don't include groff-getopt.h for OSF/1.
+
+ * aclocal.m4 (GROFF_SYS_ERRLIST): Do test in C, not in C++.
+ * configure.in: Fix typo in comment.
+ * configure: Regenerated.
+
+ * src/libgroff/*, src/include/*, src/roff/troff/*: Fixing copyright
+ dates.
+
+2000-11-08 Werner LEMBERG <wl@gnu.org>
+
+ Add system tmac directory (/usr/local/lib/groff/site-tmac).
+
+ * Makefile.in: Add $(libdir), $(libprogramdir), and $(systemtmacdir).
+ (uninstall_dirs): Add $(libdir), $(libprogramdir), and
+ $(systemtmacdir).
+ Use @libdir@.
+ * Makefile.comm (.man.n): Add @SYSTEMMACRODIR@.
+ * tmac/Makefile.sub (install_data): Create
+ $(systemtmacdir) and $(localtmacdir).
+ (uninstall_sub): Use $(systemtmacdir) for wrapper macros.
+ * man/roff.man, src/roff/troff/troff.man, src/roff/groff/groff.man,
+ NEWS, doc/groff.texinfo: Updated and minor fixes.
+
+ * Makefile.comm, Makefile.in: Added tmac_{s,an}_prefix stuff again.
+ * tmac/Makefile.sub: Added `wrap' stuff again, but installing into
+ $(systemtmacdir) since the wrapper files are platform-dependent.
+
+2000-11-01 Werner LEMBERG <wl@gnu.org>
+
+ * doc/groff.texinfo: Fix typo.
+
+2000-10-26 Werner LEMBERG <wl@gnu.org>
+
+ Convert macros `tmac.XXX' to `XXX.tmac'. Special cases:
+ tmac.doc.old -> doc-old.tmac
+ tmac.an.old -> an-old.tmac
+
+ * tmac/tmac.*: Moved to ...
+ * tmac/*.tmac: this.
+ * tmac/man.local: Fix comment.
+ * tmac/groff_man.man, tmac/groff_markup.man, tmac/groff_mdoc.man,
+ tmac/groff_me.man, tmac/groff_ms.man, tmac/groff_tmac.man: Updated.
+ Added some `FILES' sections. More use of @...@ directives. Other
+ minor updates.
+ * arch/djgpp/README, font/devutf8/NOTES: Updated.
+ * doc/homepage.ms, doc/groff.texinfo: Updated.
+ * man/groff.man, man/roff.man: Updated.
+ * src/devices/grodvi/grodvi.man, src/devices/grolbp/grolbp.man,
+ src/devices/grolj4/grolj4.man, src/devices/grops/grops.man,
+ src/devices/grotty/grotty.man: Updated.
+ * src/preproc/pic/pic.man: Updated.
+ * src/roff/grog/grog.pl, src/roff/grog/grog.sh: Use -mdoc-old
+ instead of -mdoc.old.
+ * src/roff/grog/grog.man: Document -mdoc and -mdoc-old.
+ * src/roff/nroff/nroff.man: Updated.
+ * NEWS: Updated.
+
+ * tmac/fixmacros.sed, tmac/strip.sed: Add explanatory comment.
+
+ * tmac/mm.diff: Removed -- it has no use now since the mm package
+ is part of groff.
+
+ * tmac/*: Removed trailing spaces.
+
+ * arch/djgpp/t-groff.bat: Fix GROFF_TMAC_PATH (hyphen.us is now in
+ the tmac subdirectory also).
+
+ * Makefile.comm, Makefile.in: Remove tmac_{s,an}_prefix stuff.
+ * tmac/Makefile.sub: Adapted to new macro names; removed `wrap'
+ stuff since it is no longer needed.
+
+ * README, PROBLEMS: Updated.
+
+2000-10-25 Werner LEMBERG <wl@gnu.org>
+
+ Invert current behaviour: Search first FOOBAR.tmac, then
+ tmac.FOOBAR.
+
+ * src/roff/troff/input.cc: Introduce MACRO_POSTFIX.
+ (open_mac_file, macro_source): Implement it.
+ * src/roff/troff/troff.man, tmac/groff_tmac.man, man/roff.man,
+ doc/groff.texinfo, NEWS: Document it.
+
+ * src/roff/nroff/nroff.man, src/roff/groff/groff.man, man/groff.man:
+ Small documentation improvements.
+
+ * test-groff: Fix GROFF_TMAC_PATH (hyphen.us is now in the tmac
+ subdirectory also).
+
+ * font/devps/Makefile.sub: Fix rules for dingbats.*map.
+
+2000-10-24 Werner LEMBERG <wl@gnu.org>
+
+ Add local tmac directory (groff/site-tmac).
+
+ * Makefile.in: Add $(localtmacdir).
+ (uninstall_dirs): Add $(localtmacdir).
+ * Makefile.comm (.man.n): Add @LOCALMACRODIR@.
+ * tmac/Makefile.sub (install_data, uninstall_sub): Handle man.local
+ in $(localtmacdir). Create $(localtmacdir).
+ * man/roff.man, src/roff/troff/troff.man, NEWS, doc/groff.texinfo:
+ Updated and minor fixes.
+
+ Rename font/devps/generate/dingbats[r]map to dingbats.[r]map.
+
+ * font/devps/generate/Makefile.sub, arch/djgpp/README: Adjust.
+
+2000-10-23 Werner LEMBERG <wl@gnu.org>
+
+ Move hyphen.us to tmac directory.
+
+ * src/roff/troff/hyphen.us: Removed.
+ * src/tmac/hyphen.us: Added.
+ * src/roff/troff/Makefile.sub, tmac/Makefile.sub: Updated.
+
+ Change installation structure for data files from .../groff/... to
+ .../groff/<version><revision>/... to be conform with other GNU
+ programs.
+
+ * Makefile.in, Makefile.comm, src/utils/indxbib/Makefile.sub,
+ doc/Makefile: Implement it.
+ * aclocal.m4 (GROFF_PAGE): Add test for new directory structure.
+ * configure: Updated.
+ * arch/djgpp/README, font/devutf8/NOTES: Use it.
+ * NEWS: Document it.
+ * man/roff.man, tmac/groff_tmac.man: Use @FONTPATH@, @FONTDIR@, and
+ @MACRODIR@ instead of hard-coded directories.
+
+2000-10-22 Werner LEMBERG <wl@gnu.org>
+
+ Implement $GROFF_BIN_PATH environment variable (which defaults to
+ $bindir) used for child programs of groff and similar wrappers.
+
+ * gendefs.sh: Improve documentation.
+ * Makefile.comm (,man.n), src/include/Makefile.sub (defs.h),
+ src/preproc/eqn/Makefile.sub (neqn),
+ src/roff/nroff/Makefile.sub (nroff): Add $(bindir).
+ * src/preproc/eqn/neqn.sh, src/roff/nroff/nroff.sh: Implement
+ $GROFF_BIN_PATH.
+ * src/roff/groff/groff.cc (main): Implement $GROFF_BIN_PATH and
+ $GROFF_PATH__ (the latter for communication with troff).
+ * src/roff/troff/input.cc (main): Use $GROFF_PATH__ for $PATH if
+ set.
+ * NEWS, src/roff/nroff/nroff.man, src/roff/groff/groff.man,
+ doc/groff.texinfo: Document it.
+
+ * doc/groff.texinfo: Improve documentation of troff's -a option.
+
+2000-10-17 Gaius Mulley <gaius@glam.ac.uk>
+
+ * src/roff/troff/node.cc: Fixed calculation of opminx and fixed
+ non-intrusive eol marker.
+ (troff_output_file::determine_line_limits): New function.
+ (troff_output_file::draw): Use it.
+ * src/roff/troff/env.cc (environment::add_html_tag): Use output() +
+ output_pending_lines() instead of output_line().
+ * src/preproc/eqn/main.cc (do_file): Fix graphic_end().
+ * src/preproc/html2/pre-html.cc (char_buffer::write_file_troff,
+ createImage): Small fixes.
+
+2000-10-14 Werner LEMBERG <wl@gnu.org>
+
+ Replace tmac.safer with a real secure solution.
+
+ * src/roff/troff/input.cc (open_request, opena_request, pipe_source,
+ system_request, pipe_output): Disable requests if in safer mode.
+ * src/roff/groff/groff.cc (main): Remove reference to tmac.safer.
+ * tmac/tmac.safer, tmac/groff_msafer.man: Removed.
+ * tmac/Makefile.sub, NEWS, man/roff.man, tmac/groff_tmac.man,
+ doc/groff.texinfo, src/roff/groff/groff.man,
+ src/roff/troff/troff.man, arch/djgpp/README: Updated.
+
+ * src/devices/grops/ps.cc (main), src/devices/grops/psrm.cc
+ (resource_manager::output_prolog): Replace setenv() with putenv().
+
+2000-10-09 Werner LEMBERG <wl@gnu.org>
+
+ * src/libs/libbib/map.c, src/libs/libgroff/getcwd.c,
+ src/libs/libgroff/strtol.c, src/preproc/html2/image.cc,
+ src/preproc/html2/pre-html.cc, src/preproc/html2/pushbackbuffer.cc,
+ src/roff/groff/pipeline.c: Removing `#ifndef errno' to avoid
+ compilation errors with some compilers. It seems that this code
+ is no longer necessary -- if yes, it is easy to add some #ifdef's
+ for that particular old-fashioned compiler.
+
+ * MORE.STUFF: Added info about Meta-tbl.
+
+ * doc/groff.texinfo: Added more info about `.if "..."..."'.
+
+2000-10-07 Werner LEMBERG <wl@gnu.org>
+
+ Adding a new escape sequence \B'...': If the string between
+ the delimiters is a valid numeric expression, return the character
+ `1', and `0' otherwise. This is an analogon to \A.
+
+ * src/roff/troff/input.cc (do_expr_test): Implement it.
+ (token::next): Use it.
+ * src/roff/troff/troff.man, NEWS, man/groff.man: Document it.
+
+ * tmac/tmac.trace: Made independent from escape character.
+
+2000-10-06 Werner LEMBERG <wl@gnu.org>
+
+ Adding a new request .dei: define indirect. The first and second
+ parameter of .dei are taken from string registers instead directly;
+ this very special request is needed to make tmac.trace independent
+ from the escape character (which might even be disabled).
+
+ * src/roff/troff/input.cc (do_define_macro): Implement it.
+ (define_macro_indirect): New function.
+ (init_input_requests): Use it.
+
+ Adding two requests .ecs and .ecr: Save and restore the escape
+ character. These two requests are needed to make tmac.trace
+ independent from the escape character (which might even be
+ disabled).
+
+ * src/roff/troff/input.cc (save_escape_char, restore_escape_char):
+ Implement it.
+ (init_input_requests): Use it.
+
+ * src/roff/troff/troff.man, NEWS, man/groff.man: Updated.
+
+2000-09-22 Ricardo Soares Guimarães <ricardo@conectiva.com.br>
+
+ Adding a new option -P and new environment variable GROPS_PROLOGUE
+ to grops, selecting a different prologue file (minor modifications
+ by WL).
+
+ * src/devices/grops/psrm.cc (resource_manager::output_prolog),
+ src/devices/grops/ps.cc (main): Implement it.
+ * src/devices/grops/grops.man, NEWS: Document it.
+
+2000-09-22 Werner LEMBERG <wl@gnu.org>
+
+ * INSTALL: Add info about selecting paper format.
+
+2000-09-21 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/input.cc (main): Fixing compiler warning.
+ * src/include/{driver.h, lib.h}: Move inclusion of string.h and
+ strings.h from the former to the latter.
+ * src/devices/grolbp/lpb.cc, src/include/lib.h: Move strncasecmp()
+ stuff from the former to the latter.
+
+2000-09-11 Werner LEMBERG <wl@gnu.org>
+
+ Implementing two new requests .tm1 and .tmc: The former is similar
+ to .tm but can output leading spaces; its syntax is similar to
+ defining a string, i.e., a `"' can be used to mark the beginning of
+ the string to be written to stderr: `.tm1 " test'. The latter is
+ similar to .tm1 but doesn't write out a final newline character.
+
+ * src/roff/troff/input.cc (terminal1, terminal_continue,
+ do_terminal): New functions.
+ (init_input_requests): Use them.
+ * src/roff/troff/troff.man, NEWS, man/groff.man: Updated.
+
+2000-09-09 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/groff_mdoc.samples.man: Small fixes.
+
+2000-09-08 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/groff_mdoc.man: Fixing typo.
+
+2000-09-02 Werner LEMBERG <wl@gnu.org>
+
+ Implementing a .nop request which does nothing.
+
+ * src/roff/troff/input.cc (nop_request): New function.
+ (init_input_requests): Use it.
+ * src/roff/troff/troff.man, NEWS, man/groff.man: Updated.
+
+2000-09-01 Werner LEMBERG <wl@gnu.org>
+
+ * doc/groff.texinfo: Added some comments.
+
+2000-08-30 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/TODO: Updated.
+
+2000-08-28 Bruno Haible <haible@clisp.cons.org>
+
+ * contrib/mm/Makefile.sub: New target 'all', makes all prerequisites
+ of 'install'.
+
+2000-08-25 Werner LEMBERG <wl@gnu.org>
+
+ * doc/groff.texinfo: Fix comment how to compile the DVI file.
+
+2000-08-25 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * font/devps/generate/Makefile (SHELL): Define explicitly to
+ "/bin/sh", for non-Unix platforms.
+ (extraclean): Use a more portable "" quoting instead of a
+ backslash (which doesn't work on DOS/Windows).
+
+ * font/devlj4/generate/Makefile (extraclean): Ditto.
+
+ * font/devdvi/generate/Makefile (extraclean): Ditto.
+
+2000-08-25 Werner LEMBERG <wl@gnu.org>
+
+ * NEWS, doc/groff.texinfo, tmac/groff_tmac.man, man/roff.man,
+ src/roff/troff/troff.man: Document Eli's latest changes.
+
+2000-08-25 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * src/roff/troff/input.cc (open_mac_file, macro_source): Support
+ macro file names of the form NAME.tmac as well as tmac.NAME.
+
+2000-08-25 Werner LEMBERG <wl@gnu.org>
+
+ * src/include/posix.h: Remove definition of FILENAME_MAX.
+
+ * src/preproc/html2/pre-html.h, pre-html.cc: Add return type to
+ `sys_fatal' and `stop' function().
+
+ * test-groff: Updated.
+
+2000-08-24 Gaius Mulley <gaius@glam.ac.uk>
+
+ Added the new troff command .output <arg> to suppress output (while
+ still obeying motion) and also the opminx, opminy, opmaxx, opmaxy
+ registers (for passing the output dimensions to the output device).
+
+ * src/roff/troff/div.cc (top_level_diversion::output): Use `width'
+ parameter.
+ * src/roff/troff/node.h, src/roff/troff/node.cc
+ (troff_output_file::really_print_line,
+ ascii_output_file::really_print_line,
+ supress_output_file::really_print_line): Use `width' parameter.
+ (troff_output_file::really_on, troff_output_file::really_off,
+ output_file::on, output_file::off, real_output_file::on,
+ real_output_file::off, real_output_file::really_on,
+ real_output_file::really_off): New functions.
+ (real_output_file:public output_file): New variable `output_on'.
+ (real_output_file::begin_page, real_output_file::copy_file,
+ real_output_file::transparent_char, real_output_file::print_line):
+ Use it.
+ (real_output_file::print_line): Use check_output_limits.
+ * src/roff/troff/reg.h, src/roff/troff/request.h,
+ src/roff/troff/input.cc (assign_registers): New function to remove
+ two `goto's.
+ (do_ps_file): Use it.
+ (check_output_limits, reset_output_registers, output_request,
+ init_output_requests): New functions.
+ (init_input_requests): Updated.
+
+ Added new grohtml2 device and html2 preprocessor (coding
+ not yet finished) which will eventually replace grohtml.
+
+ * Makefile.in, tmac/Makefile.sub, tmac/eqnrc, tmac/troffrc-end:
+ Updated.
+ * src/include/htmlindicate.h, src/include/htmlindicate
+ (html_begin_suppress, html_end_suppress): New functions.
+ * src/preproc/tbl/main.cc: Use it.
+ * src/roff/groff/groff.cc: Add support for html2 device (which will
+ automatically invoke the html2 preprocessor).
+ * src/roff/troff/input.cc (is_html2): New variable.
+ * src/roff/troff/troff.h, src/roff/troff/env.h,
+ src/roff/troff/env.cc (environment::add_html_tag): New function
+ (uses `is_html2').
+ (environment::do_break): Use it.
+ * font/devhtml2/*: New files.
+ * src/devices/grohtml2: New device.
+ * src/preproc/html2: New preprocessor.
+ * tmac/tmac.html-tags, tmac/tmac.html2: New files.
+
+2000-08-23 Werner LEMBERG <wl@gnu.org>
+
+ * src/devices/grolbp/lbp.cc: Same workaround for sinix as for AIX.
+
+2000-08-22 Werner LEMBERG <wl@gnu.org>
+
+ * src/include/lib.h: Provide a fix for IRIX to not include
+ groff-getopt.h.
+
+2000-08-18 Werner LEMBERG <wl@gnu.org>
+
+ * configure.in: Don't provide an empty value for SH_SCRIPT_SED_CMD
+ since some non-GNU sed programs can't handle null regexps.
+ * configure, src/preproc/eqn/Makefile.sub,
+ src/roff/grog/Makefile.sub, src/roff/nroff/Makefile.sub: Updated.
+
+ * src/devices/grolbp/lbp.cc: Add an AIX workaround for an autoconf
+ bug (string.h and strings.h are both needed according to latest
+ POSIX standard).
+
+ * MORE.STUFF: Added info about unroff and troffcvt.
+
+2000-08-08 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/tmac.a4: Will now work with ms macros also; -ma4 should be
+ used before -ms.
+
+ * tmac/tmac.man.old: Remove unused number register.
+
+ * tmac.doc: Minor documentation fix.
+
+2000-08-07 Paul Eggert <eggert@twinsun.com>
+
+ * src/roff/groff/pipeline.c (is_system_shell):
+ Fix typo: "monocased_shell" no longer exists.
+
+2000-08-07 Paul Eggert <eggert@twinsun.com>
+
+ Remove FILENAME_MAX limits.
+
+ * src/roff/groff/pipeline.c (is_system_shell): Do not assume
+ that the argument length is less than FILENAME_MAX.
+ * src/libs/libgroff/tmpfile.cc (add_tmp_file): Likewise.
+ Use struct hack to allocate and free file name.
+ (struct xtmpfile_list): fname is now part of the structure,
+ not a pointer to another string.
+
+2000-08-07 Tom Schmidt <tschmidt@micron.com>
+
+ * src/include/posix.h: Add a default value for FILENAME_MAX.
+
+2000-08-06 Paul Eggert <eggert@twinsun.com>
+
+ Add support for new BSD-style man pages (with ".Dd" instead of
+ ".TH"), so that "groff -man" understands both styles, even
+ when running "groff -man" on a host whose system man page
+ macros don't support ".Dd".
+
+ * tmac/Makefile.sub (NORMALFILES): Add tmac.an.old.
+ (stamp-wrap): Source tmac.andoc first when wrapping man macros,
+ in case the system man macros don't define Dd or TH.
+
+ * tmac/tmac.an.old: Renamed from tmac/tmac.an.
+ * tmac/tmac.an: New one-line file.
+ * tmac/tmac.andoc (TH): Adjust to the tmac.an.old file renaming.
+
+2000-08-06 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/troff.man: Fixing typos.
+
+Version 1.16.1 released
+=======================
+
2000-07-31 Werner LEMBERG <wl@gnu.org>
Preparing release 1.16.1.
@@ -1620,8 +3372,6 @@ Version 1.12 released
* PROJECTS, PROBLEMS, NEWS: Updated.
- * xditview/Makefile: Removed.
-
* VERSION: Updated to 1.12beta.
* BUG-REPORT: Some cosmetic fixes. Corrected email address.
@@ -1806,7 +3556,7 @@ Fri Aug 15 08:51:47 1997 Eric S. Raymond <esr@snark.thyrsus.com>
* README, PROJECTS, NEWS, INSTALL, VERSION,
doc/Makefile. doc/pic.ms, groff/groff.man:
Prepare for 1.11 release. No code changes.
- Documentation for pic added (doc/pic.ms).
+ Documentation for pic added (doc/pic.ms).
Sun Nov 26 11:45:13 1995 James Clark <jjc@jclark.com>
@@ -7524,4 +9274,5 @@ Sat Jul 14 11:23:01 1990 James Clark (jjc at yquem)
Local Variables:
version-control: never
+coding: latin-1
End:
diff --git a/contrib/groff/INSTALL b/contrib/groff/INSTALL
index 0465f4e5890e..cdf7eb989f10 100644
--- a/contrib/groff/INSTALL
+++ b/contrib/groff/INSTALL
@@ -19,6 +19,16 @@ usual malloc, it is good idea to include it in LIBS. For example,
using the malloc that comes with GNU Emacs version 20 can give a
worthwhile (and sometimes spectacular) performance improvement.
+If you want A4 or letter paper format and the configure script produces
+an incorrect guess, say
+
+ PAGE=xxx ./configure
+
+where `xxx' should be either `A4' or `letter'. Note that this will only
+affect the paper selection for grops. For compatibility with ditroff,
+the default page length in gtroff is always 11 inches. The page length
+can be changed with the `pl' request.
+
When you have built groff, you can use the test-groff script to try
groff out on one of the man pages. (Use the .n files not the .man
files.) The test-groff script sets up environment variables to allow
diff --git a/contrib/groff/MORE.STUFF b/contrib/groff/MORE.STUFF
index ef29efc7dc65..6f06cef0b66a 100644
--- a/contrib/groff/MORE.STUFF
+++ b/contrib/groff/MORE.STUFF
@@ -12,8 +12,7 @@ Here two ports using the gcc compiler and other GNU tools:
Kees Zeelenberg <c.zeelenberg@hccnet.nl>:
- ftp://ftp.franken.de/pub/win32/develop/gnuwin32/
- cygwin/porters/Zeelenberg_Kees/B20/index.html
+ http://gnuwin32.sourceforge.net/
dos
---
@@ -34,6 +33,13 @@ can be found at
http://www.lunabase.org/~faber/Vault/software/grap/
+A djgpp port which runs on MS-DOS and all Win32 systems (Win95, Win98,
+WinNT) done by Kees Zeelenberg <c.zeelenberg@hccnet.nl> is available from
+
+ ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2apps/
+
+It is intended to be used with the djgpp port of groff.
+
plot2dev
--------
@@ -44,6 +50,59 @@ driver). The actual version can be found as
ftp://ftp.ffii.org/pub/groff/plot2dev-x.x.tar.gz
+troffcvt
+--------
+
+From the web page:
+
+ troffcvt is a translator that turns troff input into a form that can be
+ more easily processed. The troffcvt distribution comes with
+ postprocessors that turn troffcvt into various destination formats such
+ as HTML (Hypertext Markup Language), RTF (Rich Text Format) or plain
+ text.
+
+Note that you need a lot of additional packages to compile troffcvt;
+everything is available from
+
+ http://www.primate.wisc.edu/software/troffcvt/
+
+unroff
+______
+
+From the README file:
+
+ Unroff is a Scheme-based, programmable, extensible troff translator with
+ a back-end for the Hypertext Markup Language. Unroff is free software
+ and is distributed both as source and as precompiled binaries.
+
+ http://www.informatik.uni-bremen.de/~net/unroff/unroff.html
+
+You need als Elk, the Scheme based Extension Language Kit, which is
+available from
+
+ http://www.informatik.uni-bremen.de/~net/elk
+
+deroff
+------
+
+Deroff removes roff constructs from documents for the purpose of indexing,
+spell checking etc.
+
+Michael Haardt's <michael@moria.de> implementation is a little smarter than
+traditional implementations, because it knows about certain -man and
+-mm macros. It is able to generate a word list for spell checking tools
+or omit headers for sentence analysis tools. It can further generate
+cpp-style #line lines.
+
+ http://www.moria.de/deroff/
+
+Version 1.6 compiled with DJGPP (for MS-DOS and all Win32 systems, i.e.
+Win95, Win98, WinNT) is available from
+
+ ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2apps/
+
+and its mirrors.
+
miscellaneous
-------------
@@ -80,6 +139,12 @@ miscellaneous
of AT&T, and so should be invoked with the UNIX troff -mm flag; they
should also work with the GNU troff -mm flag.
+. Thomas Baruchel <baruchel@libertysurf.fr> has developed Meta-tbl, a tbl
+ postprocessor to manipulate table cells (like adding gray shades). The
+ latest version can be found at
+
+ http://perso.libertysurf.fr/baruchel/
+
documentation
-------------
diff --git a/contrib/groff/Makefile.comm b/contrib/groff/Makefile.comm
index b6cb4eb617c2..b9c9c85bca6f 100644
--- a/contrib/groff/Makefile.comm
+++ b/contrib/groff/Makefile.comm
@@ -119,9 +119,12 @@ revision=`sed -e 's/^0$$//' -e 's/^[1-9].*$$/.&/' $(top_srcdir)/REVISION`
.man.n:
@echo Making $@ from $<
@-rm -f $@
- @sed -e "s|@FONTDIR@|$(fontdir)|g" \
+ @sed -e "s|@BINDIR@|$(bindir)|g" \
+ -e "s|@FONTDIR@|$(fontdir)|g" \
-e "s|@FONTPATH@|$(fontpath)|g" \
-e "s|@MACRODIR@|$(tmacdir)|g" \
+ -e "s|@SYSTEMMACRODIR@|$(systemtmacdir)|g" \
+ -e "s|@LOCALMACRODIR@|$(localtmacdir)|g" \
-e "s|@MACROPATH@|$(tmacpath)|g" \
-e "s|@DEVICE@|$(DEVICE)|g" \
-e "s|@DEFAULT_INDEX@|$(indexdir)/$(indexname)|g" \
@@ -205,6 +208,7 @@ uninstall_prog:
.PHONY: install_dev
install_dev:
-test -d $(datadir) || $(mkinstalldirs) $(datadir)
+ -test -d $(dataprogramdir) || $(mkinstalldirs) $(dataprogramdir)
-test -d $(datasubdir) || $(mkinstalldirs) $(datasubdir)
-test -d $(fontdir) || $(mkinstalldirs) $(fontdir)
-test -d $(fontsubdir) || $(mkinstalldirs) $(fontsubdir)
diff --git a/contrib/groff/Makefile.in b/contrib/groff/Makefile.in
index 9856aabe8911..63073ec3707e 100644
--- a/contrib/groff/Makefile.in
+++ b/contrib/groff/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 1989-2000 Free Software Foundation, Inc.
+# Copyright (C) 1989-2000, 2001 Free Software Foundation, Inc.
# Written by James Clark (jjc@jclark.com)
#
# This file is part of groff.
@@ -17,6 +17,15 @@
# with groff; see the file COPYING. If not, write to the Free Software
# Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+srcdir=@srcdir@
+top_srcdir=@top_srcdir@
+VPATH=@srcdir@
+top_builddir=@top_builddir@
+
+version=`cat $(top_srcdir)/VERSION`
+# No additional number if revision is zero
+revision=`sed -e 's/^0$$//' -e 's/^[1-9].*$$/.&/' $(top_srcdir)/REVISION`
+
# Define `page' to be letter if your PostScript printer uses 8.5x11
# paper (USA) and define it to be A4, if it uses A4 paper (rest of the
# world).
@@ -71,27 +80,41 @@ g=@g@
# Used in definitions of exec_prefix, datasubdir, fontpath, manroot.
# This must already exist when you do make install.
prefix=@prefix@
-
exec_prefix=@exec_prefix@
# bindir says where to install executables.
-bindir=$(exec_prefix)/bin
+bindir=@bindir@
-# datasubdir says where to install data files
+# libdir says where to install platform-dependent data
+libdir=@libdir@
+libprogramdir=$(libdir)/groff
+
+# datasubdir says where to install platform-independent data files
datadir=@datadir@
-datasubdir=$(datadir)/groff
+dataprogramdir=$(datadir)/groff
+datasubdir=$(dataprogramdir)/$(version)$(revision)
# fontdir says where to install dev*/*.
fontdir=$(datasubdir)/font
# fontpath says where to look for dev*/*.
-fontpath=.:$(fontdir):/usr/lib/font
+fontpath=$(fontdir):/usr/lib/font
# tmacdir says where to install macros.
tmacdir=$(datasubdir)/tmac
+# systemtmacdir says where to install platform-dependent macros
+systemtmacdir=$(libprogramdir)/site-tmac
+
+# localtmacdir says where local files will be installed
+localtmacdir=$(dataprogramdir)/site-tmac
+
# tmacpath says where to look for macro files.
-tmacpath=.:$(tmacdir)
+# The current directory will be prepended in unsafe mode only; the home
+# directory will be always added.
+# `troffrc' and `troffrc-end' (and `eqnrc') are searched neither in the
+# current nor in the home directory.
+tmacpath=$(systemtmacdir):$(localtmacdir):$(tmacdir)
# sys_tmac_prefix is prefix (if any) for system macro packages
sys_tmac_prefix=@sys_tmac_prefix@
@@ -225,11 +248,6 @@ PERLPATH=@PERLPATH@
# Sed command with which to edit sh scripts.
SH_SCRIPT_SED_CMD=@SH_SCRIPT_SED_CMD@
-srcdir=@srcdir@
-top_srcdir=@top_srcdir@
-VPATH=@srcdir@
-top_builddir=@top_builddir@
-
# the program to create directory hierarchies
mkinstalldirs=$(top_srcdir)/mkinstalldirs
@@ -253,13 +271,18 @@ MDEFINES= \
"top_builddir=$(top_builddir)" \
"prefix=$(prefix)" \
"exec_prefix=$(exec_prefix)" \
- "bindir=$(bindir)" \
"g=$(g)" \
"datadir=$(datadir)" \
+ "dataprogramdir=$(dataprogramdir)" \
"datasubdir=$(datasubdir)" \
+ "libdir=$(libdir)" \
+ "libprogramdir=$(libprogramdir)" \
+ "bindir=$(bindir)" \
"fontdir=$(fontdir)" \
"fontpath=$(fontpath)" \
"tmacdir=$(tmacdir)" \
+ "systemtmacdir=$(systemtmacdir)" \
+ "localtmacdir=$(localtmacdir)" \
"tmacpath=$(tmacpath)" \
"indexext=$(indexext)" \
"indexdir=$(indexdir)" \
@@ -318,6 +341,7 @@ CCPROGDIRS=\
src/preproc/grn \
src/preproc/refer \
src/preproc/soelim \
+ src/preproc/html \
src/devices/grops \
src/devices/grotty \
src/devices/grodvi \
@@ -461,15 +485,10 @@ $(INCDIRS) $(OTHERDIRS): FORCE
-f $$srcdir/Makefile.sub \
-f $(top_srcdir)/Makefile.man $(do)
-version=`cat $(top_srcdir)/VERSION`
-# No additional number for the groff archive if revision is zero
-revision=`sed -e 's/^0$$//' -e 's/^[1-9].*$$/.&/' $(top_srcdir)/REVISION`
-
.PHONY: dist
dist:
-rm -fr tmp
rm -f groff-$(version)$(revision).tar.gz
- rm -f src/xditview/Imakefile;
mkdir tmp
for d in $(DISTDIRS); do \
$(mkinstalldirs) tmp/$$d; \
@@ -518,7 +537,9 @@ uninstall: uninstall_sub uninstall_dirs
uninstall_dirs:
# Use rmdir here so that the directories are only removed if they're empty
-rmdir $(man1dir) $(man5dir) $(man7dir) $(manroot) \
- $(tmacdir) $(fontdir) $(bindir) $(datasubdir) $(datadir)
+ $(tmacdir) $(systemtmacdir) $(localtmacdir) $(fontdir) $(bindir) \
+ $(datasubdir) $(dataprogramdir) $(datadir) \
+ $(libprogramdir) $(libdir)
.PHONY: check
diff --git a/contrib/groff/Makefile.sub b/contrib/groff/Makefile.sub
index ab72a5f74ef4..77c701f9bfc0 100644
--- a/contrib/groff/Makefile.sub
+++ b/contrib/groff/Makefile.sub
@@ -1,4 +1,5 @@
-DISTCLEANFILES=config.status config.log config.cache Makefile
+DISTCLEANFILES=config.status config.log config.cache Makefile \
+ src/xditview/Imakefile
CLEANADD=Makefile.cfg conftest*
distfiles: configure
diff --git a/contrib/groff/NEWS b/contrib/groff/NEWS
index 855a2689e66d..4866f4f53d6a 100644
--- a/contrib/groff/NEWS
+++ b/contrib/groff/NEWS
@@ -1,6 +1,244 @@
This file describes recent user-visible changes in groff. Bug fixes
are not described. There are more details in the man pages.
+Groff
+-----
+
+o `-mFOO' will now search first for `FOO.tmac' and then for `tmac.FOO'. The
+ old behaviour has been changed to overcome problems with platforms which
+ have an 8+3 file name limit, and platforms which have other versions of
+ troff installed also. Additionally, all macro files have been renamed
+ using the latter scheme to avoid 8+3 name clashes.
+
+o The new environment variable GROFF_BIN_PATH will be checked for programs
+ groff is calling (preprocessors, troff, and output devices) before PATH.
+ If not set, it defaults to the directory where the groff binary is
+ located. Previously, it was PATH only. The nroff script will only use
+ GROFF_BIN_PATH to find the groff binary but passes both the GROFF_BIN_PATH
+ and PATH environment variable to groff.
+
+Troff
+-----
+
+o The mdoc package has been completely rewritten, using the full power of
+ GNU troff to remove limitations of Unix troff (which is no longer
+ supported). Most important changes are:
+
+ . No argument limit.
+ . Almost all macros are parsed and callable (if it makes sense).
+ . `.Lb': prints library names
+ . `.Nm <punctuation>' now works as expected; `.Nm "" <punctuation>' has
+ been withdrawn.
+ . Updated `.St' command
+ . `.Fx': prints FreeBSD
+ . `.Ox': prints OpenBSD
+ . `.Bsx': prints BSD/OS
+ . `.Brq', `.Bro', `.Brc': brace enclosure macros
+ . `.Bd -centered': center lines
+ . `.Bl -xwidth <string>': interpret <string> and use the resulting width
+ . support for double-sided printing (-rD1 command line switch)
+ . support for 11pt and 12pt document sizes (-rS11, -rS12 command line
+ switches)
+
+ `groff_mdoc.man' replaces `groff_mdoc.samples.man'; it now completely
+ documents the mdoc package.
+
+ Great care has been taken to assure backwards compatibility. If you
+ encounter any abnormal results, please report them to bug-groff@gnu.org.
+
+o A new command line option for the `man' macros (similar to the `mdoc'
+ package has been implemented: `-rcR=1' (now the default in nroff mode) will
+ produce one single, very long page instead of multiple pages. `-rcR=0'
+ will deactivate it.
+
+o The `return' request has been added to return immediately from a macro.
+
+o A new request `nop' (no operation) has been added which is similar to
+ `if 1'. For example,
+
+ .if t \{\
+ Hallo!
+ .\}
+
+ can now be written as
+
+ .if t \{\
+ . nop Hallo!
+ .\}
+
+o `box' and `boxa' are two new requests which behave similarly to `di' and
+ `da' but don't include a partially filled line (which is restored after
+ ending the diversion).
+
+o The `asciify' request has been extended to `unformat' space characters
+ and some other escape sequences also.
+
+ `\ ' will no longer be unformatted as a space but remains an unpaddable,
+ unbreakable space character.
+
+o The new `unformat' request is similar to `asciify' but only handles space
+ characters and tabs specially if the diversion is reread, retaining font
+ information. This makes it possible to reformat diversions; for example
+ the following
+
+ .ll 3i
+ .
+ a01 a02 a03 a04 a05 a06 a07 a08 a09 a10.
+ .
+ .box box1
+ .ev 1
+ .nf
+ \f[B]b01 b02 b03 b04 b05 b06 b07 b08 b09 b10.\f[P]
+ .br
+ .ev
+ .box
+ .
+ c01 c02 c03 c04 c05 c06 c07 c08 c09 c10.
+ .
+ .unformat box1
+ .box1
+
+ gives
+
+ a01 a02 a03 a04 a05 a06 a07
+ a08 a09 a10. c01 c02 c03 c04
+ c05 c06 c07 c08 c09 c10. b01
+ b02 b03 b04 b05 b06 b07 b08
+ b09 b10.
+
+ Without the `unformat' request, space characters are converted to word
+ space nodes which are no longer stretchable, and the result would be
+
+ a01 a02 a03 a04 a05 a06 a07
+ a08 a09 a10. c01 c02 c03 c04
+ c05 c06 c07 c08 c09 c10. b01
+ b02 b03 b04 b05 b06 b07 b08
+ b09 b10.
+
+o The new request `linetabs' controls the `line-tabs' mode. In line-tabs
+ mode, tab distances are computed relative to the (current) output line.
+ Otherwise they are taken relative to the input line. For example, the
+ following
+
+ .ds x a\t\c
+ .ds y b\t\c
+ .ds z c
+ .ta 1i 3i
+ \*x
+ \*y
+ \*z
+
+ yields
+
+ a b c
+
+ In line-tabs mode, the same code gives
+
+ a b c
+
+ The new read-only number register `.linetabs' returns 1 if in line-tabs
+ mode, and 0 otherwise.
+
+o Two new requests `tm1' and `tmc' have been added to improve writing
+ messages to the terminal. `tm1' is similar to `tm' but allows leading
+ whitespace. `tmc' is similar to `tm1' but doesn't emit a final newline.
+
+o A new request `dei' (define indirect) has been added. The first and
+ second parameter of `dei' are taken from string registers rather than
+ directly; this very special request is needed to make `trace.tmac'
+ independent from the escape character (which might even be disabled).
+
+o It is now possible to save and restore the escape character with two new
+ requests `ecs' and `ecr'.
+
+o The new escape sequence \B'...' is an analogon to `\A': If the string
+ within the delimiters is a valid numeric expression, return character `1',
+ and `0' otherwise.
+
+o The new escape sequence `\:' inserts a zero-width break point. This is
+ similar to `\%' but without a soft hyphen character.
+
+o The `tr' request can now map characters onto `\~'.
+
+o Calling the `fam' request without an argument switches back to the
+ previous font family.
+
+o The new read-only register `.int' is set to a positive value if the last
+ output line is interrupted (i.e., if it contains `\c').
+
+o The `writem' request is not new, but hasn't been documented before. This
+ is similar to `write' but instead of a string the contents of a given
+ macro or string is written to a stream.
+
+o The read/write number register `hp' to get/set the current horizontal
+ position relative to the input line isn't new but hasn't been documented
+ properly before.
+
+o `\X' and `\Y' are no transparent for end-of-sentence recognition.
+
+o The `cu' request in nroff mode now works as documented (i.e., it does
+ underline spaces also).
+
+Nroff
+-----
+
+Option -v shows the version number.
+
+Grog
+----
+
+o The grog script will now work in non-compatibility mode also (which is the
+ default). As usual, use the `-C' option to activate compatibility mode.
+
+o Option -v shows the version number.
+
+Grops
+-----
+
+A new option `-P' resp. a new environment variable `GROPS_PROLOGUE' has been
+added to select a different prologue file.
+
+The effect of the former `-mpsnew' option to access more Type 1 characters
+is now the default and no longer available. To get the old behaviour (i.e.,
+emulation of some glyphs by composition) use `-mpsold'.
+
+Miscellaneous
+-------------
+
+o For security reasons the following changes have been done:
+
+ . The tmac.safer file has been replaced with a built-in solution; .open,
+ .opena, .pso, .sy, and .pi are completely disabled in safer mode (which
+ is the default); to enable these requests the `-U' command line flag
+ must be used.
+
+ . Files specified with the .mso request or given with the `-m' command
+ line option, and hyphenation patterns loaded with `.hpf' are no longer
+ searched in the current directory by default (besides the usual tmac
+ path). Instead, the home directory is used. To add the current
+ directory, either use the `-U' or `-M' command line option or set the
+ GROFF_TMAC_PATH environment variable to an appropriate value.
+
+ . troffrc, troffrc-end, and eqnrc are neither searched in the current nor
+ in the home directory (even if -U is given). Use -M or GROFF_TMAC_PATH
+ to change that.
+
+ . Similarly, the current directory is no longer part of the font path.
+ Use the `-F' command line option or the GROFF_FONT_PATH environment
+ variable if you really need the current directory.
+
+o groff will now install its data files into
+ /usr/local/share/groff/<version> by default, following the GNU standard.
+ Additionally, a local tmac directory (by default
+ /usr/local/share/groff/site-tmac) will be scanned before the standard tmac
+ directory. Wrapper files for system-specific macro packages (if
+ necessary) are put into /usr/local/lib/groff/site-tmac; this directory
+ will be searched before the local tmac directory.
+
+o All programs now have option `-v' to show the version number; they will
+ exit immediately afterwards, following the GNU standards. Additionally,
+ `--version' and `--help' have been added, doing the obvious actions.
+
VERSION 1.16.1
==============
diff --git a/contrib/groff/PROBLEMS b/contrib/groff/PROBLEMS
index b73db2f4fbd0..001610e697f9 100644
--- a/contrib/groff/PROBLEMS
+++ b/contrib/groff/PROBLEMS
@@ -118,11 +118,11 @@ on the Software Companion CD and is installed as /opt/sfw/bin/gmake.
* On Ultrix, the make stops with the message
- *** Error code 1
+ *** Error code 1
- Stop.
+ Stop.
-for no apparent reason.
+ for no apparent reason.
Use GNU make.
@@ -172,10 +172,10 @@ No. Real dependency files are created with a `make depend' call.
----------------------------------------------------------------------
-* Groff can't handle my troff document. It works fine with AT&T troff.
+* Groff can't handle my troff document. It works fine with AT&T troff.
Read the section on incompatibilities in gtroff(1). Try using the -C
-option. Alternatively there's the sed script in tmac/fixmacros.sed
+option. Alternatively there's the sed script `tmac/fixmacros.sed'
which will attempt to edit a file of macros so that it can be used
with groff without the -C flag.
@@ -186,7 +186,8 @@ with groff without the -C flag.
Yes, it does. You may need to compile fonts with Metafont at these
magnifications. The CompileFonts script in the devdvi/generate
-directory may help you to do this. (It will take a *long* time.)
+directory may help you to do this. (It will take a *long* time on
+slow computers.)
----------------------------------------------------------------------
@@ -222,7 +223,7 @@ ps-file-server@adobe.com.)
----------------------------------------------------------------------
* I've configured groff for A4 paper, but gtroff still seems to think
- that the length of a page (as returned by \n(.p) is 11 inches.
+ that the length of a page (as returned by `\n(.p') is 11 inches.
This is intentional. The PAGE option is used only by grops. For
compatibility with ditroff, the default page length in gtroff is
@@ -231,9 +232,22 @@ request.
----------------------------------------------------------------------
+* groff produces wrapper macros for `ms' and friends which call the
+ system's original macros. Then, to get groff's ms macro package I
+ have to use `-mgs' instead `-ms'. Can I avoid this?
+
+Yes. Configure and compile groff as usual, but install it with
+
+ make install tmac_wrap=""
+
+Then no wrapper files are produced, and `-ms' will use groff's `ms'
+macros.
+
+----------------------------------------------------------------------
+
* Groff doesn't use the font names I'm used to.
-Use the `ftr' request. See gtroff(1).
+Use the `ftr' request. See (g)troff(1).
----------------------------------------------------------------------
@@ -326,11 +340,7 @@ files produced by TeX. Try getting a more up to date driver.
* I get lots of errors when I use groff with the AT&T -mm macros.
-The AT&T -mm macros need a few changes to work with groff; `make
-install.dwbmm' will copy your -mm macros to groff's macro directory
-and make the necessary changes. You may need to edit the commands for
-the install.mm target in the Makefile. Alternatively use the groff
--mm macros.
+Use the groff -mm macros.
----------------------------------------------------------------------
@@ -369,7 +379,7 @@ comments, you can do it like this:
There seem to be many different styles of page header and footer
produced by different versions of the -man macros. You will need to
-modify macros/tmac.an to suit your personal taste. For example, if
+modify tmac/an-old.tmac to suit your personal taste. For example, if
you want the center of the page header to say
System Programmer's Manual
@@ -410,10 +420,9 @@ The solution is to fix the manual page:
The Ultrix man pages use a number of non-standard extensions to the
Unix man macros. One solution is to use the Ultrix -man macros with
-groff. Rename /usr/local/lib/groff/tmac/tmac.an to
-/usr/local/lib/groff/tmac/tmac.an.gnu, copy /usr/lib/tmac/tmac.an to
-/usr/local/lib/groff/tmac/tmac.an and apply the following patch (from
-Frank Wortner):
+groff. Copy /usr/lib/tmac/tmac.an to
+/usr/local/share/groff/site-tmac/an.tmac and apply the following patch
+(from Frank Wortner):
*** /usr/local/lib/groff/tmac/tmac.an Wed Sep 9 12:29:28 1992
--- /usr/lib/tmac/tmac.an Fri Jul 24 19:58:19 1992
@@ -436,17 +445,25 @@ Frank Wortner):
.}f
Another possible solution is to install tmac/man.ultrix as
-/usr/local/lib/groff/tmac/man.local.
+/usr/local/share/groff/site-tmac/man.local.
----------------------------------------------------------------------
* I'm having problems formatting HP-UX 9.0 man pages with groff -man.
-Rename /usr/local/lib/groff/tmac/tmac.an to (for example)
-/usr/local/lib/groff/tmac/tmac.gan, copy HP's tmac.an into
-/usr/local/lib/groff/tmac/tmac.an, and either put `.cp 1' at the
-beginning or filter it (and any files it .so's) through
-tmac/fixmacros.sed.
+Copy HP's tmac.an into /usr/local/share/groff/site-tmac/an.tmac, and
+either put `.cp 1' at the beginning or filter it (and any files it .so's)
+through tmac/fixmacros.sed.
+
+----------------------------------------------------------------------
+
+* On HP-UX, the compiler complains about missing symbol `alloca'.
+
+Say
+
+ export LDFLAGS=-lPW
+
+before starting the configure script.
----------------------------------------------------------------------
diff --git a/contrib/groff/README b/contrib/groff/README
index 62ea08d81384..88f8f8780f25 100644
--- a/contrib/groff/README
+++ b/contrib/groff/README
@@ -20,7 +20,7 @@ The file PROBLEMS describes various problems that have been encountered
in compiling, installing, and running groff.
For the moment, the documentation assumes that you are already familiar
-with the Unix versions of troff, -man, -ms, and the preprocessors.
+with the Unix versions of troff, -ms, and the preprocessors.
The most recent released version of groff is always available by
anonymous ftp from ftp.gnu.org in the directory pub/gnu/groff.
diff --git a/contrib/groff/REVISION b/contrib/groff/REVISION
index d00491fd7e5b..573541ac9702 100644
--- a/contrib/groff/REVISION
+++ b/contrib/groff/REVISION
@@ -1 +1 @@
-1
+0
diff --git a/contrib/groff/VERSION b/contrib/groff/VERSION
index e71519696fb2..b48f32260980 100644
--- a/contrib/groff/VERSION
+++ b/contrib/groff/VERSION
@@ -1 +1 @@
-1.16
+1.17
diff --git a/contrib/groff/aclocal.m4 b/contrib/groff/aclocal.m4
index 1cd92ce2e7cf..34ee4f1f7788 100644
--- a/contrib/groff/aclocal.m4
+++ b/contrib/groff/aclocal.m4
@@ -1,5 +1,5 @@
dnl Autoconf macros for groff.
-dnl Copyright (C) 1989, 1990, 1991, 1992, 1995 Free Software Foundation, Inc.
+dnl Copyright (C) 1989-1995, 2001 Free Software Foundation, Inc.
dnl
dnl This file is part of groff.
dnl
@@ -129,15 +129,12 @@ AC_LANG_RESTORE])dnl
dnl
dnl
AC_DEFUN(GROFF_SYS_ERRLIST,
-[AC_LANG_SAVE
-AC_LANG_CPLUSPLUS
-AC_MSG_CHECKING([for sys_errlist[] in <errno.h> or <stdio.h>])
+[AC_MSG_CHECKING([for sys_errlist[] in <errno.h> or <stdio.h>])
AC_TRY_COMPILE([#include <errno.h>
#include <stdio.h>],
[int k; k = (int)sys_errlist[0];],
AC_MSG_RESULT(yes);AC_DEFINE(HAVE_SYS_ERRLIST),
-AC_MSG_RESULT(no))
-AC_LANG_RESTORE])dnl
+AC_MSG_RESULT(no))])dnl
dnl
dnl
AC_DEFUN(GROFF_OSFCN_H,
@@ -238,6 +235,13 @@ if test -z "$PAGE"; then
descfile=$prefix/share/groff/font/devps/DESC
elif test -r $prefix/lib/groff/font/devps/DESC; then
descfile=$prefix/lib/groff/font/devps/DESC
+ else
+ for f in $prefix/share/groff/*/font/devps/DESC; do
+ if test -r $f; then
+ descfile=$f
+ break
+ fi
+ done
fi
if test -n "$descfile" \
&& grep "^paperlength 841890" $descfile >/dev/null 2>&1; then
diff --git a/contrib/groff/configure b/contrib/groff/configure
index 31d9341e8952..061a6581fbad 100755
--- a/contrib/groff/configure
+++ b/contrib/groff/configure
@@ -1389,7 +1389,7 @@ chmod +x conftest.sh
if echo ./conftest.sh | (csh >/dev/null 2>&1) >/dev/null 2>&1; then
echo "$ac_t""yes" 1>&6; SH_SCRIPT_SED_CMD='1s/.*/:/'
else
- echo "$ac_t""no" 1>&6; SH_SCRIPT_SED_CMD=''
+ echo "$ac_t""no" 1>&6; SH_SCRIPT_SED_CMD='1s/a/a/'
fi
rm -f conftest.sh
@@ -1963,18 +1963,10 @@ ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
cross_compiling=$ac_cv_prog_cc_cross
-
-ac_ext=C
-# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cxx_cross
-
echo $ac_n "checking for sys_errlist in <errno.h> or <stdio.h>""... $ac_c" 1>&6
-echo "configure:1976: checking for sys_errlist in <errno.h> or <stdio.h>" >&5
+echo "configure:1968: checking for sys_errlist in <errno.h> or <stdio.h>" >&5
cat > conftest.$ac_ext <<EOF
-#line 1978 "configure"
+#line 1970 "configure"
#include "confdefs.h"
#include <errno.h>
#include <stdio.h>
@@ -1982,7 +1974,7 @@ int main() {
int k; k = (int)sys_errlist[0];
; return 0; }
EOF
-if { (eval echo configure:1986: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1978: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
echo "$ac_t""yes" 1>&6;cat >> confdefs.h <<\EOF
#define HAVE_SYS_ERRLIST 1
@@ -1995,13 +1987,6 @@ else
echo "$ac_t""no" 1>&6
fi
rm -f conftest*
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
ac_ext=C
# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -2011,16 +1996,16 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
echo $ac_n "checking C++ <osfcn.h>""... $ac_c" 1>&6
-echo "configure:2015: checking C++ <osfcn.h>" >&5
+echo "configure:2000: checking C++ <osfcn.h>" >&5
cat > conftest.$ac_ext <<EOF
-#line 2017 "configure"
+#line 2002 "configure"
#include "confdefs.h"
#include <osfcn.h>
int main() {
read(0, 0, 0); open(0, 0);
; return 0; }
EOF
-if { (eval echo configure:2024: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2009: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
echo "$ac_t""yes" 1>&6;cat >> confdefs.h <<\EOF
#define HAVE_CC_OSFCN_H 1
@@ -2049,16 +2034,16 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
echo $ac_n "checking C++ <limits.h>""... $ac_c" 1>&6
-echo "configure:2053: checking C++ <limits.h>" >&5
+echo "configure:2038: checking C++ <limits.h>" >&5
cat > conftest.$ac_ext <<EOF
-#line 2055 "configure"
+#line 2040 "configure"
#include "confdefs.h"
#include <limits.h>
int main() {
int x = INT_MIN; int y = INT_MAX; int z = UCHAR_MAX;
; return 0; }
EOF
-if { (eval echo configure:2062: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2047: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
echo "$ac_t""yes" 1>&6;cat >> confdefs.h <<\EOF
#define HAVE_CC_LIMITS_H 1
@@ -2087,16 +2072,16 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
echo $ac_n "checking for declaration of time_t""... $ac_c" 1>&6
-echo "configure:2091: checking for declaration of time_t" >&5
+echo "configure:2076: checking for declaration of time_t" >&5
cat > conftest.$ac_ext <<EOF
-#line 2093 "configure"
+#line 2078 "configure"
#include "confdefs.h"
#include <time.h>
int main() {
time_t t = time(0); struct tm *p = localtime(&t);
; return 0; }
EOF
-if { (eval echo configure:2100: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2085: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
echo "$ac_t""yes" 1>&6
else
@@ -2117,12 +2102,12 @@ ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$a
cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:2121: checking return type of signal handlers" >&5
+echo "configure:2106: checking return type of signal handlers" >&5
if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2126 "configure"
+#line 2111 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <signal.h>
@@ -2139,7 +2124,7 @@ int main() {
int i;
; return 0; }
EOF
-if { (eval echo configure:2143: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2128: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_type_signal=void
else
@@ -2158,16 +2143,16 @@ EOF
echo $ac_n "checking struct exception""... $ac_c" 1>&6
-echo "configure:2162: checking struct exception" >&5
+echo "configure:2147: checking struct exception" >&5
cat > conftest.$ac_ext <<EOF
-#line 2164 "configure"
+#line 2149 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
struct exception e;
; return 0; }
EOF
-if { (eval echo configure:2171: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2156: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
echo "$ac_t""yes" 1>&6;cat >> confdefs.h <<\EOF
#define HAVE_STRUCT_EXCEPTION 1
@@ -2181,7 +2166,7 @@ else
fi
rm -f conftest*
echo $ac_n "checking for sin in -lm""... $ac_c" 1>&6
-echo "configure:2185: checking for sin in -lm" >&5
+echo "configure:2170: checking for sin in -lm" >&5
ac_lib_var=`echo m'_'sin | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2189,7 +2174,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lm $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2193 "configure"
+#line 2178 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2200,7 +2185,7 @@ int main() {
sin()
; return 0; }
EOF
-if { (eval echo configure:2204: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2189: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2225,17 +2210,17 @@ for ac_hdr in unistd.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2229: checking for $ac_hdr" >&5
+echo "configure:2214: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2234 "configure"
+#line 2219 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2239: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2224: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -2264,12 +2249,12 @@ done
for ac_func in getpagesize
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2268: checking for $ac_func" >&5
+echo "configure:2253: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2273 "configure"
+#line 2258 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2292,7 +2277,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2296: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2281: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2317,7 +2302,7 @@ fi
done
echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:2321: checking for working mmap" >&5
+echo "configure:2306: checking for working mmap" >&5
if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2325,7 +2310,7 @@ else
ac_cv_func_mmap_fixed_mapped=no
else
cat > conftest.$ac_ext <<EOF
-#line 2329 "configure"
+#line 2314 "configure"
#include "confdefs.h"
/* Thanks to Mike Haertel and Jim Avera for this test.
@@ -2465,7 +2450,7 @@ main()
}
EOF
-if { (eval echo configure:2469: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2454: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_mmap_fixed_mapped=yes
else
@@ -2492,12 +2477,12 @@ LIBS="$LIBS -lc $LIBM"
for ac_func in fmod strtol getcwd strerror putenv
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2496: checking for $ac_func" >&5
+echo "configure:2481: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2501 "configure"
+#line 2486 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2520,7 +2505,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2524: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2509: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2550,12 +2535,12 @@ LIBS="$saved_libs"
for ac_func in rename mkstemp strcasecmp strncasecmp strsep strdup
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2554: checking for $ac_func" >&5
+echo "configure:2539: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2559 "configure"
+#line 2544 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2578,7 +2563,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2582: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2567: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2603,12 +2588,12 @@ fi
done
echo $ac_n "checking for sys_siglist declaration in signal.h or unistd.h""... $ac_c" 1>&6
-echo "configure:2607: checking for sys_siglist declaration in signal.h or unistd.h" >&5
+echo "configure:2592: checking for sys_siglist declaration in signal.h or unistd.h" >&5
if eval "test \"`echo '$''{'ac_cv_decl_sys_siglist'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2612 "configure"
+#line 2597 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <signal.h>
@@ -2620,7 +2605,7 @@ int main() {
char *msg = *(sys_siglist + 1);
; return 0; }
EOF
-if { (eval echo configure:2624: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2609: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_decl_sys_siglist=yes
else
@@ -2649,16 +2634,16 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
echo $ac_n "checking whether ANSI array delete syntax supported""... $ac_c" 1>&6
-echo "configure:2653: checking whether ANSI array delete syntax supported" >&5
+echo "configure:2638: checking whether ANSI array delete syntax supported" >&5
cat > conftest.$ac_ext <<EOF
-#line 2655 "configure"
+#line 2640 "configure"
#include "confdefs.h"
int main() {
char *p = new char[5]; delete [] p;
; return 0; }
EOF
-if { (eval echo configure:2662: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2647: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
echo "$ac_t""yes" 1>&6
else
@@ -2687,16 +2672,16 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
echo $ac_n "checking traditional preprocessor""... $ac_c" 1>&6
-echo "configure:2691: checking traditional preprocessor" >&5
+echo "configure:2676: checking traditional preprocessor" >&5
cat > conftest.$ac_ext <<EOF
-#line 2693 "configure"
+#line 2678 "configure"
#include "confdefs.h"
#define name2(a,b) a/**/b
int main() {
int name2(foo,bar);
; return 0; }
EOF
-if { (eval echo configure:2700: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2685: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
echo "$ac_t""yes" 1>&6;cat >> confdefs.h <<\EOF
#define TRADITIONAL_CPP 1
@@ -2717,12 +2702,12 @@ ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$a
cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking w_coredump""... $ac_c" 1>&6
-echo "configure:2721: checking w_coredump" >&5
+echo "configure:2706: checking w_coredump" >&5
if test "$cross_compiling" = yes; then
echo "$ac_t""no" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2726 "configure"
+#line 2711 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/wait.h>
@@ -2737,7 +2722,7 @@ main()
#endif
}
EOF
-if { (eval echo configure:2741: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2726: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
echo "$ac_t""yes" 1>&6;cat >> confdefs.h <<\EOF
#define WCOREFLAG 0200
@@ -2753,18 +2738,25 @@ rm -fr conftest*
fi
echo $ac_n "checking default value for grops -b option""... $ac_c" 1>&6
-echo "configure:2757: checking default value for grops -b option" >&5
+echo "configure:2742: checking default value for grops -b option" >&5
test -n "${BROKEN_SPOOLER_FLAGS}" || BROKEN_SPOOLER_FLAGS=7
echo "$ac_t""$BROKEN_SPOOLER_FLAGS" 1>&6
echo $ac_n "checking default paper size""... $ac_c" 1>&6
-echo "configure:2762: checking default paper size" >&5
+echo "configure:2747: checking default paper size" >&5
if test -z "$PAGE"; then
descfile=
if test -r $prefix/share/groff/font/devps/DESC; then
descfile=$prefix/share/groff/font/devps/DESC
elif test -r $prefix/lib/groff/font/devps/DESC; then
descfile=$prefix/lib/groff/font/devps/DESC
+ else
+ for f in $prefix/share/groff/*/font/devps/DESC; do
+ if test -r $f; then
+ descfile=$f
+ break
+ fi
+ done
fi
if test -n "$descfile" \
&& grep "^paperlength 841890" $descfile >/dev/null 2>&1; then
@@ -2793,7 +2785,7 @@ test -n "$PAGE" || PAGE=letter
echo "$ac_t""$PAGE" 1>&6
echo $ac_n "checking for existing troff installation""... $ac_c" 1>&6
-echo "configure:2797: checking for existing troff installation" >&5
+echo "configure:2789: checking for existing troff installation" >&5
if test "x`(echo .tm '|n(.g' | tr '|' '\\\\' | troff -z -i 2>&1) 2>/dev/null`" = x0; then
echo "$ac_t""yes" 1>&6
g=g
@@ -2803,7 +2795,7 @@ else
fi
echo $ac_n "checking for prefix of system macro packages""... $ac_c" 1>&6
-echo "configure:2807: checking for prefix of system macro packages" >&5
+echo "configure:2799: checking for prefix of system macro packages" >&5
sys_tmac_prefix=
sys_tmac_file_prefix=
for d in /usr/share/lib/tmac /usr/lib/tmac; do
@@ -2823,7 +2815,7 @@ echo "$ac_t""$sys_tmac_prefix" 1>&6
tmac_wrap=
echo $ac_n "checking which system macro packages should be made available""... $ac_c" 1>&6
-echo "configure:2827: checking which system macro packages should be made available" >&5
+echo "configure:2819: checking which system macro packages should be made available" >&5
if test "x$sys_tmac_file_prefix" = "xtmac."; then
for f in $sys_tmac_prefix*; do
suff=`echo $f | sed -e "s;$sys_tmac_prefix;;"`
diff --git a/contrib/groff/configure.in b/contrib/groff/configure.in
index 081df0e6c4d8..92024e039202 100644
--- a/contrib/groff/configure.in
+++ b/contrib/groff/configure.in
@@ -15,7 +15,9 @@ AC_PROG_RANLIB
GROFF_INSTALL_SH
AC_PROG_INSTALL
AC_PROG_LN_S
-GROFF_CSH_HACK(SH_SCRIPT_SED_CMD='1s/.*/:/', SH_SCRIPT_SED_CMD='')
+dnl use a dummy substitution if no csh hack is necessary to avoid errors
+dnl with non-GNU sed programs
+GROFF_CSH_HACK(SH_SCRIPT_SED_CMD='1s/.*/:/', SH_SCRIPT_SED_CMD='1s/a/a/')
AC_SUBST(SH_SCRIPT_SED_CMD)
dnl checks for headers
AC_CHECK_HEADERS(stdlib.h unistd.h dirent.h limits.h sys/dir.h \
diff --git a/contrib/groff/contrib/mm/ChangeLog b/contrib/groff/contrib/mm/ChangeLog
new file mode 100644
index 000000000000..ab3ed838b8ba
--- /dev/null
+++ b/contrib/groff/contrib/mm/ChangeLog
@@ -0,0 +1,521 @@
+Mon Mar 5 09:30:18 2001 Jörgen Hägg (jh@axis.com)
+
+ * S didn't reset to default point size
+ * (dummy line to force cvs update...)
+
+Sat Jan 06 10:30:00 2001 Werner Lemberg (wl@gnu.org)
+
+ * Fixed assignment of page offset given as a command line argument.
+
+Fri Nov 17 05:34:17 2000 Jörgen Hägg (jh@axis.com)
+
+ * Renamed tmac.m and tmac.mse to m.tmac and mse.tmac
+
+Thu Sep 14 05:52:48 2000 Jörgen Hägg (jh@axis.com)
+
+ * New Changelog-format, it will show changes better.
+ Easier for other to use. (Somehow I didn't really
+ understand why the e-mail address was supposed to be
+ 'jh at axis.com' in the Changelog. :-)
+
+Thu Sep 7 06:17:42 2000 Jörgen Hägg (jh at axis.com)
+
+ * version 2.0
+ * Had to do something about my version numbering.
+ The main CVS archive was not in sync with mine.
+ So, now it is 2.0. :-)
+
+Sat Jun 17 23:00:00 2000 Eli Zaretskii (eliz@is.elta.co.il)
+
+ * Makefile.sim (.man.n): Replace `;' with `|', since DOS/Windows
+ path lists use the semicolon as a separator.
+
+Sun Jun 4 21:39:00 2000 Kaneda Hiroshi (vanitas at ma3.seikyou.ne.jp)
+
+ * Fixing a lot of typos in groff_mm.man
+
+Sun Jan 30 22:52:20 2000 Jörgen Hägg (jh at axis.com)
+
+ * version 1.34
+ * Changed the version number in the CVS repository
+ * MC had a bug in column calculation, (thanks to T. Kurt Bond)
+
+Fri Sep 3 07:33:14 1999 Jörgen Hägg (jh at axis.com)
+
+ * version 1.33
+ * At last! I finally tracked down the PGFORM bug!
+ It didn't setup the @pl, @ll and @po as it should, now it does.
+ * mgm_ref/mgm_roff renamed to mmroff [-x]
+ * fixed y2k-bug in \*[DT]
+ * \n[cov*year] removed, hope noone used that.
+ * ISODATE added with Iso as command line flag
+ (iso-date suggested by Paul Eggert)
+ * Added ISODATE to tmac.mse and removed local settings
+ of new-date.
+ * INITI syntax changed and enhanced. Index processing is now
+ done with mmroff.
+ * A few examples has been added, new subdirectory 'examples'.
+ * Fixed bug with SETR, header references are now only saved
+ when Ref > 0
+ * Problem with register H1h fixed
+ * Added test for missing abstract in 4.MT
+ * Updated Makefile.sub, using tmac_m_prefix.
+
+Mon Mar 15 22:22:42 1999 Jörgen Hägg (jh at axis.com)
+
+ * OK, let's release this as a beta, 1.33 will be better. :-)
+ * version 1.32
+ * fixed .el-error
+ * Added number variable Hss
+ * Changed Hps1 and Hps2 to units
+ * added hd*h1-text to be used in user defined macro TP.
+ * -U needed for SETR (I really need 'mv', 'echo', 'rm'
+ and 'test' builtin!)
+ * Rewritten the reference system, SETR now prints to stderr
+ if the number register Qrf > 0. Store in the filename
+ that is the argument to .INITR
+ The old behaviour is returned if number register Initr > 0.
+ * Fixed bug with List of XXXX, long lines messed up the result.
+ * added number register H1dot.
+ * added string variable H1txt
+ * added string variable Tcst
+ * added number register Dsp.
+ * added alias APPX for user-defined appendix title.
+ * added string variable Apptxt
+ * added H1h for use in TP in headers
+ * added macro EPIC
+ * added macro PIC (safe replacement for PSPIC)
+ * fixed Hps-bug, should be 1, not 1v.
+ * fixed bug with APPSK, variable not set.
+
+Wed Feb 4 15:46:04 1998 Jörgen Hägg (jh at axis.se)
+
+ * version 1.31
+ * .LI will now honor a space mark.
+ * Another fix for .AU to let it be used without arguments.
+ * uninitialized eq*label fixed
+
+Fri Sep 6 07:13:07 1996 Jörgen Hägg (jh at axis.se)
+
+ * version 1.30
+ * This is more like a beta-release, bugs might pop up. :-)
+ * last line in TOC was not correctly terminated (missing .br)
+ * changed the indentation for displays, it will now
+ indent to the current indent, not the one at the definition
+ of the display.
+ * Equation marks should now work better, indentation also.
+ * included these bug fixes from Larry Jones:
+ * The documentation for the argument to .AS was incorrect for MT 4.
+ * \*(EM should be a double-dash for nroff.
+ * \nS is in points, not units.
+ * If \nO isn't set, the default page offset should be .75i for nroff
+ and .963i for troff.
+ * .S D should set the point size to \nS, not 10.
+ * .S was setting the vertical spacing based on the old point size
+ instead of the new point size.
+ * Got rid of a spurrious .br that prevented run-in headings from
+ working.
+ * Reset the .SP counters in pg@header so that spacing on one page
+ won't affect spacing on subsequent pages.
+ * Allow .AU and .AF with no arguments (real mm does, even though it
+ isn't documented).
+ * Do .init@reset first thing to initialize the default environment.
+ * For MT 4, the title should be 4 points larger than the default size,
+ not 12 point.
+ * The cover environment needs to be initialized.
+ * Printing the abstract on the first page needs to be controlled by
+ the .AS argument.
+ * Heading eject should be suppressed if the heading immediately
+ follows the first page stuff (title, author, etc.).
+ * support for table of contents numbering style (.nr Oc)
+ * changes the troff empty line height from .25v to .5v
+ * fixed section page numbering
+ * fixed a really nasty bug in footnotes that could cause you
+ to lose the page footer completely if the very first
+ footnote on the page occurred at just the wrong place
+
+
+Wed May 15 07:39:32 1996 Jörgen Hägg (jh at axis.se)
+
+ * version 1.29
+ * Syntax and scaling errror fixed, (thanks to Frazer Williams)
+ * DF/DE will now do a line-break before printing the display.
+ * Updated the manual for TB,FG,EX and EC.
+ * Added support for the ms- (and mgs-)macro .IX
+ * Added indexmacro IX, INITI, IND and INDP, support for
+ TXIND, TYIND and TZIND.
+ * PGFORM will now always really reset to the default
+ values for unspecified arguments.
+ * Floating displays tested and repaired, it should
+ now (finanlly) work exactly as the original (I hope :-).
+ * Should now set year correctly even after 2000.
+ * Stupid bug in PGNH fixed.
+ * Corrected line length for figure caption (FG and friends)
+
+
+Mon Apr 24 07:37:52 1995 Jörgen Hägg (jh at axis.se)
+
+ * version 1.28
+ * Added AVL (AV without date)
+ * Fixed nroff scaling for W and L.
+ * Added support for register E and roman/bold
+ for all Subject/Date/From strings.
+ * Added support for register C (1-4), (for DRAFTs and other types)
+ * Will protest if not used with groff.
+ * Change of the internal number registers @ps and @vs, they
+ are now in units, and is set in the new macros .@ps and .@vs.
+ @ps and @vs is now corrected to the real point and vertical size.
+ * Macro EQ has now correct pointsize.
+ * Figures should now get the right page number in the index.
+ * User-defined macros can now be defined for list of
+ figures, tables, equations and exhibits (T{X,Y}{FG,TB,EC,EX}.
+ * Space may be omitted between prefix and mark in automatic lists (.AL)
+ See .LI
+
+Tue Jan 10 07:51:37 1995 Jörgen Hägg (jh at axis.se)
+
+ * version 1.27
+ * Manual updated
+ * More bugs fixed in DS/DF
+ * added alias for :g
+ * LC can now be used without argument (as the manual says. :-)
+ * Register :R now supported (RS/RF)
+ * footnote line was printed even if there was no room for
+ any footnotes. Fixed.
+ * Fixed 1C so that it can be used without page eject
+ * Added support for EOP (TPs twin)
+ * Hyphenation turned off by default. (Hy == 0)
+
+Fri Nov 4 08:14:50 1994 Jörgen Hägg (jh at axis.se)
+
+ * version 1.25
+ * DS/DF separated and several bugs fixed. Watch out for new though. :-)
+ * string DT was emptied by mistake in the previous version.
+ * RD made prettier.
+ * typo in AV and let@print-head fixed.
+
+Mon Oct 31 08:19:24 1994 Jörgen Hägg (jh at axis.se)
+
+ * version 1.24
+ * Bug fixed and format extended in .SG and .FC.
+ * date is always printed unless .ND without argument is used.
+ (I wonder what's the right thing to do, this might change.)
+ * Swedish letter-standards implemented in tmac.mse.
+ * .ND can be used to turn off the date. (Empty argument)
+
+Mon Oct 31 08:14:09 1994 Jörgen Hägg (jh at axis.se)
+
+ * version 1.23
+ * An attempt to get in sync with RCS. This is the distributed
+ version.
+
+Thu Oct 27 08:29:34 1994 Jörgen Hägg (jh at axis.se)
+
+ * version 1.22
+ * (version 1.21 lost... :-)
+ * Letter macros added!!
+ * The following macros are added:
+ * AV, FC, IA ,IE, LT, LO, NE, NS, SG, WA, WE
+ * nP also added.
+
+Tue Dec 14 16:26:36 1993 Joergen Haegg (jh at efd.lth.se)
+
+ * version 1.20
+ * spelling-corrections
+ * Makefile.sim updated to the correct version, and a uninstall
+ target added.
+ * @cur-lib removed from tmac.m (obsolete)
+ * fixed check for references i .TC, .RP now resets the flag correctly.
+ * floating display should now be printed if there is space.
+ * first version using RCS. I've been avoiding version control until it
+ became necessary.
+ * WC WD now works in two-column-mode.
+
+Tue Sep 7 08:37:00 1993 Jörgen Hägg (jh at efd.lth.se)
+
+ * version 1.19
+ * .lt is called in the header for .TP also.
+ * Variable Pgps added to control the header and footer point-size.
+ * Error-text printed with .APP removed.
+ * Error with .FG, .TB, .EC and .EX indentation fixed.
+ * header and footer line-length is not changed by MC or 2C.
+ * Default for page-length and page-offset is now taken from
+ \n[.p] and \n[.o].
+ * Argument to .ab (abort) is supplied.
+ * Argument to .1C added.
+ * Argument to .PGFORM added.
+ * RP/RS/RF totally rewritten. Should work with 2C now.
+
+Fri Apr 23 10:37:25 1993 Joergen Haegg (jh at efd.lth.se)
+
+ * version 1.18
+ * Height of display is now more exactly calculated.
+ * tabs and blankspaces where wrong in .VERBON.
+ * error in manual for escape-character in VERBON.
+ * Makefile.sub: installed tmac.m as tmac.m and tmac.mse
+ * Installation of tmac.mse now supports TMAC_M.
+ * bug with N fixed.
+
+Mon Apr 5 09:36:01 1993 Joergen Haegg (jh at efd.lth.se)
+
+ * version 1.17
+ * MULB preserves size.
+ * bug in VERBON fixed, causing strange errors.
+ * section-page footer fixed.
+ * added support for numberregister S
+ * fixed bug with floating displays wich made floats to
+ generate space on a page, but broke page anyway.
+ * end-of-page trap reinstalled.
+
+Mon Mar 29 10:53:13 1993 Joergen Haegg (jh at efd.lth.se)
+
+ * version 1.16
+ * MUL* now use the previous font and family.
+ * extra blank page at end-of-text eliminated.
+
+Mon Mar 8 10:27:47 1993 Joergen Haegg (jh at efd.lth.se)
+
+ * version 1.15
+ * Didn't restore pointsize to current size in .H.
+ * B1/B2 did not work with indent. (MULE and friends)
+ * fixed old problem with trailing empty pages.
+
+Fri Mar 5 15:20:49 1993 Joergen Haegg (jh at efd.lth.se)
+
+ * version 1.14
+ * Sigh. Amazing what a missing \} can do. If the string
+ HP was set, then all text disappeared...
+
+Fri Mar 5 14:12:43 1993 Joergen Haegg (jh at efd.lth.se)
+
+ * version 1.13
+ * Fixed bug with handling ps/vs in .H. (again, sigh... )
+
+Wed Mar 3 09:21:20 1993 Joergen Haegg (jh at efd.lth.se)
+
+ * version 1.12
+ * Line-break added to PGFORM.
+ * added more features to VERBON
+ * .S is not used anymore in H, it caused confusion with
+ normal text, but it will still set .vs.
+ * SK was broken, will now produce the requested number of
+ empty pages.
+ * dotted lines added to LIST OF FIGURES adn friends.
+ Also better linespacing.
+
+Mon Feb 22 12:41:06 1993 Joergen Haegg (jh at efd.lth.se)
+
+ * version 1.11
+ * missing left-parenthesis gave ") .sp" when N=4.
+ * N=4 removed user-specified header also.
+ * MOVE made linelength pageoffset wider than wanted.
+ * fixed (again) parenthesis in RP.
+
+Thu Jan 21 12:10:39 1993 Joergen Haegg (jh at efd.lth.se)
+
+ * version 1.10
+ * changed PROG_PREFIX to g in the manual-pages.
+ * Better check if new page is needed in .H, when Ej>0.
+ * Usage of variable Lsp now more complete.
+ * Space added in TOC when mark is equal to size.
+ * Usermacro HY moved after font-calulations.
+ * .S used instead of .ps, which will use .vs correct.
+ * Now possible to set Hps1/2 inside HX.
+ * .FD "" 1 is now fixed.
+ * section-page numbering bug fixed.
+ * several bugs in VERBON/OFF fixed.
+
+Tue Dec 8 16:43:15 1992 Joergen Haegg (jh at efd.lth.se)
+
+ * version 1.09
+ * N==4 gives no default header
+
+Sat Nov 21 14:28:20 1992 Joergen Haegg (jh at efd.lth.se)
+
+ * version 1.08
+ * Escape-character disabled between
+ VERBON/VERBOFF (turned on by an argument).
+ Pointsize and fontchange also added as arguments.
+ * MULB, MULN and MULE added to get multicolumn output
+ with different width.
+ * Number register N can now use 1-5.
+ * Register Sectp and Sectf added.
+ * Register P is now updated correctly for "section-page" numbering.
+
+Thu Nov 19 11:19:33 1992 Joergen Haegg (jh at efd.lth.se)
+
+ * version 1.07
+ * .OP fixed to eject a blank page if not odd.
+
+Fri Nov 13 09:46:09 1992 Joergen Haegg (jh at efd.lth.se)
+
+ * version 1.06
+ * Macro TL rewritten. TL depends now on a following .AU.
+ * NOTES updated.
+ * .lt is now used more frequent when linelength is changed.
+ * macro AST added.
+ * removed PH/EH/OH not needed in ?.MT.
+
+Wed Oct 28 14:35:43 1992 Joergen Haegg (jh at efd.lth.se)
+
+ * version 1.05
+ * .VM implemented.
+ * Possible bug in page heading fixed. Changed .sp to 'sp in HEADER.
+
+Thu Aug 20 13:56:31 1992 Joergen Haegg (jh at efd.lth.se)
+
+ * version 1.04
+ * page-break in .EQ moved.
+ * changed unit for footer-size and header-size from units to lines.
+ Fixes problems with .S and page-breaks.
+ * \n[%] is now treated as a string, wich makes it possible
+ to assign new formats to it. Unfortunately, it was necessary
+ to change the page-number-variable in GETPN to a string.
+ * Makefile.sub included. (Thank you, James)
+
+Thu May 7 16:14:10 1992 Joergen Haegg (jh at efd.lth.se)
+
+ * version 1.03
+ * Typo and centering in DS/DE fixed.
+ Even and odd pageheaders were reversed.
+ * LI: pad and mark-indent was lost in some earlier versions. Now fixed.
+ * fixed bug in reference to .FG, .TB, ...
+ * APP did not clear headercounters.
+ * Pointsize in titles is now only set at the beginning and
+ when PH, PF, OH, OF, EH and EF are used.
+
+Thu May 6 16:01:35 1992 Joergen Haegg (jh at efd.lth.se)
+
+ * version 1.02
+ * OP fixed.
+
+Fri Mar 6 09:36:09 1992 Joergen Haegg (jh at efd.lth.se)
+
+ * version 1.01
+ * two .LI without text between should not be printed
+ on the same row. Now fixed.
+ * figure titles and friends fixed, now possible with many .FG
+ in a DS/DE. Didn't always position correctly in previous version,
+ but is now always printed as it should.
+ * Makefile fixed for Ultrix.
+ * DS/DF could not handle empty arguments correct
+ * Missing .br i EQ added.
+
+Sat Jan 25 15:47:21 1992 Joergen Haegg (jh at efd.lth.se)
+
+ * version 1.00
+ * No betaversion anymore!
+ * Fixed headernumbers within appendixes.
+ * DS did not keep the same font as before DS.
+ * mmse did a line break.
+
+Fri Jan 24 14:38:16 1992 Joergen Haegg (jh at efd.lth.se)
+
+ * version 0.16
+ * bug in TC, multiple line headers did not wrap correctly.
+ * added support for mm/locale and mm/language_locale.
+ * cov*default-firm in locale sets name of firm in the MT covers.
+ * cov*location-xxxx in locale sets location xxxx to the contents
+ of cov*location-xxxx. Used in the MT covers.
+ * hanging indent in lists fixed.
+ * use larger empty lines if .nroff is defined.
+ * macros, like .P, can now be used inside abstracts.
+ * .S do not reset indentation anymore.
+ * .RS aA now sets a string, not an integer.
+ * appendix with .APP or .APPSK added.
+
+Thu Nov 28 22:00:59 1991 Joergen Haegg (jh at efd.lth.se)
+
+ * version 0.15
+ * Fixed .AU in MT 0-3, added support for variable Au.
+ * Bug in the positioning of the foot-notes.
+ * lists not indented properly.
+ * Hps1 and Hps2 added.
+ * COVER had to have an argument.
+ * table of contents can now have multiline header.
+ * .HU now increments headingvariable H?
+ * added the inclusion of a locale file.
+
+Sat Nov 23 14:40:17 1991 Joergen Haegg (jh at efd.lth.se)
+
+ * version 0.14
+ * bug when using -rO fixed.
+ * MT 1-4 added.
+ * default is now MT 1
+ * .EQ/.EN can be used outside of .DS/.DE without complaints. But
+ I don't recommend it. Neither does the DWB books.
+ * LI don't break lines now if arg too big.
+ * PGFORM did not reset indent.
+ * Added the numbervariable Hps.
+ * Rewritten and added MT 0-5 + "string".
+ * Added TM.
+ * Indent to AS added
+
+Wed Nov 6 15:18:40 1991 Joergen Haegg (jh at efd.lth.se)
+
+ * version 0.13
+ * ds*format nod defined if PS/PE is used without DS/DE.
+ * GETST added, fourth argument to EX, FG, TB and EC added.
+
+Mon Nov 4 13:38:01 1991 Joergen Haegg (jh at efd.lth.se)
+
+ * version 0.12
+ * Fixed C,D,P,+-size in .S
+
+Sun Jan 1 00:00:00 1991 Joergen Haegg (jh at efd.lth.se)
+ * Next version will have ChangeLog entries...
+ * Bug in INITR fixed.
+ * VERBON/VERBOFF added to include programlistings
+ * Bug in .DE fixed, addition overflow
+Sun Jan 1 00:00:00 1991 Joergen Haegg (jh at efd.lth.se)
+ * spelling error in month-names.
+ * WC should work now (no warranty :-)
+ * FD almost finished, some details missing.
+ * incorrect calculation of foot-notes fixed.
+ * DS/DE did not break page when the size was smaller than the paper
+ * Forward/backward referencesystem added. Se .INITR in README.
+ * mgmsw changed name to mgmse.
+Sun Jan 1 00:00:00 1991 Joergen Haegg (jh at efd.lth.se)
+ * embarrassing bug in .P fixed
+ * .H did always eject page, now fixed.
+ * lost floating displays now found.
+ * accents added (from mgs)
+ * empty line in .EQ/.EN removed
+ * indentation in .TC corrected.
+ * indentation of DS/DE in lists fixed.
+ * .TB and friends now work inside DS/DE and outside.
+ * .WC partially implemented (WF and WD). Still working on it.
+ * .mso used if version>=1.02
+Sun Jan 1 00:00:00 1991 Joergen Haegg (jh at efd.lth.se)
+ * register P was not working.
+ * support for register Fg, Tb, Ec and Ex.
+ * list items was left on the previous page at a page break.
+ * tlevel in .TC now defaults to 2.
+ * string DT, EM and Tm supported.
+ * new macro: PGNH, see comments.
+ * bug in MOVE fixed.
+ * pagenumber in .TC fixed.
+ * a blank page was ejected if Ej==1, now fixed
+ * bug in floating display fixed (did break and SP wrong)
+ * bug in .SP fixed, no lines is now printed at top of page
+ * There are still problems with footnotes and displays in two column mode.
+Sun Jan 1 00:00:00 1991 Joergen Haegg (jh at efd.lth.se)
+ * register P added (same as %)
+ * bug in floating displays fixed
+ * MOVE added
+ * MT added, see comment below
+ * COVER/COVEND added
+ * fixed bug in figure titles
+ * extended S, se comment below
+ * MT 0 added
+ * ms-cover added (COVER ms)
+Sun Jan 1 00:00:00 1991 Joergen Haegg (jh at efd.lth.se)
+ * bugs in RD and comb. fonts fixed
+Sun Jan 1 00:00:00 1991 Joergen Haegg (jh at efd.lth.se)
+ * HC added
+ * Combined fonts (IB,BI...)
+ * HM added
+ * RD added
+ * OP added
+ * TP&PX supported
+ * warnings for unimplemented macros
diff --git a/contrib/groff/contrib/mm/Makefile.sim b/contrib/groff/contrib/mm/Makefile.sim
new file mode 100644
index 000000000000..e1d4a142b73f
--- /dev/null
+++ b/contrib/groff/contrib/mm/Makefile.sim
@@ -0,0 +1,66 @@
+#
+# $Id: Makefile.sim,v 2.1 2000/11/17 04:26:02 jhaegg Exp $
+#
+# To install mgm separately as gm.tmac:
+# make -f Makefile.sub tmacdir=/usr/local/lib/groff/tmac srcdir=. \
+# INSTALL_DATA='install -m 644' tmac_m=gm install
+#
+# or as m.tmac:
+#
+# tmacdir is the destination for your groff/tmac-directory, srcdir is
+# this directory and INSTALL_DATA is the command to install a file with.
+# If you dont have 'install': use 'cp'.
+
+
+# change this to whatever you like
+tmacdir=/usr/local/lib/groff/tmac
+#tmac_m = gm
+tmac_m = m
+indexdir = xx
+install = install -m 644
+
+# Do not change anything below this line
+srcdir = .
+version = 1.32
+mdate = 1999-09-03
+
+.SUFFIXES: .n .man
+
+all:
+
+
+install: groff_mm.n groff_mmse.n
+ $(MAKE) -f Makefile.sub tmacdir=$(tmacdir) srcdir=$(srcdir) \
+ INSTALL_DATA='$(install)' tmac_m=$(tmac_m) install
+
+ uninstall: groff_mm.n groff_mmse.n
+ $(MAKE) -f Makefile.sub tmacdir=$(tmacdir) srcdir=$(srcdir) \
+ INSTALL_DATA='$(install)' tmac_m=$(tmac_m) uninstall_sub
+
+
+.man.n:
+ @echo Making $@ from $<
+ @-rm -f $@
+ @sed -e "s|@HYPHENFILE@|$(hyphenfile)|g" \
+ -e "s|@FONTDIR@|$(fontdir)|g" \
+ -e "s|@FONTPATH@|$(fontpath)|g" \
+ -e "s|@MACRODIR@|$(tmacdir)|g" \
+ -e "s|@MACROPATH@|$(tmacpath)|g" \
+ -e "s|@DEVICE@|$(DEVICE)|g" \
+ -e "s|@DEFAULT_INDEX@|$(indexdir)/$(indexname)|g" \
+ -e "s|@DEFAULT_INDEX_NAME@|$(indexname)|g" \
+ -e "s|@INDEX_SUFFIX@|$(indexext)|g" \
+ -e "s|@COMMON_WORDS_FILE@|$(common_words_file)|g" \
+ -e "s|@MAN1EXT@|$(man1ext)|g" \
+ -e "s|@MAN5EXT@|$(man5ext)|g" \
+ -e "s|@MAN7EXT@|$(man7ext)|g" \
+ -e "s|@TMAC_S@|$(tmac_s)|g" \
+ -e "s|@TMAC_M@|$(tmac_m)|g" \
+ -e "s|@TMAC_MDIR@|$(tmacdir)/mm|g" \
+ -e "s|@BROKEN_SPOOLER_FLAGS@|$(BROKEN_SPOOLER_FLAGS)|g" \
+ -e "s|@VERSION@|$(version)|g" \
+ -e "s|@MDATE@|$(mdate)|g" \
+ -e "s|@g@|$(g)|g" \
+ -e "s!@G@;`echo $(g) | tr [a-z] [A-Z]`!g" \
+ $< >$@
+
diff --git a/contrib/groff/contrib/mm/Makefile.sub b/contrib/groff/contrib/mm/Makefile.sub
new file mode 100644
index 000000000000..87cf0504fe4d
--- /dev/null
+++ b/contrib/groff/contrib/mm/Makefile.sub
@@ -0,0 +1,55 @@
+#
+# $Id: Makefile.sub,v 2.1 2000/11/17 04:26:02 jhaegg Exp $
+#
+PROG=mmroff
+MAN7=\
+ groff_mm.n \
+ groff_mmse.n \
+ mmroff.n
+FILES=0.MT 5.MT 4.MT ms.cov se_ms.cov
+# Local configuration files with default values.
+LOCALE = locale se_locale
+CLEANADD=temp
+
+all: mmroff
+
+install: install_mm
+
+install_mm: install_mmroff install_m
+ -test -d $(tmacdir)/mm || $(mkinstalldirs) $(tmacdir)/mm
+ -for f in $(FILES); do \
+ rm -f $(tmacdir)/mm/$$f; \
+ $(INSTALL_DATA) $(srcdir)/mm/$$f $(tmacdir)/mm/$$f; \
+ done
+ -for f in $(LOCALE); do \
+ test -f $(tmacdir)/mm/$$f || touch $(tmacdir)/mm/$$f; \
+ done
+
+install_m:
+ -test -d $(tmacdir) || $(mkinstalldirs) $(tmacdir)
+ -rm -f $(tmacdir)/tmac.$(tmac_m_prefix)m
+ -rm -f $(tmacdir)/$(tmac_m_prefix)m.tmac
+ $(INSTALL_DATA) $(srcdir)/m.tmac $(tmacdir)/$(tmac_m_prefix)m.tmac
+ @sed -e "s;^.mso m.tmac;.mso $(tmac_m_prefix)m.tmac;g" \
+ $(srcdir)/mse.tmac > $(tmacdir)/$(tmac_m_prefix)mse.tmac
+install_mmroff : mmroff
+ -test -d $(bindir) || $(mkinstalldirs) $(bindir)
+ -rm -f $(bindir)/mmroff
+ $(INSTALL_SCRIPT) mmroff $(bindir)/mmroff
+
+mmroff: mmroff.pl
+ -rm -f $@
+ -sed -e 's;/usr/bin/perl;$(PERLPATH);' $(srcdir)/mmroff.pl >$@
+ -chmod +x $@
+
+
+uninstall_sub:
+ -for f in $(FILES); do rm -f $(tmacdir)/mm/$$f; done
+ -for f in $(LOCALE); do \
+ test -s $(tmacdir)/mm/$$f || rm -f $(tmacdir)/mm/$$f; \
+ done
+ -rm -f $(tmacdir)/tmac.$(tmac_m_prefix)m
+ -rm -f $(tmacdir)/$(tmac_m_prefix)m.tmac
+ -rm -f $(tmacdir)/$(tmac_m_prefix)mse.tmac
+ -rmdir $(tmacdir)/mm
+ -rm -f $(bindir)/mmroff
diff --git a/contrib/groff/contrib/mm/NOTES b/contrib/groff/contrib/mm/NOTES
new file mode 100644
index 000000000000..7643c10067c7
--- /dev/null
+++ b/contrib/groff/contrib/mm/NOTES
@@ -0,0 +1,105 @@
+######################################################################
+$Id: NOTES,v 2.0 2000/09/14 03:40:24 jhaegg Exp $
+
+Beware!
+This may be old information. Trust only the source. :-)
+
+Implementation notes. (Or how to make your own national mm)
+
+Different commands:
+
+COVER [arg]
+MT [arg [addressee]]
+The arg is part of a filename in mm/*.MT or mm/*.cov.
+This file is read when the macro is executed. Therefore it must be
+put before any text output.
+In each file there are definitions of all extra macros needed for the
+cover sheet. MT files is only for compatibility reasons, and has several
+limits due to that it don't know when the cover starts, and cannot
+change sizes. Use COVER for new coversheet macros.
+
+But with MT it is possible to write all of the AT&T covers.
+An example can be found in mm/0.MT.
+
+When writing a new cover using COVER, have in mind that the cover
+should print the page with the COVEND macro. This macro
+should be defined by the new macrofile.
+
+Here is a part of ms.cov:
+> .\"-----------------
+> .de COVEND
+> .sp |4.2c
+> .cov@print-title
+> .cov@print-authors
+> .cov@print-firm
+> .cov@print-abstract
+> .cov@print-date
+This is important, since COVER disables the page header.
+> .pg@enable-top-trap
+Should begin with page one (normally).
+> .bp 1
+And enable the trap at the page footer.
+> .pg@enable-trap
+> ..
+
+#########################
+
+Variables for covers:
+I = integer
+S = string
+D = diversion
+M = macro
+
+Name Type Desc.
+cov*au I The number of authors.
+
+cov*title M Title collected with .TL.
+
+cov*au!x!y S Author(s) given to .AU
+cov*at!x!y S Author(s) title given to .AT
+ x is the author-index [1-cov*au],
+ y is the argument-index [1-9].
+ Look at the table with indexes.
+
+cov*firm I Author(s) firm.
+
+cov*abs-arg I Argument to abstract.
+
+cov*abs-ind I Indent for abstract.
+
+cov*abs-name S The string 'ABSTRACT', changed with .AST
+
+cov*abstract M The abstract.
+
+cov*new-date S The date (todays date if ND is not used)
+
+cov*mt-type S MT type
+cov*mt-addresse S MT addressee
+
+
+##########################
+Argument-index for cov*au:
+
+Index Desc.
+1 name
+2 initials
+3 location
+4 department
+5 extension
+6 room
+7 arg 7
+8 arg 8
+9 arg 9
+
+The location is set to the contents of string cov*location-xxxx
+if location is equal to xxxx and cov*location-xxxx is defined
+in the file locale.
+
+
+Argument-index for cov*at:
+
+Index Desc.
+1 title 1
+. .
+. .
+9 title 9
diff --git a/contrib/groff/contrib/mm/README b/contrib/groff/contrib/mm/README
new file mode 100644
index 000000000000..15901ddc974a
--- /dev/null
+++ b/contrib/groff/contrib/mm/README
@@ -0,0 +1,37 @@
+
+$Id: README,v 2.1 2000/11/17 04:27:03 jhaegg Exp $
+
+This is mgm, a macro package for groff.
+
+It is supposed to be compatible with the DWB mm macros,
+and has several extensions.
+
+Send bug reports to jh@axis.com with a description of the problem
+and a sample of text which reproduces the error.
+
+Don't forget to mention the version of mgm (look in the beginning
+of m.tmac) and the version of groff.
+
+Any new ideas or improvements are welcome.
+
+Newest version is available here or at the groff CVS repository.
+ftp://ftp.axis.se/pub/groff/mm<something>.gz
+
+You can install mgm as a separate package without the configure in groff
+with the following command:
+
+make -f Makefile.sim install
+
+This README should be bigger :-)
+
+/Jörgen Hägg
+
+Thanks to everyone who have sent me bug-reports and fixes.
+
+
+Yes, my version numbering differs from the groff CVS, but I
+like mine better. :-)
+
+More likely, I'm too lazy to change it, but someday I'll
+try to sync them...
+The step to 2.0 is an attempt, let's see if it works.
diff --git a/contrib/groff/contrib/mm/examples/APP b/contrib/groff/contrib/mm/examples/APP
new file mode 100644
index 000000000000..82352e58c3e4
--- /dev/null
+++ b/contrib/groff/contrib/mm/examples/APP
@@ -0,0 +1,352 @@
+.H 1 " granary grand grandchild grandchildren granddaughter grandeur"
+granary
+grapheme
+graphic
+graphite
+grapple
+grasp
+grass
+grassland
+grassy
+grata
+grate
+grateful
+grater
+gratify
+gratis
+gratitude
+gratuitous
+gratuity
+grave
+gravel
+.H 2 "grapefruit grapevine graph grapheme graphic graphite"
+granary
+grand
+graphic
+graphite
+grapple
+grasp
+grass
+grassland
+grassy
+grata
+grate
+grateful
+grater
+gratify
+gratis
+gratitude
+gratuitous
+gratuity
+grave
+gravel
+.H 3 "grapple"
+granary
+grand
+grandchild
+grandchildren
+granddaughter
+grandeur
+grandfather
+grandiloquent
+grandiose
+grandma
+grandmother
+grateful
+grater
+gratify
+gratis
+gratitude
+gratuitous
+gratuity
+grave
+gravel
+.H 1 "Graves gravestone graveyard gravid gravitate gravy gray"
+granary
+grand
+grandchild
+grandchildren
+granddaughter
+grandeur
+grandfather
+grandiloquent
+grandiose
+grata
+grate
+grateful
+grater
+gratify
+gratis
+gratitude
+gratuitous
+gratuity
+grave
+gravel
+.H 1 "Greenfield greengrocer greenhouse greenish Greenland Greensboro"
+granary
+grand
+grandchild
+grandchildren
+granddaughter
+grandeur
+grandfather
+grandiloquent
+grassy
+grata
+grate
+grateful
+grater
+gratify
+gratis
+gratitude
+gratuitous
+gratuity
+grave
+gravel
+.H 1 "greensward greenware Greenwich greenwood Greer greet"
+graven
+Graves
+gravestone
+graveyard
+gravid
+gravitate
+gravy
+gray
+graybeard
+grayish
+Grayson
+graywacke
+graze
+grease
+.APP "" "Graves app a gravestone graveyard gravid gravitate gravy gray"
+granary
+grand
+grandchild
+grandchildren
+granddaughter
+grandeur
+grandfather
+grandiloquent
+grandiose
+grata
+grate
+grateful
+grater
+gratify
+gratis
+gratitude
+gratuitous
+gratuity
+grave
+gravel
+.APP "" "Greenfield app b greengrocer greenhouse greenish Greenland Greensboro"
+granary
+grand
+grandchild
+grandchildren
+granddaughter
+grandeur
+.H 2 "grandfather grandiloquent grandiose grandma grandmother grandnephew"
+.H 2 "grandniece grandpa grandparent grandson grandstand granite granitic"
+.H 2 "granny granola grant grantee grantor granular granulate"
+.H 2 "granule Granville grape"
+.H 2 "grapefruit grapevine graph grapheme graphic graphite"
+.H 3 "grapple"
+grandfather
+grandiloquent
+grassy
+grata
+grate
+grateful
+grater
+gratify
+gratis
+gratitude
+gratuitous
+gratuity
+grave
+gravel
+.APP ABC "greensward app abc greenware Greenwich greenwood Greer greet"
+graven
+Graves
+.APP "" "handstand app f handwrite handwritten handy handyman handymen"
+gravestone
+graveyard
+gravid
+gravitate
+gravy
+gray
+graybeard
+grayish
+Grayson
+graywacke
+graze
+grease
+.APPSK "" 10 "Handel app c 10 handhold handicap handicapped handicapper"
+.APPSK "" 23 "handicapping app d 23 handicraftsmen handiwork"
+.APPSK "" 99 "handmade app e 99 handset handshake handsome handspike"
+.nr Aph 0
+.APP "" "handstand app f handwrite handwritten handy handyman handymen"
+headsmen
+headstand
+headstone
+headstrong
+headwall
+headwater
+headway
+headwind
+.H 2 "graybeard grayish Grayson graywacke graze grease greasy great greatcoat"
+.H 2 "greater grebe Grecian Greece greed greedy Greek green Greenbelt Greenberg"
+.H 2 "Greenblatt Greenbriar Greene greenery"
+.H 3 "Greenfield greengrocer greenhouse greenish Greenland Greensboro"
+.H 3 "greensward greenware Greenwich greenwood Greer greet"
+heady
+heal
+Healey
+health
+healthful
+healthy
+Healy
+heap
+hear
+heard
+hearken
+hearsay
+hearse
+Hearst
+heart
+heartbeat
+heartbreak
+hearten
+heartfelt
+hearth
+hearty
+heat
+heater
+heath
+heathen
+heathenish
+Heathkit
+heave
+heaven
+heavenward
+heavy
+heavyweight
+Hebe
+hebephrenic
+Hebraic
+Hebrew
+Hecate
+hecatomb
+heck
+heckle
+Heckman
+hectic
+hector
+.APP "" "hang hangable app f hangar hangman hangmen hangout hangover hank"
+Hecuba
+he'd
+hedge
+.H 2 "graybeard grayish Grayson graywacke graze grease greasy great greatcoat"
+hedgehog
+hedonism
+hedonist
+heed
+heel
+.H 2 "greater grebe Grecian Greece greed greedy Greek green Greenbelt Greenberg"
+heft
+hefty
+Hegelian
+hegemony
+Heidelberg
+heigh
+height
+heighten
+Heine
+Heinrich
+Heinz
+heir
+heiress
+Heisenberg
+held
+Helen
+Helena
+Helene
+Helga
+helical
+helicopter
+heliocentric
+heliotrope
+helium
+helix
+he'll
+hell
+hellbender
+hellebore
+Hellenic
+hellfire
+hellgrammite
+hellish
+hello
+helm
+helmet
+Helmholtz
+helmsman
+helmsmen
+Helmut
+help
+helpful
+helpmate
+.APP "" "Hankel app g Hanley Hanlon Hanna Hannah Hannibal Hanoi Hanover"
+Helsinki
+Helvetica
+hem
+hematite
+Hemingway
+hemisphere
+hemispheric
+hemlock
+hemoglobin
+hemolytic
+hemorrhage
+hemorrhoid
+hemosiderin
+hemp
+Hempstead
+hen
+henbane
+hence
+henceforth
+henchman
+henchmen
+.H 2 "greater grebe Grecian Greece greed greedy Greek green Greenbelt Greenberg"
+Henderson
+Hendrick
+Hendricks
+Hendrickson
+henequen
+Henley
+henpeck
+Henri
+Henrietta
+henry
+hepatica
+hepatitis
+Hepburn
+heptane
+her
+Hera
+Heraclitus
+herald
+herb
+Herbert
+Herculean
+Hercules
+herd
+herdsman
+here
+hereabout
+hereafter
+hereby
+hereditary
+.TC
diff --git a/contrib/groff/contrib/mm/examples/B1B2 b/contrib/groff/contrib/mm/examples/B1B2
new file mode 100644
index 000000000000..a2bb3add57d9
--- /dev/null
+++ b/contrib/groff/contrib/mm/examples/B1B2
@@ -0,0 +1,91 @@
+abetting
+abeyance
+abeyant
+abhorred
+abhorrent
+abide
+Abidjan
+Abigail
+abject
+ablate
+ablaze
+able
+ablution
+Abner
+abnormal
+Abo
+aboard
+abode
+abolish
+.B1
+abolition
+abominable
+abominate
+aboriginal
+AAA
+ABORIGINE
+ABORNING
+ABORT
+ABOUND
+ABOUT
+ABOVE
+ABOVEBOARD
+ABOVEGROUND
+abovementioned
+abrade
+Abraham
+Abram
+Abramson
+abrasion
+abrasive
+abreact
+.B2
+abreast
+abrogate
+abrupt
+abscess
+abscissa
+abscissae
+absence
+absent
+absentee
+absenteeism
+absentia
+absentminded
+absinthe
+absolute
+absolution
+absolve
+absorb
+absorbent
+absorption
+absorptive
+abstain
+abstention
+abstract
+abstracter
+abstractor
+ABSURD
+ABUILDING
+ABUNDANT
+ABUSABLE
+ABUSE
+ABUSIVE
+ABUT
+ABUTTED
+ABUTTING
+ABYSMAL
+ABYSS
+ABYSSINIA
+AC
+ACADEME
+ACADEMIA
+ACADEMIC
+ACADEMICIAN
+ACADEMY
+ACADIA
+ACANTHUS
+ACAPULCO
+ACCEDE
+ACCELERATE
+ACCELEROMETER
diff --git a/contrib/groff/contrib/mm/examples/COVER b/contrib/groff/contrib/mm/examples/COVER
new file mode 100644
index 000000000000..d23597f0a897
--- /dev/null
+++ b/contrib/groff/contrib/mm/examples/COVER
@@ -0,0 +1,235 @@
+.COVER
+.ND 911123
+.TL "charge" "filing"
+This is a test
+granary
+grand
+grandchild
+grandchildren
+granddaughter
+grandeur
+grandfather
+grandiloquent
+grandiose
+grandma
+grandmother
+grandnephew
+grandniece
+grandpa
+grandparent
+grandson
+.AU "Nisse Svensson" "DGY" "BF" "Computer Center" "5488" "5-2115" "nisse@vira.sture.elm"
+.AF "MT GRANDSTAND GRANITE GRANITIC"
+.AS 1 10
+grant
+grantee
+grantor
+granular
+granulate
+granule
+Granville
+grape
+grapefruit
+grapevine
+graph
+grapheme
+graphic
+graphite
+grapple
+grasp
+grass
+grassland
+grassy
+grata
+grate
+grateful
+grater
+gratify
+gratis
+gratitude
+gratuitous
+gratuity
+grave
+gravel
+graven
+Graves
+gravestone
+graveyard
+gravid
+gravitate
+gravy
+gray
+graybeard
+grayish
+Grayson
+graywacke
+graze
+grease
+greasy
+great
+greatcoat
+greater
+grebe
+Grecian
+.AE
+.COVEND
+Greece
+greed
+greedy
+Greek
+green
+Greenbelt
+Greenberg
+Greenblatt
+Greenbriar
+Greene
+greenery
+Greenfield
+greengrocer
+greenhouse
+greenish
+Greenland
+Greensboro
+greensward
+greenware
+Greenwich
+greenwood
+Greer
+greet
+Greg
+gregarious
+Gregg
+Gregory
+gremlin
+grenade
+Grendel
+Grenoble
+Gresham
+Greta
+Gretchen
+grew
+grey
+greyhound
+greylag
+grid
+griddle
+gridiron
+grief
+grievance
+grieve
+grievous
+griffin
+Griffith
+grill
+grille
+grilled
+grillwork
+grim
+grimace
+Grimaldi
+grime
+Grimes
+Grimm
+grin
+grind
+grindstone
+grip
+gripe
+grippe
+grisly
+grist
+gristmill
+Griswold
+grit
+gritty
+grizzle
+granary
+grand
+grandchild
+grandchildren
+granddaughter
+grandeur
+grandfather
+grandiloquent
+grandiose
+grandma
+grandmother
+grandnephew
+grandniece
+grandpa
+grandparent
+grandson
+grandstand
+granite
+granitic
+granny
+granola
+grant
+grantee
+grantor
+granular
+granulate
+granule
+Granville
+grape
+grapefruit
+grapevine
+graph
+grapheme
+graphic
+graphite
+grapple
+grasp
+grass
+grassland
+grassy
+grata
+grate
+grateful
+grater
+gratify
+gratis
+gratitude
+gratuitous
+gratuity
+grave
+gravel
+graven
+Graves
+gravestone
+graveyard
+gravid
+gravitate
+gravy
+gray
+graybeard
+grayish
+Grayson
+graywacke
+graze
+grease
+greasy
+great
+greatcoat
+greater
+grebe
+Grecian
+Greece
+greed
+greedy
+Greek
+green
+Greenbelt
+Greenberg
+Greenblatt
+Greenbriar
+Greene
+greenery
+Greenfield
+greengrocer
+greenhouse
+greenish
+Greenland
+Greensboro
+greensward
+greenware
diff --git a/contrib/groff/contrib/mm/examples/IND b/contrib/groff/contrib/mm/examples/IND
new file mode 100644
index 000000000000..fbf6c43a031a
--- /dev/null
+++ b/contrib/groff/contrib/mm/examples/IND
@@ -0,0 +1,4191 @@
+.de foo
+a=\\$1, b=\\$2
+.br
+..
+.INITI N ind-data
+.H 1 "halve"
+.IND granary
+grand
+grandchild
+grandchildren
+granddaughter
+grandeur
+grandfather
+grandiloquent
+grandiose
+grandma
+grandmother
+.IND grandnephew
+grandniece
+grandpa
+grandparent
+grandson
+grandstand
+granite
+granitic
+granny
+granola
+grant
+grantee
+grantor
+granular
+.IND granulate
+granule
+Granville
+grape
+.H 2 "grandfather grandiloquent grandiose grandma grandmother grandnephew"
+grapefruit
+grapevine
+graph
+grapheme
+graphic
+.H 1 "halo halocarbon halogen Halpern Halsey Halstead halt halvah"
+graphite
+grapple
+grasp
+grass
+grassland
+grassy
+grata
+grate
+grateful
+grater
+gratify
+gratis
+gratitude
+gratuitous
+gratuity
+.IND grave
+gravel
+graven
+Graves
+gravestone
+graveyard
+gravid
+gravitate
+gravy
+gray
+graybeard
+grayish
+Grayson
+graywacke
+graze
+grease
+greasy
+great
+greatcoat
+greater
+.H 1 "Han Hancock hand handbag handbook handclasp handcuff Handel handful"
+grebe
+Grecian
+Greece
+greed
+greedy
+.IND Greek
+green
+Greenbelt
+Greenberg
+.H 1 " granary grand grandchild grandchildren granddaughter grandeur"
+Greenblatt
+Greenbriar
+Greene
+greenery
+Greenfield
+greengrocer
+greenhouse
+greenish
+Greenland
+Greensboro
+greensward
+.H 1 "handgun"
+greenware
+Greenwich
+greenwood
+Greer
+greet
+Greg
+gregarious
+Gregg
+Gregory
+.IND gremlin
+grenade
+Grendel
+Grenoble
+Gresham
+Greta
+Gretchen
+grew
+grey
+greyhound
+greylag
+grid
+griddle
+gridiron
+grief
+grievance
+grieve
+grievous
+griffin
+Griffith
+grill
+grille
+grilled
+grillwork
+grim
+.IND grimace
+Grimaldi
+grime
+Grimes
+Grimm
+grin
+grind
+grindstone
+grip
+gripe
+grippe
+grisly
+grist
+gristmill
+Griswold
+grit
+gritty
+grizzle
+grizzly
+groan
+groat
+grocer
+grocery
+groggy
+.IND groin
+grommet
+groom
+groove
+grope
+grosbeak
+gross
+.H 1 "handicapped handicapper handicapping handicraft handicraftsman"
+Grosset
+Grossman
+Grosvenor
+grotesque
+Groton
+ground
+groundsel
+groundskeep
+groundwork
+group
+groupoid
+grout
+grove
+grovel
+Grover
+grow
+growl
+grown
+grownup
+.IND growth
+grub
+grubby
+grudge
+gruesome
+gruff
+grumble
+Grumman
+grunt
+gryphon
+g's
+GSA
+GU
+Guam
+guanidine
+guanine
+guano
+guarantee
+guaranteeing
+guarantor
+guaranty
+guard
+guardhouse
+.IND Guardia
+guardian
+Guatemala
+.IND gubernatorial
+Guelph
+Guenther
+guerdon
+guernsey
+guerrilla
+guess
+guesswork
+guest
+guffaw
+Guggenheim
+Guiana
+guidance
+guide
+guidebook
+guideline
+guidepost
+guiding
+guignol
+guild
+.H 1 "handicraftsmen handiwork handkerchief handle"
+guildhall
+guile
+Guilford
+guillemot
+guillotine
+guilt
+.IND guilty
+guinea
+guise
+guitar
+gules
+gulf
+.H 1 "handleable handlebar handline handmade handmaiden handout"
+gull
+Gullah
+gullet
+gullible
+gully
+gulp
+gum
+gumbo
+gumdrop
+gummy
+gumption
+gumshoe
+gun
+Gunderson
+.IND gunfight
+gunfire
+gunflint
+gunk
+gunky
+gunman
+.IND gunmen
+gunnery
+gunny
+gunplay
+gunpowder
+gunshot
+gunsling
+Gunther
+gurgle
+Gurkha
+guru
+Gus
+gush
+gusset
+gust
+Gustafson
+Gustav
+Gustave
+Gustavus
+gusto
+gusty
+gut
+.H 1 "handset"
+Gutenberg
+Guthrie
+gutsy
+guttural
+.IND guy
+Guyana
+guzzle
+Gwen
+Gwyn
+gym
+gymnasium
+gymnast
+gymnastic
+gymnosperm
+gyp
+gypsite
+gypsum
+gypsy
+gyrate
+gyrfalcon
+gyro
+.IND gyrocompass
+gyroscope
+h
+ha
+Haag
+Haas
+habeas
+haberdashery
+Haberman
+.IND Habib
+habit
+habitant
+habitat
+habitation
+habitual
+habituate
+hacienda
+hack
+hackberry
+Hackett
+hackle
+hackmatack
+.H 1 "handshake handsome handspike handstand handwaving handwrite handwritten"
+hackney
+hackneyed
+hacksaw
+had
+Hadamard
+Haddad
+haddock
+Hades
+Hadley
+hadn't
+Hadrian
+hadron
+hafnium
+.IND Hagen
+Hager
+haggard
+haggle
+Hagstrom
+Hague
+Hahn
+Haifa
+haiku
+hail
+hailstone
+hailstorm
+Haines
+hair
+.IND haircut
+hairdo
+hairpin
+hairy
+Haiti
+Haitian
+Hal
+halcyon
+hale
+Haley
+half
+halfback
+.IND halfhearted
+halfway
+halibut
+halide
+.H 1 "handy handyman handymen Haney Hanford hang hangable hangar"
+Halifax
+halite
+hall
+hallelujah
+Halley
+hallmark
+hallow
+Halloween
+hallucinate
+hallway
+halma
+halo
+halocarbon
+halogen
+Halpern
+Halsey
+Halstead
+halt
+halvah
+halve
+Halverson
+ham
+.IND Hamal
+Hamburg
+hamburger
+Hamilton
+hamlet
+Hamlin
+hammerhead
+hammock
+Hammond
+hamper
+Hampshire
+.IND Hampton
+hamster
+Han
+.H 1 "hangman hangmen hangout hangover hank Hankel Hanley"
+Hancock
+hand
+handbag
+handbook
+handclasp
+handcuff
+Handel
+handful
+handgun
+handhold
+handicap
+handicapped
+.IND handicapper
+handicapping
+handicraft
+handicraftsman
+handicraftsmen
+handiwork
+handkerchief
+handle
+handleable
+handlebar
+handline
+handmade
+handmaiden
+handout
+handset
+handshake
+handsome
+handspike
+handstand
+handwaving
+.H 1 "Hanlon Hanna Hannah Hannibal Hanoi Hanover Hanoverian Hans"
+handwrite
+handwritten
+handy
+handyman
+handymen
+Haney
+.IND Hanford
+hang
+hangable
+hangar
+hangman
+hangmen
+hangout
+hangover
+.IND hank
+Hankel
+Hanley
+Hanlon
+Hanna
+Hannah
+Hannibal
+Hanoi
+Hanover
+Hanoverian
+Hans
+Hansel
+Hansen
+hansom
+Hanson
+Hanukkah
+hap
+.H 1 "Hansel"
+haphazard
+.IND haploid
+haploidy
+haplology
+happen
+happenstance
+happy
+Hapsburg
+harangue
+harass
+Harbin
+harbinger
+Harcourt
+hard
+hardbake
+hardboard
+hardboiled
+hardcopy
+harden
+hardhat
+Hardin
+.H 1 "Hansen hansom Hanson Hanukkah hap haphazard haploid haploidy"
+Harding
+hardscrabble
+hardtack
+hardtop
+hardware
+hardwood
+.IND hardworking
+hardy
+hare
+harelip
+harem
+.IND hark
+Harlan
+Harlem
+Harley
+harm
+harmful
+Harmon
+harmonic
+harmonica
+harmonious
+.H 1 "haplology happen happenstance happy Hapsburg harangue harass Harbin"
+harmony
+harness
+Harold
+harp
+harpoon
+harpsichord
+Harpy
+Harriet
+Harriman
+Harrington
+Harris
+.IND Harrisburg
+Harrison
+harrow
+harry
+harsh
+harshen
+hart
+Hartford
+Hartley
+Hartman
+Harvard
+harvest
+harvestman
+Harvey
+hash
+hashish
+hasn't
+hasp
+hassle
+hast
+haste
+hasten
+Hastings
+hasty
+hat
+hatch
+.IND hatchet
+hatchway
+.IND hate
+hateful
+hater
+Hatfield
+hath
+Hathaway
+hatred
+Hatteras
+Hattie
+Hattiesburg
+Haugen
+haughty
+haul
+haulage
+haunch
+haunt
+Hausdorff
+Havana
+have
+haven
+haven't
+Havilland
+havoc
+haw
+.IND Hawaii
+Hawaiian
+hawk
+Hawkins
+Hawley
+hawthorn
+.H 2 "hammock Hammond hamper Hampshire Hampton hamster"
+Hawthorne
+hay
+Hayden
+Haydn
+Hayes
+hayfield
+Haynes
+Hays
+haystack
+Hayward
+hayward
+hazard
+hazardous
+haze
+hazel
+hazelnut
+hazy
+he
+head
+.IND headache
+.IND headboard
+headdress
+headland
+headlight
+headline
+headmaster
+headphone
+headquarter
+headquarters
+headroom
+headset
+headsman
+headsmen
+headstand
+headstone
+headstrong
+headwall
+headwater
+headway
+headwind
+heady
+heal
+Healey
+health
+healthful
+healthy
+.IND Healy
+heap
+hear
+heard
+hearken
+hearsay
+hearse
+Hearst
+heart
+heartbeat
+heartbreak
+hearten
+heartfelt
+hearth
+hearty
+heat
+heater
+heath
+heathen
+heathenish
+Heathkit
+heave
+.IND heaven
+heavenward
+heavy
+heavyweight
+.IND Hebe
+hebephrenic
+Hebraic
+Hebrew
+Hecate
+hecatomb
+heck
+heckle
+Heckman
+hectic
+hector
+Hecuba
+he'd
+hedge
+hedgehog
+hedonism
+hedonist
+heed
+heel
+heft
+hefty
+Hegelian
+hegemony
+Heidelberg
+heigh
+height
+.IND heighten
+Heine
+Heinrich
+Heinz
+heir
+heiress
+Heisenberg
+held
+Helen
+Helena
+Helene
+Helga
+helical
+helicopter
+heliocentric
+heliotrope
+helium
+helix
+he'll
+.IND hell
+hellbender
+hellebore
+Hellenic
+hellfire
+hellgrammite
+hellish
+.IND hello
+helm
+helmet
+.H 1 "Halverson ham Hamal Hamburg hamburger Hamilton hamlet Hamlin hammerhead"
+Helmholtz
+helmsman
+helmsmen
+Helmut
+help
+helpful
+helpmate
+Helsinki
+Helvetica
+hem
+hematite
+Hemingway
+hemisphere
+hemispheric
+hemlock
+hemoglobin
+hemolytic
+hemorrhage
+hemorrhoid
+hemosiderin
+hemp
+Hempstead
+hen
+.IND henbane
+hence
+henceforth
+henchman
+henchmen
+Henderson
+Hendrick
+Hendricks
+Hendrickson
+henequen
+Henley
+henpeck
+Henri
+Henrietta
+henry
+hepatica
+.IND hepatitis
+Hepburn
+heptane
+her
+Hera
+Heraclitus
+herald
+herb
+Herbert
+Herculean
+.IND Hercules
+herd
+herdsman
+here
+hereabout
+hereafter
+hereby
+hereditary
+heredity
+Hereford
+herein
+hereinabove
+hereinafter
+hereinbelow
+hereof
+heresy
+heretic
+hereto
+heretofore
+hereunder
+hereunto
+herewith
+heritable
+heritage
+Herkimer
+Herman
+.IND Hermann
+hermeneutic
+Hermes
+hermetic
+Hermite
+hermitian
+Hermosa
+Hernandez
+hero
+Herodotus
+heroes
+heroic
+heroin
+.IND heroine
+heroism
+heron
+herpes
+herpetology
+Herr
+herringbone
+Herschel
+herself
+Hershel
+Hershey
+hertz
+Hertzog
+.IND hesitant
+hesitate
+hesitater
+Hesperus
+Hess
+Hesse
+Hessian
+Hester
+heterocyclic
+heterodyne
+heterogamous
+heterogeneity
+heterogeneous
+heterosexual
+heterostructure
+heterozygous
+Hetman
+Hettie
+Hetty
+Heublein
+heuristic
+Heusen
+Heuser
+hew
+Hewett
+Hewitt
+.IND Hewlett
+hewn
+hex
+hexachloride
+hexadecimal
+hexafluoride
+hexagon
+hexagonal
+hexameter
+hexane
+.IND hey
+heyday
+hi
+Hiatt
+hiatus
+Hiawatha
+hibachi
+Hibbard
+hibernate
+Hibernia
+hick
+Hickey
+Hickman
+hickory
+Hicks
+hid
+.IND hidalgo
+hidden
+hide
+hideaway
+hideous
+hideout
+hierarchal
+hierarchic
+hierarchy
+hieratic
+hieroglyphic
+Hieronymus
+hifalutin
+Higgins
+high
+highball
+highboy
+highest
+highfalutin
+highhanded
+highland
+highlight
+highroad
+hightail
+highway
+highwayman
+.IND highwaymen
+hijack
+hijinks
+hike
+hilarious
+hilarity
+Hilbert
+.IND Hildebrand
+hill
+hillbilly
+Hillcrest
+Hillel
+hillman
+hillmen
+hillock
+hillside
+hilltop
+hilly
+hilt
+Hilton
+hilum
+him
+Himalaya
+himself
+hind
+hindmost
+.IND hindrance
+hindsight
+Hindu
+Hinduism
+Hines
+hinge
+Hinman
+hint
+hinterland
+hip
+hippo
+Hippocrates
+Hippocratic
+hippodrome
+hippopotamus
+hippy
+hipster
+Hiram
+hire
+hireling
+Hiroshi
+Hiroshima
+Hirsch
+hirsute
+his
+Hispanic
+.IND hiss
+histamine
+histidine
+histochemic
+.IND histochemistry
+histogram
+histology
+historian
+historic
+historiography
+history
+histrionic
+hit
+Hitachi
+hitch
+Hitchcock
+.H 1 "harbinger"
+hither
+hitherto
+Hitler
+hive
+ho
+hoagie
+Hoagland
+hoagy
+hoar
+hoard
+.IND hoarfrost
+hoarse
+hob
+Hobart
+Hobbes
+hobble
+Hobbs
+hobby
+hobbyhorse
+hobgoblin
+hobo
+Hoboken
+hoc
+hock
+hockey
+hocus
+hodge
+hodgepodge
+Hodges
+Hodgkin
+hoe
+Hoff
+Hoffman
+hog
+hogan
+hogging
+.IND hoi
+.IND Hokan
+Holbrook
+Holcomb
+hold
+holden
+holdout
+holdover
+holdup
+hole
+holeable
+holiday
+Holland
+Hollandaise
+holler
+Hollerith
+Hollingsworth
+Hollister
+hollow
+Holloway
+hollowware
+holly
+hollyhock
+Hollywood
+Holm
+Holman
+.IND Holmdel
+Holmes
+holmium
+holocaust
+Holocene
+hologram
+holography
+Holst
+Holstein
+holster
+holt
+Holyoke
+.IND holystone
+.INDP
+inject injudicious Injun injunct injunction injure injurious injury
+injustice ink inkling inlaid inland inlay inlet Inman inmate inn innards
+innate inner innermost innkeeper innocent innocuous innovate innuendo
+innumerable inoculate inoffensive inoperable inoperative inopportune
+inordinate inorganic input inputting inquest inquire inquiry inquisition
+inquisitive inquisitor inroad insane insatiable inscribe inscription
+inscrutable insect insecticide insecure inseminate insensible insensitive
+inseparable insert inset inshore inside insidious insight insightful
+insignia insignificant insincere insinuate insipid insist insistent
+insofar insolent insoluble insolvable insolvent insomnia insomniac
+insouciant inspect inspector inspiration inspire instable install
+installation instalment instance instant instantaneous instantiate
+.INITI H ind-data2
+.H 1 "halve"
+.IND granary
+grand
+grandchild
+grandchildren
+granddaughter
+grandeur
+grandfather
+grandiloquent
+grandiose
+grandma
+grandmother
+.IND grandnephew
+grandniece
+grandpa
+grandparent
+grandson
+grandstand
+granite
+granitic
+granny
+granola
+grant
+grantee
+grantor
+granular
+.IND granulate
+granule
+Granville
+grape
+.H 2 "grandfather grandiloquent grandiose grandma grandmother grandnephew"
+grapefruit
+grapevine
+graph
+grapheme
+graphic
+.H 1 "halo halocarbon halogen Halpern Halsey Halstead halt halvah"
+graphite
+grapple
+grasp
+grass
+grassland
+grassy
+grata
+grate
+grateful
+grater
+gratify
+gratis
+gratitude
+gratuitous
+gratuity
+.IND grave
+gravel
+graven
+Graves
+gravestone
+graveyard
+gravid
+gravitate
+gravy
+gray
+graybeard
+grayish
+Grayson
+graywacke
+graze
+grease
+greasy
+great
+greatcoat
+greater
+.H 1 "Han Hancock hand handbag handbook handclasp handcuff Handel handful"
+grebe
+Grecian
+Greece
+greed
+greedy
+.IND Greek
+green
+Greenbelt
+Greenberg
+.H 1 " granary grand grandchild grandchildren granddaughter grandeur"
+Greenblatt
+Greenbriar
+Greene
+greenery
+Greenfield
+greengrocer
+greenhouse
+greenish
+Greenland
+Greensboro
+greensward
+.H 1 "handgun"
+greenware
+Greenwich
+greenwood
+Greer
+greet
+Greg
+gregarious
+Gregg
+Gregory
+.IND gremlin
+grenade
+Grendel
+Grenoble
+Gresham
+Greta
+Gretchen
+grew
+grey
+greyhound
+greylag
+grid
+griddle
+gridiron
+grief
+grievance
+grieve
+grievous
+griffin
+Griffith
+grill
+grille
+grilled
+grillwork
+grim
+.IND grimace
+Grimaldi
+grime
+Grimes
+Grimm
+grin
+grind
+grindstone
+grip
+gripe
+grippe
+grisly
+grist
+gristmill
+Griswold
+grit
+gritty
+grizzle
+grizzly
+groan
+groat
+grocer
+grocery
+groggy
+.IND groin
+grommet
+groom
+groove
+grope
+grosbeak
+gross
+.H 1 "handicapped handicapper handicapping handicraft handicraftsman"
+Grosset
+Grossman
+Grosvenor
+grotesque
+Groton
+ground
+groundsel
+groundskeep
+groundwork
+group
+groupoid
+grout
+grove
+grovel
+Grover
+grow
+growl
+grown
+grownup
+.IND growth
+grub
+grubby
+grudge
+gruesome
+gruff
+grumble
+Grumman
+grunt
+gryphon
+g's
+GSA
+GU
+Guam
+guanidine
+guanine
+guano
+guarantee
+guaranteeing
+guarantor
+guaranty
+guard
+guardhouse
+.IND Guardia
+guardian
+Guatemala
+.IND gubernatorial
+Guelph
+Guenther
+guerdon
+guernsey
+guerrilla
+guess
+guesswork
+guest
+guffaw
+Guggenheim
+Guiana
+guidance
+guide
+guidebook
+guideline
+guidepost
+guiding
+guignol
+guild
+.H 1 "handicraftsmen handiwork handkerchief handle"
+guildhall
+guile
+Guilford
+guillemot
+guillotine
+guilt
+.IND guilty
+guinea
+guise
+guitar
+gules
+gulf
+.H 1 "handleable handlebar handline handmade handmaiden handout"
+gull
+Gullah
+gullet
+gullible
+gully
+gulp
+gum
+gumbo
+gumdrop
+gummy
+gumption
+gumshoe
+gun
+Gunderson
+.IND gunfight
+gunfire
+gunflint
+gunk
+gunky
+gunman
+.IND gunmen
+gunnery
+gunny
+gunplay
+gunpowder
+gunshot
+gunsling
+Gunther
+gurgle
+Gurkha
+guru
+Gus
+gush
+gusset
+gust
+Gustafson
+Gustav
+Gustave
+Gustavus
+gusto
+gusty
+gut
+.H 1 "handset"
+Gutenberg
+Guthrie
+gutsy
+guttural
+.IND guy
+Guyana
+guzzle
+Gwen
+Gwyn
+gym
+gymnasium
+gymnast
+gymnastic
+gymnosperm
+gyp
+gypsite
+gypsum
+gypsy
+gyrate
+gyrfalcon
+gyro
+.IND gyrocompass
+gyroscope
+h
+ha
+Haag
+Haas
+habeas
+haberdashery
+Haberman
+.IND Habib
+habit
+habitant
+habitat
+habitation
+habitual
+habituate
+hacienda
+hack
+hackberry
+Hackett
+hackle
+hackmatack
+.H 1 "handshake handsome handspike handstand handwaving handwrite handwritten"
+hackney
+hackneyed
+hacksaw
+had
+Hadamard
+Haddad
+haddock
+Hades
+Hadley
+hadn't
+Hadrian
+hadron
+hafnium
+.IND Hagen
+Hager
+haggard
+haggle
+Hagstrom
+Hague
+Hahn
+Haifa
+haiku
+hail
+hailstone
+hailstorm
+Haines
+hair
+.IND haircut
+hairdo
+hairpin
+hairy
+Haiti
+Haitian
+Hal
+halcyon
+hale
+Haley
+half
+halfback
+.IND halfhearted
+halfway
+halibut
+halide
+.H 1 "handy handyman handymen Haney Hanford hang hangable hangar"
+Halifax
+halite
+hall
+hallelujah
+Halley
+hallmark
+hallow
+Halloween
+hallucinate
+hallway
+halma
+halo
+halocarbon
+halogen
+Halpern
+Halsey
+Halstead
+halt
+halvah
+halve
+Halverson
+ham
+.IND Hamal
+Hamburg
+hamburger
+Hamilton
+hamlet
+Hamlin
+hammerhead
+hammock
+Hammond
+hamper
+Hampshire
+.IND Hampton
+hamster
+Han
+.H 1 "hangman hangmen hangout hangover hank Hankel Hanley"
+Hancock
+hand
+handbag
+handbook
+handclasp
+handcuff
+Handel
+handful
+handgun
+handhold
+handicap
+handicapped
+.IND handicapper
+handicapping
+handicraft
+handicraftsman
+handicraftsmen
+handiwork
+handkerchief
+handle
+handleable
+handlebar
+handline
+handmade
+handmaiden
+handout
+handset
+handshake
+handsome
+handspike
+handstand
+handwaving
+.H 1 "Hanlon Hanna Hannah Hannibal Hanoi Hanover Hanoverian Hans"
+handwrite
+handwritten
+handy
+handyman
+handymen
+Haney
+.IND Hanford
+hang
+hangable
+hangar
+hangman
+hangmen
+hangout
+hangover
+.IND hank
+Hankel
+Hanley
+Hanlon
+Hanna
+Hannah
+Hannibal
+Hanoi
+Hanover
+Hanoverian
+Hans
+Hansel
+Hansen
+hansom
+Hanson
+Hanukkah
+hap
+.H 1 "Hansel"
+haphazard
+.IND haploid
+haploidy
+haplology
+happen
+happenstance
+happy
+Hapsburg
+harangue
+harass
+Harbin
+harbinger
+Harcourt
+hard
+hardbake
+hardboard
+hardboiled
+hardcopy
+harden
+hardhat
+Hardin
+.H 1 "Hansen hansom Hanson Hanukkah hap haphazard haploid haploidy"
+Harding
+hardscrabble
+hardtack
+hardtop
+hardware
+hardwood
+.IND hardworking
+hardy
+hare
+harelip
+harem
+.IND hark
+Harlan
+Harlem
+Harley
+harm
+harmful
+Harmon
+harmonic
+harmonica
+harmonious
+.H 1 "haplology happen happenstance happy Hapsburg harangue harass Harbin"
+harmony
+harness
+Harold
+harp
+harpoon
+harpsichord
+Harpy
+Harriet
+Harriman
+Harrington
+Harris
+.IND Harrisburg
+Harrison
+harrow
+harry
+harsh
+harshen
+hart
+Hartford
+Hartley
+Hartman
+Harvard
+harvest
+harvestman
+Harvey
+hash
+hashish
+hasn't
+hasp
+hassle
+hast
+haste
+hasten
+Hastings
+hasty
+hat
+hatch
+.IND hatchet
+hatchway
+.IND hate
+hateful
+hater
+Hatfield
+hath
+Hathaway
+hatred
+Hatteras
+Hattie
+Hattiesburg
+Haugen
+haughty
+haul
+haulage
+haunch
+haunt
+Hausdorff
+Havana
+have
+haven
+haven't
+Havilland
+havoc
+haw
+.IND Hawaii
+Hawaiian
+hawk
+Hawkins
+Hawley
+hawthorn
+.H 2 "hammock Hammond hamper Hampshire Hampton hamster"
+Hawthorne
+hay
+Hayden
+Haydn
+Hayes
+hayfield
+Haynes
+Hays
+haystack
+Hayward
+hayward
+hazard
+hazardous
+haze
+hazel
+hazelnut
+hazy
+he
+head
+.IND headache
+.IND headboard
+headdress
+headland
+headlight
+headline
+headmaster
+headphone
+headquarter
+headquarters
+headroom
+headset
+headsman
+headsmen
+headstand
+headstone
+headstrong
+headwall
+headwater
+headway
+headwind
+heady
+heal
+Healey
+health
+healthful
+healthy
+.IND Healy
+heap
+hear
+heard
+hearken
+hearsay
+hearse
+Hearst
+heart
+heartbeat
+heartbreak
+hearten
+heartfelt
+hearth
+hearty
+heat
+heater
+heath
+heathen
+heathenish
+Heathkit
+heave
+.IND heaven
+heavenward
+heavy
+heavyweight
+.IND Hebe
+hebephrenic
+Hebraic
+Hebrew
+Hecate
+hecatomb
+heck
+heckle
+Heckman
+hectic
+hector
+Hecuba
+he'd
+hedge
+hedgehog
+hedonism
+hedonist
+heed
+heel
+heft
+hefty
+Hegelian
+hegemony
+Heidelberg
+heigh
+height
+.IND heighten
+Heine
+Heinrich
+Heinz
+heir
+heiress
+Heisenberg
+held
+Helen
+Helena
+Helene
+Helga
+helical
+helicopter
+heliocentric
+heliotrope
+helium
+helix
+he'll
+.IND hell
+hellbender
+hellebore
+Hellenic
+hellfire
+hellgrammite
+hellish
+.IND hello
+helm
+helmet
+.H 1 "Halverson ham Hamal Hamburg hamburger Hamilton hamlet Hamlin hammerhead"
+Helmholtz
+helmsman
+helmsmen
+Helmut
+help
+helpful
+helpmate
+Helsinki
+Helvetica
+hem
+hematite
+Hemingway
+hemisphere
+hemispheric
+hemlock
+hemoglobin
+hemolytic
+hemorrhage
+hemorrhoid
+hemosiderin
+hemp
+Hempstead
+hen
+.IND henbane
+hence
+henceforth
+henchman
+henchmen
+Henderson
+Hendrick
+Hendricks
+Hendrickson
+henequen
+Henley
+henpeck
+Henri
+Henrietta
+henry
+hepatica
+.IND hepatitis
+Hepburn
+heptane
+her
+Hera
+Heraclitus
+herald
+herb
+Herbert
+Herculean
+.IND Hercules
+herd
+herdsman
+here
+hereabout
+hereafter
+hereby
+hereditary
+heredity
+Hereford
+herein
+hereinabove
+hereinafter
+hereinbelow
+hereof
+heresy
+heretic
+hereto
+heretofore
+hereunder
+hereunto
+herewith
+heritable
+heritage
+Herkimer
+Herman
+.IND Hermann
+hermeneutic
+Hermes
+hermetic
+Hermite
+hermitian
+Hermosa
+Hernandez
+hero
+Herodotus
+heroes
+heroic
+heroin
+.IND heroine
+heroism
+heron
+herpes
+herpetology
+Herr
+herringbone
+Herschel
+herself
+Hershel
+Hershey
+hertz
+Hertzog
+.IND hesitant
+hesitate
+hesitater
+Hesperus
+Hess
+Hesse
+Hessian
+Hester
+heterocyclic
+heterodyne
+heterogamous
+heterogeneity
+heterogeneous
+heterosexual
+heterostructure
+heterozygous
+Hetman
+Hettie
+Hetty
+Heublein
+heuristic
+Heusen
+Heuser
+hew
+Hewett
+Hewitt
+.IND Hewlett
+hewn
+hex
+hexachloride
+hexadecimal
+hexafluoride
+hexagon
+hexagonal
+hexameter
+hexane
+.IND hey
+heyday
+hi
+Hiatt
+hiatus
+Hiawatha
+hibachi
+Hibbard
+hibernate
+Hibernia
+hick
+Hickey
+Hickman
+hickory
+Hicks
+hid
+.IND hidalgo
+hidden
+hide
+hideaway
+hideous
+hideout
+hierarchal
+hierarchic
+hierarchy
+hieratic
+hieroglyphic
+Hieronymus
+hifalutin
+Higgins
+high
+highball
+highboy
+highest
+highfalutin
+highhanded
+highland
+highlight
+highroad
+hightail
+highway
+highwayman
+.IND highwaymen
+hijack
+hijinks
+hike
+hilarious
+hilarity
+Hilbert
+.IND Hildebrand
+hill
+hillbilly
+Hillcrest
+Hillel
+hillman
+hillmen
+hillock
+hillside
+hilltop
+hilly
+hilt
+Hilton
+hilum
+him
+Himalaya
+himself
+hind
+hindmost
+.IND hindrance
+hindsight
+Hindu
+Hinduism
+Hines
+hinge
+Hinman
+hint
+hinterland
+hip
+hippo
+Hippocrates
+Hippocratic
+hippodrome
+hippopotamus
+hippy
+hipster
+Hiram
+hire
+hireling
+Hiroshi
+Hiroshima
+Hirsch
+hirsute
+his
+Hispanic
+.IND hiss
+histamine
+histidine
+histochemic
+.IND histochemistry
+histogram
+histology
+historian
+historic
+historiography
+history
+histrionic
+hit
+Hitachi
+hitch
+Hitchcock
+.H 1 "harbinger"
+hither
+hitherto
+Hitler
+hive
+ho
+hoagie
+Hoagland
+hoagy
+hoar
+hoard
+.IND hoarfrost
+hoarse
+hob
+Hobart
+Hobbes
+hobble
+Hobbs
+hobby
+hobbyhorse
+hobgoblin
+hobo
+Hoboken
+hoc
+hock
+hockey
+hocus
+hodge
+hodgepodge
+Hodges
+Hodgkin
+hoe
+Hoff
+Hoffman
+hog
+hogan
+hogging
+.IND hoi
+.IND Hokan
+Holbrook
+Holcomb
+hold
+holden
+holdout
+holdover
+holdup
+hole
+holeable
+holiday
+Holland
+Hollandaise
+holler
+Hollerith
+Hollingsworth
+Hollister
+hollow
+Holloway
+hollowware
+holly
+hollyhock
+Hollywood
+Holm
+Holman
+.IND Holmdel
+Holmes
+holmium
+holocaust
+Holocene
+hologram
+holography
+Holst
+Holstein
+holster
+holt
+Holyoke
+.IND holystone
+.INDP
+inject injudicious Injun injunct injunction injure injurious injury
+injustice ink inkling inlaid inland inlay inlet Inman inmate inn innards
+innate inner innermost innkeeper innocent innocuous innovate innuendo
+innumerable inoculate inoffensive inoperable inoperative inopportune
+inordinate inorganic input inputting inquest inquire inquiry inquisition
+.INITI B ind-data3
+.H 1 "halve"
+.IND granary
+grand
+grandchild
+grandchildren
+granddaughter
+grandeur
+grandfather
+grandiloquent
+grandiose
+grandma
+grandmother
+.IND grandnephew
+grandniece
+grandpa
+grandparent
+grandson
+grandstand
+granite
+granitic
+granny
+granola
+grant
+grantee
+grantor
+granular
+.IND granulate
+granule
+Granville
+grape
+.H 2 "grandfather grandiloquent grandiose grandma grandmother grandnephew"
+grapefruit
+grapevine
+graph
+grapheme
+graphic
+.H 1 "halo halocarbon halogen Halpern Halsey Halstead halt halvah"
+graphite
+grapple
+grasp
+grass
+grassland
+grassy
+grata
+grate
+grateful
+grater
+gratify
+gratis
+gratitude
+gratuitous
+gratuity
+.IND grave
+gravel
+graven
+Graves
+gravestone
+graveyard
+gravid
+gravitate
+gravy
+gray
+graybeard
+grayish
+Grayson
+graywacke
+graze
+grease
+greasy
+great
+greatcoat
+greater
+.H 1 "Han Hancock hand handbag handbook handclasp handcuff Handel handful"
+grebe
+Grecian
+Greece
+greed
+greedy
+.IND Greek
+green
+Greenbelt
+Greenberg
+.H 1 " granary grand grandchild grandchildren granddaughter grandeur"
+Greenblatt
+Greenbriar
+Greene
+greenery
+Greenfield
+greengrocer
+greenhouse
+greenish
+Greenland
+Greensboro
+greensward
+.H 1 "handgun"
+greenware
+Greenwich
+greenwood
+Greer
+greet
+Greg
+gregarious
+Gregg
+Gregory
+.IND gremlin
+grenade
+Grendel
+Grenoble
+Gresham
+Greta
+Gretchen
+grew
+grey
+greyhound
+greylag
+grid
+griddle
+gridiron
+grief
+grievance
+grieve
+grievous
+griffin
+Griffith
+grill
+grille
+grilled
+grillwork
+grim
+.IND grimace
+Grimaldi
+grime
+Grimes
+Grimm
+grin
+grind
+grindstone
+grip
+gripe
+grippe
+grisly
+grist
+gristmill
+Griswold
+grit
+gritty
+grizzle
+grizzly
+groan
+groat
+grocer
+grocery
+groggy
+.IND groin
+grommet
+groom
+groove
+grope
+grosbeak
+gross
+.H 1 "handicapped handicapper handicapping handicraft handicraftsman"
+Grosset
+Grossman
+Grosvenor
+grotesque
+Groton
+ground
+groundsel
+groundskeep
+groundwork
+group
+groupoid
+grout
+grove
+grovel
+Grover
+grow
+growl
+grown
+grownup
+.IND growth
+grub
+grubby
+grudge
+gruesome
+gruff
+grumble
+Grumman
+grunt
+gryphon
+g's
+GSA
+GU
+Guam
+guanidine
+guanine
+guano
+guarantee
+guaranteeing
+guarantor
+guaranty
+guard
+guardhouse
+.IND Guardia
+guardian
+Guatemala
+.IND gubernatorial
+Guelph
+Guenther
+guerdon
+guernsey
+guerrilla
+guess
+guesswork
+guest
+guffaw
+Guggenheim
+Guiana
+guidance
+guide
+guidebook
+guideline
+guidepost
+guiding
+guignol
+guild
+.H 1 "handicraftsmen handiwork handkerchief handle"
+guildhall
+guile
+Guilford
+guillemot
+guillotine
+guilt
+.IND guilty
+guinea
+guise
+guitar
+gules
+gulf
+.H 1 "handleable handlebar handline handmade handmaiden handout"
+gull
+Gullah
+gullet
+gullible
+gully
+gulp
+gum
+gumbo
+gumdrop
+gummy
+gumption
+gumshoe
+gun
+Gunderson
+.IND gunfight
+gunfire
+gunflint
+gunk
+gunky
+gunman
+.IND gunmen
+gunnery
+gunny
+gunplay
+gunpowder
+gunshot
+gunsling
+Gunther
+gurgle
+Gurkha
+guru
+Gus
+gush
+gusset
+gust
+Gustafson
+Gustav
+Gustave
+Gustavus
+gusto
+gusty
+gut
+.H 1 "handset"
+Gutenberg
+Guthrie
+gutsy
+guttural
+.IND guy
+Guyana
+guzzle
+Gwen
+Gwyn
+gym
+gymnasium
+gymnast
+gymnastic
+gymnosperm
+gyp
+gypsite
+gypsum
+gypsy
+gyrate
+gyrfalcon
+gyro
+.IND gyrocompass
+gyroscope
+h
+ha
+Haag
+Haas
+habeas
+haberdashery
+Haberman
+.IND Habib
+habit
+habitant
+habitat
+habitation
+habitual
+habituate
+hacienda
+hack
+hackberry
+Hackett
+hackle
+hackmatack
+.H 1 "handshake handsome handspike handstand handwaving handwrite handwritten"
+hackney
+hackneyed
+hacksaw
+had
+Hadamard
+Haddad
+haddock
+Hades
+Hadley
+hadn't
+Hadrian
+hadron
+hafnium
+.IND Hagen
+Hager
+haggard
+haggle
+Hagstrom
+Hague
+Hahn
+Haifa
+haiku
+hail
+hailstone
+hailstorm
+Haines
+hair
+.IND haircut
+hairdo
+hairpin
+hairy
+Haiti
+Haitian
+Hal
+halcyon
+hale
+Haley
+half
+halfback
+.IND halfhearted
+halfway
+halibut
+halide
+.H 1 "handy handyman handymen Haney Hanford hang hangable hangar"
+Halifax
+halite
+hall
+hallelujah
+Halley
+hallmark
+hallow
+Halloween
+hallucinate
+hallway
+halma
+halo
+halocarbon
+halogen
+Halpern
+Halsey
+Halstead
+halt
+halvah
+halve
+Halverson
+ham
+.IND Hamal
+Hamburg
+hamburger
+Hamilton
+hamlet
+Hamlin
+hammerhead
+hammock
+Hammond
+hamper
+Hampshire
+.IND Hampton
+hamster
+Han
+.H 1 "hangman hangmen hangout hangover hank Hankel Hanley"
+Hancock
+hand
+handbag
+handbook
+handclasp
+handcuff
+Handel
+handful
+handgun
+handhold
+handicap
+handicapped
+.IND handicapper
+handicapping
+handicraft
+handicraftsman
+handicraftsmen
+handiwork
+handkerchief
+handle
+handleable
+handlebar
+handline
+handmade
+handmaiden
+handout
+handset
+handshake
+handsome
+handspike
+handstand
+handwaving
+.H 1 "Hanlon Hanna Hannah Hannibal Hanoi Hanover Hanoverian Hans"
+handwrite
+handwritten
+handy
+handyman
+handymen
+Haney
+.IND Hanford
+hang
+hangable
+hangar
+hangman
+hangmen
+hangout
+hangover
+.IND hank
+Hankel
+Hanley
+Hanlon
+Hanna
+Hannah
+Hannibal
+Hanoi
+Hanover
+Hanoverian
+Hans
+Hansel
+Hansen
+hansom
+Hanson
+Hanukkah
+hap
+.H 1 "Hansel"
+haphazard
+.IND haploid
+haploidy
+haplology
+happen
+happenstance
+happy
+Hapsburg
+harangue
+harass
+Harbin
+harbinger
+Harcourt
+hard
+hardbake
+hardboard
+hardboiled
+hardcopy
+harden
+hardhat
+Hardin
+.H 1 "Hansen hansom Hanson Hanukkah hap haphazard haploid haploidy"
+Harding
+hardscrabble
+hardtack
+hardtop
+hardware
+hardwood
+.IND hardworking
+hardy
+hare
+harelip
+harem
+.IND hark
+Harlan
+Harlem
+Harley
+harm
+harmful
+Harmon
+harmonic
+harmonica
+harmonious
+.H 1 "haplology happen happenstance happy Hapsburg harangue harass Harbin"
+harmony
+harness
+Harold
+harp
+harpoon
+harpsichord
+Harpy
+Harriet
+Harriman
+Harrington
+Harris
+.IND Harrisburg
+Harrison
+harrow
+harry
+harsh
+harshen
+hart
+Hartford
+Hartley
+Hartman
+Harvard
+harvest
+harvestman
+Harvey
+hash
+hashish
+hasn't
+hasp
+hassle
+hast
+haste
+hasten
+Hastings
+hasty
+hat
+hatch
+.IND hatchet
+hatchway
+.IND hate
+hateful
+hater
+Hatfield
+hath
+Hathaway
+hatred
+Hatteras
+Hattie
+Hattiesburg
+Haugen
+haughty
+haul
+haulage
+haunch
+haunt
+Hausdorff
+Havana
+have
+haven
+haven't
+Havilland
+havoc
+haw
+.IND Hawaii
+Hawaiian
+hawk
+Hawkins
+Hawley
+hawthorn
+.H 2 "hammock Hammond hamper Hampshire Hampton hamster"
+Hawthorne
+hay
+Hayden
+Haydn
+Hayes
+hayfield
+Haynes
+Hays
+haystack
+Hayward
+hayward
+hazard
+hazardous
+haze
+hazel
+hazelnut
+hazy
+he
+head
+.IND headache
+.IND headboard
+headdress
+headland
+headlight
+headline
+headmaster
+headphone
+headquarter
+headquarters
+headroom
+headset
+headsman
+headsmen
+headstand
+headstone
+headstrong
+headwall
+headwater
+headway
+headwind
+heady
+heal
+Healey
+health
+healthful
+healthy
+.IND Healy
+heap
+hear
+heard
+hearken
+hearsay
+hearse
+Hearst
+heart
+heartbeat
+heartbreak
+hearten
+heartfelt
+hearth
+hearty
+heat
+heater
+heath
+heathen
+heathenish
+Heathkit
+heave
+.IND heaven
+heavenward
+heavy
+heavyweight
+.IND Hebe
+hebephrenic
+Hebraic
+Hebrew
+Hecate
+hecatomb
+heck
+heckle
+Heckman
+hectic
+hector
+Hecuba
+he'd
+hedge
+hedgehog
+hedonism
+hedonist
+heed
+heel
+heft
+hefty
+Hegelian
+hegemony
+Heidelberg
+heigh
+height
+.IND heighten
+Heine
+Heinrich
+Heinz
+heir
+heiress
+Heisenberg
+held
+Helen
+Helena
+Helene
+Helga
+helical
+helicopter
+heliocentric
+heliotrope
+helium
+helix
+he'll
+.IND hell
+hellbender
+hellebore
+Hellenic
+hellfire
+hellgrammite
+hellish
+.IND hello
+helm
+helmet
+.H 1 "Halverson ham Hamal Hamburg hamburger Hamilton hamlet Hamlin hammerhead"
+Helmholtz
+helmsman
+helmsmen
+Helmut
+help
+helpful
+helpmate
+Helsinki
+Helvetica
+hem
+hematite
+Hemingway
+hemisphere
+hemispheric
+hemlock
+hemoglobin
+hemolytic
+hemorrhage
+hemorrhoid
+hemosiderin
+hemp
+Hempstead
+hen
+.IND henbane
+hence
+henceforth
+henchman
+henchmen
+Henderson
+Hendrick
+Hendricks
+Hendrickson
+henequen
+Henley
+henpeck
+Henri
+Henrietta
+henry
+hepatica
+.IND hepatitis
+Hepburn
+heptane
+her
+Hera
+Heraclitus
+herald
+herb
+Herbert
+Herculean
+.IND Hercules
+herd
+herdsman
+here
+hereabout
+hereafter
+hereby
+hereditary
+heredity
+Hereford
+herein
+hereinabove
+hereinafter
+hereinbelow
+hereof
+heresy
+heretic
+hereto
+heretofore
+hereunder
+hereunto
+herewith
+heritable
+heritage
+Herkimer
+Herman
+.IND Hermann
+hermeneutic
+Hermes
+hermetic
+Hermite
+hermitian
+Hermosa
+Hernandez
+hero
+Herodotus
+heroes
+heroic
+heroin
+.IND heroine
+heroism
+heron
+herpes
+herpetology
+Herr
+herringbone
+Herschel
+herself
+Hershel
+Hershey
+hertz
+Hertzog
+.IND hesitant
+hesitate
+hesitater
+Hesperus
+Hess
+Hesse
+Hessian
+Hester
+heterocyclic
+heterodyne
+heterogamous
+heterogeneity
+heterogeneous
+heterosexual
+heterostructure
+heterozygous
+Hetman
+Hettie
+Hetty
+Heublein
+heuristic
+Heusen
+Heuser
+hew
+Hewett
+Hewitt
+.IND Hewlett
+hewn
+hex
+hexachloride
+hexadecimal
+hexafluoride
+hexagon
+hexagonal
+hexameter
+hexane
+.IND hey
+heyday
+hi
+Hiatt
+hiatus
+Hiawatha
+hibachi
+Hibbard
+hibernate
+Hibernia
+hick
+Hickey
+Hickman
+hickory
+Hicks
+hid
+.IND hidalgo
+hidden
+hide
+hideaway
+hideous
+hideout
+hierarchal
+hierarchic
+hierarchy
+hieratic
+hieroglyphic
+Hieronymus
+hifalutin
+Higgins
+high
+highball
+highboy
+highest
+highfalutin
+highhanded
+highland
+highlight
+highroad
+hightail
+highway
+highwayman
+.IND highwaymen
+hijack
+hijinks
+hike
+hilarious
+hilarity
+Hilbert
+.IND Hildebrand
+hill
+hillbilly
+Hillcrest
+Hillel
+hillman
+hillmen
+hillock
+hillside
+hilltop
+hilly
+hilt
+Hilton
+hilum
+him
+Himalaya
+himself
+hind
+hindmost
+.IND hindrance
+hindsight
+Hindu
+Hinduism
+Hines
+hinge
+Hinman
+hint
+hinterland
+hip
+hippo
+Hippocrates
+Hippocratic
+hippodrome
+hippopotamus
+hippy
+hipster
+Hiram
+hire
+hireling
+Hiroshi
+Hiroshima
+Hirsch
+hirsute
+his
+Hispanic
+.IND hiss
+histamine
+histidine
+histochemic
+.IND histochemistry
+histogram
+histology
+historian
+historic
+historiography
+history
+histrionic
+hit
+Hitachi
+hitch
+Hitchcock
+.H 1 "harbinger"
+hither
+hitherto
+Hitler
+hive
+ho
+hoagie
+Hoagland
+hoagy
+hoar
+hoard
+.IND hoarfrost
+hoarse
+hob
+Hobart
+Hobbes
+hobble
+Hobbs
+hobby
+hobbyhorse
+hobgoblin
+hobo
+Hoboken
+hoc
+hock
+hockey
+hocus
+hodge
+hodgepodge
+Hodges
+Hodgkin
+hoe
+Hoff
+Hoffman
+hog
+hogan
+hogging
+.IND hoi
+.IND Hokan
+Holbrook
+Holcomb
+hold
+holden
+holdout
+holdover
+holdup
+hole
+holeable
+holiday
+Holland
+Hollandaise
+holler
+Hollerith
+Hollingsworth
+Hollister
+hollow
+Holloway
+hollowware
+holly
+hollyhock
+Hollywood
+Holm
+Holman
+.IND Holmdel
+Holmes
+holmium
+holocaust
+Holocene
+hologram
+holography
+Holst
+Holstein
+holster
+holt
+Holyoke
+.IND holystone
+.INDP
+inject injudicious Injun injunct injunction injure injurious injury
+injustice ink inkling inlaid inland inlay inlet Inman inmate inn innards
+innate inner innermost innkeeper innocent innocuous innovate innuendo
+innumerable inoculate inoffensive inoperable inoperative inopportune
+inordinate inorganic input inputting inquest inquire inquiry inquisition
+.INITI B ind-data4 foo
+.H 1 "halve"
+.IND granary
+grand
+grandchild
+grandchildren
+granddaughter
+grandeur
+grandfather
+grandiloquent
+grandiose
+grandma
+grandmother
+.IND grandnephew
+grandniece
+grandpa
+grandparent
+grandson
+grandstand
+granite
+granitic
+granny
+granola
+grant
+grantee
+grantor
+granular
+.IND granulate
+granule
+Granville
+grape
+.H 2 "grandfather grandiloquent grandiose grandma grandmother grandnephew"
+grapefruit
+grapevine
+graph
+grapheme
+graphic
+.H 1 "halo halocarbon halogen Halpern Halsey Halstead halt halvah"
+graphite
+grapple
+grasp
+grass
+grassland
+grassy
+grata
+grate
+grateful
+grater
+gratify
+gratis
+gratitude
+gratuitous
+gratuity
+.IND grave
+gravel
+graven
+Graves
+gravestone
+graveyard
+gravid
+gravitate
+gravy
+gray
+graybeard
+grayish
+Grayson
+graywacke
+graze
+grease
+greasy
+great
+greatcoat
+greater
+.H 1 "Han Hancock hand handbag handbook handclasp handcuff Handel handful"
+grebe
+Grecian
+Greece
+greed
+greedy
+.IND Greek
+green
+Greenbelt
+Greenberg
+.H 1 " granary grand grandchild grandchildren granddaughter grandeur"
+Greenblatt
+Greenbriar
+Greene
+greenery
+Greenfield
+greengrocer
+greenhouse
+greenish
+Greenland
+Greensboro
+greensward
+.H 1 "handgun"
+greenware
+Greenwich
+greenwood
+Greer
+greet
+Greg
+gregarious
+Gregg
+Gregory
+.IND gremlin
+grenade
+Grendel
+Grenoble
+Gresham
+Greta
+Gretchen
+grew
+grey
+greyhound
+greylag
+grid
+griddle
+gridiron
+grief
+grievance
+grieve
+grievous
+griffin
+Griffith
+grill
+grille
+grilled
+grillwork
+grim
+.IND grimace
+Grimaldi
+grime
+Grimes
+Grimm
+grin
+grind
+grindstone
+grip
+gripe
+grippe
+grisly
+grist
+gristmill
+Griswold
+grit
+gritty
+grizzle
+grizzly
+groan
+groat
+grocer
+grocery
+groggy
+.IND groin
+grommet
+groom
+groove
+grope
+grosbeak
+gross
+.H 1 "handicapped handicapper handicapping handicraft handicraftsman"
+Grosset
+Grossman
+Grosvenor
+grotesque
+Groton
+ground
+groundsel
+groundskeep
+groundwork
+group
+groupoid
+grout
+grove
+grovel
+Grover
+grow
+growl
+grown
+grownup
+.IND growth
+grub
+grubby
+grudge
+gruesome
+gruff
+grumble
+Grumman
+grunt
+gryphon
+g's
+GSA
+GU
+Guam
+guanidine
+guanine
+guano
+guarantee
+guaranteeing
+guarantor
+guaranty
+guard
+guardhouse
+.IND Guardia
+guardian
+Guatemala
+.IND gubernatorial
+Guelph
+Guenther
+guerdon
+guernsey
+guerrilla
+guess
+guesswork
+guest
+guffaw
+Guggenheim
+Guiana
+guidance
+guide
+guidebook
+guideline
+guidepost
+guiding
+guignol
+guild
+.H 1 "handicraftsmen handiwork handkerchief handle"
+guildhall
+guile
+Guilford
+guillemot
+guillotine
+guilt
+.IND guilty
+guinea
+guise
+guitar
+gules
+gulf
+.H 1 "handleable handlebar handline handmade handmaiden handout"
+gull
+Gullah
+gullet
+gullible
+gully
+gulp
+gum
+gumbo
+gumdrop
+gummy
+gumption
+gumshoe
+gun
+Gunderson
+.IND gunfight
+gunfire
+gunflint
+gunk
+gunky
+gunman
+.IND gunmen
+gunnery
+gunny
+gunplay
+gunpowder
+gunshot
+gunsling
+Gunther
+gurgle
+Gurkha
+guru
+Gus
+gush
+gusset
+gust
+Gustafson
+Gustav
+Gustave
+Gustavus
+gusto
+gusty
+gut
+.H 1 "handset"
+Gutenberg
+Guthrie
+gutsy
+guttural
+.IND guy
+Guyana
+guzzle
+Gwen
+Gwyn
+gym
+gymnasium
+gymnast
+gymnastic
+gymnosperm
+gyp
+gypsite
+gypsum
+gypsy
+gyrate
+gyrfalcon
+gyro
+.IND gyrocompass
+gyroscope
+h
+ha
+Haag
+Haas
+habeas
+haberdashery
+Haberman
+.IND Habib
+habit
+habitant
+habitat
+habitation
+habitual
+habituate
+hacienda
+hack
+hackberry
+Hackett
+hackle
+hackmatack
+.H 1 "handshake handsome handspike handstand handwaving handwrite handwritten"
+hackney
+hackneyed
+hacksaw
+had
+Hadamard
+Haddad
+haddock
+Hades
+Hadley
+hadn't
+Hadrian
+hadron
+hafnium
+.IND Hagen
+Hager
+haggard
+haggle
+Hagstrom
+Hague
+Hahn
+Haifa
+haiku
+hail
+hailstone
+hailstorm
+Haines
+hair
+.IND haircut
+hairdo
+hairpin
+hairy
+Haiti
+Haitian
+Hal
+halcyon
+hale
+Haley
+half
+halfback
+.IND halfhearted
+halfway
+halibut
+halide
+.H 1 "handy handyman handymen Haney Hanford hang hangable hangar"
+Halifax
+halite
+hall
+hallelujah
+Halley
+hallmark
+hallow
+Halloween
+hallucinate
+hallway
+halma
+halo
+halocarbon
+halogen
+Halpern
+Halsey
+Halstead
+halt
+halvah
+halve
+Halverson
+ham
+.IND Hamal
+Hamburg
+hamburger
+Hamilton
+hamlet
+Hamlin
+hammerhead
+hammock
+Hammond
+hamper
+Hampshire
+.IND Hampton
+hamster
+Han
+.H 1 "hangman hangmen hangout hangover hank Hankel Hanley"
+Hancock
+hand
+handbag
+handbook
+handclasp
+handcuff
+Handel
+handful
+handgun
+handhold
+handicap
+handicapped
+.IND handicapper
+handicapping
+handicraft
+handicraftsman
+handicraftsmen
+handiwork
+handkerchief
+handle
+handleable
+handlebar
+handline
+handmade
+handmaiden
+handout
+handset
+handshake
+handsome
+handspike
+handstand
+handwaving
+.H 1 "Hanlon Hanna Hannah Hannibal Hanoi Hanover Hanoverian Hans"
+handwrite
+handwritten
+handy
+handyman
+handymen
+Haney
+.IND Hanford
+hang
+hangable
+hangar
+hangman
+hangmen
+hangout
+hangover
+.IND hank
+Hankel
+Hanley
+Hanlon
+Hanna
+Hannah
+Hannibal
+Hanoi
+Hanover
+Hanoverian
+Hans
+Hansel
+Hansen
+hansom
+Hanson
+Hanukkah
+hap
+.H 1 "Hansel"
+haphazard
+.IND haploid
+haploidy
+haplology
+happen
+happenstance
+happy
+Hapsburg
+harangue
+harass
+Harbin
+harbinger
+Harcourt
+hard
+hardbake
+hardboard
+hardboiled
+hardcopy
+harden
+hardhat
+Hardin
+.H 1 "Hansen hansom Hanson Hanukkah hap haphazard haploid haploidy"
+Harding
+hardscrabble
+hardtack
+hardtop
+hardware
+hardwood
+.IND hardworking
+hardy
+hare
+harelip
+harem
+.IND hark
+Harlan
+Harlem
+Harley
+harm
+harmful
+Harmon
+harmonic
+harmonica
+harmonious
+.H 1 "haplology happen happenstance happy Hapsburg harangue harass Harbin"
+harmony
+harness
+Harold
+harp
+harpoon
+harpsichord
+Harpy
+Harriet
+Harriman
+Harrington
+Harris
+.IND Harrisburg
+Harrison
+harrow
+harry
+harsh
+harshen
+hart
+Hartford
+Hartley
+Hartman
+Harvard
+harvest
+harvestman
+Harvey
+hash
+hashish
+hasn't
+hasp
+hassle
+hast
+haste
+hasten
+Hastings
+hasty
+hat
+hatch
+.IND hatchet
+hatchway
+.IND hate
+hateful
+hater
+Hatfield
+hath
+Hathaway
+hatred
+Hatteras
+Hattie
+Hattiesburg
+Haugen
+haughty
+haul
+haulage
+haunch
+haunt
+Hausdorff
+Havana
+have
+haven
+haven't
+Havilland
+havoc
+haw
+.IND Hawaii
+Hawaiian
+hawk
+Hawkins
+Hawley
+hawthorn
+.H 2 "hammock Hammond hamper Hampshire Hampton hamster"
+Hawthorne
+hay
+Hayden
+Haydn
+Hayes
+hayfield
+Haynes
+Hays
+haystack
+Hayward
+hayward
+hazard
+hazardous
+haze
+hazel
+hazelnut
+hazy
+he
+head
+.IND headache
+.IND headboard
+headdress
+headland
+headlight
+headline
+headmaster
+headphone
+headquarter
+headquarters
+headroom
+headset
+headsman
+headsmen
+headstand
+headstone
+headstrong
+headwall
+headwater
+headway
+headwind
+heady
+heal
+Healey
+health
+healthful
+healthy
+.IND Healy
+heap
+hear
+heard
+hearken
+hearsay
+hearse
+Hearst
+heart
+heartbeat
+heartbreak
+hearten
+heartfelt
+hearth
+hearty
+heat
+heater
+heath
+heathen
+heathenish
+Heathkit
+heave
+.IND heaven
+heavenward
+heavy
+heavyweight
+.IND Hebe
+hebephrenic
+Hebraic
+Hebrew
+Hecate
+hecatomb
+heck
+heckle
+Heckman
+hectic
+hector
+Hecuba
+he'd
+hedge
+hedgehog
+hedonism
+hedonist
+heed
+heel
+heft
+hefty
+Hegelian
+hegemony
+Heidelberg
+heigh
+height
+.IND heighten
+Heine
+Heinrich
+Heinz
+heir
+heiress
+Heisenberg
+held
+Helen
+Helena
+Helene
+Helga
+helical
+helicopter
+heliocentric
+heliotrope
+helium
+helix
+he'll
+.IND hell
+hellbender
+hellebore
+Hellenic
+hellfire
+hellgrammite
+hellish
+.IND hello
+helm
+helmet
+.H 1 "Halverson ham Hamal Hamburg hamburger Hamilton hamlet Hamlin hammerhead"
+Helmholtz
+helmsman
+helmsmen
+Helmut
+help
+helpful
+helpmate
+Helsinki
+Helvetica
+hem
+hematite
+Hemingway
+hemisphere
+hemispheric
+hemlock
+hemoglobin
+hemolytic
+hemorrhage
+hemorrhoid
+hemosiderin
+hemp
+Hempstead
+hen
+.IND henbane
+hence
+henceforth
+henchman
+henchmen
+Henderson
+Hendrick
+Hendricks
+Hendrickson
+henequen
+Henley
+henpeck
+Henri
+Henrietta
+henry
+hepatica
+.IND hepatitis
+Hepburn
+heptane
+her
+Hera
+Heraclitus
+herald
+herb
+Herbert
+Herculean
+.IND Hercules
+herd
+herdsman
+here
+hereabout
+hereafter
+hereby
+hereditary
+heredity
+Hereford
+herein
+hereinabove
+hereinafter
+hereinbelow
+hereof
+heresy
+heretic
+hereto
+heretofore
+hereunder
+hereunto
+herewith
+heritable
+heritage
+Herkimer
+Herman
+.IND Hermann
+hermeneutic
+Hermes
+hermetic
+Hermite
+hermitian
+Hermosa
+Hernandez
+hero
+Herodotus
+heroes
+heroic
+heroin
+.IND heroine
+heroism
+heron
+herpes
+herpetology
+Herr
+herringbone
+Herschel
+herself
+Hershel
+Hershey
+hertz
+Hertzog
+.IND hesitant
+hesitate
+hesitater
+Hesperus
+Hess
+Hesse
+Hessian
+Hester
+heterocyclic
+heterodyne
+heterogamous
+heterogeneity
+heterogeneous
+heterosexual
+heterostructure
+heterozygous
+Hetman
+Hettie
+Hetty
+Heublein
+heuristic
+Heusen
+Heuser
+hew
+Hewett
+Hewitt
+.IND Hewlett
+hewn
+hex
+hexachloride
+hexadecimal
+hexafluoride
+hexagon
+hexagonal
+hexameter
+hexane
+.IND hey
+heyday
+hi
+Hiatt
+hiatus
+Hiawatha
+hibachi
+Hibbard
+hibernate
+Hibernia
+hick
+Hickey
+Hickman
+hickory
+Hicks
+hid
+.IND hidalgo
+hidden
+hide
+hideaway
+hideous
+hideout
+hierarchal
+hierarchic
+hierarchy
+hieratic
+hieroglyphic
+Hieronymus
+hifalutin
+Higgins
+high
+highball
+highboy
+highest
+highfalutin
+highhanded
+highland
+highlight
+highroad
+hightail
+highway
+highwayman
+.IND highwaymen
+hijack
+hijinks
+hike
+hilarious
+hilarity
+Hilbert
+.IND Hildebrand
+hill
+hillbilly
+Hillcrest
+Hillel
+hillman
+hillmen
+hillock
+hillside
+hilltop
+hilly
+hilt
+Hilton
+hilum
+him
+Himalaya
+himself
+hind
+hindmost
+.IND hindrance
+hindsight
+Hindu
+Hinduism
+Hines
+hinge
+Hinman
+hint
+hinterland
+hip
+hippo
+Hippocrates
+Hippocratic
+hippodrome
+hippopotamus
+hippy
+hipster
+Hiram
+hire
+hireling
+Hiroshi
+Hiroshima
+Hirsch
+hirsute
+his
+Hispanic
+.IND hiss
+histamine
+histidine
+histochemic
+.IND histochemistry
+histogram
+histology
+historian
+historic
+historiography
+history
+histrionic
+hit
+Hitachi
+hitch
+Hitchcock
+.H 1 "harbinger"
+hither
+hitherto
+Hitler
+hive
+ho
+hoagie
+Hoagland
+hoagy
+hoar
+hoard
+.IND hoarfrost
+hoarse
+hob
+Hobart
+Hobbes
+hobble
+Hobbs
+hobby
+hobbyhorse
+hobgoblin
+hobo
+Hoboken
+hoc
+hock
+hockey
+hocus
+hodge
+hodgepodge
+Hodges
+Hodgkin
+hoe
+Hoff
+Hoffman
+hog
+hogan
+hogging
+.IND hoi
+.IND Hokan
+Holbrook
+Holcomb
+hold
+holden
+holdout
+holdover
+holdup
+hole
+holeable
+holiday
+Holland
+Hollandaise
+holler
+Hollerith
+Hollingsworth
+Hollister
+hollow
+Holloway
+hollowware
+holly
+hollyhock
+Hollywood
+Holm
+Holman
+.IND Holmdel
+Holmes
+holmium
+holocaust
+Holocene
+hologram
+holography
+Holst
+Holstein
+holster
+holt
+Holyoke
+.IND holystone
+.INDP
+inject injudicious Injun injunct injunction injure injurious injury
+injustice ink inkling inlaid inland inlay inlet Inman inmate inn innards
+innate inner innermost innkeeper innocent innocuous innovate innuendo
+innumerable inoculate inoffensive inoperable inoperative inopportune
+inordinate inorganic input inputting inquest inquire inquiry inquisition
diff --git a/contrib/groff/contrib/mm/examples/LT b/contrib/groff/contrib/mm/examples/LT
new file mode 100644
index 000000000000..cf063897371c
--- /dev/null
+++ b/contrib/groff/contrib/mm/examples/LT
@@ -0,0 +1,1058 @@
+.ND 1994-10-26
+.\" .WA "Nisse Nilsson" notitle
+.\" .WE
+.WA "Sven Olsson" title
+Return address
+Street
+City, State Zip Code
+Text
+.WE
+.IA "Inside address" title
+Addressee name XXXXXXX
+Title XXXXXXXXXXXXXXX
+Company xxxxxxxxxxxx
+Street xxxxxxxxxxxxxx
+City, State Zip Code
+Text xxxxxxxxxxxxxxxxxx
+.IE
+.LO CN
+.LO RN "referens"
+.LO AT Attention
+.LO SA "Hej hopp"
+.LO SJ "Subject line"
+.LT BL
+hepp
+granary
+grand
+grandchild
+grandchildren
+granddaughter
+grandeur
+grandfather
+grandiloquent
+grandiose
+grandma
+grandmother
+grandnephew
+grandniece
+grandpa
+grandparent
+grandson
+grandstand
+granite
+granitic
+granny
+granola
+grant
+grantee
+grantor
+granular
+granulate
+granule
+Granville
+grape
+grapefruit
+grapevine
+graph
+grapheme
+graphic
+graphite
+grapple
+grasp
+grass
+grassland
+grassy
+grata
+grate
+grateful
+grater
+gratify
+gratis
+gratitude
+gratuitous
+gratuity
+grave
+gravel
+graven
+Graves
+gravestone
+graveyard
+gravid
+gravitate
+gravy
+gray
+graybeard
+grayish
+Grayson
+graywacke
+graze
+grease
+greasy
+great
+greatcoat
+greater
+grebe
+Grecian
+Greece
+greed
+greedy
+Greek
+green
+Greenbelt
+Greenberg
+Greenblatt
+Greenbriar
+Greene
+greenery
+Greenfield
+greengrocer
+greenhouse
+greenish
+Greenland
+Greensboro
+greensward
+greenware
+Greenwich
+greenwood
+Greer
+greet
+Greg
+gregarious
+Gregg
+Gregory
+gremlin
+grenade
+Grendel
+Grenoble
+Gresham
+Greta
+Gretchen
+grew
+grey
+greyhound
+greylag
+grid
+griddle
+gridiron
+grief
+grievance
+grieve
+grievous
+griffin
+Griffith
+grill
+grille
+grilled
+grillwork
+grim
+grimace
+Grimaldi
+grime
+Grimes
+Grimm
+grin
+grind
+grindstone
+grip
+.P
+gripe
+grippe
+grisly
+grist
+gristmill
+Griswold
+grit
+gritty
+grizzle
+grizzly
+groan
+groat
+grocer
+grocery
+groggy
+groin
+grommet
+groom
+groove
+grope
+grosbeak
+gross
+Grosset
+Grossman
+Grosvenor
+grotesque
+Groton
+ground
+groundsel
+groundskeep
+groundwork
+group
+groupoid
+grout
+grove
+grovel
+Grover
+grow
+growl
+grown
+grownup
+growth
+grub
+grubby
+grudge
+gruesome
+gruff
+grumble
+Grumman
+grunt
+gryphon
+g's
+GSA
+GU
+Guam
+guanidine
+guanine
+guano
+guarantee
+guaranteeing
+guarantor
+guaranty
+guard
+guardhouse
+Guardia
+guardian
+Guatemala
+gubernatorial
+Guelph
+Guenther
+guerdon
+guernsey
+guerrilla
+guess
+guesswork
+guest
+guffaw
+Guggenheim
+Guiana
+guidance
+guide
+guidebook
+guideline
+guidepost
+guiding
+guignol
+guild
+guildhall
+guile
+Guilford
+guillemot
+guillotine
+guilt
+guilty
+guinea
+guise
+guitar
+gules
+gulf
+gull
+Gullah
+gullet
+gullible
+gully
+gulp
+gum
+gumbo
+gumdrop
+gummy
+gumption
+gumshoe
+gun
+Gunderson
+gunfight
+gunfire
+gunflint
+gunk
+gunky
+gunman
+gunmen
+gunnery
+gunny
+gunplay
+gunpowder
+gunshot
+gunsling
+Gunther
+gurgle
+Gurkha
+guru
+Gus
+gush
+gusset
+gust
+Gustafson
+Gustav
+Gustave
+Gustavus
+gusto
+gusty
+gut
+Gutenberg
+Guthrie
+gutsy
+guttural
+guy
+.P
+Guyana
+guzzle
+Gwen
+Gwyn
+gym
+gymnasium
+gymnast
+gymnastic
+gymnosperm
+gyp
+gypsite
+gypsum
+gypsy
+gyrate
+gyrfalcon
+gyro
+gyrocompass
+gyroscope
+h
+ha
+Haag
+Haas
+habeas
+haberdashery
+Haberman
+Habib
+habit
+habitant
+habitat
+habitation
+habitual
+habituate
+hacienda
+hack
+hackberry
+Hackett
+hackle
+hackmatack
+hackney
+hackneyed
+hacksaw
+had
+Hadamard
+Haddad
+haddock
+Hades
+Hadley
+hadn't
+Hadrian
+hadron
+hafnium
+Hagen
+Hager
+haggard
+haggle
+Hagstrom
+Hague
+Hahn
+Haifa
+haiku
+hail
+hailstone
+hailstorm
+Haines
+hair
+haircut
+hairdo
+hairpin
+hairy
+Haiti
+Haitian
+Hal
+halcyon
+hale
+Haley
+half
+halfback
+halfhearted
+halfway
+halibut
+halide
+Halifax
+halite
+hall
+hallelujah
+Halley
+hallmark
+hallow
+Halloween
+hallucinate
+hallway
+halma
+halo
+halocarbon
+halogen
+Halpern
+Halsey
+Halstead
+halt
+halvah
+halve
+Halverson
+ham
+Hamal
+Hamburg
+hamburger
+Hamilton
+hamlet
+Hamlin
+hammerhead
+hammock
+Hammond
+hamper
+Hampshire
+Hampton
+hamster
+Han
+Hancock
+hand
+handbag
+handbook
+handclasp
+handcuff
+Handel
+handful
+handgun
+handhold
+handicap
+handicapped
+handicapper
+handicapping
+handicraft
+handicraftsman
+handicraftsmen
+handiwork
+handkerchief
+handle
+handleable
+handlebar
+handline
+handmade
+handmaiden
+handout
+handset
+handshake
+handsome
+handspike
+handstand
+handwaving
+handwrite
+handwritten
+handy
+handyman
+handymen
+Haney
+Hanford
+hang
+hangable
+hangar
+hangman
+hangmen
+hangout
+hangover
+hank
+Hankel
+Hanley
+Hanlon
+Hanna
+Hannah
+Hannibal
+Hanoi
+Hanover
+Hanoverian
+Hans
+Hansel
+Hansen
+hansom
+Hanson
+Hanukkah
+hap
+haphazard
+haploid
+haploidy
+haplology
+happen
+happenstance
+happy
+Hapsburg
+harangue
+harass
+Harbin
+harbinger
+Harcourt
+hard
+hardbake
+hardboard
+hardboiled
+hardcopy
+harden
+hardhat
+Hardin
+Harding
+hardscrabble
+hardtack
+hardtop
+hardware
+hardwood
+hardworking
+hardy
+hare
+harelip
+harem
+hark
+Harlan
+Harlem
+Harley
+harm
+harmful
+Harmon
+harmonic
+harmonica
+harmonious
+harmony
+harness
+Harold
+harp
+harpoon
+harpsichord
+Harpy
+Harriet
+Harriman
+Harrington
+Harris
+Harrisburg
+Harrison
+harrow
+harry
+harsh
+harshen
+hart
+Hartford
+Hartley
+Hartman
+Harvard
+.P
+harvest
+harvestman
+Harvey
+hash
+hashish
+hasn't
+hasp
+hassle
+hast
+haste
+hasten
+Hastings
+hasty
+hat
+hatch
+hatchet
+hatchway
+hate
+hateful
+hater
+Hatfield
+hath
+Hathaway
+hatred
+Hatteras
+Hattie
+Hattiesburg
+Haugen
+haughty
+haul
+haulage
+haunch
+haunt
+Hausdorff
+Havana
+have
+haven
+haven't
+Havilland
+havoc
+haw
+Hawaii
+Hawaiian
+hawk
+Hawkins
+Hawley
+hawthorn
+Hawthorne
+hay
+Hayden
+Haydn
+Hayes
+hayfield
+Haynes
+Hays
+haystack
+Hayward
+hayward
+hazard
+hazardous
+haze
+hazel
+hazelnut
+hazy
+he
+head
+headache
+headboard
+headdress
+headland
+headlight
+headline
+headmaster
+headphone
+headquarter
+headquarters
+headroom
+headset
+headsman
+headsmen
+headstand
+headstone
+headstrong
+headwall
+headwater
+headway
+headwind
+heady
+heal
+Healey
+health
+healthful
+healthy
+Healy
+heap
+hear
+heard
+hearken
+hearsay
+hearse
+Hearst
+heart
+heartbeat
+heartbreak
+hearten
+heartfelt
+hearth
+hearty
+heat
+heater
+heath
+heathen
+heathenish
+Heathkit
+heave
+heaven
+heavenward
+heavy
+heavyweight
+Hebe
+hebephrenic
+Hebraic
+Hebrew
+Hecate
+hecatomb
+heck
+heckle
+Heckman
+hectic
+hector
+Hecuba
+he'd
+hedge
+hedgehog
+hedonism
+hedonist
+heed
+heel
+heft
+hefty
+Hegelian
+hegemony
+Heidelberg
+heigh
+height
+heighten
+Heine
+Heinrich
+Heinz
+heir
+heiress
+Heisenberg
+held
+Helen
+Helena
+Helene
+Helga
+helical
+helicopter
+heliocentric
+heliotrope
+helium
+helix
+he'll
+hell
+hellbender
+hellebore
+Hellenic
+hellfire
+hellgrammite
+hellish
+hello
+helm
+helmet
+Helmholtz
+helmsman
+helmsmen
+Helmut
+help
+helpful
+helpmate
+Helsinki
+Helvetica
+hem
+hematite
+Hemingway
+hemisphere
+hemispheric
+hemlock
+hemoglobin
+hemolytic
+hemorrhage
+hemorrhoid
+hemosiderin
+hemp
+Hempstead
+hen
+henbane
+hence
+henceforth
+henchman
+henchmen
+Henderson
+Hendrick
+Hendricks
+Hendrickson
+henequen
+Henley
+henpeck
+Henri
+Henrietta
+henry
+hepatica
+hepatitis
+Hepburn
+heptane
+her
+Hera
+Heraclitus
+herald
+herb
+Herbert
+Herculean
+Hercules
+herd
+herdsman
+here
+hereabout
+hereafter
+hereby
+hereditary
+heredity
+Hereford
+herein
+hereinabove
+hereinafter
+hereinbelow
+hereof
+heresy
+heretic
+hereto
+heretofore
+hereunder
+hereunto
+.P
+herewith
+heritable
+heritage
+Herkimer
+Herman
+Hermann
+hermeneutic
+Hermes
+hermetic
+Hermite
+hermitian
+Hermosa
+Hernandez
+hero
+Herodotus
+heroes
+heroic
+heroin
+heroine
+heroism
+heron
+herpes
+herpetology
+Herr
+herringbone
+Herschel
+herself
+Hershel
+Hershey
+hertz
+Hertzog
+hesitant
+hesitate
+hesitater
+Hesperus
+Hess
+Hesse
+Hessian
+Hester
+heterocyclic
+heterodyne
+heterogamous
+heterogeneity
+heterogeneous
+heterosexual
+heterostructure
+heterozygous
+Hetman
+Hettie
+Hetty
+Heublein
+heuristic
+Heusen
+Heuser
+hew
+Hewett
+Hewitt
+Hewlett
+hewn
+hex
+hexachloride
+hexadecimal
+hexafluoride
+hexagon
+hexagonal
+hexameter
+hexane
+hey
+heyday
+hi
+Hiatt
+hiatus
+Hiawatha
+hibachi
+Hibbard
+hibernate
+Hibernia
+hick
+Hickey
+Hickman
+hickory
+Hicks
+hid
+hidalgo
+hidden
+hide
+hideaway
+hideous
+hideout
+hierarchal
+hierarchic
+hierarchy
+hieratic
+hieroglyphic
+Hieronymus
+hifalutin
+Higgins
+high
+highball
+highboy
+highest
+highfalutin
+highhanded
+highland
+highlight
+highroad
+hightail
+highway
+highwayman
+highwaymen
+hijack
+hijinks
+hike
+hilarious
+hilarity
+Hilbert
+Hildebrand
+hill
+hillbilly
+Hillcrest
+Hillel
+hillman
+hillmen
+hillock
+hillside
+hilltop
+hilly
+hilt
+Hilton
+hilum
+him
+Himalaya
+himself
+hind
+hindmost
+hindrance
+hindsight
+Hindu
+Hinduism
+Hines
+hinge
+Hinman
+hint
+hinterland
+hip
+hippo
+Hippocrates
+Hippocratic
+hippodrome
+hippopotamus
+hippy
+hipster
+Hiram
+hire
+hireling
+Hiroshi
+Hiroshima
+Hirsch
+hirsute
+his
+Hispanic
+hiss
+histamine
+histidine
+histochemic
+histochemistry
+histogram
+histology
+historian
+historic
+historiography
+history
+histrionic
+hit
+Hitachi
+hitch
+Hitchcock
+hither
+hitherto
+Hitler
+hive
+ho
+hoagie
+Hoagland
+hoagy
+hoar
+hoard
+hoarfrost
+hoarse
+hob
+Hobart
+Hobbes
+hobble
+Hobbs
+hobby
+.P
+hobbyhorse
+hobgoblin
+hobo
+Hoboken
+hoc
+hock
+hockey
+hocus
+hodge
+hodgepodge
+Hodges
+Hodgkin
+hoe
+Hoff
+Hoffman
+hog
+hogan
+hogging
+hoi
+Hokan
+Holbrook
+Holcomb
+hold
+holden
+holdout
+holdover
+holdup
+hole
+holeable
+holiday
+Holland
+Hollandaise
+holler
+Hollerith
+Hollingsworth
+Hollister
+hollow
+Holloway
+hollowware
+holly
+hollyhock
+Hollywood
+Holm
+Holman
+Holmdel
+Holmes
+holmium
+holocaust
+Holocene
+hologram
+holography
+Holst
+Holstein
+holster
+holt
+Holyoke
+holystone
+.FC
+.SG
+.NS 7
+text text text
+text text text
+.NS 12
+Holyoke
+holystone
+.NS
+holt
+.NE
diff --git a/contrib/groff/contrib/mm/examples/LT.se b/contrib/groff/contrib/mm/examples/LT.se
new file mode 100644
index 000000000000..bfbd77f5543e
--- /dev/null
+++ b/contrib/groff/contrib/mm/examples/LT.se
@@ -0,0 +1,1062 @@
+.\" groff -mmse LT.se
+.ND 1994-10-26
+.WA "Sven Olsson" title
+Return address
+Street
+City, State Zip Code
+Text
+.WE
+.IA "Inside address" title
+Addressee name XXXXXXX
+Title XXXXXXXXXXXXXXX
+Company xxxxxxxxxxxx
+Street xxxxxxxxxxxxxx
+City, State Zip Code
+Text xxxxxxxxxxxxxxxxxx
+.IE
+.LO DNAMN Dokumentnamn
+.LO MDAT 1994-01-01
+.LO BIL 2
+.LO KOMP Kompletteringsuppgift
+.LO DBET dokumentnummer
+.LO BET ärendebeteckning
+.LO MBET "Mottagarens b"
+.LO SIDOR 22
+.\" vänster eller högerställt brev
+.\" .LT SVH
+.LT SVV
+hepp
+granary
+grand
+grandchild
+grandchildren
+granddaughter
+grandeur
+grandfather
+grandiloquent
+grandiose
+grandma
+grandmother
+grandnephew
+grandniece
+grandpa
+grandparent
+grandson
+grandstand
+granite
+granitic
+granny
+granola
+grant
+grantee
+grantor
+granular
+granulate
+granule
+Granville
+grape
+grapefruit
+grapevine
+graph
+grapheme
+graphic
+graphite
+grapple
+grasp
+grass
+grassland
+grassy
+grata
+grate
+grateful
+grater
+gratify
+gratis
+gratitude
+gratuitous
+gratuity
+grave
+gravel
+graven
+Graves
+gravestone
+graveyard
+gravid
+gravitate
+gravy
+gray
+graybeard
+grayish
+Grayson
+graywacke
+graze
+grease
+greasy
+great
+greatcoat
+greater
+grebe
+Grecian
+Greece
+greed
+greedy
+Greek
+green
+Greenbelt
+Greenberg
+Greenblatt
+Greenbriar
+Greene
+greenery
+Greenfield
+greengrocer
+greenhouse
+greenish
+Greenland
+Greensboro
+greensward
+greenware
+Greenwich
+greenwood
+Greer
+greet
+Greg
+gregarious
+Gregg
+Gregory
+gremlin
+grenade
+Grendel
+Grenoble
+Gresham
+Greta
+Gretchen
+grew
+grey
+greyhound
+greylag
+grid
+griddle
+gridiron
+grief
+grievance
+grieve
+grievous
+griffin
+Griffith
+grill
+grille
+grilled
+grillwork
+grim
+grimace
+Grimaldi
+grime
+Grimes
+Grimm
+grin
+grind
+grindstone
+grip
+.P
+gripe
+grippe
+grisly
+grist
+gristmill
+Griswold
+grit
+gritty
+grizzle
+grizzly
+groan
+groat
+grocer
+grocery
+groggy
+groin
+grommet
+groom
+groove
+grope
+grosbeak
+gross
+Grosset
+Grossman
+Grosvenor
+grotesque
+Groton
+ground
+groundsel
+groundskeep
+groundwork
+group
+groupoid
+grout
+grove
+grovel
+Grover
+grow
+growl
+grown
+grownup
+growth
+grub
+grubby
+grudge
+gruesome
+gruff
+grumble
+Grumman
+grunt
+gryphon
+g's
+GSA
+GU
+Guam
+guanidine
+guanine
+guano
+guarantee
+guaranteeing
+guarantor
+guaranty
+guard
+guardhouse
+Guardia
+guardian
+Guatemala
+gubernatorial
+Guelph
+Guenther
+guerdon
+guernsey
+guerrilla
+guess
+guesswork
+guest
+guffaw
+Guggenheim
+Guiana
+guidance
+guide
+guidebook
+guideline
+guidepost
+guiding
+guignol
+guild
+guildhall
+guile
+Guilford
+guillemot
+guillotine
+guilt
+guilty
+guinea
+guise
+guitar
+gules
+gulf
+gull
+Gullah
+gullet
+gullible
+gully
+gulp
+gum
+gumbo
+gumdrop
+gummy
+gumption
+gumshoe
+gun
+Gunderson
+gunfight
+gunfire
+gunflint
+gunk
+gunky
+gunman
+gunmen
+gunnery
+gunny
+gunplay
+gunpowder
+gunshot
+gunsling
+Gunther
+gurgle
+Gurkha
+guru
+Gus
+gush
+gusset
+gust
+Gustafson
+Gustav
+Gustave
+Gustavus
+gusto
+gusty
+gut
+Gutenberg
+Guthrie
+gutsy
+guttural
+guy
+.P
+Guyana
+guzzle
+Gwen
+Gwyn
+gym
+gymnasium
+gymnast
+gymnastic
+gymnosperm
+gyp
+gypsite
+gypsum
+gypsy
+gyrate
+gyrfalcon
+gyro
+gyrocompass
+gyroscope
+h
+ha
+Haag
+Haas
+habeas
+haberdashery
+Haberman
+Habib
+habit
+habitant
+habitat
+habitation
+habitual
+habituate
+hacienda
+hack
+hackberry
+Hackett
+hackle
+hackmatack
+hackney
+hackneyed
+hacksaw
+had
+Hadamard
+Haddad
+haddock
+Hades
+Hadley
+hadn't
+Hadrian
+hadron
+hafnium
+Hagen
+Hager
+haggard
+haggle
+Hagstrom
+Hague
+Hahn
+Haifa
+haiku
+hail
+hailstone
+hailstorm
+Haines
+hair
+haircut
+hairdo
+hairpin
+hairy
+Haiti
+Haitian
+Hal
+halcyon
+hale
+Haley
+half
+halfback
+halfhearted
+halfway
+halibut
+halide
+Halifax
+halite
+hall
+hallelujah
+Halley
+hallmark
+hallow
+Halloween
+hallucinate
+hallway
+halma
+halo
+halocarbon
+halogen
+Halpern
+Halsey
+Halstead
+halt
+halvah
+halve
+Halverson
+ham
+Hamal
+Hamburg
+hamburger
+Hamilton
+hamlet
+Hamlin
+hammerhead
+hammock
+Hammond
+hamper
+Hampshire
+Hampton
+hamster
+Han
+Hancock
+hand
+handbag
+handbook
+handclasp
+handcuff
+Handel
+handful
+handgun
+handhold
+handicap
+handicapped
+handicapper
+handicapping
+handicraft
+handicraftsman
+handicraftsmen
+handiwork
+handkerchief
+handle
+handleable
+handlebar
+handline
+handmade
+handmaiden
+handout
+handset
+handshake
+handsome
+handspike
+handstand
+handwaving
+handwrite
+handwritten
+handy
+handyman
+handymen
+Haney
+Hanford
+hang
+hangable
+hangar
+hangman
+hangmen
+hangout
+hangover
+hank
+Hankel
+Hanley
+Hanlon
+Hanna
+Hannah
+Hannibal
+Hanoi
+Hanover
+Hanoverian
+Hans
+Hansel
+Hansen
+hansom
+Hanson
+Hanukkah
+hap
+haphazard
+haploid
+haploidy
+haplology
+happen
+happenstance
+happy
+Hapsburg
+harangue
+harass
+Harbin
+harbinger
+Harcourt
+hard
+hardbake
+hardboard
+hardboiled
+hardcopy
+harden
+hardhat
+Hardin
+Harding
+hardscrabble
+hardtack
+hardtop
+hardware
+hardwood
+hardworking
+hardy
+hare
+harelip
+harem
+hark
+Harlan
+Harlem
+Harley
+harm
+harmful
+Harmon
+harmonic
+harmonica
+harmonious
+harmony
+harness
+Harold
+harp
+harpoon
+harpsichord
+Harpy
+Harriet
+Harriman
+Harrington
+Harris
+Harrisburg
+Harrison
+harrow
+harry
+harsh
+harshen
+hart
+Hartford
+Hartley
+Hartman
+Harvard
+.P
+harvest
+harvestman
+Harvey
+hash
+hashish
+hasn't
+hasp
+hassle
+hast
+haste
+hasten
+Hastings
+hasty
+hat
+hatch
+hatchet
+hatchway
+hate
+hateful
+hater
+Hatfield
+hath
+Hathaway
+hatred
+Hatteras
+Hattie
+Hattiesburg
+Haugen
+haughty
+haul
+haulage
+haunch
+haunt
+Hausdorff
+Havana
+have
+haven
+haven't
+Havilland
+havoc
+haw
+Hawaii
+Hawaiian
+hawk
+Hawkins
+Hawley
+hawthorn
+Hawthorne
+hay
+Hayden
+Haydn
+Hayes
+hayfield
+Haynes
+Hays
+haystack
+Hayward
+hayward
+hazard
+hazardous
+haze
+hazel
+hazelnut
+hazy
+he
+head
+headache
+headboard
+headdress
+headland
+headlight
+headline
+headmaster
+headphone
+headquarter
+headquarters
+headroom
+headset
+headsman
+headsmen
+headstand
+headstone
+headstrong
+headwall
+headwater
+headway
+headwind
+heady
+heal
+Healey
+health
+healthful
+healthy
+Healy
+heap
+hear
+heard
+hearken
+hearsay
+hearse
+Hearst
+heart
+heartbeat
+heartbreak
+hearten
+heartfelt
+hearth
+hearty
+heat
+heater
+heath
+heathen
+heathenish
+Heathkit
+heave
+heaven
+heavenward
+heavy
+heavyweight
+Hebe
+hebephrenic
+Hebraic
+Hebrew
+Hecate
+hecatomb
+heck
+heckle
+Heckman
+hectic
+hector
+Hecuba
+he'd
+hedge
+hedgehog
+hedonism
+hedonist
+heed
+heel
+heft
+hefty
+Hegelian
+hegemony
+Heidelberg
+heigh
+height
+heighten
+Heine
+Heinrich
+Heinz
+heir
+heiress
+Heisenberg
+held
+Helen
+Helena
+Helene
+Helga
+helical
+helicopter
+heliocentric
+heliotrope
+helium
+helix
+he'll
+hell
+hellbender
+hellebore
+Hellenic
+hellfire
+hellgrammite
+hellish
+hello
+helm
+helmet
+Helmholtz
+helmsman
+helmsmen
+Helmut
+help
+helpful
+helpmate
+Helsinki
+Helvetica
+hem
+hematite
+Hemingway
+hemisphere
+hemispheric
+hemlock
+hemoglobin
+hemolytic
+hemorrhage
+hemorrhoid
+hemosiderin
+hemp
+Hempstead
+hen
+henbane
+hence
+henceforth
+henchman
+henchmen
+Henderson
+Hendrick
+Hendricks
+Hendrickson
+henequen
+Henley
+henpeck
+Henri
+Henrietta
+henry
+hepatica
+hepatitis
+Hepburn
+heptane
+her
+Hera
+Heraclitus
+herald
+herb
+Herbert
+Herculean
+Hercules
+herd
+herdsman
+here
+hereabout
+hereafter
+hereby
+hereditary
+heredity
+Hereford
+herein
+hereinabove
+hereinafter
+hereinbelow
+hereof
+heresy
+heretic
+hereto
+heretofore
+hereunder
+hereunto
+.P
+herewith
+heritable
+heritage
+Herkimer
+Herman
+Hermann
+hermeneutic
+Hermes
+hermetic
+Hermite
+hermitian
+Hermosa
+Hernandez
+hero
+Herodotus
+heroes
+heroic
+heroin
+heroine
+heroism
+heron
+herpes
+herpetology
+Herr
+herringbone
+Herschel
+herself
+Hershel
+Hershey
+hertz
+Hertzog
+hesitant
+hesitate
+hesitater
+Hesperus
+Hess
+Hesse
+Hessian
+Hester
+heterocyclic
+heterodyne
+heterogamous
+heterogeneity
+heterogeneous
+heterosexual
+heterostructure
+heterozygous
+Hetman
+Hettie
+Hetty
+Heublein
+heuristic
+Heusen
+Heuser
+hew
+Hewett
+Hewitt
+Hewlett
+hewn
+hex
+hexachloride
+hexadecimal
+hexafluoride
+hexagon
+hexagonal
+hexameter
+hexane
+hey
+heyday
+hi
+Hiatt
+hiatus
+Hiawatha
+hibachi
+Hibbard
+hibernate
+Hibernia
+hick
+Hickey
+Hickman
+hickory
+Hicks
+hid
+hidalgo
+hidden
+hide
+hideaway
+hideous
+hideout
+hierarchal
+hierarchic
+hierarchy
+hieratic
+hieroglyphic
+Hieronymus
+hifalutin
+Higgins
+high
+highball
+highboy
+highest
+highfalutin
+highhanded
+highland
+highlight
+highroad
+hightail
+highway
+highwayman
+highwaymen
+hijack
+hijinks
+hike
+hilarious
+hilarity
+Hilbert
+Hildebrand
+hill
+hillbilly
+Hillcrest
+Hillel
+hillman
+hillmen
+hillock
+hillside
+hilltop
+hilly
+hilt
+Hilton
+hilum
+him
+Himalaya
+himself
+hind
+hindmost
+hindrance
+hindsight
+Hindu
+Hinduism
+Hines
+hinge
+Hinman
+hint
+hinterland
+hip
+hippo
+Hippocrates
+Hippocratic
+hippodrome
+hippopotamus
+hippy
+hipster
+Hiram
+hire
+hireling
+Hiroshi
+Hiroshima
+Hirsch
+hirsute
+his
+Hispanic
+hiss
+histamine
+histidine
+histochemic
+histochemistry
+histogram
+histology
+historian
+historic
+historiography
+history
+histrionic
+hit
+Hitachi
+hitch
+Hitchcock
+hither
+hitherto
+Hitler
+hive
+ho
+hoagie
+Hoagland
+hoagy
+hoar
+hoard
+hoarfrost
+hoarse
+hob
+Hobart
+Hobbes
+hobble
+Hobbs
+hobby
+.P
+hobbyhorse
+hobgoblin
+hobo
+Hoboken
+hoc
+hock
+hockey
+hocus
+hodge
+hodgepodge
+Hodges
+Hodgkin
+hoe
+Hoff
+Hoffman
+hog
+hogan
+hogging
+hoi
+Hokan
+Holbrook
+Holcomb
+hold
+holden
+holdout
+holdover
+holdup
+hole
+holeable
+holiday
+Holland
+Hollandaise
+holler
+Hollerith
+Hollingsworth
+Hollister
+hollow
+Holloway
+hollowware
+holly
+hollyhock
+Hollywood
+Holm
+Holman
+Holmdel
+Holmes
+holmium
+holocaust
+Holocene
+hologram
+holography
+Holst
+Holstein
+holster
+holt
+Holyoke
+holystone
+.FC
+.SG
+.NS 7
+text text text
+text text text
+.NS 12
+Holyoke
+holystone
+.NS
+holt
+.NE
diff --git a/contrib/groff/contrib/mm/examples/ML b/contrib/groff/contrib/mm/examples/ML
new file mode 100644
index 000000000000..bbfca3def549
--- /dev/null
+++ b/contrib/groff/contrib/mm/examples/ML
@@ -0,0 +1,169 @@
+granary
+grand
+grandchild
+grandchildren
+granddaughter
+grandeur
+grandfather
+grandiloquent
+grandiose
+grandma
+grandmother
+grandnephew
+grandniece
+grandpa
+.ML MARK
+.LI "LOCALMARK"
+granola
+grant
+grantee
+grantor
+granular
+granulate
+granule
+Granville
+grape
+grapefruit
+grapevine
+.LI
+.DS
+Where shall we put this.
+Where shall we put this.
+Where shall we put this.
+.DE
+.LI
+granola
+grant
+grantee
+grantor
+granular
+granulate
+granule
+Granville
+grape
+grapefruit
+grapevine
+.LI
+.DS
+Where shall we put this.
+.DE
+.LI
+graphic
+graphite
+grapple
+grasp
+grass
+grassland
+grassy
+.LI
+grata
+grate
+grateful
+grater
+gratify
+gratis
+gratitude
+gratuitous
+.LI
+gratuity
+grave
+gravel
+.LE
+.SP 3
+.ML $ 1c
+.LI
+graven
+Graves
+gravestone
+graveyard
+gravid
+gravitate
+gravy
+gray
+.LI
+graybeard
+grayish
+Grayson
+graywacke
+graze
+grease
+greasy
+great
+greatcoat
+.LI
+greater
+grebe
+Grecian
+Greece
+greed
+greedy
+Greek
+green
+.LI
+Greenbelt
+Greenberg
+Greenblatt
+Greenbriar
+Greene
+greenery
+.LE
+.SP 3
+.ML X 1c 1
+.LI
+Greenfield
+greengrocer
+grandson
+grandstand
+granite
+granitic
+granny
+graph
+.LI
+grapheme
+greenhouse
+greenish
+Greenland
+Greensboro
+granary
+grand
+grandchild
+grandchildren
+granddaughter
+grandeur
+grandfather
+grandiloquent
+grandiose
+.LI
+grandma
+grandmother
+grandnephew
+grandniece
+grandpa
+grandparent
+grandson
+grandstand
+granite
+granitic
+granny
+.LI
+granola
+grant
+grantee
+grantor
+granular
+granulate
+granule
+Granville
+grape
+grapefruit
+.LI
+grapevine
+graph
+grapheme
+graphic
+graphite
+grapple
+grasp
+grass
+grassland
+.LE
diff --git a/contrib/groff/contrib/mm/examples/MOVE b/contrib/groff/contrib/mm/examples/MOVE
new file mode 100644
index 000000000000..0f0399cc7a35
--- /dev/null
+++ b/contrib/groff/contrib/mm/examples/MOVE
@@ -0,0 +1,175 @@
+.PH "'hej'hopp'i skogen'"
+.PF "'livet'är'härligt'"
+.OH "'ojämn'%'sida'"
+.EH "'ojämn'%'sida'"
+.OF "'ojämn'%'sida'"
+.EF "'ojämn'%'sida'"
+10th
+1st
+2nd
+3rd
+4th
+5th
+6th
+7th
+8th
+9th
+a
+AAA
+AAAS
+Aarhus
+Aaron
+AAU
+ABA
+Ababa
+aback
+abacus
+abalone
+abandon
+abase
+abash
+abate
+abater
+abbas
+abbe
+abbey
+abbot
+Abbott
+abbreviate
+abc
+abdicate
+abdomen
+abdominal
+abet
+abetted
+abetting
+abeyance
+abeyant
+abhorred
+abhorrent
+abide
+Abidjan
+Abigail
+abject
+ablate
+ablaze
+able
+ablution
+Abner
+.MOVE 50 20
+abnormal
+Abo
+aboard
+abode
+abolish
+abolition
+abominable
+abominate
+aboriginal
+AAA
+ABORIGINE
+ABORNING
+ABORT
+ABOUND
+ABOUT
+ABOVE
+ABOVEBOARD
+ABOVEGROUND
+abovementioned
+abrade
+Abraham
+Abram
+Abramson
+abrasion
+abrasive
+abreact
+abreast
+BBB
+ABRIDGE
+ABRIDGMENT
+ABROAD
+abrogate
+abrupt
+abscess
+abscissa
+abscissae
+absence
+absent
+absentee
+absenteeism
+absentia
+absentminded
+.MOVE 30 10
+absinthe
+absolute
+absolution
+absolve
+absorb
+absorbent
+absorption
+absorptive
+abstain
+abstention
+abstinent
+abstract
+abstracter
+abstractor
+CCC
+ABSTRUSE
+ABSURD
+ABUILDING
+ABUNDANT
+ABUSABLE
+ABUSE
+ABUSIVE
+ABUT
+ABUTTED
+ABUTTING
+ABYSMAL
+ABYSS
+ABYSSINIA
+AC
+ACADEME
+ACADEMIA
+ACADEMIC
+ACADEMICIAN
+ACADEMY
+ACADIA
+ACANTHUS
+ACAPULCO
+ACCEDE
+ACCELERATE
+ACCELEROMETER
+ACCENT
+ACCENTUAL
+ACCENTUATE
+ACCEPT
+ACCEPTANT
+acceptor
+access
+.MOVE 62 0 20
+accessible
+accession
+accessory
+accident
+accidental
+accipiter
+acclaim
+acclamation
+acclimate
+accolade
+accommodate
+accompaniment
+accompanist
+accompany
+accomplice
+accomplish
+accord
+accordant
+DDD
+ACCORDION
+ACCOST
+ACCOUNT
+ACCOUNTANT
+ACCRA
+.PGFORM
diff --git a/contrib/groff/contrib/mm/examples/MUL b/contrib/groff/contrib/mm/examples/MUL
new file mode 100644
index 000000000000..ae91fae0d404
--- /dev/null
+++ b/contrib/groff/contrib/mm/examples/MUL
@@ -0,0 +1,535 @@
+inject
+injudicious
+Injun
+injunct
+injunction
+injure
+injurious
+injury
+injustice
+ink
+inkling
+inlaid
+inland
+inlay
+inlet
+Inman
+inmate
+inn
+innards
+innate
+inner
+innermost
+innkeeper
+innocent
+innocuous
+innovate
+innuendo
+innumerable
+inoculate
+inoffensive
+inoperable
+inoperative
+inopportune
+inordinate
+inorganic
+input
+inputting
+inquest
+inquire
+inquiry
+inquisition
+inquisitive
+inquisitor
+inroad
+insane
+insatiable
+inscribe
+inscription
+inscrutable
+insect
+insecticide
+insecure
+inseminate
+insensible
+insensitive
+inseparable
+insert
+inset
+inshore
+inside
+insidious
+insight
+insightful
+insignia
+insignificant
+insincere
+insinuate
+insipid
+insist
+insistent
+insofar
+insolent
+insoluble
+insolvable
+insolvent
+insomnia
+insomniac
+insouciant
+inspect
+inspector
+inspiration
+inspire
+instable
+install
+installation
+instalment
+instance
+instant
+instantaneous
+instantiate
+instead
+instep
+instigate
+instill
+instillation
+instinct
+instinctual
+institute
+institution
+instruct
+instructor
+instrument
+instrumentation
+insubordinate
+insubstantial
+insufferable
+insufficient
+insular
+insulate
+insulin
+insult
+insuperable
+insupportable
+insuppressible
+insurance
+insure
+insurgent
+insurmountable
+insurrect
+insurrection
+intact
+intake
+intangible
+integer
+integrable
+.MULB 4c 1 5c 1 4c 1 3c
+Grenoble
+Gresham
+Greta
+Gretchen
+grew
+grieve
+grievous
+griffin
+Griffith
+grill
+grille
+grilled
+grillwork
+grim
+grimace
+Grimaldi
+grime
+Grimes
+Grimm
+grin
+grind
+grindstone
+grip
+gripe
+grippe
+grisly
+grist
+gristmill
+Griswold
+grit
+gritty
+grizzle
+grizzly
+groan
+groat
+grocer
+grocery
+groggy
+groin
+grommet
+groom
+groove
+grope
+grosbeak
+gross
+.MULN
+h
+ha
+Haag
+Haas
+habeas
+haberdashery
+Haberman
+Habib
+habit
+habitant
+habitat
+habitation
+habitual
+habituate
+hacienda
+hack
+hackberry
+Hackett
+hackle
+hackmatack
+hackney
+hackneyed
+hacksaw
+had
+Hadamard
+Haddad
+haddock
+Hades
+Hadley
+hadn't
+Hadrian
+hadron
+hafnium
+Hagen
+Hager
+haggard
+haggle
+Hagstrom
+Hague
+Hahn
+Haifa
+haiku
+hail
+hailstone
+hailstorm
+Haines
+hair
+haircut
+hairdo
+hairpin
+hairy
+Haiti
+Haitian
+Hal
+halcyon
+hale
+Haley
+half
+halfback
+halfhearted
+halfway
+halibut
+halide
+Halifax
+halite
+hall
+hallelujah
+Halley
+hallmark
+hallow
+Halloween
+hallucinate
+hallway
+halma
+halo
+halocarbon
+halogen
+Halpern
+Halsey
+Halstead
+halt
+halvah
+halve
+Halverson
+ham
+Hamal
+Hamburg
+hamburger
+Hamilton
+hamlet
+Hamlin
+hammerhead
+hammock
+Hammond
+hamper
+Hampshire
+Hampton
+hamster
+Han
+Hancock
+hand
+handbag
+handbook
+handclasp
+handcuff
+.MULN
+coliform
+coliseum
+collaborate
+collage
+collagen
+collapse
+collapsible
+collar
+collarbone
+collard
+collate
+collateral
+colleague
+collect
+collectible
+collector
+college
+collegial
+collegian
+collegiate
+collet
+collide
+collie
+Collier
+collimate
+collinear
+Collins
+collision
+collocation
+colloidal
+Colloq
+colloquia
+colloquial
+colloquium
+colloquy
+command
+commandant
+commandeer
+commando
+commemorate
+commend
+commendation
+commendatory
+commensurable
+commensurate
+comment
+commentary
+commentator
+commerce
+commercial
+commingle
+commiserate
+commissariat
+commissary
+commission
+commit
+committable
+committal
+committed
+committee
+committeeman
+committeemen
+committeewoman
+committeewomen
+committing
+commodious
+commodity
+commodore
+common
+commonality
+.MULN
+locoweed
+lunch
+luncheon
+lunchroom
+lunchtime
+Lund
+Lundberg
+Lundquist
+lung
+lunge
+lupine
+Lura
+lurch
+lure
+lurid
+lurk
+Lusaka
+luscious
+lush
+lust
+lustful
+lustrous
+lusty
+lutanist
+lute
+lutetium
+Luther
+Lutheran
+Lutz
+lymphocyte
+lymphoma
+lynch
+Lynchburg
+Lynn
+lynx
+Lyon
+Lyons
+Lyra
+lyric
+lyricism
+Lysenko
+lysergic
+lysine
+.MULE
+m
+ma
+Mabel
+Mac
+macabre
+macaque
+MacArthur
+Macassar
+Macbeth
+MacDonald
+MacDougall
+mace
+Macedon
+Macedonia
+MacGregor
+Mach
+Machiavelli
+machination
+machine
+machinelike
+machinery
+machismo
+macho
+macintosh
+mack
+MacKenzie
+mackerel
+Mackey
+Mackinac
+Mackinaw
+mackintosh
+MacMillan
+Macon
+macrame
+macro
+macromolecular
+macromolecule
+macrophage
+macroprocessor
+macroscopic
+macrostructure
+mad
+Madagascar
+madam
+Madame
+madcap
+madden
+Maddox
+made
+Madeira
+Madeleine
+Madeline
+madhouse
+Madison
+madman
+madmen
+Madonna
+Madras
+Madrid
+madrigal
+Madsen
+madstone
+Mae
+Maelstrom
+maestro
+Mafia
+magazine
+Magdalene
+magenta
+Maggie
+maggot
+maggoty
+magi
+magic
+magician
+magisterial
+magistrate
+magma
+magna
+magnanimity
+magnanimous
+magnate
+magnesia
+magnesite
+magnesium
+magnet
+magnetic
+magnetite
+magneto
+magnetron
+magnificent
+magnify
+magnitude
+magnolia
+magnum
+Magnuson
+Magog
+magpie
+Magruder
+Mahayana
+Mahayanist
+mahogany
+Mahoney
+maid
+maiden
+maidenhair
+maidservant
+Maier
+mail
+mailbox
+mailman
+mailmen
+maim
+main
+Maine
+mainland
+mainline
+mainstay
+mainstream
+maintain
+maintenance
+maitre
+majestic
+majesty
+major
+make
+makeshift
+makeup
+Malabar
+maladapt
+maladaptive
+maladjust
+maladroit
+malady
+Malagasy
+malaise
+malaprop
+malaria
+malarial
+Malawi
+Malay
+Malaysia
diff --git a/contrib/groff/contrib/mm/examples/NCOL b/contrib/groff/contrib/mm/examples/NCOL
new file mode 100644
index 000000000000..82c6f8d50812
--- /dev/null
+++ b/contrib/groff/contrib/mm/examples/NCOL
@@ -0,0 +1,196 @@
+granary
+grand
+grandchild
+grandchildren
+granddaughter
+grandeur
+grandfather
+grandiloquent
+grandiose
+grandma
+grandmother
+grandnephew
+grandniece
+grandpa
+grandparent
+grandson
+grandstand
+granite
+granitic
+granny
+granola
+grant
+grantee
+grantor
+granular
+granulate
+granule
+Granville
+grape
+grapefruit
+grapevine
+graph
+grapheme
+graphic
+graphite
+grapple
+grasp
+grass
+grassland
+grassy
+.MC 3c
+grata
+grate
+grateful
+grater
+gratify
+gratis
+gratitude
+gratuitous
+gratuity
+grave
+gravel
+graven
+Graves
+gravestone
+graveyard
+gravid
+gravitate
+gravy
+gray
+graybeard
+grayish
+Grayson
+graywacke
+graze
+grease
+greasy
+great
+greatcoat
+greater
+grebe
+Grecian
+Greece
+greed
+greedy
+.NCOL
+Greek
+green
+Greenbelt
+Greenberg
+Greenblatt
+Greenbriar
+Greene
+greenery
+Greenfield
+greengrocer
+greenhouse
+greenish
+Greenland
+Greensboro
+greensward
+greenware
+Greenwich
+greenwood
+Greer
+greet
+Greg
+gregarious
+Gregg
+Gregory
+gremlin
+grenade
+Grendel
+Grenoble
+Gresham
+Greta
+Gretchen
+grew
+grey
+greyhound
+greylag
+grid
+griddle
+gridiron
+grief
+grievance
+grieve
+grievous
+griffin
+Griffith
+grill
+grille
+grilled
+grillwork
+.NCOL
+grim
+grimace
+Grimaldi
+grime
+Grimes
+Grimm
+grin
+grind
+grindstone
+grip
+gripe
+grippe
+grisly
+grist
+gristmill
+Griswold
+grit
+gritty
+grizzle
+grizzly
+groan
+groat
+grocer
+grocery
+groggy
+groin
+grommet
+groom
+groove
+grope
+grosbeak
+gross
+Grosset
+Grossman
+Grosvenor
+grotesque
+Groton
+ground
+groundsel
+groundskeep
+groundwork
+group
+groupoid
+grout
+grove
+grovel
+Grover
+grow
+growl
+grown
+grownup
+growth
+grub
+grubby
+grudge
+gruesome
+gruff
+grumble
+Grumman
+grunt
+gryphon
+g's
+GSA
+GU
+Guam
+guanidine
+guanine
+guano
+guarantee
+guaranteeing
+guarantor
diff --git a/contrib/groff/contrib/mm/examples/ND b/contrib/groff/contrib/mm/examples/ND
new file mode 100644
index 000000000000..4b3694a37261
--- /dev/null
+++ b/contrib/groff/contrib/mm/examples/ND
@@ -0,0 +1,17 @@
+.nf
+----------------------------------------------------------------------
+.ce
+Testing
+----------------------------------------------------------------------
+Date = \*[DT]
+.ISODATE
+Date = \*[DT]
+.ISODATE 0
+
+.ND "13 August 1992"
+Date = \*[DT]
+
+.ISODATE
+.ND "14 August 1992"
+Date = \*[DT]
+----------------------------------------------------------------------
diff --git a/contrib/groff/contrib/mm/examples/README b/contrib/groff/contrib/mm/examples/README
new file mode 100644
index 000000000000..cb6980f85327
--- /dev/null
+++ b/contrib/groff/contrib/mm/examples/README
@@ -0,0 +1,32 @@
+
+This directory contains examples of my enhancements to MM.
+
+APP The appendix macro
+B1B2 Box macro with text
+COVER My general cover macro, this example is using
+ ms.cov.
+IND A general indexing method, see manual for INITI
+LT The letter macro
+LT.se A swedish example with the extra
+ swedish macros for getting a letter conforming
+ to swedish standard letter, both left and right adjusted.
+ML Marked list, an extended list type
+MOVE The MOVE macro, how to begin to print on an exact position.
+MUL Enhanced multicolumn mode.
+NCOL Start on next column. (Not for MUL*)
+ND New date, with iso date example
+References How to use references
+SETR General reference system, see manual for INITR
+
+
+Examples that I should have:
+
+PIC How to include postscript pictures, see manual for PIC
+VERBON Begin verbatim output
+
+
+And remember, check the manual for all string and number registers,
+I've made shure that mgm will be useful in several languages
+and all english output can be redefined.
+Check the manual for groff_mse (swedish format) and the
+macro file, tmac.mse.
diff --git a/contrib/groff/contrib/mm/examples/References b/contrib/groff/contrib/mm/examples/References
new file mode 100644
index 000000000000..72f648220903
--- /dev/null
+++ b/contrib/groff/contrib/mm/examples/References
@@ -0,0 +1,975 @@
+.PH "'this'is'a header'"
+.PF "'this'is'a footer'"
+.OH "'odd'%'page'"
+.EH "'even'%'page'"
+.OF "'odd'%'page'"
+.EF "'even'%'page'"
+10th
+1st
+2nd
+3rd
+4th
+5th
+6th
+7th
+8th
+9th
+a
+AAA
+.B
+AAAS
+Aarhus
+Aaron
+.R
+AAU
+ABA
+Ababa
+aback
+abacus
+abalone
+abandon
+abase
+.H 1 "hej hopp"
+abash
+abate
+abater
+abbas
+abbe
+abbey
+abbot
+Abbott
+abbreviate
+abc
+abdicate
+abdomen
+abet
+abetted
+abetting
+abeyance
+abeyant
+.H 2 "hej hopp"
+abhorred
+abhorrent
+abide
+Abidjan
+Abigail
+abject
+ablate
+ablaze
+able
+ablution
+Abner
+abnormal
+.H 2 "hej hopp"
+Abo
+aboard
+abode
+abolish
+.HU "hej hopp"
+.B1
+abolition
+abominable
+abominate\*(Rf
+aboriginal
+.RS
+AAA
+ABORIGINE
+ABORNING
+ABORT
+ABOUND
+ABOUT
+ABOVE
+ABOVEBOARD
+ABOVEGROUND
+.RF
+abovementioned
+abrade
+Abraham\*(Rf
+Abram\*(Rf
+Abramson\*(Rf
+abrasion\*(Rf
+abrasive\*(Rf
+abreact\*(Rf
+.B2
+abreast\*(Rf
+.RS
+BBB
+ABRIDGE
+ABRIDGMENT
+ABROAD
+.RF
+abrogate
+abrupt
+abscess\*(Rf
+abscissa\*(Rf
+abscissae\*(Rf
+absence\*(Rf
+absent
+absentee
+absenteeism
+absentia
+.H 3 "hej hopp"
+absentminded
+absinthe
+absolute
+absolution
+absolve
+absorb
+absorbent
+absorption
+absorptive
+abstain
+abstention
+abstinent\*(Rf
+abstract
+abstracter
+abstractor
+.RS nisse
+CCC
+ABSTRUSE
+ABSURD
+ABUILDING
+ABUNDANT
+ABUSABLE
+ABUSE
+ABUSIVE
+ABUT
+ABUTTED
+ABUTTING
+ABYSMAL
+ABYSS
+ABYSSINIA
+AC
+ACADEME
+ACADEMIA
+ACADEMIC
+ACADEMICIAN
+ACADEMY
+ACADIA
+ACANTHUS
+ACAPULCO
+ACCEDE
+ACCELERATE
+ACCELEROMETER
+ACCENT
+ACCENTUAL
+ACCENTUATE
+ACCEPT
+ACCEPTANT
+.RF
+acceptor
+access
+accessible
+accession
+Ref \*[nisse]
+accessory
+.H 4 "hej hopp"
+accident
+accidental
+accipiter
+acclaim
+acclamation
+acclimate
+accolade
+accommodate
+accompaniment
+accompanist
+accompany
+accomplice
+accomplish\*(Rf
+accord
+accordant
+.RS
+DDD
+ACCORDION
+ACCOST
+ACCOUNT
+ACCOUNTANT
+ACCRA
+ACCREDIT
+ACCREDITATE
+ACCREDITATION
+ACCRETION
+ACCRUAL
+ACCRUE
+.RF
+acculturate
+accumulate
+accuracy
+accurate
+accusation
+accusative
+accusatory
+accuse
+accustom
+ace
+acerbic
+acerbity
+acetate
+acetic
+acetone
+acetylene
+ache
+achieve
+Achilles
+aching
+achromatic
+acid
+acidic
+acidulous
+.H 5 "hej hopp"
+Ackerman
+Ackley
+acknowledge
+acknowledgeable
+ACM
+acme
+acolyte
+acorn
+acoustic
+acquaint
+acquaintance
+acquiesce
+acquiescent
+acquire
+acquisition
+acquisitive
+acquit
+acquittal
+acquitting
+acre
+acreage
+acrid
+acrimonious
+acrimony
+acrobacy
+acrobat
+acrobatic
+acronym
+acropolis
+across
+acrylate
+acrylic
+ACS
+act
+Actaeon
+actinic
+actinide
+actinium
+actinolite
+actinometer
+activate
+activation
+activism
+Acton
+actor
+actress
+Acts
+actual
+actuarial
+actuate
+.H 6 "hej hopp"
+acuity
+acumen
+acute
+acyclic
+ad
+Ada
+adage
+adagio
+Adair
+Adam
+adamant
+Adams
+Adamson
+adapt
+adaptation
+adaptive
+add
+added
+addend
+addenda
+addendum
+addict
+Addis
+Addison
+addition
+additional
+additive
+addle
+address
+addressee
+Addressograph
+adduce
+Adelaide
+Adele
+Adelia
+Aden
+adenine
+adenoma
+adenosine
+adept
+adequacy
+adequate
+adhere
+adherent
+adhesion
+adhesive
+adiabatic
+adieu
+adipic
+Adirondack
+.H 7 "hej hopp"
+adjacent
+adject
+adjectival
+adjective
+adjoin
+adjoint
+adjourn
+adjudge
+adjudicate
+adjunct
+adjust
+adjutant
+Adkins
+Adler
+administer
+administrable
+administrate
+administratrix
+admiral
+admiralty
+admiration
+admire
+admissible
+admission
+admit
+admittance
+admitted
+admitting
+admix
+admixture
+admonish
+admonition
+ado
+adobe
+adolescent
+Adolph
+Adolphus
+Adonis
+adopt
+adoption
+adoptive
+adore
+adorn
+adposition
+adrenal
+adrenaline
+Adrian
+Adriatic
+Adrienne
+adrift
+adroit
+adsorb
+adsorbate
+adsorption
+adsorptive
+adulate
+adult
+adulterate
+adulterous
+adultery
+adulthood
+advance
+advantage
+advantageous
+advent
+adventitious
+adventure
+adventurous
+adverb
+adverbial
+adversary
+adverse
+advert
+advertise
+advice
+advisable
+advise
+advisee
+advisor
+advisory
+advocacy
+advocate
+Aegean
+aegis
+Aeneas
+Aeneid
+aeolian
+Aeolus
+aerate
+aerial
+Aerobacter
+aerobic
+aerodynamic
+aerogene
+aeronautic
+aerosol
+aerospace
+Aeschylus
+aesthete
+aesthetic
+10th
+1st
+2nd
+3rd
+4th
+5th
+6th
+7th
+8th
+9th
+a
+AAA
+AAAS
+Aarhus
+Aaron
+AAU
+ABA
+Ababa
+aback
+abacus
+abalone
+abandon
+abase
+.H 1 "hej hopp"
+abash
+abate
+abater
+abbas
+abbe
+abbey
+abbot
+Abbott
+abbreviate
+abc
+abdicate
+abdomen
+abdominal
+abduct
+Abe
+abed
+Abel
+Abelian
+Abelson
+Aberdeen
+Abernathy
+aberrant
+aberrate
+abet
+abetted
+abetting
+abeyance
+abeyant
+.H 2 "hej hopp"
+abhorred
+abhorrent
+abide
+Abidjan
+Abigail
+abject
+ablate
+ablaze
+able
+ablution
+Abner
+abnormal
+Abo
+aboard
+abode
+abolish
+abolition
+abominable
+abominate
+aboriginal
+aborigine
+aborning
+abort
+abound
+about
+above
+aboveboard
+aboveground
+abovementioned
+abrade
+Abraham
+Abram
+Abramson
+abrasion
+abrasive
+abreact
+abreast
+abridge
+abridgment
+abroad
+abrogate
+abrupt
+abscess
+abscissa
+abscissae
+absence
+absent
+absentee
+absenteeism
+absentia
+.H 3 "hej hopp"
+absentminded
+absinthe
+absolute
+absolution
+absolve
+absorb
+absorbent
+absorption
+absorptive
+abstain
+abstention
+abstinent
+abstract
+abstracter
+abstractor
+abstruse
+absurd
+abuilding
+abundant
+abusable
+abuse
+abusive
+abut
+abutted
+abutting
+abysmal
+abyss
+Abyssinia
+AC
+academe
+academia
+academic
+academician
+academy
+Acadia
+acanthus
+Acapulco
+accede
+accelerate
+accelerometer
+accent
+accentual
+accentuate
+accept
+acceptant
+acceptor
+access
+accessible
+accession
+accessory
+.H 4 "hej hopp"
+accident
+accidental
+accipiter
+acclaim
+acclamation
+acclimate
+accolade
+accommodate
+accompaniment
+accompanist
+accompany
+accomplice
+accomplish
+accord
+accordant
+accordion
+accost
+account
+accountant
+Accra
+accredit
+accreditate
+accreditation
+accretion
+accrual
+accrue
+acculturate
+accumulate
+accuracy
+accurate
+accusation
+accusative
+accusatory
+accuse
+accustom
+ace
+acerbic
+acerbity
+acetate
+acetic
+acetone
+acetylene
+ache
+achieve
+Achilles
+aching
+achromatic
+acid
+acidic
+acidulous
+.H 5 "hej hopp"
+Ackerman
+Ackley
+acknowledge
+acknowledgeable
+ACM
+acme
+acolyte
+acorn
+acoustic
+acquaint
+acquaintance
+acquiesce
+acquiescent
+acquire
+acquisition
+acquisitive
+acquit
+acquittal
+acquitting
+acre
+acreage
+acrid
+acrimonious
+acrimony
+acrobacy
+acrobat
+acrobatic
+acronym
+acropolis
+across
+acrylate
+acrylic
+ACS
+act
+Actaeon
+actinic
+actinide
+actinium
+actinolite
+actinometer
+activate
+activation
+activism
+Acton
+actor
+actress
+Acts
+actual
+actuarial
+actuate
+.H 6 "hej hopp"
+acuity
+acumen
+acute
+acyclic
+ad
+Ada
+adage
+adagio
+Adair
+Adam
+adamant
+Adams
+Adamson
+adapt
+adaptation
+adaptive
+add
+added
+addend
+addenda
+addendum
+addict
+Addis
+Addison
+addition
+additional
+additive
+addle
+address
+addressee
+Addressograph
+adduce
+Adelaide
+Adele
+Adelia
+Aden
+adenine
+adenoma
+adenosine
+adept
+adequacy
+adequate
+adhere
+adherent
+adhesion
+adhesive
+adiabatic
+adieu
+adipic
+Adirondack
+.H 7 "hej hopp"
+adjacent
+adject
+adjectival
+adjective
+adjoin
+adjoint
+adjourn
+adjudge
+adjudicate
+adjunct
+adjust
+adjutant
+Adkins
+Adler
+administer
+administrable
+administrate
+administratrix
+admiral
+admiralty
+admiration
+admire
+admissible
+admission
+admit
+admittance
+admitted
+admitting
+admix
+admixture
+admonish
+admonition
+ado
+adobe
+adolescent
+Adolph
+Adolphus
+Adonis
+adopt
+adoption
+adoptive
+adore
+adorn
+adposition
+adrenal
+adrenaline
+Adrian
+Adriatic
+Adrienne
+adrift
+adroit
+adsorb
+adsorbate
+adsorption
+adsorptive
+adulate
+adult
+adulterate
+adulterous
+adultery
+adulthood
+advance
+advantage
+advantageous
+advent
+adventitious
+adverse
+advert
+advertise
+advice
+advisable
+advise
+advisee
+advisor
+advisory
+advocacy
+advocate
+Aegean
+aegis
+Aeneas
+Aeneid
+aeolian
+Aeolus
+aerate
+aerial
+Aerobacter
+aerobic
+aerodynamic
+aerogene
+aeronautic
+aerosol
+aerospace
+Aeschylus
+aesthete
+aesthetic
+.H 1 "hej hopp"
+acuity
+acumen
+acute
+acyclic
+ad
+Ada
+adage
+adagio
+Adair
+Adam
+adamant
+Adams
+Adamson
+adapt
+adaptation
+adaptive
+add
+added
+addend
+addenda
+addendum
+addict
+Addis
+Addison
+addition
+additional
+additive
+addle
+address
+addressee
+Addressograph
+adduce
+Adelaide
+Adele
+Adelia
+Aden
+adenine
+adenoma
+adenosine
+adept
+adequacy
+adequate
+adhere
+adherent
+adhesion
+adhesive
+adiabatic
+adieu
+adipic
+Adirondack
+.H 2 "hej hopp"
+adjacent
+adject
+adjectival
+adjective
+adjoin
+adjoint
+adjourn
+adjudge
+adjudicate
+.H 2 "hej hopp"
+adjunct
+adjust
+adjutant
+Adkins
+Adler
+administer
+administrable
+administrate
+administratrix
+admiral
+admiralty
+admiration
+admire
+admissible
+admission
+admit
+admittance
+admitted
+admitting
+admix
+admixture
+admonish
+admonition
+ado
+adobe
+adolescent
+Adolph
+Adolphus
+Adonis
+adopt
+adoption
+adoptive
+adore
+adorn
+adposition
+adrenal
+adrenaline
+Adrian
+Adriatic
+Adrienne
+adrift
+adroit
+adsorb
+adsorbate
+adsorption
+adsorptive
+adulate
+adult
+adulterate
+adulterous
+adultery
+adulthood
+advance
+advantage
+advantageous
+advent
+adventitious
+adverse
+advert
+advertise
+advice
+advisable
+advise
+advisee
+advisor
+advisory
+advocacy
+advocate
+Aegean
+aegis
+Aeneas
+Aeneid
+aeolian
+Aeolus
+aerate
+aerial
+Aerobacter
+aerobic
+aerodynamic
+aerogene
+aeronautic
+aerosol
+aerospace
+Aeschylus
+aesthete
+aesthetic
+.RP 0 1
+.TC
diff --git a/contrib/groff/contrib/mm/examples/SETR b/contrib/groff/contrib/mm/examples/SETR
new file mode 100644
index 000000000000..0a922415895e
--- /dev/null
+++ b/contrib/groff/contrib/mm/examples/SETR
@@ -0,0 +1,109 @@
+.nr Cl 6
+.INITR setr
+.H 1 " granary grand grandchild grandchildren granddaughter grandeur"
+.SETR ref1
+.H 2 "grandfather grandiloquent grandiose grandma grandmother grandnephew"
+.H 2 "grandniece grandpa grandparent grandson grandstand granite granitic"
+.H 2 "granny granola grant grantee grantor granular granulate"
+.SETR ref2
+.H 2 "granule Granville grape"
+grant
+grantee
+grantor
+granular
+granulate
+.br
+granule
+.B
+REF 9:
+.GETHN ref9
+, page number
+.GETPN ref9
+.R
+Granville
+grape
+.br
+grapefruit
+grapevine
+graph
+grapheme
+graphic
+graphite
+\fBExhibit\fP
+.GETHN ex1
+
+grapple
+grasp
+grass
+grassland
+grassy
+grata
+grate
+.H 2 "grapefruit grapevine graph grapheme graphic graphite"
+.H 3 "grapple"
+.SETR ref3
+.H 3 "grasp grass grassland grassy grata grate grateful"
+.H 3 "grater gratify gratis gratitude"
+.H 4 "gratuitous gratuity grave"
+.H 4 "gravel graven"
+.SETR ref4
+.H 1 "Graves gravestone graveyard gravid gravitate gravy gray"
+.H 2 "graybeard grayish Grayson graywacke graze grease greasy great greatcoat"
+.H 2 "greater grebe Grecian Greece greed greedy Greek green Greenbelt Greenberg"
+.H 2 "Greenblatt Greenbriar Greene greenery"
+.SETR ref5
+.H 1 "Greenfield greengrocer greenhouse greenish Greenland Greensboro"
+.H 1 "greensward greenware Greenwich greenwood Greer greet"
+grant
+grantee
+.DS
+
+Advertisements contain the only truths to be relied on in a newspaper.
+ -- Thomas Jefferson
+.EX fortune "" "" ex1
+.DE
+grantor
+granular
+.GETR ref1
+granulate
+granule
+.H 2 "Using variables"
+.B
+REF 2:
+.GETHN ref2 c
+.GETPN ref2 bbb
+\*c, page number \*[bbb]
+.R
+Granville
+grape
+grapefruit
+grapevine
+graph
+grapheme
+.H 2 "Greg gregarious Gregg Gregory gremlin grenade Grendel"
+.H 2 "Grenoble Gresham Greta Gretchen"
+.SETR ref6
+.H 2 "grew"
+.H 1 "grey greyhound greylag grid griddle gridiron grief"
+.H 1 "grievance grieve grievous griffin Griffith grill grille grilled grillwork"
+.H 3 "grim grimace Grimaldi grime Grimes Grimm grin grind grindstone"
+.H 3 "grip gripe grippe grisly grist gristmill Griswold grit"
+.SETR ref7
+.H 3 "gritty grizzle grizzly groan groat grocer grocery groggy groin"
+.H 1 "grommet groom groove grope grosbeak gross Grosset Grossman Grosvenor grotesque"
+.H 1 "Groton ground groundsel groundskeep groundwork group groupoid"
+.H 4 "grout grove grovel Grover grow growl grown grownup growth grub grubby"
+.H 4 "grudge gruesome gruff grumble Grumman grunt gryphon g's"
+.SETR ref8
+.H 4 "GSA GU Guam guanidine guanine guano guarantee guaranteeing guarantor"
+.H 4 "guaranty"
+.H 1 "guard guardhouse Guardia guardian Guatemala gubernatorial Guelph Guenther"
+.H 1 "guerdon guernsey guerrilla guess guesswork guest guffaw Guggenheim"
+.SETR ref9
+.H 1 "Guiana guidance guide guidebook guideline guidepost guiding"
+.H 1 "guignol"
+.GETR ref6
+.H 1 "guild guildhall guile Guilford guillemot guillotine guilt"
+.SETR ref10
+.H 1 "guilty guinea guise guitar gules gulf gull Gullah"
+.H 1 "gullet gullible gully gulp gum gumbo gumdrop gummy gumption"
diff --git a/contrib/groff/contrib/mm/groff_mm.man b/contrib/groff/contrib/mm/groff_mm.man
new file mode 100644
index 000000000000..6af75c66de15
--- /dev/null
+++ b/contrib/groff/contrib/mm/groff_mm.man
@@ -0,0 +1,1897 @@
+.\"
+.\" $Id: groff_mm.man,v 2.1 2001/04/13 09:03:52 wlemb Exp $
+.\"
+.de T2
+.ne 2v
+.ti -.5i
+\\$1
+.sp -1
+..
+.de T3
+.ne 2v
+.ti -.5i
+\fB\\$1\fP
+.br
+..
+.TH GROFF_MM @MAN7EXT@ "@MDATE@" "Groff Version @VERSION@"
+.SH NAME
+groff_mm \- groff mm macros
+.SH SYNOPSIS
+.B groff
+.B \-m@TMAC_M_PREFIX@m
+[
+.IR options .\|.\|.
+]
+[
+.IR files .\|.\|.
+]
+.SH DESCRIPTION
+The groff mm macros are intended to be compatible with the DWB mm macros
+with the following limitations:
+.TP
+.B \(bu
+no Bell Labs localisms implemented.
+.TP
+.B \(bu
+the macros OK and PM is not implemented.
+.TP
+.B \(bu
+groff mm does not support cut marks
+.LP
+\fBm@TMAC_M_PREFIX@m\fP is intended to be international. Therefore it is
+possible to write short national macrofiles which change all
+english text to the preferred language. Use \fBm@TMAC_M_PREFIX@mse\fP as an example.
+.\"########################################################################
+.LP
+A file called \fBlocale\fP or \fIlang\fP\fB_locale\fP is read
+after the initiation of the global variables. It is therefore
+possible to localize the macros with companyname and so on.
+.sp
+In this manual square brackets is used to show optional arguments.
+.sp 3
+\fBNumber registers and strings\fP
+.br
+Many macros can be controlled by number registers and strings.
+A number register is assigned with the \fBnr\fP command:
+.br
+\fB\&.nr\fP \fIXXX\fP \fI[+-]n [i]\fP
+.br
+\fBXXX\fP is the name of the register, \fBn\fP is the value to
+be assigned, and \fBi\fP is increment value for auto-increment.
+\fBn\fP can have a plus or minus sign as prefix if an increment
+or decrement of the current value is wanted. (Auto-increment or decrement
+occurs if the number register is used with a plus or minus sign,
+\fB\en+[XXX]\fP or \fB\en-[XXX]\fP.)
+.sp
+Strings is defined with \fBds\fP.
+.br
+\fB\&.ds\fP \fIYYY string\fP
+.br
+The string is assigned everything to the end of the line, even blanks.
+Initial blanks in \fIstring\fP should be prefixed with
+a double-quote. (Strings are used in the text as \fB\e*[YYY]\fP.)
+.sp
+\fBSpecial formatting of number registers\fP
+.br
+A number register is printed with normal digits if no format has been
+given.
+Set the format with \fBaf\fP:
+.br
+\fB\&.af\fP \fIR c\fP
+.br
+\fIR\fP is the name of the register, \fIc\fP is the format.
+.in +.5i
+.T2 \fBForm\fP
+\fBSequence\fP
+.T2 1
+0, 1, 2, 3, ...
+.T2 001
+000, 001, 002, 003, ...
+.T2 i
+0, i, ii, iii, iv, ...
+.T2 I
+0, I, II, III, IV, ...
+.T2 a
+0, a, b, c, ..., z, aa, ab, ...
+.T2 A
+0, A, B, C, ..., Z, AA, AB, ...
+.in
+
+.LP
+\fBMacros:\fP
+.TP
+.B ")E level text"
+Adds \fBtext\fP (heading-text) to the table of contents
+with \fBlevel\fP either 0
+or between 1-7. See also \fB.H\fP. This macro is used for customized
+table of contents.
+.TP
+.B "1C [1]"
+Begin one column processing. An \fB1\fP as argument disables the page-break.
+Use wide footnotes, small footnotes may be overprinted.
+.TP
+.B 2C
+Begin two column processing. Splits the page in two columns. It is
+a special case of \fBMC\fP. See also \fB1C\fP.
+.TP
+.B AE
+Abstract end, see \fBAS\fP.
+.TP
+.B "AF [name of firm]"
+Authors firm, should be called before \fBAU\fP, see also \fBCOVER\fP.
+.TP
+.B "AL [type [text-indent [1]]]"
+Start autoincrement list. Items are numbered beginning on one.
+The \fItype\fP argument controls the type of numbers.
+.in +.5i
+.T2 Arg
+Description
+.T2 1
+Arabic (the default)
+.T2 A
+Upper-case letters (A-Z)
+.T2 a
+Lower-case letters (a-z)
+.T2 I
+Upper-case roman
+.T2 i
+Lower-case roman
+.in
+\fIText-indent\fP sets the indent and overrides \fBLi\fP.
+A third argument will prohibit printing of a blank line before each
+item.
+.TP
+.B "APP name text"
+Begin an appendix with name \fIname\fP. Automatic naming occurs if
+\fIname\fP is "". The appendixes starts with \fBA\fP if auto is used.
+An new page is ejected, and a header is also produced if the number
+variable \fBAph\fP is non-zero. This is the default.
+The appendix always appear in the 'List of contents' with correct
+pagenumber. The name \fIAPPENDIX\fP can be changed by setting
+the string \fBApp\fP to the desired text.
+The string \fBApptxt\fP contains the current appendix text.
+.TP
+.B "APPSK name pages text"
+Same as \fB.APP\fP, but the pagenr is incremented with \fIpages\fP.
+This is used when diagrams or other non-formatted documents are
+included as appendixes.
+.TP
+.B "AS [arg [indent]]"
+Abstract start. Indent is specified in 'ens', but scaling is allowed.
+Argument \fIarg\fP controls where the abstract is printed.
+.in +.5i
+.T2 Arg
+Placement
+.T2 0
+Abstract will be printed on page 1 and on the cover sheet if
+used in the released-paper style (\fBMT 4\fP), otherwise
+it will be printed on page 1 without a cover sheet.
+.T2 1
+Abstract will only be printed on the cover sheet (\fBMT 4\fP only).
+.T2 2
+Abstract will be printed only on the cover sheet (other than \fBMT 4\fP only).
+The cover sheet is printed without need for \fBCS\fP.
+.in
+Abstract is not printed at all in external letters (\fBMT 5\fP).
+The \fIindent\fP controls the indentation of both margins, otherwise
+will normal text indent be used.
+.TP
+.B "AST [title]"
+Abstract title. Default is \fBABSTRACT\fP.
+Sets the text above the abstract text.
+.TP
+.B "AT title1 [title2 ...]"
+Authors title. \fBAT\fP must appear just after each \fBAU\fP.
+The title will show up after the name in the signature block.
+.TP
+.B "AU [name [initials [loc [dept [ext [room [arg [arg [arg]]]]]]]]]"
+Author information, specifies the author of the memo or paper, and
+will be printed on the cover sheet and on other similar places.
+\fBAU\fP must not appear before \fBTL\fP. The author information
+can contain initials, location, department, telephone extension,
+room number or name and up to three extra arguments.
+.TP
+.B "AV [name [1]]"
+Approval signature, generates an approval line with place for
+signature and date. The string \fBAPPROVED:\fP can be changed
+with variable \fBLetapp\fP, and the string \fBDate\fP in \fBLetdate\fP.
+.TP
+.B "AVL [name]"
+Letter signature, generates a line with place for signature.
+.TP
+.B "B [bold-text [prev-font-text [bold...]]]"
+Begin boldface.
+No limit on the number of arguments.
+All arguments will be concatenated to one word, the first, third and so
+on will be printed in boldface.
+.TP
+.B B1
+Begin box (as the ms macro).
+Draws a box around the text. The text will be indented one character,
+and the right margin will be one character shorter.
+.TP
+.B B2
+End box. Finish the box started by \fBB1\fP.
+.TP
+.B BE
+End bottom block, see \fBBS\fP.
+.TP
+.B "BI [bold-text [italic-text [bold-text [...]]]]"
+Bold-italic.
+No limit on the number of arguments, see \fBB\fP.
+.TP
+.B "BL [text-indent [1]]"
+Start bullet list, initialize a list with a bullet and a space
+in the beginning of each list item (see \fBLI\fP).
+\fIText-indent\fP
+overrides the default indentation of the list items set by
+number register \fBPi\fP.
+A third argument will prohibit printing of a blank line before each
+item.
+.TP
+.B "BR [bold-text [roman-text [bold-text [...]]]]"
+Bold-roman.
+No limit on the number of arguments.
+.TP
+.B BS
+Bottom block start. Begins the definition of a text block which is
+printed at the bottom of each page. Block ends with \fBBE\fP.
+.TP
+.B "BVL text-indent [mark-indent [1]]"
+Start of
+broken variable-item list.
+Broken variable-item list has no fixed mark, it assumes that
+every \fBLI\fP has a mark instead.
+The text will always begin at the next line after the mark.
+\fIText-indent\fP sets the indent to the text, and \fImark-indent\fP
+the distance from the current indent to the mark.
+A third argument will prohibit printing of a blank line before each
+item.
+.TP
+.B "COVER [arg]"
+\&\fBCOVER\fP begins a coversheet definition. It is important
+that \fB.COVER\fP appears before any normal text.
+\&\fB.COVER\fP uses \fIarg\fP to build the filename
+@TMAC_MDIR@/\fIarg\fP.cov. Therefore it is possible to create unlimited
+types of coversheets.
+\fIms.cov\fP is supposed to look like the \fBms\fP coversheet.
+\&\fB.COVER\fP requires a \fB.COVEND\fP at the end of the coverdefinition.
+Always use this order of the covermacros:
+.nf
+\&.COVER
+\&.TL
+\&.AF
+\&.AU
+\&.AT
+\&.AS
+\&.AE
+\&.COVEND
+.fi
+However, only \fB.TL\fP and \fB.AU\fP are required.
+.TP
+.B COVEND
+This finish the cover description and prints the cover-page.
+It is defined in the cover file.
+.TP
+.B DE
+Display end. Ends a block of text, display, that begins
+with \fBDS\fP or \fBDF\fP.
+.TP
+.B "DF [format [fill [rindent]]]"
+Begin floating display (no nesting allowed).
+A floating display is saved in a queue and is printed in the
+order entered. \fIFormat\fP, \fIfill\fP and \fIrindent\fP is the same
+as in \fBDS\fP.
+Floating displays are controlled by the two number registers \fBDe\fP
+and \fBDf\fP.
+.sp
+\fBDe register\fP
+.in +.5i
+.T2 0
+Nothing special, this is the default.
+.T2 1
+A page eject will occur after each printed display, giving only
+one display per page and no text following it.
+.in
+.sp
+\fBDf register\fP
+.in +.5i
+.T2 0
+Displays are printed at the end of each section (when section-page
+numbering is active) or at the end of the document.
+.T2 1
+A new display will be printed on the current page if there is enough
+space, otherwise it will be printed at the end of the document.
+.T2 2
+One display will be printed at the top of each page or column
+(in multi-column mode).
+.T2 3
+Print one display if there is enough space for it, otherwise it will
+be printed at the top of the next page or column.
+.T2 4
+Print as many displays that will fit in a new page or column.
+A page break will occur between each display if \fBDe\fP is not zero.
+.T2 5
+Fill the current page with displays and the rest beginning at a new page
+or column. (This is the default.)
+A page break will occur between each display
+if \fBDe\fP is not zero.
+.in
+.TP
+.B "DL [text-indent [1 [1]]]"
+Dash list start. Begins a list where each item is printed
+after a dash. \fIText-indent\fP changes the default indentation
+of the list items set by
+number register \fBPi\fP.
+A second argument prevents the empty line between each list item
+to be printed. See \fBLI\fP.
+A third argument will prohibit printing of a blank line before each
+item.
+.TP
+.B "DS [format [fill [rindent]]]"
+Static display start.
+Begins collection of text until \fBDE\fP.
+The text is printed together on the same page, unless it is longer
+than the height of the page.
+\fBDS\fP can be nested to a unlimited depth (reasonably :-).
+.sp
+\fBformat\fP
+.in +.5i
+.ds x "
+.T2 """"""
+No indentation.
+.T2 none
+No indentation.
+.T2 L
+No indentation.
+.T2 I
+Indent text with the value of number register \fBSi\fP.
+.T2 C
+Center each line
+.T2 CB
+Center the whole display as a block.
+.T2 R
+Right adjust the lines.
+.T2 RB
+Right adjust the whole display as a block
+.in
+.sp
+L, I, C and CB can also be specified as 0, 1, 2 or 3 for compatibility
+reasons. (Don't use it. :-)
+.sp
+\fBfill\fP
+.in +.5i
+.T2 """"""
+Line-filling turned off.
+.T2 none
+Line-filling turned off.
+.T2 N
+Line-filling turned off.
+.T2 F
+Line-filling turned on.
+.in
+.sp
+N and F can also be specified as 0 or 1.
+An empty line will normally be printed before and after the
+display. Setting number register \fBDs\fP to 0 will prevent this.
+\fIRindent\fP shortens the line length by that amount.
+.TP
+.B "EC [title [override [flag [refname]]]]"
+Equation title.
+Sets a title for an equation. The \fIoverride\fP argument
+change the numbering.
+.sp
+\fBflag\fP
+.in +.5i
+.T2 none
+\fIoverride\fP is a prefix to the number.
+.T2 0
+\fIoverride\fP is a prefix to the number.
+.T2 1
+\fIoverride\fP is a suffix to the number.
+.T2 2
+\fIoverride\fP replaces the number.
+.in
+\fBEC\fP uses the number register \fBEc\fP as counter.
+It is possible to use \fB.af\fP to change the format of the number.
+If number register \fBOf\fP is 1, then the format of title
+will use a dash instead of a dot after the number.
+.br
+The string \fBLe\fP controls the title of the
+List of Equations, default is \fILIST OF EQUATIONS\fP.
+The List of Equations will only be printed if number register \fBLe\fP
+is 1, default 0.
+The string \fBLiec\fP contains the word \fIEquation\fP, wich
+is printed before the number.
+If \fIrefname\fP is used, then the equation number is saved with
+\&\fB.SETR\fP, and can be retrieved with \fB.GETST\fP \fIrefname\fP.
+.br
+Special handling of the title will occur if
+\fBEC\fP is used inside \fBDS\fP/\fBDE\fP, it will not be
+affected by the format of \fBDS\fP.
+.TP
+.B "EF [arg]"
+Even-page footer, printed just above the normal page footer
+on even pages, see \fBPF\fP.
+.TP
+.B "EH [arg]"
+Even-page header, printed just below the normal page header
+on even pages, see \fBPH\fP.
+.TP
+.B EN
+Equation end, see \fBEQ\fP.
+.TP
+.B EOP
+End of page user-defined macro. This macro will be called
+instead of the normal printing of the footer. The macro
+will be executed in a separate environment, without any
+trap active. See \fBTP\fP.
+.sp
+\fBStrings available to EOP\fP
+.in +.5i
+.T2 EOPf
+Argument from \fBPF\fP.
+.T2 EOPef
+Argument from \fBEF\fP.
+.T2 EOPof
+Argument from \fBOF\fP.
+.in
+.TP
+.B "EPIC width height [name]"
+\fBEPIC\fP draws a box with the given \fIwidth\fP and \fIheight\fP, it will
+also print the text \fIname\fP or a default string if
+\fIname\fP is not specified..
+This is used to include external pictures, just give the size
+of the picture.
+See \fBPIC\fP
+.TP
+.B "EQ [label]"
+Equation start.
+\fBEQ\fP/\fBEN\fP are the delimiters for equations written for \fBeqn\fP.
+\fBEQ\fP/\fBEN\fP must be inside a \fBDS\fP/\fBDE\fP-pair, except
+when \fBEQ\fP is only used to set options in \fBeqn\fP.
+The \fIlabel\fP will appear at the right margin of the equation, unless
+number register \fBEq\fP is 1. Then the label will appear at the
+left margin.
+.TP
+.B "EX [title [override [flag [refname]]]]"
+Exhibit title, arguments are the same as for \fBEC\fP.
+\fBEX\fP uses the number register \fBEx\fP as counter.
+The string \fBLx\fP controls the title of the
+List of Exhibits, default is \fILIST OF EXHIBITS\fP.
+The List of Exhibits will only be printed if number register \fBLx\fP
+is 1, default 1.
+The string \fBLiex\fP contains the word \fIExhibit\fP, which
+is printed before the number.
+If \fIrefname\fP is used, then the exhibit number is saved with
+\&\fB.SETR\fP, and can be retrieved with \fB.GETST\fP \fIrefname\fP.
+.br
+Special handling of the title will occur if
+\fBEX\fP is used inside \fBDS\fP/\fBDE\fP, it will not be
+affected by the format of \fBDS\fP.
+.TP
+.B "FC [closing]"
+Prints \fIYours\ very\ truly,\fP as a formal closing of a letter or
+memorandum. The argument replaces the defualt string.
+The default is stored in string variable \fBLetfc\fP.
+.TP
+.B "FD [arg [1]]"
+Footnote default format.
+Controls the hyphenation (hyphen), right margin justification (adjust),
+indentation of footnote text (indent). It can also change the label
+justification (ljust).
+.sp
+.ne 14v
+.nf
+.ta .5i +.8i +.8i +.8i +.8i
+\fBarg hyphen adjust indent ljust\fP
+0 no yes yes left
+1 yes yes yes left
+2 no no yes left
+3 yes no yes left
+4 no yes no left
+5 yes yes no left
+6 no no no left
+7 yes no no left
+8 no yes yes right
+9 yes yes yes right
+10 no no yes right
+11 yes no yes right
+.sp
+.fi
+.DT
+Argument greater than or equal to 11 is considered as arg 0.
+Default for m@TMAC_M_PREFIX@m is 10.
+.TP
+.B FE
+Footnote end.
+.TP
+.B "FG [title [override [flag [refname]]]]"
+Figure title, arguments are the same as for \fBEC\fP.
+\fBFG\fP uses the number register \fBFg\fP as counter.
+The string \fBLf\fP controls the title of the
+List of Figures, default is \fILIST OF FIGURES\fP.
+The List of Figures will only be printed if number register \fBLf\fP
+is 1, default 1.
+The string \fBLifg\fP contains the word \fIFigure\fP, wich
+is printed before the number.
+If \fIrefname\fP is used, then the figure number is saved with
+\&\fB.SETR\fP, and can be retrieved with \fB.GETST\fP \fIrefname\fP.
+.br
+Special handling of the title will occur if
+\fBFG\fP is used inside \fBDS\fP/\fBDE\fP, it will not be
+affected by the format of \fBDS\fP.
+.TP
+.B "FS [label]"
+Footnote start.
+The footnote is ended by \fBFE\fP. Footnotes is normally automatically
+numbered, the number is available in string \fBF\fP.
+Just add \fB\e*F\fP in the text. By adding \fIlabel\fP, it is possible
+to have other number or names on the footnotes.
+Footnotes in displays is now possible.
+An empty line separates footnotes, the height of the line
+is controlled by number register \fBFs\fP, default value is 1.
+.TP
+.B "GETHN refname [varname]"
+Includes the headernumber where the corresponding \fBSETR\fP \fIrefname\fP
+was placed. Will be X.X.X. in pass 1. See \fBINITR\fP.
+If \fIvarname\fP is used, \fBGETHN\fP sets the stringvariable \fIvarname\fP to the
+headernumber.
+.TP
+.B "GETPN refname [varname]"
+Includes the pagenumber where the corresponding \fBSETR\fP \fIrefname\fP
+was placed. Will be 9999 in pass 1. See \fBINITR\fP.
+If \fIvarname\fP is used, \fBGETPN\fP sets the stringvariable \fIvarname\fP
+to the pagenumber.
+.TP
+.B "GETR refname"
+Combines \fBGETHN\fP and \fBGETPN\fP with the text 'chapter' and ', page'.
+The string \fIQrf\fP contains the text for reference:
+.ti +.5i
+\&.ds Qrf See chapter \e\e*[Qrfh], page \e\e*[Qrfp].
+.br
+\fIQrf\fP may be changed to support other languages.
+Strings \fIQrfh\fP and \fIQrfp\fP are set by \fBGETR\fP
+and contains the page and headernumber.
+.TP
+.B "GETST refname [varname]"
+Includes the string saved with the second argument to \fB.SETR\fP.
+Will be dummystring in pass 1.
+If varname is used, \fBGETST\fP sets the stringvariable \fIvarname\fP to the
+saved string. See \fBINITR\fP.
+.TP
+.B "H level [heading-text [heading-suffix]]"
+Numbered section heading.
+Section headers can have a level between 1 and 7, level 1 is the
+top level. The text is given in \fIheading-text\fP, and must be
+surrounded by double quotes if it contains spaces.
+\fBHeading-suffix\fP is added to the header in the text but not in
+the table of contents. This is normally used for footnote marks
+and similar things. Don't use \fB\e*F\fP in \fIheading-suffix\fP, it won't
+work. A manual label must be used, see \fBFS\fP.
+.sp
+An eventual paragraph, \fBP\fP, directly after \fBH\fP will be
+ignored, \fBH\fP is taking care of spacing and indentation.
+.sp
+\fBPage ejection before heading\fP
+.br
+Number register \fBEj\fP controls page ejection before the heading.
+Normally, a level one heading gets two blank lines before it, higher levels
+gets only one. A new page is ejected before each
+first-level heading if number register \fBEj\fP is 1.
+All levels below or equal the value of \fBEj\fP gets a new page.
+Default value for \fBEj\fP is 0.
+.sp
+\fBHeading break level\fP
+.br
+A line break occurs after the heading if the heading level is less
+or equal to number register \fBHb\fP.
+Default value 2.
+.sp
+\fBHeading space level\fP
+.br
+A blank line is inserted after the heading if the heading level is less
+or equal to number register \fBHs\fP.
+Default value 2.
+.sp
+Text will follow the heading on the same line if the level is greater
+than both \fBHb\fP and \fBHs\fP.
+.sp
+\fBPost-heading indent\fP
+.br
+Indentation of the text after the heading is controlled by number
+register \fBHi\fP, default value 0.
+.sp
+\fBHi\fP
+.in +.5i
+.T2 0
+The text will be left-justified.
+.T2 1
+Indentation of the text will follow the value of number register \fBPt\fP,
+see \fBP\fP.
+.T2 2
+The text will be lined up with the first word of the heading.
+.in
+.sp
+\fBCentered section headings\fP
+.br
+All headings whose level is equal or below number register \fBHc\fP
+and also less than or equal to \fBHb\fP or \fBHs\fP
+is centerered.
+.sp
+\fBFont control of the heading\fP
+.br
+The font of each heading level is controlled by string \fBHF\fP.
+It contains a fontnumber or fontname for each level. Default
+is \fB2\ 2\ 2\ 2\ 2\ 2\ 2\fP (all headings in italic).
+Could also be written as \fBI\ I\ I\ I\ I\ I\ I\fP.
+All omitted values are presumed to be a 1.
+.sp
+\fBPoint size control\fP.
+.br
+String \fBHP\fP controls the pointsize of each heading, in the
+same way as \fBHF\fP controls the font.
+A value of 0 selects the default point size.
+Default value is \fB0\ 0\ 0\ 0\ 0\ 0\ 0\fP. Beware that only the
+point size changes, not the vertical size.
+That can be controlled by the user specified macro \fBHX\fP and/or
+\fBHZ\fP.
+.sp
+\fBHeading counters\fP
+.br
+Seven number registers, named \fBH1\fP thru \fBH7\fP contains
+the counter for each heading level.
+The values are printed using arabic numerals, this can be changed
+with the macro \fBHM\fP (see below).
+All marks are concatenated before printing. To avoid this, set
+number register \fBHt\fP to 1. That will only print the current
+heading counter at each heading.
+.sp
+\fBAutomatic table of contents\fP
+.br
+All headings whose level is equal or below number register \fBCl\fP
+is saved to be printed in the table of contents. Default value is 2.
+.sp
+\fBSpecial control of the heading, user-defined macros\fP.
+.br
+These macros can be defined by the user to get a finer control
+of vertical spacing, fonts or other features.
+Argument \fIlevel\fP is the level-argument to \fBH\fP, but
+0 for unnumbered headings (see \fBHU\fP).
+Argument \fIrlevel\fP is the real level, it is
+set to number register \fBHu\fP for unnumbered headings.
+Argument \fIheading-text\fP is the text argument to \fBH\fP and \fBHU\fP.
+.sp
+\fBHX\ \fP\fIlevel\ rlevel\ heading-text\fP
+.br
+\fBHX\fP is called just before the printing of the heading.
+The following register is available for \fBHX\fP.
+\fBHX\fP may alter \fB}0\fP, \fB}2\fP and \fB;3\fP.
+.in +.5i
+.T3 "string }0"
+Contains the heading mark plus two spaces if \fIrlevel\fP is non-zero,
+otherwise empty.
+.T3 "register ;0"
+Contains the position of the text after the heading.
+0 means that the text should follow the heading on the same line, 1
+means that a line break should occur before the text and
+2 means that a blank line should separate the heading and the text.
+.T3 "string }2"
+Contains two spaces if register \fB;0\fP is 0. It is used to
+separate the heading from the text. The string
+is empty if \fB;0\fP is non-zero.
+.T3 "register ;3"
+Contains the needed space in units after the heading.
+Default is 2v.
+
+Can be used to change things like numbering (\fB}0\fP),
+vertical spacing (\fB}2\fP)
+and the needed space after the heading.
+.in
+.sp
+\fBHY\ \fP\fIdlevel\ rlevel\ heading-text\fP
+.br
+\fBHY\fP is called after size and font calculations and
+might be used to change indentation.
+.sp
+\fBHZ\ \fP\fIdlevel\ rlevel\ heading-text\fP
+.br
+\fBHZ\fP is called after the printing of the heading, just before
+\fBH\fP or \fBHU\fP exits.
+Could be used to change the page header according to the section heading.
+.TP
+.B "HC [hyphenation-character]"
+Set hyphenation character.
+Default value is \e%.
+Resets to the default if called without argument.
+Hyphenation can be turned off by setting number
+register \fBHy\fP to 0 in the beginning of the file.
+.TP
+.B "HM [arg1 [arg2 [... [arg7]]]]"
+Heading mark style.
+Controls the type of marking for printing of the heading counters.
+Default is 1 for all levels.
+.sp
+\fBArgument\fP
+.in +.5i
+.T2 1
+Arabic numerals.
+.T2 0001
+Arabic numerals with leading zeroes, one or more.
+.T2 A
+Upper-case alphabetic
+.T2 a
+Lower-case alphabetic
+.T2 I
+Upper-case roman numerals
+.T2 i
+lower-case roman numerals
+.T2 \fIempty\fP
+Arabic numerals.
+.in
+.TP
+.B "HU heading-text"
+Unnumbered section header.
+\fBHU\fP behavies like \fBH\fP at the level in number register \fBHu\fP.
+See \fBH\fP.
+.TP
+.B "HX dlevel rlevel heading-text"
+Userdefined heading exit.
+Called just before printing the header.
+See \fBH\fP.
+.TP
+.B "HY dlevel rlevel heading-text"
+Userdefined heading exit.
+Called just before printing the header.
+See \fBH\fP.
+.TP
+.B "HZ dlevel rlevel heading-text"
+Userdefined heading exit.
+Called just after printing the header.
+See \fBH\fP.
+.TP
+.B "I [italic-text [prev-font-text [italic-text [...]]]]"
+Italic.
+Changes the font to italic if called without arguments.
+With one argument it will set the word in italic.
+With two argument it will concatenate them and set the first
+word in italic and the second in the previous font.
+There is no limit on the number of argument, all will be concatenated.
+.TP
+.B "IA [addressee-name [title]]"
+Begins specification of the addressee and addressee's address in
+letter style.
+Several names can be specified with empty \fBIA\fP/\fBIE\fP-pairs, but
+only one address.
+See \fBLT\fP.
+.TP
+.B "IB [italic-text [bold-text [italic-text [...]]]]"
+Italic-bold.
+Even arguments is printed in italic, odd in boldface.
+See \fBI\fP.
+.TP
+.B IE
+Ends the address-specification after \fPIA\fP.
+.TP
+.B "INITI type filename [macro]"
+Initialize the new index system, sets the filename to collect
+index lines in with \fBIND\fP. Argument \fItype\fP selects
+the type of index, page number, header marks or both.
+The default is \fIN\fP.
+
+It is also possible to create a macro that is responsible
+for formatting each row. Add the name of the macro as argument 3.
+The macro will be called with the index as argument(s).
+.sp
+\fBtype\fP
+.in +.5i
+.T2 N
+Page numbers
+.T2 H
+Header marks
+.T2 B
+Both page numbers and header marks, tab separated
+.in
+.TP
+.B "INITR filename"
+Initialize the refencemacros. References will be written to
+\fIfilename.tmp\fP and \fIfilename.qrf\fP. Requires two passes with groff.
+The first looks for references and the second includes them.
+\fBINITR\fP can be used several times, but it is only the first
+occurrence of \fBINITR\fP that is active.
+Option \fB-U\fP might be needed if \fBunsafe\fP-errors occur.
+See also \fBSETR\fP, \fBGETPN\fP and \fBGETHN\fP.
+.TP
+.B "IND arg1 [arg2 [...]]"
+\fBIND\fP writes a line in the index file selected by \fBINITI\fP
+with all arguments and the page number or header mark separated by tabs.
+.in +.5i
+\fBExamples\fP
+.br
+arg1\etpage number
+.br
+arg1\etarg2\etpage number
+.br
+arg1\etheader mark
+.br
+arg1\etpage number\etheader mark
+.in
+.TP
+.B "INDP"
+\fBINDP\fP prints the index by running the command specified
+by string variable \fBIndcmd\fP, normally \fIsort\ -t\et\fP.
+\fBINDP\fP reads the output from the command to form
+the index, normally in two columns (can be changed by defining \fBTYIND\fP).
+The index is printed with string variable \fBIndex\fP as header,
+default is \fBINDEX\fP. One-column processing is
+returned after the list. \fBINDP\fP will call the
+user-defined macros \fBTXIND\fP, \fBTYIND\fP and \fBTZIND\fP if defined.
+\fBTXIND\fP is called before printing \fBINDEX\fP, \fBTYIND\fP
+is called instead of printing \fBINDEX\fP. \fBTZIND\fP is called
+after the printing and should take care of restoring to normal
+operation again.
+.TP
+.B "ISODATE [0]"
+\fBISODATE\fP changes the predefined date string in \fBDT\fP to
+ISO-format, ie YYYY-MM-DD. This can also be done by
+adding \fB-rIso=1\fP on the command line.
+Reverts to old date format if argument is \fB0\fP.
+.TP
+.B "IR [italic-text [roman-text [italic-text [...]]]]"
+Italic-roman.
+Even arguments is printed in italic, odd in roman.
+See \fBI\fP.
+.TP
+.B "LB text-indent mark-indent pad type [mark [LI-space [LB-space]]]"
+List begin macro.
+This is the common macro used for all lists.
+\fIText-indent\fP is the number of spaces to indent the text from the
+current indent.
+.sp
+\fIPad\fP and \fImark-indent\fP controls where to put the mark.
+The mark is placed within the mark area, and \fImark-indent\fP
+sets the number of spaces before this area. It is normally 0.
+The mark area ends where the text begins. The start of the text
+is still controlled by \fItext-indent\fP.
+.sp
+The mark is left justified whitin the mark area if \fIpad\fP is 0.
+If \fIpad\fP is greater than 0, then \fImark-indent\fP is ignored, and
+the mark is placed \fIpad\fP spaces before the text.
+This will right justify the mark.
+.sp
+If \fItype\fP is 0 the list will have either a hanging indent or, if
+argument \fImark\fP is given, the string \fImark\fP as mark.
+.sp
+If \fItype\fP is greater than 0 automatic numbering will occur, arabic
+if \fImark\fP is empty. \fIMark\fP can then be any of \fB1\fP, \fBA\fP,
+\fBa\fP, \fBI\fP or \fBi\fP.
+.sp
+\fIType\fP selects one of six possible ways to display the mark.
+.br
+\fBtype\fP
+.in +.6i
+.T2 1
+x.
+.T2 2
+x)
+.T2 3
+(x)
+.T2 4
+[x]
+.T2 5
+<x>
+.T2 6
+{x}
+.in
+.sp
+Every item in the list will get \fILI-space\fP number of blank lines
+before them. Default is 1.
+.sp
+\fBLB\fP itself will print \fILB-space\fP blank lines. Default is 0.
+.TP
+.B "LC [list-level]"
+List-status clear.
+Terminates all current active lists down to \fIlist-level\fP, or 0
+if no argmuent is given. This is used by \fBH\fP to clear any
+active list.
+.TP
+.B "LE [1]"
+List end.
+Terminate the current list. \fBLE\fP outputs a blank line
+if an argument is given.
+.TP
+.B "LI [mark [1]]"
+List item precedes every item in a list. Without argument \fBLI\fP
+will print the mark determined by the current list type. By giving
+\fBLI\fP one argument, it will use that as the mark instead.
+Two arguments to \fBLI\fP will make \fImark\fP a prefix to
+the current mark.
+There will be no separating space between the prefix
+and the mark if the second argument is \fB2\fP instead of \fB1\fP.
+This behaviour can also be achieved by setting number register
+\fBLimsp\fP to zero.
+A zero length \fImark\fP will make a hanging
+indent instead.
+.sp
+A blank line is normally printed before the list item. This behaviour
+can be controlled by number register \fBLs\fP. Pre-spacing
+will occur for each list-level less than or equal to \fBLs\fP.
+Default value is 99. (Nesting of lists is unlimited. :-)
+.sp
+The indentation can be changed thru number register \fBLi\fP.
+Default is 6.
+.sp
+All lists begins with a list initialization macro, \fBLB\fP.
+There are, however, seven predefined listtypes to
+make lists easier to use. They all call \fBLB\fP with different
+default values.
+.in +.5i
+.T2 \fBAL\fP
+Automatically Incremented List
+.T2 \fBML\fP
+Marked List
+.T2 \fBVL\fP
+Variable-Item List
+.T2 \fBBL\fP
+Bullet List
+.T2 \fBDL\fP
+Dash List
+.T2 \fBRL\fP
+Reference List
+.T2 \fBBVL\fP
+Broken Varable List.
+.in
+These lists are described at other places in this manual. See also \fBLB\fP.
+.TP
+.B "LT [arg]"
+Formats a letter in one of four different styles depending
+on the argument.
+See also \fBINTERNALS\fP.
+.in +.5i
+.T2 \fBArg
+Style\fP
+.T2 BL
+Blocked. Date line, return address, writer's address and closing
+begins at the center of the line. All other lines begin at the left margin.
+.T2 SB
+Semi-blocked. Same as blocked, except that the first line in every
+paragraph is indented five spaces.
+.T2 FB
+Full-blocked. All lines begin at the left margin.
+.T2 SP
+Simplified. Almost the same as the full-blocked style. Subject and
+the writer's identification are printed in all-capital.
+.in
+.TP
+.B "LO type [arg]"
+Specify options in letter (see \fB.LT\fP).
+This is a list of the standard options:
+.in +.5i
+.T2 CN
+Confidential notation. Prints \fBCONFIDENTIAL\fP on the second line
+below the date line. Any argument replaces \fBCONFIDENTIAL\fP.
+See also string variable \fBLetCN\fP.
+.T2 RN
+Reference notation. Prints \fBIn reference to:\fP and the argument
+two lines below the date line.
+See also string variable \fBLetRN\fP.
+.T2 AT
+Attention. Prints \fBATTENTION:\fP and the argument below the inside address.
+See also string variable \fBLetAT\fP.
+.T2 SA
+Salutation. Prints \fBTo Whom It May Concern:\fP or the argument if
+it was present. The salutation is printed two lines below the inside address.
+See also string variable \fBLetSA\fP.
+.T2 SJ
+Subject line. Prints the argument as subject prefixed with \fBSUBJECT:\fP
+two lines below the inside address, except in letter type \fBSP\fP.
+Then the subject is printed in all-captial without any prefix.
+See also string variable \fBLetSJ\fP.
+.in
+.TP
+.B "MC column-size [column-separation] "
+Begin multiple columns. Return to normal with \fB1C\fP.
+\fBMC\fP will create as many columns as the current line length permits.
+\fIColumn-size\fP is the width of each column, and \fIcolumn-separation\fP
+is the space between two columns. Default separation is the
+column-size/15.
+See also \fB1C\fP.
+.TP
+.B "ML mark [text-indent [1]]"
+Marked list start. The \fImark\fP argument will be printed before
+each list item.
+\fIText-indent\fP sets the indent and overrides \fBLi\fP.
+A third argument will prohibit printing of a blank line before each
+item.
+.TP
+.B "MT [arg [addressee]]"
+Memorandum type.
+The \fIarg\fP is part of a filename in \fI@TMAC_MDIR@/*.MT\fP.
+Memorandum type 0 thru 5 are supported, including \fI"string"\fP.
+\fIAddressee\fP just sets a variable, used in the AT&T macros.
+.br
+\fBarg\fP
+.in +.5i
+.T2 0
+Normal memorandum, no type printed
+.T2 1
+Memorandum with \fIMEMORANDUM FOR FILE\fP printed
+.T2 2
+Memorandum with \fIPROGRAMMER'S NOTES\fP printed
+.T2 3
+Memorandum with \fIENGINEER'S NOTES\fP printed
+.T2 4
+Released paper style
+.T2 5
+External letter style
+.in
+See also \fBCOVER\fP/\fBCOVEND\fP, a more flexible type of front page.
+.TP
+.B "MOVE y-pos [x-pos [line-length]]"
+Move to a position, pageoffset set to \fIx-pos\fP.
+If \fIline-length\fP is not given, the difference between
+current and new pageoffset is used.
+Use \fBPGFORM\fP without arguments to return to normal.
+.TP
+.B "MULB cw1 space1 [cw2 space2 [cw3 ...]]"
+Begin a special multi-column mode. Every columns width must be specified.
+Also the space between the columns must be specified. The last column
+does not need any space-definition. \fBMULB\fP starts a diversion and \fBMULE\fP
+ends the diversion and prints the columns.
+The unit for width and space is 'n', but \fBMULB\fP accepts all
+normal unitspecifications like 'c' and 'i'.
+\fBMULB\fP operates in a separate environment.
+.TP
+.B "MULN"
+Begin the next column. This is the only way to switch column.
+.TP
+.B "MULE"
+End the multi-column mode and print the columns.
+.TP
+.B "nP [type]"
+Print numbered paragraph with header level two. See \fB.P\fP.
+.TP
+.B "NCOL"
+Force printing to the next column, don't use this together with
+the \fBMUL*\fP macros, see \fB2C\fP.
+.TP
+.B "NS [arg [1]]"
+Prints different types of notations. The argument selects between
+the predefined type of notations. If the second argument is available,
+then the argument becomes the entire notation.
+If the argument doesn't exist in the predefined, it will be
+printed as \fBCopy (\fP\fIarg\fP\fB) to\fP.
+It is possible to add more standard notations, see the string variable
+\fBLetns\fP and \fBLetnsdef\fP.
+.nf
+.in +.5i
+.T2 \fBArg
+Notation\fP
+.T2 \fInone\fP
+Copy To
+.T2 """""
+Copy To
+.T2 1
+Copy To (with att.) to
+.T2 2
+Copy To (without att.) to
+.T2 3
+Att.
+.T2 4
+Atts.
+.T2 5
+Enc.
+.T2 6
+Encs.
+.T2 7
+Under separate cover
+.T2 8
+Letter to
+.T2 9
+Memorandum to
+.T2 10
+Copy (with atts.) to
+.T2 11
+Copy (without atts.) to
+.T2 12
+Abstract Only to
+.T2 13
+Complete Memorandum to
+.T2 14
+CC
+.in
+.fi
+.TP
+.B "ND new-date"
+New date. Override the current date. Date is not
+printed if \fInew-date\fP is an empty string.
+.TP
+.B "OF [arg]"
+Odd-page footer, a line printed just above the normal footer.
+See \fBEF\fP and \fBPF\fP.
+.TP
+.B "OH [arg]"
+Odd-page header, a line printed just below the normal header.
+See \fBEH\fP and \fBPH\fP.
+.TP
+.B OP
+Make sure that the following text is printed at the top
+of an odd-numbered page. Will not output an empty page
+if currently at the top of an odd page.
+.TP
+.B "P [type]"
+Begin new paragraph.
+\fBP\fP without argument will produce left justified text, even
+the first line of the paragraph. This is the same as setting
+\fItype\fP to 0. If the argument is 1, then the first line
+of text following \fBP\fP will be indented by the number of
+spaces in number register \fBPi\fP, normally 5.
+.sp
+Instead of giving 1 as argument to \fBP\fP it is possible to set the
+paragraph type in number register \fBPt\fP. Using 0 and 1
+will be the same as adding that value to \fBP\fP.
+A value of 2 will indent all paragraphs, except after
+headings, lists and displays.
+.sp
+The space between two paragraphs is controlled by number register \fBPs\fP,
+and is 1 by default (one blank line).
+.TP
+.B "PGFORM [linelength [pagelength [pageoffset [1]]]]"
+Sets linelength, pagelength and/or pageoffset.
+This macro can be used for special formatting, like letterheads
+and other.
+It is normally the first command in a file, though it's not necessary.
+\fBPGFORM\fP can be used without arguments
+to reset everything after a \fBMOVE\fP.
+A line-break is done unless the fourth argument is given.
+This can be used to avoid the pagenumber on the first page while setting
+new width and length.
+(It seems as if this macro sometimes doesn't work too well.
+Use the command line arguments
+to change linelength, pagelength and pageoffset instead. Sorry.)
+.TP
+.B PGNH
+No header is printed on the next page. Used to get rid of
+the header in letters or other special texts.
+This macro must be used before any text to inhibit the pageheader
+on the first page.
+.TP
+.B PIC [-L] [-C] [-R] [-I n] filename [width [height]]
+\fBPIC\fP includes a Postscript file in the document.
+The macro depends on \fBmmroff\fP and \fBINITR\fP.
+\fB-L\fP, \fB-C\fP, \fB-R\fP and \fB-I n\fP adjusts the picture
+or indents it. The optionally \fIwidth\fP and \fIheight\fP
+can also be given to resize the picture.
+.TP
+.B PE
+Picture end.
+Ends a picture for \fB@TMAC_M_PREFIX@pic\fP, see the manual for \fB@TMAC_M_PREFIX@pic\fP.
+.TP
+.B "PF [arg]"
+Page footer.
+\fBPF\fP sets the line to be printed at the bottom of each page.
+Normally empty. See \fBPH\fP for the argument specification.
+.TP
+.B "PH [arg]"
+Page header, a line printed at the top of each page.
+The argument should be specified as "'left-part'center-part'right-part'",
+where left-, center- and right-part is printed left-justified, centered
+and right justified. The character \fB%\fP is changed to the current
+page number. The default page-header is "''- % -''", the page
+number between two dashes.
+.TP
+.B PS
+Picture start (from pic). Begins a picture for \fB@g@pic\fP, see
+the manual.
+.TP
+.B PX
+Page-header user-defined exit.
+\fBPX\fP is called just after the printing of the page header
+in \fIno-space\fP mode.
+.TP
+.B R
+Roman.
+Return to roman font, see also \fBI\fP.
+.TP
+.B "RB [roman-text [bold-text [roman-text [...]]]]"
+Roman-bold.
+Even arguments is printed in roman, odd in boldface.
+See \fBI\fP.
+.TP
+.B "RD [prompt [diversion [string]]]"
+Read from standard input to diversion and/or string.
+The text will be saved in a diversion named \fIdiversion\fP.
+Recall the text by writing the name of the diversion after a dot
+on an empty line. A string will also be defined if
+\fIstring\fP is given. \fIDiversion\fP and/or \fIprompt\fP can
+be empty ("").
+.TP
+.B RF
+Reference end. Ends a reference definition and returns to normal
+processing. See \fBRS\fP.
+.TP
+.B "RI [roman-text [italic-text [roman-text [...]]]]"
+Even arguments are printed in roman, odd in italic.
+See \fBI\fP.
+.TP
+.B "RL [text-indent [1]]"
+Reference list start.
+Begins a list where each item is preceded with a automatically
+incremented number between
+square brackets.
+\fIText-indent\fP changes the default indentation.
+.TP
+.B "RP [arg1 [arg2]]"
+Produce reference page.
+\fBRP\fP can be used if a reference page is wanted somewhere in the
+document. It is not needed if \fBTC\fP is used to produce
+a table of content. The reference page will then be printed automatically.
+.sp
+The reference counter will not be reset if \fIarg1\fP is 1.
+.sp
+\fIArg2\fP tells \fBRP\fP whether to eject a page or not.
+.br
+\fBArg2\fP
+.in +.5i
+.T2 0
+The reference page will be printed on a separate page.
+This is
+the default.
+.T2 1
+Do not eject page after the list.
+.T2 2
+Do not eject page before the list.
+.T2 3
+Do not eject page before and after the list.
+.in
+The reference items will be separated by a blank line.
+Setting number register \fBLs\fP to 0 will suppress the line.
+.sp
+The string \fBRp\fP contains the reference page title and
+is normally set to \fIREFERENCES\fP.
+.TP
+.B "RS [string-name]"
+\fBRS\fP begins an automatically numbered reference definition.
+Put the string \fB\e*(Rf\fP where the reference mark
+should be and write the reference between \fBRS\fP/\fBRF\fP
+at next new line after the reference mark. The reference number
+is stored in number register \fB:R\fP.
+If \fIstring-name\fP is given, a string with that name
+will be defined and contain the current reference mark.
+The string can be referenced as \fB\e*[\fIstring-name\fP]\fP later in
+the text.
+.TP
+.B "S [size [spacing]]"
+Set point size and vertical spacing. If any argument is equal 'P', then
+the previous value is used. A 'C' means current value, and 'D' default value.
+If '+' or '-' is used before the value, then increment or decrement of
+the current value will be done.
+.TP
+.B "SA [arg]"
+Set right-margin justification.
+Justification is normally turned on.
+No argumenent or \fB0\fP turns off justification, a \fB1\fP turns on
+justification.
+.TP
+.B "SETR refname [string]"
+Remember the current header and page-number as \fIrefname\fP.
+Saves \fIstring\fP if \fIstring\fP is defined. \fIstring\fP is retrieved
+with \fB.GETST\fP.
+See \fBINITR\fP.
+.TP
+.B "SG [arg [1]]"
+Signature line. Prints the authors name(s) after the formal closing.
+The argument will be appended to the reference data, printed
+at either the first or last author. The reference data is the location,
+department and initials specified with \fB.AU\fP.
+It will be printed at the first author if the second argument is given,
+otherwise at the last.
+No reference data will be printed if the author(s) is specifed
+thru \fB.WA\fP/\fB.WE\fP.
+See \fBINTERNALS\fP.
+.TP
+.B "SK [pages]"
+Skip pages.
+If \fIpages\fP is \fB0\fP or omitted, a skip to the next page
+will occur unless it is already at the top of a page.
+Otherwise it will skip \fIpages\fP pages.
+.TP
+.B "SM string1 [string2 [string3]]"
+Make a string smaller.
+If \fIstring2\fP is given, \fIstring1\fP will be smaller and \fIstring2\fP
+normal, concatenated with \fIstring1\fP. With three argument, all is
+concatenated, but only \fIstring2\fP is made smaller.
+.TP
+.B "SP [lines]"
+Space vertically. \fIlines\fP can have any scalingfactor, like \fI3i\fP or
+\fI8v\fP. Several \fBSP\fP in a line will only produce the
+maximum number of lines, not the sum. \fBSP\fP will also be ignored
+until the first textline in a page. Add a \fB\e&\fP before \fBSP\fP
+to avoid this.
+.TP
+.B TAB
+reset tabs to every 5n. Normally used to reset any previous tabpositions.
+.TP
+.B "TB [title [override [flag [refname]]]]"
+Table title, arguments are the same as for \fBEC\fP.
+\fBTB\fP uses the number register \fBTb\fP as counter.
+The string \fBLt\fP controls the title of the
+List of Tables, default is \fILIST OF TABLES\fP.
+The List of Tables will only be printed if number register \fBLt\fP
+is 1, default 1.
+The string \fBLitb\fP contains the word \fITABLE\fP, wich
+is printed before the number.
+.br
+Special handling of the title will occur if
+\fBTB\fP is used inside \fBDS\fP/\fBDE\fP, it will not be
+affected by the format of \fBDS\fP.
+.TP
+.B "TC [slevel [spacing [tlevel [tab [h1 [h2 [h3 [h4 [h5]]]]]]]]]"
+Table of contents.
+This macro is normally used at the last line of the document.
+It generates a table of contents with headings up to the level
+controlled by number register \fBCl\fP. Note that \fBCl\fP controls
+the saving of headings, it has nothing to do with \fBTC\fP.
+Headings with level less than or equal to \fIslevel\fP will get
+\fIspacing\fP number of lines before them.
+Headings with level less than or equal to \fItlevel\fP will have
+their page numbers right justified with dots or spaces separating
+the text and the page number. Spaces is used if \fItab\fP
+is greater than zero, otherwise dots.
+Other headings will have the
+page number directly at the end of the heading text (\fIragged right\fP).
+.sp
+The rest of the arguments will be printed, centered, before the
+table of contents.
+.sp
+The user-defined macros \fBTX\fP and \fBTY\fP are used if \fBTC\fP is called
+with at most four arguments. \fBTX\fP is called before the printing
+of \fICONTENTS\fP, and \fBTY\fP is called instead of printing \fICONTENTS\fP.
+.sp
+Equivalent macros can be defined for list of figures, tables, equations
+and excibits by defining \fBTXxx\fP or \fBTYxx\fP, where \fBxx\fP
+is \fBFg\fP, \fBTB\fP, \fBEC\fP or \fBEX\fP.
+.sp
+String \fBCi\fP can be set to control the indentations for each heading-level.
+It must be scaled, like \fB.ds\ Ci\ .25i\ .5i\ .75i\ 1i\ 1i\fP.
+The indentation is normally controlled by the maxlength of headings
+in each level.
+.sp
+All texts can be redefined, new stringvariables
+\fILifg\fP, \fILitb\fP, \fILiex\fP, \fILiec\fP and \fILicon\fP contain
+"Figure", "TABLE", "Exhibit", "Equation" and "CONTENTS".
+These can be redefined to other languages.
+.TP
+.B TE
+Table end. See \fBTS\fP.
+.TP
+.B "TH [N]"
+Table header. See \fBTS\fP.
+\fBTH\fP ends the header of the table. This header will
+be printed again if a page-break occurs.
+Argument \fIN\fP isn't implemented yet.
+.TP
+.B TL [charging-case number(s) [filing-case number(s)]]
+Begin title of memorandum.
+All text up to the next \fBAU\fP is included in the title.
+\fICharging-case number\fP and \fIfiling-case\fP are saved
+for use in the front page processing.
+.TP
+.B TM [num1 [num2 [...]]]
+Technical memorandumnumbers used in \fB.MT\fP. Unlimited number
+of arguments may be given.
+.TP
+.B TP
+Top of page user-defined macro.
+This macro is called instead of the normal page header. It is
+possible to get complete control over the header.
+Note that header and footer is printed in a separate environment.
+Linelength is preserved though.
+.TP
+.B "TS [H]"
+Table start. This is the start of a table specification
+to \fB@g@tbl\fP. See separate manual for \fB@g@tbl\fP.
+\fBTS\fP ends with \fBTE\fP.
+Argument \fIH\fP tells \fBm@TMAC_M_PREFIX@m\fP that the table
+has a header. See \fBTH\fP.
+.TP
+.B TX
+Userdefined table of contents exit.
+This macro is called just before \fBTC\fP prints the word \fICONTENTS\fP.
+See \fBTC\fP.
+.TP
+.B TY
+Userdefined table of contents exit (no "CONTENTS").
+This macro is called instead of printing \fICONTENTS\fP.
+See \fBTC\fP.
+.TP
+.B VERBON [flag [pointsize [font]]]
+Begin verbatim output using courier font.
+Usually for printing programs.
+All character has equal width.
+The pointsize can be changed with
+the second argument. By specifying the font-argument
+it is possible to use another font instead of courier.
+\fIflag\fP controls several special features.
+It contains the sum of all wanted features.
+.in +.5i
+.T2 Value
+Description
+.T2 1
+Disable the escape-character (\e). This is normally turned on during
+verbose output.
+.T2 2
+Add an empty line before the verbose text.
+.T2 4
+Add an empty line after the verbose text.
+.T2 8
+Print the verbose text with numbered lines. This adds four digitsized
+spaces in the beginning of each line. Finer control is available with
+the string-variable \fBVerbnm\fP. It contains all arguments to the
+\fBtroff\fP-command \fB.nm\fP, normally '1'.
+.T2 16
+Indent the verbose text with five 'n':s. This is controlled by the
+number-variable \fBVerbin\fP (in units).
+.in
+.TP
+.B VERBOFF
+End verbatim output.
+.TP
+.B "VL text-indent [mark-indent [1]]"
+Variable-item list has no fixed mark, it assumes that
+every \fBLI\fP have a mark instead.
+\fIText-indent\fP sets the indent to the text, and \fImark-indent\fP
+the distance from the current indent to the mark.
+A third argument will prohibit printing of a blank line before each
+item.
+.TP
+.B "VM [top [bottom]]"
+Vertical margin.
+.TP
+.B "WA [writer-name [title]]"
+Begins specification of the writer and writer's address.
+Several names can be specified with empty \fBWA\fP/\fBWE\fP-pairs, but
+only one address.
+.TP
+.B WE
+Ends the address-specification after \fP.WA\fP.
+.TP
+.B "WC [format]"
+Footnote and display width control.
+.in +.5i
+.T2 N
+Set default mode, \fB-WF\fP, \fB-FF\fP, \fB-WD\fP and \fBFB\fP.
+.T2 WF
+Wide footnotes, wide also in two-column mode.
+.T2 -WF
+Normal footnote width, follow column mode.
+.T2 FF
+All footnotes gets the same width as the first footnote encountered.
+.T2 -FF
+Normal footnotes, width follows \fBWF\fP and \fB-WF\fP.
+.T2 WD
+Wide displays, wide also in two-column mode.
+.T2 -WD
+Normal display width, follow column mode.
+.T2 FB
+Floating displays generates a line break when printed on the current page.
+.T2 -FB
+Floating displays does not generate line break.
+.in
+.sp 3
+.LP
+.\"########################################################################
+.LP
+.B "Strings used in m@TMAC_M_PREFIX@m:"
+.TP
+.B App
+A string containing the word "APPENDIX".
+.TP
+.B Apptxt
+.TP
+The current appendix text.
+.B "EM"
+Em dash string
+.TP
+.B H1txt
+Will be updated by \fB.H\fP and \fB.HU\fP to the current heading text.
+Also updated in table of contents & friends.
+.TP
+.B HF
+Fontlist for headings, normally "2 2 2 2 2 2 2".
+Nonnumeric fontnames may also be used.
+.TP
+.B HP
+Pointsize list for headings. Normally "0 0 0 0 0 0 0" which is the same as
+"10 10 10 10 10 10 10".
+.TP
+.B Index
+.TP
+Contains \fIINDEX\fP.
+.B Indcmd
+.TP
+Contains the index command, \fIsort\ -t\et\fP.
+.B Lifg
+String containing \fIFigure\fP.
+.TP
+.B Litb
+String containing \fITABLE\fP.
+.TP
+.B Liex
+String containing \fIExhibit\fP.
+.TP
+.B Liec
+String containing \fIEquation\fP.
+.TP
+.B Licon
+String containing \fICONTENTS\fP.
+.TP
+.B Lf
+Contains "LIST OF FIGURES".
+.TP
+.B Lt
+Contains "LIST OF TABLES".
+.TP
+.B Lx
+Contains "LIST OF EXHIBITS".
+.TP
+.B Le
+Contains "LIST OF EQUATIONS".
+.TP
+.B Letfc
+Contains "Yours very truly,", used in \fB.FC\fP.
+.TP
+.B Letapp
+Contains "APPROVED:", used in \fB.AV\fP.
+.TP
+.B Letdate
+Contains "Date", used in \fB.AV\fP.
+.TP
+.B LetCN
+Contains "CONFIDENTIAL", used in \fB.LO CN\fP.
+.TP
+.B LetSA
+Contains "To Whom It May Concern:", used in \fB.LO SA\fP.
+.TP
+.B LetAT
+Contains "ATTENTION:", used in \fB.LO AT\fP.
+.TP
+.B LetSJ
+Contains "SUBJECT:", used in \fB.LO SJ\fP.
+.TP
+.B LetRN
+Contains "In reference to:", used in \fB.LO RN\fP.
+.TP
+.B Letns
+is an array containing the different strings used in \fB.NS\fP.
+It is really a number of stringvariables prefixed with \fBLetns!\fP.
+If the argument doesn't exist, it will be included
+between \fB()\fP with \fBLetns!copy\fP as prefix and \fBLetns!to\fP as suffix.
+Observe the space after \fBcopy\fP and before \fBto\fP.
+.nf
+.ta 1.5i
+\fBName Value\fP
+Letns!0 Copy to
+Letns!1 Copy (with att.) to
+Letns!2 Copy (without att.) to
+Letns!3 Att.
+Letns!4 Atts.
+Letns!5 Enc.
+Letns!6 Encs.
+Letns!7 Under separate cover
+Letns!8 Letter to
+Letns!9 Memorandum to
+Letns!10 Copy (with atts.) to
+Letns!11 Copy (without atts.) to
+Letns!12 Abstract Only to
+Letns!13 Complete Memorandum to
+Letns!14 CC
+Letns!copy Copy "
+Letns!to " to
+.fi
+.TP
+.B Letnsdef
+Defines the standard-notation used when no argument is given
+to \fB.NS\fP. Default is \fB0\fP.
+.TP
+.B "MO1 - MO12"
+Strings containing \fIJanuary\fP thru \fIDecember\fP.
+.TP
+.B Qrf
+String containing "See chapter \e\e*[Qrfh], page \e\en[Qrfp].".
+.TP
+.B Rp
+Contains "REFERENCES".
+.TP
+.B Tcst
+Contains current status of table of contents and list of XXXX.
+Empty outside \fB.TC\fP.
+Useful in user-defined macros like \fB.TP\fP.
+.nf
+.ta 1.5i
+\fBValue Meaning\fP
+co Table of contents
+fg List of figures
+tb List of tables
+ec List of equations
+ex List of exhibits
+ap Appendix
+.fi
+.ta
+.TP
+.B Tm
+Contains \e(tm, trade mark.
+.TP
+.B Verbnm
+Argument to \fB.nm\fP in \fB.VERBON\fP, default: \fB1\fP.
+.\"-----------------------------------
+.LP
+.B "Number variables used in m@TMAC_M_PREFIX@m:"
+.TP
+.B Aph
+Print an appendix-page for every new appendix
+if this numbervariable is non-zero.
+No output will occur if \fBAph\fP is zero, but there will always
+be an appendix-entry in the 'List of contents'.
+.TP
+.B Cl
+Contents level [0:7], contents saved if heading level <= Cl, default 2.
+.TP
+.B Cp
+Eject page between LIST OF XXXX if Cp == 0, default 0.
+.TP
+.B D
+Debugflag, values >0 produces varying degree of debug. A value of 1
+gives information about the progress of formatting, default 0.
+.TP
+.B De
+Eject after floating display is output [0:1], default 0.
+.TP
+.B Dsp
+Controls the space output before and after static displays
+if defined. Otherwise is the value of Lsp used.
+.TP
+.B Df
+Floating keep output [0:5], default 5.
+.TP
+.B Ds
+\fBLsp\fP space before and after display if == 1 [0:1], default 1.
+.TP
+.B Ej
+Eject page, default 0.
+.TP
+.B Eq
+Equation lable adjust 0=left, 1=right. Default 0.
+.TP
+.B Fs
+Footnote spacing, default 1.
+.TP
+.B "H1-H7"
+Heading counters
+.TP
+.B H1dot
+Append a dot after the level one heading number if > 0. Default is 1.
+.TP
+.B H1h
+.TP
+Copy of number register \fBH1\fP, but it is incremented
+just before the page break. Useful in user defined header macros.
+.B Hb
+Heading break level [0:7], default 2.
+.TP
+.B Hc
+Heading centering level, [0:7]. Default 0.
+.TP
+.B Hi
+Heading temporary indent [0:2], default 1.
+.br
+0\ ->\ 0 indent, left margin
+.br
+1\ ->\ indent to right , like .P 1
+.br
+2\ ->\ indent to line up with text part of preceding heading
+.TP
+.B Hps
+Numbervariable with the heading pre-space level. If the heading-level
+is less than or equal to \fBHps\fP, then two lines will precede the
+section heading instead of one. Default is first level only.
+The real amount of lines is controlled by the variables \fBHps1\fP and
+\fBHps2\fP.
+.TP
+.B Hps1
+This is the number of lines preceding \fB.H\fP when the heading-level
+is greater than \fBHps\fP. Value is in units, normally 0.5.
+.TP
+.B Hps2
+This is the number of lines preceding \fB.H\fP when the heading-level
+is less than or equal to \fBHps\fP. Value is in units, normally 1.
+.TP
+.B Hs
+Heading space level [0:7], default 2.
+.TP
+.B Hss
+This is the number of lines that follows \fB.H\fP when the heading-level
+is less than or equal to \fBHs\fP. Value is in units, normally 1.
+.TP
+.B Ht
+Heading numbering type, default 0.
+0 -> multiple (1.1.1 ...)
+.br
+1 -> single
+.TP
+.B Hu
+Unnumbered heading level, default 2.
+.TP
+.B Hy
+Hyphenation in body, default 1.
+.br
+0\ ->\ no hyphenation
+.br
+1\ ->\ hyphenation 14 on
+.TP
+.B Iso
+Set this variable to 1 on the command line to get ISO-formatted date string.
+(\fB-rIso=1\fP)
+Useless inside a document.
+.TP
+.B Letwam
+Max lines in return-address, used in \fB.WA\fP/\fB.WE\fP. Default 14.
+.TP
+.B "Lf, Lt, Lx, Le"
+Enables (1) or disables (0) the printing of List of figures,
+List of tables, List of exhibits and List of equations.
+Default: Lf=1, Lt=1, Lx=1, Le=0.
+.TP
+.B Li
+List indent, used by .AL, default 6.
+.TP
+.B Limsp
+Flag for space between prefix and mark in automatic lists (.AL).
+.br
+0\ ==\ no space
+.br
+1\ ==\ space
+.TP
+.B Ls
+List space, if current listlevel > Ls then no spacing will occur around lists.
+Default 99.
+.TP
+.B Lsp
+The size of an empty line. Normally 0.5v, but it is 1v
+if \fBn\fP is set (\fB.nroff\fP).
+.TP
+.B N
+Numbering style [0:5], default 0.
+.br
+0\ ==\ (default) normal header for all pages.
+.br
+1\ ==\ header replaces footer on first page, header is empty.
+.br
+2\ ==\ page header is removed on the first page.
+.br
+3\ ==\ "section-page" numbering enabled.
+.br
+4\ ==\ page header is removed on the first page.
+.br
+5\ ==\ "section-page" and "section-figure" numbering enabled.
+See also the number-register Sectf and Sectp.
+.TP
+.B Np
+Numbered paragraphs, default 0.
+.br
+0\ ==\ not numbered
+.br
+1\ ==\ numbered in first level headings.
+.TP
+.B Of
+Format of figure,table,exhibit,equation titles, default 0.
+.br
+0\ =\ ". "
+.br
+1\ =\ " - "
+.TP
+.B P
+Current page-number, normally the same as % unless "section-page" numbering
+is enabled.
+.TP
+.B Pi
+paragraph indent, default 5.
+.TP
+.B Pgps
+Controls whether header and footer pointsize should follow the current
+setting or just change when the header and footer is defined.
+.in +.5i
+.ti -.5i
+.T2 Value
+Description
+.T2 0
+Pointsize will only change to the current setting when \fB.PH\fP, \fB.PF\fP,
+\&\fB.OH\fP, \fP.EH\fP, \fB.OF\fP or \fB.OE\fP is executed.
+.T2 1
+Pointsize will change after every \fB.S\fP. This is the default.
+.in
+.TP
+.B Ps
+paragraph spacing, default 1.
+.TP
+.B Pt
+Paragraph type, default 0.
+.br
+0\ ==\ left-justified
+.br
+1\ ==\ indented .P
+.br
+2\ ==\ indented .P except after .H, .DE or .LE.
+.TP
+.B Sectf
+Flag controlling "section-figures". A non-zero value enables this.
+See also register N.
+.TP
+.B Sectp
+Flag controlling "section-page-numbers". A non-zero value enables this.
+See also register N.
+.TP
+.B Si
+Display indent, default 5.
+.TP
+.B Verbin
+Indent for \fB.VERBON\fP, default 5n.
+.TP
+.B .mgm
+Always 1.
+.LP
+.SH INTERNALS
+The letter macros is using different submacros depending on
+the letter type. The name of the submacro has the letter type
+as suffix. It is therefore possible to define other letter types, either
+in the national macro-file, or as local additions.
+\&\fB.LT\fP will set the number variables \fBPt\fP and \fBPi\fP to 0 and 5.
+The following strings and macros must be defined for a new letter type:
+.TP
+\fBlet@init_\fP\fItype\fP
+This macro is called directly by \fB.LT\fP. It is supposed to initialize
+variables and other stuff.
+.TP
+\fBlet@head_\fP\fItype\fP
+This macro prints the letter head, and is called instead of the
+normal page header. It is supposed to remove the alias \fBlet@header\fP,
+otherwise it will be called for all pages.
+.TP
+\fBlet@sg_\fP\fItype\ name\ title\ n\ flag\ [arg1\ [arg2\ [...]]]\fP
+\&\fB.SG\fP is calling this macro only for letters, memorandums has
+its own processing. \fIname\fP and \fItitle\fP is specified
+thru \fB.WA\fP/\fB.WB\fP. \fIn\fP is the counter, 1-max, and
+\fIflag\fP is true for the last name. Any other argument to \fB.SG\fP
+is appended.
+.TP
+\fBlet@fc_\fP\fItype\ closing\fP
+This macro is called by \fB.FC\fP, and has the
+formal closing as argument.
+.LP
+\&\fB.LO\fP is implemented as a general option-macro. \fB.LO\fP demands
+that a string named \fBLet\fP\fItype\fP is defined, where \fItype\fP
+is the letter type.
+\&\fB.LO\fP will then assign the argument to the string
+variable \fBlet*lo-\fP\fItype\fP.
+.LP
+.\".SH BUGS
+.SH AUTHOR
+Jörgen Hägg, Lund, Sweden <jh@axis.se>.
+.SH FILES
+.TP
+.B @MACRODIR@/tmac.@TMAC_M_PREFIX@m
+.TP
+.B @TMAC_MDIR@/*.cov
+.TP
+.B @TMAC_MDIR@/*.MT
+.TP
+.B @TMAC_MDIR@/locale
+.SH "SEE ALSO"
+.BR groff (@MAN1EXT@),
+.BR @g@troff (@MAN1EXT@),
+.BR @g@tbl (@MAN1EXT@),
+.BR @g@pic (@MAN1EXT@),
+.BR @g@eqn (@MAN1EXT@)
+.br
+.BR mm (@MAN7EXT@)
+.BR m@TMAC_M_PREFIX@mse (@MAN7EXT@)
diff --git a/contrib/groff/contrib/mm/groff_mmse.man b/contrib/groff/contrib/mm/groff_mmse.man
new file mode 100644
index 000000000000..1e1f4a0d7408
--- /dev/null
+++ b/contrib/groff/contrib/mm/groff_mmse.man
@@ -0,0 +1,82 @@
+.\"
+.\" $Id: groff_mmse.man,v 2.0 2000/09/14 03:40:24 jhaegg Exp $
+.\" Skrivet av Jörgen Hägg, Lund, Sverige
+.\"
+.TH GROFF_MMSE @MAN7EXT@ "@MDATE@" "Groff Version @VERSION@"
+.SH NAMN
+groff_mmse \- svenska mm makro för groff
+.SH SYNTAX
+.B groff
+.B \-m@TMAC_M_PREFIX@mse
+[
+.IR flaggor .\|.\|.
+]
+[
+.IR filer .\|.\|.
+]
+.SH BESKRIVNING
+\fBm@TMAC_M_PREFIX@mse\fP är en svensk variant av \fBm@TMAC_M_PREFIX@m\fP. Alla texter
+är översatta. En A4 sida får text som är 13 cm bred, 3.5 cm indragning
+samt är 28.5 cm hög.
+Det finns stöd för brevuppställning enligt svensk standard
+för vänster och högerjusterad text.
+.LP
+\fBCOVER\fP kan använda \fIse_ms\fP som argument. Detta ger ett
+svenskt försättsblad.
+Se \fBgroff_mm(@MAN7EXT@)\fP för övriga detaljer.
+.SH BREV
+Tillgängliga brevtyper:
+.TP
+.B ".LT SVV"
+Vänsterställd löptext med adressat i position T0 (vänsterställt).
+.TP
+.B ".LT SVH"
+Högerställd löptext med adressat i position T4 (passar
+fönsterkuvert).
+.LP
+Följande extra LO-variabler används.
+.TP
+.B ".LO DNAMN\fI namn\fP"
+Anger dokumentets namn.
+.TP
+.br
+.B ".LO MDAT\fI datum\fP"
+Mottagarens datum, anges under \fBErt datum:\fP (\fBLetMDAT\fP).
+.TP
+.br
+.B ".LO BIL\fI sträng\fP"
+Anger bilaga, nummer eller sträng med \fBBilaga\fP (\fBLetBIL\fP)
+som prefix.
+.TP
+.br
+.B ".LO KOMP\fI text\fP"
+Anger kompletteringsuppgift.
+.TP
+.br
+.B ".LO DBET\fI beteckning\fP"
+Anger dokumentbeteckning eller dokumentnummer.
+.TP
+.br
+.B ".LO BET\fI beteckning\fP"
+Anger beteckning (ärendebeteckning i form av diarienummer eller liknande).
+.TP
+.br
+.B ".LO SIDOR\fI antal\fP"
+Anger totala antalet sidor och skrivs ut efter sidnumret inom
+parenteser.
+.LP
+Om makrot \fB.TP\fP är definierat anropas det efter utskrift av brevhuvudet.
+Där lägger man lämpligen in postadress och annat som brevfot.
+.SH "SKRIVET AV"
+Jörgen Hägg, Lund, Sweden <Jorgen.Hagg@axis.se>
+.SH FILER
+.B @MACRODIR@/tmac.@TMAC_M_PREFIX@mse
+.B @TMAC_MDIR@/se_*.cov
+.SH "SE OCKSÅ"
+.BR groff (@MAN1EXT@),
+.BR @g@troff (@MAN1EXT@),
+.BR @g@tbl (@MAN1EXT@),
+.BR @g@pic (@MAN1EXT@),
+.BR @g@eqn (@MAN1EXT@)
+.br
+.BR m@TMAC_M_PREFIX@m (@MAN7EXT@)
diff --git a/contrib/groff/contrib/mm/m.tmac b/contrib/groff/contrib/mm/m.tmac
new file mode 100644
index 000000000000..af60f769359e
--- /dev/null
+++ b/contrib/groff/contrib/mm/m.tmac
@@ -0,0 +1,3477 @@
+.\"
+.de @revision
+.ds RE \\$2
+..
+.\"
+.\" $Id: m.tmac,v 2.3 2001/03/05 09:56:29 jhaegg Exp $
+.@revision $Revision: 2.3 $
+.ig
+
+Copyright (C) 1991-2000 Free Software Foundation, Inc.
+mgm is written by Jörgen Hägg <jh@axis.com>
+
+mgm 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.
+
+mgm 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, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+Please send bugreports with examples to jh@axis.com.
+
+Naming convention stolen from mgs.
+Local names module*name
+Extern names module@name
+Env.var environ:name
+Index array!index
+..
+.if !\n(.g .ab These mm macros require groff.
+.if \n(.C .ab The groff mm macros do not work in compatibility mode.
+.warn
+.\" ######## init #######
+.\" Contents level [0:7], contents saved if heading level <= Cl
+.nr Cl 2
+.\" Eject page between LIST OF XXXX if Cp == 0
+.nr Cp 0
+.\" Debugflag
+.if !r D .nr D 0
+.\" Eject after floating display is output [0:1]
+.nr De 0
+.\" Floating keep output [0;5]
+.nr Df 5
+.\" space before and after display if == 1 [0:1]
+.nr Ds 1
+.\" Eject page
+.nr Ej 0
+.\" Equation label adjust 0=left, 1=right
+.nr Eq 0
+.\" Em dash string
+.ie n .ds EM " --
+.el .ds EM \(em
+.\" Footnote spacing
+.nr Fs 1
+.\" H1-H7 heading counters
+.nr H1 0 1
+.nr H2 0 1
+.nr H3 0 1
+.nr H4 0 1
+.nr H5 0 1
+.nr H6 0 1
+.nr H7 0 1
+.\" Heading break level [0:7]
+.nr Hb 2
+.\" heading centering level, [0:7]
+.nr Hc 0
+.\" header format
+.ds HF 2 2 2 2 2 2 2
+.\" heading temp. indent [0:2]
+.\" 0 -> 0 indent, left margin
+.\" 1 -> indent to right , like .P 1
+.\" 2 -> indent to line up with text part of preceding heading
+.nr Hi 1
+.\" header pointsize
+.ds HP 0 0 0 0 0 0 0
+.\" heading space level [0:7]
+.nr Hs 2
+.\" heading numbering type
+.\" 0 -> multiple (1.1.1 ...)
+.\" 1 -> single
+.nr Ht 0
+.\" Unnumbered heading level
+.nr Hu 2
+.\" hyphenation in body
+.\" 0 -> no hyphenation
+.\" 1 -> hyphenation 14 on
+.nr Hy 0
+.\" text for toc, selfexplanatory. Look in the new variable section
+.ds Lf LIST OF FIGURES
+.nr Lf 1
+.ds Lt LIST OF TABLES
+.nr Lt 1
+.ds Lx LIST OF EXHIBITS
+.nr Lx 1
+.ds Le LIST OF EQUATIONS
+.nr Le 0
+.\" List indent, used by .AL
+.nr Li 6
+.\" List space, if listlevel > Ls then no spacing will occur around lists.
+.nr Ls 99
+.\" Numbering style [0:5]
+.if !r N .nr N 0
+.\" numbered paragraphs
+.\" 0 == not numbered
+.\" 1 == numbered in first level headings.
+.nr Np 0
+.\" Format of figure,table,exhibit,equation titles.
+.\" 0= ". ", 1=" - "
+.nr Of 0
+.\" Table of contents page numbering style
+.nr Oc 0
+.\" Page-number, normally same as %.
+.nr P 0
+.\" paragraph indent
+.nr Pi 5
+.\" paragraph spacing
+.nr Ps 1
+.\" paragraph type
+.\" 0 == left-justified
+.\" 1 == indented .P
+.\" 2 == indented .P except after .H, .DE or .LE.
+.nr Pt 0
+.\" Reference title
+.ds Rp REFERENCES
+.\" Display indent
+.nr Si 5
+.\"
+.\" Current state of TOC, empty outside TC, inside
+.\" it will be set to co,fg,tb,ec,ex or ap.
+.ds Tcst
+.\"
+.ds Tm \(tm
+.\"
+.\"---------------------------------------------
+.\" Internal global variables
+.\"
+.\" This is for cover macro .MT
+.\" .ds @language
+.\"
+.nr @copy_type 0
+.if r C .nr @copy_type \n[C]
+.\" >0 if Subject/Date/From should be bold, roman otherwise
+.ie n .ds @sdf_font R
+.el .ds @sdf_font B
+.if \n[@copy_type]=4 \{\
+. ls 2
+. nr Pi 10
+. nr Pt 1
+.\}
+.\"
+.\"
+.if r E \{\
+. ie \n[E] .ds @sdf_font B
+. el .ds @sdf_font R
+.\}
+.\"
+.\" Current pointsize and vertical space, always in points.
+.if !r S .nr S 10
+.ps \n[S]
+.vs \n[S]+2
+.\"
+.nr @ps \n[.ps]
+.nr @vs \n[.v]
+.if \n[D]>1 .tm @ps=\n[@ps], @vs=\n[@vs]
+.if \n[D]>3 .tm INIT: l:\n[.l] p:\n[.p] o:\n[.o]
+.\"
+.\" Page length
+.if r L \{\
+. ie n .pl \n[L]u
+. el .pl \n[L]u
+.\}
+.nr @pl \n[.p]
+.\"
+.\" page width
+.ie r W \{\
+. ie n .ll \n[W]u
+. el .ll \n[W]u
+.\}
+.el .ll 6i
+.nr @ll \n[.l]
+.nr @cur-ll \n[@ll]
+.lt \n[@ll]u
+.\"
+.\" page offset
+.ie r O .po \n[O]u
+.el \{\
+. ie n .po .75i
+. el .po .963i
+.\}
+.\"
+.nr @po \n[.o]
+.\"
+.\" non-zero if escape mechanism is turned off. Used by VERBON/OFF
+.nr @verbose-flag 0
+.\"---------------------------------------------
+.\" New variables
+.\"
+.\" Appendix name
+.ds App APPENDIX
+.\" print appendixheader, 0 == don't
+.nr Aph 1
+.\"
+.\" Current appendix text
+.ds Apptext
+.\" Controls the space before and after static displays if defined.
+.\" Lsp is used otherwise
+.\" .nr Dsp 1v
+.\"
+.\" Add a dot after level one heading number if >0
+.nr H1dot 1
+.\"
+.\" header prespace level. If level <= Hps, then two lines will be printed
+.\" before the header instead of one.
+.nr Hps 1
+.\"
+.\" These variables controls the number of lines preceding .H.
+.\" Hps1 is the number of lines when level > Hps
+.nr Hps1 0.5
+.if n .nr Hps1 1
+.\"
+.\" Hps2 is the number of lines when level <= Hps
+.nr Hps2 1
+.if n .nr Hps2 2
+.\"
+.\" Hss is the number of lines (Lsp) after the header.
+.nr Hss 1
+.\"
+.\" H1txt will be updated by .H and .HU, containing the heading text.
+.\" Will also be updated in table of contents & friends
+.\"
+.ds H1txt
+.\"
+.\" header text for the index
+.ds Index INDEX
+.\" command to sort the index
+.ds Indcmd sort
+.\"
+.\" flag for mkindex
+.if !r Idxf .nr Idxf 0
+.\" Change these in the national configuration file
+.ds Lifg Figure
+.ds Litb TABLE
+.ds Liex Exhibit
+.ds Liec Equation
+.ds Licon CONTENTS
+.\" Flag for space between mark and prefix 1==space, 0==no space
+.\" Can also be controlled by using '.LI mark 2'
+.nr Limsp 1
+.\"
+.\" Lsp controls the height of an empty line. Normally 0.5v
+.\" Normally used for nroff compatibility.
+.nr Lsp 0.5v
+.if n .nr Lsp 1v
+.ds MO1 January
+.ds MO2 February
+.ds MO3 March
+.ds MO4 April
+.ds MO5 May
+.ds MO6 June
+.ds MO7 July
+.ds MO8 August
+.ds MO9 September
+.ds MO10 October
+.ds MO11 November
+.ds MO12 December
+.\" for GETR
+.ds Qrf See chapter \\*[Qrfh], page \\*[Qrfp].
+.\"
+.\" header- and footer-size will only change to the current
+.\" if Pgps is > 0.
+.nr Pgps 1
+.\"
+.\" section-page if Sectp > 0
+.nr Sectp 0
+.if (\n[N]=3):(\n[N]=5) \{\
+. nr Sectp 1
+. nr Ej 1
+.\}
+.\" section-figure if Sectf > 0
+.nr Sectf 0
+.if \n[N]=5 .nr Sectf 1
+.\"
+.\" argument to .nm in .VERBON.
+.ds Verbnm "1
+.\" indent for VERBON
+.nr Verbin 5n
+.\"
+.\" Letter section
+.\" Formal closing (.FC)
+.ds Letfc Yours very truly,
+.\"
+.\" Approval line
+.ds Letapp APPROVED:
+.\" Approval date-string
+.ds Letdate Date
+.\"
+.ds LetCN CONFIDENTIAL\" Confidential default
+.ds LetSA To Whom It May Concern:\" Salutation default
+.ds LetAT ATTENTION:\" Attention string
+.ds LetSJ SUBJECT:\" Subject string
+.ds LetRN In reference to:\" Reference string
+.\"
+.\" Copy to (.NS)
+.ds Letnsdef 0
+.ds Letns!copy Copy \" space!
+.ds Letns!to " to
+.ds Letns!0 Copy to
+.ds Letns!1 Copy (with att.) to
+.ds Letns!2 Copy (without att.) to
+.ds Letns!3 Att.
+.ds Letns!4 Atts.
+.ds Letns!5 Enc.
+.ds Letns!6 Encs.
+.ds Letns!7 Under separate cover
+.ds Letns!8 Letter to
+.ds Letns!9 Memorandum to
+.ds Letns!10 Copy (with atts.) to
+.ds Letns!11 Copy (without atts.) to
+.ds Letns!12 Abstract Only to
+.ds Letns!13 Complete Memorandum to
+.ds Letns!14 CC:
+.\"
+.\" Text printed below the footer. Controlled by @copy_type (C).
+.ds Pg_type!0
+.ds Pg_type!1 OFFICIAL FILE COPY
+.ds Pg_type!2 DATE FILE COPY
+.ds Pg_type!3 D\ R\ A\ F\ T
+.ds Pg_type!4 D\ R\ A\ F\ T
+.\" Max lines in return address
+.nr Letwam 14
+.\"--------------------------
+.\" test for mgm macro. This can be used if the text must test
+.\" what macros is used.
+.nr .mgm 1
+.\"
+.\" Due to security problems with groff I had to rewrite
+.\" the reference system. It's not as elegant as before, you
+.\" have to run groff with '-z -rRef=1' and put stderr into the filename
+.\" for .INITR
+.\"
+.\" Output references to stderr if non-zero
+.ie !r Ref \{\
+. nr Ref 0
+.\}
+.el .warn 0
+.\"
+.\"---------------------------------------------
+.\" set local variables.
+.ie d @language .mso mm/\*[@language]_locale
+.el .mso mm/locale
+.\"---------------------------------------------
+.if \n[D] .tm Groff mm, version \*[RE].
+.\" ####### module init ######
+.\" reset all things
+.de init@reset
+.ie \\n[misc@adjust] 'ad
+.el 'na
+.ie \\n[Hy] 'hy 14
+.el 'nh
+'in 0
+'ti 0
+.ps \\n[@ps]u
+.vs \\n[@vs]u
+..
+.de @warning
+'tm WARNING:(\\n[.F]) input line \\n[.c]:\\$*
+.if \\n[D] .backtrace
+..
+.de @error
+'tm ******************
+'tm ERROR:(\\n[.F]) input line \\n[.c]:\\$*
+.if \\n[D] .backtrace
+'tm ******************
+.ab "Input aborted, syntax error"
+..
+.de misc@toupper
+.tr aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ
+.br
+\\$1
+.tr aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz
+.br
+..
+.\" ####### module debug #################################
+.de debug
+'tm \\$1:\\n[.F]:\\n[c.] ll=\\n[.l] vs=\\n[.v] ps=\\n[.s],\\n[.ps] \
+in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
+..
+.de debug-all
+.nr debug*n 1n
+.nr debug*m 1m
+'tm \\$1:\\n[.F]:\\n[c.] ll=\\n[.l] vs=\\n[.v] ps=\\n[.s] in=\\n[.i]\
+ ad=\\n[.j] fi=\\n[.u] pl=\\n[.p] page=\\n[%] .o=\\n[.o]
+'tm _______ .d=\\n[.d] .f=\\n[.f] .h=\\n[.h] .k=\\n[.k] .n=\\n[.n]\
+ .p=\\n[.p] .t=\\n[.t] .z=\\n[.z] nl=\\n[nl] dn=\\n[dn] n=\\n[debug*n]
+..
+.\" ####### module par #################################
+.nr par@ind-flag 1 \" indent on following P if Pt=2
+.nr hd*last-pos -1
+.nr hd*last-hpos -1
+.nr par*number 0 1
+.af par*number 01
+.nr par*number2 0 1
+.af par*number2 01
+.nr par*num-count 0 1
+.af par*num-count 01
+.\" reset numbered paragraphs, arg1 = headerlevel
+.de par@reset-num
+.if \\$1<3 .nr par*num-count 0
+.if (\\$1=1)&(\\n[Np]=1) .nr par*number 0
+..
+.\"------------
+.\" paragraph
+.de P
+.\" skip P if previous heading
+.ie !((\\n[nl]=\\n[hd*last-pos]):(\\n[nl]=(\\n[hd*last-pos]-.5v))) \{\
+. if \\n[D]>2 .tm Paragraph nl=\\n[nl]
+. par@doit \\$*
+. if \\n[Np] \\n[H1].\\n+[par*number]\ \ \c
+.\}
+.el .if !(\\n[hd*last-hpos]=\\n[.k]) \{\
+. if \\n[D]>2 .tm Paragraph nl=\\n[nl]
+. par@doit \\$*
+. if \\n[Np] \\n[H1].\\n+[par*number]\ \ \c
+.\}
+.nr par@ind-flag 1
+..
+.\"------------
+.de nP
+.\" skip P if previous heading
+.ie !((\\n[nl]=\\n[hd*last-pos]):(\\n[nl]=(\\n[hd*last-pos]-.5v))) \{\
+. if \\n[D]>2 .tm Paragraph nl=\\n[nl]
+. par@doit \\$*
+\\n[H2].\\n+[par*number2]\ \ \c
+.\}
+.el .if !(\\n[hd*last-hpos]=\\n[.k]) \{\
+. if \\n[D]>2 .tm Paragraph nl=\\n[nl]
+. par@doit \\$*
+\\n[H2].\\n+[par*number2]\ \ \c
+.\}
+.nr par@ind-flag 1
+..
+.\"------------
+.de par@doit
+.SP (u;\\n[Ps]*\\n[Lsp])
+.ie \\n[.$] \{\
+. if \\$1=1 .ti +\\n[Pi]n
+.\}
+.el \{\
+. if \\n[Pt]=1 .ti +\\n[Pi]n
+. if (\\n[Pt]=2)&\\n[par@ind-flag] .ti +\\n[Pi]n
+.\}
+..
+.\" ####### module line #######################################
+.de SP
+.br
+.if !r line*lp\\n[.z] .nr line*lp\\n[.z] 0
+.if !r line*ac\\n[.z] .nr line*ac\\n[.z] 0
+.ie \\n[.$] .nr line*temp (v;\\$1)
+.el .nr line*temp 1v
+.\"
+.ie \\n[line*lp\\n[.z]]=\\n[.d] \{\
+. \" go here if no output since the last .SP
+. nr line*output \\n[line*temp]-\\n[line*ac\\n[.z]]
+. if \\n[line*output]<0 .nr line*output 0
+. nr line*ac\\n[.z] +\\n[line*output]
+.\}
+.el \{\
+. nr line*ac\\n[.z] \\n[line*temp]
+. nr line*output \\n[line*temp]
+. \" no extra space in the beginning of a page
+. if (\\n[.d]<0):(\\n[pg*head-mark]=\\n[.d]) .nr line*output 0
+.\}
+.if \\n[line*output] .sp \\n[line*output]u
+.nr line*lp\\n[.z] \\n[.d]
+..
+.\" ######## module misc ###############
+.nr misc@adjust 14
+.de SA
+.if \\n[.$] \{\
+. if \\$1-1 .@error "SA: bad arg: \\$1"
+. nr misc@adjust 0\\$1
+.\}
+.ie \\n[misc@adjust] 'ad
+.el 'na
+..
+.\"-------------
+.\" switch environment, keep all important settings.
+.de misc@ev-keep
+.nr misc*ll \\n[.l]
+.ev \\$1
+.ll \\n[misc*ll]u
+.lt \\n[misc*ll]u
+..
+.\"-------------
+.\" .misc@push stackname value
+.de misc@push
+.ie d misc*st-\\$1 .ds misc*st-\\$1 \\$2 \\*[misc*st-\\$1]
+.el .ds misc*st-\\$1 \\$2
+..
+.\"-------------
+.\" .misc@pop stackname
+.\" value returned in the string misc*pop
+.de misc@pop
+.misc@pop-set misc*st-\\$1 \\*[misc*st-\\$1]
+..
+.\"-------------
+.de misc@pop-set
+.ds misc*st-name \\$1
+.shift
+.if \\n[.$]<1 .@error "stack \\*[misc*st-name] empty"
+.ds misc*pop \\$1
+.shift
+.ds \\*[misc*st-name] \\$*
+..
+.\"-------------
+.\" .misc@pop-nr stackname varname
+.de misc@pop-nr
+.misc@pop \\$1
+.nr \\$2 \\*[misc*pop]
+..
+.\"-------------
+.\" .misc@pop-ds stackname varname
+.de misc@pop-ds
+.misc@pop \\$1
+.ds \\$2 \\*[misc*pop]
+..
+.\"-----------
+.\" reset tabs
+.de TAB
+.ta T 5n
+..
+.\"-------------
+.\" .PGFORM linelength [ pagelength [ pageoffset [1]]]
+.de PGFORM
+.\" Break here to avoid problems with new linesetting of the previous line.
+.\" Hope this doesn't break anything else :-)
+.\" Don't break if arg_4 is a '1'.
+.if \\n[D]>2 .tm PGFORM: \\$*
+.if ''\\$4' .br
+.if \\n[D]>3 .tm PGFORM: IN l:\\n[.l] p:\\n[.p] o:\\n[.o]
+.ie !''\\$1' \{\
+. ll \\$1
+. nr @ll \\n[.l]
+. nr @cur-ll \\n[@ll]
+. lt \\n[@ll]u
+.\}
+.el \{\
+. ll \\n[@ll]u
+. lt \\n[@ll]u
+.\}
+.\"
+.ie !''\\$2' \{\
+. pl \\$2
+. nr @pl \\n[.p]
+.\}
+.el .pl \\n[@pl]u
+.\"
+.ie !''\\$3' \{\
+. po \\$3
+. nr @po \\n[.o]
+.\}
+.el .po \\n[@po]u
+.if \\n[D]>3 .tm PGFORM: OUT l:\\n[.l] p:\\n[.p] o:\\n[.o]
+.if \\n[D]>2 .tm PGFORM: ll=\\n[@ll], pl=\\n[@pl], po=\\n[@po]
+'in 0
+.pg@move-trap
+.if \\n[D]>2 \{\
+. tm Traps:
+. ptr
+.\}
+..
+.\"-------------
+.\" .MOVE y [[x] linelength]
+.\" move to line y, indent to x
+.de MOVE
+.if !\\n[.$] .@error "MOVE y [x]: no arguments"
+.if \\n[nl]<0 \c
+.\" move to Y-pos
+.sp |(v;\\$1)
+.\" calc linelength
+.ie \\n[.$]>2 .nr pg*i (n;\\$3)
+.el \{\
+. ie \\n[.$]>1 .nr pg*i (n;\\n[@ll]u-\\$2)
+. el .nr pg*i \\n[@ll]u
+.\}
+.\" move to X-pos, if any
+.if !''\\$2' .po \\$2
+.\" set linelength
+.ll \\n[pg*i]u
+..
+.\"-------------
+.de SM
+.if !\\n[.$] .@error "SM: no arguments"
+.if \\n[.$]=1 \s-1\\$1\s0
+.if \\n[.$]=2 \s-1\\$1\s0\\$2
+.if \\n[.$]=3 \\$1\s-1\\$2\s0\\$3
+..
+.\"-------------
+.nr misc*S-ps \n[@ps]
+.nr misc*S-vs \n[@vs]
+.nr misc*S-ps1 \n[@ps]
+.nr misc*S-vs1 \n[@vs]
+.ds misc*a
+.ds misc*b
+.de S
+.ie !\\n[.$] \{\
+. ds misc*a P
+. ds misc*b P
+.\}
+.el \{\
+. ie \\n[.$]=1 .ds misc*b D
+. el \{\
+. ie \w@\\$2@=0 .ds misc*b C
+. el .ds misc*b \\$2
+. \}
+. ie \w@\\$1@=0 .ds misc*a C
+. el .ds misc*a \\$1
+.\}
+.\"
+.\" set point size
+.if !'\\*[misc*a]'C' \{\
+. ie '\\*[misc*a]'P' .ps \\n[misc*S-ps]u
+. el \{\
+. ie '\\*[misc*a]'D' .ps \\n[S]
+. el .ps \\*[misc*a]
+. if \\n[D]>2 .tm S: .ps \\*[misc*a]
+. \}
+.\}
+.\"
+.\" set vertical spacing
+.if !'\\*[misc*b]'C' \{\
+. ie '\\*[misc*b]'P' .vs \\n[misc*S-vs]u
+. el \{\
+. ie '\\*[misc*b]'D' .vs \\n[.ps]u+2p
+. el .vs \\*[misc*b]
+. if \\n[D]>2 .tm S: .vs \\*[misc*b]
+. \}
+.\}
+.nr @ps \\n[.ps]
+.nr @vs \\n[.v]
+.\"
+.if \\n[D]>1 .tm S(\\$*): ma:\\*[misc*a], mb:\\*[misc*b] => ps:\\n[@ps]u, vs:\\n[@vs]u
+.nr misc*S-ps \\n[misc*S-ps1]
+.nr misc*S-vs \\n[misc*S-vs1]
+.nr misc*S-ps1 \\n[@ps]
+.nr misc*S-vs1 \\n[@vs]
+.pg@move-trap
+..
+.\"------------
+.de HC
+.ev 0
+.hc \\$1
+.ev
+.ev 1
+.hc \\$1
+.ev
+.ev 2
+.hc \\$1
+.ev
+..
+.\"------------
+.de RD
+.di misc*rd
+'fl
+.rd \\$1\t
+.br
+.di
+.ie !''\\$3' \{\
+. di misc*rd2
+. ds \\$3 "\\*[misc*rd]
+. br
+. di
+.\}
+.if !''\\$2' .rn misc*rd \\$2
+.rm misc*rd misc*rd2
+..
+.\"------------
+.\" VERBON [flag [pointsize [font]]]
+.\" flag
+.\" bit function
+.\" 0 escape on
+.\" 1 add an empty line before verbose text
+.\" 2 add an empty line after verbose text
+.\" 3 numbered lines (controlled by the string Verbnm)
+.\" 4 indent text by the numbervariable Verbin.
+.de VERBON
+.br
+.nr misc*verb 0\\$1
+.if (0\\n[misc*verb]%4)/2 .SP \\n[Lsp]u
+.misc@ev-keep misc*verb-ev
+.nf
+.if (0\\n[misc*verb]%16)/8 .nm \\*[Verbnm]
+.ie !'\\$3'' .ft \\$3
+.el .ft CR
+.ie 0\\$2 \{\
+. ss \\$2
+. ps \\$2
+. vs \\$2
+.\}
+.el .ss 12
+.ta T 8u*\w@n@u
+.if (0\\n[misc*verb]%32)/16 .in +\\n[Verbin]u
+.if 0\\n[misc*verb]%2 \{\
+. eo
+. nr @verbose-flag 1 \" tell pageheader to set ec/eo
+.\}
+..
+.de VERBOFF
+.ec
+.br
+.if (0\\n[misc*verb]%8)/4 .SP \\n[Lsp]u
+.if (0\\n[misc*verb]%16)/8 .nm
+.if (0\\n[misc*verb]%32)/16 .in
+.ev
+.nr @verbose-flag 0
+..
+.\" ######## module pict #################
+.nr pict*width 0
+.nr pict*height 0
+.nr pict*mode 0
+.nr pict*ind 0
+.nr pict*id 0 1
+.\" I assume that the number variable pict*id is the same
+.\" between two runs.
+.de PIC
+.br
+.nr pict*ind 0
+.nr pict*box 0
+.while \\n[.$]>0 \{\
+. if '-B'\\$1' \{\
+. nr pict*box 1
+. shift
+. continue
+. \}
+. if '-L'\\$1' \{\
+. nr pict*mode 0
+. shift
+. continue
+. \}
+. if '-R'\\$1' \{\
+. nr pict*mode 1
+. shift
+. continue
+. \}
+. if '-I'\\$1' \{\
+. nr pict*ind (m;\\$2)
+. nr pict*mode 2
+. shift 2
+. continue
+. \}
+. if '-C'\\$1' \{\
+. nr pict*mode 3
+. shift
+. continue
+. \}
+. ds pict*f \\$1
+. nr pict*id +1
+. shift
+. if \\n[.$]>0 \{\
+. nr pict*width (i;\\$1)
+. shift
+. \}
+. if \\n[.$]>0 \{\
+. nr pict*height (i;\\$1)
+. shift
+. \}
+.\}
+.if \\n[Ref]>0 \{\
+. tm .\\\\" PIC id \\n[pict*id]
+. tm .\\\\" PIC file \\*[pict*f]
+.\}
+.if d pict*file!\\n[pict*id] \{\
+. ds pict*f \\*[pict*file!\\n[pict*id]]
+. nr pict*llx \\n[pict*llx!\\n[pict*id]]
+. nr pict*lly \\n[pict*lly!\\n[pict*id]]
+. nr pict*urx \\n[pict*urx!\\n[pict*id]]
+. nr pict*ury \\n[pict*ury!\\n[pict*id]]
+. \"
+. nr pict*w (p;\\n[pict*urx]-\\n[pict*llx])
+. if \\n[pict*w]<0 .nr pict*w 0-\\n[pict*w]
+. nr pict*h (p;\\n[pict*ury]-\\n[pict*lly])
+. if \\n[pict*h]<0 .nr pict*h 0-\\n[pict*h]
+. if \\n[pict*width]>0 \{\
+. nr pict*rs (u;1000*\\n[pict*width]/\\n[pict*w])
+. nr pict*w (u;\\n[pict*w]*\\n[pict*rs]/1000)
+. nr pict*h (u;\\n[pict*h]*\\n[pict*rs]/1000)
+. \}
+. if \\n[pict*height]>0 \{\
+. nr pict*rs (u;1000*\\n[pict*height]/\\n[pict*h])
+. nr pict*h (u;\\n[pict*h]*\\n[pict*rs]/1000)
+. \}
+. if '0'\\n[pict*mode]' \{\
+. nr pict*in \\n[.i]u
+. \}
+. if '1'\\n[pict*mode]' \{\
+. nr pict*in (u;\\n[.l]-\\n[.i]-\\n[pict*w])
+. \}
+. if '2'\\n[pict*mode]' \{\
+. nr pict*in \\n[pict*ind]u
+. \}
+. if '3'\\n[pict*mode]' \{\
+. nr pict*in (u;(\\n[.l]-\\n[.i]-\\n[pict*w])/2)
+. \}
+. ds pict*h "
+. if \\n[pict*h]>0 .ds pict*h \\n[pict*h]
+. \"
+. ne \\n[pict*h]u
+. \"
+. \" these lines are copied and modified from tmac.pspic.
+. \" Originally written by James Clark
+. br
+. ie \\n[pict*box]>0 \{\
+\h'\\n[pict*in]u'\
+\Z'\D'p 0 \\n[pict*h]u \\n[pict*w]u 0 0 -\\n[pict*h]u''\
+\v'\\n[pict*h]u'\X'ps: import \\*[pict*f] \
+\\n[pict*llx] \\n[pict*lly] \\n[pict*urx] \\n[pict*ury] \\n[pict*w] \\n[pict*h]'
+.\}
+. el \{\
+\h'\\n[pict*in]u'\
+\X'ps: invis'\
+\Z'\D'p 0 \\n[pict*h]u \\n[pict*w]u 0 0 -\\n[pict*h]u''\
+\X'ps: endinvis'\
+\v'\\n[pict*h]u'\X'ps: import \\*[pict*f] \
+\\n[pict*llx] \\n[pict*lly] \\n[pict*urx] \\n[pict*ury] \\n[pict*w] \\n[pict*h]'
+. \}
+. br
+. sp \\n[pict*h]u
+.\}
+..
+.\" external picture
+.de EPIC
+.if \\n[.$]< 2 .@error "EPIC: Not enough arguments"
+.nr pict*w \\$1
+.nr pict*h \\$2
+.ds pict*name "External picture
+.if !''$3' .ds pict*name \\$3
+\&
+.br
+.ne \\n[pict*h]u
+.sp \\n[pict*h]u
+.nr pict*ind (u;(\\n[.l]-\\n[.i]-\\n[pict*w])/2)
+.in +\\n[pict*ind]u
+\D'l \\n[pict*w]u 0'\
+\D'l 0 -\\n[pict*h]u'\
+\D'l -\\n[pict*w]u 0'\
+\D'l 0 \\n[pict*h]u'\
+\v'-(u;\\n[pict*h]/2)'\
+\h'(u;(\\n[pict*w]-\w'\\*[pict*name]'/2))'\\*[pict*name]
+.in
+..
+.\" ######## module acc #################
+.\"-----------
+.\" accents. These are copied from mgs, written by James Clark.
+.de acc@over-def
+.ds \\$1 \Z'\v'(u;\w'x'*0+\En[rst]-\En[.cht])'\
+\h'(u;-\En[skw]+(-\En[.w]-\w'\\$2'/2)+\En[.csk])'\\$2'
+..
+.de acc@under-def
+.ds \\$1 \Z'\v'\En[.cdp]u'\h'(u;-\En[.w]-\w'\\$2'/2)'\\$2'
+..
+.acc@over-def ` \`
+.acc@over-def ' \'
+.acc@over-def ^ ^
+.acc@over-def ~ ~
+.acc@over-def : \(ad
+.acc@over-def ; \(ad
+.acc@under-def , \(ac
+.\" ######## module uni #################
+.\" unimplemented macros
+.de OK
+'tm "OK: not implemented"
+..
+.de PM
+'tm "PM: not implemented"
+..
+.\" ######## module hd #################
+.\" support for usermacro
+.nr hd*h1-page 1 \" last page-number for level 1 header.
+.nr hd*htype 0
+.ds hd*sect-pg
+.ds hd*mark
+.ds hd*suf-space
+.nr hd*need 0
+.aln ;0 hd*htype
+.als }0 hd*mark
+.als }2 hd*suf-space
+.aln ;3 hd*need
+.\"-------------
+.\" .hd@split varable index name val1 val2 ...
+.de hd@split
+.if \\$2>(\\n[.$]-3) .@error "\\$3 must have at least \\$2 values (\\*[\\$3]).
+.nr hd*sp-tmp \\$2+3
+.ds \\$1 \\$[\\n[hd*sp-tmp]]
+..
+.de HU
+.H 0 "\\$1"
+..
+.\"-------------
+.de H
+.if !r hd*cur-bline .nr hd*cur-bline \\n[nl]
+.br
+.df@print-float 2\" $$$ could be wrong...
+.\" terminate all lists
+.LC
+.init@reset
+.nr hd*level 0\\$1
+.nr hd*arg1 0\\$1
+.if !\\n[hd*level] .nr hd*level \\n[Hu]
+.\"
+.\" clear lower counters
+.nr hd*i 1 1
+.while \\n+[hd*i]<8 .if \\n[hd*level]<\\n[hd*i] .nr H\\n[hd*i] 0 1
+.\"
+.\" save last text for use in TP
+.if \\n[hd*level]=1 .ds H1txt \\$2\\$3
+.\"
+.\" This is a little fix to be able to get correct H1 heading number
+.\" in page headers. Special attention was needed when other formats are used.
+.ie !''\\g[H1]' \{\
+. ds hd*format \\g[H1]
+. af H1 0
+. nr H1h \\n[H1] 1
+. af H1 \\*[hd*format]
+.\}
+.el .nr H1h \\n[H1] 1
+.if \\n[hd*level]=1 .nr H1h +1
+.\"
+.\" Check if it's time for new page. Only if text has
+.\" appeared before.
+.if \\n[Ej]&(\\n[Ej]>=\\n[hd*level])&(\\n[nl]>\\n[hd*cur-bline]) .pg@next-page
+.\"
+.\" increment current counter
+.nr H\\n[hd*level] +1
+.\"
+.\" update pagenumber if section-page is used
+.if (\\n[hd*level]=1)&(\\n[Sectp]>0) .hd@set-page 1
+.\"
+.\" hd*mark is the text written to the left of the header.
+.ds hd*mark \\n[H1].
+.\"
+.if \\n[hd*level]>1 .as hd*mark \\n[H2]
+.\"
+.nr hd*i 2 1
+.while \\n+[hd*i]<8 .if \\n[hd*level]>(\\n[hd*i]-1) .as hd*mark .\\n[H\\n[hd*i]]
+.if \\n[Ht] .ds hd*mark \\n[H\\n[hd*level]].
+.\"
+.\" special case, no dot after level one heading if not H1dot true
+.if (\\n[hd*level]=1)&(\\n[H1dot]=0) .ds hd*mark \\n[H1]
+.\"
+.as hd*mark \ \ \" add spaces between mark and heading
+.if !\\n[hd*arg1] .ds hd*mark\" no mark for unnumbered
+.\"
+.if \\n[D]>1 .tm At header \\*[hd*mark] "\\$2"
+.nr hd*htype 0 \" hd*htype = check break and space
+. \" 0 = run-in, 1 = break only, 2 = space
+.if \\n[hd*level]<=\\n[Hb] .nr hd*htype 1
+.if \\n[hd*level]<=\\n[Hs] .nr hd*htype 2
+. \" two spaces if hd*htype == 0
+.ie (\\n[hd*htype]=0)&(\w@\\$2@) .ds hd*suf-space " \"
+.el .ds hd*suf-space
+.nr hd*need 2v \" hd*need = header need space
+.\"---------- user macro HX ------------
+.\" User exit macro to override numbering.
+.\" May change hd*mark (}0), hd*suf-space (}2) and hd*need (;3)
+.\" Can also change Hps1/2.
+.if d HX .HX \\n[hd*level] \\n[hd*arg1] "\\$2\\$3"
+.\"--------------------------------------
+.\" pre-space
+.ie \\n[hd*level]<=\\n[Hps] .SP (u;\\n[Hps2])
+.el .SP (u;\\n[Hps1])
+.\"
+.par@reset-num \\n[hd*level]\" reset numbered paragraph
+.\" start diversion to measure size of header
+.di hd*div
+\\*[hd*mark]\\$2\\$3\\*[hd*suf-space]
+.br
+.di
+.rm hd*div
+.if \\n[hd*htype] .na \" no adjust if run-in
+.if \\n[hd*htype]<2 .nr hd*need +\\n[Lsp]u \" add some extra space
+.ne \\n[hd*need]u+\\n[dn]u+.5p-1v \" this is the needed space for a header
+.\"
+.\" size and font calculations
+.hd@split hd*font \\n[hd*level] HF \\*[HF]\" get font for this level
+.ft \\*[hd*font]\" set new font
+.hd@split hd*new-ps \\n[hd*level] HP \\*[HP]\" get point size
+.ie (\\*[hd*new-ps]=0):(\w@\\*[hd*new-ps]@=0) \{\
+. if \\n[hd*htype] \{\
+. if '\\*[hd*font]'3' \{\
+. ps -1
+. vs -1
+. \}
+. if '\\*[hd*font]'B' \{\
+. ps -1
+. vs -1
+. \}
+. \}
+.\}
+.el \{\
+. ps \\*[hd*new-ps]
+. vs \\*[hd*new-ps]+2
+.\}
+.\"
+.\"---------- user macro HY -------------
+.\" user macro to reset indents
+.if d HY .HY \\n[hd*level] \\n[hd*arg1] "\\$2\\$3"
+.\"--------------------------------------
+.nr hd*mark-size \w@\\*[hd*mark]@
+.if (\\n[hd*level]<=\\n[Hc])&\\n[hd*htype] .ce\" center if level<=Hc
+.\"
+.\" finally, output the header
+\\*[hd*mark]\&\c
+.\" and the rest of the header
+.ie \\n[hd*htype] \{\
+\\$2\\$3
+. br
+.\}
+.el \\$2\\$3\\*[hd*suf-space]\&\c
+.ft 1
+.\" restore pointsize and vertical size.
+.ps \\n[@ps]u
+.vs \\n[@vs]u
+.\"
+.\" table of contents
+.if (\\n[hd*level]<=\\n[Cl])&\w@\\$2@ .toc@entry \\n[hd*level] "\\$2"
+.\" set adjust to previous value
+.SA
+.\" do break or space
+.if \\n[hd*htype] .br
+.if \\n[hd*htype]>1 .SP (u;\\n[Lsp]*\\n[Hss])
+.if \\n[hd*htype] \{\
+. \" indent if Hi=1 and Pt=1
+. if (\\n[Hi]=1)&(\\n[Pt]=1) .ti +\\n[Pi]n
+. \" indent size of mark if Hi=2
+. if \\n[hd*htype]&(\\n[Hi]>1) .ti +\\n[hd*mark-size]u
+.\}
+.nr par@ind-flag 0 \" no indent on .P if Pt=2
+.\"
+.\" check if it is time to reset footnotes
+.if (\\n[hd*level]=1)&\\n[ft*clear-at-header] .nr ft*nr 0 1
+.\"
+.\" check if it is time to reset indexes
+.if (\\n[hd*level]=1)&\\n[Sectf] \{\
+. nr lix*fg-nr 0 1
+. nr lix*tb-nr 0 1
+. nr lix*ec-nr 0 1
+. nr lix*ex-nr 0 1
+.\}
+.\"---------- user macro HZ ----------
+.if d HZ .HZ \\n[hd*level] \\n[hd*arg1] "\\$2\\$3"
+.nr hd*last-pos \\n[nl]
+.nr hd*last-hpos \\n[.k]
+.nr par@ind-flag 0
+..
+.\"--------
+.de HM
+.nr hd*i 0 1
+.while \\n+[hd*i]<8 .af H\\n[hd*i] \\$[\\n[hd*i]] 1
+..
+.\"----------------------
+.\" set page-nr, called from header
+.\"
+.de hd@set-page
+.\"
+.ie \\n[.$]>0 .nr P \\$1
+.el .nr P +1
+.\" Set section-page-string
+.ds hd*sect-pg \\n[H1]-\\n[P]
+.if \\n[Sectp]>1 .if '\\n[H1]'0' .ds hd*sect-pg "
+..
+.\"########### module pg ####################
+.\" set end of text trap
+.wh 0 pg@header
+.em pg@end-of-text
+.\"
+.ds pg*header ''- \\nP -''
+.ds pg*footer
+.if \n[N]=4 .ds pg*header ''''
+.if (\n[N]=3):(\n[N]=5) \{\
+. ds pg*header ''''
+. ds pg*footer ''\\*[hd*sect-pg]''
+.\}
+.ds pg*even-footer
+.ds pg*odd-footer
+.ds pg*even-header
+.ds pg*odd-header
+.\"
+.nr pg*top-margin 0
+.nr pg*foot-margin 0
+.nr pg*block-size 0
+.nr pg*footer-size 5\" 1v+footer+even/odd footer+2v
+.nr pg*header-size 7\" 3v+header+even/odd header+2v
+.nr pg*extra-footer-size 0
+.nr pg*extra-header-size 0
+.nr ft*note-size 0
+.nr pg*cur-column 0
+.nr pg*cols-per-page 1
+.nr pg*cur-po \n[@po]
+.nr pg*head-mark 0
+.\"
+.nr pg*ps \n[@ps]
+.nr pg*vs \n[@vs]
+.\"-------------------------
+.\" footer TRAPS: set, enable and disable
+.de pg@set-new-trap
+.nr pg*foot-trap \\n[@pl]u-(\\n[pg*block-size]u+\\n[ft*note-size]u+\\n[pg*foot-margin]u+\\n[pg*footer-size]v+\\n[pg*extra-footer-size]u)
+.\"
+.if \\n[D]>2 .tm pg*foot-trap \\n[@pl]u-(\\n[pg*block-size]u+\\n[ft*note-size]u+\\n[pg*foot-margin]u+\\n[pg*footer-size]v+\\n[pg*extra-footer-size]u) = \\n[pg*foot-trap]
+.\"
+.\" last-pos points to the position of the footer and bottom
+.\" block below foot-notes.
+.nr pg*last-pos \\n[@pl]u-(\\n[pg*block-size]u+\\n[pg*foot-margin]u+\\n[pg*footer-size]v)
+.if \\n[D]>2 .tm pg*last-pos \\n[@pl]u-(\\n[pg*block-size]u+\\n[pg*foot-margin]u+\\n[pg*footer-size]v) = \\n[pg*last-pos]
+..
+.de pg@enable-trap
+.wh \\n[pg*foot-trap]u pg@footer
+.if \\n[D]>2 .tm pg@enable-trap .t=\\n[.t] nl=\\n[nl]
+.if \\n[D]>2 .ptr
+..
+.de pg@disable-trap
+.ch pg@footer
+..
+.\" move to new trap (if changed).
+.de pg@move-trap
+.pg@disable-trap
+.pg@set-new-trap
+.pg@enable-trap
+..
+.de pg@enable-top-trap
+.\" set trap for pageheader.
+.nr pg*top-enabled 1
+..
+.de pg@disable-top-trap
+.\" remove trap for pageheader.
+.nr pg*top-enabled 0
+..
+.\" no header on the next page
+.de PGNH
+.nr pg*top-enabled (-1)
+..
+.\" set first trap for pagefooter
+.pg@enable-top-trap
+.pg@set-new-trap
+.pg@enable-trap
+.\"-------------------------
+.\" stop output and begin on next page. Fix footnotes and all that.
+.de pg@next-page
+.\".debug next-page
+.ne 999i \" activate trap
+.\" .pg@footer
+..
+.\"-------------------------
+.\" support for PX, TP and EOP.
+.als }t pg*header
+.als }e pg*even-header
+.als }o pg*odd-header
+.als TPh pg*header
+.als TPeh pg*even-header
+.als TPoh pg*odd-header
+.\"
+.als EOPf pg*footer
+.als EOPef pg*even-footer
+.als EOPof pg*odd-footer
+.\"------------------------------------------------------------
+.\" HEADER
+.de pg@header
+.if \\n[D]>1 .tm Page# \\n[%] (\\n[.F]:\\n[c.])
+.if \\n[Idxf] \{\
+.tl '<pagenr\ \\n[%]>'''
+.\}
+.\" assign current page-number to P
+.hd@set-page
+.\" reset spacing
+.nr line*lp\\n[.z] 0
+.nr line*ac\\n[.z] 0
+.\"
+.\" suppress pageheader if pagenumber == 1 and N == [124]
+.if \\n[pg*top-enabled] \{\
+.\" must be fixed!!
+.\". pg@disable-top-trap
+. if \\n[pg*extra-header-size] 'sp \\n[pg*extra-header-size]u
+. if \\n[pg*top-margin] 'sp \\n[pg*top-margin]u
+. ev pg*tl-ev
+. pg@set-env
+. ie d let@header .let@header
+. el \{\
+. ie d TP .TP
+. el \{\
+' sp 3
+. ie ((\\n[%]=1)&((\\n[N]=1):(\\n[N]=2))) .sp
+. el .tl \\*[pg*header]
+. ie o .tl \\*[pg*odd-header]
+. el .tl \\*[pg*even-header]
+' sp 2
+. \}
+. \}
+. ev
+. \" why no-space??
+. if d PX \{\
+. ns
+. PX
+. rs
+. \}
+. \" check for pending footnotes
+. ft@check-old
+. \"
+. \" back to normal text processing
+. pg@enable-trap
+. \" mark for multicolumn
+. nr pg*head-mark \\n[nl]u
+. \" reset NCOL pointer at each new page.
+. nr pg*last-ncol 0
+. \" set multicolumn
+. \"
+. pg@set-po
+. \" print floating displays
+. df@print-float 4
+. tbl@top-hook
+. ns
+.\}
+.if \\n[pg*top-enabled]<0 .nr pg*top-enabled 1
+.nr hd*cur-bline \\n[nl] \" .H needs to know if output has occured
+..
+.\"---------------------------------------------------------
+.\" FOOTER
+.de pg@footer
+.ec
+.if \\n[D]>2 .tm Footer# \\n[%] (\\n[.F]:\\n[c.])
+.pg@disable-trap
+.\".debug footer
+.tbl@bottom-hook
+.\" increment pageoffset for MC
+.\" move to the exact start of footer.
+'sp |\\n[pg*foot-trap]u+1v
+.\"
+.if \\n[D]>3 .tm FOOTER after .sp
+.\" print footnotes
+.if d ft*div .ft@print
+.\"
+.pg@inc-po
+.if !\\n[pg*cur-column] .pg@print-footer
+.\" next column
+.pg@set-po
+.pg@enable-trap
+.if \\n[@verbose-flag] .eo \" to help VERBON/VERBOFF
+..
+.\"-------------------------
+.de pg@print-footer
+.\" jump to the position just below the foot-notes.
+'sp |\\n[pg*last-pos]u+1v
+.\" check if there are any bottom block
+.if d pg*block-div .pg@block
+.\"
+.\" print the footer and eject new page
+.ev pg*tl-ev
+.pg@set-env
+.\" user defined end-of-page macro
+.ie d EOP .EOP
+.el \{\
+. ie o .tl \\*[pg*odd-footer]
+. el .tl \\*[pg*even-footer]
+. ie (\\n[%]=1)&(\\n[N]=1) .tl \\*[pg*header]
+. el .tl \\*[pg*footer]
+. tl ''\\*[Pg_type!\\n[@copy_type]]''
+.\}
+.ev
+.\" be sure that floating displays and footnotes will be
+.\" printed at the end of the document.
+.ie (\\n[df*fnr]>=\\n[df*o-fnr]):\\n[ft*exist] \{\
+. ev ne
+' bp
+. ev
+.\}
+.el 'bp
+..
+.\"-------------------------
+.\"
+.\" Initialize the title environment
+.de pg@set-env
+'na
+'nh
+'in 0
+'ti 0
+.ie \\n[Pgps] \{\
+. ps \\n[@ps]u
+. vs \\n[@vs]u
+.\}
+.el \{\
+. ps \\n[pg*ps]u
+. vs \\n[pg*vs]u
+.\}
+.lt \\n[@ll]u
+..
+.\"-------------------------
+.de PH
+.ds pg*header "\\$1
+.pg@set-new-size
+..
+.de PF
+.ds pg*footer "\\$1
+.pg@set-new-size
+..
+.de OH
+.ds pg*odd-header "\\$1
+.pg@set-new-size
+..
+.de EH
+.ds pg*even-header "\\$1
+.pg@set-new-size
+..
+.de OF
+.ds pg*odd-footer "\\$1
+.pg@set-new-size
+..
+.de EF
+.ds pg*even-footer "\\$1
+.pg@set-new-size
+..
+.de pg@clear-hd
+.ds pg*even-header
+.ds pg*odd-header
+.ds pg*header
+..
+.de pg@clear-ft
+.ds pg*even-footer
+.ds pg*odd-footer
+.ds pg*footer
+..
+.de pg@set-new-size
+.nr pg*ps \\n[@ps]
+.nr pg*vs \\n[@vs]
+.pg@move-trap
+..
+.\"-------------------------
+.\" end of page processing
+.de pg@footnotes
+.\".debug footnotes
+.\" output footnotes. set trap for block
+.\"
+..
+.\"-------------------------
+.\" print bottom block
+.de pg@block
+.ev pg*block-ev
+'nf
+'in 0
+.ll 100i
+.pg*block-div
+.br
+.ev
+..
+.\"-------------------------
+.\" define bottom block
+.de BS
+.misc@ev-keep pg*block-ev
+.init@reset
+.br
+.di pg*block-div
+..
+.\"-------------------------
+.de BE
+.br
+.di
+.nr pg*block-size \\n[dn]u
+.ev
+.pg@move-trap
+..
+.\"-------------------------
+.\" print out all pending text
+.de pg@end-of-text
+.if \\n[D]>2 .tm ---------- End of text processing ----------------
+.df@eot-print
+.ref@eot-print
+..
+.\"-------------------------
+.\" set top and bottom margins
+.de VM
+.if \\n[.$]=0 \{\
+. nr pg*extra-footer-size 0
+. nr pg*extra-header-size 0
+.\}
+.if \\n[.$]>0 .nr pg*extra-header-size (v;\\$1)
+.if \\n[.$]>1 .nr pg*extra-footer-size (v;\\$2)
+.if \\n[D]>2 \{\
+. tm extra top \\n[pg*extra-footer-size]
+. tm extra bottom \\n[pg*extra-header-size]
+.\}
+.pg@move-trap
+..
+.\"---------------------
+.\" multicolumn output.
+.de pg@set-po
+.if \\n[pg*cols-per-page]>1 \{\
+. ll \\n[pg*column-size]u
+.\}
+..
+.de pg@inc-po
+.if \\n[pg*cols-per-page]>1 \{\
+. ie \\n+[pg*cur-column]>=\\n[pg*cols-per-page] \{\
+. nr pg*cur-column 0 1
+. nr pg*cur-po \\n[@po]u
+. po \\n[@po]u
+. ll \\n[@ll]u
+. \}
+. el \{\
+. nr pg*cur-po +(\\n[pg*column-size]u+\\n[pg*column-sep]u)
+. po \\n[pg*cur-po]u
+' sp |\\n[pg*head-mark]u
+. tbl@top-hook
+. \}
+.\}
+..
+.\" An argument disables the page-break.
+.de 1C
+.br
+.if \\n[pg*cols-per-page]<=1 .@error "1C: multicolumn mode not active"
+.nr pg*cols-per-page 1
+.nr pg*column-sep 0
+.nr pg*column-size \\n[@ll]
+.nr pg*ncol-i \\n[pg*cur-column]\" temp variable
+.nr pg*cur-column 0 1
+.nr pg*cur-po \\n[@po]u
+.PGFORM
+.ie !'\\$1'1' .SK
+.el \{\
+. if d ft*div \{\
+. if \\n[pg*ncol-i]>0 \{\
+. @warning 1C: footnotes will be messy
+. \}
+. \}
+. if \\n[pg*last-ncol]>0 \{\
+. sp |\\n[pg*last-ncol]u
+. nr pg*last-ncol 0
+. \}
+.\}
+..
+.de 2C
+.br
+.nr pg*head-mark \\n[nl]u
+.if \\n[pg*cols-per-page]>1 .@error "2C: multicolumn mode already active"
+.nr pg*cols-per-page 2
+.nr pg*column-sep \\n[@ll]/15
+.nr pg*column-size (\\n[@ll]u*7)/15
+.nr pg*cur-column 0 1
+.nr pg*cur-po \\n[@po]u
+.ll \\n[pg*column-size]u
+.\" .lt \\n[pg*column-size]u
+..
+.\" MC column-size [ column-separation ]
+.de MC
+.br
+.nr pg*head-mark \\n[nl]u
+.if \\n[pg*cols-per-page]>1 .@error "MC: multicolumn mode already active"
+.ie ''\\$1' .nr pg*column-size \\n[.l]
+.el .nr pg*column-size (n;\\$1)
+.ie ''\\$2' .nr pg*column-sep \\n[pg*column-size]/15
+.el .nr pg*column-sep (n;\\$2)
+.\"
+.\" calculate the number of columns/page
+.nr pg*cols-per-page 0
+.nr pg*i \\n[pg*column-size]
+.while \\n[pg*i]<=\\n[.l] \{\
+. nr pg*cols-per-page \\n[pg*cols-per-page]+1
+. nr pg*i \\n[pg*i]+\\n[pg*column-sep]+\\n[pg*column-size]
+.\}
+.nr pg*cur-column 0 1
+.nr pg*cur-po \\n[@po]u
+.ll \\n[pg*column-size]u
+.\" .lt \\n[pg*column-size]u
+..
+.\" begin a new column
+.de NCOL
+.br
+.if \\n[nl]>\\n[pg*last-ncol] .nr pg*last-ncol \\n[nl]
+.pg@footer
+..
+.\" skip pages
+.de SK
+.br
+.bp
+.nr pg*i 0 1
+.\" force new page by writing something invisible.
+.while \\n+[pg*i]<=(0\\$1) \{\
+\&
+. bp
+.\}
+..
+.\"-------------------------------
+.\" MULB width1 space1 width2 space2 width3 space3 ...
+.de MULB
+.br
+.nr pg*i 0 1
+.nr pg*mul-x 0 1
+.nr pg*mul-ind 0
+.nr pg*mul-last 0
+.while \\n[.$] \{\
+. nr pg*mul!\\n+[pg*i] (n;0\\$1)
+. nr pg*muls!\\n[pg*i] (n;0\\$2)
+. shift 2
+.\}
+.nr pg*mul-max-col \\n[pg*i]
+.ds pg*mul-fam \\n[.fam]
+.nr pg*mul-font \\n[.f]
+.ev pg*mul-ev
+.ps \\n[@ps]u
+.vs \\n[@vs]u
+.fam \\*[pg*mul-fam]
+.ft \\n[pg*mul-font]
+.fi
+.hy 14
+.di pg*mul-div
+.MULN
+..
+.\"-----------
+.de MULN
+.if \\n[pg*mul-x]>=\\n[pg*mul-max-col] .@error "MULN: Undefined columnwidth"
+.br
+.if \\n[.d]>\\n[pg*mul-last] .nr pg*mul-last \\n[.d]
+.rt +0
+.in \\n[pg*mul-ind]u
+.ll (u;\\n[.i]+\\n[pg*mul!\\n+[pg*mul-x]])u
+.nr pg*mul-ind +(u;\\n[pg*mul!\\n[pg*mul-x]]+\\n[pg*muls!\\n[pg*mul-x]])
+..
+.\"-----------
+.\" MULE
+.de MULE
+.br
+.if \\n[.d]>\\n[pg*mul-last] .nr pg*mul-last \\n[.d]
+.di
+.ev
+.ne \\n[pg*mul-last]u
+.nf
+.mk
+.pg*mul-div
+.rt
+.sp \\n[pg*mul-last]u
+.fi
+..
+.\"-----------
+.de OP
+.br
+.ie o .if !\\n[pg*head-mark]=\\n[nl] \{\
+. bp +1
+. bp +1
+.\}
+.el .bp
+..
+.\"########### module footnotes ###################
+.nr ft*note-size 0
+.nr ft*busy 0
+.nr ft*nr 0 1
+.nr ft*wide 0
+.nr ft*hyphen 0\" hyphenation value
+.nr ft*adjust 1\" >0 if adjust true
+.nr ft*indent 1\" >0 if text indent true (not imp. $$$)
+.nr ft*just 0\" 0=left justification, 1=right (not imp. $$$)
+.nr ft*exist 0\" not zero if there are any footnotes to be printed
+.nr ft*clear-at-header 0\" >0 if footnotes should be reset at first level head.
+.\"
+.ds F \v'-.4m'\s-3\\n+[ft*nr]\s0\v'.4m'
+.\"
+.\"-----------------
+.\" init footnote environment
+.de ft@init
+.\" indentcontrol not implemented $$$
+.\" label justification not implemented $$$
+'in 0
+'fi
+.ie \\n[ft*adjust] 'ad
+.el 'na
+.ie \\n[ft*hyphen] 'hy 14
+.el 'hy 0
+.ll \\n[@cur-ll]u
+.lt \\n[@cur-ll]u
+.ps (p;\\n[@ps]u-2)
+.vs (p;\\n[@vs]u-1)
+..
+.\"-----------------
+.\" set footnote format
+.\" no support for two column processing (yet). $$$
+.de FD
+.if \\n[.$]=0 .@error "FD: bad arg \\$1"
+.ie \\n[.$]=2 .nr ft*clear-at-header 1
+.el .nr ft*clear-at-header 0
+.\"
+.if !'\\$1'' \{\
+. ie \\$1>11 .nr ft*format 0
+. el .nr ft*format \\$1
+. \"
+. nr ft*hyphen (\\n[ft*format]%2)*14
+. nr ft*format \\n[ft*format]/2
+. \"
+. nr ft*adjust 1-(\\n[ft*format]%2)
+. nr ft*format \\n[ft*format]/2
+. \"
+. nr ft*indent 1-(\\n[ft*format]%2)
+. nr ft*format \\n[ft*format]/2
+. \"
+. nr ft*just \\n[ft*format]%2
+.\}
+..
+.\"---------------
+.\" Footnote and display width control $$$
+.de WC
+.nr ft*i 0 1
+.while \\n+[ft*i]<=\\n[.$] \{\
+. ds ft*x \\$[\\n[ft*i]]
+. if '\\*[ft*x]'N' \{\
+. nr ft*wide 0
+. nr ft*first-fn 0
+. nr ds*wide 0
+. nr ds*float-break 1
+. \}
+. if '\\*[ft*x]'-WF' .nr ft*wide 0
+. if '\\*[ft*x]'WF' .nr ft*wide 1
+. if '\\*[ft*x]'-FF' .nr ft*first-fn 0
+. if '\\*[ft*x]'FF' .nr ft*first-fn 1
+. if '\\*[ft*x]'-WD' \{\
+. nr ds*wide 0
+. if r ft*df-save \{\
+. nr Df \\n[ft*df-save]
+. rm ft*df-save
+. \}
+. \}
+. if '\\*[ft*x]'WD' \{\
+. nr ds*wide 1
+. nr ft*df-save \\n[Df]
+. nr Df 4
+. \}
+. if '\\*[ft*x]'-FB' .nr ds*float-break 0
+. if '\\*[ft*x]'FB' .nr ds*float-break 1
+. if \\n[D]>1 .tm WC WF=\\n[ft*wide] WD=\\n[ds*wide]
+.\}
+..
+.\"-----------------
+.\" begin footnote
+.\" Change environment, switch to diversion and print the foot-note mark.
+.de FS
+.if \\n[ft*busy] .@error "FS: missing FE"
+.nr ft*busy 1
+.ev ft*ev
+.ft@init
+.if !\\n[ft*wide] .pg@set-po
+.di ft*tmp-div
+.nr ft*space (u;\\n[Fs]*\\n[Lsp])
+.sp \\n[ft*space]u
+.\" print mark
+.ie \\n[.$] .ds ft*mark \\$1
+.el .ds ft*mark \\n[ft*nr].
+\\*[ft*mark]
+.in +.75c
+.sp -1
+.nr ft*exist 1
+..
+.\"-----------------
+.\" init footnote diversion
+.de ft@init-footnote
+.di ft*div
+\l'20n'
+.br
+.di
+.nr ft*note-size \\n[dn]
+..
+.\"-----------------
+.\" end footnote
+.\" End the diversion, back to previous environment, and adjust
+.\" the trap to the new foot-note size.
+.de FE
+.nr ft*busy 0
+.br
+.di
+'in 0
+'nf
+.if \\n[@pl]u<\\n[dn]u .@error "FE: too big footnote"
+.if !d ft*div .nr dn +1v
+.if \\n[D]>3 .tm FE: foot-trap=\\n[pg*foot-trap] .d=\\n[.d] dn=\\n[dn]
+.ie (\\n[pg*foot-trap]u-\\n[.d]u)<\\n[dn]u \{\
+. da ft*next-div
+. ft*tmp-div
+. br
+. di
+.\}
+.el \{\
+. if !d ft*div .ft@init-footnote
+. da ft*div
+. ft*tmp-div
+. di
+. nr ft*note-size +\\n[dn]
+.\}
+.rm ft*tmp-div
+.ev
+.pg@move-trap
+..
+.\"-----------------
+.\" print footnotes, see pg@footer
+.de ft@print
+.ev ft*print-ev
+'nf
+'in 0
+.ll 100i
+.ft*div
+.br
+.ev
+.rm ft*div
+.nr ft*note-size 0
+.pg@move-trap
+..
+.\"-----------------
+.\" check if any pending footnotes, see pg@header
+.de ft@check-old
+.if d ft*next-div \{\
+. ev ft*ev
+. ft@init
+. ft@init-footnote
+. nf
+. in 0
+. da ft*div
+. ft*next-div
+. di
+. nr ft*note-size +\\n[dn]
+. rm ft*next-div
+. ev
+. nr ft*exist 0
+. pg@move-trap
+.\}
+..
+.\"########### module display ###################
+.nr ds*wide 0\" >0 if wide displays wanted
+.nr df*fnr 0 1\" floating display counter
+.nr df*o-fnr 1\" floating display counter, already printed
+.nr ds*snr 0 1\" static display counter
+.nr ds*lvl 0 1\" display level
+.nr ds*float-busy 0\" >0 if printing float
+.nr df*float 0 >0 if previous display was floating
+.\"--------------------------------------------
+.de DE
+.ie \\n[df*float] .df@end \\$@
+.el .ds@end \\$@
+..
+.\"--------------------------------------------
+.\" floating display start
+.\" nested DF/DE is not allowed.
+.de DF
+.if \\n[df*float] .@error "DF:nested floating is not allowed. Use DS."
+.ds@set-format \\$@
+.\"
+.nr df*old-ll \\n[.l]
+.nr ds*ftmp \\n[.f]
+.misc@ev-keep df*ev
+.ft \\n[ds*ftmp]
+.\"
+.init@reset
+.di df*div
+'in 0
+.\"
+.ds@set-new-ev \\n[df*old-ll]
+.SP \\n[Lsp]u
+.nr df*float 1
+..
+.\"--------------------------------------------
+.de df@end
+.br
+.SP \\n[Lsp]u
+.di
+.nr df*width!\\n+[df*fnr] \\n[dl]
+.nr df*height!\\n[df*fnr] \\n[dn]
+.nr df*wide!\\n[df*fnr] \\n[ds*wide]
+.nr df*format!\\n[df*fnr] \\n[ds*format]
+.ev
+.if \\n[D]>2 .tm DF:fnr=\\n[df*fnr] w=\\n[dl] h=\\n[dn] wide=\\n[ds*wide] \
+ form=\\n[ds*format]
+.\" move div to the floating display list
+.rn df*div df*fdiv!\\n[df*fnr]
+.\"
+.nr par@ind-flag 0
+.\" print float if queue is empty and the display fits into
+.\" the current page
+.if ((\\n[df*fnr]>=\\n[df*o-fnr])&(\\n[dn]<\\n[.t])) .df@print-float 1
+.nr df*float 0
+..
+.\"-------------
+.\" called by end-of-text
+.de df@eot-print
+.br
+.if \\n[df*o-fnr]<=\\n[df*fnr] \{\
+. if \\n[D]>2 .tm Print remaining displays.
+.\" still some floats left, make non-empty environment
+. misc@ev-keep ne
+. init@reset
+\c
+. df@print-float 3
+. ev
+.\}
+..
+.\"---------------
+.\" print according to Df and De.
+.\" .df@print-float type
+.\" type called from
+.\" 1 .DE
+.\" 2 end of section
+.\" 3 end of document
+.\" 4 beginning of new page
+.\"
+.de df@print-float
+.if \\n[Df]>5 .@error "Df=\\n[Df], max value is 5"
+.if !\\n[ds*float-busy] \{\
+. nr ds*float-busy 1
+.\" at .DE
+. if \\n[D]>3 .tm print-float: .t=\\n[.t], h=\\n[df*height!\\n[df*o-fnr]]
+. \" Df = 1 or 5
+. if (\\$1=1)&((\\n[Df]=1):(\\n[Df]=5)) \{\
+. if \\n[.t]>\\n[df*height!\\n[df*o-fnr]] \{\
+. \" Print only new displays.
+. if \\n[df*o-fnr]=\\n[df*fnr] \{\
+. br
+. ds@print-one-float
+. \}
+. \}
+. \}
+. \" Df = 3
+. if (\\$1=1)&(\\n[Df]=3) \{\
+. if \\n[.t]>\\n[df*height!\\n[df*o-fnr]] \{\
+. br
+. ds@print-one-float
+. \}
+. \}
+.\" print all if Df<2 and end of section
+. if (\\$1=2)&(\\n[Sectp]>0)&(\\n[Df]<2) \{\
+. br
+. ds@print-all-floats
+. \}
+.\" print all if end of document. Where should they go instead?
+. if \\$1=3 \{\
+. br
+. ds@print-all-floats
+.\}
+.\" new page
+. if (\\$1=4)&(\\n[Df]>1) \{\
+. if \\n[Df]=2 .ds@print-one-float
+. if \\n[Df]=3 .ds@print-one-float
+. if \\n[Df]>3 \{\
+. ie \\n[De] .ds@print-all-floats
+. el .ds@print-this-page
+. \}
+. \}
+. nr ds*float-busy 0
+.\}
+..
+.\"---------------
+.\" DF out
+.\" print a floating diversion
+.de ds@output-float
+.nr df*old-ll \\n[.l]
+.nr df*old-in \\n[.i]
+.ev ds*fev
+.nf
+.nr df*i \\n[df*o-fnr]
+.nr df*f \\n[df*format!\\n[df*i]]
+.\"
+.in \\n[df*old-in]u
+.if \\n[df*f]=1 'in +\\n[Si]n
+.if \\n[df*f]>=2 'in 0
+.if \\n[df*f]=2 'ce 9999
+.if \\n[df*f]=3 'in (u;(\\n[.l]-\\n[df*width!\\n[df*i]])/2)
+.if \\n[df*f]=4 'rj 9999
+.if \\n[df*f]=5 'in (u;\\n[.l]-\\n[df*width!\\n[df*i]])
+.\"
+.\"
+.df*fdiv!\\n[df*o-fnr]
+.\"
+.if \\n[df*f]=2 'ce 0
+.if \\n[df*f]=4 'rj 0
+.ev
+.rm df*fdiv!\\n[df*i]
+.rm df*height!\\n[df*i]
+.rm df*format!\\n[df*i]
+.if \\n[df*wide!\\n[df*i]] .nr pg*head-mark \\n[nl]u
+.nr df*o-fnr +1
+..
+.\"---------------
+.\" print one floating display if there is one.
+.de ds@print-one-float
+.if \\n[df*o-fnr]<=\\n[df*fnr] \{\
+. if \\n[D]>3 .tm print-one-float: .t=\\n[.t], h=\\n[df*height!\\n[df*o-fnr]]
+. if \\n[.t]<\\n[df*height!\\n[df*o-fnr]] .pg@next-page
+. ds@output-float
+. if \\n[De] .pg@next-page
+.\}
+..
+.\"---------------
+.\" print all queued floats.
+.\" if De>0 do a page eject between the floats.
+.de ds@print-all-floats
+.while \\n[df*o-fnr]<=\\n[df*fnr] \{\
+. if \\n[D]>3 .tm print-all-floats: .t=\\n[.t], h=\\n[df*height!\\n[df*o-fnr]]
+. if \\n[.t]<\\n[df*height!\\n[df*o-fnr]] .pg@next-page
+. br
+\c
+. ds@output-float
+. if \\n[De] .pg@next-page
+.\}
+..
+.\"---------------
+.\" print as many floats as will fit on the current page
+.de ds@print-this-page
+.while \\n[df*o-fnr]<=\\n[df*fnr] \{\
+. if \\n[D]>3 .tm print-this-page: .t=\\n[.t], h=\\n[df*height!\\n[df*o-fnr]]
+. if \\n[.t]<\\n[df*height!\\n[df*o-fnr]] .break
+. ds@output-float
+.\}
+..
+.\"---------------------------------------------------
+.\" get format of the display
+.de ds@set-format
+.ie \\n[.$] \{\
+. ie r ds*format!\\$1 .nr ds*format \\n[ds*format!\\$1]
+. el .@error "DS/DF:wrong format:\\$1"
+.\}
+.el .nr ds*format 0
+.if \\n[D]>2 .tm set format=\\n[ds*format]
+.\" fill or not to fill, that is the...
+.nr ds*fill 0
+.ie \\n[.$]>1 \{\
+. ie r ds*fill!\\$2 .nr ds*fill \\n[ds*fill!\\$2]
+. el .@error "\\*[ds*type]:wrong fill:\\$2"
+.\}
+.if \\n[D]>2 .tm set fill=\\n[ds*fill]
+.nr ds*rindent 0
+.if \\n[.$]>2 .nr ds*rindent \\$3
+.if \\n[D]>2 .tm set indent=\\n[ds*rindent]
+..
+.\"-----------------------------
+.\" .ds@set-new-ev previous-line-length
+.de ds@set-new-ev
+.ll \\$1u
+.lt \\$1u
+.if \\n[ds*rindent] \{\
+. ll -\\n[ds*rindent]n
+. lt -\\n[ds*rindent]n
+.\}
+.if \\n[ds*wide] \{\
+. ll \\n[@ll]u
+. lt \\n[@ll]u
+.\}
+.\"
+.ie \\n[ds*fill] 'fi
+.el 'nf
+..
+.\"--------------------------------------------------------
+.nr ds*format 0\" dummy value for .En/.EQ
+.nr ds*format! 0\" no indent
+.nr ds*format!0 0\" no indent
+.nr ds*format!L 0\" no indent
+.nr ds*format!I 1\" indent
+.nr ds*format!1 1\" indent
+.nr ds*format!C 2\" center each line
+.nr ds*format!2 2\" center each line
+.nr ds*format!CB 3\" center as block
+.nr ds*format!3 3\" center as block
+.nr ds*format!R 4\" right justify each line
+.nr ds*format!4 4\" right justify each line
+.nr ds*format!RB 5\" right justify as block
+.nr ds*format!5 5\" right justify as block
+.\"---------------
+.nr ds*fill! 0\" no fill
+.nr ds*fill!N 0\" no fill
+.nr ds*fill!0 0\" no fill
+.nr ds*fill!F 1\" fill on
+.nr ds*fill!1 1\" fill on
+.\"--------------------------------------------
+.\" static display start
+.\" nested DS/DE is allowed. No limit on depth.
+.de DS
+.br
+.nr ds*lvl +1
+.ds@set-format \\$@
+.\"
+.nr ds*old-ll \\n[.l]
+.nr ds*old-in \\n[.i]
+.misc@push ds-ll \\n[.l]
+.misc@push ds-form \\n[ds*format]
+.nr ds*i \\n[.i]
+.nr ds*ftmp \\n[.f]
+.misc@ev-keep ds*ev!\\n+[ds*snr]
+.ft \\n[ds*ftmp]
+.\"
+.init@reset
+.\" indent in a diversion doesn't seem like a good idea.
+'in 0
+.di ds*div!\\n[ds*snr]
+.\"
+.ds@set-new-ev \\n[ds*old-ll]
+.nr df*float 0
+..
+.\"--------------------------------------------
+.de ds@end
+.if \\n-[ds*lvl]<0 .@error "DE: no corresponding DS"
+.br
+.di
+.\" **********
+.nr ds*width \\n[dl]
+.nr ds*height \\n[dn]
+.misc@pop-nr ds-ll ds*old-ll
+.misc@pop-nr ds-form ds*format
+.\"
+.\" **********
+'nf
+.\" calculate needed space
+.nr ds*need \\n[ds*height]
+.nr ds*i \\n[pg*foot-trap]-\\n[pg*header-size]v-\\n[pg*extra-header-size]v
+.if (\\n[ds*height]>\\n[ds*i])&(\\n[.t]<(\\n[ds*i]/2)) .nr ds*need \\n[.t]u+1v
+.if (\\n[ds*height]<\\n[ds*i])&(\\n[.t]<(\\n[ds*height])) .nr ds*need \\n[.t]u+1v
+.\" Eject page if display will fit one page and
+.\" there are less than half of the page left.
+.if \\n[ds*need] .ne \\n[ds*need]u
+.\"
+.\" check if pending equation label
+.eq@check \\n[ds*need]
+'in \\n[ds*old-in]u
+.if \\n[ds*format]=1 'in \\n[ds*old-in]u+\\n[Si]n
+.if \\n[ds*format]>=2 'in 0
+.if \\n[ds*format]=2 'ce 9999
+.if \\n[ds*format]=3 'in (u;(\\n[.l]-\\n[ds*width])/2)
+.if \\n[ds*format]=4 'rj 9999
+.if \\n[ds*format]=5 'in (u;\\n[.l]-\\n[ds*width])
+.\" **********
+.\"
+.\" Print static display
+.nr ds*i \\n[Lsp]
+.if r Dsp .nr ds*i \\n[Dsp]
+.\"
+.if \\n[Ds] .SP \\n[ds*i]u
+.ds*div!\\n[ds*snr]
+.if \\n[Ds] .SP \\n[ds*i]u
+.\"
+.if \\n[ds*format]=2 'ce 0
+.if \\n[ds*format]=4 'rj 0
+.rm ds*div!\\n[ds*snr]
+.nr ds*snr -1
+.nr par@ind-flag 0
+.ev
+..
+.\"########### module list ###################
+.\" .LI text-indent mark-indent pad type [mark [LI-space [LB-space] ] ]
+.\"
+.nr li*tind 0
+.nr li*mind 0
+.nr li*pad 0
+.nr li*type 0
+.ds li*mark 0
+.nr li*li-spc 0
+.nr li*lvl 0 1
+.aln :g li*lvl
+.nr li*cur-vpos 0
+.\"--------------------------
+.\" the major list-begin macro.
+.\" If type == -1 a 'break' will occur.
+.de LB
+.if \\n[.$]<4 .@error "LB: not enough arguments, min 4"
+.misc@push cind \\n[.i]
+.misc@push tind \\n[li*tind]
+.misc@push mind \\n[li*mind]
+.misc@push pad \\n[li*pad]
+.misc@push type \\n[li*type]
+.misc@push li-spc \\n[li*li-spc]
+.ds li*mark-list!\\n[li*lvl] \\*[li*mark]
+.nr li*lvl +1
+.\"
+.nr li*tind (n;0\\$1)\" text-indent
+.nr li*mind (n;0\\$2)\" mark-indent
+.nr li*pad (n;0\\$3)\" pad
+.nr li*type 0\\$4\" type
+.ds li*mark \\$5\" mark
+.ie !'\\$6'' .nr li*li-spc \\$6\" LI-space
+.el .nr li*li-spc 1
+.ie !'\\$7'' .nr li*lb-spc \\$6\" LB-space
+.el .nr li*lb-spc 0
+.\" init listcounter
+.nr li*cnt!\\n[li*lvl] 0 1
+.\" assign format
+.af li*cnt!\\n[li*lvl] 1
+.if \\n[li*type] .if !'\\*[li*mark]'' .af li*cnt!\\n[li*lvl] \\*[li*mark]
+.\"
+.if \\n[li*lb-spc] .SP (u;\\n[li*lb-spc]*\\n[Lsp])
+.in +\\n[li*tind]u
+..
+.\"---------------
+.de LI
+.if \\n[li*lvl]<1 .@error "LI:no lists active"
+.if \\n[li*li-spc]&(\\n[Ls]>=\\n[li*lvl]) .SP (u;\\n[li*li-spc]*\\n[Lsp])
+.ne 2v
+.\"
+.ds li*c-mark \\*[li*mark]
+.nr li*cnt!\\n[li*lvl] +1
+.if \\n[li*type]=1 .ds li*c-mark \\n[li*cnt!\\n[li*lvl]].
+.if \\n[li*type]=2 .ds li*c-mark \\n[li*cnt!\\n[li*lvl]])
+.if \\n[li*type]=3 .ds li*c-mark (\\n[li*cnt!\\n[li*lvl]])
+.if \\n[li*type]=4 .ds li*c-mark [\\n[li*cnt!\\n[li*lvl]]]
+.if \\n[li*type]=5 .ds li*c-mark <\\n[li*cnt!\\n[li*lvl]]>
+.if \\n[li*type]=6 .ds li*c-mark {\\n[li*cnt!\\n[li*lvl]]}
+.if \\n[.$]=1 .ds li*c-mark \\$1
+.ie \\n[.$]=2 \{\
+. ie (\\$2=2):(\\n[Limsp]=0) .ds li*c-mark \\$1\\*[li*c-mark]
+. el .ds li*c-mark \\$1\ \\*[li*c-mark]
+.\}
+.\"
+.\" determine where the text begins
+.nr li*text-begin \\n[li*tind]>?\w@\\*[li*c-mark]\ @
+.nr x \w@\\*[li*c-mark]\ @
+.\"
+.\" determine where the mark begin
+.ie !\\n[li*pad] .nr li*in \\n[li*mind]
+.el .nr li*in \\n[li*text-begin]-\\n[li*pad]-\w@\\*[li*c-mark]@
+.if !\\n[li*in] .nr li*in 0
+.\"
+.ti -\\n[li*tind]u
+.\" no indentation if hanging indent
+.if (\w@\\*[li*c-mark]@=0)&((\\n[.$]=0):(\w@\\$1@=0)) .nr li*text-begin 0
+\Z'\&\h'\\n[li*in]u'\\*[li*c-mark]'\h'\\n[li*text-begin]u'\&\c
+.if \\n[li*type]=-1 .br
+..
+.\"
+.\"-------------
+.de li@pop
+.nr li*lvl -1
+.misc@pop-nr cind li*tmp
+.in \\n[li*tmp]u
+.misc@pop-nr tind li*tind
+.misc@pop-nr mind li*mind
+.misc@pop-nr pad li*pad
+.misc@pop-nr type li*type
+.misc@pop-nr li-spc li*li-spc
+.ds li*mark \\*[li*mark-list!\\n[li*lvl]]
+..
+.de LE
+.if \\n[li*lvl]<1 .@error "LE:mismatched"
+.li@pop
+.if '\\$1'1' .SP \\n[Lsp]u
+..
+.\"-------------
+.\" list status clear.
+.\" terminate all lists to level i
+.de LC
+.ie \\n[.$]<1 .nr li*i 0
+.el .nr li*i \\$1
+.if \\n[li*i]>\\n[li*lvl] .@error "LC: incorrect argument: \\n[li*i] (too big)"
+.while \\n[li*lvl]>\\n[li*i] .li@pop
+.nr par@ind-flag 0
+..
+.\"-------------
+.de AL
+.if \\n[.$]>3 .@error "AL: too many arguments"
+.if \\n[D]>2 .tm AL $*
+.ie \\n[.$]<=1 .LB \\n[Li] 0 2 1 "\\$1"
+.el \{\
+. ie \\n[.$]=2 .LB 0\\$2 0 2 1 "\\$1"
+. el \{\
+. ie !'\\$2'' .LB \\$2 0 2 1 "\\$1" 0 1
+. el .LB \\n[Li] 0 2 1 "\\$1" 0 1
+. \}
+.\}
+..
+.de ML
+.if \\n[.$]>3 .@error "ML: too many arguments"
+.if \\n[D]>2 .tm ML $*
+.nr li*ml-width \w@\\$1@u+1n
+.if \\n[.$]<2 .LB \\n[li*ml-width]u 0 1 0 "\\$1"
+.if \\n[.$]=2 .LB 0\\$2 0 1 0 "\\$1"
+.if \\n[.$]=3 \{\
+. ie '\\$2'' .LB \\n[li*ml-width]u 0 1 0 "\\$1" 0 1
+. el .LB \\n[Li] 0 1 0 "\\$1" 0 1
+.\}
+..
+.de VL
+.if \\n[D]>2 .tm VL $*
+.if \\n[.$]>3 .@error "VL: too many arguments"
+.if \\n[.$]<1 .@error "VL: missing text-indent"
+.ie \\n[.$]<3 .LB 0\\$1 0\\$2 0 0
+.el .LB 0\\$1 0\\$2 0 0 \& 0 1
+..
+.\" Bullet (for .BL)
+.de BL
+.if \\n[D]>2 .tm BL $*
+.ds BU \s-2\(bu\s0
+.if \\n[.$]>2 .@error "BL: too many arguments"
+.if \\n[.$]<1 .LB \\n[Pi] 0 1 0 \\*[BU]
+.if \\n[.$]=1 .LB 0\\$1 0 1 0 \\*[BU]
+.if \\n[.$]=2 \{\
+. ie '\\$1'' .LB \\n[Pi] 0 1 0 \\*[BU] 0 1
+. el .LB 0\\$1 0 1 0 \\*[BU] 0 1
+.\}
+..
+.de DL
+.if \\n[D]>2 .tm DL $*
+.if \\n[.$]>2 .@error "DL: too many arguments"
+.if \\n[.$]<1 .LB \\n[Pi] 0 1 0 \(em
+.if \\n[.$]=1 .LB 0\\$1 0 1 0 \(em
+.if \\n[.$]=2 \{\
+. ie '\\$1'' .LB \\n[Pi] 0 1 0 \(em 0 1
+. el .LB 0\\$1 0 1 0 \(em 0 1
+.\}
+..
+.de RL
+.if \\n[D]>2 .tm RL $*
+.if \\n[.$]>2 .@error "RL: too many arguments"
+.if \\n[.$]<1 .LB 6 0 2 4
+.if \\n[.$]=1 .LB 0\\$1 0 2 4
+.if \\n[.$]=2 \{\
+. ie '\\$1'' .LB 6 0 2 4 1 0 1
+. el .LB 0\\$1 0 2 4 1 0 1
+.\}
+..
+.\" Broken Variable List. As .VL but text begin on the next line
+.de BVL
+.if \\n[D]>2 .tm BVL $*
+.if \\n[.$]>3 .@error "BVL: too many arguments"
+.if \\n[.$]<1 .@error "BVL: missing text-indent"
+.ie \\n[.$]<3 .LB 0\\$1 0\\$2 0 -1
+.el .LB 0\\$1 0\\$2 0 -1 \& 0 1
+..
+.\" ####### module tbl #######################################
+.\" This module is copied from groff_ms and modified for mgm.
+.\" Yes, it does not resemble the original anymore :-).
+.\" Don't know if I missed something important.
+.\" Groff_ms is written by James Clark.
+.nr tbl*have-header 0
+.nr tbl*header-written 0
+.de TS
+.br
+.if ''\\n[.z]' .SP
+.if '\\$1'H' .di tbl*header-div
+..
+.de tbl@top-hook
+.if \\n[tbl*have-header] \{\
+. ie \\n[.t]-\\n[tbl*header-ht]-1v .tbl@print-header
+. el .sp \\n[.t]u
+.\}
+..
+.de tbl@bottom-hook
+.if \\n[tbl*have-header] \{\
+. nr T. 1
+.\" draw bottom and side lines of boxed tables.
+. T#
+.\}
+.nr tbl*header-written 0
+..
+.de tbl@print-header
+.ev tbl*ev
+'nf
+.tbl*header-div
+.ev
+.mk #T
+.nr tbl*header-written 1
+..
+.de TH
+.if '\\$1'N' @error TH: N not implemented yet. Sorry.
+.ie '\\n[.z]'tbl*header-div' \{\
+. nr T. 0
+. T#
+. br
+. di
+. nr tbl*header-ht \\n[dn]
+. ne \\n[dn]u+1v
+. nr tbl*have-header 1
+. ie '\\$1'N' .if !\\n[tbl*header-written] .tbl@print-header
+. el .tbl@print-header
+.\}
+.el .@error ".TH without .TS H"
+..
+.de TE
+.ie '\\n(.z'tbl*header-div' .@error ".TS H but no .TH before .TE"
+.el \{\
+. nr tbl*have-header 0
+.\}
+.\" reset tabs
+.TAB
+..
+.de T&
+..
+.\" ####### module pic #######################################
+.de PS
+.nr pic*in 0
+.br
+.SP .5
+.ie \\n[.$]<2 .@error "PS: bad arguments. Probably not processed with pic."
+.el \{\
+. if !\\n[ds*lvl] .ne (u;\\$1)+1v
+.\" should be contained between .DS/.DE
+.if r ds*format \{\
+. if \\n[ds*lvl]&((\\n[ds*format]=2):(\\n[ds*format]=3)) \{\
+. nr pic*in \\n[.i]
+.\" . in +(u;\\n[.l]-\\n[.i]-\\$2/2)
+. \}
+. \}
+.\}
+..
+.de PE
+.init@reset
+.SP .5
+..
+.\" ####### module eq #######################################
+.\"
+.nr eq*number 0 1
+.ds eq*label
+.de EQ
+.ds eq*label "\\$1
+..
+.de eq@check
+.if !'\\*[eq*label]'' \{\
+. mk
+' sp (u;\\$1/2-.45v)
+. ie (\\n[Eq]%2) \{\
+. \" label to the left
+\h'|0'\\*[eq*label]\c
+. \}
+. el \{\
+. \" label to the right
+\h'|\\n[.l]u'\\*[eq*label]
+. \}
+. rt
+.\}
+.ds eq*label
+..
+.de EN
+..
+.\"########### module toc ###################
+.\" table of contents
+.nr toc*slevel 1
+.nr toc*spacing \n[Lsp]u
+.nr toc*tlevel 2
+.nr toc*tab 0
+.\"-----------
+.\" Table of contents with friends (module lix)
+.de TC
+.br
+.\" print any pending displays and references
+.df@print-float 3
+.if \\n[ref*flag] .RP 0 1
+.\"
+.if \w@\\$1@>0 .nr toc*slevel \\$1
+.if \w@\\$2@>0 .nr toc*spacing (u;\\$2*\\n[Lsp])
+.if \w@\\$3@>0 .nr toc*tlevel \\$3
+.if \w@\\$4@>0 .nr toc*tab \\$4
+.if \\n[pg*cols-per-page]>1 .1C
+.ds H1txt \\*[Licon]
+.ds Tcst co
+.pg@clear-hd
+.EF ""
+.OF ""
+.pg@next-page
+.\"-------------
+.if d Ci .toc@read-Ci \\*[Ci]
+.nf
+.in 0
+.ie \\n[Oc] .hd@set-page 1
+.el \{\
+. nr toc*pn 1 1
+. af toc*pn i
+. aln ;g toc*pn
+. PF "''\\\\\\\\n[toc*pn]''"
+. am pg@header
+. nr toc*pn +1
+\\..
+.\}
+.nr toc*i 4 1
+.while \\n+[toc*i]<10 \{\
+. if !'\\$\\n[toc*i]'' \{\
+. ce
+\\$\\n[toc*i]
+. br
+. \}
+.\}
+.if \\n[.$]<=4 .if d TX .TX
+.ie d TY .if \\n[.$]<=4 .TY
+.el \{\
+. ce
+\\*[Licon]
+. br
+. SP 3
+.\}
+.if d toc*list .toc*list
+.br
+.\" print LIST OF XXX
+.if d lix*dsfg .lix@print-ds fg FG "\\*[Lf]" \\n[.$]
+.if d lix*dstb .lix@print-ds tb TB "\\*[Lt]" \\n[.$]
+.if d lix*dsec .lix@print-ds ec EC "\\*[Le]" \\n[.$]
+.if d lix*dsex .lix@print-ds ex EX "\\*[Lx]" \\n[.$]
+..
+.\"-----------
+.\" .toc@read-Ci lev1 lev2 lev3 lev4 ... lev7
+.de toc@read-Ci
+.nr toc*i 0 1
+.while \\n+[toc*i]<8 \{\
+. nr toc*hl!\\n[toc*i] \\$\\n[toc*i]
+.\}
+..
+.\"-----------
+.de toc@entry
+.ie \\n[Sectp] \{\
+. toc@save \\$1 "\\*[hd*mark]" "\\$2" \\*[hd*sect-pg]
+.\}
+.el .toc@save \\$1 "\\*[hd*mark]" "\\$2" \\n[%]
+..
+.als )E toc@entry
+.\"-----------
+.de toc@save
+.\" collect maxsize of mark if string Ci don't exist.
+.if !d Ci \{\
+. if !r toc*hl!\\$1 .nr toc*hl!\\$1 0
+. if \\n[toc*hl!\\$1]<=\w@\\$2@ \{\
+. nr toc*hl!\\$1 \w@\\$2@u
+. \}
+.\}
+.am toc*list
+.\" .toc@set level headernumber text pagenr
+.toc@set \\$1 "\\$2" "\\$3" \\$4
+\\..
+..
+.\"-----------
+.\" level mark text pagenumber
+.de toc@set
+.if \\$1<=\\n[toc*slevel] .SP \\n[toc*spacing]u
+.na
+.fi
+.nr toc*ind 0
+.nr toc*i 0 1
+.ie d Ci \{\
+. nr toc*ind +\\n[toc*hl!\\$1]u
+.\}
+.el \{\
+. while \\n+[toc*i]<\\$1 \{\
+. nr toc*ind +\\n[toc*hl!\\n[toc*i]]u
+. \}
+.\}
+.nr toc*text \\n[toc*ind]u+\\n[toc*hl!\\$1]u
+.in \\n[toc*text]u
+.ti -\\n[toc*hl!\\$1]u
+.\"
+.\" length of headernum space
+.nr toc*i \\n[toc*hl!\\$1]-\w@\\$2@
+.\"
+.ll \\n[@ll]u-\w@\\$4@u-2m
+.ne 2v
+.\" ragged right ---------------------------------
+.ie \\$1>\\n[toc*tlevel] \{\
+\\$2
+. sp -1
+\\$3\ \ \ \\$4
+. br
+.\}
+.el \{\
+. \" unnumbered heading --------------------
+. ie '\\$2'' \{\
+. in \\n[toc*ind]u
+\\$3\h'1m'
+. \}
+. \" normal heading ------------------------
+. el \{\
+\\$2
+. sp -1
+\\$3\h'1m'
+. \}
+. ll \\n[@ll]u
+. sp -1
+. nr toc*sep (u;\\n[.l]-\\n[.n]-\\n[.i]-\w@\\$4@)-1m
+\h'|\\n[.n]u'\l'\\n[toc*sep]u.'\h'1m'\\$4
+.\}
+.ll \\n[@ll]u
+..
+.\"########################### module lix ############################
+.\" LIST OF figures, tables, exhibits and equations
+.nr lix*fg-nr 0 1
+.nr lix*tb-nr 0 1
+.nr lix*ec-nr 0 1
+.nr lix*ex-nr 0 1
+.aln Fg lix*fg-nr
+.aln Tb lix*tb-nr
+.aln Ec lix*ec-nr
+.aln Ex lix*ex-nr
+.\"------------
+.de FG
+.lix@print-line fg Lf \\n+[lix*fg-nr] "\\$1" "\\$2" "\\$3" "\\$4"
+..
+.de TB
+.lix@print-line tb Lt \\n+[lix*tb-nr] "\\$1" "\\$2" "\\$3" "\\$4"
+..
+.de EC
+.lix@print-line ec Le \\n+[lix*ec-nr] "\\$1" "\\$2" "\\$3" "\\$4"
+..
+.de EX
+.lix@print-line ex Lx \\n+[lix*ex-nr] "\\$1" "\\$2" "\\$3" "\\$4"
+..
+.\"------------
+.\" print line with 'figure' in the text
+.\" type stringvar number text override flag refname
+.de lix@print-line
+.ds lix*text "\\$4
+.\"
+.ie \\n[Sectf] .ds lix*numb \\n[H1]-\\$3
+.el .ds lix*numb \\$3
+.\"
+.ie !\\n[Of] .ds lix*ds-form .\ \ \"
+.el .ds lix*ds-form "\ \(em\ \"
+.nr lix*in \\n[.i]
+.ds lix*label \\*[Li\\$1]\ \\*[lix*numb]\\*[lix*ds-form]
+.if !'\\$5'' \{\
+. if !0\\$6 .ds lix*label \\*[Li\\$1]\ \\$5\\*[lix*numb]\\*[lix*ds-form]
+. if 0\\$6=1 .ds lix*label \\*[Li\\$1]\ \\*[lix*numb]\\$5\\*[lix*ds-form]
+. if 0\\$6=2 .ds lix*label \\*[Li\\$1]\ \\$5\\*[lix*ds-form]
+.\}
+.\" print line if not between DS/DE
+.ie \\n[ds*lvl]<1&\\n[df*float]=0 \{\
+. lix@print-text "\\*[lix*label]" "\\*[lix*text]" \\$1 \\$2 \\$7
+.\}
+.el \{\
+. lix@embedded-text "\\*[lix*label]" "\\*[lix*text]" \\$1 \\$2 \\$7
+.\}
+.\"
+..
+.\"-----------
+.\" label text type stringvar refname
+.de lix@print-text
+.ie \\n[Sectp] .ds lix*pgnr \\*[hd*sect-pg]
+.el .ds lix*pgnr \\n[%]
+.SP \\n[Lsp]u
+.misc@ev-keep lix
+.init@reset
+.br
+.ie (\w@\\$1\\$2@)>(\\n[.l]-\\n[.i]) \{\
+. in +\w@\\$1@u
+. ti 0
+.\}
+.el .ce 1
+\fB\\$1\fP\\$2
+.br
+.ev
+.\" save line for LIST OF XXX, wth is the width of the label
+.if !r lix*wth\\$3 .nr lix*wth\\$3 0
+.\" find the maximum width
+.if \w@\\*[lix*label]@>\\n[lix*wth\\$3] .nr lix*wth\\$3 \w@\\*[lix*label]@
+.if \\n[\\$4] .lix@ds-save \\$3 \\*[lix*pgnr] "\\*[lix*text]" "\\*[lix*label]"
+.\" save reference to the figure
+.if !'\\$5'' .SETR \\$5 \\*[lix*numb]
+..
+.\" hide printout until diversion is evaluated
+.de lix@embedded-text
+\!.ie \\\\n[Sectp] .ds lix*pgnr \\\\*[hd*sect-pg]
+\!.el .ds lix*pgnr \\\\n[%]
+\!.SP \\\\n[Lsp]u
+\!.misc@ev-keep lix
+\!.ll \\n[.l]u
+\!.init@reset
+\!.fi
+\!.ie (\w@\\$1\\$2@)>(\\\\n[.l]-\\\\n[.i]) \{\
+. in +\w@\\$1@u
+\!. ti 0
+\!\fB\\$1\fP\\$2
+\!.\}
+\!.el \{\
+. ce 1
+\!\fB\\$1\fP\\$2
+\!.\}
+\!.br
+\!.ev
+.\" save line for LIST OF XXX, wth is the width of the label
+\!.if !r lix*wth\\$3 .nr lix*wth\\$3 0
+.\" find the maximum width
+\!.if \w@\\*[lix*label]@>\\\\n[lix*wth\\$3] .nr lix*wth\\$3 \w@\\*[lix*label]@
+\!.if \\\\n[\\$4] .lix@ds-save \\$3 \\\\*[lix*pgnr] "\\*[lix*text]" "\\*[lix*label]"
+.\" save reference to the figure
+\!.if !'\\$5'' .SETR \\$5 \\*[lix*numb]
+..
+.\"------------
+.\" print complete list of XXXX
+.de lix@print-ds
+.\" arg: fg,tb,ec,ex text
+.ds H1txt \\$3
+.ds Tcst \\$1
+.if !\\n[Cp] .pg@next-page
+.\" print LIST OF XXXX
+.\" execute user-defined macros
+.if \\$4<=4 .if d TX\\$2 .TX\\$2
+.ie d TY\\$2 .if \\$4<=4 .TY\\$2
+.el \{\
+. ce
+\\$3
+. SP 3
+.\}
+.in \\n[lix*wth\\$1]u
+.fi
+.lix*ds\\$1
+..
+.\"------------
+.\" save line of list in macro
+.de lix@ds-save
+.\" type pagenumber text
+.am lix*ds\\$1
+.lix@dsln \\$1 \\$2 "\\$3" "\\$4" \\$5
+\\..
+..
+.\"------------
+.\" print appended macro
+.\" lix@dsln type pagenumber text headernr
+.de lix@dsln
+.nr lix*i \\n[lix*wth\\$1]-\w@\\$4@
+.ne 4v
+.