Add a bunch of stuff from Wayback Machine

To reduce git log noise, some of the less relevant files shown below
have been omitted from this commit.

In particular, the sources at unroff-1.0/ have been omitted.

Also, the dist/ directory has been omitted. Those files will go into
files.scheme.org.

The misc/ directory is not linked from the front page so it has been
omitted, too. Wayback Machine does not seem to have preserved any of
the actual files in misc/, just the directory index.

$ wayback_machine_downloader http://www-rn.informatik.uni-bremen.de/software/unroff/
Downloading http://www-rn.informatik.uni-bremen.de/software/unroff/ to websites/www-rn.informatik.uni-bremen.de/ from Wayback Machine archives.

Getting snapshot pages.. found 335 snaphots to consider.

220 files to download:
http://www-rn.informatik.uni-bremen.de/software/unroff/doc/unroff.1.html -> websites/www-rn.informatik.uni-bremen.de/software/unroff/doc/unroff.1.html (1/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/doc/unroff-html-ms.1.html -> websites/www-rn.informatik.uni-bremen.de/software/unroff/doc/unroff-html-ms.1.html (2/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/doc/manual.html -> websites/www-rn.informatik.uni-bremen.de/software/unroff/doc/manual.html (3/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/examples/r.html -> websites/www-rn.informatik.uni-bremen.de/software/unroff/examples/r.html (4/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/doc/unroff-html.1.html -> websites/www-rn.informatik.uni-bremen.de/software/unroff/doc/unroff-html.1.html (5/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/examples/rel.html -> websites/www-rn.informatik.uni-bremen.de/software/unroff/examples/rel.html (6/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/ -> websites/www-rn.informatik.uni-bremen.de/software/unroff/index.html (7/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/unroff-1.0/scm/ -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/index.html (8/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/unroff-1.0/patches/ -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/patches/index.html (9/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/unroff-1.0/misc/ -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/misc/index.html (10/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/unroff-1.0/elk/ -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/elk/index.html (11/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/unroff-1.0/doc/ -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/doc/index.html (12/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/unroff-1.0/?C=S;O=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/?C=S;O=A/index.html (13/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/unroff-1.0/?C=N;O=D -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/?C=N;O=D/index.html (14/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/unroff-1.0/?C=M;O=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/?C=M;O=A/index.html (15/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/unroff-1.0/?C=D;O=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/?C=D;O=A/index.html (16/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/unroff-1.0/src/?C=S;O=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/?C=S;O=A/index.html (17/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/unroff-1.0/src/?C=N;O=D -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/?C=N;O=D/index.html (18/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/unroff-1.0/src/?C=M;O=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/?C=M;O=A/index.html (19/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/unroff-1.0/src/?C=D;O=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/?C=D;O=A/index.html (20/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/unroff-1.0/src/ -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/index.html (21/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/ -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/index.html (22/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/misc/ -> websites/www-rn.informatik.uni-bremen.de/software/unroff/misc/index.html (23/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/dist/unroff-1.0-i486-unknown-linux1.2.8.tar.gz -> websites/www-rn.informatik.uni-bremen.de/software/unroff/dist/unroff-1.0-i486-unknown-linux1.2.8.tar.gz (24/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/dist/unroff-1.0-m68k-next-ns3.tar.gz -> websites/www-rn.informatik.uni-bremen.de/software/unroff/dist/unroff-1.0-m68k-next-ns3.tar.gz (25/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/dist/unroff-1.0-sparc-sun-sunos4.tar.gz -> websites/www-rn.informatik.uni-bremen.de/software/unroff/dist/unroff-1.0-sparc-sun-sunos4.tar.gz (26/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/contrib/me-misc-patch.gz -> websites/www-rn.informatik.uni-bremen.de/software/unroff/contrib/me-misc-patch.gz (27/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/dist/unroff-1.0-sparc-sun-solaris2.tar.gz -> websites/www-rn.informatik.uni-bremen.de/software/unroff/dist/unroff-1.0-sparc-sun-solaris2.tar.gz (28/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/dist/unroff-1.0-rs6000-ibm-aix3.2.tar.gz -> websites/www-rn.informatik.uni-bremen.de/software/unroff/dist/unroff-1.0-rs6000-ibm-aix3.2.tar.gz (29/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/dist/unroff-1.0-hppa1.1-hp-hpux9.tar.gz -> websites/www-rn.informatik.uni-bremen.de/software/unroff/dist/unroff-1.0-hppa1.1-hp-hpux9.tar.gz (30/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/contrib/misc-patch-2.gz -> websites/www-rn.informatik.uni-bremen.de/software/unroff/contrib/misc-patch-2.gz (31/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/dist/unroff-1.0.tar.gz -> websites/www-rn.informatik.uni-bremen.de/software/unroff/dist/unroff-1.0.tar.gz (32/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/dist/unroff-1.0-mips-sgi-irix5.3.tar.gz -> websites/www-rn.informatik.uni-bremen.de/software/unroff/dist/unroff-1.0-mips-sgi-irix5.3.tar.gz (33/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/dist/unroff-1.0-mips-dec-ultrix4.2.tar.gz -> websites/www-rn.informatik.uni-bremen.de/software/unroff/dist/unroff-1.0-mips-dec-ultrix4.2.tar.gz (34/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/dist/unroff-1.0-alpha-dec-osf3.0.tar.gz -> websites/www-rn.informatik.uni-bremen.de/software/unroff/dist/unroff-1.0-alpha-dec-osf3.0.tar.gz (35/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/elk/scm/?D=D -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/elk/scm/?D=D/index.html (36/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/elk/scm/?M=D -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/elk/scm/?M=D/index.html (37/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/elk/scm/?S=D -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/elk/scm/?S=D/index.html (38/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/elk/scm/?N=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/elk/scm/?N=A/index.html (39/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/misc/?S=D -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/misc/?S=D/index.html (40/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/misc/?D=D -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/misc/?D=D/index.html (41/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/misc/?N=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/misc/?N=A/index.html (42/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/misc/?M=D -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/misc/?M=D/index.html (43/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/html/?M=D -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/html/?M=D/index.html (44/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/html/?D=D -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/html/?D=D/index.html (45/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/html/?S=D -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/html/?S=D/index.html (46/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/html/?N=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/html/?N=A/index.html (47/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/elk/?M=D -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/elk/?M=D/index.html (48/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/elk/?S=D -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/elk/?S=D/index.html (49/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/elk/scm/?D=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/elk/scm/?D=A/index.html (50/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/elk/scm/debug.scm -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/elk/scm/debug.scm (51/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/elk/scm/pp.scm -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/elk/scm/pp.scm (52/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/elk/scm/toplevel.scm -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/elk/scm/toplevel.scm (53/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/elk/scm/?M=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/elk/scm/?M=A/index.html (54/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/elk/scm/?S=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/elk/scm/?S=A/index.html (55/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/elk/scm/?N=D -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/elk/scm/?N=D/index.html (56/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/elk/scm/initscheme.scm -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/elk/scm/initscheme.scm (57/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/elk/?D=D -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/elk/?D=D/index.html (58/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/elk/?N=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/elk/?N=A/index.html (59/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/?D=D -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/?D=D/index.html (60/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/?M=D -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/?M=D/index.html (61/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/?S=D -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/?S=D/index.html (62/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/?N=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/?N=A/index.html (63/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/?M=D -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/?M=D/index.html (64/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/misc/?S=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/misc/?S=A/index.html (65/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/misc/?N=D -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/misc/?N=D/index.html (66/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/misc/hyper.scm -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/misc/hyper.scm (67/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/misc/?D=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/misc/?D=A/index.html (68/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/misc/?M=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/misc/?M=A/index.html (69/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/?S=D -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/?S=D/index.html (70/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/html/?M=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/html/?M=A/index.html (71/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/html/man.scm -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/html/man.scm (72/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/html/ms.scm -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/html/ms.scm (73/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/html/?D=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/html/?D=A/index.html (74/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/html/?S=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/html/?S=A/index.html (75/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/html/common.scm -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/html/common.scm (76/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/html/m.scm -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/html/m.scm (77/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/html/?N=D -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/html/?N=D/index.html (78/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/?N=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/?N=A/index.html (79/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/?D=D -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/?D=D/index.html (80/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/doc/?D=D -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/doc/?D=D/index.html (81/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/doc/?M=D -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/doc/?M=D/index.html (82/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/doc/?S=D -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/doc/?S=D/index.html (83/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/doc/?N=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/doc/?N=A/index.html (84/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/patches/?M=D -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/patches/?M=D/index.html (85/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/patches/?S=D -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/patches/?S=D/index.html (86/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/patches/?N=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/patches/?N=A/index.html (87/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/patches/?D=D -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/patches/?D=D/index.html (88/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/misc/?D=D -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/misc/?D=D/index.html (89/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/misc/?M=D -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/misc/?M=D/index.html (90/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/misc/?S=D -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/misc/?S=D/index.html (91/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/misc/?N=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/misc/?N=A/index.html (92/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/elk/?M=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/elk/?M=A/index.html (93/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/elk/?S=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/elk/?S=A/index.html (94/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/elk/scm/ -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/elk/scm/index.html (95/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/elk/?N=D -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/elk/?N=D/index.html (96/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/elk/?D=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/elk/?D=A/index.html (97/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/subst.h -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/subst.h (98/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/error.h -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/error.h (99/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/insert.h -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/insert.h (100/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/table.c -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/table.c (101/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/scmtable.h -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/scmtable.h (102/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/gcroot.c -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/gcroot.c (103/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/?N=D -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/?N=D/index.html (104/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/gcroot.h -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/gcroot.h (105/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/?D=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/?D=A/index.html (106/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/test.scm -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/test.scm (107/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/table.h -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/table.h (108/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/prim.c -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/prim.c (109/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/parse.c -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/parse.c (110/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/prim.h -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/prim.h (111/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/?M=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/?M=A/index.html (112/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/?S=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/?S=A/index.html (113/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/unroff.h -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/unroff.h (114/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/unroff.c -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/unroff.c (115/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/elk-2.2-patch -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/elk-2.2-patch (116/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/event.h -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/event.h (117/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/insert.c -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/insert.c (118/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/test.ms -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/test.ms (119/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/subst.c -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/subst.c (120/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/config.h -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/config.h (121/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/stream.c -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/stream.c (122/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/event.c -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/event.c (123/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/error.c -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/error.c (124/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/args.h -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/args.h (125/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/buffer.c -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/buffer.c (126/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/malloc.h -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/malloc.h (127/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/expr.h -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/expr.h (128/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/expr.c -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/expr.c (129/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/malloc.c -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/malloc.c (130/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/args.c -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/args.c (131/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/stream.h -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/stream.h (132/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/scmtable.c -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/scmtable.c (133/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/parse.h -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/parse.h (134/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/buffer.h -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/src/buffer.h (135/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/?M=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/?M=A/index.html (136/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/?N=D -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/?N=D/index.html (137/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/troff.scm -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/troff.scm (138/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/misc/ -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/misc/index.html (139/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/?S=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/?S=A/index.html (140/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/html/ -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/html/index.html (141/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/?D=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/scm/?D=A/index.html (142/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/?S=D -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/?S=D/index.html (143/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/doc/manual.ms -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/doc/manual.ms (144/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/doc/?D=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/doc/?D=A/index.html (145/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/doc/tmac.hyper -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/doc/tmac.hyper (146/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/doc/unroff-html-man.1 -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/doc/unroff-html-man.1 (147/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/doc/?M=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/doc/?M=A/index.html (148/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/doc/unroff.1 -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/doc/unroff.1 (149/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/doc/unroff-html.1 -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/doc/unroff-html.1 (150/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/doc/?N=D -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/doc/?N=D/index.html (151/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/doc/?S=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/doc/?S=A/index.html (152/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/doc/unroff-html-ms.1 -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/doc/unroff-html-ms.1 (153/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/patches/?M=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/patches/?M=A/index.html (154/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/patches/?S=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/patches/?S=A/index.html (155/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/patches/?N=D -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/patches/?N=D/index.html (156/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/patches/?D=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/patches/?D=A/index.html (157/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/misc/sample.unroff -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/misc/sample.unroff (158/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/misc/?D=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/misc/?D=A/index.html (159/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/misc/?M=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/misc/?M=A/index.html (160/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/misc/?N=D -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/misc/?N=D/index.html (161/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/misc/?S=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/misc/?S=A/index.html (162/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/?D=D -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/?D=D/index.html (163/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/?M=D -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/?M=D/index.html (164/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/?N=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/?N=A/index.html (165/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/INSTALL -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/INSTALL/index.html (166/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/?S=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/?S=A/index.html (167/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/?D=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/?D=A/index.html (168/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/?N=D -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/?N=D/index.html (169/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/?M=A -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/?M=A/index.html (170/220)
http://www-rn.informatik.uni-bremen.de/software/unroff/doc/unroff-html-man.1.ps -> websites/www-rn.informatik.uni-bremen.de/software/unroff/doc/unroff-html-man.1.ps (171/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/doc/unroff.1.ps -> websites/www-rn.informatik.uni-bremen.de/software/unroff/doc/unroff.1.ps (172/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/doc/unroff-html.1.ps -> websites/www-rn.informatik.uni-bremen.de/software/unroff/doc/unroff-html.1.ps (173/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/doc/manual.ps -> websites/www-rn.informatik.uni-bremen.de/software/unroff/doc/manual.ps (174/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/doc/unroff-html-ms.1.ps -> websites/www-rn.informatik.uni-bremen.de/software/unroff/doc/unroff-html-ms.1.ps (175/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/doc/m-notes.html -> websites/www-rn.informatik.uni-bremen.de/software/unroff/doc/m-notes.html (176/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/doc/m-3.html -> websites/www-rn.informatik.uni-bremen.de/software/unroff/doc/m-3.html (177/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/doc/m-2.html -> websites/www-rn.informatik.uni-bremen.de/software/unroff/doc/m-2.html (178/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/unroff-1.0/COPYRIGHT -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/COPYRIGHT/index.html (179/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/doc/m-11.html -> websites/www-rn.informatik.uni-bremen.de/software/unroff/doc/m-11.html (180/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/fig3.gif -> websites/www-rn.informatik.uni-bremen.de/software/unroff/fig3.gif (181/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/fig2.gif -> websites/www-rn.informatik.uni-bremen.de/software/unroff/fig2.gif (182/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/fig1.gif -> websites/www-rn.informatik.uni-bremen.de/software/unroff/fig1.gif (183/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/doc/manual.ms -> websites/www-rn.informatik.uni-bremen.de/software/unroff/doc/manual.ms (184/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/doc/m-9.html -> websites/www-rn.informatik.uni-bremen.de/software/unroff/doc/m-9.html (185/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/doc/m-7.html -> websites/www-rn.informatik.uni-bremen.de/software/unroff/doc/m-7.html (186/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/doc/m-6.html -> websites/www-rn.informatik.uni-bremen.de/software/unroff/doc/m-6.html (187/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/doc/m-14.html -> websites/www-rn.informatik.uni-bremen.de/software/unroff/doc/m-14.html (188/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/doc/m-13.html -> websites/www-rn.informatik.uni-bremen.de/software/unroff/doc/m-13.html (189/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/doc/m-5.html -> websites/www-rn.informatik.uni-bremen.de/software/unroff/doc/m-5.html (190/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/doc/m-4.html -> websites/www-rn.informatik.uni-bremen.de/software/unroff/doc/m-4.html (191/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/doc/m-15.html -> websites/www-rn.informatik.uni-bremen.de/software/unroff/doc/m-15.html (192/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/doc/m-1.html -> websites/www-rn.informatik.uni-bremen.de/software/unroff/doc/m-1.html (193/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/examples/RELNOTES.ms -> websites/www-rn.informatik.uni-bremen.de/software/unroff/examples/RELNOTES.ms (194/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/examples/XtSetArg.3.html -> websites/www-rn.informatik.uni-bremen.de/software/unroff/examples/XtSetArg.3.html (195/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/unroff-1.0/patches/2 -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/patches/2/index.html (196/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/unroff-1.0/PATCHLEVEL -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/PATCHLEVEL/index.html (197/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/examples/pathconf.2.html -> websites/www-rn.informatik.uni-bremen.de/software/unroff/examples/pathconf.2.html (198/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/unroff-1.0/patches/1 -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff-1.0/patches/1/index.html (199/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/examples/pathconf.2 -> websites/www-rn.informatik.uni-bremen.de/software/unroff/examples/pathconf.2 (200/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/doc/unroff-html.1 -> websites/www-rn.informatik.uni-bremen.de/software/unroff/doc/unroff-html.1 (201/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/doc/unroff.1 -> websites/www-rn.informatik.uni-bremen.de/software/unroff/doc/unroff.1 (202/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/doc/unroff-html-ms.1 -> websites/www-rn.informatik.uni-bremen.de/software/unroff/doc/unroff-html-ms.1 (203/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/doc/unroff-html-man.1.html -> websites/www-rn.informatik.uni-bremen.de/software/unroff/doc/unroff-html-man.1.html (204/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/examples/XtSetArg.3 -> websites/www-rn.informatik.uni-bremen.de/software/unroff/examples/XtSetArg.3 (205/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/doc/m.html -> websites/www-rn.informatik.uni-bremen.de/software/unroff/doc/m.html (206/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/contrib/misc-patch-2 -> websites/www-rn.informatik.uni-bremen.de/software/unroff/contrib/misc-patch-2/index.html (207/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/contrib/me-misc-patch -> websites/www-rn.informatik.uni-bremen.de/software/unroff/contrib/me-misc-patch/index.html (208/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/doc/unroff-html-man.1 -> websites/www-rn.informatik.uni-bremen.de/software/unroff/doc/unroff-html-man.1 (209/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/unroff.html -> websites/www-rn.informatik.uni-bremen.de/software/unroff/unroff.html (210/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/examples/r-7.html -> websites/www-rn.informatik.uni-bremen.de/software/unroff/examples/r-7.html (211/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/examples/r-6.html -> websites/www-rn.informatik.uni-bremen.de/software/unroff/examples/r-6.html (212/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/examples/r-5.html -> websites/www-rn.informatik.uni-bremen.de/software/unroff/examples/r-5.html (213/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/examples/r-4.html -> websites/www-rn.informatik.uni-bremen.de/software/unroff/examples/r-4.html (214/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/examples/r-3.html -> websites/www-rn.informatik.uni-bremen.de/software/unroff/examples/r-3.html (215/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/examples/r-2.html -> websites/www-rn.informatik.uni-bremen.de/software/unroff/examples/r-2.html (216/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/examples/r-1.html -> websites/www-rn.informatik.uni-bremen.de/software/unroff/examples/r-1.html (217/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/doc/m-12.html -> websites/www-rn.informatik.uni-bremen.de/software/unroff/doc/m-12.html (218/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/doc/m-10.html -> websites/www-rn.informatik.uni-bremen.de/software/unroff/doc/m-10.html (219/220)
http://www-rn.informatik.uni-bremen.de:80/software/unroff/doc/m-8.html -> websites/www-rn.informatik.uni-bremen.de/software/unroff/doc/m-8.html (220/220)

Download completed in 298.37s, saved in websites/www-rn.informatik.uni-bremen.de/ (220 files)
This commit is contained in:
Lassi Kortela 2023-02-14 10:28:12 +02:00
commit b9ca94c317
55 changed files with 31426 additions and 0 deletions

1292
www/contrib/me-misc-patch.gz Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

2510
www/contrib/misc-patch-2.gz Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

64
www/doc/m-1.html Normal file
View File

@ -0,0 +1,64 @@
<html>
<head>
<!-- This file has been generated by unroff 1.0, 03/21/96 19:29:41. -->
<!-- Do not edit! -->
<link rev="made" href="mailto:net@informatik.uni-bremen.de">
<title>unroff Programmer's Manual, section 1.</title>
</head><body>
<h2><a name="section1">1.</a>&#160;<tt> </tt>Additional Documentation
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>For a general overview of
<i>unroff
</i>and a description from the user's perspective, please read the
<a href="./unroff.1.html">manual page</a>
<i>unroff</i>(1)
that accompanies the distribution.<tt> </tt>
In addition, there exists one manual page for each output format
for which a back-end is provided, and another one for each
combination of output format and troff macro package explaining
the translation rules associated with the individual macros.<tt> </tt>
For example, the back-end for the Hypertext Markup Language (HTML)
that is part of the distribution and that supports the
<b>-man
</b>and
<b>-ms
</b>macros comes with these manual pages:
<dl><dt><dd>
<pre>
<a href="./unroff-html.1.html">unroff-html(1)</a>
<a href="./unroff-html-man.1.html">unroff-html-man(1)</a>
<a href="./unroff-html-ms.1.html">unroff-html-ms(1)</a>
</pre>
</dl>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>This text assumes familiarity with the basic troff and Scheme concepts.<tt> </tt>
For a troff manual, refer to the documentation provided by
your UNIX system's vendor.<tt> </tt>
As
<i>unroff
</i>supports a number of troff extensions introduced by the free
<i>groff
</i>formatter (which is part of the GNU project), you may want to read the
manual page
<i>troff</i>(1)
that is included in the groff distribution.<tt> </tt>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt><i>unroff
</i>is centered around
<i>Elk</i>,
the Scheme-based Extension Language Kit.<tt> </tt>
For a description of the Elk-specific Scheme language features
please refer to the documentation included in the Elk distribution
(which is freely available).<tt> </tt>
An overview of Elk can be found in:
Oliver Laumann and Carsten Bormann, Elk: The Extension Language Kit,
<i>USENIX Computing Systems</i>,
vol. 7, no. 4, pp. 419-449, 1994.<tt> </tt>
The Scheme language is described in several textbooks; and the
Revised^4 Report on the Algorithmic Language Scheme, on which
the IEEE Standard for Scheme is based, can be downloaded from
several major FTP sites.<tt> </tt>
<p><hr>
Markup created by <em>unroff</em> 1.0,&#160;<tt> </tt>&#160;<tt> </tt>March 21, 1996,&#160;<tt> </tt>&#160;<tt> </tt>net@informatik.uni-bremen.de</body>
</html>

116
www/doc/m-10.html Normal file
View File

@ -0,0 +1,116 @@
<html>
<head>
<!-- This file has been generated by unroff 1.0, 03/21/96 19:29:45. -->
<!-- Do not edit! -->
<link rev="made" href="mailto:net@informatik.uni-bremen.de">
<title>unroff Programmer's Manual, section 10.</title>
</head><body>
<h2><a name="section10">10.</a>&#160;<tt> </tt>Input and Output Primitives
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt><i>unroff
</i>provides one new input primitive and one new output primitive that
work with the current input stream and current output stream (and a
third primitive which is just an optimization of the latter, as
well as a few auxiliary functions).<tt> </tt>
<h2>
(emit <i>.</i> <i>args</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt><i>emit
</i>is the only stream-based output primitive.<tt> </tt>
It receives any number of strings, symbols, and characters,
concatenates its arguments, and sends the resulting string to
the current output stream (to standard output if the the current
output stream has been assigned #f).<tt> </tt>
<i>emit
</i>is primarily used in situations where text has to
be output without rescanning it and without applying any
character translations.<tt> </tt>
It is also used from within the event procedures that are called
for their side-effects, for example, by the
<i>prolog
</i>and
<i>epilog
</i>event procedures to generate a header and trailer for each
output file.<tt> </tt>
The primitive returns the empty symbol so that it can be called
as the last form in an event procedure whose result is used.<tt> </tt>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>Example:
the new troff request for transparent output, as explained in the
<a href="./unroff.1.html">manual page</a>
<i>unroff</i>(1),
can be implement like this:
<dl><dt><dd>
<pre>
(defrequest '&gt;&gt;
(lambda (&gt;&gt; code)
(emit code #\newline)))
</pre>
</dl>
<h2>
(read-line)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>This primitive reads the next input line from the current input
stream and returns it as a string.<tt> </tt>
An error is signaled if the current input stream has been bound
to #f, which is the case, for example, when
<i>unroff
</i>has been called with the option
<b>-t
</b>to start an interactive top level.<tt> </tt>
If an incomplete last line (i.e. a line without a terminating
newline) is returned by the target pointed to by the current
input stream, a newline is appended.<tt> </tt>
Thus,
<i>read-line
</i>always returns at least a string containing a newline character.<tt> </tt>
<h2>
(read-line-expand)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>This primitive is nothing more than an optimization for
<dl><dt><dd>
<pre>
(parse-expand (read-line))
</pre>
</dl>
which has been provided to speed up frequently used functions like
macro expansion.<tt> </tt>
<h2>
(unread-line <i>string</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>This primitive pushes back an input line to the current input
stream, which will then be returned by the next call to
<i>read-line
</i>or
<i>read-line-expand</i>,
or it will be read by the parser in the normal way when processing
the current input file.<tt> </tt>
<i>string
</i>need not have a terminating newline.<tt> </tt>
Strings pushed back by multiple calls to
<i>unread-line
</i>are coalesced and returned as a whole by the next input operation.<tt> </tt>
<h2>
(error-port)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>Returns a Scheme output port that is bound to the program's
standard error output.<tt> </tt>
This primitive is used by the default Scheme error handler provided
by
<i>unroff
</i>and by the
<i>warn
</i>utility function<a href="m-notes.html#footnote4">[note 4]</a>
.<tt> </tt>
Note that
<i>error-port
</i>returns an ordinary Scheme port, not a stream.<tt> </tt>
<p><hr>
Markup created by <em>unroff</em> 1.0,&#160;<tt> </tt>&#160;<tt> </tt>March 21, 1996,&#160;<tt> </tt>&#160;<tt> </tt>net@informatik.uni-bremen.de</body>
</html>

231
www/doc/m-11.html Normal file
View File

@ -0,0 +1,231 @@
<html>
<head>
<!-- This file has been generated by unroff 1.0, 03/21/96 19:29:46. -->
<!-- Do not edit! -->
<link rev="made" href="mailto:net@informatik.uni-bremen.de">
<title>unroff Programmer's Manual, section 11.</title>
</head><body>
<h2><a name="section11">11.</a>&#160;<tt> </tt>String Functions
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>Most of the string handling primitives described in this section
could as well have been implemented in Scheme based on the standard
Scheme string primitives.<tt> </tt>
They are provided as built-in primitives by
<i>unroff
</i>mainly as optimizations or because writing them as Scheme
procedures would have been significantly more cumbersome.<tt> </tt>
All the string functions return new strings, that is, they
do not modify their arguments.<tt> </tt>
<h2>
(concat <i>.</i> <i>args</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt><i>concat
</i>can be called with any number of Scheme strings, symbols, and
characters.<tt> </tt>
The primitive concatenates its arguments and returns the result
as a string.<tt> </tt>
<h2>
(spread)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>This primitive is identical to
<i>concat</i>,
except that it delimits its arguments by a space character.<tt> </tt>
For example, the event procedure for a macro that just
returns a line consisting of its arguments could be define like this:
<dl><dt><dd>
<pre>
(defmacro 'X
(lambda (X . words)
(parse (apply spread words) #\newline)))
</pre>
</dl>
<h2>
(repeat-string <i>num</i> <i>string</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>Returns a string consisting of the string argument
<i>string
</i>repeated
<i>num
</i>times.<tt> </tt>
<h2>
(string-prune-left <i>string</i> <i>prefix</i> <i>fail</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>This primitive checks whether
<i>string
</i>starts with the given string prefix, and if so, returns the rest of
<i>string
</i>beginning at the first character position after the initial prefix.<tt> </tt>
If the strings do not match,
<i>fail
</i>is returned (which may an arbitrary object).<tt> </tt>
Example:
<dl><dt><dd>
<pre>
(string-prune-left "+foo" "+" #f) =&gt; "foo"
(string-prune-left "gulp" "+" #f) =&gt; #f
</pre>
</dl>
<h2>
(string-prune-right <i>string</i> <i>suffix</i> <i>fail</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>This primitive is identical to
<i>string-prune-left</i>,
except that it checks for a suffix rather than a prefix,
that is, whether
<i>string
</i>ends with
<i>suffix</i>.<tt> </tt>
<h2>
(string-compose <i>string1</i> <i>string2</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>If the argument
<i>string2
</i>begins with a plus sign,
<i>string-compose
</i>returns the concatenation of
<i>string1
</i>and
<i>string2
</i>with the initial plus sign stripped.<tt> </tt>
If
<i>string2
</i>begins with a minus sign,
it returns a string consisting of
<i>string1
</i>with all characters occurring in
<i>string2
</i>removed.<tt> </tt>
Otherwise,
<i>string-compose
</i>just returns
<i>string2</i>.<tt> </tt>
This primitive is used for the implementation of the option type
<i>dynstring</i>.<tt> </tt>
<h2>
(parse-pair <i>string</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>If
<i>string
</i>consists of two parts separated and enclosed by an arbitrary delimiter
character,
<i>parse-pair
</i>returns a cons cell holding the two substrings.<tt> </tt>
Otherwise, it returns #f.<tt> </tt>
Example:
<dl><dt><dd>
<pre>
(parse-pair "'foo'bar'") =&gt; ("foo" . "bar")
(parse-pair "hello") =&gt; #f
</pre>
</dl>
<h2>
(parse-triple <i>string</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>This primitive is identical to
<i>parse-pair</i>,
except that it breaks up a three-part string rather than a
two-part string and returns an improper list whose car, cadr,
and cddr consist of the three substrings<a href="m-notes.html#footnote5">[note 5]</a>
.<tt> </tt>
<i>parse-pair
</i>and
<i>parse-triple
</i>are useful mainly for parsing the arguments to troff requests such
as ``.if'' and ``.tl''.<tt> </tt>
<h2>
<a name=".substitute">(substitute <i>string</i> <i>.</i> <i>args</i>)</a></h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>This primitive returns a copy of
<i>string
</i>in which each sequence of a percent sign, a
<i>substitution specifier</i>,
and another percent sign is replaced by another string according
to the specifier.<tt> </tt>
Two adjacent percent signs are replaced by a single percent sign.<tt> </tt>
The following list describes all substitution specifiers together
with their respective replacements.<tt> </tt>
<dl>
<dt><b>macros</b><dd>
The name of the troff macro package whose macros are recognized,
that is, the argument to the option
<b>-m
</b>(or the empty string if none was specified).<tt> </tt>
<dt><b>format</b><dd>
The output format, that is, the argument to the option
<b>-f
</b>(or the default output format if the option was omitted).<tt> </tt>
<dt><b>directory</b><dd>
The name of the library directory from which
<i>unroff
</i>loads its Scheme files.<tt> </tt>
<dt><b>progname</b><dd>
The name of the running program (this is used as a prefix in
error messages and warning messages).<tt> </tt>
<dt><b>filepos</b><dd>
A space character followed by the target of the current input
stream, a colon, the number of the last input line read from
the stream, and another colon.<tt> </tt>
If the current input stream is bound to #f, the empty string
is substituted.<tt> </tt>
This specifier is useful for displaying error messages or warning messages.<tt> </tt>
<dt><b>tmpname</b><dd>
A file name that can be used for a temporary file.<tt> </tt>
Each use of this specifier creates a new, unique file name.<tt> </tt>
<dt><b>version</b><dd>
The program's major and minor version numbers separated by a period.<tt> </tt>
<dt><b>weekday</b><dd>
The abbreviated weekday name.<tt> </tt>
<dt><b>weekday+</b><dd>
The full weekday name.<tt> </tt>
<dt><b>weekdaynum</b><dd>
The weekday (0-6, Sunday is 0).<tt> </tt>
<dt><b>monthname</b><dd>
The abbreviated month name.<tt> </tt>
<dt><b>monthname+</b><dd>
The full monthname.<tt> </tt>
<dt><b>day</b><dd>
The day of the month (01-31).<tt> </tt>
<dt><b>month</b><dd>
The month (01-12).<tt> </tt>
<dt><b>year</b><dd>
The year.<tt> </tt>
<dt><b>date</b><dd>
The date (in the local environment's representation).<tt> </tt>
<dt><b>time</b><dd>
The time (in the local environment's representation).<tt> </tt>
<dt>a positive number <i>n</i><dd>
The
<i>n</i>th
additional argument in the call to the
<i>substitute
</i>primitive, which must be a string.<tt> </tt>
<dt>a <i>string</i><dd>
<i>string
</i>is interpreted as the name of an environment variable,
and the value of this variable is substituted (or the empty
string if the environment variable is undefined).<tt> </tt>
</dl>
<p>
Examples:
<dl><dt><dd>
<pre>
(substitute "%date% %HOME%") =&gt; "04/09/95 /home/kbs/net"
(substitute "%progname%:%filepos% %1%" "hello")
=&gt; "unroff: manual.ms:21: hello"
(load (substitute "%directory%/scm/%format%/m%macros%.scm"))
</pre>
</dl>
<p><hr>
Markup created by <em>unroff</em> 1.0,&#160;<tt> </tt>&#160;<tt> </tt>March 21, 1996,&#160;<tt> </tt>&#160;<tt> </tt>net@informatik.uni-bremen.de</body>
</html>

77
www/doc/m-12.html Normal file
View File

@ -0,0 +1,77 @@
<html>
<head>
<!-- This file has been generated by unroff 1.0, 03/21/96 19:29:47. -->
<!-- Do not edit! -->
<link rev="made" href="mailto:net@informatik.uni-bremen.de">
<title>unroff Programmer's Manual, section 12.</title>
</head><body>
<h2><a name="section12">12.</a>&#160;<tt> </tt>Tables
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt><i>unroff
</i>provides simple hash tables as a new first class data type
<i>table</i>.<tt> </tt>
Each table entry associates an arbitrary Scheme object with
a key (a Scheme string or symbol).<tt> </tt>
Tables are useful for various purposes; for example, the Scheme code
delivered with
<i>unroff
</i>maintains hash tables to store information about number registers,
options, fonts, and for other bookkeeping tasks.<tt> </tt>
<h2>
(table? <i>obj</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>The type predicate for the new type; it returns #t if
<i>obj
</i>is a member of the type
<i>table</i>,
otherwise #f.<tt> </tt>
<h2>
(make-table <i>size</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>Returns a new table of the specified size.<tt> </tt>
<i>size
</i>is a positive integer.<tt> </tt>
The smaller the size, the more collisions occur as entries
are added to the table.<tt> </tt>
However, the hash function employed by the table primitives
ensures that no collisions occur in tables of size
256^<i>n
</i>if all keys have a length less than or equal to
<i>n</i>.<tt> </tt>
<h2>
(table-store! <i>table</i> <i>key</i> <i>obj</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>This primitive stores the Scheme object
<i>obj
</i>under the given
<i>key
</i>in the given
<i>table</i>.<tt> </tt>
The key argument must be a string or a symbol.<tt> </tt>
<h2>
(table-lookup <i>table</i> <i>key</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>This primitive checks whether an object is stored in the given
<i>table
</i>under the specified
<i>key</i>,
and if so, returns the object.<tt> </tt>
If no object is stored under
<i>key</i>,
<i>table-lookup
</i>returns #f.<tt> </tt>
<h2>
(table-remove! <i>table</i> <i>key</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>Removes the entry selected by
<i>key
</i>from the specified table.<tt> </tt>
<p><hr>
Markup created by <em>unroff</em> 1.0,&#160;<tt> </tt>&#160;<tt> </tt>March 21, 1996,&#160;<tt> </tt>&#160;<tt> </tt>net@informatik.uni-bremen.de</body>
</html>

86
www/doc/m-13.html Normal file
View File

@ -0,0 +1,86 @@
<html>
<head>
<!-- This file has been generated by unroff 1.0, 03/21/96 19:29:47. -->
<!-- Do not edit! -->
<link rev="made" href="mailto:net@informatik.uni-bremen.de">
<title>unroff Programmer's Manual, section 13.</title>
</head><body>
<h2><a name="section13">13.</a>&#160;<tt> </tt>Miscellaneous Primitives
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>The first two primitives described in this section are not essential,
as the same function could be achieved with pipe streams,
although with greater overhead.<tt> </tt>
The remaining primitives perform a number of troff-specific operations
and are only useful in a few specialized contexts.<tt> </tt>
<h2>
(shell-command <i>command</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>Runs the specified
<i>command
</i>(which must be a string) as a shell command by passing it to a call to
<i>system</i>(3).<tt> </tt>
The return value is that of
<i>system()
</i>(an integer).<tt> </tt>
<h2>
(remove-file <i>filename</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>Removes the specified file;
<i>filename
</i>must be a string or a symbol.<tt> </tt>
<h2>
(troff-compatible?)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>This predicate returns #t if troff compatibility mode has been
enabled (i.e. if the option
<b>-C
</b>has been given), otherwise #f.<tt> </tt>
<h2>
(set-escape! <i>char</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>Sets the troff escape character (initially `\') to the specified
character argument.<tt> </tt>
This primitive is used to implement the ``.ec'' request.<tt> </tt>
<h2>
<a name=".filter-eqn-line">(filter-eqn-line <i>string</i>)</a></h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>This primitive scans the string argument (which is supposed to
be passed to the
<i>eqn
</i>preprocessor afterwards) for occurrences of the ``delim'' directive.<tt> </tt>
If a ``delim'' directive is found, the current inline equation
delimiters maintained by the parser are changed or disabled as specified by
the directive.<tt> </tt>
The primitive returns #f if
<i>string
</i>is empty or consists just of white space, or if it contains
a valid ``delim'' or ``define'' directive, otherwise #t.<tt> </tt>
The inline equation delimiters are disabled initially.<tt> </tt>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>The primitive is supposed to be used by implementations of
the request ``.EQ'' and inline equation event handlers to intercept the
<i>eqn
</i>input.<tt> </tt>
In this case, the
<i>eqn
</i>preprocessor need only be invoked if
<i>filter-eqn-line
</i>returned #t at least once.<tt> </tt>
<h2>
(skip-group)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>This primitive reads input lines from the current input stream
and scans them for the escape sequences `\{' and `\}' until
the nesting level of conditional input is balanced (i.e. until
a matching closing brace for an initial opening brace has been found).<tt> </tt>
The primitive is only useful for the implementation of the
troff requests for conditional input.<tt> </tt>
<p><hr>
Markup created by <em>unroff</em> 1.0,&#160;<tt> </tt>&#160;<tt> </tt>March 21, 1996,&#160;<tt> </tt>&#160;<tt> </tt>net@informatik.uni-bremen.de</body>
</html>

48
www/doc/m-14.html Normal file
View File

@ -0,0 +1,48 @@
<html>
<head>
<!-- This file has been generated by unroff 1.0, 03/21/96 19:29:47. -->
<!-- Do not edit! -->
<link rev="made" href="mailto:net@informatik.uni-bremen.de">
<title>unroff Programmer's Manual, section 14.</title>
</head><body>
<h2><a name="section14">14.</a>&#160;<tt> </tt>File Insertions
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>The primitive
<i>file-insertions
</i>is a general-purpose utility for inserting strings into files
at specified locations in a fast and robust way.<tt> </tt>
One application is to resolve forward references of any kind among
a group of files when all files have been processed.<tt> </tt>
In this case, the insertions would be executed by an
<i>exit
</i>event handler.<tt> </tt>
<h2>
<a name=".file-insertions">(file-insertions <i>insertions</i>)</a></h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt><i>insertions
</i>is a list specifying the parameters for the file insertions.<tt> </tt>
Each element of the list is itself a list consisting
of a file name (a string),
a file offset (an integer between zero and the size of the file),
and a string to be inserted in the given file at the given offset.<tt> </tt>
<i>file-insertions
</i>sorts the list to ensure that each file is only processed once
and that the offsets for each file are in increasing order.<tt> </tt>
Then each file is copied to a temporary file
<dl><dt><dd>
<pre>
<i>filename</i>.new
</pre>
</dl>
(where
<i>filename
</i>is the original file name), and the specified insertions are
carried out as the file is copied.<tt> </tt>
When processing of a file is finished, the temporary file is
renamed to its original name.<tt> </tt>
If there exist links to a file, a warning is displayed and the
insertion is skipped.<tt> </tt>
<p><hr>
Markup created by <em>unroff</em> 1.0,&#160;<tt> </tt>&#160;<tt> </tt>March 21, 1996,&#160;<tt> </tt>&#160;<tt> </tt>net@informatik.uni-bremen.de</body>
</html>

192
www/doc/m-15.html Normal file
View File

@ -0,0 +1,192 @@
<html>
<head>
<!-- This file has been generated by unroff 1.0, 03/21/96 19:29:48. -->
<!-- Do not edit! -->
<link rev="made" href="mailto:net@informatik.uni-bremen.de">
<title>unroff Programmer's Manual, section 15.</title>
</head><body>
<h2><a name="section15">15.</a>&#160;<tt> </tt>Utilities for Back-Ends
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>Writers of new back-ends (either for new output formats or for new
troff macro packages) can benefit from a number of Scheme procedures
and macros that are exported by the file ``scm/troff.scm'' which is
loaded from the library directory on startup.<tt> </tt>
The first two,
<i>eval-if-mode
</i>and
<i>set-option!
</i>are exceptions in that they are typically used by the user's
initialization file ``~/.unroff'' to customize
<i>unroff</i>,
rather than by programmers of
<i>unroff</i>.<tt> </tt>
<h2>
(set-option! <i>name</i> <i>value</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>This procedure assigns
<i>value
</i>to the option
<i>name</i>.<tt> </tt>
The value must be appropriate for the option's type.<tt> </tt>
<h2>
(eval-if-mode <i>mode</i> <i>.</i> <i>forms</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>This macro is typically used to evaluate a sequence of expressions,
<i>forms</i>,
depending on the output format and macro package specified in
the command line.<tt> </tt>
<i>mode
</i>is a list of two symbols, an output format and a macro package
name; the wildcard `*' can be used for both elements.<tt> </tt>
The
<i>forms
</i>are evaluated if the first symbol matches the value of the option
<b>-f
</b>and the second symbol matches the value of the option
<b>-m</b>;
in this case the result of the last sub-expression is returned.<tt> </tt>
Otherwise the forms are ignored and #f is returned.<tt> </tt>
Example:
<dl><dt><dd>
<pre>
(eval-if-mode (* html)
(set-option! 'mail-address "net@cs.tu-berlin.de"))
</pre>
</dl>
<h2>
(quit <i>message</i> <i>.</i> <i>args</i>)
<br>
(warn <i>message</i> <i>.</i> <i>args</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>These procedures print
<i>message
</i>and the optional
<i>args
</i>on the port returned by
<i>error-port
</i>using the primitive
<i>format</i>.<tt> </tt>
The message is prefixed by the program name, current input file
name and line number, and, in case of
<i>warn</i>,
the word ``warning''.<tt> </tt>
A newline is appended.<tt> </tt>
<i>quit
</i>causes the program to exit with an exit code of 1, and
<i>warn
</i>returns the empty string (and can therefore be used as the last
form in event procedures).<tt> </tt>
<h2>
<a name=".options">(option <i>name</i>)</a></h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>Returns the value of the specified option.<tt> </tt>
<h2>
(define-option <i>name</i> <i>type</i> <i>initial</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>Defines a new option with the specified name, type, and initial
value.<tt> </tt>
<i>name
</i>and
<i>type
</i>are strings or symbols.<tt> </tt>
There exist a number of predefined, basic option types as
described in the
<a href="./unroff.1.html">manual page</a>
<i>unroff</i>(1).<tt> </tt>
The initial value need not match the option's type; for example,
the following expression is valid:
<dl><dt><dd>
<pre>
(define-option 'author 'string #f)
</pre>
</dl>
<h2>
(define-option-type <i>name</i> <i>pre-check</i> <i>pre-msg</i> <i>converter</i> <i>post-check</i> <i>post-msg</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>This procedure defines a new option type named
<i>name
</i>which can then be used in calls to
<i>define-option</i>.<tt> </tt>
If an option of this type is specified in the command line,
the procedure
<i>pre-check
</i>is applied to the option's value (a string).<tt> </tt>
In this case, if
<i>pre-check
</i>returns #f,
<i>quit
</i>is called with an error message including the string
<i>pre-msg</i>,
which should describe the expected option value format
(e.g. ``a character'').<tt> </tt>
If the check succeeds, the procedure
<i>converter
</i>is called with the option's current value and with the string as given
in the command line.<tt> </tt>
The job of the converter procedure is to convert the option value
from a string representation to a Scheme object matching the option's
actual Scheme type.<tt> </tt>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>Finally, the predicate
<i>post-check
</i>is applied either to the result of
<i>converter
</i>or, if the option was set through a call to
<i>set-option!</i>,
to this procedure's argument.<tt> </tt>
If the predicate returns #f, a error is signaled with an error
message including
<i>post-msg
</i>as described in the previous paragraph.<tt> </tt>
For example, the predefined option type ``boolean'' is defined as
follows:
<dl><dt><dd>
<pre>
(define-option-type 'boolean
(lambda (x) (member x '("0" "1"))) "0 or 1"
(lambda (old new) (string=? new "1"))
boolean? "a boolean")
</pre>
</dl>
<h2>
(with-input-from-stream <i>target</i> <i>.</i> <i>forms</i>)
<br>
(with-output-to-stream <i>target</i> <i>.</i> <i>forms</i>)
<br>
(with-output-appended-to-stream <i>target</i> <i>.</i> <i>forms</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>These macros open an input stream (first macro) or output stream to the
specified target and assign it to the current input stream (first
macro) or current output stream.<tt> </tt>
Then the specified
<i>forms
</i>are evaluated, the stream is reassigned its previous value, and
the result of the last sub-expression in
<i>forms
</i>is returned.<tt> </tt>
The macros recur on the primitives
<i>open-input-stream</i>,
<i>open-output-stream</i>,
and
<i>append-output-stream</i>,
respectively.<tt> </tt>
<h2>
(skip-lines <i>stop</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>Reads input lines using
<i>read-line-expand
</i>until either end-of-stream is reached (in this case a warning
is displayed) or a line matching the string argument
<i>stop
</i>is encountered.<tt> </tt>
<p><hr>
Markup created by <em>unroff</em> 1.0,&#160;<tt> </tt>&#160;<tt> </tt>March 21, 1996,&#160;<tt> </tt>&#160;<tt> </tt>net@informatik.uni-bremen.de</body>
</html>

52
www/doc/m-2.html Normal file
View File

@ -0,0 +1,52 @@
<html>
<head>
<!-- This file has been generated by unroff 1.0, 03/21/96 19:29:41. -->
<!-- Do not edit! -->
<link rev="made" href="mailto:net@informatik.uni-bremen.de">
<title>unroff Programmer's Manual, section 2.</title>
</head><body>
<h2><a name="section2">2.</a>&#160;<tt> </tt>Where to Place Scheme Code?
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt><i>unroff
</i>accepts Scheme code in a number of places.<tt> </tt>
First, several Scheme files are loaded on startup:
<dl><dt><dd>
<pre>
scm/troff.scm
scm/<i>format</i>/common.scm
scm/<i>format</i>/<i>package</i>.scm
~/.unroff
</pre>
</dl>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>The first three path names are relative to a site-specific library
directory where the files have been installed by the system
administrator.<tt> </tt>
``troff.scm'' contains definitions that are independent of the
actual output format and troff macro-package; and the
file ``.unroff'' (loaded from the caller's home directory) typically
contains Scheme code to define user-preferences and to tailor
and extend the translation rules implemented by the files loaded
from a central location.<tt> </tt>
See the
<a href="./unroff.1.html">manual page</a>
<i>unroff</i>(1)
for more information.<tt> </tt>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>Additional files with user-supplied Scheme definitions
(e.g. translation rules for user-defined macros) can be passed to
<i>unroff
</i>by mentioning them in the command line.<tt> </tt>
In general, troff input files and Scheme source files can be mixed
arbitrarily when calling
<i>unroff</i>.<tt> </tt>
Finally, Scheme code can be embedded directly in the troff documents
by means of the new ``.##'' troff request and the corresponding
extension to the ``.ig'' request as explained in the
<a href="./unroff.1.html">manual page</a>.<tt> </tt>
Such inline Scheme code is executed on-the-fly when it is encountered
by the parser while processing the document.<tt> </tt>
<p><hr>
Markup created by <em>unroff</em> 1.0,&#160;<tt> </tt>&#160;<tt> </tt>March 21, 1996,&#160;<tt> </tt>&#160;<tt> </tt>net@informatik.uni-bremen.de</body>
</html>

104
www/doc/m-3.html Normal file
View File

@ -0,0 +1,104 @@
<html>
<head>
<!-- This file has been generated by unroff 1.0, 03/21/96 19:29:41. -->
<!-- Do not edit! -->
<link rev="made" href="mailto:net@informatik.uni-bremen.de">
<title>unroff Programmer's Manual, section 3.</title>
</head><body>
<h2><a name="section3">3.</a>&#160;<tt> </tt><a name=".events">Events and Event Handling</a>
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt><i>unroff
</i>interprets a troff document as a sequence of chunks of normal
text and interspersed ``events''.<tt> </tt>
Plain text is usually just copied to the current output (a file or
standard output).<tt> </tt>
The output produced for an event is determined by an ``event
handler'' (usually a Scheme procedure) that can be associated
with each event.<tt> </tt>
If no event handler can be found for an event encountered in the
currently processed document (with a few exceptions), a warning message
is displayed and the input that triggered the event is skipped
(in case of requests and macros) or treated like normal text.<tt> </tt>
For events such as troff requests, a separate Scheme procedure
can be defined for each request, and the name of the request that
triggered the event is then passed to the procedure as an argument.<tt> </tt>
An event handling procedure can be defined for
<ul>
<li>
each troff request, including requests that perform intrinsic troff
functions, such as ``.de'' and ``.if''
<li>
each troff macro, whether user-defined or part of a macro
package
<li>
each troff string
<li>
each number register
<li>
each special character
<li>
each escape sequence
<li>
each character (to provide character translations)
<li>
each inline equation enclosed by the current
<i>eqn</i>(1)
delimiter characters
<li>
each end of sentence (defined as a period, exclamation mark, or
question mark, followed by a newline).<tt> </tt>
</ul>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>When invoked, every Scheme procedure associated with one of
the above events receives one or more arguments.<tt> </tt>
For example, a procedure registered for the escape sequence `\h'
(horizontal space) is passed the name of the escape sequence
(the letter `h') as well as the argument to `\h' (i.e. the amount
of space).<tt> </tt>
Likewise, event handling procedures for requests and macros are
called with the name of the request or macro as well as any
arguments specified in the troff input.<tt> </tt>
The exact arguments passed to each type of event handler will be
explained below.<tt> </tt>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>A Scheme procedure associated with an event must return a string
which is then output in place of whatever input triggered the
event.<tt> </tt>
Here, and in a number of other places, a Scheme symbol or a Scheme
is accepted as an alternative to a string return value.<tt> </tt>
Event handling procedures are free to directly produce output
in addition to returning it as a result.<tt> </tt>
As procedures associated with events frequently just return a
fixed text, the text itself may be defined as the event handler
in place of the procedure to save the overhead of the procedure
call.<tt> </tt>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>Predefined Scheme procedures are supplied for events such as the
requests ``.de'', ``.nr'', ``.ds'', and the corresponding escape
sequences `\n' and `\*' to support user-defined macros, strings,
and number registers.<tt> </tt>
In any case, specific event handlers registered for macros,
strings, and number registers supersede any user-supplied
definitions.<tt> </tt>
Thus, the author of a document can attach a
special translation rule to a macro, string, or number register
defined in the document to take effect when the document is processed by
<i>unroff</i>.<tt> </tt>
This is particularly important for high-level, structure-oriented
target languages like SGML, as the the micro-formatting
used by typical, more complex troff macros and by many low-level requests
may not be expressible in such languages.<tt> </tt>
As a case in point, it would obviously be impossible to translate, for
example, the ``.IP'' macro defined by the ``ms'' package to a
language such as HTML just by looking at the definition of the macro.<tt> </tt>
For this reason,
<i>unroff
</i>does not really load the actual macro definitions for a troff macro
package selected via the ``-m'' option; instead, an event handler
is defined for each macro exported by the package to generate
whatever represents the corresponding macro's function in the
target language.<tt> </tt>
<p><hr>
Markup created by <em>unroff</em> 1.0,&#160;<tt> </tt>&#160;<tt> </tt>March 21, 1996,&#160;<tt> </tt>&#160;<tt> </tt>net@informatik.uni-bremen.de</body>
</html>

298
www/doc/m-4.html Normal file
View File

@ -0,0 +1,298 @@
<html>
<head>
<!-- This file has been generated by unroff 1.0, 03/21/96 19:29:41. -->
<!-- Do not edit! -->
<link rev="made" href="mailto:net@informatik.uni-bremen.de">
<title>unroff Programmer's Manual, section 4.</title>
</head><body>
<h2><a name="section4">4.</a>&#160;<tt> </tt>Defining Event Handlers
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>In the following list of Scheme primitives, the argument
<i>name
</i>denotes the name of a troff request, macro, escape sequence
etc. (without any initial period or escape character) and can be
supplied in form of a Scheme string, a Scheme symbol, or
a Scheme character:
<dl><dt><dd>
<pre>
(defrequest "ti" ...)
(defrequest 'sp ...)
(defescape #\h ...)
</pre>
</dl>
(the primitives
<i>defrequest
</i>and
<i>defescape
</i>will be introduced in a moment).<tt> </tt>
An argument named
<i>handler
</i>is either a procedure (usually a lambda expression) which returns
a string, a symbol, or a character; or
<i>handler
</i>can itself be specified as a string, symbol, or character.<tt> </tt>
In addition, the literal ``#f'' (false) can be supplied as a
<i>handler
</i>argument to remove any event handler that is currently associated with
that event.<tt> </tt>
Each of the ``def'' primitives listed below returns the handler
that was previously associated with the corresponding event,
or ``#f'' if the event was not handled.<tt> </tt>
<h2>
(defrequest <i>name</i> <i>handler</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>Associates the given handler with the given troff request.<tt> </tt>
If
<i>handler
</i>is a procedure, it is passed the request's name and arguments
as strings when called later.<tt> </tt>
Passing the name of the request as the first argument aids in
associating the same procedure with several different requests.<tt> </tt>
<i>unroff
</i>does not limit the number of arguments to requests, thus,
an event handling procedure for a requests that takes a variable
number of arguments could be defined like this:
<dl><dt><dd>
<pre>
(defrequest 'rm
(lambda (rm . args) ...))
</pre>
</dl>
<p>
If the request is invoked with fewer arguments than the procedure
has formal arguments, the remaining arguments are bound to
the empty string.<tt> </tt>
If the request is invoked with
<i>more
</i>arguments than the procedure has formal arguments, the last lambda
variable is assigned a string consisting of the (space-delimited)
arguments left over after the other formal arguments have been bound to
the other actual arguments.<tt> </tt>
However, if
<i>handler
</i>has only one formal argument, an error message is displayed when the
request is called with any arguments at all and the event is skipped.<tt> </tt>
For example, consider the following handler for the (non-existing)
request ``xx'':
<dl><dt><dd>
<pre>
(defrequest 'xx
(lambda (name a b) ...))
</pre>
</dl>
The procedure's arguments
<i>a
</i>and
<i>b
</i>will be bound as follows when the request is invoked:
<dl><dt><dd>
<pre>
.xx foo name="xx" a="foo" b=""
.xx foo bar baz name="xx" a="foo" b="bar baz"
</pre>
</dl>
<h2>
(defmacro <i>name</i> <i>handler</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>Associates
<i>handler
</i>with the given troff macro, superseding
any definition for this macro established by the ordinary ``.de''
request.<tt> </tt>
The only difference between
<i>defrequest
</i>and
<i>defmacro
</i>is the way arguments are bound in case
<i>handler
</i>is a procedure
(troff employs slightly different rules when parsing the call
to a request and a macro invocation).<tt> </tt>
The quote character can be used in the latter case to surround
arguments containing spaces, while quote characters are treated as
normal characters in requests, which allows for the following
remarkable troff idiom:
<dl><dt><dd>
<pre>
.ds xy "hello
</pre>
</dl>
In contrast to event handlers defined for requests, the formal
arguments of a handler procedure associated with a macro must
match the actual arguments in the normal way, that is, as if
the procedure were invoked from within Scheme.<tt> </tt>
A warning message is displayed if the number of macro arguments
does not match the number of formal procedure arguments, and
the event is skipped.<tt> </tt>
<h2>
(defspecial <i>name</i> <i>handler</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>Associates
<i>handler
</i>with the special character whose name is
<i>name</i>.<tt> </tt>
The name must have a length of 2.<tt> </tt>
In addition, an empty name can be specified to define a
``fallback'' handler that is called for special characters
for which no handler exists.<tt> </tt>
Like all event handler procedures,
<i>handler
</i>can have arbitrary side-effects in addition to returning a
result; for example, the procedure may display a warning message
if the special character cannot be represented in the target
language and an approximation must be rendered instead.<tt> </tt>
<h2>
(defstring <i>name</i> <i>handler</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>Associates a handler with the specified troff string.<tt> </tt>
As
<i>unroff
</i>provides a default handler for the request ``.ds'' to implement
used-defined strings,
<i>defstring
</i>is primarily used to give definitions for strings exported by
troff macro packages.<tt> </tt>
<h2>
(defnumreg <i>name</i> <i>handler</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>This request behaves like
<i>defstring</i>,
except that it works on number registers.<tt> </tt>
Note that the Scheme primitive
<i>number-&gt;string
</i>may have to be used by
<i>handler
</i>(if it is a procedure) to convert a numeric result into a string
that can be returned from the handler.<tt> </tt>
<p>
In troff input, number registers as well as strings, special
characters, and escape sequences can be denoted using the groff
``long name'' syntax, unless troff compatibility has been enabled:
<dl><dt><dd>
<pre>
\n[numreg] \n[string] \f[font] \[em] ...
</pre>
</dl>
<h2>
(defescape <i>name</i> <i>handler</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>Associates an event handler with an escape sequence.<tt> </tt>
<i>name
</i>must have a length of 1, unless the empty string is
given to define a ``fallback'' event handler (as with
<i>defspecial</i>).<tt> </tt>
Handlers defined for certain escape sequences are passed
a second argument in addition to the name of the escape sequence.<tt> </tt>
This is true for all escape sequences that have an argument
according to the troff specification:
<dl><dt><dd>
<pre>
\b \c \f \h \k \l \n \o \s \v \w \x \z
\* \$ \"
</pre>
</dl>
In addition, handlers for these groff escape sequences are passed an
additional argument unless troff compatibility is enabled:
<dl><dt><dd>
<pre>
\A \C \L \N \R \V \Y \Z
</pre>
</dl>
The form of an escape sequence argument is determined by the
troff specification and cannot be programmed; for example, the
handler for `\z' is passed a character or a special character,
and the handler for `\"' is invoked with the rest of the current
input line sans the terminating newline.<tt> </tt>
(The latter can be used to translate troff comments.)
<p>
Handlers registered for the escape sequences `\n' and '\s' are
passed an optional third argument, one of the Scheme characters
#\+ and #\-, if the escape sequence argument begins with a sign.<tt> </tt>
The sign is then stripped from the actual argument.<tt> </tt>
<p>
As `\n' and `\*' are treated as ordinary escape sequences,
handlers can be defined for them to achieve some form of fallback
for number register and strings.<tt> </tt>
<i>unroff
</i>provides suitable default handlers for `\n', `\*', and '\$' as part
of the implementation of user-defined number registers, strings,
and macros.<tt> </tt>
These handlers can be overridden if desired.<tt> </tt>
<h2>
(defchar <i>name</i> <i>handler</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>Associates
<i>handler
</i>with a character.<tt> </tt>
<i>name
</i>must have a length of 1.<tt> </tt>
Each time the specified character is encountered in the troff
input, the result (or value) of
<i>handler
</i>is output in place of the character.<tt> </tt>
Character translations are not applied to the result of event
handlers; event procedures can use the Scheme primitive
<a href="m-8.html#.translate"><i>translate</i></a>
(as described below) to execute the character translations
established by calls to
<i>defchar
</i>if desired.<tt> </tt>
<p>
<i>defchar
</i>currently has a number of weaknesses.<tt> </tt>
The argument cannot be a special character
(that is,
<i>name
</i>must be a plain character), and the mechanism cannot be used
to achieve true
<i>output
</i>translations as with the troff request ``.tr'' or the groff
request ``.char''.<tt> </tt>
<h2>
(defsentence <i>handler</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>Defines a handler to be consulted on end of sentence.<tt> </tt>
If
<i>handler
</i>is a procedure, it is passed the punctuation mark ending the
sentence as its argument (in form of a Scheme character).<tt> </tt>
In any case, if an event handler has been specified, its result
(or value) is output in place of the end-of-sentence mark and
the newline character following it.<tt> </tt>
<h2>
(defequation <i>handler</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>Defines a handler for
<i>eqn
</i>inline equations.<tt> </tt>
If
<i>handler
</i>is a procedure, it is passed the contents of the inline equation
(with the delimiters stripped) as an argument.<tt> </tt>
When an inline equation is encountered in the troff input and a handler
has been defined for inline equations, the handler's result (or value)
is output in place of the equation.<tt> </tt>
<p>
For inline equations to be recognized, delimiters must be defined first
by passing
<i>eqn
</i>input that includes a ``delim'' directive to the Scheme primitive
<a href="m-13.html#.filter-eqn-line"><i>filter-eqn-line</i></a>
(explained below), as is usually done
by the event handler associated with the request ``.EQ''.<tt> </tt>
<p><hr>
Markup created by <em>unroff</em> 1.0,&#160;<tt> </tt>&#160;<tt> </tt>March 21, 1996,&#160;<tt> </tt>&#160;<tt> </tt>net@informatik.uni-bremen.de</body>
</html>

46
www/doc/m-5.html Normal file
View File

@ -0,0 +1,46 @@
<html>
<head>
<!-- This file has been generated by unroff 1.0, 03/21/96 19:29:43. -->
<!-- Do not edit! -->
<link rev="made" href="mailto:net@informatik.uni-bremen.de">
<title>unroff Programmer's Manual, section 5.</title>
</head><body>
<h2><a name="section5">5.</a>&#160;<tt> </tt>Querying Event Handlers
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>In addition to associating event handlers with events by means
of the ``def'' primitives, several primitives exist to query
the currently defined handler for a given event:
<h2>
(requestdef <i>name</i>)
<br>
(macrodef <i>name</i>)
<br>
(specialdef <i>name</i>)
<br>
(stringdef <i>name</i>)
<br>
(numregdef <i>name</i>)
<br>
(escapedef <i>name</i>)
<br>
(chardef <i>name</i>)
<br>
(sentencedef)
<br>
(equationdef)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>Observe that the name of each primitive is derived from the name
of the corresponding ``def'' primitive by exchanging the word
``def'' and the rest of the name.<tt> </tt>
Each
<i>name
</i>argument is subject to the constraints described under the
corresponding ``def'' primitive above.<tt> </tt>
Each primitive returns whatever object has been registered as
the event handler (procedure, string, symbol, character);
or #f if no handler has been defined for the event.<tt> </tt>
<p><hr>
Markup created by <em>unroff</em> 1.0,&#160;<tt> </tt>&#160;<tt> </tt>March 21, 1996,&#160;<tt> </tt>&#160;<tt> </tt>net@informatik.uni-bremen.de</body>
</html>

120
www/doc/m-6.html Normal file
View File

@ -0,0 +1,120 @@
<html>
<head>
<!-- This file has been generated by unroff 1.0, 03/21/96 19:29:43. -->
<!-- Do not edit! -->
<link rev="made" href="mailto:net@informatik.uni-bremen.de">
<title>unroff Programmer's Manual, section 6.</title>
</head><body>
<h2><a name="section6">6.</a>&#160;<tt> </tt>Event Procedures with Side-Effects
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>Besides the basic events described in the
<a href="m-3.html#.events">preceding sections</a>,
another group of--slightly different--events exist and can
be handled by user-defined Scheme procedures.<tt> </tt>
These events are not related to troff functions, but to a number of
other conditions that are encountered when processing documents:
<ul>
<li>
the end of an input line
<li>
the beginning of a troff input file processed by
<i>unroff
</i><li>
the end of a troff input file
<li>
startup of the program
<li>
termination of the program
<li>
a keyword/value option encountered in the command line.<tt> </tt>
</ul>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>Among other tasks, these events can be used to generate a prologue and
epilogue for each input file.<tt> </tt>
In contrast to the events described in the previous section, handlers for
these events are called solely for their side-effects.<tt> </tt>
Each event handler must be a Scheme procedure.<tt> </tt>
Their results are ignored, thus the procedures must have side-effects
to be useful.<tt> </tt>
Another difference is that more than one event handler can be associated
with each request.<tt> </tt>
A numeric
<i>level
</i>(a small integer number) is specified together with each event handler,
and when the corresponding event is triggered, all procedures
defined for this event are executed in increasing order as indicated by
their levels.<tt> </tt>
<h2>
(defevent <i>event</i> <i>level</i> <i>handler</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>Associates the procedure
<i>handler
</i>with an event and returns the previous event handler registered
for this combination of event and level.<tt> </tt>
<i>level
</i>is an integer between 0 and 99;
<i>handler
</i>is a procedure, or the literal #f to remove a previously defined handler.<tt> </tt>
<i>event
</i>indicates the type of event and is one of the following Scheme symbols:
<i>line
</i>(end of input line),
<i>prolog
</i>(beginning of input file),
<i>epilog
</i>(end of input file),
<i>start
</i>(program start),
<i>exit
</i>(program termination),
<i>option
</i>(keyword/value command line option).<tt> </tt>
<p>
Procedures defined for the events
<i>prolog
</i>and
<i>epilog
</i>are called with two string arguments:
the path name (as specified by the user) and the file name component of
the troff input file whose processing has just begun or finished,
or the string ``stdin'' if
<i>unroff
</i>is taking its input from standard input.<tt> </tt>
Procedures defined for the event
<i>option
</i>are passed the option's name and value as strings.<tt> </tt>
All other event procedures are invoked without arguments.<tt> </tt>
<i>unroff
</i>provides a default handler for
<i>option
</i>(see the
<a href="m-15.html#.options">primitives for options</a>
below).<tt> </tt>
<p>
Example:
<dl><dt><dd>
<pre>
(defevent 'exit 50 ; cleanup on exit
(lambda ()
...))
</pre>
</dl>
The handler defined in this way will be executed on termination,
after any handlers with levels 0-49.<tt> </tt>
<h2>
(eventdef <i>event</i> <i>level</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>Returns the procedure defined as a handler for
<i>event
</i>and
<i>level</i>,
or #f if no such handler exists.<tt> </tt>
See
<i>defevent
</i>above for a description of the arguments.<tt> </tt>
<p><hr>
Markup created by <em>unroff</em> 1.0,&#160;<tt> </tt>&#160;<tt> </tt>March 21, 1996,&#160;<tt> </tt>&#160;<tt> </tt>net@informatik.uni-bremen.de</body>
</html>

116
www/doc/m-7.html Normal file
View File

@ -0,0 +1,116 @@
<html>
<head>
<!-- This file has been generated by unroff 1.0, 03/21/96 19:29:44. -->
<!-- Do not edit! -->
<link rev="made" href="mailto:net@informatik.uni-bremen.de">
<title>unroff Programmer's Manual, section 7.</title>
</head><body>
<h2><a name="section7">7.</a>&#160;<tt> </tt>How Troff Input is Processed
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>To be able to write non-trivial event handling procedures, it helps
to have a look at how troff input is processed, especially since
the parser of
<i>unroff
</i>works somewhat differently than ordinary troff.<tt> </tt>
In particular, the parser cannot blindly rescan the result of
handlers for escape sequences or special characters, as these
handlers will probably generate text in the
<i>target language
</i>that cannot be interpreted as troff input any longer.<tt> </tt>
Here is a brief overview of the parsing process.<tt> </tt>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>Each input line is first scanned for references to troff strings and
number registers (this scanning pass will later be referred to as the
``expansion phase'').<tt> </tt>
For each `\*' or `\n' sequence found in the input line,
<i>unroff
</i>checks whether a handler for the string or number register has
been defined with
<i>defstring
</i>or
<i>defnumreg</i>,
and if this is the case, replaces the string or number register
reference by the result (or value) of the handler.<tt> </tt>
Otherwise, if a handler for the escape sequence `\*' or `\n'
proper has been defined, that handler is called.<tt> </tt>
Otherwise the reference is left untouched and scanning resumes
behind it<a href="m-notes.html#footnote1">[note 1]</a>
.<tt> </tt>
Comments are recognized in this phase, too, by calling the handler
for the `\"' escape sequence if there is one.<tt> </tt>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>Next, the parser checks whether the result of the first phase
is a request or macro invocation (that is, begins with a period
or an apostrophe).<tt> </tt>
If this is the case, the arguments are parsed mimicking the
behavior of ordinary troff.<tt> </tt>
The rules for macro arguments are employed if
a handler has been defined
for the token after the period with
<i>defmacro</i>,
else the rules for requests are used.<tt> </tt>
The handler for the macro or request is then used, or applied
to the arguments if it is a procedure.<tt> </tt>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>If the input line does not contain a request or macro invocation,
it is scanned a second time to take care of escape sequences
and special characters (for lack of a better term, we will call
this phase ``escape parsing'').<tt> </tt>
Every escape character reference, special character, and inline
equation is replaced by the result (or value) of the event
handler registered for it, or left in place if there is no handler.<tt> </tt>
Character translations defined by means of
<i>defchar
</i>are also executed in this phase.<tt> </tt>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>Finally, the result of the escape parsing phase or of the request or
macro invocation is checked whether it constitutes the end of a
sentence, and if so, the handler for this event is called
(actually, in the former case, the check is applied before
<i>and
</i>after the escape parsing and must succeed both times).<tt> </tt>
As the final step the line is output, and any handlers for the
<i>line
</i>event are invoked.<tt> </tt>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>An important thing to note is that the arguments passed to a handler
defined for a request or macro are not scanned for escape sequences
and special characters.<tt> </tt>
Therefore event procedures must explicitly parse their arguments if
desired by calling the Scheme primitive
<a href="m-8.html#.parse"><i>parse</i></a>
(which will be described in the next section).<tt> </tt>
Consider, for example, an event procedure associated with a
macro ``IP'':
<dl><dt><dd>
<pre>
(defmacro 'IP
(lambda (IP tag . indent)
...))
</pre>
</dl>
and a call to the macro with an argument containing a
special character:
<dl><dt><dd>
<pre>
.IP \(bu
</pre>
</dl>
As the argument to the event procedure is only scanned for
strings and number registers, the variable
<i>tag
</i>will be bound to the string ``\(bu''.<tt> </tt>
Applying
<i>parse
</i>to the argument will turn it into whatever is the target language
representation for the special character ``\(bu'' (that is, the
result of the event handler for the special character).<tt> </tt>
Whether or not arguments will have to be parsed depends on the
particular request or macro; the procedure implementing the request
``.tm'', for instance, will print its ``raw'' argument (a sample
event handler for the request ``.tm'' is supplied by
<i>unroff</i>).<tt> </tt>
<p><hr>
Markup created by <em>unroff</em> 1.0,&#160;<tt> </tt>&#160;<tt> </tt>March 21, 1996,&#160;<tt> </tt>&#160;<tt> </tt>net@informatik.uni-bremen.de</body>
</html>

175
www/doc/m-8.html Normal file
View File

@ -0,0 +1,175 @@
<html>
<head>
<!-- This file has been generated by unroff 1.0, 03/21/96 19:29:44. -->
<!-- Do not edit! -->
<link rev="made" href="mailto:net@informatik.uni-bremen.de">
<title>unroff Programmer's Manual, section 8.</title>
</head><body>
<h2><a name="section8">8.</a>&#160;<tt> </tt>Calling the Parser
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>The following Scheme primitives are used by event procedures for
requests, macros, and escape characters to parse their arguments
or to parse lines of text that have been read from an input source.<tt> </tt>
Each of the primitives can be invoked with zero or more arguments
of type string, symbol, or character.<tt> </tt>
The arguments are concatenated to form a Scheme string which is then
passed to the parser, and the result is returned as a new string.<tt> </tt>
<h2>
<a name=".parse">(parse <i>.</i> <i>args</i>)</a></h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>This primitive feeds its arguments to the ``escape parsing''
pass as described in the previous section.<tt> </tt>
It scans its arguments for special characters and escape
sequences and replaces them by the corresponding event values
(or results), and it executes character translations.<tt> </tt>
<h2>
<a name=".translate">(translate <i>.</i> <i>args</i>)</a></h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>Like
<i>parse
</i>above, except that only output character translations (defined by calls to
<i>defchar</i>)
are executed.<tt> </tt>
<h2>
(parse-expand <i>.</i> <i>args</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>This primitive applies the ``expansion parsing'' phase (as described in the
previous section) to its arguments.<tt> </tt>
Compared to
<i>parse</i>,
<i>parse-expand
</i>is only used rarely, as input lines read in the normal way are
scanned for string and number register references anyway.<tt> </tt>
The sample implementation supplied by
<i>unroff
</i>for the requests ``.ds'', ``.as'', and '\*' makes use of this primitive
to rescan the contents of user-defined strings upon interpolation.<tt> </tt>
<h2>
(parse-line <i>.</i> <i>args</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>This primitive parses an entire input line, which may contain a call
to a request or macro, as described in the previous section.<tt> </tt>
The line made up by the primitive's arguments is treated exactly as
it if were read from an input file, although it need not have a
terminating newline.<tt> </tt>
Two places where this primitive is required are the handler for
the request ``.so'' and the code that expands user-defined macros.<tt> </tt>
<h2>
(parse-copy-mode <i>.</i> <i>args</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>The primitive
<i>parse-copy-mode
</i>parses its arguments in a manner similar to troff ``copy mode''.<tt> </tt>
In this mode, escape sequences beginning with '\$' are dealt
with (by calling their event procedures), the sequence `\\'
is replaced by a single `\', and each occurrence of `\.'
is replaced by a period.<tt> </tt>
Macro bodies are parsed in copy mode during macro definition and again
when the macros are expanded.<tt> </tt>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>The sample implementation of user-defined macros supplied by
<i>unroff
</i>defines suitable event handlers for the usual
<dl><dt><dd>
<pre>
\$1 \$2 ...
</pre>
</dl>
escape sequences (there is no limit to the number of arguments,
and the groff long name convention may be used to denote an
argument number), and in addition for the groff extensions
<dl><dt><dd>
<pre>
\$0 \$* \$@
</pre>
</dl>
as explained in the
<a href="./unroff.1.html">manual page</a>
<i>unroff</i>(1).<tt> </tt>
<h2>
(parse-expression <i>expr</i> <i>fail</i> <i>scale</i>)
<br>
(parse-expression-rest <i>expr</i> <i>fail</i> <i>scale</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>These primitives evaluate the numeric expression specified by
the string argument
<i>expr
</i>and return the result as an exact number.<tt> </tt>
The usual troff expression syntax, operators, and scale
indicators are supported.<tt> </tt>
If an error occurs during evaluation (for instance, if
<i>expr
</i>is not a syntactically valid expression),
a warning message is displayed and
<i>fail
</i>(which may be an arbitrary Scheme object) is returned.<tt> </tt>
The character argument
<i>scale
</i>is the default scale indicator, for example `#\m', or `#\u'
for basic units.<tt> </tt>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>The primitive
<i>parse-expression-rest
</i>is identical to
<i>parse-expression</i>,
except that its return value is a cons cell whose car consists
of the result of the evaluation and whose cdr is the rest of
<i>expr
</i>starting at the character position where parsing of the
expression stopped.<tt> </tt>
In other words, the primitive evaluates the portion of
<i>expr
</i>that constitutes a valid expression, and it returns the result
and whatever is left over.<tt> </tt>
Warning messages are also suppressed, except if an overflow occurs
during evaluation.<tt> </tt>
<i>parse-expression-rest
</i>is useful for tasks like parsing the argument of the escape
sequences `\l' and `\L' where an expression is immediately
followed by another character.<tt> </tt>
Examples:
<dl><dt><dd>
<pre>
(parse-expression "(2+8)/5" 0 #\u) =&gt; 2
(parse-expression "foo" #f #\u) =&gt; #f; prints warning
(parse-expression-rest "1+1" #f #\u) =&gt; (2 . "")
(parse-expression-rest "(2+8)/5foo" 0 #\u) =&gt; (2 . "foo")
(parse-expression-rest "15\&amp;-" 0 #\u) =&gt; (15 . "\&amp;-")
</pre>
</dl>
<h2>
(char-expression-delimiter? <i>char</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>Returns #t if the character argument
<i>char
</i>is valid as the first character of a numeric expression (e.g. a digit),
otherwise #f.<tt> </tt>
<h2>
(set-scaling! <i>scale</i> <i>factor</i> <i>divisor</i>)
<br>
(get-scaling <i>scale</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>These primitives set and read the scale factor and divisor for
the specified scale indicator.<tt> </tt>
<i>scale
</i>is the scale indicator (a character);
<i>factor
</i>and
<i>divisor
</i>are integers.<tt> </tt>
<i>get-scaling
</i>returns the scaling for the specified scale indicator as a pair
of integers.<tt> </tt>
The factors and divisors are initially set to 1 for all scale
indicators; they must be assigned useful values by each back-end.<tt> </tt>
<p><hr>
Markup created by <em>unroff</em> 1.0,&#160;<tt> </tt>&#160;<tt> </tt>March 21, 1996,&#160;<tt> </tt>&#160;<tt> </tt>net@informatik.uni-bremen.de</body>
</html>

193
www/doc/m-9.html Normal file
View File

@ -0,0 +1,193 @@
<html>
<head>
<!-- This file has been generated by unroff 1.0, 03/21/96 19:29:45. -->
<!-- Do not edit! -->
<link rev="made" href="mailto:net@informatik.uni-bremen.de">
<title>unroff Programmer's Manual, section 9.</title>
</head><body>
<h2><a name="section9">9.</a>&#160;<tt> </tt>Streams
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>Input, output, and storage of text lines in
<i>unroff
</i>are centered around a new Scheme data type named
<i>stream
</i>and a set of primitives that work on streams.<tt> </tt>
A stream can act as a source (input stream) or as a sink (output
stream) for lines of text.<tt> </tt>
Streams not only serve as the basis for input and output operations
and for the exchange of text with shell commands, but can also be used
to temporarily buffer lines of text (e.g. footnotes or tables of
contents) and to implement user-defined macros in a simple way.<tt> </tt>
Each input or output stream can be connected to one of the
following three types of
<i>targets</i>:
<ul>
<li>
a file, or the program's standard input or standard output
<li>
a UNIX pipe connected to a shell running a shell command
<li>
an internal
<i>buffer
</i>whose lifetime is limited to that of the current invocation of
<i>unroff</i>.<tt> </tt>
</ul>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>Buffers act similar to (initially empty) files, except that
they are not visible from the outside and that they are destroyed
automatically on exit of the program.<tt> </tt>
Once a buffer has been filled with text through an output stream,
it can be reopened and read through an input stream multiple times.<tt> </tt>
However, if a buffer is currently written through an output stream,
no more streams may refer to the same buffer.<tt> </tt>
As the contents of buffers kept in memory, input and output operations
on buffers are fast.<tt> </tt>
The sample implementation of user-defined macros utilizes buffers
to store the macro bodies; a macro can then be expanded simply
by redirecting the current input source to the corresponding buffer
temporarily.<tt> </tt>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>Both the parser and all input and output primitives operate on a
<i>current input stream
</i>and a
<i>current output stream</i>;
input and output is always performed using these two streams.<tt> </tt>
On startup,
<i>unroff
</i>initializes the current output stream to either point to
standard output or to a newly created output file (usually depending on
the value of the
<b>document
</b>option).<tt> </tt>
If the current output stream is assigned the literal #f,
output is sent to standard output<a href="m-notes.html#footnote2">[note 2]</a>
.<tt> </tt>
Likewise, for each input file mentioned in the command line,
a stream pointing to that file is created and assigned to
the current input stream before the parser starts processing
the file.<tt> </tt>
The rest of this section lists the Scheme primitives operating
on streams.<tt> </tt>
<h2>
(stream? <i>obj</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>The type predicate for the new data type.<tt> </tt>
It returns #t if
<i>obj
</i>is a member of the type
<i>stream</i>,
otherwise #f.<tt> </tt>
<h2>
(input-stream)
<br>
(output-stream)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>Returns the current input stream, or output stream respectively.<tt> </tt>
<h2>
(open-input-stream <i>target</i>)
<br>
(open-output-stream <i>target</i>)
<br>
(append-output-stream <i>target</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>These primitives create a new input stream or output stream pointing
to the specified target.<tt> </tt>
The argument
<i>target
</i>is a string or a symbol.<tt> </tt>
If the target is enclosed in square brackets, it names a buffer;
if it begins with the pipe symbol `|', a pipe to a shell running
the rest of the target as a shell command is established; otherwise
<i>target
</i>is interpreted as a file name.<tt> </tt>
<i>append-output-stream
</i>rewinds to the end of the specified output buffer or file before
the first output operation; it acts like
<i>open-output-stream
</i>in case of a pipe.<tt> </tt>
Examples:
<dl><dt><dd>
<pre>
(let* ((buffer (open-output-stream '[temp]))
(pipe (open-input-stream "|ls -l /usr/lib/tmac"))
(file (open-input-stream "/etc/passwd")))
...)
</pre>
</dl>
<h2>
(set-input-stream! <i>stream</i>)
<br>
(set-output-stream! <i>stream</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>These primitives make the specified stream the
<i>current
</i>input stream (or output stream respectively).<tt> </tt>
<i>stream
</i>must be the result of a call to one of the three primitives that
open a stream, or #f.<tt> </tt>
An error is signaled if
<i>set-input-stream!
</i>is applied to an output stream or vice versa, or if the stream
has been closed in the meantime.<tt> </tt>
<h2>
(close-stream <i>stream</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>Closes the specified stream.<tt> </tt>
An error is signaled if the stream is still the current input
stream or current output stream.<tt> </tt>
Once an output stream pointing to a buffer has been closed, the
buffer can be reopened for reading.<tt> </tt>
A stream that is no longer reachable is closed automatically
during the next run of the garbage collector.<tt> </tt>
<h2>
(stream-buffer? <i>stream</i>)
<br>
(stream-file? <i>stream</i>)
<br>
(stream-pipe? <i>stream</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>These predicates return #t if the specified stream points to a
buffer, a file, or a pipe respectively, otherwise #f.<tt> </tt>
<h2>
(stream-target <i>stream</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>This primitive returns the target to which the specified stream
points.<tt> </tt>
The return value is a string.<tt> </tt>
In case of a pipe, the target is truncated at the first space,
that is, only the command name is included.<tt> </tt>
The target of the current input stream (together with the current
line number) is displayed as a prefix of error messages and
can also be obtained through the primitive
<a href="m-11.html#.substitute"><i>substitute</i></a>
described below.<tt> </tt>
<h2>
(stream-position <i>stream</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>Returns the current character position of the specified output stream,
that is, the offset at which the next character will be written.<tt> </tt>
The return value for input streams is currently always zero.<tt> </tt>
This primitive is useful in conjunction with
<a href="m-14.html#.file-insertions"><i>file-insertions</i></a>
(described below).<tt> </tt>
<h2>
(stream-string <i>target</i>)
</h2>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>This primitive opens an input string to the specified target,
reads from the stream until end-of-stream is reached, closes
the stream, and returns the concatenation of all the lines that
have been read as a string<a href="m-notes.html#footnote3">[note 3]</a>
.<tt> </tt>
<p><hr>
Markup created by <em>unroff</em> 1.0,&#160;<tt> </tt>&#160;<tt> </tt>March 21, 1996,&#160;<tt> </tt>&#160;<tt> </tt>net@informatik.uni-bremen.de</body>
</html>

41
www/doc/m-notes.html Normal file
View File

@ -0,0 +1,41 @@
<html>
<head>
<!-- This file has been generated by unroff 1.0, 03/21/96 19:29:48. -->
<!-- Do not edit! -->
<link rev="made" href="mailto:net@informatik.uni-bremen.de">
<title>unroff Programmer's Manual, footnotes</title>
</head><body>
<h2><a name="section0">Footnotes</a></h2>
<p>
<b><a name="footnote1">[1]</a></b>&#160;<tt> </tt>Although the result of specific event handlers defined for
strings is not rescanned, the handler for `\*' that is supplied by
<i>unroff
</i>to implement user-defined strings does rescan the contents of
a string when it is expanded.<tt> </tt>
<p>
<b><a name="footnote2">[2]</a></b>&#160;<tt> </tt>While #f indicates ``standard output'' when assigned to
the current output stream, it is an error to call an input primitive
after #f has been assigned to the current
<i>input
</i>stream.<tt> </tt>
This may be considered a mis-feature; the current input and
output streams should be treated similarly with respect to
standard input and standard output.<tt> </tt>
<p>
<b><a name="footnote3">[3]</a></b>&#160;<tt> </tt><i>stream-&gt;string
</i>is a misnomer, because the argument of the primitive is not
a stream, nor does the primitive actually
<i>convert
</i>a stream to a string as suggested by the `-&gt;' sign.<tt> </tt>
<p>
<b><a name="footnote4">[4]</a></b>&#160;<tt> </tt>The primitive
<i>error-port
</i>should actually be provided by Elk proper to avoid having to
reinvent it for each extensible application.<tt> </tt>
<p>
<b><a name="footnote5">[5]</a></b>&#160;<tt> </tt>The primitive
<i>parse-triple
</i>should probably return a proper list rather than an improper list.<tt> </tt>
<p><hr>
Markup created by <em>unroff</em> 1.0,&#160;<tt> </tt>&#160;<tt> </tt>March 21, 1996,&#160;<tt> </tt>&#160;<tt> </tt>net@informatik.uni-bremen.de</body>
</html>

77
www/doc/m.html Normal file
View File

@ -0,0 +1,77 @@
<html>
<head>
<!-- This file has been generated by unroff 1.0, 03/21/96 19:29:41. -->
<!-- Do not edit! -->
<link rev="made" href="mailto:net@informatik.uni-bremen.de">
<title>unroff Programmer's Manual</title>
</head><body>
<!-- $Revision: 1.12 $ -->
<h1>
unroff 1.0 Programmer's Manual
</h1>
<p>
<i>Oliver Laumann
<br>
</i><hr>
<p>
<i>unroff
</i>is a programmable, extensible troff translator that is useful for
converting documents with embedded troff markup into another
format.<tt> </tt>
Although
<i>unroff
</i>has been designed with higher-level, structure-oriented target
languages (such as SGML) in mind, it fully supports all constructs
and idiosyncrasies of ordinary troff, so that even low-level
formatting requests can be handled correctly if desired.<tt> </tt>
<p>
&#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>Translation rules for a specific output format and knowledge about
existing troff macro packages are not hard-wired in
<i>unroff</i>,
instead, the translation is controlled by a user-supplied set
of procedures written in the
<a href="http://www-swiss.ai.mit.edu/scheme-home.html"><i>Scheme</i> programming language</a>.<tt> </tt>
Interpretation of the procedures is facilitated by a full Scheme
interpreted embedded in
<i>unroff</i>.<tt> </tt>
This manual describes the Scheme primitives provided by
<i>unroff
</i>that can be used to customize the translation rules implemented
by existing back-ends and to write new ones for new output formats.<tt> </tt>
<hr>
<h2>Table of Contents</h2>
<ul><li><a href="m-1.html#section1">1. </a>
Additional Documentation
<li><a href="m-2.html#section2">2. </a>
Where to Place Scheme Code?
<li><a href="m-3.html#section3">3. </a>
<a name=".events">Events and Event Handling</a>
<li><a href="m-4.html#section4">4. </a>
Defining Event Handlers
<li><a href="m-5.html#section5">5. </a>
Querying Event Handlers
<li><a href="m-6.html#section6">6. </a>
Event Procedures with Side-Effects
<li><a href="m-7.html#section7">7. </a>
How Troff Input is Processed
<li><a href="m-8.html#section8">8. </a>
Calling the Parser
<li><a href="m-9.html#section9">9. </a>
Streams
<li><a href="m-10.html#section10">10. </a>
Input and Output Primitives
<li><a href="m-11.html#section11">11. </a>
String Functions
<li><a href="m-12.html#section12">12. </a>
Tables
<li><a href="m-13.html#section13">13. </a>
Miscellaneous Primitives
<li><a href="m-14.html#section14">14. </a>
File Insertions
<li><a href="m-15.html#section15">15. </a>
Utilities for Back-Ends
<li><a href="m-notes.html#section0">Footnotes</a>
</ul>
<p><hr>
Markup created by <em>unroff</em> 1.0,&#160;<tt> </tt>&#160;<tt> </tt>March 21, 1996,&#160;<tt> </tt>&#160;<tt> </tt>net@informatik.uni-bremen.de</body>
</html>

1843
www/doc/manual.html Normal file

File diff suppressed because it is too large Load Diff

1738
www/doc/manual.ms Normal file

File diff suppressed because it is too large Load Diff

1791
www/doc/manual.ps Normal file

File diff suppressed because it is too large Load Diff

218
www/doc/unroff-html-man.1 Normal file
View File

@ -0,0 +1,218 @@
.\" $Revision: 1.6 $
.ds Ve 1.0
.\"
.de Ex
.RS
.nf
.nr sf \\n(.f
.if !\\n(.U \{\
. ft B
. if n .sp
. if t .sp .5 \}
..
.de Ee
.if !\\n(.U \{\
. ft \\n(sf
. if n .sp
. if t .sp .5 \}
.fi
.RE
..
.\"
.de Sd
.ds Dt \\$2
..
.\"
.Sd $Date: 1995/08/23 12:07:31 $
.TH unroff-html-man 1 "\*(Dt"
.SH NAME
unroff-html-man \- back-end to translate manual pages to HTML 2.0
.SH SYNOPSIS
.B unroff
[
.B \-fhtml
] [
.B \-man
] [
.IR file " | " option...\&
]
.SH OVERVIEW
When called with the
.B \-fhtml
and
.B \-man
options, the troff translator
.I unroff
loads the back-end for converting UNIX manual pages to the Hypertext
Markup Language (HTML) version 2.0.
.LP
Please read
.BR unroff (1)
first for an overview of the Scheme-based, programmable troff translator
and for a description of the generic options that exist in
addition to
.B \-f
and
.BR \-m .
The translation of basic troff requests, special characters,
escape sequences, etc. as well as the HTML-specific options
are described in
.BR unroff-html (1).
For information about extending and programming
.I unroff
also refer to the
.IR "Unroff Programmer's Manual" .
.SH OPTIONS
The
.B \-man
extension provides one new keyword/value option in addition to
those listed in
.BR unroff (1)
and
.BR unroff-html (1):
.TP
.BR do-signature " (boolean)"
If set to 1, a signature is appended to each output file.
The signature is composed of a horizontal rule and a one-line
message consisting of version information and date and time.
The default value of this option is 1.
.SH DESCRIPTION
.I unroff
reads and parses its input files (each containing a UNIX manual
page); the HTML output is written to a separate output file
for each input file.
The name of an output file is obtained by appending the
suffix \*(lq.html\*(rq to the name of the corresponding input
file.
Any
.B document
option is ignored if input files are named in the command line.
As usual, the special file name
.RB ` \- '
can be used to interpolate standard input.
.LP
If no file name is given in the command line, a manual page
is read from standard input and sent to standard output,
unless the
.B document
option is given, in which case the HTML output is written
to the specified file (with \*(lq.html\*(rq appended).
Example:
this call to
.I unroff
translates two manual pages and creates two corresponding output files,
.B cc.1.html
and
.BR send.2.html :
.Ex
unroff \-fhtml \-man /usr/man/man1/cc.1 /usr/man/man2/send.2
.Ee
.LP
The following
.B \-man
macros are recognized and translated (in addition to any user-defined macros):
.LP
.nf
.if !\n(.U .ta 8n 16n 24n 32n 40n 48n 56n
.TH .SH .SS .I .B .SB .SM
.BI .BR .IB .IR .RB .RI .TP
.IP .HP .RS .RE .LP .PP .P
.fi
.LP
In addition, the following Sun-specific macros are silently
ignored (.TX generates an informational message containing
its argument):
.LP
.nf
.TX .IX .DT .PD .UC
.fi
.LP
The following predefined troff strings are recognized
(\e*S expands to the empty string):
.LP
.nf
\e*R \e*S \e*(lq \e*(rq
.fi
.LP
The title of each HTML document generated is obtained by calling
the primitive
.I substitute
(as explained in the Programmer's Manual) with the value of the option
.B title
and the first and second arguments passed to the initial call to
.BR .TH .
Thus, the specifiers \*(lq%1%\*(rq and \*(lq%2%\*(rq can be used
in the option to interpolate the command (or whatever is documented
in the manual page) and the section number.
If
.B title
has not been specified, the string \*(lqManual page for %1%(%2%)\*(rq
is taken.
As generating the HTML title element is deferred until the call to
.BR .TH ,
any macros or other troff requests that produce output must not be
used before the initial
.BR .TH .
.LP
HTML header elements <h2> and <h3> are created for
.B .SH
and
.B .SS
requests.
The markup created for the initial NAME section differs in that the
contents of the section (usually a single line) is itself placed
inside a header element.
.LP
The font switching macros are based on changes to the fonts `R',
`I', and `B', as explained under FONTS in
.BR unroff-html (1).
Of course, this fails if the fonts (which are mounted on startup)
are unmounted by explicit
.B .fp
requests.
As HTML is lacking the concept of text size, the macro
.B .SB
is just an alias for
.BR .B ,
and
.B .SM
simply echoes its arguments.
.LP
The translation rules for
.B .TP
and
.B .IP
employ a heuristic to determine whether to generate a definition
list or an unordered list:
if the first in a sequence of tagged/indented paragraph macros is
called with a tag consisting of the special character \e(bu, a
definition list is begun, otherwise an unordered list.
Subsequent invocations cause the list style to change if appropriate.
Use of tagged paragraphs inside non-filled (pre-formatted) text
violates the HTML definition and should be avoided.
A warning message is printed in this and other questionable situations.
.LP
As hanging tags cannot be realized with HTML 2.0,
a kludge is used for the
.B .HP
(hanging paragraph) macro:
the macro starts a definition list (as does the ordinary
.BR .TP
macro), and everything up to the next request that causes a break
is placed inside the definition tag.
This method obviously fails if no break occurs in subsequent lines,
but it works for the common, idiomatic use of hanging paragraphs
in manual pages.
.SH "SEE ALSO"
.BR unroff (1),
.BR unroff-html (1),
.BR troff (1),
.BR man "(5 or 7)."
.LP
Unroff Programmer's Manual.
.LP
http://www.informatik.uni-bremen.de/~net/unroff
.LP
Berners-Lee, Connolly, et al.,
HyperText Markup Language Specification\(em2.0,
Internet Draft, Internet Engineering Task Force.

View File

@ -0,0 +1,208 @@
<html>
<head>
<!-- This file has been generated by unroff 1.0, 03/21/96 19:29:25. -->
<!-- Do not edit! -->
<link rev="made" href="mailto:net@informatik.uni-bremen.de">
<!-- $Revision: 1.6 $ -->
<title>Manual page for unroff-html-man(1)</title>
</head>
<body>
<h2>
unroff-html-man - back-end to translate manual pages to HTML 2.0
<hr></h2>
<h2>SYNOPSIS</h2>
<b>unroff
</b>[
<b>-fhtml
</b>] [
<b>-man
</b>] [
<i>file</i> | <i>option...
</i>]
<h2>OVERVIEW</h2>
When called with the
<b>-fhtml
</b>and
<b>-man
</b>options, the troff translator
<i>unroff
</i>loads the back-end for converting UNIX manual pages to the Hypertext
Markup Language (HTML) version 2.0.<tt> </tt>
<p>
Please read
<b>unroff</b>(1)
first for an overview of the Scheme-based, programmable troff translator
and for a description of the generic options that exist in
addition to
<b>-f
</b>and
<b>-m</b>.<tt> </tt>
The translation of basic troff requests, special characters,
escape sequences, etc. as well as the HTML-specific options
are described in
<b>unroff-html</b>(1).<tt> </tt>
For information about extending and programming
<i>unroff
</i>also refer to the
<i>Unroff Programmer's Manual</i>.<tt> </tt>
<h2>OPTIONS</h2>
The
<b>-man
</b>extension provides one new keyword/value option in addition to
those listed in
<b>unroff</b>(1)
and
<b>unroff-html</b>(1):
<dl>
<dt><b>do-signature</b> (boolean)
<dd>
If set to 1, a signature is appended to each output file.<tt> </tt>
The signature is composed of a horizontal rule and a one-line
message consisting of version information and date and time.<tt> </tt>
The default value of this option is 1.<tt> </tt>
</dl>
<h2>DESCRIPTION</h2>
<i>unroff
</i>reads and parses its input files (each containing a UNIX manual
page); the HTML output is written to a separate output file
for each input file.<tt> </tt>
The name of an output file is obtained by appending the
suffix ``.html'' to the name of the corresponding input
file.<tt> </tt>
Any
<b>document
</b>option is ignored if input files are named in the command line.<tt> </tt>
As usual, the special file name
`<b>-</b>'
can be used to interpolate standard input.<tt> </tt>
<p>
If no file name is given in the command line, a manual page
is read from standard input and sent to standard output,
unless the
<b>document
</b>option is given, in which case the HTML output is written
to the specified file (with ``.html'' appended).<tt> </tt>
Example:
this call to
<i>unroff
</i>translates two manual pages and creates two corresponding output files,
<b>cc.1.html
</b>and
<b>send.2.html</b>:
<dl><dt><dd>
<pre>
unroff -fhtml -man /usr/man/man1/cc.1 /usr/man/man2/send.2
</pre>
</dl>
<p>
The following
<b>-man
</b>macros are recognized and translated (in addition to any user-defined macros):
<p>
<pre>
.TH .SH .SS .I .B .SB .SM
.BI .BR .IB .IR .RB .RI .TP
.IP .HP .RS .RE .LP .PP .P
</pre>
<p>
In addition, the following Sun-specific macros are silently
ignored (.TX generates an informational message containing
its argument):
<p>
<pre>
.TX .IX .DT .PD .UC
</pre>
<p>
The following predefined troff strings are recognized
(\*S expands to the empty string):
<p>
<pre>
\*R \*S \*(lq \*(rq
</pre>
<p>
The title of each HTML document generated is obtained by calling
the primitive
<i>substitute
</i>(as explained in the Programmer's Manual) with the value of the option
<b>title
</b>and the first and second arguments passed to the initial call to
<b>.TH</b>.<tt> </tt>
Thus, the specifiers ``%1%'' and ``%2%'' can be used
in the option to interpolate the command (or whatever is documented
in the manual page) and the section number.<tt> </tt>
If
<b>title
</b>has not been specified, the string ``Manual page for %1%(%2%)''
is taken.<tt> </tt>
As generating the HTML title element is deferred until the call to
<b>.TH</b>,
any macros or other troff requests that produce output must not be
used before the initial
<b>.TH</b>.<tt> </tt>
<p>
HTML header elements &lt;h2&gt; and &lt;h3&gt; are created for
<b>.SH
</b>and
<b>.SS
</b>requests.<tt> </tt>
The markup created for the initial NAME section differs in that the
contents of the section (usually a single line) is itself placed
inside a header element.<tt> </tt>
<p>
The font switching macros are based on changes to the fonts `R',
`I', and `B', as explained under FONTS in
<b>unroff-html</b>(1).<tt> </tt>
Of course, this fails if the fonts (which are mounted on startup)
are unmounted by explicit
<b>.fp
</b>requests.<tt> </tt>
As HTML is lacking the concept of text size, the macro
<b>.SB
</b>is just an alias for
<b>.B</b>,
and
<b>.SM
</b>simply echoes its arguments.<tt> </tt>
<p>
The translation rules for
<b>.TP
</b>and
<b>.IP
</b>employ a heuristic to determine whether to generate a definition
list or an unordered list:
if the first in a sequence of tagged/indented paragraph macros is
called with a tag consisting of the special character \(bu, a
definition list is begun, otherwise an unordered list.<tt> </tt>
Subsequent invocations cause the list style to change if appropriate.<tt> </tt>
Use of tagged paragraphs inside non-filled (pre-formatted) text
violates the HTML definition and should be avoided.<tt> </tt>
A warning message is printed in this and other questionable situations.<tt> </tt>
<p>
As hanging tags cannot be realized with HTML 2.0,
a kludge is used for the
<b>.HP
</b>(hanging paragraph) macro:
the macro starts a definition list (as does the ordinary
<b>.TP
</b>macro), and everything up to the next request that causes a break
is placed inside the definition tag.<tt> </tt>
This method obviously fails if no break occurs in subsequent lines,
but it works for the common, idiomatic use of hanging paragraphs
in manual pages.<tt> </tt>
<h2>SEE ALSO</h2>
<b>unroff</b>(1),
<b>unroff-html</b>(1),
<b>troff</b>(1),
<b>man</b>(5 or 7).<tt> </tt>
<p>
Unroff Programmer's Manual.<tt> </tt>
<p>
http://www.informatik.uni-bremen.de/~net/unroff
<p>
Berners-Lee, Connolly, et al.,
HyperText Markup Language Specification--2.0,
Internet Draft, Internet Engineering Task Force.<tt> </tt>
<p><hr>
Markup created by <em>unroff</em> 1.0,&#160;<tt> </tt>&#160;<tt> </tt>March 21, 1996.
</body>
</html>

View File

@ -0,0 +1,355 @@
%!PS-Adobe-3.0
%%Creator: groff version 1.09
%%CreationDate: Thu Mar 21 19:29:58 1996
%%DocumentNeededResources: font Times-Roman
%%+ font Times-Bold
%%+ font Times-Italic
%%DocumentSuppliedResources: procset grops 1.09 0
%%Pages: 2
%%PageOrder: Ascend
%%Orientation: Portrait
%%EndComments
%%BeginProlog
%%BeginResource: procset grops 1.09 0
/setpacking where{
pop
currentpacking
true setpacking
}if
/grops 120 dict dup begin
/SC 32 def
/A/show load def
/B{0 SC 3 -1 roll widthshow}bind def
/C{0 exch ashow}bind def
/D{0 exch 0 SC 5 2 roll awidthshow}bind def
/E{0 rmoveto show}bind def
/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
/G{0 rmoveto 0 exch ashow}bind def
/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/I{0 exch rmoveto show}bind def
/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
/K{0 exch rmoveto 0 exch ashow}bind def
/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/M{rmoveto show}bind def
/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
/O{rmoveto 0 exch ashow}bind def
/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/Q{moveto show}bind def
/R{moveto 0 SC 3 -1 roll widthshow}bind def
/S{moveto 0 exch ashow}bind def
/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/SF{
findfont exch
[exch dup 0 exch 0 exch neg 0 0]makefont
dup setfont
[exch/setfont cvx]cvx bind def
}bind def
/MF{
findfont
[5 2 roll
0 3 1 roll
neg 0 0]makefont
dup setfont
[exch/setfont cvx]cvx bind def
}bind def
/level0 0 def
/RES 0 def
/PL 0 def
/LS 0 def
/PLG{
gsave newpath clippath pathbbox grestore
exch pop add exch pop
}bind def
/BP{
/level0 save def
1 setlinecap
1 setlinejoin
72 RES div dup scale
LS{
90 rotate
}{
0 PL translate
}ifelse
1 -1 scale
}bind def
/EP{
level0 restore
showpage
}bind def
/DA{
newpath arcn stroke
}bind def
/SN{
transform
.25 sub exch .25 sub exch
round .25 add exch round .25 add exch
itransform
}bind def
/DL{
SN
moveto
SN
lineto stroke
}bind def
/DC{
newpath 0 360 arc closepath
}bind def
/TM matrix def
/DE{
TM currentmatrix pop
translate scale newpath 0 0 .5 0 360 arc closepath
TM setmatrix
}bind def
/RC/rcurveto load def
/RL/rlineto load def
/ST/stroke load def
/MT/moveto load def
/CL/closepath load def
/FL{
currentgray exch setgray fill setgray
}bind def
/BL/fill load def
/LW/setlinewidth load def
/RE{
findfont
dup maxlength 1 index/FontName known not{1 add}if dict begin
{
1 index/FID ne{def}{ pop pop}ifelse
}forall
/Encoding exch def
dup/FontName exch def
currentdict end definefont pop
}bind def
/DEFS 0 def
/EBEGIN{
moveto
DEFS begin
}bind def
/EEND/end load def
/CNT 0 def
/level1 0 def
/PBEGIN{
/level1 save def
translate
div 3 1 roll div exch scale
neg exch neg exch translate
0 setgray
0 setlinecap
1 setlinewidth
0 setlinejoin
10 setmiterlimit
[] 0 setdash
/setstrokeadjust where{
pop
false setstrokeadjust
}if
/setoverprint where{
pop
false setoverprint
}if
newpath
/CNT countdictstack def
userdict begin
/showpage{} def
}bind def
/PEND{
clear
countdictstack CNT sub{end}repeat
level1 restore
}bind def
end def
/setpacking where{
pop
setpacking
}if
%%EndResource
%%IncludeResource: font Times-Roman
%%IncludeResource: font Times-Bold
%%IncludeResource: font Times-Italic
grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
def/PL 841.89 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron
/Zcaron/scaron/zcaron/Ydieresis/trademark/quotesingle/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
/Times-Italic@0 ENC0/Times-Italic RE/Times-Bold@0 ENC0/Times-Bold RE
/Times-Roman@0 ENC0/Times-Roman RE
%%EndProlog
%%Page: 1 1
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF(unrof)72 48 Q 308.26(f-html-man\(1\) unrof)-.25
F(f-html-man\(1\))-.25 E/F1 9/Times-Bold@0 SF -.18(NA)72 84 S(ME).18 E
F0(unrof)108 96 Q
(f-html-man \255 back-end to translate manual pages to HTML 2.0)-.25 E
F1(SYNOPSIS)72 112.8 Q/F2 10/Times-Bold@0 SF(unr)108 124.8 Q(off)-.18 E
F0([)2.5 E F2(\255fhtml)2.5 E F0 2.5(][)2.5 G F2(\255man)A F0 2.5(][)2.5
G/F3 10/Times-Italic@0 SF(\214le)A F0(|)2.68 E F3(option...)2.73 E F0(])
2.5 E F1 -.45(OV)72 141.6 S(ER).45 E(VIEW)-.495 E F0 .531
(When called with the)108 153.6 R F2(\255fhtml)3.031 E F0(and)3.031 E F2
(\255man)3.031 E F0 .531(options, the trof)3.031 F 3.031(ft)-.25 G
(ranslator)-3.031 E F3(unr)3.03 E(of)-.45 E(f)-.18 E F0 .53
(loads the back-end for con)3.03 F -.15(ve)-.4 G(rt-).15 E
(ing UNIX manual pages to the Hyperte)108 165.6 Q
(xt Markup Language \(HTML\) v)-.15 E(ersion 2.0.)-.15 E .984
(Please read)108 182.4 R F2(unr)3.484 E(off)-.18 E F0 .984
(\(1\) \214rst for an o)B -.15(ve)-.15 G(rvie).15 E 3.484(wo)-.25 G
3.484(ft)-3.484 G .984(he Scheme-based, programmable trof)-3.484 F 3.484
(ft)-.25 G .984(ranslator and for a)-3.484 F 2.17
(description of the generic options that e)108 194.4 R 2.169
(xist in addition to)-.15 F F2<ad66>4.669 E F0(and)4.669 E F2<ad6d>4.669
E F0 7.169(.T)C 2.169(he translation of basic trof)-7.169 F(f)-.25 E
.786(requests, special characters, escape sequences, etc. as well as th\
e HTML-speci\214c options are described in)108 206.4 R F2(unr)108 218.4
Q(off-html)-.18 E F0 3.916(\(1\). F)B 1.416(or information about e)-.15
F 1.416(xtending and programming)-.15 F F3(unr)3.915 E(of)-.45 E(f)-.18
E F0 1.415(also refer to the)3.915 F F3(Unr)3.915 E(of)-.45 E 3.915(fP)
-.18 G -.45(ro)-3.915 G(-).45 E(gr)108 230.4 Q(ammer')-.15 E 2.5(sM)-.4
G(anual)-2.5 E F0(.).51 E F1(OPTIONS)72 247.2 Q F0(The)108 259.2 Q F2
(\255man)3.474 E F0 -.15(ex)3.474 G .974(tension pro).15 F .974
(vides one ne)-.15 F 3.474(wk)-.25 G -.15(ey)-3.574 G -.1(wo).15 G(rd/v)
.1 E .974(alue option in addition to those listed in)-.25 F F2(unr)3.474
E(off)-.18 E F0 .974(\(1\) and)B F2(unr)108 271.2 Q(off-html)-.18 E F0
(\(1\):)A F2(do-signatur)108 288 Q(e)-.18 E F0(\(boolean\))2.5 E .537
(If set to 1, a signature is appended to each output \214le.)144 300 R
.537(The signature is composed of a horizontal)5.537 F 1.641
(rule and a one-line message consisting of v)144 312 R 1.642
(ersion information and date and time.)-.15 F 1.642(The def)6.642 F
(ault)-.1 E -.25(va)144 324 S(lue of this option is 1.).25 E F1
(DESCRIPTION)72 340.8 Q F3(unr)108 352.8 Q(of)-.45 E(f)-.18 E F0 .566(r\
eads and parses its input \214les \(each containing a UNIX manual page\
\); the HTML output is written)3.067 F .476
(to a separate output \214le for each input \214le.)108 364.8 R .476
(The name of an output \214le is obtained by appending the suf)5.476 F
<8c78>-.25 E 1.436
(\231.html\232 to the name of the corresponding input \214le.)108 376.8
R(An)6.435 E(y)-.15 E F2(document)3.935 E F0 1.435
(option is ignored if input \214les are)3.935 F
(named in the command line.)108 388.8 Q
(As usual, the special \214le name `)5 E F2<ad>A F0 2.5('c)C
(an be used to interpolate standard input.)-2.5 E .011
(If no \214le name is gi)108 405.6 R -.15(ve)-.25 G 2.511(ni).15 G 2.511
(nt)-2.511 G .012(he command line, a manual page is read from standard \
input and sent to standard)-2.511 F .227(output, unless the)108 417.6 R
F2(document)2.727 E F0 .227(option is gi)2.727 F -.15(ve)-.25 G .227
(n, in which case the HTML output is written to the speci\214ed \214le)
.15 F .823(\(with \231.html\232 appended\).)108 429.6 R .823
(Example: this call to)5.823 F F3(unr)3.323 E(of)-.45 E(f)-.18 E F0 .823
(translates tw)3.323 F 3.323(om)-.1 G .824(anual pages and creates tw)
-3.323 F 3.324(oc)-.1 G(orre-)-3.324 E(sponding output \214les,)108
441.6 Q F2(cc.1.html)2.5 E F0(and)2.5 E F2(send.2.html)2.5 E F0(:)A F2
(unr)154 459.6 Q
(off \255fhtml \255man /usr/man/man1/cc.1 /usr/man/man2/send.2)-.18 E F0
(The follo)108 482.4 Q(wing)-.25 E F2(\255man)2.5 E F0
(macros are recognized and translated \(in addition to an)2.5 E 2.5(yu)
-.15 G(ser)-2.5 E(-de\214ned macros\):)-.2 E 21.67(.TH .SH)148 499.2 R
23.88(.SS .I)24.72 F 28.33(.B .SB)34.17 F(.SM)25.27 E 25(.BI .BR)148
511.2 R 25(.IB .IR .RB)24.16 F 25(.RI .TP)24.16 F 26.11(.IP .HP)148
523.2 R 22.77(.RS .RE)24.72 F 23.33(.LP .PP)24.72 F(.P)26.38 E 1.097
(In addition, the follo)108 540 R 1.097(wing Sun-speci\214c macros are \
silently ignored \(.TX generates an informational mes-)-.25 F
(sage containing its ar)108 552 Q(gument\):)-.18 E 21.67(.TX .IX)148
568.8 R 21.67(.DT .PD)26.95 F(.UC)24.72 E(The follo)108 585.6 Q
(wing prede\214ned trof)-.25 E 2.5(fs)-.25 G
(trings are recognized \(\\*S e)-2.5 E(xpands to the empty string\):)
-.15 E 23.05(\\*R \\*S)148 602.4 R 18.61(\\*\(lq \\*\(rq)26.66 F .267(T\
he title of each HTML document generated is obtained by calling the pri\
miti)108 619.2 R -.15(ve)-.25 G F3(substitute)2.917 E F0 .267(\(as e)
2.767 F .267(xplained in)-.15 F .719(the Programmer')108 631.2 R 3.219
(sM)-.55 G .719(anual\) with the v)-3.219 F .718(alue of the option)-.25
F F2(title)3.218 E F0 .718(and the \214rst and second ar)3.218 F .718
(guments passed to)-.18 F .356(the initial call to)108 643.2 R F2(.TH)
2.857 E F0 5.357(.T)C .357(hus, the speci\214ers \231%1%\232 and \231%2\
%\232 can be used in the option to interpolate the)-5.357 F .98
(command \(or whate)108 655.2 R -.15(ve)-.25 G 3.48(ri).15 G 3.48(sd)
-3.48 G .979(ocumented in the manual page\) and the section number)-3.48
F 5.979(.I)-.55 G(f)-5.979 E F2(title)3.479 E F0 .979(has not been)3.479
F 1.367
(speci\214ed, the string \231Manual page for %1%\(%2%\)\232 is tak)108
667.2 R 3.867(en. As)-.1 F 1.368(generating the HTML title element is)
3.867 F 1.464(deferred until the call to)108 679.2 R F2(.TH)3.964 E F0
3.964(,a)C 1.764 -.15(ny m)-3.964 H 1.464(acros or other trof).15 F
3.964(fr)-.25 G 1.464(equests that produce output must not be used)
-3.964 F(before the initial)108 691.2 Q F2(.TH)2.5 E F0(.)A .512
(HTML header elements <h2> and <h3> are created for)108 708 R F2(.SH)
3.012 E F0(and)3.012 E F2(.SS)3.012 E F0 3.013(requests. The)3.013 F
.513(markup created for the)3.013 F .037(initial N)108 720 R .037
(AME section dif)-.35 F .037(fers in that the contents of the section \
\(usually a single line\) is itself placed inside a)-.25 F 203.72
(1995/08/23 1)283.22 768 R EP
%%Page: 2 2
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF(unrof)72 48 Q 308.26(f-html-man\(1\) unrof)-.25
F(f-html-man\(1\))-.25 E(header element.)108 84 Q(The font switching ma\
cros are based on changes to the fonts `R', `I', and `B', as e)108 100.8
Q .001(xplained under FONTS in)-.15 F/F1 10/Times-Bold@0 SF(unr)108
112.8 Q(off-html)-.18 E F0 2.709(\(1\). Of)B .208(course, this f)2.709 F
.208
(ails if the fonts \(which are mounted on startup\) are unmounted by e)
-.1 F(xplicit)-.15 E F1(.fp)108 124.8 Q F0 3.173(requests. As)3.173 F
.673(HTML is lacking the concept of te)3.173 F .673(xt size, the macro)
-.15 F F1(.SB)3.173 E F0 .674(is just an alias for)3.173 F F1(.B)3.174 E
F0 3.174(,a)C(nd)-3.174 E F1(.SM)3.174 E F0(simply echoes its ar)108
136.8 Q(guments.)-.18 E .12(The translation rules for)108 153.6 R F1
(.TP)2.62 E F0(and)2.62 E F1(.IP)2.62 E F0(emplo)2.62 E 2.62(yah)-.1 G
.12(euristic to determine whether to generate a de\214nition list or)
-2.62 F .116(an unordered list: if the \214rst in a sequence of tagged/\
indented paragraph macros is called with a tag consist-)108 165.6 R .362
(ing of the special character \\\(b)108 177.6 R .362
(u, a de\214nition list is be)-.2 F .362
(gun, otherwise an unordered list.)-.15 F .361(Subsequent in)5.361 F -.2
(vo)-.4 G(ca-).2 E 2.675
(tions cause the list style to change if appropriate.)108 189.6 R 2.676
(Use of tagged paragraphs inside non-\214lled \(pre-)7.675 F .446
(formatted\) te)108 201.6 R .446
(xt violates the HTML de\214nition and should be a)-.15 F -.2(vo)-.2 G
2.946(ided. A).2 F -.1(wa)2.945 G .445(rning message is printed in this)
.1 F(and other questionable situations.)108 213.6 Q 1.495(As hanging ta\
gs cannot be realized with HTML 2.0, a kludge is used for the)108 230.4
R F1(.HP)3.995 E F0 1.495(\(hanging paragraph\))3.995 F 1.102
(macro: the macro starts a de\214nition list \(as does the ordinary)108
242.4 R F1(.TP)3.602 E F0 1.101(macro\), and e)3.602 F -.15(ve)-.25 G
1.101(rything up to the ne).15 F(xt)-.15 E 1.524
(request that causes a break is placed inside the de\214nition tag.)108
254.4 R 1.524(This method ob)6.524 F 1.524(viously f)-.15 F 1.525
(ails if no break)-.1 F .98(occurs in subsequent lines, b)108 266.4 R
.98(ut it w)-.2 F .98
(orks for the common, idiomatic use of hanging paragraphs in manual)-.1
F(pages.)108 278.4 Q/F2 9/Times-Bold@0 SF(SEE ALSO)72 295.2 Q F1(unr)108
307.2 Q(off)-.18 E F0(\(1\),)A F1(unr)2.5 E(off-html)-.18 E F0(\(1\),)A
F1(tr)2.5 E(off)-.18 E F0(\(1\),)A F1(man)2.5 E F0(\(5 or 7\).)A(Unrof)
108 324 Q 2.5(fP)-.25 G(rogrammer')-2.5 E 2.5(sM)-.55 G(anual.)-2.5 E
(http://www)108 340.8 Q(.informatik.uni-bremen.de/~net/unrof)-.65 E(f)
-.25 E 1.998(Berners-Lee, Connolly)108 357.6 R 4.498(,e)-.65 G 4.498(ta)
-4.498 G 1.998(l., HyperT)-4.498 F -.15(ex)-.7 G 4.498(tM).15 G 1.998
(arkup Language Speci\214cation\2122.0, Internet Draft, Internet)-4.498
F(Engineering T)108 369.6 Q(ask F)-.8 E(orce.)-.15 E 203.72
(1995/08/23 2)283.22 768 R EP
%%Trailer
end
%%EOF

324
www/doc/unroff-html-ms.1 Normal file
View File

@ -0,0 +1,324 @@
.\" $Revision: 1.8 $
.ds Ve 1.0
.\"
.de Ex
.RS
.nf
.nr sf \\n(.f
.if !\\n(.U \{\
. ft B
. if n .sp
. if t .sp .5 \}
..
.de Ee
.if !\\n(.U \{\
. ft \\n(sf
. if n .sp
. if t .sp .5 \}
.fi
.RE
..
.\"
.de Sd
.ds Dt \\$2
..
.\"
.Sd $Date: 1995/08/23 12:07:31 $
.TH unroff-html-ms 1 "\*(Dt"
.SH NAME
unroff-html-ms \- back-end to translate `ms' documents to HTML 2.0
.SH SYNOPSIS
.B unroff
[
.B \-fhtml
] [
.B \-ms
] [
.IR file " | " option...\&
]
.SH OVERVIEW
When called with the
.B \-fhtml
and
.B \-ms
options, the troff translator
.I unroff
loads the back-end for converting \*(lqms\*(rq documents to the Hypertext
Markup Language (HTML) version 2.0.
.LP
Please read
.BR unroff (1)
first for an overview of the Scheme-based, programmable troff translator
and for a description of the generic options that exist in
addition to
.B \-f
and
.BR \-m .
The translation of basic troff requests, special characters,
escape sequences, etc. as well as the HTML-specific options
are described in
.BR unroff-html (1).
For information about extending and programming
.I unroff
also refer to the
.IR "Unroff Programmer's Manual" .
.SH OPTIONS
The
.B \-ms
extension provides a number of keyword/value options in addition to
those listed in
.BR unroff (1)
and
.BR unroff-html (1):
.TP
.BR signature " (string)"
If non-empty, the value of this option together with a <hr> tag is
appended to each HTML output file created.
The
.I substitute
Scheme primitive (as described in the Programmer's Manual) is
applied to the value of the option, so that date, time, environment
variables, etc. can be interpolated.
.TP
.BR split " (integer)"
This option specifies whether to split the output document into
individual files for each major section.
If a positive integer
.I level
is assigned to the option, a new output file is opened for each
numbered header
.RB ( .NH
request) with a level equal to or numerically less than
.IR level .
Use of this feature requires that the
.B document
option has bee set, as otherwise the HTML document is sent
to standard output.
The default value is 0, i.\|e. all sections will be written to
a single file.
.TP
.BR toc " (boolean)"
If true, a table of contents with a hypertext link for each section
is generated automatically and inserted after the front matter
(title, author information, abstract) and before the first section.
Use of this feature requires a non-zero value for the
.B split
option.
The default is to produce a table of contents if
.B split
is non-zero.
.TP
.BR toc-header " (string)"
This option defines the contents of the <h2> header element prepended to
an automatically generated table of contents.
Its value is subject to a call to
.IR substitute .
The default is the string \*(lqTable of Contents\*(rq.
.TP
.BR pp-indent " (integer)"
The number of non-breakable spaces (as specified by the predefined
Scheme variable
.IR nbsp )
to generate for a paragraph created by the
.B .PP
macro.
The default is 3.
This option, as well as
.BR signature ,
is typically set in the user-preferences file
.BR ~/.unroff ,
or in a document-specific Scheme file or at the beginning of
the document proper.
.TP
.BR footnotes-header " (string)"
The contents of the <h2> header element prepended to the footnotes
section that is appended to the document if any footnotes were used,
and that also appears in the automatically generated table of contents.
As with all string option listed in this section, the
.I substitute
primitive is applied to the option's value.
The default is the string \*(lqFootnotes\*(rq.
.TP
.BR footnote-reference " (string)"
This option controls the text generated by each use of the variable
\&`\e**', which produces a footnote (hypertext) reference.
Its value is passed to a call to
.I substitute
with the current footnote number as another argument, so that the
specifier \*(lq%1%\*(rq can be used to interpolate the footnote
number.
The default is the string \*(lq[note %1%]\*(rq.
.TP
.BR footnote-anchor " (string)"
This options specifies the footnote reference that appears at the
beginning of each footnote proper if
.B .FS
was called without an argument.
The option's value is passed to a call to
.I substitute
with the footnote number generated by the last use of `\e**' as
another argument.
The default is \*(lq[%1%]\*(rq.
.SH FILES
.I unroff
reads and parses an \*(rqms\*(lq document composed of one ore more
input files.
As usual, the special file name
.RB ` \- '
can be used to interpolate standard input.
If no file name is given in the command line,
.I unroff
reads from standard input.
.LP
The resulting HTML document is sent to standard output, unless a
file name prefix is assigned to the
.B document
option.
In the latter case, the
.B split
option controls splitting of the output into separate files at
section boundaries as described under OPTIONS above.
A number of other features, such as footnotes, also require
that the
.B document
option is supplied, as separate output files are created for them
(regardless of the value of
.BR split ).
In any case, the name of each output file consists of the value of
.BR document ,
followed by an optional suffix, followed by the extension \*(lq.html\*(rq.
.SH EXAMPLE
To translate an \*(lqms\*(rq document composed of several
input files,
.I unroff
could be invoked like this:
.Ex
.if n \{unroff \-fhtml \-ms document=thesis split=2\e
intro.ms 1.ms 2.ms 3.ms app.ms\}
.if !n unroff \-fhtml \-ms document=thesis split=2 intro.ms 1.ms 2.ms 3.ms app.ms
.Ee
The names of all output files will have the prefix \*(lqthesis\*(rq,
and the resulting HTML document will be split into separate files
at each level 1 section or level 2 section.
.SH DESCRIPTION
The following
.B \-ms
macros are translated (in addition to any user-defined macros):
.LP
.nf
.if !\n(.U .ta 8n 16n 24n 32n 40n 48n 56n
.AB .AE .AI .AU .B .B1 .B2
.BD .BX .CD .DE .DS .FA .FE
.FS .I .ID .IP .LD .LG .LP
.NH .PP .PX .QP .R .RE .RS
.RT .SH .SM .TL .UL .UX .XA
.XE .XS
.fi
.LP
These predefined strings and number registers are recognized:
.LP
.nf
\e*- \e*(DY \e*(MO \e*Q \e*U \en(PN
.fi
.LP
In addition, a number of macros are either silently ignored
or cause a warning to be printed, because their function either
cannot be mapped to HTML 2.0 elements or assumes a page
structure:
.LP
.nf
.AM .BT .CM .CT .DA .EF .EH
.HD .KE .KF .KS .ND .NL .OF
.OH .P1 .PT .TM .MC .1C .2C
.fi
.LP
The font switching macros are based on changes to the fonts `R',
`I', and `B', as explained under FONTS in
.BR unroff-html (1).
Of course, this fails if the fonts (which are mounted on startup)
are unmounted by explicit
.B .fp
requests.
.LP
Upper or lower case letters are accepted as section numbers by
.B .NH
when the argument ``S'' is used to set new section numbers.
This is useful for appendices and similar constructs.
.LP
The translation rule for
.B .IP
employs a heuristic to determine whether to generate a definition
list or an unordered list:
if the first in a sequence of indented paragraph macros is
called with a tag consisting of one of the special character \e(bu
or \e(sq, a definition list is begun, otherwise an unordered list.
Since
.RI exdented[ sic ]
paragraphs cannot be expressed in HTML 2.0, a warning
message is printed when a call to the macro
.B .XP
is encountered.
.LP
All footnotes are concatenated and placed in a separate output file,
and a corresponding section (with a user-defined header) holding
the footnotes is appended to the document automatically.
Use of the string `\e**' generates a hypertext link to the beginning
of the footnote created by the next call to
.B .FS
and
.BR .FE .
The actual text generated by using `\e**' as well as the footnote
reference that appears in the footnote proper are controlled by
two options as explained under OPTIONS above.
A warning message is printed on termination if `\e**' has been
used but a corresponding footnote was not seen.
As an alternative to `\e**', the new request
.B .FA
can be used to produce a footnote anchor together with a hypertext
link; the anchor is the argument to the macro
(however, `\e**' itself must not be used in a call to
.BR .FA ).
.LP
Likewise, a hypertext reference is created for each use of the
table of contents macros
.BR .XS
and
.BR .XE
(optionally accompanied by calls to
.BR .XA ).
.SH "SEE ALSO"
.BR unroff (1),
.BR unroff-html (1),
.BR troff (1),
.BR ms "(5 or 7)."
.LP
Unroff Programmer's Manual.
.LP
http://www.informatik.uni-bremen.de/~net/unroff
.LP
Berners-Lee, Connolly, et al.,
HyperText Markup Language Specification\(em2.0,
Internet Draft, Internet Engineering Task Force.
.SH BUGS
The macro
.B .UL
is currently mapped to a call to
.BR .I ,
as underlining is not supported by the HTML back-end of
.I unroff
\*(Ve.
.LP
Footnote references and requests such as
.B .sp
that cause non-character-level markup to be generated must not
be used inside a numbered header.
.LP
When creating a hypertext anchor for
.B .XS
and
.BR .XE ,
there is nothing to put inside the <a> element;
therefore a non-breaking space is used.
.LP
Changing the number register format of `NH' to get roman or alphabetic
section numbers does not work, obviously.

View File

@ -0,0 +1,312 @@
<html>
<head>
<!-- This file has been generated by unroff 1.0, 03/21/96 19:29:27. -->
<!-- Do not edit! -->
<link rev="made" href="mailto:net@informatik.uni-bremen.de">
<!-- $Revision: 1.8 $ -->
<title>Manual page for unroff-html-ms(1)</title>
</head>
<body>
<h2>
unroff-html-ms - back-end to translate `ms' documents to HTML 2.0
<hr></h2>
<h2>SYNOPSIS</h2>
<b>unroff
</b>[
<b>-fhtml
</b>] [
<b>-ms
</b>] [
<i>file</i> | <i>option...
</i>]
<h2>OVERVIEW</h2>
When called with the
<b>-fhtml
</b>and
<b>-ms
</b>options, the troff translator
<i>unroff
</i>loads the back-end for converting ``ms'' documents to the Hypertext
Markup Language (HTML) version 2.0.<tt> </tt>
<p>
Please read
<b>unroff</b>(1)
first for an overview of the Scheme-based, programmable troff translator
and for a description of the generic options that exist in
addition to
<b>-f
</b>and
<b>-m</b>.<tt> </tt>
The translation of basic troff requests, special characters,
escape sequences, etc. as well as the HTML-specific options
are described in
<b>unroff-html</b>(1).<tt> </tt>
For information about extending and programming
<i>unroff
</i>also refer to the
<i>Unroff Programmer's Manual</i>.<tt> </tt>
<h2>OPTIONS</h2>
The
<b>-ms
</b>extension provides a number of keyword/value options in addition to
those listed in
<b>unroff</b>(1)
and
<b>unroff-html</b>(1):
<dl>
<dt><b>signature</b> (string)
<dd>
If non-empty, the value of this option together with a &lt;hr&gt; tag is
appended to each HTML output file created.<tt> </tt>
The
<i>substitute
</i>Scheme primitive (as described in the Programmer's Manual) is
applied to the value of the option, so that date, time, environment
variables, etc. can be interpolated.<tt> </tt>
<dt><b>split</b> (integer)
<dd>
This option specifies whether to split the output document into
individual files for each major section.<tt> </tt>
If a positive integer
<i>level
</i>is assigned to the option, a new output file is opened for each
numbered header
(<b>.NH
</b>request) with a level equal to or numerically less than
<i>level</i>.<tt> </tt>
Use of this feature requires that the
<b>document
</b>option has bee set, as otherwise the HTML document is sent
to standard output.<tt> </tt>
The default value is 0, i.e. all sections will be written to
a single file.<tt> </tt>
<dt><b>toc</b> (boolean)
<dd>
If true, a table of contents with a hypertext link for each section
is generated automatically and inserted after the front matter
(title, author information, abstract) and before the first section.<tt> </tt>
Use of this feature requires a non-zero value for the
<b>split
</b>option.<tt> </tt>
The default is to produce a table of contents if
<b>split
</b>is non-zero.<tt> </tt>
<dt><b>toc-header</b> (string)
<dd>
This option defines the contents of the &lt;h2&gt; header element prepended to
an automatically generated table of contents.<tt> </tt>
Its value is subject to a call to
<i>substitute</i>.<tt> </tt>
The default is the string ``Table of Contents''.<tt> </tt>
<dt><b>pp-indent</b> (integer)
<dd>
The number of non-breakable spaces (as specified by the predefined
Scheme variable
<i>nbsp</i>)
to generate for a paragraph created by the
<b>.PP
</b>macro.<tt> </tt>
The default is 3.<tt> </tt>
This option, as well as
<b>signature</b>,
is typically set in the user-preferences file
<b>~/.unroff</b>,
or in a document-specific Scheme file or at the beginning of
the document proper.<tt> </tt>
<dt><b>footnotes-header</b> (string)
<dd>
The contents of the &lt;h2&gt; header element prepended to the footnotes
section that is appended to the document if any footnotes were used,
and that also appears in the automatically generated table of contents.<tt> </tt>
As with all string option listed in this section, the
<i>substitute
</i>primitive is applied to the option's value.<tt> </tt>
The default is the string ``Footnotes''.<tt> </tt>
<dt><b>footnote-reference</b> (string)
<dd>
This option controls the text generated by each use of the variable
`\**', which produces a footnote (hypertext) reference.<tt> </tt>
Its value is passed to a call to
<i>substitute
</i>with the current footnote number as another argument, so that the
specifier ``%1%'' can be used to interpolate the footnote
number.<tt> </tt>
The default is the string ``[note %1%]''.<tt> </tt>
<dt><b>footnote-anchor</b> (string)
<dd>
This options specifies the footnote reference that appears at the
beginning of each footnote proper if
<b>.FS
</b>was called without an argument.<tt> </tt>
The option's value is passed to a call to
<i>substitute
</i>with the footnote number generated by the last use of `\**' as
another argument.<tt> </tt>
The default is ``[%1%]''.<tt> </tt>
</dl>
<h2>FILES</h2>
<i>unroff
</i>reads and parses an ''ms`` document composed of one ore more
input files.<tt> </tt>
As usual, the special file name
`<b>-</b>'
can be used to interpolate standard input.<tt> </tt>
If no file name is given in the command line,
<i>unroff
</i>reads from standard input.<tt> </tt>
<p>
The resulting HTML document is sent to standard output, unless a
file name prefix is assigned to the
<b>document
</b>option.<tt> </tt>
In the latter case, the
<b>split
</b>option controls splitting of the output into separate files at
section boundaries as described under OPTIONS above.<tt> </tt>
A number of other features, such as footnotes, also require
that the
<b>document
</b>option is supplied, as separate output files are created for them
(regardless of the value of
<b>split</b>).<tt> </tt>
In any case, the name of each output file consists of the value of
<b>document</b>,
followed by an optional suffix, followed by the extension ``.html''.<tt> </tt>
<h2>EXAMPLE</h2>
To translate an ``ms'' document composed of several
input files,
<i>unroff
</i>could be invoked like this:
<dl><dt><dd>
<pre>
unroff -fhtml -ms document=thesis split=2 intro.ms 1.ms 2.ms 3.ms app.ms
</pre>
</dl>
The names of all output files will have the prefix ``thesis'',
and the resulting HTML document will be split into separate files
at each level 1 section or level 2 section.<tt> </tt>
<h2>DESCRIPTION</h2>
The following
<b>-ms
</b>macros are translated (in addition to any user-defined macros):
<p>
<pre>
.AB .AE .AI .AU .B .B1 .B2
.BD .BX .CD .DE .DS .FA .FE
.FS .I .ID .IP .LD .LG .LP
.NH .PP .PX .QP .R .RE .RS
.RT .SH .SM .TL .UL .UX .XA
.XE .XS
</pre>
<p>
These predefined strings and number registers are recognized:
<p>
<pre>
\*- \*(DY \*(MO \*Q \*U \n(PN
</pre>
<p>
In addition, a number of macros are either silently ignored
or cause a warning to be printed, because their function either
cannot be mapped to HTML 2.0 elements or assumes a page
structure:
<p>
<pre>
.AM .BT .CM .CT .DA .EF .EH
.HD .KE .KF .KS .ND .NL .OF
.OH .P1 .PT .TM .MC .1C .2C
</pre>
<p>
The font switching macros are based on changes to the fonts `R',
`I', and `B', as explained under FONTS in
<b>unroff-html</b>(1).<tt> </tt>
Of course, this fails if the fonts (which are mounted on startup)
are unmounted by explicit
<b>.fp
</b>requests.<tt> </tt>
<p>
Upper or lower case letters are accepted as section numbers by
<b>.NH
</b>when the argument ``S'' is used to set new section numbers.<tt> </tt>
This is useful for appendices and similar constructs.<tt> </tt>
<p>
The translation rule for
<b>.IP
</b>employs a heuristic to determine whether to generate a definition
list or an unordered list:
if the first in a sequence of indented paragraph macros is
called with a tag consisting of one of the special character \(bu
or \(sq, a definition list is begun, otherwise an unordered list.<tt> </tt>
Since
exdented[<i>sic</i>]
paragraphs cannot be expressed in HTML 2.0, a warning
message is printed when a call to the macro
<b>.XP
</b>is encountered.<tt> </tt>
<p>
All footnotes are concatenated and placed in a separate output file,
and a corresponding section (with a user-defined header) holding
the footnotes is appended to the document automatically.<tt> </tt>
Use of the string `\**' generates a hypertext link to the beginning
of the footnote created by the next call to
<b>.FS
</b>and
<b>.FE</b>.<tt> </tt>
The actual text generated by using `\**' as well as the footnote
reference that appears in the footnote proper are controlled by
two options as explained under OPTIONS above.<tt> </tt>
A warning message is printed on termination if `\**' has been
used but a corresponding footnote was not seen.<tt> </tt>
As an alternative to `\**', the new request
<b>.FA
</b>can be used to produce a footnote anchor together with a hypertext
link; the anchor is the argument to the macro
(however, `\**' itself must not be used in a call to
<b>.FA</b>).<tt> </tt>
<p>
Likewise, a hypertext reference is created for each use of the
table of contents macros
<b>.XS
</b>and
<b>.XE
</b>(optionally accompanied by calls to
<b>.XA</b>).<tt> </tt>
<h2>SEE ALSO</h2>
<b>unroff</b>(1),
<b>unroff-html</b>(1),
<b>troff</b>(1),
<b>ms</b>(5 or 7).<tt> </tt>
<p>
Unroff Programmer's Manual.<tt> </tt>
<p>
http://www.informatik.uni-bremen.de/~net/unroff
<p>
Berners-Lee, Connolly, et al.,
HyperText Markup Language Specification--2.0,
Internet Draft, Internet Engineering Task Force.<tt> </tt>
<h2>BUGS</h2>
The macro
<b>.UL
</b>is currently mapped to a call to
<b>.I</b>,
as underlining is not supported by the HTML back-end of
<i>unroff
</i>1.0.<tt> </tt>
<p>
Footnote references and requests such as
<b>.sp
</b>that cause non-character-level markup to be generated must not
be used inside a numbered header.<tt> </tt>
<p>
When creating a hypertext anchor for
<b>.XS
</b>and
<b>.XE</b>,
there is nothing to put inside the &lt;a&gt; element;
therefore a non-breaking space is used.<tt> </tt>
<p>
Changing the number register format of `NH' to get roman or alphabetic
section numbers does not work, obviously.<tt> </tt>
<p><hr>
Markup created by <em>unroff</em> 1.0,&#160;<tt> </tt>&#160;<tt> </tt>March 21, 1996.
</body>
</html>

455
www/doc/unroff-html-ms.1.ps Normal file
View File

@ -0,0 +1,455 @@
%!PS-Adobe-3.0
%%Creator: groff version 1.09
%%CreationDate: Thu Mar 21 19:30:00 1996
%%DocumentNeededResources: font Times-Roman
%%+ font Times-Bold
%%+ font Times-Italic
%%DocumentSuppliedResources: procset grops 1.09 0
%%Pages: 3
%%PageOrder: Ascend
%%Orientation: Portrait
%%EndComments
%%BeginProlog
%%BeginResource: procset grops 1.09 0
/setpacking where{
pop
currentpacking
true setpacking
}if
/grops 120 dict dup begin
/SC 32 def
/A/show load def
/B{0 SC 3 -1 roll widthshow}bind def
/C{0 exch ashow}bind def
/D{0 exch 0 SC 5 2 roll awidthshow}bind def
/E{0 rmoveto show}bind def
/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
/G{0 rmoveto 0 exch ashow}bind def
/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/I{0 exch rmoveto show}bind def
/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
/K{0 exch rmoveto 0 exch ashow}bind def
/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/M{rmoveto show}bind def
/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
/O{rmoveto 0 exch ashow}bind def
/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/Q{moveto show}bind def
/R{moveto 0 SC 3 -1 roll widthshow}bind def
/S{moveto 0 exch ashow}bind def
/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/SF{
findfont exch
[exch dup 0 exch 0 exch neg 0 0]makefont
dup setfont
[exch/setfont cvx]cvx bind def
}bind def
/MF{
findfont
[5 2 roll
0 3 1 roll
neg 0 0]makefont
dup setfont
[exch/setfont cvx]cvx bind def
}bind def
/level0 0 def
/RES 0 def
/PL 0 def
/LS 0 def
/PLG{
gsave newpath clippath pathbbox grestore
exch pop add exch pop
}bind def
/BP{
/level0 save def
1 setlinecap
1 setlinejoin
72 RES div dup scale
LS{
90 rotate
}{
0 PL translate
}ifelse
1 -1 scale
}bind def
/EP{
level0 restore
showpage
}bind def
/DA{
newpath arcn stroke
}bind def
/SN{
transform
.25 sub exch .25 sub exch
round .25 add exch round .25 add exch
itransform
}bind def
/DL{
SN
moveto
SN
lineto stroke
}bind def
/DC{
newpath 0 360 arc closepath
}bind def
/TM matrix def
/DE{
TM currentmatrix pop
translate scale newpath 0 0 .5 0 360 arc closepath
TM setmatrix
}bind def
/RC/rcurveto load def
/RL/rlineto load def
/ST/stroke load def
/MT/moveto load def
/CL/closepath load def
/FL{
currentgray exch setgray fill setgray
}bind def
/BL/fill load def
/LW/setlinewidth load def
/RE{
findfont
dup maxlength 1 index/FontName known not{1 add}if dict begin
{
1 index/FID ne{def}{ pop pop}ifelse
}forall
/Encoding exch def
dup/FontName exch def
currentdict end definefont pop
}bind def
/DEFS 0 def
/EBEGIN{
moveto
DEFS begin
}bind def
/EEND/end load def
/CNT 0 def
/level1 0 def
/PBEGIN{
/level1 save def
translate
div 3 1 roll div exch scale
neg exch neg exch translate
0 setgray
0 setlinecap
1 setlinewidth
0 setlinejoin
10 setmiterlimit
[] 0 setdash
/setstrokeadjust where{
pop
false setstrokeadjust
}if
/setoverprint where{
pop
false setoverprint
}if
newpath
/CNT countdictstack def
userdict begin
/showpage{} def
}bind def
/PEND{
clear
countdictstack CNT sub{end}repeat
level1 restore
}bind def
end def
/setpacking where{
pop
setpacking
}if
%%EndResource
%%IncludeResource: font Times-Roman
%%IncludeResource: font Times-Bold
%%IncludeResource: font Times-Italic
grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
def/PL 841.89 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron
/Zcaron/scaron/zcaron/Ydieresis/trademark/quotesingle/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
/Times-Italic@0 ENC0/Times-Italic RE/Times-Bold@0 ENC0/Times-Bold RE
/Times-Roman@0 ENC0/Times-Roman RE
%%EndProlog
%%Page: 1 1
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF(unrof)72 48 Q 319.36(f-html-ms\(1\) unrof)-.25 F
(f-html-ms\(1\))-.25 E/F1 9/Times-Bold@0 SF -.18(NA)72 84 S(ME).18 E F0
(unrof)108 96 Q
(f-html-ms \255 back-end to translate `ms' documents to HTML 2.0)-.25 E
F1(SYNOPSIS)72 112.8 Q/F2 10/Times-Bold@0 SF(unr)108 124.8 Q(off)-.18 E
F0([)2.5 E F2(\255fhtml)2.5 E F0 2.5(][)2.5 G F2(\255ms)A F0 2.5(][)2.5
G/F3 10/Times-Italic@0 SF(\214le)A F0(|)2.68 E F3(option...)2.73 E F0(])
2.5 E F1 -.45(OV)72 141.6 S(ER).45 E(VIEW)-.495 E F0 .357
(When called with the)108 153.6 R F2(\255fhtml)2.857 E F0(and)2.857 E F2
(\255ms)2.857 E F0 .357(options, the trof)2.857 F 2.857(ft)-.25 G
(ranslator)-2.857 E F3(unr)2.857 E(of)-.45 E(f)-.18 E F0 .357
(loads the back-end for con)2.857 F -.15(ve)-.4 G(rting).15 E
(\231ms\232 documents to the Hyperte)108 165.6 Q
(xt Markup Language \(HTML\) v)-.15 E(ersion 2.0.)-.15 E .984
(Please read)108 182.4 R F2(unr)3.484 E(off)-.18 E F0 .984
(\(1\) \214rst for an o)B -.15(ve)-.15 G(rvie).15 E 3.484(wo)-.25 G
3.484(ft)-3.484 G .984(he Scheme-based, programmable trof)-3.484 F 3.484
(ft)-.25 G .984(ranslator and for a)-3.484 F 2.17
(description of the generic options that e)108 194.4 R 2.169
(xist in addition to)-.15 F F2<ad66>4.669 E F0(and)4.669 E F2<ad6d>4.669
E F0 7.169(.T)C 2.169(he translation of basic trof)-7.169 F(f)-.25 E
.786(requests, special characters, escape sequences, etc. as well as th\
e HTML-speci\214c options are described in)108 206.4 R F2(unr)108 218.4
Q(off-html)-.18 E F0 3.916(\(1\). F)B 1.416(or information about e)-.15
F 1.416(xtending and programming)-.15 F F3(unr)3.915 E(of)-.45 E(f)-.18
E F0 1.415(also refer to the)3.915 F F3(Unr)3.915 E(of)-.45 E 3.915(fP)
-.18 G -.45(ro)-3.915 G(-).45 E(gr)108 230.4 Q(ammer')-.15 E 2.5(sM)-.4
G(anual)-2.5 E F0(.).51 E F1(OPTIONS)72 247.2 Q F0(The)108 259.2 Q F2
(\255ms)2.651 E F0 -.15(ex)2.651 G .151(tension pro).15 F .151
(vides a number of k)-.15 F -.15(ey)-.1 G -.1(wo).15 G(rd/v).1 E .151
(alue options in addition to those listed in)-.25 F F2(unr)2.652 E(off)
-.18 E F0 .152(\(1\) and)B F2(unr)108 271.2 Q(off-html)-.18 E F0(\(1\):)
A F2(signatur)108 288 Q(e)-.18 E F0(\(string\))2.5 E .465(If non-empty)
144 300 R 2.965(,t)-.65 G .464(he v)-2.965 F .464(alue of this option t\
ogether with a <hr> tag is appended to each HTML output)-.25 F 2.528
(\214le created.)144 312 R(The)7.528 E F3(substitute)5.028 E F0 2.528
(Scheme primiti)5.028 F 2.828 -.15(ve \()-.25 H 2.528
(as described in the Programmer').15 F 5.029(sM)-.55 G 2.529(anual\) is)
-5.029 F .974(applied to the v)144 324 R .973
(alue of the option, so that date, time, en)-.25 F .973(vironment v)-.4
F .973(ariables, etc. can be interpo-)-.25 F(lated.)144 336 Q F2(split)
108 352.8 Q F0(\(inte)2.5 E(ger\))-.15 E .288
(This option speci\214es whether to split the output document into indi)
144 364.8 R .289(vidual \214les for each major sec-)-.25 F 2.723
(tion. If)144 376.8 R 2.722(ap)2.723 G(ositi)-2.722 E .522 -.15(ve i)
-.25 H(nte).15 E(ger)-.15 E F3(le)2.722 E(vel)-.15 E F0 .222
(is assigned to the option, a ne)2.722 F 2.722(wo)-.25 G .222
(utput \214le is opened for each num-)-2.722 F .132(bered header \()144
388.8 R F2(.NH)A F0 .132(request\) with a le)2.632 F -.15(ve)-.25 G
2.632(le).15 G .132(qual to or numerically less than)-2.632 F F3(le)
2.633 E(vel)-.15 E F0 5.133(.U).51 G .133(se of this feature)-5.133 F
.674(requires that the)144 400.8 R F2(document)3.173 E F0 .673
(option has bee set, as otherwise the HTML document is sent to stan-)
3.173 F(dard output.)144 412.8 Q(The def)5 E(ault v)-.1 E(alue is 0, i.)
-.25 E(e. all sections will be written to a single \214le.)1.666 E F2
(toc)108 429.6 Q F0(\(boolean\))2.5 E 1.104
(If true, a table of contents with a h)144 441.6 R(yperte)-.05 E 1.105
(xt link for each section is generated automatically and)-.15 F .434(in\
serted after the front matter \(title, author information, abstract\) a\
nd before the \214rst section.)144 453.6 R(Use)5.434 E .666
(of this feature requires a non-zero v)144 465.6 R .666(alue for the)
-.25 F F2(split)3.166 E F0 3.166(option. The)3.166 F(def)3.166 E .666
(ault is to produce a table of)-.1 F(contents if)144 477.6 Q F2(split)
2.5 E F0(is non-zero.)2.5 E F2(toc-header)108 494.4 Q F0(\(string\))2.5
E .356(This option de\214nes the contents of the <h2> header element pr\
epended to an automatically gener)144 506.4 R(-)-.2 E .091
(ated table of contents.)144 518.4 R .091(Its v)5.091 F .091
(alue is subject to a call to)-.25 F F3(substitute)2.592 E F0 5.092(.T)
.18 G .092(he def)-5.092 F .092(ault is the string \231T)-.1 F .092
(able of)-.8 F(Contents\232.)144 530.4 Q F2(pp-indent)108 547.2 Q F0
(\(inte)2.5 E(ger\))-.15 E .004(The number of non-breakable spaces \(as\
speci\214ed by the prede\214ned Scheme v)144 559.2 R(ariable)-.25 E F3
(nbsp)2.503 E F0 2.503(\)t).19 G 2.503(og)-2.503 G(en-)-2.503 E .806
(erate for a paragraph created by the)144 571.2 R F2(.PP)3.307 E F0
3.307(macro. The)3.307 F(def)3.307 E .807(ault is 3.)-.1 F .807
(This option, as well as)5.807 F F2(signa-)3.307 E(tur)144 583.2 Q(e)
-.18 E F0 2.646(,i)C 2.646(st)-2.646 G .146(ypically set in the user)
-2.646 F .146(-preferences \214le)-.2 F F2(~/.unr)2.646 E(off)-.18 E F0
2.646(,o)C 2.646(ri)-2.646 G 2.646(nad)-2.646 G .146
(ocument-speci\214c Scheme \214le or)-2.646 F(at the be)144 595.2 Q
(ginning of the document proper)-.15 E(.)-.55 E F2 -.25(fo)108 612 S
(otnotes-header).25 E F0(\(string\))2.5 E .967(The contents of the <h2>\
header element prepended to the footnotes section that is appended to)
144 624 R .008(the document if an)144 636 R 2.508(yf)-.15 G .008(ootnot\
es were used, and that also appears in the automatically generated tabl\
e)-2.508 F .114(of contents.)144 648 R .114
(As with all string option listed in this section, the)5.114 F F3
(substitute)2.614 E F0(primiti)2.614 E .414 -.15(ve i)-.25 H 2.614(sa)
.15 G .115(pplied to the)-2.614 F(option')144 660 Q 2.5(sv)-.55 G 2.5
(alue. The)-2.75 F(def)2.5 E(ault is the string \231F)-.1 E
(ootnotes\232.)-.15 E F2 -.25(fo)108 676.8 S(otnote-r).25 E(efer)-.18 E
(ence)-.18 E F0(\(string\))2.5 E .006(This option controls the te)144
688.8 R .006(xt generated by each use of the v)-.15 F .005
(ariable `\\**', which produces a footnote)-.25 F(\(h)144 700.8 Q
(yperte)-.05 E .095(xt\) reference.)-.15 F .095(Its v)5.095 F .095
(alue is passed to a call to)-.25 F F3(substitute)2.596 E F0 .096
(with the current footnote number as)2.596 F 1.439(another ar)144 712.8
R 1.439(gument, so that the speci\214er \231%1%\232 can be used to inte\
rpolate the footnote number)-.18 F(.)-.55 E(The def)144 724.8 Q
(ault is the string \231[note %1%]\232.)-.1 E 203.72(1995/08/23 1)283.22
768 R EP
%%Page: 2 2
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF(unrof)72 48 Q 319.36(f-html-ms\(1\) unrof)-.25 F
(f-html-ms\(1\))-.25 E/F1 10/Times-Bold@0 SF -.25(fo)108 84 S
(otnote-anchor).25 E F0(\(string\))2.5 E .406
(This options speci\214es the footnote reference that appears at the be)
144 96 R .406(ginning of each footnote proper)-.15 F(if)144 108 Q F1
(.FS)2.695 E F0 -.1(wa)2.695 G 2.695(sc).1 G .195(alled without an ar)
-2.695 F 2.695(gument. The)-.18 F(option')2.695 E 2.694(sv)-.55 G .194
(alue is passed to a call to)-2.944 F/F2 10/Times-Italic@0 SF
(substitute)2.694 E F0 .194(with the)2.694 F
(footnote number generated by the last use of `\\**' as another ar)144
120 Q 2.5(gument. The)-.18 F(def)2.5 E(ault is \231[%1%]\232.)-.1 E/F3 9
/Times-Bold@0 SF(FILES)72 136.8 Q F2(unr)108 148.8 Q(of)-.45 E(f)-.18 E
F0 .381(reads and parses an \232ms\231 document composed of one ore mor\
e input \214les.)2.881 F .381(As usual, the special \214le)5.381 F .974
(name `)108 160.8 R F1<ad>A F0 3.474('c)C .973
(an be used to interpolate standard input.)-3.474 F .973
(If no \214le name is gi)5.973 F -.15(ve)-.25 G 3.473(ni).15 G 3.473(nt)
-3.473 G .973(he command line,)-3.473 F F2(unr)3.473 E(of)-.45 E(f)-.18
E F0(reads from standard input.)108 172.8 Q .221(The resulting HTML doc\
ument is sent to standard output, unless a \214le name pre\214x is assi\
gned to the)108 189.6 R F1(docu-)2.721 E(ment)108 201.6 Q F0 2.844
(option. In)2.844 F .344(the latter case, the)2.844 F F1(split)2.844 E
F0 .344(option controls splitting of the output into separate \214les a\
t section)2.844 F 2.115(boundaries as described under OPTIONS abo)108
213.6 R -.15(ve)-.15 G 7.115(.A).15 G 2.115
(number of other features, such as footnotes, also)-2.5 F .168
(require that the)108 225.6 R F1(document)2.667 E F0 .167(option is sup\
plied, as separate output \214les are created for them \(re)2.667 F -.05
(ga)-.15 G .167(rdless of the).05 F -.25(va)108 237.6 S .148(lue of).25
F F1(split)2.648 E F0 2.648(\). In)B(an)2.648 E 2.648(yc)-.15 G .148
(ase, the name of each output \214le consists of the v)-2.648 F .149
(alue of)-.25 F F1(document)2.649 E F0 2.649(,f)C(ollo)-2.649 E .149
(wed by an)-.25 F(optional suf)108 249.6 Q(\214x, follo)-.25 E
(wed by the e)-.25 E(xtension \231.html\232.)-.15 E F3(EXAMPLE)72 266.4
Q F0 1.6 -.8(To t)108 278.4 T
(ranslate an \231ms\232 document composed of se).8 E -.15(ve)-.25 G
(ral input \214les,).15 E F2(unr)2.5 E(of)-.45 E(f)-.18 E F0
(could be in)2.5 E -.2(vo)-.4 G -.1(ke).2 G 2.5(dl).1 G(ik)-2.5 E 2.5
(et)-.1 G(his:)-2.5 E F1(unr)144 296.4 Q
(off \255fhtml \255ms document=thesis split=2 intr)-.18 E
(o.ms 1.ms 2.ms 3.ms app.ms)-.18 E F0 .549
(The names of all output \214les will ha)108 314.4 R .849 -.15(ve t)-.2
H .549(he pre\214x \231thesis\232, and the resulting HTML document will\
be split).15 F(into separate \214les at each le)108 326.4 Q -.15(ve)
-.25 G 2.5(l1s).15 G(ection or le)-2.5 E -.15(ve)-.25 G 2.5(l2s).15 G
(ection.)-2.5 E F3(DESCRIPTION)72 343.2 Q F0(The follo)108 355.2 Q(wing)
-.25 E F1(\255ms)2.5 E F0(macros are translated \(in addition to an)2.5
E 2.5(yu)-.15 G(ser)-2.5 E(-de\214ned macros\):)-.2 E 21.11(.AB .AE)148
372 R 24.45(.AI .A)24.17 F 23.61(U.)-.55 G 30.83(B.)-23.61 G 23.33
(B1 .B2)-30.83 F 21.11(.BD .BX .CD .DE)148 384 R 22.22(.DS .F)24.17 F
25.46(A.)-.74 G(FE)-25.46 E 23.88(.FS .I)148 396 R 24.45(.ID .IP)34.17 F
21.67(.LD .LG .LP)28.61 F 20.56(.NH .PP)148 408 R 22.22(.PX .QP .R)26.38
F 22.22(.RE .RS)30.83 F(.R)148 420 Q 25.32(T.)-.6 G 22.22(SH .SM)-25.32
F 22.78(.TL .UL)23.05 F 20.56(.UX .XA)24.17 F 21.67(.XE .XS)148 432 R
(These prede\214ned strings and number re)108 448.8 Q
(gisters are recognized:)-.15 E 26.39(\\*- \\*\(D)148 465.6 R 15(Y\\)
-.55 G 10.28(*\(MO \\*Q)-15 F 22.5(\\*U \\n\(PN)25 F .585(In addition, \
a number of macros are either silently ignored or cause a w)108 482.4 R
.585(arning to be printed, because their)-.1 F(function either cannot b\
e mapped to HTML 2.0 elements or assumes a page structure:)108 494.4 Q
18.89(.AM .BT)148 511.2 R 19.44(.CM .CT)24.72 F(.D)24.72 E 23.46(A.)-.4
G 23.33(EF .EH)-23.46 F 20.56(.HD .KE)148 523.2 R 22.22(.KF .KS .ND)
24.17 F 21.67(.NL .OF)23.06 F 20.56(.OH .P1)148 535.2 R 23.33(.PT .TM)
26.94 F 19.44(.MC .1C)22.5 F(.2C)25.83 E .001(The font switching macros\
are based on changes to the fonts `R', `I', and `B', as e)108 552 R
(xplained under FONTS in)-.15 E F1(unr)108 564 Q(off-html)-.18 E F0
2.708(\(1\). Of)B .208(course, this f)2.708 F .208
(ails if the fonts \(which are mounted on startup\) are unmounted by e)
-.1 F(xplicit)-.15 E F1(.fp)108 576 Q F0(requests.)2.5 E .446
(Upper or lo)108 592.8 R .445
(wer case letters are accepted as section numbers by)-.25 F F1(.NH)2.945
E F0 .445(when the ar)2.945 F .445(gument `)-.18 F(`S')-.74 E 2.945('i)
-.74 G 2.945(su)-2.945 G .445(sed to set)-2.945 F(ne)108 604.8 Q 2.5(ws)
-.25 G(ection numbers.)-2.5 E
(This is useful for appendices and similar constructs.)5 E 1.467
(The translation rule for)108 621.6 R F1(.IP)3.967 E F0(emplo)3.967 E
1.467(ys a heuristic to determine whether to generate a de\214nition li\
st or an)-.1 F .328(unordered list: if the \214rst in a sequence of ind\
ented paragraph macros is called with a tag consisting of one)108 633.6
R 3.032(of the special character \\\(b)108 645.6 R 5.532(uo)-.2 G 5.532
(r\\)-5.532 G 3.033(\(sq, a de\214nition list is be)-5.532 F 3.033
(gun, otherwise an unordered list.)-.15 F(Since)8.033 E -.15(ex)108
657.6 S(dented[).15 E F2(sic).34 E F0 3.31(]p).31 G .81
(aragraphs cannot be e)-3.31 F .81(xpressed in HTML 2.0, a w)-.15 F .81
(arning message is printed when a call to)-.1 F(the macro)108 669.6 Q F1
(.XP)2.5 E F0(is encountered.)2.5 E 1.329(All footnotes are concatenate\
d and placed in a separate output \214le, and a corresponding section \
\(with a)108 686.4 R(user)108 698.4 Q 1.121(-de\214ned header\) holding\
the footnotes is appended to the document automatically)-.2 F 6.12(.U)
-.65 G 1.12(se of the string)-6.12 F 1.012(`\\**' generates a h)108
710.4 R(yperte)-.05 E 1.012(xt link to the be)-.15 F 1.012
(ginning of the footnote created by the ne)-.15 F 1.012(xt call to)-.15
F F1(.FS)3.512 E F0(and)3.513 E F1(.FE)3.513 E F0(.)A .064
(The actual te)108 722.4 R .064(xt generated by using `\\**' as well as\
the footnote reference that appears in the footnote proper)-.15 F
203.72(1995/08/23 2)283.22 768 R EP
%%Page: 3 3
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF(unrof)72 48 Q 319.36(f-html-ms\(1\) unrof)-.25 F
(f-html-ms\(1\))-.25 E .065(are controlled by tw)108 84 R 2.565(oo)-.1 G
.065(ptions as e)-2.565 F .066(xplained under OPTIONS abo)-.15 F -.15
(ve)-.15 G 5.066(.A).15 G -.1(wa)-2.5 G .066
(rning message is printed on termi-).1 F .218
(nation if `\\**' has been used b)108 96 R .218
(ut a corresponding footnote w)-.2 F .218(as not seen.)-.1 F .218
(As an alternati)5.218 F .518 -.15(ve t)-.25 H 2.718(o`).15 G .217
(\\**', the ne)-2.718 F(w)-.25 E(request)108 108 Q/F1 10/Times-Bold@0 SF
(.F)2.706 E(A)-.9 E F0 .207
(can be used to produce a footnote anchor together with a h)2.706 F
(yperte)-.05 E .207(xt link; the anchor is the ar)-.15 F(gu-)-.18 E
(ment to the macro \(ho)108 120 Q(we)-.25 E -.15(ve)-.25 G .8 -.4(r, `)
.15 H(\\**' itself must not be used in a call to).4 E F1(.F)2.5 E(A)-.9
E F0(\).)A(Lik)108 136.8 Q -.25(ew)-.1 G .072(ise, a h).25 F(yperte)-.05
E .071
(xt reference is created for each use of the table of contents macros)
-.15 F F1(.XS)2.571 E F0(and)2.571 E F1(.XE)2.571 E F0(\(option-)2.571 E
(ally accompanied by calls to)108 148.8 Q F1(.XA)2.5 E F0(\).)A/F2 9
/Times-Bold@0 SF(SEE ALSO)72 165.6 Q F1(unr)108 177.6 Q(off)-.18 E F0
(\(1\),)A F1(unr)2.5 E(off-html)-.18 E F0(\(1\),)A F1(tr)2.5 E(off)-.18
E F0(\(1\),)A F1(ms)2.5 E F0(\(5 or 7\).)A(Unrof)108 194.4 Q 2.5(fP)-.25
G(rogrammer')-2.5 E 2.5(sM)-.55 G(anual.)-2.5 E(http://www)108 211.2 Q
(.informatik.uni-bremen.de/~net/unrof)-.65 E(f)-.25 E 1.998
(Berners-Lee, Connolly)108 228 R 4.498(,e)-.65 G 4.498(ta)-4.498 G 1.998
(l., HyperT)-4.498 F -.15(ex)-.7 G 4.498(tM).15 G 1.998
(arkup Language Speci\214cation\2122.0, Internet Draft, Internet)-4.498
F(Engineering T)108 240 Q(ask F)-.8 E(orce.)-.15 E F2 -.09(BU)72 256.8 S
(GS).09 E F0 .489(The macro)108 268.8 R F1(.UL)2.989 E F0 .489
(is currently mapped to a call to)2.989 F F1(.I)2.988 E F0 2.988(,a)C
2.988(su)-2.988 G .488(nderlining is not supported by the HTML back-end)
-2.988 F(of)108 280.8 Q/F3 10/Times-Italic@0 SF(unr)2.5 E(of)-.45 E(f)
-.18 E F0(1.0.)2.5 E -.15(Fo)108 297.6 S 1.018
(otnote references and requests such as).15 F F1(.sp)3.518 E F0 1.018
(that cause non-character)3.518 F(-le)-.2 E -.15(ve)-.25 G 3.518(lm).15
G 1.018(arkup to be generated must)-3.518 F
(not be used inside a numbered header)108 309.6 Q(.)-.55 E .072
(When creating a h)108 326.4 R(yperte)-.05 E .071(xt anchor for)-.15 F
F1(.XS)2.571 E F0(and)2.571 E F1(.XE)2.571 E F0 2.571(,t)C .071
(here is nothing to put inside the <a> element; therefore)-2.571 F 2.5
(an)108 338.4 S(on-breaking space is used.)-2.5 E .787
(Changing the number re)108 355.2 R .788(gister format of `NH' to get r\
oman or alphabetic section numbers does not w)-.15 F(ork,)-.1 E(ob)108
367.2 Q(viously)-.15 E(.)-.65 E 203.72(1995/08/23 3)283.22 768 R EP
%%Trailer
end
%%EOF

671
www/doc/unroff-html.1 Normal file
View File

@ -0,0 +1,671 @@
.\" $Revision: 1.12 $
.ds Ve 1.0
.\"
.de Ex
.RS
.nf
.nr sf \\n(.f
.if !\\n(.U \{\
. ft B
. if n .sp
. if t .sp .5 \}
..
.de Ee
.if !\\n(.U \{\
. ft \\n(sf
. if n .sp
. if t .sp .5 \}
.fi
.RE
..
.\"
.de Sd
.ds Dt \\$2
..
.\"
.Sd $Date: 1995/08/23 12:07:31 $
.TH unroff-html 1 "\*(Dt"
.SH NAME
unroff-html \- HTML 2.0 back-end for the programmable troff translator
.SH SYNOPSIS
.B unroff
[
.B \-fhtml
] [
.BI \-m package
] [
.IR file " | " option...\&
]
.SH OVERVIEW
When called with the
.B \-fhtml
option,
.I unroff
loads the back-end for the Hypertext Markup Language (HTML) version 2.0.
Please read
.BR unroff (1)
first for an overview of the Scheme-based, programmable troff translator
and for a description of the generic options that exist in
addition to
.B \-f
and
.BR \-m .
For information about extending and programming
.I unroff
also refer to the
.IR "Unroff Programmer's Manual" .
.LP
.I unroff
is usually invoked with an additional
.BI \-m package
option (such as
.B \-ms
or
.BR \-man )
to load the translation rules for the troff macros and other elements
defined by the macro package that is used to typeset the document.
If no
.B \-m
option is supplied, only the standard troff requests, special characters,
escape sequences, etc. are recognized and translated to HTML by
.I unroff
as described in this manual.
.SH OPTIONS
The following HTML-specific options can be specified in the command
line after the generic options.
See
.BR unroff (1)
for a general description of keyword/value options and their types
and for a list of options that are not specific to the target language.
.TP
.BR title " (string)"
The value to be used for the <title> element in HTML output files.
This option may be ignored by the code implementing a specific
macro set, e.\|g. when special rules are employed to derive the title
from the contents of the troff input files.
Whether or not this option is required also depends on the specific
.B \-m
option used, but it may be omitted if no
.B \-m
option is given.
.TP
.BR document " (string)"
The prefix used for the names of all output files.
May be ignored depending on the macro package that has been selected.
.TP
.BR mail-address " (string)"
The caller's mail address; may be used for \*(lqmailto:\*(rq URLs,
in particular for the \*(lqhref\*(rq attribute of the <link>
element that is usually generated.
.TP
.BR tt-preformat " (boolean)"
If 1, font changes to a font that is mapped to the <tt> element
are honored inside non-filled text (as described below).
The default is 0, i.\|e. the font changes will be recorded, but no
corresponding HTML tags will be emitted for them.
.TP
.BR handle-eqn " (string)"
.TP
.BR handle-tbl " (string)"
.TP
.BR handle-pic " (string)"
These options specify how equations, tables, and pictures encountered
in the troff input are processed.
Possible values are \*(lqcopy\*(rq to include the raw eqn, tbl, or
pic commands as pre-formatted text, \*(lqtext\*(rq to run the
respective troff preprocessor (eqn, tbl, or pic) and include its output
as pre-formatted text, or \*(lqgif\*(rq to convert the preprocessor
output to a GIF image and include it in the HTML document as
an inline image.
The default is \*(lqtext\*(rq for
.BR handle-tbl ,
\*(lqgif\*(rq for the other options.
See DESCRIPTION below for more information.
.TP
.BR eqn " (string)"
.TP
.BR tbl " (string)"
.TP
.BR pic " (string)"
These options specify the programs to invoke as the eqn, tbl,
and pic preprocessors.
The defaults are site-dependent.
.TP
.BR troff-to-text " (string)"
.TP
.BR troff-to-gif " (string)"
The programs to invoke for converting the output of a troff preprocessor
to plain text or to a GIF image.
The default values are site-dependent.
See DESCRIPTION below for more information on these options.
.SH FILES
If no
.B \-m
option is supplied,
.I unroff
reads the specified input files and sends the HTML document to
standard output, unless the
.B document
option is given, in which case its value together
with the suffix \*(lq.html\*(rq is used as the name of an
output file.
If no input files are specified, input is taken from standard input.
The output is enclosed by the usual HTML boiler-plate (<html>, <head>,
and <body> elements), a <title> element with the specified title
(or the value of
.B document
if no title has been given, or a default title if both are omitted),
a <link> element with rev= and href= attributes if
.B mail-address
has been set, and any pending end tags are generated on end of input.
.LP
Note that this is the default action that is performed in the
rare case when no macro package name has been specified, i.\|e. when
processing \*(lqbare\*(rq troff input.
Somewhat different rules may apply when processing, for
example, a group of UNIX manual pages
.RB ( \-man ).
.LP
See
.BR unroff (1)
for a list of Scheme files that are loaded on startup.
.SH DESCRIPTION
.SS "OUTPUT TRANSLATIONS"
The characters `<', `>', and `&' are replaced by the entities
`&lt;', `&gt;', and `&amp;' on output.
In addition, the quote character is mapped to `&quot;' where
appropriate.
New mappings can be added by means of the
.I defchar
Scheme primitive as explained in the Programmer's Manual.
.SS COMMENTS
each troff comment is translated to a corresponding HTML tag
followed by a newline; empty comments are ignored.
Comments are also ignored when appearing inside a macro body.
.SS "ESCAPE SEQUENCES"
The following is a list of troff escape sequences that are recognized
and the HTML output generated for them.
Any escape sequence that does not appear in the list
expands to the character after the escape character, and
a warning is printed in this case.
New definitions can be added and the predefined mappings can
be replaced by calling the
.I defescape
Scheme primitive in the user's initialization file, in a user-supplied
Scheme file, in a document, or on a site-wide basis by modifying
the file
.B scm/html/common.scm
in the installation directory.
.LP
.nf
.if !\n(.U .ta 8n 16n 24n 32n 40n 48n 56n
\e& nothing
\e- -
\e| nothing
\e^ nothing
\e\e \e
\e' '
\e` `
\e" rest of line as HTML comment tag
\e% nothing
\e{ conditional input begin
\e} conditional input end
\e* contents of string
\espace space
\e0 space
\ec nothing; eats following newline
\ee \e
\es nothing
\eu nothing, prints warning
\ed nothing, prints warning
\ev nothing, prints warning
\eo its argument, prints warning
\ez its argument, prints warning
\ek sets specified register to zero
\eh appropriate number of spaces for positive argument
\ew length of argument in units
\el repeats specified character, or <hr>
\en contents of number register
\ef see description of fonts below
.fi
.SS "SPECIAL CHARACTERS"
The following special characters are mapped to their equivalent
ISO-Latin 1 entities:
.LP
.nf
\e(12 \e(14 \e(34 \e(*b \e(*m \e(+- \e(:A
\e(:O \e(:U \e(:a \e(:o \e(:u \e(A: \e(Cs
\e(O: \e(Po \e(S1 \e(S2 \e(S3 \e(U: \e(Ye
\e(a: \e(bb \e(cd \e(co \e(ct \e(de \e(di
\e(es \e(hy \e(mu \e(no \e(o: \e(r! \e(r?
\e(rg \e(sc \e(ss \e(tm \e(u:
.fi
.LP
Heuristics have to be used for the following special characters:
.LP
.nf
\e(** *
\e(-> ->
\e(<- <-
\e(<= <=
\e(== ==
\e(>= >=
\e(Fi ffi
\e(Fl ffl
\e(aa '
\e(ap ~
\e(br |
\e(bu + (prints a warning)
\e(bv |
\e(ci O
\e(dd *** (prints a warning)
\e(dg ** (prints a warning)
\e(em --
\e(en -
\e(eq =
\e(ff ff
\e(fi fi
\e(fl fl
\e(fm '
\e(ga `
\e(lh <=
\e(lq ``
\e(mi -
\e(or |
\e(pl +
\e(rh =>
\e(rq ''
\e(ru _
\e(sl /
\e(sq o (prints a warning)
\e(ul _
\e(~= ~
.fi
.LP
A warning is printed to standard error output for any special
character not mentioned in this section.
To add new definitions, and to customize existing ones, the
.I defspecial
Scheme primitive can be used.
.SS "NON-FILLED TEXT"
The
.B .nf
and
.B .fi
troff requests generate pairs of <pre> and </pre> tags.
Nested requests are treated correctly, and currently
active character formatting elements such as <i> (resulting
from troff font changes) are temporarily disabled while
the <pre> or </pre> is emitted.
A warning is printed if a \*(lqtab\*(rq character is encountered
within filled text.
.SS FONTS
The `\ef' escape sequence and the requests
.B .ft
(change current font) and
.B .fp
(mount font at font position) are supported in the usual way,
both with numeric font positions as well as font names and
the special name `P' to denote the previous font.
The font position of the currently active font is available
through the read-only number register `.f'.
Initially, the font `R' is mounted on font positions 1 and 4,
font `I' on font position 2, and font `B' on position 3.
.LP
To map troff font names to HTML character formatting elements,
the \f2define-font\fP Scheme procedure is called with the name
of a troff font to be used in documents, and
HTML start and end tags to be emitted when changing to this font,
or when changing
.I from
this font to another font, respectively.
Whether <tt> and </tt> is generated inside non-filled (pre-formatted)
text for fixed-width fonts is controlled by the option
.BR tt-preformat .
The following calls to
.I define-font
are evaluated on startup:
.LP
.nf
.if !\n(.U \{\
. ft C
. ps -1
. vs -1 \}
(define-font "R" "" "")
(define-font "I" '<i> '</i>)
(define-font "B" '<b> '</b>)
(define-font "C" '<tt> '</tt>)
(define-font "CW" '<tt> '</tt>)
(define-font "CO" '<i> '</i>) ; kludge for Courier-Oblique
.if !\n(.U \{\
. ft
. ps
. vs \}
.fi
.LP
Site administrators may add definitions here for fonts used
at their site.
Users can define mappings for new fonts by placing corresponding
definitions in their documents or document-specific Scheme files.
.SS "OTHER TROFF REQUESTS"
The
.B .br
request generates a <br> tag.
.LP
.B .sp
requires a positive argument and is mapped to the appropriate number
of <p> tags (or newline characters inside non-filled/pre-formatted
text).
Likewise, the request
.BR .ti ,
when called with a positive indent, produces a <br> followed by the
appropriate number of non-breakable spaces.
.LP
The
.B .tl
requests justs emits the title parts delimited by spaces.
It is impossible to preserve the meaning of this request
in HTML 2.0.
.LP
The horizontal line drawing escape sequence `\el' just repeats
the specified character (or underline as default) to draw
a line.
If the given length looks like it could be the line length
(that is, if it exceeds a certain value), a <hr> tag
is produced instead.
Example:
.LP
.nf
\el'5c\e&-'
\el'60'
.fi
.LP
The first of these two requests
would produce a line of 20 dashes, while the second
request would generate a <hr> tag (the '\e&' is required
because the dash could be interpreted as a continuation of
the numeric expression).
.LP
Centering
.RB ( .ce )
is simulated by producing a <br> at the end of each line, as
this functionality is not supported by HTML 2.0.
.LP
The following requests are silently ignored; as the corresponding
functions cannot be expressed in HTML 2.0 or are controlled by
the client.
Ignoring these requests most likely does no harm.
.LP
.nf
.ad .bp .ch .fl .hw .hy .lg
.na .ne .nh .ns .pl .ps .rs
.vs .wh
.fi
.LP
All troff requests not mentioned in this section by default
cause a warning message to be printed to standard error output,
except for these basic requests which have their usual
semantics:
.LP
.nf
.am .as .de .ds .ec .el .ie
.if .ig .nr .rm .rr .so .tm
.fi
.LP
The
.I defrequest
Scheme primitive is used to associate an event handling procedure
with a request as documented in the Programmer's Manual.
.SS "END OF SENTENCE"
The sequence \*(lq<tt>space</tt>\*(rq is produced at the end of
each sentence to provide additional space, except inside non-filled text.
A sentence is defined a sequence of characters followed by
a period, a question mark, or an exclamation mark, followed
by a newline.
The usual convention to suppress end-of-sentence recognition
by adding the escape sequence `\e&' is correctly implemented by
.IR unroff .
To change the end-of-sentence function, the
.I sentence-event
can be redefined from within Scheme code as described in
the Programmer's Manual.
.SS "SCALE INDICATORS"
As the notions of vertical spacing, character width, device
resolution, etc. do not exist in HTML, the scaling for the
usual troff scale indicators is defined once on startup and
then remains constant.
For simplicity, the scaling usually employed by
.BR nroff (1)
is taken.
.SS "EQUATIONS, TABLES, PICTURES"
Interpretation of embedded eqn, tbl, and pic preprocessor input
is controlled by the options
.BR handle-eqn ,
.BR handle-tbl ,
and
.B handle-pic
(see OPTIONS above).
These options affect the input lines from a starting
.BR .EQ ,
.BR .TS ,
or
.B .PS
request up to and including the matching
.BR .EN ,
.BR .TE ,
or
.B .PE
request, as well as text surrounded by the current eqn
inline equation delimiters.
Each of the options can have one the following values:
.TP
.B copy
The preprocessor input (including the enclosing requests) is
placed inside <pre> and </pre>.
If assigned to the option
.BR handle-eqn ,
inline equations are rendered in the font currently mounted
on font position 2.
.TP
.B text
The input is sent to the respective preprocessor (as specified
by the options
.BR eqn ,
.BR tbl ,
or
.BR pic ),
and its result is piped to the shell command referred to by the
option
.BR troff-to-text ,
which typically involves a call to
.BR nroff (1)
or an equivalent command.
As with \*(lqcopy\*(rq, the result is then placed inside
<pre> and </pre>, unless the source is an inline equation.
.IP
The value of
.B troff-to-text
is filtered through a call to the
.I substitute
Scheme primitive with the name of an output file as its argument;
this file name can be referenced from within the option's value
by the substitute specifier \*(lq%1%\*(rq (see the Programmer's
Manual for a description of
.I substitute
and a list of substitute specifiers).
Here is a typical value for the
.B troff-to-text
option:
.Ex
"groff \-Tascii | col \-b | sed '/^[ \et]*$/d' > %1%"
.Ee
.TP
.B gif
Input lines are preprocessed as described under \*(lqtext\*(rq, and
the result is piped to the shell command named by the option
.BR troff-to-gif .
The latter is subject to a call to
.I substitute
with the name of a temporary file (which may be used to store intermediate
PostScript output) and the name of the output file where the resulting
GIF image must be stored.
The entire preprocessor input is replaced by an <img> element with
a reference to the GIF file and a suitable \*(lqalt=\*(rq attribute.
Unless processing an inline equation, the <img> element is
surrounded by <p> tags.
.IP
The names of the files containing the GIF images are generated
from the value of the
.B document
option, a sequence number, and the suffix \*(lq.gif\*(rq.
Therefore, the
.B document
option must have been set when using the \*(lqgif\*(rq method,
otherwise a warning is printed and the preprocessor input
is skipped.
.LP
In any case, the output of a call to eqn is ignored if the
input consists of calls to \*(lqdelim\*(rq or \*(lqdefine\*(rq
and empty lines exclusively.
When processing eqn input, calls to \*(lqdelim\*(rq are intercepted by
.I unroff
to record changes of the inline equation delimiters.
.SS "HYPERTEXT LINKS"
The facilities for embedding arbitrary hypertext links in troff
documents are still experimental in this version of
.I unroff
and thus are likely to change in future releases.
To use them, mention the file name \*(lqhyper.scm\*(rq in the
command line before any troff source files.
At the beginning of the first troff file, source the file
\*(lqtmac.hyper\*(rq from the directory \*(lqdoc\*(rq like this:
.LP
.nf
.if !\en(.U .so tmac.hyper
.fi
.LP
The request
.B .Hr
can then be used to create a hypertext link.
Its usage is:
.LP
.nf
.Hr -url URL anchor-text [suffix]
.Hr -symbolic label anchor-text [suffix]
.Hr troff-text
.fi
.LP
The first two forms are recognized by
.I unroff
and the third form is recognized by troff.
The first form is used for links pointing to external resources,
and the second one is used for forward or backward links referencing
anchors defined in a file belonging to the same document.
An anchor is placed in the document by calling the request
.BR .Ha :
.LP
.nf
.Ha label anchor-text
.fi
.LP
The label specified in a call to
.B .Ha
can then be used in calls to
.BR ".Hr -symbolic" .
All symbolic references must have been resolved at the end of the document.
The \*(lqanchor-text\*(rq is placed between the tags <a> and </a>;
\*(lqsuffix\*(rq is appended to the closing </a> if present.
\*(lqtroff-text\*(rq is just formatted in the normal way.
Quotes must be used if any of the arguments contains spaces.
.LP
Use of the hypertext facilities is demonstrated by the troff source
of the Programmer's Manual that is included in the
.I unroff
distribution.
.SH "SCHEME PROCEDURES"
The following Scheme procedures, macros, and variables are defined
by the HTML 2.0 back-end and can be used from within user-supplied
Scheme code:
.TP
(\f2define-font name start-tag end-tag\fP)
Associates a HTML start tag and end tag (symbols) with a troff
font name (string) as explained under FONTS above.
The font name can then be used in
.BR .fp ,
.BR .ft ,
and `\ef' requests.
.TP
(\f2reset-font\fP)
Resets both the current and previous font to the font mounted
on position 1.
.TP
\f2current-font\fP
.TP
\f2previous-font\fP
These variables hold the current and previous font as
(integer) font positions.
.TP
(\f2with-font-preserved\fP . \f2body\fP)
This macro can be used to temporarily change to font \*(lqR\*(rq,
evaluate \f2body\fP, and revert to the font that has been
active when the form was entered.
The macro returns a string that can be output using the
primitive \f2emit\fP or returned from an event procedure.
.TP
(\f2preform enable?\fP)
If the argument is #t, pre-formatted text is enabled, otherwise disabled.
.TP
\f2preform?\fP
This boolean variable holds #t if pre-formatted text is enabled,
#f otherwise.
.TP
(\f2with-preform-preserved\fP . \f2body\fP)
A macro that can be used to temporarily disable pre-formatted
text, evaluate \f2body\fP, and then re-enable it if appropriate.
The macro expands to a string that must be output or returned from
an event procedure.
.TP
(\f2parse-unquote string\fP)
Temporarily establishes an output translation to map the quote
character to \*(lq&quot;\*(rq, applies \f2parse\fP (explained
in the Programmer's Manual) to its argument, and returns the result.
.TP
(\f2center n\fP)
Centers the next \f2n\fP input lines (see description of
.B .ce
under TROFF REQUESTS above).
If \f2n\fP is zero, centering is stopped.
.TP
\f2nbsp\fP
A Scheme variable that holds a string interpreted as a non-breaking
space by HTML clients.
.SH "SEE ALSO"
.BR unroff (1),
.BR unroff-html-man (1),
.BR unroff-html-ms (1);
.br
.BR troff (1),
.BR nroff (1),
.BR groff (1),
.BR eqn (1),
.BR tbl (1),
.BR pic (1).
.LP
Unroff Programmer's Manual.
.LP
http://www.informatik.uni-bremen.de/~net/unroff
.LP
Berners-Lee, Connolly, et al.,
HyperText Markup Language Specification\(em2.0,
Internet Draft, Internet Engineering Task Force.
.SH BUGS
The `\espace' escape sequence should be mapped to the &#160; entity
(non-breaking space), but this entity is not supported by a number
of HTML clients.
.LP
Only the font positions 1 to 9 can currently be used.
There should be no limit.
.LP
The extra space generated for end of sentence should be configurable.
.LP
Underlining should be supported.

659
www/doc/unroff-html.1.html Normal file
View File

@ -0,0 +1,659 @@
<html>
<head>
<!-- This file has been generated by unroff 1.0, 03/21/96 19:29:21. -->
<!-- Do not edit! -->
<link rev="made" href="mailto:net@informatik.uni-bremen.de">
<!-- $Revision: 1.12 $ -->
<title>Manual page for unroff-html(1)</title>
</head>
<body>
<h2>
unroff-html - HTML 2.0 back-end for the programmable troff translator
<hr></h2>
<h2>SYNOPSIS</h2>
<b>unroff
</b>[
<b>-fhtml
</b>] [
<b>-m</b><i>package
</i>] [
<i>file</i> | <i>option...
</i>]
<h2>OVERVIEW</h2>
When called with the
<b>-fhtml
</b>option,
<i>unroff
</i>loads the back-end for the Hypertext Markup Language (HTML) version 2.0.<tt> </tt>
Please read
<b>unroff</b>(1)
first for an overview of the Scheme-based, programmable troff translator
and for a description of the generic options that exist in
addition to
<b>-f
</b>and
<b>-m</b>.<tt> </tt>
For information about extending and programming
<i>unroff
</i>also refer to the
<i>Unroff Programmer's Manual</i>.<tt> </tt>
<p>
<i>unroff
</i>is usually invoked with an additional
<b>-m</b><i>package
</i>option (such as
<b>-ms
</b>or
<b>-man</b>)
to load the translation rules for the troff macros and other elements
defined by the macro package that is used to typeset the document.<tt> </tt>
If no
<b>-m
</b>option is supplied, only the standard troff requests, special characters,
escape sequences, etc. are recognized and translated to HTML by
<i>unroff
</i>as described in this manual.<tt> </tt>
<h2>OPTIONS</h2>
The following HTML-specific options can be specified in the command
line after the generic options.<tt> </tt>
See
<b>unroff</b>(1)
for a general description of keyword/value options and their types
and for a list of options that are not specific to the target language.<tt> </tt>
<dl>
<dt><b>title</b> (string)
<dd>
The value to be used for the &lt;title&gt; element in HTML output files.<tt> </tt>
This option may be ignored by the code implementing a specific
macro set, e.g. when special rules are employed to derive the title
from the contents of the troff input files.<tt> </tt>
Whether or not this option is required also depends on the specific
<b>-m
</b>option used, but it may be omitted if no
<b>-m
</b>option is given.<tt> </tt>
<dt><b>document</b> (string)
<dd>
The prefix used for the names of all output files.<tt> </tt>
May be ignored depending on the macro package that has been selected.<tt> </tt>
<dt><b>mail-address</b> (string)
<dd>
The caller's mail address; may be used for ``mailto:'' URLs,
in particular for the ``href'' attribute of the &lt;link&gt;
element that is usually generated.<tt> </tt>
<dt><b>tt-preformat</b> (boolean)
<dd>
If 1, font changes to a font that is mapped to the &lt;tt&gt; element
are honored inside non-filled text (as described below).<tt> </tt>
The default is 0, i.e. the font changes will be recorded, but no
corresponding HTML tags will be emitted for them.<tt> </tt>
<dt><b>handle-eqn</b> (string)
<dd>
<dt><b>handle-tbl</b> (string)
<dd>
<dt><b>handle-pic</b> (string)
<dd>
These options specify how equations, tables, and pictures encountered
in the troff input are processed.<tt> </tt>
Possible values are ``copy'' to include the raw eqn, tbl, or
pic commands as pre-formatted text, ``text'' to run the
respective troff preprocessor (eqn, tbl, or pic) and include its output
as pre-formatted text, or ``gif'' to convert the preprocessor
output to a GIF image and include it in the HTML document as
an inline image.<tt> </tt>
The default is ``text'' for
<b>handle-tbl</b>,
``gif'' for the other options.<tt> </tt>
See DESCRIPTION below for more information.<tt> </tt>
<dt><b>eqn</b> (string)
<dd>
<dt><b>tbl</b> (string)
<dd>
<dt><b>pic</b> (string)
<dd>
These options specify the programs to invoke as the eqn, tbl,
and pic preprocessors.<tt> </tt>
The defaults are site-dependent.<tt> </tt>
<dt><b>troff-to-text</b> (string)
<dd>
<dt><b>troff-to-gif</b> (string)
<dd>
The programs to invoke for converting the output of a troff preprocessor
to plain text or to a GIF image.<tt> </tt>
The default values are site-dependent.<tt> </tt>
See DESCRIPTION below for more information on these options.<tt> </tt>
</dl>
<h2>FILES</h2>
If no
<b>-m
</b>option is supplied,
<i>unroff
</i>reads the specified input files and sends the HTML document to
standard output, unless the
<b>document
</b>option is given, in which case its value together
with the suffix ``.html'' is used as the name of an
output file.<tt> </tt>
If no input files are specified, input is taken from standard input.<tt> </tt>
The output is enclosed by the usual HTML boiler-plate (&lt;html&gt;, &lt;head&gt;,
and &lt;body&gt; elements), a &lt;title&gt; element with the specified title
(or the value of
<b>document
</b>if no title has been given, or a default title if both are omitted),
a &lt;link&gt; element with rev= and href= attributes if
<b>mail-address
</b>has been set, and any pending end tags are generated on end of input.<tt> </tt>
<p>
Note that this is the default action that is performed in the
rare case when no macro package name has been specified, i.e. when
processing ``bare'' troff input.<tt> </tt>
Somewhat different rules may apply when processing, for
example, a group of UNIX manual pages
(<b>-man</b>).<tt> </tt>
<p>
See
<b>unroff</b>(1)
for a list of Scheme files that are loaded on startup.<tt> </tt>
<h2>DESCRIPTION</h2>
<h3>OUTPUT TRANSLATIONS</h3>
The characters `&lt;', `&gt;', and `&amp;' are replaced by the entities
`&amp;lt;', `&amp;gt;', and `&amp;amp;' on output.<tt> </tt>
In addition, the quote character is mapped to `&amp;quot;' where
appropriate.<tt> </tt>
New mappings can be added by means of the
<i>defchar
</i>Scheme primitive as explained in the Programmer's Manual.<tt> </tt>
<h3>COMMENTS</h3>
each troff comment is translated to a corresponding HTML tag
followed by a newline; empty comments are ignored.<tt> </tt>
Comments are also ignored when appearing inside a macro body.<tt> </tt>
<h3>ESCAPE SEQUENCES</h3>
The following is a list of troff escape sequences that are recognized
and the HTML output generated for them.<tt> </tt>
Any escape sequence that does not appear in the list
expands to the character after the escape character, and
a warning is printed in this case.<tt> </tt>
New definitions can be added and the predefined mappings can
be replaced by calling the
<i>defescape
</i>Scheme primitive in the user's initialization file, in a user-supplied
Scheme file, in a document, or on a site-wide basis by modifying
the file
<b>scm/html/common.scm
</b>in the installation directory.<tt> </tt>
<p>
<pre>
\&amp; nothing
\- -
\| nothing
\^ nothing
\\ \
\' '
\` `
\" rest of line as HTML comment tag
\% nothing
\{ conditional input begin
\} conditional input end
\* contents of string
\space space
\0 space
\c nothing; eats following newline
\e \
\s nothing
\u nothing, prints warning
\d nothing, prints warning
\v nothing, prints warning
\o its argument, prints warning
\z its argument, prints warning
\k sets specified register to zero
\h appropriate number of spaces for positive argument
\w length of argument in units
\l repeats specified character, or &lt;hr&gt;
\n contents of number register
\f see description of fonts below
</pre>
<h3>SPECIAL CHARACTERS</h3>
The following special characters are mapped to their equivalent
ISO-Latin 1 entities:
<p>
<pre>
\(12 \(14 \(34 \(*b \(*m \(+- \(:A
\(:O \(:U \(:a \(:o \(:u \(A: \(Cs
\(O: \(Po \(S1 \(S2 \(S3 \(U: \(Ye
\(a: \(bb \(cd \(co \(ct \(de \(di
\(es \(hy \(mu \(no \(o: \(r! \(r?
\(rg \(sc \(ss \(tm \(u:
</pre>
<p>
Heuristics have to be used for the following special characters:
<p>
<pre>
\(** *
\(-&gt; -&gt;
\(&lt;- &lt;-
\(&lt;= &lt;=
\(== ==
\(&gt;= &gt;=
\(Fi ffi
\(Fl ffl
\(aa '
\(ap ~
\(br |
\(bu + (prints a warning)
\(bv |
\(ci O
\(dd *** (prints a warning)
\(dg ** (prints a warning)
\(em --
\(en -
\(eq =
\(ff ff
\(fi fi
\(fl fl
\(fm '
\(ga `
\(lh &lt;=
\(lq ``
\(mi -
\(or |
\(pl +
\(rh =&gt;
\(rq ''
\(ru _
\(sl /
\(sq o (prints a warning)
\(ul _
\(~= ~
</pre>
<p>
A warning is printed to standard error output for any special
character not mentioned in this section.<tt> </tt>
To add new definitions, and to customize existing ones, the
<i>defspecial
</i>Scheme primitive can be used.<tt> </tt>
<h3>NON-FILLED TEXT</h3>
The
<b>.nf
</b>and
<b>.fi
</b>troff requests generate pairs of &lt;pre&gt; and &lt;/pre&gt; tags.<tt> </tt>
Nested requests are treated correctly, and currently
active character formatting elements such as &lt;i&gt; (resulting
from troff font changes) are temporarily disabled while
the &lt;pre&gt; or &lt;/pre&gt; is emitted.<tt> </tt>
A warning is printed if a ``tab'' character is encountered
within filled text.<tt> </tt>
<h3>FONTS</h3>
The `\f' escape sequence and the requests
<b>.ft
</b>(change current font) and
<b>.fp
</b>(mount font at font position) are supported in the usual way,
both with numeric font positions as well as font names and
the special name `P' to denote the previous font.<tt> </tt>
The font position of the currently active font is available
through the read-only number register `.f'.<tt> </tt>
Initially, the font `R' is mounted on font positions 1 and 4,
font `I' on font position 2, and font `B' on position 3.<tt> </tt>
<p>
To map troff font names to HTML character formatting elements,
the <i>define-font</i> Scheme procedure is called with the name
of a troff font to be used in documents, and
HTML start and end tags to be emitted when changing to this font,
or when changing
<i>from
</i>this font to another font, respectively.<tt> </tt>
Whether &lt;tt&gt; and &lt;/tt&gt; is generated inside non-filled (pre-formatted)
text for fixed-width fonts is controlled by the option
<b>tt-preformat</b>.<tt> </tt>
The following calls to
<i>define-font
</i>are evaluated on startup:
<p>
<pre>
(define-font "R" "" "")
(define-font "I" '&lt;i&gt; '&lt;/i&gt;)
(define-font "B" '&lt;b&gt; '&lt;/b&gt;)
(define-font "C" '&lt;tt&gt; '&lt;/tt&gt;)
(define-font "CW" '&lt;tt&gt; '&lt;/tt&gt;)
(define-font "CO" '&lt;i&gt; '&lt;/i&gt;) ; kludge for Courier-Oblique
</pre>
<p>
Site administrators may add definitions here for fonts used
at their site.<tt> </tt>
Users can define mappings for new fonts by placing corresponding
definitions in their documents or document-specific Scheme files.<tt> </tt>
<h3>OTHER TROFF REQUESTS</h3>
The
<b>.br
</b>request generates a &lt;br&gt; tag.<tt> </tt>
<p>
<b>.sp
</b>requires a positive argument and is mapped to the appropriate number
of &lt;p&gt; tags (or newline characters inside non-filled/pre-formatted
text).<tt> </tt>
Likewise, the request
<b>.ti</b>,
when called with a positive indent, produces a &lt;br&gt; followed by the
appropriate number of non-breakable spaces.<tt> </tt>
<p>
The
<b>.tl
</b>requests justs emits the title parts delimited by spaces.<tt> </tt>
It is impossible to preserve the meaning of this request
in HTML 2.0.<tt> </tt>
<p>
The horizontal line drawing escape sequence `\l' just repeats
the specified character (or underline as default) to draw
a line.<tt> </tt>
If the given length looks like it could be the line length
(that is, if it exceeds a certain value), a &lt;hr&gt; tag
is produced instead.<tt> </tt>
Example:
<p>
<pre>
\l'5c\&amp;-'
\l'60'
</pre>
<p>
The first of these two requests
would produce a line of 20 dashes, while the second
request would generate a &lt;hr&gt; tag (the '\&amp;' is required
because the dash could be interpreted as a continuation of
the numeric expression).<tt> </tt>
<p>
Centering
(<b>.ce</b>)
is simulated by producing a &lt;br&gt; at the end of each line, as
this functionality is not supported by HTML 2.0.<tt> </tt>
<p>
The following requests are silently ignored; as the corresponding
functions cannot be expressed in HTML 2.0 or are controlled by
the client.<tt> </tt>
Ignoring these requests most likely does no harm.<tt> </tt>
<p>
<pre>
.ad .bp .ch .fl .hw .hy .lg
.na .ne .nh .ns .pl .ps .rs
.vs .wh
</pre>
<p>
All troff requests not mentioned in this section by default
cause a warning message to be printed to standard error output,
except for these basic requests which have their usual
semantics:
<p>
<pre>
.am .as .de .ds .ec .el .ie
.if .ig .nr .rm .rr .so .tm
</pre>
<p>
The
<i>defrequest
</i>Scheme primitive is used to associate an event handling procedure
with a request as documented in the Programmer's Manual.<tt> </tt>
<h3>END OF SENTENCE</h3>
The sequence ``&lt;tt&gt;space&lt;/tt&gt;'' is produced at the end of
each sentence to provide additional space, except inside non-filled text.<tt> </tt>
A sentence is defined a sequence of characters followed by
a period, a question mark, or an exclamation mark, followed
by a newline.<tt> </tt>
The usual convention to suppress end-of-sentence recognition
by adding the escape sequence `\&amp;' is correctly implemented by
<i>unroff</i>.<tt> </tt>
To change the end-of-sentence function, the
<i>sentence-event
</i>can be redefined from within Scheme code as described in
the Programmer's Manual.<tt> </tt>
<h3>SCALE INDICATORS</h3>
As the notions of vertical spacing, character width, device
resolution, etc. do not exist in HTML, the scaling for the
usual troff scale indicators is defined once on startup and
then remains constant.<tt> </tt>
For simplicity, the scaling usually employed by
<b>nroff</b>(1)
is taken.<tt> </tt>
<h3>EQUATIONS, TABLES, PICTURES</h3>
Interpretation of embedded eqn, tbl, and pic preprocessor input
is controlled by the options
<b>handle-eqn</b>,
<b>handle-tbl</b>,
and
<b>handle-pic
</b>(see OPTIONS above).<tt> </tt>
These options affect the input lines from a starting
<b>.EQ</b>,
<b>.TS</b>,
or
<b>.PS
</b>request up to and including the matching
<b>.EN</b>,
<b>.TE</b>,
or
<b>.PE
</b>request, as well as text surrounded by the current eqn
inline equation delimiters.<tt> </tt>
Each of the options can have one the following values:
<dl>
<dt><b>copy
</b><dd>
The preprocessor input (including the enclosing requests) is
placed inside &lt;pre&gt; and &lt;/pre&gt;.<tt> </tt>
If assigned to the option
<b>handle-eqn</b>,
inline equations are rendered in the font currently mounted
on font position 2.<tt> </tt>
<dt><b>text
</b><dd>
The input is sent to the respective preprocessor (as specified
by the options
<b>eqn</b>,
<b>tbl</b>,
or
<b>pic</b>),
and its result is piped to the shell command referred to by the
option
<b>troff-to-text</b>,
which typically involves a call to
<b>nroff</b>(1)
or an equivalent command.<tt> </tt>
As with ``copy'', the result is then placed inside
&lt;pre&gt; and &lt;/pre&gt;, unless the source is an inline equation.<tt> </tt>
<dt><dd><p>
The value of
<b>troff-to-text
</b>is filtered through a call to the
<i>substitute
</i>Scheme primitive with the name of an output file as its argument;
this file name can be referenced from within the option's value
by the substitute specifier ``%1%'' (see the Programmer's
Manual for a description of
<i>substitute
</i>and a list of substitute specifiers).<tt> </tt>
Here is a typical value for the
<b>troff-to-text
</b>option:
</dl>
<dl><dt><dd>
<pre>
"groff -Tascii | col -b | sed '/^[ \t]*$/d' &gt; %1%"
</pre>
</dl>
<dl>
<dt><b>gif
</b><dd>
Input lines are preprocessed as described under ``text'', and
the result is piped to the shell command named by the option
<b>troff-to-gif</b>.<tt> </tt>
The latter is subject to a call to
<i>substitute
</i>with the name of a temporary file (which may be used to store intermediate
PostScript output) and the name of the output file where the resulting
GIF image must be stored.<tt> </tt>
The entire preprocessor input is replaced by an &lt;img&gt; element with
a reference to the GIF file and a suitable ``alt='' attribute.<tt> </tt>
Unless processing an inline equation, the &lt;img&gt; element is
surrounded by &lt;p&gt; tags.<tt> </tt>
<dt><dd><p>
The names of the files containing the GIF images are generated
from the value of the
<b>document
</b>option, a sequence number, and the suffix ``.gif''.<tt> </tt>
Therefore, the
<b>document
</b>option must have been set when using the ``gif'' method,
otherwise a warning is printed and the preprocessor input
is skipped.<tt> </tt>
</dl>
<p>
In any case, the output of a call to eqn is ignored if the
input consists of calls to ``delim'' or ``define''
and empty lines exclusively.<tt> </tt>
When processing eqn input, calls to ``delim'' are intercepted by
<i>unroff
</i>to record changes of the inline equation delimiters.<tt> </tt>
<h3>HYPERTEXT LINKS</h3>
The facilities for embedding arbitrary hypertext links in troff
documents are still experimental in this version of
<i>unroff
</i>and thus are likely to change in future releases.<tt> </tt>
To use them, mention the file name ``hyper.scm'' in the
command line before any troff source files.<tt> </tt>
At the beginning of the first troff file, source the file
``tmac.hyper'' from the directory ``doc'' like this:
<p>
<pre>
.if !\n(.U .so tmac.hyper
</pre>
<p>
The request
<b>.Hr
</b>can then be used to create a hypertext link.<tt> </tt>
Its usage is:
<p>
<pre>
.Hr -url URL anchor-text [suffix]
.Hr -symbolic label anchor-text [suffix]
.Hr troff-text
</pre>
<p>
The first two forms are recognized by
<i>unroff
</i>and the third form is recognized by troff.<tt> </tt>
The first form is used for links pointing to external resources,
and the second one is used for forward or backward links referencing
anchors defined in a file belonging to the same document.<tt> </tt>
An anchor is placed in the document by calling the request
<b>.Ha</b>:
<p>
<pre>
.Ha label anchor-text
</pre>
<p>
The label specified in a call to
<b>.Ha
</b>can then be used in calls to
<b>.Hr -symbolic</b>.<tt> </tt>
All symbolic references must have been resolved at the end of the document.<tt> </tt>
The ``anchor-text'' is placed between the tags &lt;a&gt; and &lt;/a&gt;;
``suffix'' is appended to the closing &lt;/a&gt; if present.<tt> </tt>
``troff-text'' is just formatted in the normal way.<tt> </tt>
Quotes must be used if any of the arguments contains spaces.<tt> </tt>
<p>
Use of the hypertext facilities is demonstrated by the troff source
of the Programmer's Manual that is included in the
<i>unroff
</i>distribution.<tt> </tt>
<h2>SCHEME PROCEDURES</h2>
The following Scheme procedures, macros, and variables are defined
by the HTML 2.0 back-end and can be used from within user-supplied
Scheme code:
<dl>
<dt>(<i>define-font name start-tag end-tag</i>)
<dd>
Associates a HTML start tag and end tag (symbols) with a troff
font name (string) as explained under FONTS above.<tt> </tt>
The font name can then be used in
<b>.fp</b>,
<b>.ft</b>,
and `\f' requests.<tt> </tt>
<dt>(<i>reset-font</i>)
<dd>
Resets both the current and previous font to the font mounted
on position 1.<tt> </tt>
<dt><i>current-font</i>
<dd>
<dt><i>previous-font</i>
<dd>
These variables hold the current and previous font as
(integer) font positions.<tt> </tt>
<dt>(<i>with-font-preserved</i> . <i>body</i>)
<dd>
This macro can be used to temporarily change to font ``R'',
evaluate <i>body</i>, and revert to the font that has been
active when the form was entered.<tt> </tt>
The macro returns a string that can be output using the
primitive <i>emit</i> or returned from an event procedure.<tt> </tt>
<dt>(<i>preform enable?</i>)
<dd>
If the argument is #t, pre-formatted text is enabled, otherwise disabled.<tt> </tt>
<dt><i>preform?</i>
<dd>
This boolean variable holds #t if pre-formatted text is enabled,
#f otherwise.<tt> </tt>
<dt>(<i>with-preform-preserved</i> . <i>body</i>)
<dd>
A macro that can be used to temporarily disable pre-formatted
text, evaluate <i>body</i>, and then re-enable it if appropriate.<tt> </tt>
The macro expands to a string that must be output or returned from
an event procedure.<tt> </tt>
<dt>(<i>parse-unquote string</i>)
<dd>
Temporarily establishes an output translation to map the quote
character to ``&amp;quot;'', applies <i>parse</i> (explained
in the Programmer's Manual) to its argument, and returns the result.<tt> </tt>
<dt>(<i>center n</i>)
<dd>
Centers the next <i>n</i> input lines (see description of
<b>.ce
</b>under TROFF REQUESTS above).<tt> </tt>
If <i>n</i> is zero, centering is stopped.<tt> </tt>
<dt><i>nbsp</i>
<dd>
A Scheme variable that holds a string interpreted as a non-breaking
space by HTML clients.<tt> </tt>
</dl>
<h2>SEE ALSO</h2>
<b>unroff</b>(1),
<b>unroff-html-man</b>(1),
<b>unroff-html-ms</b>(1);
<br>
<b>troff</b>(1),
<b>nroff</b>(1),
<b>groff</b>(1),
<b>eqn</b>(1),
<b>tbl</b>(1),
<b>pic</b>(1).<tt> </tt>
<p>
Unroff Programmer's Manual.<tt> </tt>
<p>
http://www.informatik.uni-bremen.de/~net/unroff
<p>
Berners-Lee, Connolly, et al.,
HyperText Markup Language Specification--2.0,
Internet Draft, Internet Engineering Task Force.<tt> </tt>
<h2>BUGS</h2>
The `\space' escape sequence should be mapped to the &amp;#160; entity
(non-breaking space), but this entity is not supported by a number
of HTML clients.<tt> </tt>
<p>
Only the font positions 1 to 9 can currently be used.<tt> </tt>
There should be no limit.<tt> </tt>
<p>
The extra space generated for end of sentence should be configurable.<tt> </tt>
<p>
Underlining should be supported.<tt> </tt>
<p><hr>
Markup created by <em>unroff</em> 1.0,&#160;<tt> </tt>&#160;<tt> </tt>March 21, 1996.
</body>
</html>

760
www/doc/unroff-html.1.ps Normal file
View File

@ -0,0 +1,760 @@
%!PS-Adobe-3.0
%%Creator: groff version 1.09
%%CreationDate: Thu Mar 21 19:29:56 1996
%%DocumentNeededResources: font Times-Roman
%%+ font Times-Bold
%%+ font Times-Italic
%%+ font Courier
%%DocumentSuppliedResources: procset grops 1.09 0
%%Pages: 7
%%PageOrder: Ascend
%%Orientation: Portrait
%%EndComments
%%BeginProlog
%%BeginResource: procset grops 1.09 0
/setpacking where{
pop
currentpacking
true setpacking
}if
/grops 120 dict dup begin
/SC 32 def
/A/show load def
/B{0 SC 3 -1 roll widthshow}bind def
/C{0 exch ashow}bind def
/D{0 exch 0 SC 5 2 roll awidthshow}bind def
/E{0 rmoveto show}bind def
/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
/G{0 rmoveto 0 exch ashow}bind def
/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/I{0 exch rmoveto show}bind def
/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
/K{0 exch rmoveto 0 exch ashow}bind def
/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/M{rmoveto show}bind def
/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
/O{rmoveto 0 exch ashow}bind def
/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/Q{moveto show}bind def
/R{moveto 0 SC 3 -1 roll widthshow}bind def
/S{moveto 0 exch ashow}bind def
/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/SF{
findfont exch
[exch dup 0 exch 0 exch neg 0 0]makefont
dup setfont
[exch/setfont cvx]cvx bind def
}bind def
/MF{
findfont
[5 2 roll
0 3 1 roll
neg 0 0]makefont
dup setfont
[exch/setfont cvx]cvx bind def
}bind def
/level0 0 def
/RES 0 def
/PL 0 def
/LS 0 def
/PLG{
gsave newpath clippath pathbbox grestore
exch pop add exch pop
}bind def
/BP{
/level0 save def
1 setlinecap
1 setlinejoin
72 RES div dup scale
LS{
90 rotate
}{
0 PL translate
}ifelse
1 -1 scale
}bind def
/EP{
level0 restore
showpage
}bind def
/DA{
newpath arcn stroke
}bind def
/SN{
transform
.25 sub exch .25 sub exch
round .25 add exch round .25 add exch
itransform
}bind def
/DL{
SN
moveto
SN
lineto stroke
}bind def
/DC{
newpath 0 360 arc closepath
}bind def
/TM matrix def
/DE{
TM currentmatrix pop
translate scale newpath 0 0 .5 0 360 arc closepath
TM setmatrix
}bind def
/RC/rcurveto load def
/RL/rlineto load def
/ST/stroke load def
/MT/moveto load def
/CL/closepath load def
/FL{
currentgray exch setgray fill setgray
}bind def
/BL/fill load def
/LW/setlinewidth load def
/RE{
findfont
dup maxlength 1 index/FontName known not{1 add}if dict begin
{
1 index/FID ne{def}{ pop pop}ifelse
}forall
/Encoding exch def
dup/FontName exch def
currentdict end definefont pop
}bind def
/DEFS 0 def
/EBEGIN{
moveto
DEFS begin
}bind def
/EEND/end load def
/CNT 0 def
/level1 0 def
/PBEGIN{
/level1 save def
translate
div 3 1 roll div exch scale
neg exch neg exch translate
0 setgray
0 setlinecap
1 setlinewidth
0 setlinejoin
10 setmiterlimit
[] 0 setdash
/setstrokeadjust where{
pop
false setstrokeadjust
}if
/setoverprint where{
pop
false setoverprint
}if
newpath
/CNT countdictstack def
userdict begin
/showpage{} def
}bind def
/PEND{
clear
countdictstack CNT sub{end}repeat
level1 restore
}bind def
end def
/setpacking where{
pop
setpacking
}if
%%EndResource
%%IncludeResource: font Times-Roman
%%IncludeResource: font Times-Bold
%%IncludeResource: font Times-Italic
%%IncludeResource: font Courier
grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
def/PL 841.89 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron
/Zcaron/scaron/zcaron/Ydieresis/trademark/quotesingle/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
/Courier@0 ENC0/Courier RE/Times-Italic@0 ENC0/Times-Italic RE
/Times-Bold@0 ENC0/Times-Bold RE/Times-Roman@0 ENC0/Times-Roman RE
%%EndProlog
%%Page: 1 1
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF(unrof)72 48 Q 349.36(f-html\(1\) unrof)-.25 F
(f-html\(1\))-.25 E/F1 9/Times-Bold@0 SF -.18(NA)72 84 S(ME).18 E F0
(unrof)108 96 Q(f-html \255 HTML 2.0 back-end for the programmable trof)
-.25 E 2.5(ft)-.25 G(ranslator)-2.5 E F1(SYNOPSIS)72 112.8 Q/F2 10
/Times-Bold@0 SF(unr)108 124.8 Q(off)-.18 E F0([)2.5 E F2(\255fhtml)2.5
E F0 2.5(][)2.5 G F2<ad6d>A/F3 10/Times-Italic@0 SF(pac)1.25 E(ka)-.2 E
-.1(ge)-.1 G F0 2.5(][)2.6 G F3(\214le)A F0(|)2.68 E F3(option...)2.73 E
F0(])2.5 E F1 -.45(OV)72 141.6 S(ER).45 E(VIEW)-.495 E F0 2.396
(When called with the)108 153.6 R F2(\255fhtml)4.896 E F0(option,)4.896
E F3(unr)4.896 E(of)-.45 E(f)-.18 E F0 2.396
(loads the back-end for the Hyperte)4.896 F 2.395(xt Markup Language)
-.15 F .27(\(HTML\) v)108 165.6 R .27(ersion 2.0.)-.15 F .27
(Please read)5.27 F F2(unr)2.771 E(off)-.18 E F0 .271
(\(1\) \214rst for an o)B -.15(ve)-.15 G(rvie).15 E 2.771(wo)-.25 G
2.771(ft)-2.771 G .271(he Scheme-based, programmable trof)-2.771 F(f)
-.25 E .516
(translator and for a description of the generic options that e)108
177.6 R .515(xist in addition to)-.15 F F2<ad66>3.015 E F0(and)3.015 E
F2<ad6d>3.015 E F0 5.515(.F)C .515(or information)-5.665 F(about e)108
189.6 Q(xtending and programming)-.15 E F3(unr)2.5 E(of)-.45 E(f)-.18 E
F0(also refer to the)2.5 E F3(Unr)2.5 E(of)-.45 E 2.5(fP)-.18 G -1.7
-.45(ro g)-2.5 H -.15(ra).45 G(mmer').15 E 2.5(sM)-.4 G(anual)-2.5 E F0
(.).51 E F3(unr)108 206.4 Q(of)-.45 E(f)-.18 E F0 .367(is usually in)
2.867 F -.2(vo)-.4 G -.1(ke).2 G 2.867(dw).1 G .367(ith an additional)
-2.867 F F2<ad6d>2.868 E F3(pac)1.25 E(ka)-.2 E -.1(ge)-.1 G F0 .368
(option \(such as)2.968 F F2(\255ms)2.868 E F0(or)2.868 E F2(\255man)
2.868 E F0 2.868(\)t)C 2.868(ol)-2.868 G .368(oad the transla-)-2.868 F
.576(tion rules for the trof)108 218.4 R 3.076(fm)-.25 G .576(acros and\
other elements de\214ned by the macro package that is used to typeset \
the)-3.076 F 5.295(document. If)108 230.4 R(no)5.295 E F2<ad6d>5.295 E
F0 2.795(option is supplied, only the standard trof)5.295 F 5.295(fr)
-.25 G 2.795(equests, special characters, escape)-5.295 F
(sequences, etc. are recognized and translated to HTML by)108 242.4 Q F3
(unr)2.5 E(of)-.45 E(f)-.18 E F0(as described in this manual.)2.5 E F1
(OPTIONS)72 259.2 Q F0 .432(The follo)108 271.2 R .432(wing HTML-speci\
\214c options can be speci\214ed in the command line after the generic \
options.)-.25 F(See)5.432 E F2(unr)108 283.2 Q(off)-.18 E F0 .004
(\(1\) for a general description of k)B -.15(ey)-.1 G -.1(wo).15 G(rd/v)
.1 E .005
(alue options and their types and for a list of options that are)-.25 F
(not speci\214c to the tar)108 295.2 Q(get language.)-.18 E F2(title)108
312 Q F0(\(string\))2.5 E .124(The v)144 324 R .123
(alue to be used for the <title> element in HTML output \214les.)-.25 F
.123(This option may be ignored by)5.123 F 1.142
(the code implementing a speci\214c macro set, e.)144 336 R 1.142
(g. when special rules are emplo)1.666 F 1.143(yed to deri)-.1 F 1.443
-.15(ve t)-.25 H(he).15 E .484(title from the contents of the trof)144
348 R 2.984(fi)-.25 G .484(nput \214les.)-2.984 F .484
(Whether or not this option is required also depends)5.484 F
(on the speci\214c)144 360 Q F2<ad6d>2.5 E F0(option used, b)2.5 E
(ut it may be omitted if no)-.2 E F2<ad6d>2.5 E F0(option is gi)2.5 E
-.15(ve)-.25 G(n.).15 E F2(document)108 376.8 Q F0(\(string\))2.5 E .079
(The pre\214x used for the names of all output \214les.)144 388.8 R .08
(May be ignored depending on the macro package)5.079 F
(that has been selected.)144 400.8 Q F2(mail-addr)108 417.6 Q(ess)-.18 E
F0(\(string\))2.5 E .272(The caller')144 429.6 R 2.772(sm)-.55 G .271(a\
il address; may be used for \231mailto:\232 URLs, in particular for the\
\231href\232 attrib)-2.772 F .271(ute of)-.2 F
(the <link> element that is usually generated.)144 441.6 Q F2(tt-pr)108
458.4 Q(ef)-.18 E(ormat)-.25 E F0(\(boolean\))2.5 E .084(If 1, font cha\
nges to a font that is mapped to the <tt> element are honored inside no\
n-\214lled te)144 470.4 R .084(xt \(as)-.15 F .905(described belo)144
482.4 R 3.405(w\). The)-.25 F(def)3.405 E .905(ault is 0, i.)-.1 F .905
(e. the font changes will be recorded, b)1.666 F .905
(ut no corresponding)-.2 F(HTML tags will be emitted for them.)144 494.4
Q F2(handle-eqn)108 511.2 Q F0(\(string\))2.5 E F2(handle-tbl)108 528 Q
F0(\(string\))2.5 E F2(handle-pic)108 544.8 Q F0(\(string\))2.5 E .945
(These options specify ho)144 556.8 R 3.445(we)-.25 G .946
(quations, tables, and pictures encountered in the trof)-3.445 F 3.446
(fi)-.25 G .946(nput are pro-)-3.446 F 2.958(cessed. Possible)144 568.8
R -.25(va)2.958 G .458(lues are \231cop).25 F .457
(y\232 to include the ra)-.1 F 2.957(we)-.15 G .457
(qn, tbl, or pic commands as pre-formatted)-2.957 F(te)144 580.8 Q .577
(xt, \231te)-.15 F .577(xt\232 to run the respecti)-.15 F .877 -.15
(ve t)-.25 H(rof).15 E 3.077(fp)-.25 G .577
(reprocessor \(eqn, tbl, or pic\) and include its output as pre-)-3.077
F 1.215(formatted te)144 592.8 R 1.215(xt, or \231gif\232 to con)-.15 F
-.15(ve)-.4 G 1.215
(rt the preprocessor output to a GIF image and include it in the).15 F
1.642(HTML document as an inline image.)144 604.8 R 1.643(The def)6.643
F 1.643(ault is \231te)-.1 F 1.643(xt\232 for)-.15 F F2(handle-tbl)4.143
E F0 4.143<2c99>C 1.643(gif\232 for the other)-4.143 F 2.5(options. See)
144 616.8 R(DESCRIPTION belo)2.5 E 2.5(wf)-.25 G(or more information.)
-2.5 E F2(eqn)108 633.6 Q F0(\(string\))2.5 E F2(tbl)108 650.4 Q F0
(\(string\))2.5 E F2(pic)108 667.2 Q F0(\(string\))2.5 E .514
(These options specify the programs to in)144 679.2 R -.2(vo)-.4 G .713
-.1(ke a).2 H 3.013(st).1 G .513(he eqn, tbl, and pic preprocessors.)
-3.013 F .513(The def)5.513 F(aults)-.1 E(are site-dependent.)144 691.2
Q 203.72(1995/08/23 1)283.22 768 R EP
%%Page: 2 2
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF(unrof)72 48 Q 349.36(f-html\(1\) unrof)-.25 F
(f-html\(1\))-.25 E/F1 10/Times-Bold@0 SF(tr)108 84 Q(off-to-text)-.18 E
F0(\(string\))2.5 E F1(tr)108 100.8 Q(off-to-gif)-.18 E F0(\(string\))
2.5 E .613(The programs to in)144 112.8 R -.2(vo)-.4 G .814 -.1(ke f).2
H .614(or con).1 F -.15(ve)-.4 G .614(rting the output of a trof).15 F
3.114(fp)-.25 G .614(reprocessor to plain te)-3.114 F .614
(xt or to a GIF)-.15 F 3.587(image. The)144 124.8 R(def)3.587 E 1.087
(ault v)-.1 F 1.087(alues are site-dependent.)-.25 F 1.086
(See DESCRIPTION belo)6.086 F 3.586(wf)-.25 G 1.086(or more information)
-3.586 F(on these options.)144 136.8 Q/F2 9/Times-Bold@0 SF(FILES)72
153.6 Q F0 .772(If no)108 165.6 R F1<ad6d>3.272 E F0 .772
(option is supplied,)3.272 F/F3 10/Times-Italic@0 SF(unr)3.272 E(of)-.45
E(f)-.18 E F0 .772(reads the speci\214ed input \214les and sends the HT\
ML document to stan-)3.272 F .178(dard output, unless the)108 177.6 R F1
(document)2.678 E F0 .178(option is gi)2.678 F -.15(ve)-.25 G .178
(n, in which case its v).15 F .178(alue together with the suf)-.25 F
.177(\214x \231.html\232 is)-.25 F .649
(used as the name of an output \214le.)108 189.6 R .649
(If no input \214les are speci\214ed, input is tak)5.649 F .649
(en from standard input.)-.1 F(The)5.649 E .55
(output is enclosed by the usual HTML boiler)108 201.6 R .549
(-plate \(<html>, <head>, and <body> elements\), a <title> ele-)-.2 F
.688(ment with the speci\214ed title \(or the v)108 213.6 R .688
(alue of)-.25 F F1(document)3.188 E F0 .689(if no title has been gi)
3.189 F -.15(ve)-.25 G .689(n, or a def).15 F .689(ault title if both)
-.1 F .066(are omitted\), a <link> element with re)108 225.6 R .066
(v= and href= attrib)-.25 F .066(utes if)-.2 F F1(mail-addr)2.566 E(ess)
-.18 E F0 .066(has been set, and an)2.566 F 2.565(yp)-.15 G(ending)
-2.565 E(end tags are generated on end of input.)108 237.6 Q .138
(Note that this is the def)108 254.4 R .138(ault action that is perform\
ed in the rare case when no macro package name has been)-.1 F .924
(speci\214ed, i.)108 266.4 R .924(e. when processing \231bare\232 trof)
1.666 F 3.423(fi)-.25 G 3.423(nput. Some)-3.423 F .923(what dif)-.25 F
.923(ferent rules may apply when processing,)-.25 F(for e)108 278.4 Q
(xample, a group of UNIX manual pages \()-.15 E F1(\255man)A F0(\).)A
(See)108 295.2 Q F1(unr)2.5 E(off)-.18 E F0
(\(1\) for a list of Scheme \214les that are loaded on startup.)A F2
(DESCRIPTION)72 312 Q F1(OUTPUT TRANSLA)87 324 Q(TIONS)-.95 E F0 .23(Th\
e characters `<', `>', and `&' are replaced by the entities `&lt;', `&g\
t;', and `&amp;' on output.)108 336 R .231(In addi-)5.231 F .407
(tion, the quote character is mapped to `&quot;' where appropriate.)108
348 R(Ne)5.407 E 2.907(wm)-.25 G .407(appings can be added by means)
-2.907 F(of the)108 360 Q F3(defc)2.5 E(har)-.15 E F0(Scheme primiti)2.5
E .3 -.15(ve a)-.25 H 2.5(se).15 G(xplained in the Programmer')-2.65 E
2.5(sM)-.55 G(anual.)-2.5 E F1(COMMENTS)87 376.8 Q F0 .072(each trof)108
388.8 R 2.572(fc)-.25 G .072
(omment is translated to a corresponding HTML tag follo)-2.572 F .073
(wed by a ne)-.25 F .073(wline; empty comments are)-.25 F 2.5
(ignored. Comments)108 400.8 R
(are also ignored when appearing inside a macro body)2.5 E(.)-.65 E F1
(ESCAPE SEQ)87 417.6 Q(UENCES)-.1 E F0 .987(The follo)108 429.6 R .987
(wing is a list of trof)-.25 F 3.487(fe)-.25 G .986
(scape sequences that are recognized and the HTML output generated for)
-3.487 F 2.542(them. An)108 441.6 R 2.542(ye)-.15 G .043
(scape sequence that does not appear in the list e)-2.542 F .043
(xpands to the character after the escape charac-)-.15 F(ter)108 453.6 Q
2.591(,a)-.4 G .091(nd a w)-2.591 F .091
(arning is printed in this case.)-.1 F(Ne)5.091 E 2.591(wd)-.25 G .09
(e\214nitions can be added and the prede\214ned mappings can be)-2.591 F
2.232(replaced by calling the)108 465.6 R F3(defescape)4.733 E F0 2.233
(Scheme primiti)4.733 F 2.533 -.15(ve i)-.25 H 4.733(nt).15 G 2.233
(he user')-4.733 F 4.733(si)-.55 G 2.233
(nitialization \214le, in a user)-4.733 F(-supplied)-.2 E 1.048(Scheme \
\214le, in a document, or on a site-wide basis by modifying the \214le)
108 477.6 R F1(scm/html/common.scm)3.547 E F0 1.047(in the)3.547 F
(installation directory)108 489.6 Q(.)-.65 E 26.94(\\& nothing)148 506.4
R 31.39(\\- -)148 518.4 R 32.72(\\| nothing)148 530.4 R 31.39
(\\^ nothing)148 542.4 R 31.94(\\\\ \\)148 554.4 R 31.39(\\' ')148 566.4
R 31.39(\\` `)148 578.4 R 30.64(\\" rest)148 590.4 R
(of line as HTML comment tag)2.5 E 26.39(\\% nothing)148 602.4 R 29.92
(\\{ conditional)148 614.4 R(input be)2.5 E(gin)-.15 E 29.92
(\\} conditional)148 626.4 R(input end)2.5 E 29.72(\\* contents)148
638.4 R(of string)2.5 E 12.51(\\space space)148 650.4 R 29.72(\\0 space)
148 662.4 R 30.28(\\c nothing;)148 674.4 R(eats follo)2.5 E(wing ne)-.25
E(wline)-.25 E 30.28(\\e \\)148 686.4 R 30.83(\\s nothing)148 698.4 R
29.72(\\u nothing,)148 710.4 R(prints w)2.5 E(arning)-.1 E 29.72
(\\d nothing,)148 722.4 R(prints w)2.5 E(arning)-.1 E 203.72
(1995/08/23 2)283.22 768 R EP
%%Page: 3 3
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF(unrof)72 48 Q 349.36(f-html\(1\) unrof)-.25 F
(f-html\(1\))-.25 E 29.72(\\v nothing,)148 84 R(prints w)2.5 E(arning)
-.1 E 29.72(\\o its)148 96 R(ar)2.5 E(gument, prints w)-.18 E(arning)-.1
E 30.28(\\z its)148 108 R(ar)2.5 E(gument, prints w)-.18 E(arning)-.1 E
29.72(\\k sets)148 120 R(speci\214ed re)2.5 E(gister to zero)-.15 E
29.72(\\h appropriate)148 132 R(number of spaces for positi)2.5 E .3
-.15(ve a)-.25 H -.18(rg).15 G(ument).18 E 27.5(\\w length)148 144 R
(of ar)2.5 E(gument in units)-.18 E 31.94(\\l repeats)148 156 R
(speci\214ed character)2.5 E 2.5(,o)-.4 G 2.5(r<)-2.5 G(hr>)-2.5 E 29.72
(\\n contents)148 168 R(of number re)2.5 E(gister)-.15 E 31.39(\\f see)
148 180 R(description of fonts belo)2.5 E(w)-.25 E/F1 10/Times-Bold@0 SF
(SPECIAL CHARA)87 196.8 Q(CTERS)-.55 E F0(The follo)108 208.8 Q
(wing special characters are mapped to their equi)-.25 E -.25(va)-.25 G
(lent ISO-Latin 1 entities:).25 E 21.39
(\\\(12 \\\(14 \\\(34 \\\(*b \\\(*m)148 225.6 R 22.42(\\\(+- \\\(:A)
21.11 F 21.39(\\\(:O \\\(:U \\\(:a)148 237.6 R 23.61
(\\\(:o \\\(:u \\\(A:)26.67 F(\\\(Cs)23.89 E 21.39(\\\(O: \\\(Po)148
249.6 R 20.83(\\\(S1 \\\(S2 \\\(S3 \\\(U:)23.33 F(\\\(Y)23.89 E(e)-1 E
24.17(\\\(a: \\\(bb)148 261.6 R 21.95(\\\(cd \\\(co \\\(ct)23.89 F 21.95
(\\\(de \\\(di)26.67 F 23.06(\\\(es \\\(h)148 273.6 R 23.94(y\\)-.05 G
18.61(\(mu \\\(no)-23.94 F 23.61(\\\(o: \\\(r!)23.89 F(\\\(r?)27.23 E
(\\\(r)148 285.6 Q 25.74(g\\)-.18 G 23.06(\(sc \\\(ss)-25.74 F 20.83
(\\\(tm \\\(u:)26.11 F(Heuristics ha)108 302.4 Q .3 -.15(ve t)-.2 H 2.5
(ob).15 G 2.5(eu)-2.5 G(sed for the follo)-2.5 E
(wing special characters:)-.25 E 21.39(\\\(** *)148 319.2 R 22.42
(\\\(-> ->)148 331.2 R 22.42(\\\(<- <-)148 343.2 R 20.11(\\\(<= <=)148
355.2 R 20.11(\\\(== ==)148 367.2 R 20.11(\\\(>= >=)148 379.2 R 23.05
(\\\(Fi f)148 391.2 R<8c>-.25 E 23.05(\\\(Fl f)148 403.2 R<8d>-.25 E
22.51(\\\(aa ')148 415.2 R 21.95(\\\(ap ~)148 427.2 R 23.06(\\\(br |)148
439.2 R(\\\(b)148 451.2 Q -16.32 24.09(u+ \()-.2 H(prints a w)-24.09 E
(arning\))-.1 E(\\\(b)148 463.2 Q 24.04(v|)-.15 G 24.17(\\\(ci O)148
475.2 R 21.39(\\\(dd ***)148 487.2 R(\(prints a w)25 E(arning\))-.1 E
21.39(\\\(dg **)148 499.2 R(\(prints a w)30 E(arning\))-.1 E 19.17
(\\\(em --)148 511.2 R 21.95(\\\(en -)148 523.2 R 21.95(\\\(eq =)148
535.2 R(\\\(f)148 547.2 Q 27.48(ff)-.25 G(f)-27.73 E 25.83<5c288c208c>
148 559.2 R 25.83<5c288d208d>148 571.2 R 20.28(\\\(fm ')148 583.2 R
(\\\(g)148 595.2 Q 24.5(a`)-.05 G 23.61(\\\(lh <=)148 607.2 R 23.61
(\\\(lq `)148 619.2 R(`)-.74 E 20.83(\\\(mi -)148 631.2 R 23.06
(\\\(or |)148 643.2 R 23.61(\\\(pl +)148 655.2 R 23.06(\\\(rh =>)148
667.2 R 23.06(\\\(rq ')148 679.2 R(')-.74 E 23.06(\\\(ru _)148 691.2 R
24.72(\\\(sl /)148 703.2 R 22.5(\\\(sq o)148 715.2 R(\(prints a w)35 E
(arning\))-.1 E 23.61(\\\(ul _)148 727.2 R 203.72(1995/08/23 3)283.22
768 R EP
%%Page: 4 4
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF(unrof)72 48 Q 349.36(f-html\(1\) unrof)-.25 F
(f-html\(1\))-.25 E 22.42(\\\(~= ~)148 84 R 3.484(Aw)108 100.8 S .984
(arning is printed to standard error output for an)-3.584 F 3.484(ys)
-.15 G .984(pecial character not mentioned in this section.)-3.484 F -.8
(To)5.985 G(add ne)108 112.8 Q 2.5(wd)-.25 G
(e\214nitions, and to customize e)-2.5 E(xisting ones, the)-.15 E/F1 10
/Times-Italic@0 SF(defspecial)2.5 E F0(Scheme primiti)2.5 E .3 -.15
(ve c)-.25 H(an be used.).15 E/F2 10/Times-Bold@0 SF(NON-FILLED TEXT)87
129.6 Q F0(The)108 141.6 Q F2(.nf)2.756 E F0(and)2.756 E F2<2e8c>2.756 E
F0(trof)2.756 E 2.756(fr)-.25 G .256
(equests generate pairs of <pre> and </pre> tags.)-2.756 F .256
(Nested requests are treated correctly)5.256 F(,)-.65 E .524
(and currently acti)108 153.6 R .824 -.15(ve c)-.25 H .525
(haracter formatting elements such as <i> \(resulting from trof).15 F
3.025(ff)-.25 G .525(ont changes\) are tem-)-3.025 F .258
(porarily disabled while the <pre> or </pre> is emitted.)108 165.6 R
2.757(Aw)5.257 G .257
(arning is printed if a \231tab\232 character is encoun-)-2.857 F
(tered within \214lled te)108 177.6 Q(xt.)-.15 E F2(FONTS)87 194.4 Q F0
.272(The `\\f)108 206.4 R 2.772('e).55 G .272
(scape sequence and the requests)-2.772 F F2(.ft)2.772 E F0 .272
(\(change current font\) and)2.772 F F2(.fp)2.772 E F0 .273
(\(mount font at font position\) are)2.772 F .06
(supported in the usual w)108 218.4 R(ay)-.1 E 2.56(,b)-.65 G .059(oth \
with numeric font positions as well as font names and the special name \
`P')-2.56 F .202(to denote the pre)108 230.4 R .202(vious font.)-.25 F
.202(The font position of the currently acti)5.202 F .503 -.15(ve f)-.25
H .203(ont is a).15 F -.25(va)-.2 G .203(ilable through the read-only)
.25 F .281(number re)108 242.4 R .281(gister `.f)-.15 F 2.781
('. Initially).55 F 2.781(,t)-.65 G .28(he font `R' is mounted on font \
positions 1 and 4, font `I' on font position 2,)-2.781 F
(and font `B' on position 3.)108 254.4 Q 3.312 -.8(To m)108 271.2 T
1.712(ap trof).8 F 4.212(ff)-.25 G 1.712
(ont names to HTML character formatting elements, the)-4.212 F F1
(de\214ne-font)4.212 E F0 1.713(Scheme procedure is)4.212 F .772
(called with the name of a trof)108 283.2 R 3.272(ff)-.25 G .771
(ont to be used in documents, and HTML start and end tags to be emitted)
-3.272 F .019(when changing to this font, or when changing)108 295.2 R
F1(fr)2.519 E(om)-.45 E F0 .02(this font to another font, respecti)2.519
F -.15(ve)-.25 G(ly).15 E 5.02(.W)-.65 G .02(hether <tt> and)-5.02 F
.498(</tt> is generated inside non-\214lled \(pre-formatted\) te)108
307.2 R .497(xt for \214x)-.15 F .497
(ed-width fonts is controlled by the option)-.15 F F2(tt-)2.997 E(pr)108
319.2 Q(ef)-.18 E(ormat)-.25 E F0 5(.T)C(he follo)-5 E(wing calls to)
-.25 E F1(de\214ne-font)2.5 E F0(are e)2.5 E -.25(va)-.25 G
(luated on startup:).25 E/F3 9/Courier@0 SF 5.4(\(define-font "R")148
335 R 16.2("" ""\))16.2 F 5.4(\(define-font "I")148 346 R 5.4
('<i> '</i>\))16.2 F 5.4(\(define-font "B")148 357 R 5.4('<b> '</b>\))
16.2 F 5.4(\(define-font "C")148 368 R('<tt> '</tt>\))16.2 E 5.4
(\(define-font "CW" '<tt>)148 379 R('</tt>\))5.4 E 5.4
(\(define-font "CO" '<i> '</i>\))148 390 R 5.4(;k)21.6 G
(ludge for Courier-Oblique)-5.4 E F0 .185(Site administrators may add d\
e\214nitions here for fonts used at their site.)108 406.8 R .185
(Users can de\214ne mappings for ne)5.185 F(w)-.25 E(fonts by placing c\
orresponding de\214nitions in their documents or document-speci\214c Sc\
heme \214les.)108 418.8 Q F2 -.4(OT)87 435.6 S(HER TR).4 E(OFF REQ)-.3 E
(UESTS)-.1 E F0(The)108 447.6 Q F2(.br)2.5 E F0
(request generates a <br> tag.)2.5 E F2(.sp)108 464.4 Q F0 .587
(requires a positi)3.087 F .887 -.15(ve a)-.25 H -.18(rg).15 G .586
(ument and is mapped to the appropriate number of <p> tags \(or ne).18 F
.586(wline charac-)-.25 F .33(ters inside non-\214lled/pre-formatted te)
108 476.4 R 2.83(xt\). Lik)-.15 F -.25(ew)-.1 G .331(ise, the request)
.25 F F2(.ti)2.831 E F0 2.831(,w)C .331(hen called with a positi)-2.831
F .631 -.15(ve i)-.25 H .331(ndent, pro-).15 F(duces a <br> follo)108
488.4 Q(wed by the appropriate number of non-breakable spaces.)-.25 E
(The)108 505.2 Q F2(.tl)3.131 E F0 .631
(requests justs emits the title parts delimited by spaces.)3.131 F .63
(It is impossible to preserv)5.63 F 3.13(et)-.15 G .63(he meaning of)
-3.13 F(this request in HTML 2.0.)108 517.2 Q 2.344
(The horizontal line dra)108 534 R 2.344(wing escape sequence `\\l' jus\
t repeats the speci\214ed character \(or underline as)-.15 F(def)108 546
Q .404(ault\) to dra)-.1 F 2.904(wal)-.15 G 2.904(ine. If)-2.904 F .404
(the gi)2.904 F -.15(ve)-.25 G 2.904(nl).15 G .404(ength looks lik)
-2.904 F 2.904(ei)-.1 G 2.903(tc)-2.904 G .403
(ould be the line length \(that is, if it e)-2.903 F .403(xceeds a cer)
-.15 F(-)-.2 E(tain v)108 558 Q(alue\), a <hr> tag is produced instead.)
-.25 E(Example:)5 E(\\l'5c\\&-')148 574.8 Q(\\l'60')148 586.8 Q .302
(The \214rst of these tw)108 603.6 R 2.802(or)-.1 G .302(equests w)
-2.802 F .302
(ould produce a line of 20 dashes, while the second request w)-.1 F .303
(ould generate)-.1 F 3.873(a<)108 615.6 S 1.372(hr> tag \(the '\\&' is \
required because the dash could be interpreted as a continuation of the\
numeric)-3.873 F -.15(ex)108 627.6 S(pression\).).15 E .961
(Centering \()108 644.4 R F2(.ce)A F0 3.461(\)i)C 3.461(ss)-3.461 G .962
(imulated by producing a <br> at the end of each line, as this function\
ality is not sup-)-3.461 F(ported by HTML 2.0.)108 656.4 Q .613
(The follo)108 673.2 R .613(wing requests are silently ignored; as the \
corresponding functions cannot be e)-.25 F .612(xpressed in HTML)-.15 F
(2.0 or are controlled by the client.)108 685.2 Q
(Ignoring these requests most lik)5 E(ely does no harm.)-.1 E 25.56
(.ad .bp)148 702 R 25.56(.ch .\215)27.5 F 22.78(.hw .h)31.94 F 27.55(y.)
-.05 G(lg)-27.55 E 25.56(.na .ne .nh)148 714 R 26.11(.ns .pl)27.5 F
26.11(.ps .rs)29.72 F 26.11(.vs .wh)148 726 R 203.72(1995/08/23 4)283.22
768 R EP
%%Page: 5 5
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF(unrof)72 48 Q 349.36(f-html\(1\) unrof)-.25 F
(f-html\(1\))-.25 E .016(All trof)108 84 R 2.516(fr)-.25 G .016
(equests not mentioned in this section by def)-2.516 F .016
(ault cause a w)-.1 F .016(arning message to be printed to standard)-.1
F(error output, e)108 96 Q(xcept for these basic requests which ha)-.15
E .3 -.15(ve t)-.2 H(heir usual semantics:).15 E 22.78(.am .as)148 112.8
R 25.56(.de .ds)29.17 F 26.12(.ec .el)28.61 F(.ie)30.28 E 28.89(.if .ig)
148 124.8 R 26.67(.nr .rm)29.72 F 28.34(.rr .so)26.39 F(.tm)28.61 E(The)
108 141.6 Q/F1 10/Times-Italic@0 SF(defr)3.155 E(equest)-.37 E F0 .655
(Scheme primiti)3.155 F .955 -.15(ve i)-.25 H 3.155(su).15 G .654
(sed to associate an e)-3.155 F -.15(ve)-.25 G .654
(nt handling procedure with a request as docu-).15 F
(mented in the Programmer')108 153.6 Q 2.5(sM)-.55 G(anual.)-2.5 E/F2 10
/Times-Bold@0 SF(END OF SENTENCE)87 170.4 Q F0 .471(The sequence \231<t\
t>space</tt>\232 is produced at the end of each sentence to pro)108
182.4 R .472(vide additional space, e)-.15 F(xcept)-.15 E 1.597
(inside non-\214lled te)108 194.4 R 4.097(xt. A)-.15 F 1.596
(sentence is de\214ned a sequence of characters follo)4.097 F 1.596
(wed by a period, a question)-.25 F .83(mark, or an e)108 206.4 R .83
(xclamation mark, follo)-.15 F .83(wed by a ne)-.25 F 3.33(wline. The)
-.25 F .83(usual con)3.33 F -.15(ve)-.4 G .83
(ntion to suppress end-of-sentence).15 F .234(recognition by adding the\
escape sequence `\\&' is correctly implemented by)108 218.4 R F1(unr)
2.733 E(of)-.45 E(f)-.18 E F0 5.233(.T)1.96 G 2.733(oc)-6.033 G .233
(hange the end-of-)-2.733 F .891(sentence function, the)108 230.4 R F1
(sentence-e)3.391 E(vent)-.15 E F0 .891
(can be rede\214ned from within Scheme code as described in the Pro-)
3.391 F(grammer')108 242.4 Q 2.5(sM)-.55 G(anual.)-2.5 E F2
(SCALE INDICA)87 259.2 Q -.18(TO)-.95 G(RS).18 E F0 .023
(As the notions of v)108 271.2 R .023
(ertical spacing, character width, de)-.15 F .023
(vice resolution, etc. do not e)-.25 F .023(xist in HTML, the scaling)
-.15 F .345(for the usual trof)108 283.2 R 2.846(fs)-.25 G .346(cale in\
dicators is de\214ned once on startup and then remains constant.)-2.846
F -.15(Fo)5.346 G 2.846(rs).15 G(implicity)-2.846 E 2.846(,t)-.65 G(he)
-2.846 E(scaling usually emplo)108 295.2 Q(yed by)-.1 E F2(nr)2.5 E(off)
-.18 E F0(\(1\) is tak)A(en.)-.1 E F2(EQ)87 312 Q -.6(UA)-.1 G(TIONS, T)
-.35 E(ABLES, PICTURES)-.9 E F0 1.118(Interpretation of embedded eqn, t\
bl, and pic preprocessor input is controlled by the options)108 324 R F2
(handle-eqn)3.617 E F0(,)A F2(handle-tbl)108 336 Q F0 3.895(,a)C(nd)
-3.895 E F2(handle-pic)3.895 E F0 1.395(\(see OPTIONS abo)3.895 F -.15
(ve)-.15 G 3.895(\). These).15 F 1.395(options af)3.895 F 1.395
(fect the input lines from a starting)-.25 F F2(.EQ)108 348 Q F0(,)A F2
(.TS)3.41 E F0 3.41(,o)C(r)-3.41 E F2(.PS)3.41 E F0 .91
(request up to and including the matching)3.41 F F2(.EN)3.41 E F0(,)A F2
(.TE)3.41 E F0 3.41(,o)C(r)-3.41 E F2(.PE)3.41 E F0 .91
(request, as well as te)3.41 F .91(xt sur)-.15 F(-)-.2 E .384
(rounded by the current eqn inline equation delimiters.)108 360 R .384
(Each of the options can ha)5.384 F .684 -.15(ve o)-.2 H .384
(ne the follo).15 F .385(wing v)-.25 F(al-)-.25 E(ues:)108 372 Q F2
(copy)108 388.8 Q F0 1.146(The preprocessor input \(including the enclo\
sing requests\) is placed inside <pre> and </pre>.)16 F(If)6.146 E .371
(assigned to the option)144 400.8 R F2(handle-eqn)2.871 E F0 2.871(,i)C
.372(nline equations are rendered in the font currently mounted on)
-2.871 F(font position 2.)144 412.8 Q F2(text)108 429.6 Q F0 .641
(The input is sent to the respecti)19.9 F .941 -.15(ve p)-.25 H .641
(reprocessor \(as speci\214ed by the options).15 F F2(eqn)3.14 E F0(,)A
F2(tbl)3.14 E F0 3.14(,o)C(r)-3.14 E F2(pic)3.14 E F0 .64(\), and)B
1.342
(its result is piped to the shell command referred to by the option)144
441.6 R F2(tr)3.842 E(off-to-text)-.18 E F0 3.842(,w)C 1.342
(hich typically)-3.842 F(in)144 453.6 Q -.2(vo)-.4 G(lv).2 E .979
(es a call to)-.15 F F2(nr)3.478 E(off)-.18 E F0 .978(\(1\) or an equi)B
-.25(va)-.25 G .978(lent command.).25 F .978(As with \231cop)5.978 F
.978(y\232, the result is then placed)-.1 F
(inside <pre> and </pre>, unless the source is an inline equation.)144
465.6 Q 1.44(The v)144 482.4 R 1.44(alue of)-.25 F F2(tr)3.94 E
(off-to-text)-.18 E F0 1.441(is \214ltered through a call to the)3.94 F
F1(substitute)3.941 E F0 1.441(Scheme primiti)3.941 F 1.741 -.15(ve w)
-.25 H 1.441(ith the).15 F .808(name of an output \214le as its ar)144
494.4 R .807
(gument; this \214le name can be referenced from within the option')-.18
F(s)-.55 E -.25(va)144 506.4 S .253
(lue by the substitute speci\214er \231%1%\232 \(see the Programmer').25
F 2.753(sM)-.55 G .253(anual for a description of)-2.753 F F1(substi-)
2.753 E(tute)144 518.4 Q F0(and a list of substitute speci\214ers\).)2.5
E(Here is a typical v)5 E(alue for the)-.25 E F2(tr)2.5 E(off-to-text)
-.18 E F0(option:)2.5 E F2("gr)144 536.4 Q(off \255T)-.18 E
(ascii | col \255b | sed '/^[ \\t]*$/d' > %1%")-.92 E(gif)108 559.2 Q F0
1.171(Input lines are preprocessed as described under \231te)24.89 F
1.17(xt\232, and the result is piped to the shell com-)-.15 F .006
(mand named by the option)144 571.2 R F2(tr)2.506 E(off-to-gif)-.18 E F0
5.006(.T)C .007(he latter is subject to a call to)-5.006 F F1
(substitute)2.507 E F0 .007(with the name of)2.507 F 3.052(at)144 583.2
S .552(emporary \214le \(which may be used to store intermediate PostSc\
ript output\) and the name of the)-3.052 F 2.535
(output \214le where the resulting GIF image must be stored.)144 595.2 R
2.535(The entire preprocessor input is)7.535 F 1.609(replaced by an <im\
g> element with a reference to the GIF \214le and a suitable \231alt=\
\232 attrib)144 607.2 R(ute.)-.2 E(Unless processing an inline equation\
, the <img> element is surrounded by <p> tags.)144 619.2 Q .742(The nam\
es of the \214les containing the GIF images are generated from the v)144
636 R .743(alue of the)-.25 F F2(document)3.243 E F0 .268
(option, a sequence number)144 648 R 2.767(,a)-.4 G .267(nd the suf)
-2.767 F .267(\214x \231.gif\232.)-.25 F .267(Therefore, the)5.267 F F2
(document)2.767 E F0 .267(option must ha)2.767 F .567 -.15(ve b)-.2 H
(een).15 E 1.558(set when using the \231gif\232 method, otherwise a w)
144 660 R 1.559(arning is printed and the preprocessor input is)-.1 F
(skipped.)144 672 Q .795(In an)108 688.8 R 3.295(yc)-.15 G .795(ase, th\
e output of a call to eqn is ignored if the input consists of calls to \
\231delim\232 or \231de\214ne\232 and)-3.295 F 1.037(empty lines e)108
700.8 R(xclusi)-.15 E -.15(ve)-.25 G(ly).15 E 6.037(.W)-.65 G 1.037
(hen processing eqn input, calls to \231delim\232 are intercepted by)
-6.037 F F1(unr)3.538 E(of)-.45 E(f)-.18 E F0 1.038(to record)3.538 F
(changes of the inline equation delimiters.)108 712.8 Q 203.72
(1995/08/23 5)283.22 768 R EP
%%Page: 6 6
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF(unrof)72 48 Q 349.36(f-html\(1\) unrof)-.25 F
(f-html\(1\))-.25 E/F1 10/Times-Bold@0 SF(HYPER)87 84 Q(TEXT LINKS)-.4 E
F0 .745(The f)108 96 R .745(acilities for embedding arbitrary h)-.1 F
(yperte)-.05 E .745(xt links in trof)-.15 F 3.245(fd)-.25 G .744
(ocuments are still e)-3.245 F .744(xperimental in this v)-.15 F(er)-.15
E(-)-.2 E 2.343(sion of)108 108 R/F2 10/Times-Italic@0 SF(unr)4.843 E
(of)-.45 E(f)-.18 E F0 2.344(and thus are lik)4.844 F 2.344
(ely to change in future releases.)-.1 F 3.944 -.8(To u)7.344 H 2.344
(se them, mention the \214le name).8 F<9968>108 120 Q(yper)-.05 E .039
(.scm\232 in the command line before an)-.55 F 2.539(yt)-.15 G(rof)
-2.539 E 2.539(fs)-.25 G .039(ource \214les.)-2.539 F .039(At the be)
5.039 F .039(ginning of the \214rst trof)-.15 F 2.538<668c>-.25 G .038
(le, source)-2.538 F(the \214le \231tmac.h)108 132 Q
(yper\232 from the directory \231doc\232 lik)-.05 E 2.5(et)-.1 G(his:)
-2.5 E(.if !\\n\(.U .so tmac.h)148 148.8 Q(yper)-.05 E(The request)108
165.6 Q F1(.Hr)2.5 E F0(can then be used to create a h)2.5 E(yperte)-.05
E(xt link.)-.15 E(Its usage is:)5 E 2.5(.Hr -url)148 182.4 R 7.5
(URL anchor)17.5 F(-te)-.2 E 2.5(xt [suf)-.15 F(\214x])-.25 E 2.5
(.Hr -symbolic label anchor)148 194.4 R(-te)-.2 E 2.5(xt [suf)-.15 F
(\214x])-.25 E 2.5(.Hr trof)148 206.4 R(f-te)-.25 E(xt)-.15 E 1.052
(The \214rst tw)108 223.2 R 3.552(of)-.1 G 1.052(orms are recognized by)
-3.552 F F2(unr)3.552 E(of)-.45 E(f)-.18 E F0 1.052
(and the third form is recognized by trof)3.552 F 3.552(f. The)-.25 F
1.053(\214rst form is)3.552 F .337(used for links pointing to e)108
235.2 R .337(xternal resources, and the second one is used for forw)-.15
F .336(ard or backw)-.1 F .336(ard links ref-)-.1 F .022
(erencing anchors de\214ned in a \214le belonging to the same document.)
108 247.2 R .023(An anchor is placed in the document by)5.022 F
(calling the request)108 259.2 Q F1(.Ha)2.5 E F0(:)A(.Ha label anchor)
148 276 Q(-te)-.2 E(xt)-.15 E 1.059(The label speci\214ed in a call to)
108 292.8 R F1(.Ha)3.559 E F0 1.059(can then be used in calls to)3.559 F
F1 1.059(.Hr -symbolic)3.559 F F0 6.059(.A)C 1.059
(ll symbolic references)-6.059 F .185(must ha)108 304.8 R .485 -.15
(ve b)-.2 H .185(een resolv).15 F .185(ed at the end of the document.)
-.15 F .186(The \231anchor)5.186 F(-te)-.2 E .186
(xt\232 is placed between the tags <a> and)-.15 F .772(</a>; \231suf)108
316.8 R .772(\214x\232 is appended to the closing </a> if present.)-.25
F(\231trof)5.772 E(f-te)-.25 E .771
(xt\232 is just formatted in the normal w)-.15 F(ay)-.1 E(.)-.65 E
(Quotes must be used if an)108 328.8 Q 2.5(yo)-.15 G 2.5(ft)-2.5 G
(he ar)-2.5 E(guments contains spaces.)-.18 E 1.76(Use of the h)108
345.6 R(yperte)-.05 E 1.76(xt f)-.15 F 1.761
(acilities is demonstrated by the trof)-.1 F 4.261(fs)-.25 G 1.761
(ource of the Programmer')-4.261 F 4.261(sM)-.55 G 1.761(anual that is)
-4.261 F(included in the)108 357.6 Q F2(unr)2.5 E(of)-.45 E(f)-.18 E F0
(distrib)2.5 E(ution.)-.2 E/F3 9/Times-Bold@0 SF(SCHEME PR)72 374.4 Q
(OCEDURES)-.27 E F0 .73(The follo)108 386.4 R .73
(wing Scheme procedures, macros, and v)-.25 F .729
(ariables are de\214ned by the HTML 2.0 back-end and can)-.25 F
(be used from within user)108 398.4 Q(-supplied Scheme code:)-.2 E(\()
108 415.2 Q F2(de\214ne-font name start-ta)A 2.5(ge)-.1 G(nd-ta)-2.5 E
(g)-.1 E F0(\))A .994
(Associates a HTML start tag and end tag \(symbols\) with a trof)144
427.2 R 3.495(ff)-.25 G .995(ont name \(string\) as e)-3.495 F(xplained)
-.15 E(under FONTS abo)144 439.2 Q -.15(ve)-.15 G 5(.T).15 G
(he font name can then be used in)-5 E F1(.fp)2.5 E F0(,)A F1(.ft)2.5 E
F0 2.5(,a)C(nd `\\f)-2.5 E 2.5('r).55 G(equests.)-2.5 E(\()108 456 Q F2
-.37(re)C(set-font).37 E F0(\))A(Resets both the current and pre)144 468
Q(vious font to the font mounted on position 1.)-.25 E F2(curr)108 484.8
Q(ent-font)-.37 E(pr)108 501.6 Q -.15(ev)-.37 G(ious-font).15 E F0
(These v)144 513.6 Q(ariables hold the current and pre)-.25 E
(vious font as \(inte)-.25 E(ger\) font positions.)-.15 E(\()108 530.4 Q
F2(with-font-pr)A(eserved)-.37 E F0(.)2.5 E F2(body)2.5 E F0(\))A .95
(This macro can be used to temporarily change to font \231R\232, e)144
542.4 R -.25(va)-.25 G(luate).25 E F2(body)3.45 E F0 3.45(,a)C .95
(nd re)-3.45 F -.15(ve)-.25 G .95(rt to the font).15 F 1.188
(that has been acti)144 554.4 R 1.488 -.15(ve w)-.25 H 1.188
(hen the form w).15 F 1.188(as entered.)-.1 F 1.188
(The macro returns a string that can be output)6.188 F
(using the primiti)144 566.4 Q -.15(ve)-.25 G F2(emit)2.65 E F0
(or returned from an e)2.5 E -.15(ve)-.25 G(nt procedure.).15 E(\()108
583.2 Q F2(pr)A(eform enable?)-.37 E F0(\))A(If the ar)144 595.2 Q
(gument is #t, pre-formatted te)-.18 E
(xt is enabled, otherwise disabled.)-.15 E F2(pr)108 612 Q(eform?)-.37 E
F0(This boolean v)144 624 Q(ariable holds #t if pre-formatted te)-.25 E
(xt is enabled, #f otherwise.)-.15 E(\()108 640.8 Q F2(with-pr)A
(eform-pr)-.37 E(eserved)-.37 E F0(.)2.5 E F2(body)2.5 E F0(\))A 3.635
(Am)144 652.8 S 1.135
(acro that can be used to temporarily disable pre-formatted te)-3.635 F
1.134(xt, e)-.15 F -.25(va)-.25 G(luate).25 E F2(body)3.634 E F0 3.634
(,a)C 1.134(nd then re-)-3.634 F 1.003(enable it if appropriate.)144
664.8 R 1.003(The macro e)6.003 F 1.003
(xpands to a string that must be output or returned from an)-.15 F -2.15
-.25(ev e)144 676.8 T(nt procedure.).25 E(\()108 693.6 Q F2(par)A
(se-unquote string)-.1 E F0(\))A -.7(Te)144 705.6 S 2.021(mporarily est\
ablishes an output translation to map the quote character to \231&quot;\
\232, applies).7 F F2(par)144 717.6 Q(se)-.1 E F0(\(e)2.5 E
(xplained in the Programmer')-.15 E 2.5(sM)-.55 G(anual\) to its ar)-2.5
E(gument, and returns the result.)-.18 E 203.72(1995/08/23 6)283.22 768
R EP
%%Page: 7 7
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF(unrof)72 48 Q 349.36(f-html\(1\) unrof)-.25 F
(f-html\(1\))-.25 E(\()108 84 Q/F1 10/Times-Italic@0 SF(center n)A F0
(\))A 1.079(Centers the ne)144 96 R(xt)-.15 E F1(n)3.579 E F0 1.079
(input lines \(see description of)3.579 F/F2 10/Times-Bold@0 SF(.ce)
3.579 E F0 1.08(under TR)3.579 F 1.08(OFF REQ)-.4 F 1.08(UESTS abo)-.1 F
-.15(ve)-.15 G 3.58(\). If).15 F F1(n)3.58 E F0(is)3.58 E
(zero, centering is stopped.)144 108 Q F1(nbsp)108 124.8 Q F0 2.5(AS)
17.11 G(cheme v)-2.5 E(ariable that holds a string interpreted as a non\
-breaking space by HTML clients.)-.25 E/F3 9/Times-Bold@0 SF(SEE ALSO)72
141.6 Q F2(unr)108 153.6 Q(off)-.18 E F0(\(1\),)A F2(unr)2.5 E
(off-html-man)-.18 E F0(\(1\),)A F2(unr)2.5 E(off-html-ms)-.18 E F0
(\(1\);)A F2(tr)108 165.6 Q(off)-.18 E F0(\(1\),)A F2(nr)2.5 E(off)-.18
E F0(\(1\),)A F2(gr)2.5 E(off)-.18 E F0(\(1\),)A F2(eqn)2.5 E F0(\(1\),)
A F2(tbl)2.5 E F0(\(1\),)A F2(pic)2.5 E F0(\(1\).)A(Unrof)108 182.4 Q
2.5(fP)-.25 G(rogrammer')-2.5 E 2.5(sM)-.55 G(anual.)-2.5 E(http://www)
108 199.2 Q(.informatik.uni-bremen.de/~net/unrof)-.65 E(f)-.25 E 1.998
(Berners-Lee, Connolly)108 216 R 4.498(,e)-.65 G 4.498(ta)-4.498 G 1.998
(l., HyperT)-4.498 F -.15(ex)-.7 G 4.498(tM).15 G 1.998
(arkup Language Speci\214cation\2122.0, Internet Draft, Internet)-4.498
F(Engineering T)108 228 Q(ask F)-.8 E(orce.)-.15 E F3 -.09(BU)72 244.8 S
(GS).09 E F0 .559(The `\\space' escape sequence should be mapped to the\
&#160; entity \(non-breaking space\), b)108 256.8 R .56(ut this entity)
-.2 F(is not supported by a number of HTML clients.)108 268.8 Q
(Only the font positions 1 to 9 can currently be used.)108 285.6 Q
(There should be no limit.)5 E(The e)108 302.4 Q
(xtra space generated for end of sentence should be con\214gurable.)-.15
E(Underlining should be supported.)108 319.2 Q 203.72(1995/08/23 7)
283.22 768 R EP
%%Trailer
end
%%EOF

682
www/doc/unroff.1 Normal file
View File

@ -0,0 +1,682 @@
.\" $Revision: 1.16 $
.ds Ve 1.0
.\"
.de Ex
.RS
.nf
.nr sf \\n(.f
.if !\\n(.U \{\
. ft B
. if n .sp
. if t .sp .5 \}
..
.de Ee
.if !\\n(.U \{\
. ft \\n(sf
. if n .sp
. if t .sp .5 \}
.fi
.RE
..
.\"
.de Sd
.ds Dt \\$2
..
.\"
.Sd $Date: 1995/08/23 12:07:31 $
.TH unroff 1 "\*(Dt"
.SH NAME
unroff \- programmable, extensible troff translator
.SH SYNOPSIS
.B unroff
[
.BI \-f format
] [
.BI \-m package
] [
.BI \-h heapsize
] [
.B \-C
]
.if n .ti +0.5i
[
.B \-t
] [
.IR file " | " option...\&
]
.SH OVERVIEW
.I unroff
reads and parses documents with embedded troff markup
and translates them to a different format\(emtypically
to a different markup language such as SGML.
The actual output format is not hard-wired into
.IR unroff ;
instead, the translation is performed by a set of user-supplied rules
and functions written in the
.I Scheme
programming language.
.I unroff
employs the Extension Language Kit
.I Elk
to achieve programmability based on the Scheme language:
a fully-functional Scheme interpreter is embedded in the translator.
.LP
The documents that can be processed by
.I unroff
are not restricted to a specific troff macro set.
Translation rules for a new macro package can be added by supplying
a set of corresponding Scheme procedures (a \*(lqback-end\*(rq).
Predefined sets of such procedures exist for a number of combinations
of target language and troff macro package:
.I unroff
\*(Ve supports translation to the \*(lqHypertext Markup Language\*(rq
(HTML) version 2.0 for the
.B \-man
and
.B \-ms
macro packages as well as \*(lqbare\*(rq troff (see
.BR unroff-html (1),
.BR unroff-html-man (1),
and
.BR unroff-html-ms (1)
for a description).
.LP
Unlike conventional troff conversion tools,
.I unroff
includes a full troff parser and can therefore handle user-defined
macros, strings, and number registers, nested if-else requests
(with text blocks enclosed by `\e{' and `\e}' escape sequences), arbitrary
fonts and font positions, troff \*(lqcopy mode\*(rq, low-level formatting
requests such as `\el' and '\eh', and the subtle
differences between request and macro invocations that are inherent
in the troff processing model.
.I unroff
has adopted a number of troff extensions introduced by
.IR groff ,
among them long names for macros, strings, number registers, and
special characters, and the `\e$@' and `\e$*' escape sequences.
.LP
.I unroff
interprets its input stream as a sequence of \*(lqevents\*(rq.
Events include the invocation of a troff request or macro, the use of a
troff escape sequence or special character, a troff string
or number register reference, end of sentence, start
of a new input file, and so on.
For each event encountered
.I unroff
invokes a Scheme procedure associated with that event.
Some types of events require a procedure that returns a string (or an
object that can be coerced into a string),
which is then interpolated into the input or output stream;
for other types of events, the event procedures are just called
for their side-effects.
.LP
The set of Scheme procedures to be used by
.I unroff
is determined by the output format and the name of the troff
macro package.
In addition, users can supply event procedures for their own macro
definitions (or replace existing ones) in form of a simple Scheme
program passed to
.I unroff
along with the troff input files; Scheme code can even be directly
embedded in the troff input as described below.
.LP
The full capabilities of
.IR unroff
and the Scheme primitives required to write extensions or support
for new output formats are described in the
.IR "Unroff Programmer's Manual" .
.SH "GENERIC OPTIONS"
.TP
.BI \-f format
Specifies the output format into which the troff input files are
translated.
If no
.B \-f
option is given, a default output format is used (for
.I unroff
version \*(Ve the default is
.B \-f\c
.IR html ).
This default can be overridden by setting the
.SB UNROFF_FORMAT
environment variable.
.TP
.BI \-m name
Specifies the name of the macro package that would be used by ordinary
troff to typeset the document.
In contrast to troff
.I unroff
does not actually load the macro package.
Instead, the specified name\-in combination with the specified output
format\-selects a set of Scheme files providing the procedure definitions
that control the translation process (see
.B FILES
below).
Therefore a corresponding
.B tmac
file need not exist for a given
.B \-m
option.
.TP
.BI \-h heapsize
This option can be used to specify a non-standard heap size (in Kbytes)
for the Scheme interpreter included in
.IR unroff ;
see
.BR elk (1).
.TP
.B \-C
Enables troff compatibility mode.
In compatibility mode certain
.I groff
extensions such as long names are not recognized.
.TP
.B \-t
Enables test mode.
Instead of processing troff input files,
.I unroff
enters an interactive Scheme top-level.
This can be useful to interactively experiment with the Scheme
primitives defined by
.I unroff
or to test or debug user-defined Scheme procedures.
.SH "KEYWORD/VALUE OPTIONS"
In addition to the generic options, a set of output-format-specific
options can be set from the command line and from within troff and
Scheme input files.
When specified on the command line, these options have the form
.Ex
\f2option\fP=\f2value\fP
.Ee
where the format of
.I value
depends on the
.I type
of the option.
For example, most output formats defines an option
.B document
whose value is used as a prefix for all output files created during
the translation.
The option is assigned a value by specifying a token such as
.Ex
document=thesis
.Ee
on the command line.
This option's value is interpreted as a plain string, i.\|e.\&
its type is
.BR string .
.LP
The Scheme back-ends and user-supplied extensions can define their
own option types, but at least the following types are recognized:
.TP 10n
.B integer
the option value is composed of an optional sign and an (arbitrary)
string of digits
.TP 10n
.B boolean
the option value must either be the character 1 (true) or the
character 0 (false)
.TP 10n
.B character
a single character must be specified as the option value
.TP 10n
.B string
an arbitrary string of characters can be specified
.TP 10n
.B dynstring
\*(lqdynamic string\*(rq; the option value is either
.RS
.TP
.I string
to assign a string to the option in the normal way, or
.TP
.BI + string
to append the characters after the plus sign
to the option's current value, or
.TP
.BI \- string
to remove the characters after the minus sign from the
option's current value.
.RE
.LP
These extension-specific options must appear after the generic
.I unroff
options and may be mixed with the file name arguments.
As the option assignments and specified input files are processed in
order, the value given for an option is in effect for all the input
files that appear on the command line to the right of the option.
.LP
The exact set of keyword/value options is determined by the
Scheme code loaded for a given combination of output format
and macro package name and is described in the corresponding
manuals.
The following few options can always be set, regardless of the
actual output format:
.TP
.BR include-files " (boolean)"
If true,
.B .so
requests are executed by
.I unroff
in the normal way (that is, the named input file is read and
parsed), otherwise
.B .so
requests are ignored.
The default value is 1.
.TP
.BR if-true " (dynstring)"
the specified characters are assigned to (appended to, removed from)
the set of one-character conditions that are regarded as true
by the
.B .if
and
.B .ie
requests.
The default value is "to".
.TP
.BR if-false " (dynstring)"
like
.BR if-true ;
specifies the one-character conditions regarded as false.
The default value is "ne".
.SH FILES
.SS "INPUT FILES"
On startup,
.I unroff
loads the Scheme source files that control the translation process.
All these files are loaded from subdirectories of a site-specific
\*(lqlibrary directory\*(rq, typically something like
.BR /usr/local/lib/unroff .
The directory is usually chosen by the system administrator when
installing the software and can be overridden by setting the
.SB UNROFF_DIR
environment variable.
The path names mentioned in the following are relative to this
library directory.
.LP
The first Scheme file loaded is
.B scm/troff.scm
which contains basic definitions such as the built-in options
and option types, implementations for troff requests that are
not output-format specific, and utility functions to be used
by the back-ends or by user-supplied extensions.
Next, the file
.BI scm/ format /common.scm
is loaded, where
.I format
is the value of the option
.B \-f
as given on the command line (or its default value).
The file implements the translation of the basic troff
requests, escape sequences, and special characters, etc.
The code dealing with macro invocations is loaded from
.BI scm/ format / package .scm
where
.I package
is the value of the option
.B \-m
with the letter `m' prepended.
.LP
Finally, the file
.B .unroff
is loaded from the caller's home directory if present.
Arbitrary Scheme code can be placed in this initialization file.
It is typically used to assign values to package-specific
keyword/value options according to the user's preferences
(by means of the
.I set-option!
Scheme primitive as explained in the Programmer's Manual).
.LP
When the initial files have been loaded, any troff input files specified
in the command line are read and parsed.
The special file name
.RB ` \- '
can be used to indicate standard input (usually in combination with
ordinary file names).
If no file name is given,
.I unroff
reads from standard input.
.LP
In addition to troff input files, file containing Scheme code can
be mentioned in the command line.
Scheme files (which by convention end in
.BR .scm )
are loaded into the Scheme interpreter and usually contain
used-defined Scheme procedures to translate specific macros or
to replace existing procedures, or other user-supplied extensions
of any kind.
Scheme files named in the command line (or loaded explicitly from
within other files) are resolved against the directory
.B scm/misc/
which may hold site-specific extensions or other supplementary
packages.
troff files and Scheme files can be mixed freely in the command line.
.SS "OUTPUT FILES"
Whether
.I unroff
sends its output to standard output or produces one or more output
files is not hard-wired but determined by the combination of output
format and macro package.
Generally, if no troff input files are specified, output is directed
to standard output, but this rule is not mandatory and may
be overridden by specific back-ends.
The
.B document
option is usually honored, although other rules may be employed to
determine the names of output files (for example, the extension
that implements
.B \-man
for a given output format may derive the name of the output file
for a manual page from the input file name; see
.BR unroff-html-man (1)).
.LP
If
.I unroff
is interrupted or quits early, any output files produced so far may be
incomplete or may contain wrong or inconsistent data, because
several passes may be required to complete an output file (for example,
to resolve cross references between a set of files), or because
an output file is not necessarily produced as a whole, but
.I unroff
may work on several files simultaneously.
.SH EXAMPLES
.LP
To translate a troff document composed of two files and written with the
\*(lqms\*(rq macro package to HTML 2.0,
.I unroff
might be called like this:
.Ex
unroff \-fhtml \-ms doc.tr doc.tr
.Ee
Two options specific to the combination of
.B \-fhtml
and
.B \-ms
might be added to specify a prefix for output files and to have
the resulting output split into separate files after each section
(see
.BR unroff-html-ms (1)):
.Ex
unroff \-fhtml \-ms document=out/ split=1 doc.tr doc.tr
.Ee
Additional features may be loaded from Scheme files specified in the
command line, e.\|g.\&
.B hyper.scm
which implements general Hypertext requests (and gets loaded from
.BR scm/misc/ )
and a user-supplied file in the current directory providing translation
rules for user-defined troff macros:
.Ex
.ne 2
unroff \-fhtml \-ms document=out/ split=1 hyper.scm doc.scm\e
doc.tr doc.tr
.Ee
.SH "TROFF SUPPORT AND EXTENSIONS"
As
.I unroff
translates troff input into another language rather than typesetting
the text in the usual way, its processing model necessarily differs
from that of conventional troff.
For a detailed description refer to the Programmer's Manual.
.LP
In brief,
.I unroff
copies characters from input to output, optionally performing
target-language-specific character translations.
For each request or macro invocation, string or number register
reference, special character, escape sequence, sentence end, or
.BR eqn (1)
inline equation encountered in the input stream,
.I unroff
checks whether an \*(lqevent value\*(rq has been specified by
the Scheme code (user-supplied or part of the back-end).
An event value is either a plain string, which is then treated as
if it had been part of the input stream, or a Scheme procedure,
which is then invoked and must in turn return a string.
The Scheme procedures are passed arguments, e.\|g. the macro
or request arguments in case of a procedure attached to a macro
or request, or an escape sequence argument for functions such as
`\ef' or `\ew'.
.LP
If no event value has been associated with a particular macro,
string, or number register,
.I unroff
checks whether a definition has been supplied in the normal way,
i.\|e. by means of
.BR .de ,
.BR .ds ,
or
.BR .nr .
In this case, the value of the macro, string, or register is
interpolated as done by ordinary troff.
If no definition can be found, a fallback definition is looked up
as a last resort; and if everything fails, a warning is printed
and the event is ignored.
Similarly, event procedures are invoked at end of input line,
when an input file is opened or closed, at program start and
termination, and for each option specified in the command line;
but these procedures are called solely for their side-effects
(i.\|e. the return values are ignored).
.LP
Most Scheme procedures just emit the target language's representation
of the event with which they are associated.
Other procedures perform various kinds of bookkeeping; the procedure
associated with the
.B .de
request, for example, puts the text following
aside for later expansion, and the event procedures attached to
the requests
.B .ds
and
.B .nr
and to the escape sequences `\e*' and `\en'
implement troff strings and number registers.
This way, even basic troff functions need not be hard-wired and can
be altered or replaced freely without recompiling
.IR unroff .
.LP
The rule that an event value associated with a macro has precedence
over the actual macro definition accommodates higher-level,
structure-oriented target languages (such as SGML).
While the micro-formatting contained in a typical
.B \-ms
macro definition, for example, makes sense to an ordinary typesetting
program, it is usually impossible to infer the macro's
.I structural
function from it (new paragraph, quotation, etc.).
On the other hand, troff documents often define a few additional,
simple macros that just serve as an abbreviation for a sequence
of predefined macros; in this case event procedures need not
specified, as
.I unroff
will then perform normal macro expansion.
.LP
.I unroff
usually takes care to not rescan the characters returned by event
procedures as if their results had been normal input, because
most event procedures already return code in the target language rather
than troff input that can be rescanned.
This, however, cannot always be avoided; for example, if a troff string
reference occurs at macro definition time (because `\e*' is used rather
than `\e\e*'), the string value ends up in the macro body and will still
be rescanned when the macro is invoked.
A few other pitfalls caused by differences in the processing models of
troff and
.I unroff
are listed in the BUGS section below.
.LP
The scaling performed for the usual troff scale indicators
can be manipulated by a calling a Scheme primitive from within
the Scheme code implementing a particular back-end.
.SS "NEW TROFF REQUESTS"
To aid transparent output of code in the target language and
evaluation of inline Scheme code,
.I unroff
supports two new requests and two extensions to the
.B .ig
(ignore input lines) troff request.
.LP
If
.B .ig
is called with the symbol
.B >>
as its first argument, all input lines up to (but not including)
the terminating
.B .>>
are sent to the current output file.
Example:
when translating to the Hypertext Markup Language, the construct
could be used to emit literal HTML code like this:
.Ex
.ne 6
\&.ig >>
<address>
Bart Simpson<br>
Springfield
</address>
\&.>>
.Ee
.LP
To produce a single line of output, the new request
.B .>>
can be used as in this HTML example:
.Ex
\&.>> "<code>result = i+1;</code>"
.Ee
.LP
If the
.B .ig
request is called with the argument
.BR ##,
everything up to the terminating
.B .##
is passed to the Scheme interpreter for evaluation.
This allows users to embed Scheme code in a troff document which
is executed when the document is processed by
.IR unroff .
One use of this construct is to provide a Scheme event procedure
for a user-defined macro by placing the corresponding Scheme
definition in the same source file right below the troff macro definition.
Similarly, the request
.B .##
can be used to evaluate a short S-expression; all arguments to
the request are concatenated and then passed to the Scheme
interpreter.
.LP
Note that inline Scheme code is a potentially dangerous feature,
as a document received by someone else may contain embedded code
that does something unexpected when the file is processed by
.I unroff
(but it is probably not more dangerous than the standard troff
.B .pi
request or the
.B .sy
request of
.IR ditroff ).
.LP
.I unroff
defines the following new read-only number registers:
.TP
.B .U
This register always expand to 1.
It can be used by macros to determine whether the document is
being processed by
.IR unroff .
.TP
.B .C
Expands to 1 if troff compatibility mode has been enabled
by using the option
.BR \-C ,
to 0 otherwise.
.LP
The following new escape sequences are available in a macro
body during macro expansion:
.TP
.B $0
The name of the current macro.
.TP
.B $*
The concatenation of all arguments, separated by spaces.
.TP
.B $@
The concatenation of all arguments, separated by spaces, and
with each argument enclosed by double quotes.
.LP
The names of strings, macros, number registers, and fonts may be of
any length.
As in
.IR groff ,
square brackets can be used for names of arbitrary length:
.Ex
\ef[font] \e*[string] \en[numreg] ...
.Ee
.LP
There is no limit on the number of macro arguments, and the following
syntax can be used to reference the 10th, 11th, etc. macro argument:
.Ex
\e$(12 \e$[12] \e$[123]
.Ee
.LP
Unless troff compatibility mode has been enabled, the arguments to the
.IR groff -specific
escape sequences `\eA', `\eC', '\eL', '\eN', '\eR', '\eV', '\eY',
and '\eZ' are recognized and parsed, so that event procedures
can be implemented correctly for these escape sequences.
.SH "SEE ALSO"
.BR unroff-html (1),
.BR unroff-html-man (1),
.BR unroff-html-ms (1);
.br
.BR troff (1),
.BR groff (1);
.BR elk (1).
.LP
Unroff Programmer's Manual.
.LP
http://www.informatik.uni-bremen.de/~net/unroff
.SH AUTHOR
Oliver Laumann, net@cs.tu-berlin.de
.SH BUGS
A number of low-level formatting features of troff (such as the
absolute position indicator in numerical expressions)
are not yet supported by
.I unroff
version \*(Ve, which is not critical for higher-level,
structure-oriented target languages such as the Hypertext
Markup Language.
.LP
Diversions are not supported, although specific back-ends are
free to add this functionality.
.LP
Special characters are not treated right in certain contexts;
in particular, special characters may not be used in place
of plain characters where the characters act as some kind of
delimiter as in
.Ex
\&.if \e(bsfoo\e(bsbar\e(bs ...
.Ee
.LP
Spaces in an
.B .if
condition do not work; e.\|g. the following fails:
.Ex
\&.if ' ' ' ...
.Ee
.LP
Conditional input is subject to string and number register
expansion even if the corresponding if-condition evaluates to false.
.LP
There are no number register formats, i.\|e. the request
.B .af
does not work.
.LP
The set of punctuation marks that indicate end of sentence
should be configurable.
.LP
Empty input lines and leading space should trigger a special
event, so that their break semantics can be implemented correctly.
.LP
A comment in a line by itself currently does not generate a
blank line.

699
www/doc/unroff.1.html Normal file
View File

@ -0,0 +1,699 @@
<html>
<head>
<!-- This file has been generated by unroff 1.0, 03/21/96 19:29:17. -->
<!-- Do not edit! -->
<link rev="made" href="mailto:net@informatik.uni-bremen.de">
<!-- $Revision: 1.16 $ -->
<title>Manual page for unroff(1)</title>
</head>
<body>
<h2>
unroff - programmable, extensible troff translator
<hr></h2>
<h2>SYNOPSIS</h2>
<b>unroff
</b>[
<b>-f</b><i>format
</i>] [
<b>-m</b><i>package
</i>] [
<b>-h</b><i>heapsize
</i>] [
<b>-C
</b>]
[
<b>-t
</b>] [
<i>file</i> | <i>option...
</i>]
<h2>OVERVIEW</h2>
<i>unroff
</i>reads and parses documents with embedded troff markup
and translates them to a different format--typically
to a different markup language such as SGML.<tt> </tt>
The actual output format is not hard-wired into
<i>unroff</i>;
instead, the translation is performed by a set of user-supplied rules
and functions written in the
<i>Scheme
</i>programming language.<tt> </tt>
<i>unroff
</i>employs the Extension Language Kit
<i>Elk
</i>to achieve programmability based on the Scheme language:
a fully-functional Scheme interpreter is embedded in the translator.<tt> </tt>
<p>
The documents that can be processed by
<i>unroff
</i>are not restricted to a specific troff macro set.<tt> </tt>
Translation rules for a new macro package can be added by supplying
a set of corresponding Scheme procedures (a ``back-end'').<tt> </tt>
Predefined sets of such procedures exist for a number of combinations
of target language and troff macro package:
<i>unroff
</i>1.0 supports translation to the ``Hypertext Markup Language''
(HTML) version 2.0 for the
<b>-man
</b>and
<b>-ms
</b>macro packages as well as ``bare'' troff (see
<b>unroff-html</b>(1),
<b>unroff-html-man</b>(1),
and
<b>unroff-html-ms</b>(1)
for a description).<tt> </tt>
<p>
Unlike conventional troff conversion tools,
<i>unroff
</i>includes a full troff parser and can therefore handle user-defined
macros, strings, and number registers, nested if-else requests
(with text blocks enclosed by `\{' and `\}' escape sequences), arbitrary
fonts and font positions, troff ``copy mode'', low-level formatting
requests such as `\l' and '\h', and the subtle
differences between request and macro invocations that are inherent
in the troff processing model.<tt> </tt>
<i>unroff
</i>has adopted a number of troff extensions introduced by
<i>groff</i>,
among them long names for macros, strings, number registers, and
special characters, and the `\$@' and `\$*' escape sequences.<tt> </tt>
<p>
<i>unroff
</i>interprets its input stream as a sequence of ``events''.<tt> </tt>
Events include the invocation of a troff request or macro, the use of a
troff escape sequence or special character, a troff string
or number register reference, end of sentence, start
of a new input file, and so on.<tt> </tt>
For each event encountered
<i>unroff
</i>invokes a Scheme procedure associated with that event.<tt> </tt>
Some types of events require a procedure that returns a string (or an
object that can be coerced into a string),
which is then interpolated into the input or output stream;
for other types of events, the event procedures are just called
for their side-effects.<tt> </tt>
<p>
The set of Scheme procedures to be used by
<i>unroff
</i>is determined by the output format and the name of the troff
macro package.<tt> </tt>
In addition, users can supply event procedures for their own macro
definitions (or replace existing ones) in form of a simple Scheme
program passed to
<i>unroff
</i>along with the troff input files; Scheme code can even be directly
embedded in the troff input as described below.<tt> </tt>
<p>
The full capabilities of
<i>unroff
</i>and the Scheme primitives required to write extensions or support
for new output formats are described in the
<i>Unroff Programmer's Manual</i>.<tt> </tt>
<h2>GENERIC OPTIONS</h2>
<dl>
<dt><b>-f</b><i>format
</i><dd>
Specifies the output format into which the troff input files are
translated.<tt> </tt>
If no
<b>-f
</b>option is given, a default output format is used (for
<i>unroff
</i>version 1.0 the default is
<b>-f</b><i>html</i>).<tt> </tt>
This default can be overridden by setting the
<b>UNROFF_FORMAT
</b>environment variable.<tt> </tt>
<dt><b>-m</b><i>name
</i><dd>
Specifies the name of the macro package that would be used by ordinary
troff to typeset the document.<tt> </tt>
In contrast to troff
<i>unroff
</i>does not actually load the macro package.<tt> </tt>
Instead, the specified name-in combination with the specified output
format-selects a set of Scheme files providing the procedure definitions
that control the translation process (see
<b>FILES
</b>below).<tt> </tt>
Therefore a corresponding
<b>tmac
</b>file need not exist for a given
<b>-m
</b>option.<tt> </tt>
<dt><b>-h</b><i>heapsize
</i><dd>
This option can be used to specify a non-standard heap size (in Kbytes)
for the Scheme interpreter included in
<i>unroff</i>;
see
<b>elk</b>(1).<tt> </tt>
<dt><b>-C
</b><dd>
Enables troff compatibility mode.<tt> </tt>
In compatibility mode certain
<i>groff
</i>extensions such as long names are not recognized.<tt> </tt>
<dt><b>-t
</b><dd>
Enables test mode.<tt> </tt>
Instead of processing troff input files,
<i>unroff
</i>enters an interactive Scheme top-level.<tt> </tt>
This can be useful to interactively experiment with the Scheme
primitives defined by
<i>unroff
</i>or to test or debug user-defined Scheme procedures.<tt> </tt>
</dl>
<h2>KEYWORD/VALUE OPTIONS</h2>
In addition to the generic options, a set of output-format-specific
options can be set from the command line and from within troff and
Scheme input files.<tt> </tt>
When specified on the command line, these options have the form
<dl><dt><dd>
<pre>
<i>option</i>=<i>value</i>
</pre>
</dl>
where the format of
<i>value
</i>depends on the
<i>type
</i>of the option.<tt> </tt>
For example, most output formats defines an option
<b>document
</b>whose value is used as a prefix for all output files created during
the translation.<tt> </tt>
The option is assigned a value by specifying a token such as
<dl><dt><dd>
<pre>
document=thesis
</pre>
</dl>
on the command line.<tt> </tt>
This option's value is interpreted as a plain string, i.e.
its type is
<b>string</b>.<tt> </tt>
<p>
The Scheme back-ends and user-supplied extensions can define their
own option types, but at least the following types are recognized:
<dl>
<dt><b>integer
</b><dd>
the option value is composed of an optional sign and an (arbitrary)
string of digits
<dt><b>boolean
</b><dd>
the option value must either be the character 1 (true) or the
character 0 (false)
<dt><b>character
</b><dd>
a single character must be specified as the option value
<dt><b>string
</b><dd>
an arbitrary string of characters can be specified
<dt><b>dynstring
</b><dd>
``dynamic string''; the option value is either
</dl>
<dl><dt><dd>
<dl>
<dt><i>string
</i><dd>
to assign a string to the option in the normal way, or
<dt><b>+</b><i>string
</i><dd>
to append the characters after the plus sign
to the option's current value, or
<dt><b>-</b><i>string
</i><dd>
to remove the characters after the minus sign from the
option's current value.<tt> </tt>
</dl>
</dl>
<p>
These extension-specific options must appear after the generic
<i>unroff
</i>options and may be mixed with the file name arguments.<tt> </tt>
As the option assignments and specified input files are processed in
order, the value given for an option is in effect for all the input
files that appear on the command line to the right of the option.<tt> </tt>
<p>
The exact set of keyword/value options is determined by the
Scheme code loaded for a given combination of output format
and macro package name and is described in the corresponding
manuals.<tt> </tt>
The following few options can always be set, regardless of the
actual output format:
<dl>
<dt><b>include-files</b> (boolean)
<dd>
If true,
<b>.so
</b>requests are executed by
<i>unroff
</i>in the normal way (that is, the named input file is read and
parsed), otherwise
<b>.so
</b>requests are ignored.<tt> </tt>
The default value is 1.<tt> </tt>
<dt><b>if-true</b> (dynstring)
<dd>
the specified characters are assigned to (appended to, removed from)
the set of one-character conditions that are regarded as true
by the
<b>.if
</b>and
<b>.ie
</b>requests.<tt> </tt>
The default value is "to".<tt> </tt>
<dt><b>if-false</b> (dynstring)
<dd>
like
<b>if-true</b>;
specifies the one-character conditions regarded as false.<tt> </tt>
The default value is "ne".<tt> </tt>
</dl>
<h2>FILES</h2>
<h3>INPUT FILES</h3>
On startup,
<i>unroff
</i>loads the Scheme source files that control the translation process.<tt> </tt>
All these files are loaded from subdirectories of a site-specific
``library directory'', typically something like
<b>/usr/local/lib/unroff</b>.<tt> </tt>
The directory is usually chosen by the system administrator when
installing the software and can be overridden by setting the
<b>UNROFF_DIR
</b>environment variable.<tt> </tt>
The path names mentioned in the following are relative to this
library directory.<tt> </tt>
<p>
The first Scheme file loaded is
<b>scm/troff.scm
</b>which contains basic definitions such as the built-in options
and option types, implementations for troff requests that are
not output-format specific, and utility functions to be used
by the back-ends or by user-supplied extensions.<tt> </tt>
Next, the file
<b>scm/</b><i>format</i><b>/common.scm
</b>is loaded, where
<i>format
</i>is the value of the option
<b>-f
</b>as given on the command line (or its default value).<tt> </tt>
The file implements the translation of the basic troff
requests, escape sequences, and special characters, etc.<tt> </tt>
The code dealing with macro invocations is loaded from
<b>scm/</b><i>format</i><b>/</b><i>package</i><b>.scm
</b>where
<i>package
</i>is the value of the option
<b>-m
</b>with the letter `m' prepended.<tt> </tt>
<p>
Finally, the file
<b>.unroff
</b>is loaded from the caller's home directory if present.<tt> </tt>
Arbitrary Scheme code can be placed in this initialization file.<tt> </tt>
It is typically used to assign values to package-specific
keyword/value options according to the user's preferences
(by means of the
<i>set-option!
</i>Scheme primitive as explained in the Programmer's Manual).<tt> </tt>
<p>
When the initial files have been loaded, any troff input files specified
in the command line are read and parsed.<tt> </tt>
The special file name
`<b>-</b>'
can be used to indicate standard input (usually in combination with
ordinary file names).<tt> </tt>
If no file name is given,
<i>unroff
</i>reads from standard input.<tt> </tt>
<p>
In addition to troff input files, file containing Scheme code can
be mentioned in the command line.<tt> </tt>
Scheme files (which by convention end in
<b>.scm</b>)
are loaded into the Scheme interpreter and usually contain
used-defined Scheme procedures to translate specific macros or
to replace existing procedures, or other user-supplied extensions
of any kind.<tt> </tt>
Scheme files named in the command line (or loaded explicitly from
within other files) are resolved against the directory
<b>scm/misc/
</b>which may hold site-specific extensions or other supplementary
packages.<tt> </tt>
troff files and Scheme files can be mixed freely in the command line.<tt> </tt>
<h3>OUTPUT FILES</h3>
Whether
<i>unroff
</i>sends its output to standard output or produces one or more output
files is not hard-wired but determined by the combination of output
format and macro package.<tt> </tt>
Generally, if no troff input files are specified, output is directed
to standard output, but this rule is not mandatory and may
be overridden by specific back-ends.<tt> </tt>
The
<b>document
</b>option is usually honored, although other rules may be employed to
determine the names of output files (for example, the extension
that implements
<b>-man
</b>for a given output format may derive the name of the output file
for a manual page from the input file name; see
<b>unroff-html-man</b>(1)).<tt> </tt>
<p>
If
<i>unroff
</i>is interrupted or quits early, any output files produced so far may be
incomplete or may contain wrong or inconsistent data, because
several passes may be required to complete an output file (for example,
to resolve cross references between a set of files), or because
an output file is not necessarily produced as a whole, but
<i>unroff
</i>may work on several files simultaneously.<tt> </tt>
<h2>EXAMPLES</h2>
<p>
To translate a troff document composed of two files and written with the
``ms'' macro package to HTML 2.0,
<i>unroff
</i>might be called like this:
<dl><dt><dd>
<pre>
unroff -fhtml -ms doc.tr doc.tr
</pre>
</dl>
Two options specific to the combination of
<b>-fhtml
</b>and
<b>-ms
</b>might be added to specify a prefix for output files and to have
the resulting output split into separate files after each section
(see
<b>unroff-html-ms</b>(1)):
<dl><dt><dd>
<pre>
unroff -fhtml -ms document=out/ split=1 doc.tr doc.tr
</pre>
</dl>
Additional features may be loaded from Scheme files specified in the
command line, e.g.
<b>hyper.scm
</b>which implements general Hypertext requests (and gets loaded from
<b>scm/misc/</b>)
and a user-supplied file in the current directory providing translation
rules for user-defined troff macros:
<dl><dt><dd>
<pre>
unroff -fhtml -ms document=out/ split=1 hyper.scm doc.scm\
doc.tr doc.tr
</pre>
</dl>
<h2>TROFF SUPPORT AND EXTENSIONS</h2>
As
<i>unroff
</i>translates troff input into another language rather than typesetting
the text in the usual way, its processing model necessarily differs
from that of conventional troff.<tt> </tt>
For a detailed description refer to the Programmer's Manual.<tt> </tt>
<p>
In brief,
<i>unroff
</i>copies characters from input to output, optionally performing
target-language-specific character translations.<tt> </tt>
For each request or macro invocation, string or number register
reference, special character, escape sequence, sentence end, or
<b>eqn</b>(1)
inline equation encountered in the input stream,
<i>unroff
</i>checks whether an ``event value'' has been specified by
the Scheme code (user-supplied or part of the back-end).<tt> </tt>
An event value is either a plain string, which is then treated as
if it had been part of the input stream, or a Scheme procedure,
which is then invoked and must in turn return a string.<tt> </tt>
The Scheme procedures are passed arguments, e.g. the macro
or request arguments in case of a procedure attached to a macro
or request, or an escape sequence argument for functions such as
`\f' or `\w'.<tt> </tt>
<p>
If no event value has been associated with a particular macro,
string, or number register,
<i>unroff
</i>checks whether a definition has been supplied in the normal way,
i.e. by means of
<b>.de</b>,
<b>.ds</b>,
or
<b>.nr</b>.<tt> </tt>
In this case, the value of the macro, string, or register is
interpolated as done by ordinary troff.<tt> </tt>
If no definition can be found, a fallback definition is looked up
as a last resort; and if everything fails, a warning is printed
and the event is ignored.<tt> </tt>
Similarly, event procedures are invoked at end of input line,
when an input file is opened or closed, at program start and
termination, and for each option specified in the command line;
but these procedures are called solely for their side-effects
(i.e. the return values are ignored).<tt> </tt>
<p>
Most Scheme procedures just emit the target language's representation
of the event with which they are associated.<tt> </tt>
Other procedures perform various kinds of bookkeeping; the procedure
associated with the
<b>.de
</b>request, for example, puts the text following
aside for later expansion, and the event procedures attached to
the requests
<b>.ds
</b>and
<b>.nr
</b>and to the escape sequences `\*' and `\n'
implement troff strings and number registers.<tt> </tt>
This way, even basic troff functions need not be hard-wired and can
be altered or replaced freely without recompiling
<i>unroff</i>.<tt> </tt>
<p>
The rule that an event value associated with a macro has precedence
over the actual macro definition accommodates higher-level,
structure-oriented target languages (such as SGML).<tt> </tt>
While the micro-formatting contained in a typical
<b>-ms
</b>macro definition, for example, makes sense to an ordinary typesetting
program, it is usually impossible to infer the macro's
<i>structural
</i>function from it (new paragraph, quotation, etc.).<tt> </tt>
On the other hand, troff documents often define a few additional,
simple macros that just serve as an abbreviation for a sequence
of predefined macros; in this case event procedures need not
specified, as
<i>unroff
</i>will then perform normal macro expansion.<tt> </tt>
<p>
<i>unroff
</i>usually takes care to not rescan the characters returned by event
procedures as if their results had been normal input, because
most event procedures already return code in the target language rather
than troff input that can be rescanned.<tt> </tt>
This, however, cannot always be avoided; for example, if a troff string
reference occurs at macro definition time (because `\*' is used rather
than `\\*'), the string value ends up in the macro body and will still
be rescanned when the macro is invoked.<tt> </tt>
A few other pitfalls caused by differences in the processing models of
troff and
<i>unroff
</i>are listed in the BUGS section below.<tt> </tt>
<p>
The scaling performed for the usual troff scale indicators
can be manipulated by a calling a Scheme primitive from within
the Scheme code implementing a particular back-end.<tt> </tt>
<h3>NEW TROFF REQUESTS</h3>
To aid transparent output of code in the target language and
evaluation of inline Scheme code,
<i>unroff
</i>supports two new requests and two extensions to the
<b>.ig
</b>(ignore input lines) troff request.<tt> </tt>
<p>
If
<b>.ig
</b>is called with the symbol
<b>&gt;&gt;
</b>as its first argument, all input lines up to (but not including)
the terminating
<b>.&gt;&gt;
</b>are sent to the current output file.<tt> </tt>
Example:
when translating to the Hypertext Markup Language, the construct
could be used to emit literal HTML code like this:
<dl><dt><dd>
<pre>
.ig &gt;&gt;
&lt;address&gt;
Bart Simpson&lt;br&gt;
Springfield
&lt;/address&gt;
.&gt;&gt;
</pre>
</dl>
<p>
To produce a single line of output, the new request
<b>.&gt;&gt;
</b>can be used as in this HTML example:
<dl><dt><dd>
<pre>
.&gt;&gt; "&lt;code&gt;result = i+1;&lt;/code&gt;"
</pre>
</dl>
<p>
If the
<b>.ig
</b>request is called with the argument
<b>##,
</b>everything up to the terminating
<b>.##
</b>is passed to the Scheme interpreter for evaluation.<tt> </tt>
This allows users to embed Scheme code in a troff document which
is executed when the document is processed by
<i>unroff</i>.<tt> </tt>
One use of this construct is to provide a Scheme event procedure
for a user-defined macro by placing the corresponding Scheme
definition in the same source file right below the troff macro definition.<tt> </tt>
Similarly, the request
<b>.##
</b>can be used to evaluate a short S-expression; all arguments to
the request are concatenated and then passed to the Scheme
interpreter.<tt> </tt>
<p>
Note that inline Scheme code is a potentially dangerous feature,
as a document received by someone else may contain embedded code
that does something unexpected when the file is processed by
<i>unroff
</i>(but it is probably not more dangerous than the standard troff
<b>.pi
</b>request or the
<b>.sy
</b>request of
<i>ditroff</i>).<tt> </tt>
<p>
<i>unroff
</i>defines the following new read-only number registers:
<dl>
<dt><b>.U
</b><dd>
This register always expand to 1.<tt> </tt>
It can be used by macros to determine whether the document is
being processed by
<i>unroff</i>.<tt> </tt>
<dt><b>.C
</b><dd>
Expands to 1 if troff compatibility mode has been enabled
by using the option
<b>-C</b>,
to 0 otherwise.<tt> </tt>
</dl>
<p>
The following new escape sequences are available in a macro
body during macro expansion:
<dl>
<dt><b>$0
</b><dd>
The name of the current macro.<tt> </tt>
<dt><b>$*
</b><dd>
The concatenation of all arguments, separated by spaces.<tt> </tt>
<dt><b>$@
</b><dd>
The concatenation of all arguments, separated by spaces, and
with each argument enclosed by double quotes.<tt> </tt>
</dl>
<p>
The names of strings, macros, number registers, and fonts may be of
any length.<tt> </tt>
As in
<i>groff</i>,
square brackets can be used for names of arbitrary length:
<dl><dt><dd>
<pre>
\f[font] \*[string] \n[numreg] ...
</pre>
</dl>
<p>
There is no limit on the number of macro arguments, and the following
syntax can be used to reference the 10th, 11th, etc. macro argument:
<dl><dt><dd>
<pre>
\$(12 \$[12] \$[123]
</pre>
</dl>
<p>
Unless troff compatibility mode has been enabled, the arguments to the
<i>groff</i>-specific
escape sequences `\A', `\C', '\L', '\N', '\R', '\V', '\Y',
and '\Z' are recognized and parsed, so that event procedures
can be implemented correctly for these escape sequences.<tt> </tt>
<h2>SEE ALSO</h2>
<b>unroff-html</b>(1),
<b>unroff-html-man</b>(1),
<b>unroff-html-ms</b>(1);
<br>
<b>troff</b>(1),
<b>groff</b>(1);
<b>elk</b>(1).<tt> </tt>
<p>
Unroff Programmer's Manual.<tt> </tt>
<p>
http://www.informatik.uni-bremen.de/~net/unroff
<h2>AUTHOR</h2>
Oliver Laumann, net@cs.tu-berlin.de
<h2>BUGS</h2>
A number of low-level formatting features of troff (such as the
absolute position indicator in numerical expressions)
are not yet supported by
<i>unroff
</i>version 1.0, which is not critical for higher-level,
structure-oriented target languages such as the Hypertext
Markup Language.<tt> </tt>
<p>
Diversions are not supported, although specific back-ends are
free to add this functionality.<tt> </tt>
<p>
Special characters are not treated right in certain contexts;
in particular, special characters may not be used in place
of plain characters where the characters act as some kind of
delimiter as in
<dl><dt><dd>
<pre>
.if \(bsfoo\(bsbar\(bs ...
</pre>
</dl>
<p>
Spaces in an
<b>.if
</b>condition do not work; e.g. the following fails:
<dl><dt><dd>
<pre>
.if ' ' ' ...
</pre>
</dl>
<p>
Conditional input is subject to string and number register
expansion even if the corresponding if-condition evaluates to false.<tt> </tt>
<p>
There are no number register formats, i.e. the request
<b>.af
</b>does not work.<tt> </tt>
<p>
The set of punctuation marks that indicate end of sentence
should be configurable.<tt> </tt>
<p>
Empty input lines and leading space should trigger a special
event, so that their break semantics can be implemented correctly.<tt> </tt>
<p>
A comment in a line by itself currently does not generate a
blank line.<tt> </tt>
<p><hr>
Markup created by <em>unroff</em> 1.0,&#160;<tt> </tt>&#160;<tt> </tt>March 21, 1996.
</body>
</html>

800
www/doc/unroff.1.ps Normal file
View File

@ -0,0 +1,800 @@
%!PS-Adobe-3.0
%%Creator: groff version 1.09
%%CreationDate: Thu Mar 21 19:29:54 1996
%%DocumentNeededResources: font Times-Roman
%%+ font Times-Bold
%%+ font Times-Italic
%%DocumentSuppliedResources: procset grops 1.09 0
%%Pages: 6
%%PageOrder: Ascend
%%Orientation: Portrait
%%EndComments
%%BeginProlog
%%BeginResource: procset grops 1.09 0
/setpacking where{
pop
currentpacking
true setpacking
}if
/grops 120 dict dup begin
/SC 32 def
/A/show load def
/B{0 SC 3 -1 roll widthshow}bind def
/C{0 exch ashow}bind def
/D{0 exch 0 SC 5 2 roll awidthshow}bind def
/E{0 rmoveto show}bind def
/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
/G{0 rmoveto 0 exch ashow}bind def
/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/I{0 exch rmoveto show}bind def
/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
/K{0 exch rmoveto 0 exch ashow}bind def
/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/M{rmoveto show}bind def
/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
/O{rmoveto 0 exch ashow}bind def
/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/Q{moveto show}bind def
/R{moveto 0 SC 3 -1 roll widthshow}bind def
/S{moveto 0 exch ashow}bind def
/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/SF{
findfont exch
[exch dup 0 exch 0 exch neg 0 0]makefont
dup setfont
[exch/setfont cvx]cvx bind def
}bind def
/MF{
findfont
[5 2 roll
0 3 1 roll
neg 0 0]makefont
dup setfont
[exch/setfont cvx]cvx bind def
}bind def
/level0 0 def
/RES 0 def
/PL 0 def
/LS 0 def
/PLG{
gsave newpath clippath pathbbox grestore
exch pop add exch pop
}bind def
/BP{
/level0 save def
1 setlinecap
1 setlinejoin
72 RES div dup scale
LS{
90 rotate
}{
0 PL translate
}ifelse
1 -1 scale
}bind def
/EP{
level0 restore
showpage
}bind def
/DA{
newpath arcn stroke
}bind def
/SN{
transform
.25 sub exch .25 sub exch
round .25 add exch round .25 add exch
itransform
}bind def
/DL{
SN
moveto
SN
lineto stroke
}bind def
/DC{
newpath 0 360 arc closepath
}bind def
/TM matrix def
/DE{
TM currentmatrix pop
translate scale newpath 0 0 .5 0 360 arc closepath
TM setmatrix
}bind def
/RC/rcurveto load def
/RL/rlineto load def
/ST/stroke load def
/MT/moveto load def
/CL/closepath load def
/FL{
currentgray exch setgray fill setgray
}bind def
/BL/fill load def
/LW/setlinewidth load def
/RE{
findfont
dup maxlength 1 index/FontName known not{1 add}if dict begin
{
1 index/FID ne{def}{ pop pop}ifelse
}forall
/Encoding exch def
dup/FontName exch def
currentdict end definefont pop
}bind def
/DEFS 0 def
/EBEGIN{
moveto
DEFS begin
}bind def
/EEND/end load def
/CNT 0 def
/level1 0 def
/PBEGIN{
/level1 save def
translate
div 3 1 roll div exch scale
neg exch neg exch translate
0 setgray
0 setlinecap
1 setlinewidth
0 setlinejoin
10 setmiterlimit
[] 0 setdash
/setstrokeadjust where{
pop
false setstrokeadjust
}if
/setoverprint where{
pop
false setoverprint
}if
newpath
/CNT countdictstack def
userdict begin
/showpage{} def
}bind def
/PEND{
clear
countdictstack CNT sub{end}repeat
level1 restore
}bind def
end def
/setpacking where{
pop
setpacking
}if
%%EndResource
%%IncludeResource: font Times-Roman
%%IncludeResource: font Times-Bold
%%IncludeResource: font Times-Italic
grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
def/PL 841.89 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron
/Zcaron/scaron/zcaron/Ydieresis/trademark/quotesingle/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
/Times-Italic@0 ENC0/Times-Italic RE/Times-Bold@0 ENC0/Times-Bold RE
/Times-Roman@0 ENC0/Times-Roman RE
%%EndProlog
%%Page: 1 1
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF(unrof)72 48 Q 392.7(f\(1\) unrof)-.25 F(f\(1\))
-.25 E/F1 9/Times-Bold@0 SF -.18(NA)72 84 S(ME).18 E F0(unrof)108 96 Q
2.5(f\255p)-.25 G(rogrammable, e)-2.5 E(xtensible trof)-.15 E 2.5(ft)
-.25 G(ranslator)-2.5 E F1(SYNOPSIS)72 112.8 Q/F2 10/Times-Bold@0 SF
(unr)108 124.8 Q(off)-.18 E F0([)2.5 E F2<ad66>2.5 E/F3 10
/Times-Italic@0 SF(format)1.97 E F0 2.5(][)2.5 G F2<ad6d>A F3(pac)1.25 E
(ka)-.2 E -.1(ge)-.1 G F0 2.5(][)2.6 G F2<ad68>A F3(heapsize).31 E F0
2.5(][)2.5 G F2<ad43>A F0 2.5(][)2.5 G F2<ad74>A F0 2.5(][)2.5 G F3
(\214le)A F0(|)2.68 E F3(option...)2.73 E F0(])2.5 E F1 -.45(OV)72 141.6
S(ER).45 E(VIEW)-.495 E F3(unr)108 153.6 Q(of)-.45 E(f)-.18 E F0 .307
(reads and parses documents with embedded trof)2.807 F 2.807(fm)-.25 G
.306(arkup and translates them to a dif)-2.807 F .306(ferent format\212)
-.25 F .873(typically to a dif)108 165.6 R .874
(ferent markup language such as SGML.)-.25 F .874
(The actual output format is not hard-wired into)5.874 F F3(unr)108
177.6 Q(of)-.45 E(f)-.18 E F0 3.929(;i)1.96 G 1.429
(nstead, the translation is performed by a set of user)-3.929 F 1.428
(-supplied rules and functions written in the)-.2 F F3(Sc)108 189.6 Q
(heme)-.15 E F0 .232(programming language.)2.732 F F3(unr)5.232 E(of)
-.45 E(f)-.18 E F0(emplo)2.732 E .232(ys the Extension Language Kit)-.1
F F3(Elk)2.733 E F0 .233(to achie)2.733 F .533 -.15(ve p)-.25 H
(rogrammabil-).15 E(ity based on the Scheme language: a fully-functiona\
l Scheme interpreter is embedded in the translator)108 201.6 Q(.)-.55 E
.604(The documents that can be processed by)108 218.4 R F3(unr)3.104 E
(of)-.45 E(f)-.18 E F0 .603(are not restricted to a speci\214c trof)
3.104 F 3.103(fm)-.25 G .603(acro set.)-3.103 F -.35(Tr)5.603 G
(anslation).35 E 1.103(rules for a ne)108 230.4 R 3.603(wm)-.25 G 1.104
(acro package can be added by supplying a set of corresponding Scheme p\
rocedures \(a)-3.603 F 2.718(\231back-end\232\). Prede\214ned)108 242.4
R .218(sets of such procedures e)2.718 F .218
(xist for a number of combinations of tar)-.15 F .218(get language and)
-.18 F(trof)108 254.4 Q 2.879(fm)-.25 G .379(acro package:)-2.879 F F3
(unr)2.879 E(of)-.45 E(f)-.18 E F0 .379
(1.0 supports translation to the \231Hyperte)2.879 F .38
(xt Markup Language\232 \(HTML\) v)-.15 F(ersion)-.15 E 1.848
(2.0 for the)108 266.4 R F2(\255man)4.348 E F0(and)4.348 E F2(\255ms)
4.348 E F0 1.847(macro packages as well as \231bare\232 trof)4.347 F
4.347(f\()-.25 G(see)-4.347 E F2(unr)4.347 E(off-html)-.18 E F0(\(1\),)A
F2(unr)4.347 E(off-html-)-.18 E(man)108 278.4 Q F0(\(1\), and)A F2(unr)
2.5 E(off-html-ms)-.18 E F0(\(1\) for a description\).)A(Unlik)108 295.2
Q 2.845(ec)-.1 G(on)-2.845 E -.15(ve)-.4 G .345(ntional trof).15 F 2.845
(fc)-.25 G(on)-2.845 E -.15(ve)-.4 G .345(rsion tools,).15 F F3(unr)
2.845 E(of)-.45 E(f)-.18 E F0 .345(includes a full trof)2.845 F 2.845
(fp)-.25 G .346(arser and can therefore handle user)-2.845 F(-)-.2 E
.283(de\214ned macros, strings, and number re)108 307.2 R .283
(gisters, nested if-else requests \(with te)-.15 F .282
(xt blocks enclosed by `\\{' and)-.15 F .467
(`\\}' escape sequences\), arbitrary fonts and font positions, trof)108
319.2 R 2.967<6699>-.25 G(cop)-2.967 E 2.967(ym)-.1 G .467(ode\232, lo)
-2.967 F(w-le)-.25 E -.15(ve)-.25 G 2.967(lf).15 G .467
(ormatting requests)-2.967 F .566
(such as `\\l' and '\\h', and the subtle dif)108 331.2 R .566
(ferences between request and macro in)-.25 F -.2(vo)-.4 G .566
(cations that are inherent in).2 F 1.133(the trof)108 343.2 R 3.633(fp)
-.25 G 1.133(rocessing model.)-3.633 F F3(unr)6.133 E(of)-.45 E(f)-.18 E
F0 1.133(has adopted a number of trof)3.633 F 3.634(fe)-.25 G 1.134
(xtensions introduced by)-3.784 F F3(gr)3.634 E(of)-.45 E(f)-.18 E F0
3.634(,a)1.96 G(mong)-3.634 E 1.517
(them long names for macros, strings, number re)108 355.2 R 1.516
(gisters, and special characters, and the `\\$@' and `\\$*')-.15 F
(escape sequences.)108 367.2 Q F3(unr)108 384 Q(of)-.45 E(f)-.18 E F0
.29(interprets its input stream as a sequence of \231e)2.79 F -.15(ve)
-.25 G 2.791(nts\232. Ev).15 F .291(ents include the in)-.15 F -.2(vo)
-.4 G .291(cation of a trof).2 F 2.791(fr)-.25 G(equest)-2.791 E .225
(or macro, the use of a trof)108 396 R 2.725(fe)-.25 G .225
(scape sequence or special character)-2.725 F 2.725(,at)-.4 G(rof)-2.725
E 2.725(fs)-.25 G .225(tring or number re)-2.725 F .225
(gister reference,)-.15 F .616(end of sentence, start of a ne)108 408 R
3.116(wi)-.25 G .616(nput \214le, and so on.)-3.116 F -.15(Fo)5.616 G
3.116(re).15 G .617(ach e)-3.116 F -.15(ve)-.25 G .617(nt encountered)
.15 F F3(unr)3.117 E(of)-.45 E(f)-.18 E F0(in)3.117 E -.2(vo)-.4 G -.1
(ke).2 G 3.117(saS).1 G(cheme)-3.117 E .482
(procedure associated with that e)108 420 R -.15(ve)-.25 G 2.981
(nt. Some).15 F .481(types of e)2.981 F -.15(ve)-.25 G .481
(nts require a procedure that returns a string \(or an).15 F .108(objec\
t that can be coerced into a string\), which is then interpolated into \
the input or output stream; for other)108 432 R(types of e)108 444 Q
-.15(ve)-.25 G(nts, the e).15 E -.15(ve)-.25 G
(nt procedures are just called for their side-ef).15 E(fects.)-.25 E
.357(The set of Scheme procedures to be used by)108 460.8 R F3(unr)2.857
E(of)-.45 E(f)-.18 E F0 .357
(is determined by the output format and the name of the)2.857 F(trof)108
472.8 Q 3.736(fm)-.25 G 1.236(acro package.)-3.736 F 1.237
(In addition, users can supply e)6.236 F -.15(ve)-.25 G 1.237
(nt procedures for their o).15 F 1.237(wn macro de\214nitions \(or)-.25
F .264(replace e)108 484.8 R .264
(xisting ones\) in form of a simple Scheme program passed to)-.15 F F3
(unr)2.763 E(of)-.45 E(f)-.18 E F0 .263(along with the trof)2.763 F
2.763(fi)-.25 G .263(nput \214les;)-2.763 F(Scheme code can e)108 496.8
Q -.15(ve)-.25 G 2.5(nb).15 G 2.5(ed)-2.5 G
(irectly embedded in the trof)-2.5 E 2.5(fi)-.25 G
(nput as described belo)-2.5 E -.65(w.)-.25 G 1.016
(The full capabilities of)108 513.6 R F3(unr)3.516 E(of)-.45 E(f)-.18 E
F0 1.016(and the Scheme primiti)3.516 F -.15(ve)-.25 G 3.516(sr).15 G
1.016(equired to write e)-3.516 F 1.017(xtensions or support for ne)-.15
F(w)-.25 E(output formats are described in the)108 525.6 Q F3(Unr)2.5 E
(of)-.45 E 2.5(fP)-.18 G -1.7 -.45(ro g)-2.5 H -.15(ra).45 G(mmer').15 E
2.5(sM)-.4 G(anual)-2.5 E F0(.).51 E F1(GENERIC OPTIONS)72 542.4 Q F2
<ad66>108 554.4 Q F3(format)1.97 E F0 .04
(Speci\214es the output format into which the trof)144 566.4 R 2.54(fi)
-.25 G .039(nput \214les are translated.)-2.54 F .039(If no)5.039 F F2
<ad66>2.539 E F0 .039(option is gi)2.539 F -.15(ve)-.25 G .039(n, a).15
F(def)144 578.4 Q 1.22(ault output format is used \(for)-.1 F F3(unr)
3.72 E(of)-.45 E(f)-.18 E F0 -.15(ve)3.721 G 1.221(rsion 1.0 the def).15
F 1.221(ault is)-.1 F F2<ad66>3.721 E F3(html)A F0 3.721(\). This).51 F
(def)3.721 E 1.221(ault can be)-.1 F -.15(ove)144 590.4 S
(rridden by setting the).15 E F1(UNR)2.5 E(OFF_FORMA)-.27 E(T)-.855 E F0
(en)2.25 E(vironment v)-.4 E(ariable.)-.25 E F2<ad6d>108 607.2 Q F3
(name).36 E F0 .297(Speci\214es the name of the macro package that w)144
619.2 R .296(ould be used by ordinary trof)-.1 F 2.796(ft)-.25 G 2.796
(ot)-2.796 G .296(ypeset the docu-)-2.796 F 3.185(ment. In)144 631.2 R
.685(contrast to trof)3.185 F(f)-.25 E F3(unr)3.185 E(of)-.45 E(f)-.18 E
F0 .685(does not actually load the macro package.)3.185 F .686
(Instead, the speci\214ed)5.686 F .399(name\255in combination with the \
speci\214ed output format\255selects a set of Scheme \214les pro)144
643.2 R .398(viding the)-.15 F .898
(procedure de\214nitions that control the translation process \(see)144
655.2 R F2(FILES)3.398 E F0(belo)3.399 E 3.399(w\). Therefore)-.25 F
3.399(ac)3.399 G(orre-)-3.399 E(sponding)144 667.2 Q F2(tmac)2.5 E F0
(\214le need not e)2.5 E(xist for a gi)-.15 E -.15(ve)-.25 G(n).15 E F2
<ad6d>2.5 E F0(option.)2.5 E F2<ad68>108 684 Q F3(heapsize).31 E F0 .207
(This option can be used to specify a non-standard heap size \(in Kbyte\
s\) for the Scheme interpreter)144 696 R(included in)144 708 Q F3(unr)
2.5 E(of)-.45 E(f)-.18 E F0 2.5(;s)1.96 G(ee)-2.5 E F2(elk)2.5 E F0
(\(1\).)A 203.72(1995/08/23 1)283.22 768 R EP
%%Page: 2 2
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF(unrof)72 48 Q 392.7(f\(1\) unrof)-.25 F(f\(1\))
-.25 E/F1 10/Times-Bold@0 SF<ad43>108 84 Q F0 1.652(Enables trof)23.08 F
4.152(fc)-.25 G 1.652(ompatibility mode.)-4.152 F 1.652
(In compatibility mode certain)6.652 F/F2 10/Times-Italic@0 SF(gr)4.153
E(of)-.45 E(f)-.18 E F0 -.15(ex)4.153 G 1.653(tensions such as long).15
F(names are not recognized.)144 96 Q F1<ad74>108 112.8 Q F0 .306
(Enables test mode.)26.97 F .306(Instead of processing trof)5.306 F
2.806(fi)-.25 G .306(nput \214les,)-2.806 F F2(unr)2.806 E(of)-.45 E(f)
-.18 E F0 .305(enters an interacti)2.806 F .605 -.15(ve S)-.25 H .305
(cheme top-).15 F(le)144 124.8 Q -.15(ve)-.25 G 2.795(l. This).15 F .295
(can be useful to interacti)2.795 F -.15(ve)-.25 G .295(ly e).15 F .295
(xperiment with the Scheme primiti)-.15 F -.15(ve)-.25 G 2.795(sd).15 G
.295(e\214ned by)-2.795 F F2(unr)2.795 E(of)-.45 E(f)-.18 E F0
(or to test or deb)144 136.8 Q(ug user)-.2 E
(-de\214ned Scheme procedures.)-.2 E/F3 9/Times-Bold@0 SF(KEYW)72 153.6
Q(ORD/V)-.09 E(ALUE OPTIONS)-1.215 E F0 .219(In addition to the generic\
options, a set of output-format-speci\214c options can be set from the\
command line)108 165.6 R .286(and from within trof)108 177.6 R 2.786
(fa)-.25 G .286(nd Scheme input \214les.)-2.786 F .287
(When speci\214ed on the command line, these options ha)5.286 F .587
-.15(ve t)-.2 H(he).15 E(form)108 189.6 Q F2(option)144 207.6 Q F1(=)A
F2(value)A F0 .425(where the format of)108 225.6 R F2(value)2.925 E F0
.425(depends on the)2.925 F F2(type)2.925 E F0 .424(of the option.)2.924
F -.15(Fo)5.424 G 2.924(re).15 G .424
(xample, most output formats de\214nes an)-3.074 F(option)108 237.6 Q F1
(document)3.664 E F0 1.164(whose v)3.664 F 1.165(alue is used as a pre\
\214x for all output \214les created during the translation.)-.25 F(The)
6.165 E(option is assigned a v)108 249.6 Q(alue by specifying a tok)-.25
E(en such as)-.1 E F1(document=thesis)144 267.6 Q F0
(on the command line.)108 285.6 Q(This option')5 E 2.5(sv)-.55 G
(alue is interpreted as a plain string, i.)-2.75 E(e. its type is)1.666
E F1(string)2.5 E F0(.)A .405(The Scheme back-ends and user)108 302.4 R
.405(-supplied e)-.2 F .405(xtensions can de\214ne their o)-.15 F .405
(wn option types, b)-.25 F .405(ut at least the fol-)-.2 F(lo)108 314.4
Q(wing types are recognized:)-.25 E F1(integer)108 331.2 Q F0
(the option v)20.01 E(alue is composed of an optional sign and an \(arb\
itrary\) string of digits)-.25 E F1(boolean)108 348 Q F0(the option v)
16.66 E
(alue must either be the character 1 \(true\) or the character 0 \(f)
-.25 E(alse\))-.1 E F1(character)108 364.8 Q F0 2.5(as)8.91 G
(ingle character must be speci\214ed as the option v)-2.5 E(alue)-.25 E
F1(string)108 381.6 Q F0
(an arbitrary string of characters can be speci\214ed)25 E F1(dynstring)
108 398.4 Q F0(\231dynamic string\232; the option v)8.88 E
(alue is either)-.25 E F2(string)158 415.2 Q F0
(to assign a string to the option in the normal w)12.66 E(ay)-.1 E 2.5
(,o)-.65 G(r)-2.5 E F1(+)158 432 Q F2(string).34 E F0
(to append the characters after the plus sign to the option')6.62 E 2.5
(sc)-.55 G(urrent v)-2.5 E(alue, or)-.25 E F1<ad>158 448.8 Q F2(string)
.34 E F0(to remo)6.62 E .3 -.15(ve t)-.15 H
(he characters after the minus sign from the option').15 E 2.5(sc)-.55 G
(urrent v)-2.5 E(alue.)-.25 E .921(These e)108 465.6 R .921
(xtension-speci\214c options must appear after the generic)-.15 F F2
(unr)3.421 E(of)-.45 E(f)-.18 E F0 .922(options and may be mix)3.421 F
.922(ed with the)-.15 F .615(\214le name ar)108 477.6 R 3.115
(guments. As)-.18 F .614(the option assignments and speci\214ed input \
\214les are processed in order)3.115 F 3.114(,t)-.4 G .614(he v)-3.114 F
(alue)-.25 E(gi)108 489.6 Q -.15(ve)-.25 G 3.531(nf).15 G 1.031
(or an option is in ef)-3.531 F 1.032(fect for all the input \214les th\
at appear on the command line to the right of the)-.25 F(option.)108
501.6 Q .549(The e)108 518.4 R .549(xact set of k)-.15 F -.15(ey)-.1 G
-.1(wo).15 G(rd/v).1 E .549
(alue options is determined by the Scheme code loaded for a gi)-.25 F
-.15(ve)-.25 G 3.048(nc).15 G(ombination)-3.048 E .729(of output format\
and macro package name and is described in the corresponding manuals.)
108 530.4 R .73(The follo)5.73 F(wing)-.25 E(fe)108 542.4 Q 2.5(wo)-.25
G(ptions can al)-2.5 E -.1(wa)-.1 G(ys be set, re).1 E -.05(ga)-.15 G
(rdless of the actual output format:).05 E F1(include-\214les)108 559.2
Q F0(\(boolean\))2.5 E .52(If true,)144 571.2 R F1(.so)3.02 E F0 .52
(requests are e)3.02 F -.15(xe)-.15 G .52(cuted by).15 F F2(unr)3.02 E
(of)-.45 E(f)-.18 E F0 .519(in the normal w)3.02 F .519
(ay \(that is, the named input \214le is read)-.1 F
(and parsed\), otherwise)144 583.2 Q F1(.so)2.5 E F0
(requests are ignored.)2.5 E(The def)5 E(ault v)-.1 E(alue is 1.)-.25 E
F1(if-true)108 600 Q F0(\(dynstring\))2.5 E .36
(the speci\214ed characters are assigned to \(appended to, remo)144 612
R -.15(ve)-.15 G 2.86(df).15 G .36(rom\) the set of one-character con-)
-2.86 F(ditions that are re)144 624 Q -.05(ga)-.15 G
(rded as true by the).05 E F1(.if)2.5 E F0(and)2.5 E F1(.ie)2.5 E F0 2.5
(requests. The)2.5 F(def)2.5 E(ault v)-.1 E(alue is "to".)-.25 E F1
(if-false)108 640.8 Q F0(\(dynstring\))2.5 E(lik)144 652.8 Q(e)-.1 E F1
(if-true)2.5 E F0 2.5(;s)C(peci\214es the one-character conditions re)
-2.5 E -.05(ga)-.15 G(rded as f).05 E 2.5(alse. The)-.1 F(def)2.5 E
(ault v)-.1 E(alue is "ne".)-.25 E F3(FILES)72 669.6 Q F1(INPUT FILES)87
681.6 Q F0 1.47(On startup,)108 693.6 R F2(unr)3.97 E(of)-.45 E(f)-.18 E
F0 1.469
(loads the Scheme source \214les that control the translation process.)
3.97 F 1.469(All these \214les are)6.469 F 7.855(loaded from subdirecto\
ries of a site-speci\214c \231library directory\232, typically somethin\
g lik)108 705.6 R(e)-.1 E F1(/usr/local/lib/unr)108 717.6 Q(off)-.18 E
F0 5.276(.T)C .275(he directory is usually chosen by the system adminis\
trator when installing the soft-)-5.276 F -.1(wa)108 729.6 S .17
(re and can be o).1 F -.15(ve)-.15 G .17(rridden by setting the).15 F F3
(UNR)2.67 E(OFF_DIR)-.27 E F0(en)2.42 E .17(vironment v)-.4 F 2.67
(ariable. The)-.25 F .17(path names mentioned)2.67 F 203.72
(1995/08/23 2)283.22 768 R EP
%%Page: 3 3
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF(unrof)72 48 Q 392.7(f\(1\) unrof)-.25 F(f\(1\))
-.25 E(in the follo)108 84 Q(wing are relati)-.25 E .3 -.15(ve t)-.25 H
2.5(ot).15 G(his library directory)-2.5 E(.)-.65 E .653
(The \214rst Scheme \214le loaded is)108 100.8 R/F1 10/Times-Bold@0 SF
(scm/tr)3.153 E(off)-.18 E(.scm)-.15 E F0 .652
(which contains basic de\214nitions such as the b)3.153 F .652
(uilt-in options)-.2 F .044(and option types, implementations for trof)
108 112.8 R 2.544(fr)-.25 G .044
(equests that are not output-format speci\214c, and utility functions)
-2.544 F 1.342(to be used by the back-ends or by user)108 124.8 R 1.342
(-supplied e)-.2 F 3.842(xtensions. Ne)-.15 F 1.342(xt, the \214le)-.15
F F1(scm/)3.842 E/F2 10/Times-Italic@0 SF(format)1.97 E F1(/common.scm)
.68 E F0(is)3.842 E .271(loaded, where)108 136.8 R F2(format)2.771 E F0
.271(is the v)2.771 F .271(alue of the option)-.25 F F1<ad66>2.771 E F0
.271(as gi)2.771 F -.15(ve)-.25 G 2.771(no).15 G 2.771(nt)-2.771 G .271
(he command line \(or its def)-2.771 F .271(ault v)-.1 F 2.771
(alue\). The)-.25 F 1.438
(\214le implements the translation of the basic trof)108 148.8 R 3.938
(fr)-.25 G 1.438
(equests, escape sequences, and special characters, etc.)-3.938 F 1.022
(The code dealing with macro in)108 160.8 R -.2(vo)-.4 G 1.022
(cations is loaded from).2 F F1(scm/)3.522 E F2(format)1.97 E F1(/).68 E
F2(pac)1.25 E(ka)-.2 E -.1(ge)-.1 G F1(.scm).28 E F0(where)3.523 E F2
(pac)3.523 E(ka)-.2 E -.1(ge)-.1 G F0 1.023(is the)3.623 F -.25(va)108
172.8 S(lue of the option).25 E F1<ad6d>2.5 E F0
(with the letter `m' prepended.)2.5 E(Finally)108 189.6 Q 2.59(,t)-.65 G
.09(he \214le)-2.59 F F1(.unr)2.59 E(off)-.18 E F0 .09
(is loaded from the caller')2.59 F 2.589(sh)-.55 G .089
(ome directory if present.)-2.589 F .089(Arbitrary Scheme code can be)
5.089 F 1.635(placed in this initialization \214le.)108 201.6 R 1.635
(It is typically used to assign v)6.635 F 1.635
(alues to package-speci\214c k)-.25 F -.15(ey)-.1 G -.1(wo).15 G(rd/v).1
E(alue)-.25 E .546(options according to the user')108 213.6 R 3.046(sp)
-.55 G .545(references \(by means of the)-3.046 F F2(set-option!)3.045 E
F0 .545(Scheme primiti)5.545 F .845 -.15(ve a)-.25 H 3.045(se).15 G .545
(xplained in)-3.195 F(the Programmer')108 225.6 Q 2.5(sM)-.55 G
(anual\).)-2.5 E 1.19(When the initial \214les ha)108 242.4 R 1.49 -.15
(ve b)-.2 H 1.19(een loaded, an).15 F 3.69(yt)-.15 G(rof)-3.69 E 3.691
(fi)-.25 G 1.191
(nput \214les speci\214ed in the command line are read and)-3.691 F
2.826(parsed. The)108 254.4 R .326(special \214le name `)2.826 F F1<ad>A
F0 2.825('c)C .325(an be used to indicate standard input \(usually in c\
ombination with ordi-)-2.825 F(nary \214le names\).)108 266.4 Q
(If no \214le name is gi)5 E -.15(ve)-.25 G(n,).15 E F2(unr)2.5 E(of)
-.45 E(f)-.18 E F0(reads from standard input.)2.5 E .069
(In addition to trof)108 283.2 R 2.569(fi)-.25 G .069(nput \214les, \
\214le containing Scheme code can be mentioned in the command line.)
-2.569 F(Scheme)5.07 E .911(\214les \(which by con)108 295.2 R -.15(ve)
-.4 G .911(ntion end in).15 F F1(.scm)3.411 E F0 3.411(\)a)C .91
(re loaded into the Scheme interpreter and usually contain used-)-3.411
F 1.386(de\214ned Scheme procedures to translate speci\214c macros or t\
o replace e)108 307.2 R 1.386(xisting procedures, or other user)-.15 F
(-)-.2 E .017(supplied e)108 319.2 R .017(xtensions of an)-.15 F 2.517
(yk)-.15 G 2.516(ind. Scheme)-2.517 F .016
(\214les named in the command line \(or loaded e)2.516 F .016
(xplicitly from within)-.15 F 1.006(other \214les\) are resolv)108 331.2
R 1.006(ed ag)-.15 F 1.006(ainst the directory)-.05 F F1(scm/misc/)3.506
E F0 1.007(which may hold site-speci\214c e)3.506 F 1.007
(xtensions or other)-.15 F(supplementary packages.)108 343.2 Q(trof)5 E
2.5<668c>-.25 G(les and Scheme \214les can be mix)-2.5 E
(ed freely in the command line.)-.15 E F1(OUTPUT FILES)87 360 Q F0
(Whether)108 372 Q F2(unr)3.295 E(of)-.45 E(f)-.18 E F0 .794(sends its \
output to standard output or produces one or more output \214les is not\
hard-wired)3.295 F -.2(bu)108 384 S 3.27(td).2 G .77
(etermined by the combination of output format and macro package.)-3.27
F(Generally)5.771 E 3.271(,i)-.65 G 3.271(fn)-3.271 G 3.271(ot)-3.271 G
(rof)-3.271 E 3.271(fi)-.25 G .771(nput \214les)-3.271 F .204
(are speci\214ed, output is directed to standard output, b)108 396 R
.203(ut this rule is not mandatory and may be o)-.2 F -.15(ve)-.15 G
.203(rridden by).15 F 1.284(speci\214c back-ends.)108 408 R(The)6.284 E
F1(document)3.784 E F0 1.284
(option is usually honored, although other rules may be emplo)3.784 F
1.285(yed to)-.1 F .77(determine the names of output \214les \(for e)108
420 R .77(xample, the e)-.15 F .77(xtension that implements)-.15 F F1
(\255man)3.27 E F0 .77(for a gi)3.27 F -.15(ve)-.25 G 3.27(no).15 G
(utput)-3.27 E .154(format may deri)108 432 R .454 -.15(ve t)-.25 H .154
(he name of the output \214le for a manual page from the input \214le n\
ame; see).15 F F1(unr)2.655 E(off-html-)-.18 E(man)108 444 Q F0
(\(1\)\).)A(If)108 460.8 Q F2(unr)3.425 E(of)-.45 E(f)-.18 E F0 .925
(is interrupted or quits early)3.425 F 3.425(,a)-.65 G 1.225 -.15(ny o)
-3.425 H .924(utput \214les produced so f).15 F .924
(ar may be incomplete or may contain)-.1 F .165
(wrong or inconsistent data, because se)108 472.8 R -.15(ve)-.25 G .165
(ral passes may be required to complete an output \214le \(for e).15 F
(xample,)-.15 E .266(to resolv)108 484.8 R 2.766(ec)-.15 G .265(ross re\
ferences between a set of \214les\), or because an output \214le is not\
necessarily produced as a)-2.766 F(whole, b)108 496.8 Q(ut)-.2 E F2
(unr)2.5 E(of)-.45 E(f)-.18 E F0(may w)2.5 E(ork on se)-.1 E -.15(ve)
-.25 G(ral \214les simultaneously).15 E(.)-.65 E/F3 9/Times-Bold@0 SF
(EXAMPLES)72 513.6 Q F0 2.557 -.8(To t)108 525.6 T .957(ranslate a trof)
.8 F 3.457(fd)-.25 G .957(ocument composed of tw)-3.457 F 3.458<6f8c>-.1
G .958(les and written with the \231ms\232 macro package to HTML)-3.458
F(2.0,)108 537.6 Q F2(unr)2.5 E(of)-.45 E(f)-.18 E F0
(might be called lik)2.5 E 2.5(et)-.1 G(his:)-2.5 E F1(unr)144 555.6 Q
(off \255fhtml \255ms doc.tr doc.tr)-.18 E F0 -1 -.8(Tw o)108 573.6 T
.641(options speci\214c to the combination of)3.942 F F1(\255fhtml)3.141
E F0(and)3.141 E F1(\255ms)3.141 E F0 .641
(might be added to specify a pre\214x for output)3.141 F
(\214les and to ha)108 585.6 Q .3 -.15(ve t)-.2 H(he resulting output s\
plit into separate \214les after each section \(see).15 E F1(unr)2.5 E
(off-html-ms)-.18 E F0(\(1\)\):)A F1(unr)144 603.6 Q
(off \255fhtml \255ms document=out/ split=1 doc.tr doc.tr)-.18 E F0 .196
(Additional features may be loaded from Scheme \214les speci\214ed in t\
he command line, e.)108 621.6 R(g.)1.666 E F1 -.15(hy)2.696 G(per).15 E
(.scm)-1 E F0(which)2.696 E 1.285(implements general Hyperte)108 633.6 R
1.284(xt requests \(and gets loaded from)-.15 F F1(scm/misc/)3.784 E F0
3.784(\)a)C 1.284(nd a user)-3.784 F 1.284(-supplied \214le in the)-.2 F
(current directory pro)108 645.6 Q(viding translation rules for user)
-.15 E(-de\214ned trof)-.2 E 2.5(fm)-.25 G(acros:)-2.5 E F1(unr)144
663.6 Q(off \255fhtml \255ms document=out/ split=1 h)-.18 E(yper)-.15 E
(.scm doc.scm\\)-1 E(doc.tr doc.tr)161.5 675.6 Q F3(TR)72 698.4 Q
(OFF SUPPOR)-.27 E 2.25(TA)-.36 G(ND EXTENSIONS)-2.25 E F0(As)108 710.4
Q F2(unr)3.476 E(of)-.45 E(f)-.18 E F0 .976(translates trof)3.476 F
3.476(fi)-.25 G .976
(nput into another language rather than typesetting the te)-3.476 F .977
(xt in the usual w)-.15 F(ay)-.1 E 3.477(,i)-.65 G(ts)-3.477 E .46
(processing model necessarily dif)108 722.4 R .46(fers from that of con)
-.25 F -.15(ve)-.4 G .46(ntional trof).15 F 2.96(f. F)-.25 F .46
(or a detailed description refer to the)-.15 F 203.72(1995/08/23 3)
283.22 768 R EP
%%Page: 4 4
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF(unrof)72 48 Q 392.7(f\(1\) unrof)-.25 F(f\(1\))
-.25 E(Programmer')108 84 Q 2.5(sM)-.55 G(anual.)-2.5 E .396(In brief,)
108 100.8 R/F1 10/Times-Italic@0 SF(unr)2.896 E(of)-.45 E(f)-.18 E F0
.397(copies characters from input to output, optionally performing tar)
2.896 F .397(get-language-speci\214c char)-.18 F(-)-.2 E .628
(acter translations.)108 112.8 R -.15(Fo)5.628 G 3.127(re).15 G .627
(ach request or macro in)-3.127 F -.2(vo)-.4 G .627
(cation, string or number re).2 F .627(gister reference, special char)
-.15 F(-)-.2 E(acter)108 124.8 Q 4.151(,e)-.4 G 1.651
(scape sequence, sentence end, or)-4.151 F/F2 10/Times-Bold@0 SF(eqn)
4.151 E F0 1.652(\(1\) inline equation encountered in the input stream,)
B F1(unr)4.152 E(of)-.45 E(f)-.18 E F0 .29(checks whether an \231e)108
136.8 R -.15(ve)-.25 G .29(nt v).15 F .289
(alue\232 has been speci\214ed by the Scheme code \(user)-.25 F .289
(-supplied or part of the back-)-.2 F 2.75(end\). An)108 148.8 R -2.15
-.25(ev e)2.75 H .25(nt v).25 F .25(alue is either a plain string, whic\
h is then treated as if it had been part of the input stream,)-.25 F
.171(or a Scheme procedure, which is then in)108 160.8 R -.2(vo)-.4 G
-.1(ke).2 G 2.671(da).1 G .17(nd must in turn return a string.)-2.671 F
.17(The Scheme procedures are)5.17 F 1.779(passed ar)108 172.8 R 1.779
(guments, e.)-.18 F 1.779(g. the macro or request ar)1.666 F 1.78
(guments in case of a procedure attached to a macro or)-.18 F
(request, or an escape sequence ar)108 184.8 Q
(gument for functions such as `\\f)-.18 E 2.5('o).55 G 2.5(r`)-2.5 G
(\\w'.)-2.5 E 1.513(If no e)108 201.6 R -.15(ve)-.25 G 1.513(nt v).15 F
1.512
(alue has been associated with a particular macro, string, or number re)
-.25 F(gister)-.15 E(,)-.4 E F1(unr)4.012 E(of)-.45 E(f)-.18 E F0
(checks)4.012 E .186
(whether a de\214nition has been supplied in the normal w)108 213.6 R
(ay)-.1 E 2.686(,i)-.65 G 1.666(.e)-2.686 G 2.686(.b)-1.666 G 2.686(ym)
-2.686 G .186(eans of)-2.686 F F2(.de)2.687 E F0(,)A F2(.ds)2.687 E F0
2.687(,o)C(r)-2.687 E F2(.nr)2.687 E F0 5.187(.I)C 2.687(nt)-5.187 G
.187(his case, the)-2.687 F -.25(va)108 225.6 S 1.51
(lue of the macro, string, or re).25 F 1.509
(gister is interpolated as done by ordinary trof)-.15 F 4.009(f. If)-.25
F 1.509(no de\214nition can be)4.009 F .198(found, a f)108 237.6 R .198
(allback de\214nition is look)-.1 F .198
(ed up as a last resort; and if e)-.1 F -.15(ve)-.25 G .199(rything f)
.15 F .199(ails, a w)-.1 F .199(arning is printed and the)-.1 F -2.15
-.25(ev e)108 249.6 T .419(nt is ignored.).25 F(Similarly)5.419 E 2.919
(,e)-.65 G -.15(ve)-3.169 G .419(nt procedures are in).15 F -.2(vo)-.4 G
-.1(ke).2 G 2.919(da).1 G 2.919(te)-2.919 G .419
(nd of input line, when an input \214le is opened)-2.919 F .933(or clos\
ed, at program start and termination, and for each option speci\214ed i\
n the command line; b)108 261.6 R .934(ut these)-.2 F
(procedures are called solely for their side-ef)108 273.6 Q(fects \(i.)
-.25 E(e. the return v)1.666 E(alues are ignored\).)-.25 E 1.243
(Most Scheme procedures just emit the tar)108 290.4 R 1.243
(get language')-.18 F 3.743(sr)-.55 G 1.243(epresentation of the e)
-3.743 F -.15(ve)-.25 G 1.242(nt with which the).15 F 3.742(ya)-.15 G
(re)-3.742 E 2.901(associated. Other)108 302.4 R .401
(procedures perform v)2.901 F .401(arious kinds of bookk)-.25 F .402
(eeping; the procedure associated with the)-.1 F F2(.de)2.902 E F0 .287
(request, for e)108 314.4 R .287(xample, puts the te)-.15 F .286
(xt follo)-.15 F .286(wing aside for later e)-.25 F .286
(xpansion, and the e)-.15 F -.15(ve)-.25 G .286
(nt procedures attached to).15 F .199(the requests)108 326.4 R F2(.ds)
2.699 E F0(and)2.699 E F2(.nr)2.699 E F0 .199
(and to the escape sequences `\\*' and `\\n' implement trof)2.699 F 2.7
(fs)-.25 G .2(trings and number re)-2.7 F(gis-)-.15 E 2.558(ters. This)
108 338.4 R -.1(wa)2.558 G 1.358 -.65(y, e).1 H -.15(ve).4 G 2.558(nb)
.15 G .057(asic trof)-2.558 F 2.557(ff)-.25 G .057(unctions need not be\
hard-wired and can be altered or replaced freely with-)-2.557 F
(out recompiling)108 350.4 Q F1(unr)2.5 E(of)-.45 E(f)-.18 E F0(.)1.96 E
1.892(The rule that an e)108 367.2 R -.15(ve)-.25 G 1.892(nt v).15 F
1.893(alue associated with a macro has precedence o)-.25 F -.15(ve)-.15
G 4.393(rt).15 G 1.893(he actual macro de\214nition)-4.393 F 3.426
(accommodates higher)108 379.2 R(-le)-.2 E -.15(ve)-.25 G 3.426
(l, structure-oriented tar).15 F 3.426(get languages \(such as SGML\).)
-.18 F 3.426(While the micro-)8.426 F .014
(formatting contained in a typical)108 391.2 R F2(\255ms)2.514 E F0 .015
(macro de\214nition, for e)2.515 F .015(xample, mak)-.15 F .015
(es sense to an ordinary typesetting)-.1 F .2
(program, it is usually impossible to infer the macro')108 403.2 R(s)
-.55 E F1(structur)2.699 E(al)-.15 E F0 .199(function from it \(ne)2.699
F 2.699(wp)-.25 G .199(aragraph, quotation,)-2.699 F 2.852(etc.\). On)
108 415.2 R .352(the other hand, trof)2.852 F 2.852(fd)-.25 G .352
(ocuments often de\214ne a fe)-2.852 F 2.852(wa)-.25 G .352
(dditional, simple macros that just serv)-2.852 F 2.853(ea)-.15 G 2.853
(sa)-2.853 G(n)-2.853 E(abbre)108 427.2 Q .055
(viation for a sequence of prede\214ned macros; in this case e)-.25 F
-.15(ve)-.25 G .055(nt procedures need not speci\214ed, as).15 F F1(unr)
2.555 E(of)-.45 E(f)-.18 E F0(will then perform normal macro e)108 439.2
Q(xpansion.)-.15 E F1(unr)108 456 Q(of)-.45 E(f)-.18 E F0 1.121
(usually tak)3.621 F 1.122
(es care to not rescan the characters returned by e)-.1 F -.15(ve)-.25 G
1.122(nt procedures as if their results had).15 F 1.106
(been normal input, because most e)108 468 R -.15(ve)-.25 G 1.105
(nt procedures already return code in the tar).15 F 1.105
(get language rather than)-.18 F(trof)108 480 Q 3.412(fi)-.25 G .912
(nput that can be rescanned.)-3.412 F .912(This, ho)5.912 F(we)-.25 E
-.15(ve)-.25 G 1.712 -.4(r, c).15 H .912(annot al).4 F -.1(wa)-.1 G .912
(ys be a).1 F -.2(vo)-.2 G .913(ided; for e).2 F .913(xample, if a trof)
-.15 F 3.413(fs)-.25 G(tring)-3.413 E .27(reference occurs at macro de\
\214nition time \(because `\\*' is used rather than `\\\\*'\), the stri\
ng v)108 492 R .269(alue ends up in)-.25 F .471
(the macro body and will still be rescanned when the macro is in)108 504
R -.2(vo)-.4 G -.1(ke).2 G 2.972(d. A).1 F(fe)2.972 E 2.972(wo)-.25 G
.472(ther pitf)-2.972 F .472(alls caused by dif-)-.1 F
(ferences in the processing models of trof)108 516 Q 2.5(fa)-.25 G(nd)
-2.5 E F1(unr)2.5 E(of)-.45 E(f)-.18 E F0(are listed in the B)2.5 E
(UGS section belo)-.1 E -.65(w.)-.25 G .383
(The scaling performed for the usual trof)108 532.8 R 2.883(fs)-.25 G
.383(cale indicators can be manipulated by a calling a Scheme primi-)
-2.883 F(ti)108 544.8 Q .3 -.15(ve f)-.25 H
(rom within the Scheme code implementing a particular back-end.).15 E F2
(NEW TR)87 561.6 Q(OFF REQ)-.3 E(UESTS)-.1 E F0 2.205 -.8(To a)108 573.6
T .605(id transparent output of code in the tar).8 F .605
(get language and e)-.18 F -.25(va)-.25 G .606
(luation of inline Scheme code,).25 F F1(unr)3.106 E(of)-.45 E(f)-.18 E
F0(sup-)3.106 E(ports tw)108 585.6 Q 2.5(on)-.1 G .5 -.25(ew r)-2.5 H
(equests and tw).25 E 2.5(oe)-.1 G(xtensions to the)-2.65 E F2(.ig)2.5 E
F0(\(ignore input lines\) trof)2.5 E 2.5(fr)-.25 G(equest.)-2.5 E(If)108
602.4 Q F2(.ig)2.587 E F0 .087(is called with the symbol)2.587 F F2(>>)
2.587 E F0 .087(as its \214rst ar)2.587 F .087
(gument, all input lines up to \(b)-.18 F .086
(ut not including\) the terminat-)-.2 F(ing)108 614.4 Q F2(.>>)3.106 E
F0 .606(are sent to the current output \214le.)3.106 F .606
(Example: when translating to the Hyperte)5.606 F .607
(xt Markup Language,)-.15 F
(the construct could be used to emit literal HTML code lik)108 626.4 Q
2.5(et)-.1 G(his:)-2.5 E F2(.ig >>)144 644.4 Q(<addr)144 656.4 Q(ess>)
-.18 E(Bart Simpson<br>)144 668.4 Q(Spring\214eld)144 680.4 Q(</addr)144
692.4 Q(ess>)-.18 E(.>>)144 704.4 Q F0 1.6 -.8(To p)108 727.2 T
(roduce a single line of output, the ne).8 E 2.5(wr)-.25 G(equest)-2.5 E
F2(.>>)2.5 E F0(can be used as in this HTML e)2.5 E(xample:)-.15 E
203.72(1995/08/23 4)283.22 768 R EP
%%Page: 5 5
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF(unrof)72 48 Q 392.7(f\(1\) unrof)-.25 F(f\(1\))
-.25 E/F1 10/Times-Bold@0 SF(.>> "<code>r)144 84 Q(esult = i+1;</code>")
-.18 E F0 1.659(If the)108 106.8 R F1(.ig)4.159 E F0 1.659
(request is called with the ar)4.159 F(gument)-.18 E F1(##,)4.158 E F0
-2.15 -.25(ev e)4.158 H 1.658(rything up to the terminating).25 F F1
(.##)4.158 E F0 1.658(is passed to the)4.158 F .713
(Scheme interpreter for e)108 118.8 R -.25(va)-.25 G 3.213
(luation. This).25 F(allo)3.213 E .713
(ws users to embed Scheme code in a trof)-.25 F 3.213(fd)-.25 G .714
(ocument which is)-3.213 F -.15(exe)108 130.8 S 1.393
(cuted when the document is processed by).15 F/F2 10/Times-Italic@0 SF
(unr)3.893 E(of)-.45 E(f)-.18 E F0 6.393(.O)1.96 G 1.393
(ne use of this construct is to pro)-6.393 F 1.393(vide a Scheme)-.15 F
-2.15 -.25(ev e)108 142.8 T 1.858(nt procedure for a user).25 F 1.859(-\
de\214ned macro by placing the corresponding Scheme de\214nition in the\
same)-.2 F .423(source \214le right belo)108 154.8 R 2.923(wt)-.25 G
.422(he trof)-2.923 F 2.922(fm)-.25 G .422(acro de\214nition.)-2.922 F
(Similarly)5.422 E 2.922(,t)-.65 G .422(he request)-2.922 F F1(.##)2.922
E F0 .422(can be used to e)2.922 F -.25(va)-.25 G .422(luate a short).25
F(S-e)108 166.8 Q(xpression; all ar)-.15 E(guments to the request are c\
oncatenated and then passed to the Scheme interpreter)-.18 E(.)-.55 E
.763(Note that inline Scheme code is a potentially dangerous feature, a\
s a document recei)108 183.6 R -.15(ve)-.25 G 3.263(db).15 G 3.264(ys)
-3.263 G .764(omeone else)-3.264 F .456
(may contain embedded code that does something une)108 195.6 R .456
(xpected when the \214le is processed by)-.15 F F2(unr)2.956 E(of)-.45 E
(f)-.18 E F0(\(b)2.956 E .455(ut it is)-.2 F
(probably not more dangerous than the standard trof)108 207.6 Q(f)-.25 E
F1(.pi)2.5 E F0(request or the)2.5 E F1(.sy)2.5 E F0(request of)2.5 E F2
(ditr)2.5 E(of)-.45 E(f)-.18 E F0(\).)1.96 E F2(unr)108 224.4 Q(of)-.45
E(f)-.18 E F0(de\214nes the follo)2.5 E(wing ne)-.25 E 2.5(wr)-.25 G
(ead-only number re)-2.5 E(gisters:)-.15 E F1(.U)108 241.2 Q F0 .402
(This re)26.28 F .403(gister al)-.15 F -.1(wa)-.1 G .403(ys e).1 F .403
(xpand to 1.)-.15 F .403
(It can be used by macros to determine whether the document is)5.403 F
(being processed by)144 253.2 Q F2(unr)2.5 E(of)-.45 E(f)-.18 E F0(.)
1.96 E F1(.C)108 270 Q F0 .28(Expands to 1 if trof)26.28 F 2.78(fc)-.25
G .279(ompatibility mode has been enabled by using the option)-2.78 F F1
<ad43>2.779 E F0 2.779(,t)C 2.779(o0o)-2.779 G(therwise.)-2.779 E
(The follo)108 286.8 Q(wing ne)-.25 E 2.5(we)-.25 G
(scape sequences are a)-2.5 E -.25(va)-.2 G
(ilable in a macro body during macro e).25 E(xpansion:)-.15 E F1($0)108
303.6 Q F0(The name of the current macro.)26 E F1($*)108 320.4 Q F0
(The concatenation of all ar)26 E(guments, separated by spaces.)-.18 E
F1($@)108 337.2 Q F0 1.586(The concatenation of all ar)21.7 F 1.586
(guments, separated by spaces, and with each ar)-.18 F 1.587
(gument enclosed by)-.18 F(double quotes.)144 349.2 Q .151
(The names of strings, macros, number re)108 366 R .151
(gisters, and fonts may be of an)-.15 F 2.65(yl)-.15 G 2.65(ength. As)
-2.65 F(in)2.65 E F2(gr)2.65 E(of)-.45 E(f)-.18 E F0 2.65(,s)1.96 G .15
(quare brack-)-2.65 F(ets can be used for names of arbitrary length:)108
378 Q F1(\\f[f)144 396 Q 5(ont] \\*[string] \\n[numr)-.25 F 5(eg] ...)
-.18 F F0 .278(There is no limit on the number of macro ar)108 418.8 R
.278(guments, and the follo)-.18 F .279
(wing syntax can be used to reference the)-.25 F
(10th, 11th, etc. macro ar)108 430.8 Q(gument:)-.18 E F1 5
(\\$\(12 \\$[12] \\$[123])144 448.8 R F0 1.373(Unless trof)108 471.6 R
3.873(fc)-.25 G 1.372(ompatibility mode has been enabled, the ar)-3.873
F 1.372(guments to the)-.18 F F2(gr)3.872 E(of)-.45 E(f)-.18 E F0 1.372
(-speci\214c escape sequences)1.96 F(`\\A)108 483.6 Q .87
(', `\\C', '\\L)-1.11 F .871(', '\\N', '\\R', '\\V', '\\Y', and '\\Z' a\
re recognized and parsed, so that e)-.92 F -.15(ve)-.25 G .871
(nt procedures can be).15 F
(implemented correctly for these escape sequences.)108 495.6 Q/F3 9
/Times-Bold@0 SF(SEE ALSO)72 512.4 Q F1(unr)108 524.4 Q(off-html)-.18 E
F0(\(1\),)A F1(unr)2.5 E(off-html-man)-.18 E F0(\(1\),)A F1(unr)2.5 E
(off-html-ms)-.18 E F0(\(1\);)A F1(tr)108 536.4 Q(off)-.18 E F0(\(1\),)A
F1(gr)2.5 E(off)-.18 E F0(\(1\);)A F1(elk)2.5 E F0(\(1\).)A(Unrof)108
553.2 Q 2.5(fP)-.25 G(rogrammer')-2.5 E 2.5(sM)-.55 G(anual.)-2.5 E
(http://www)108 570 Q(.informatik.uni-bremen.de/~net/unrof)-.65 E(f)-.25
E F3 -.45(AU)72 586.8 S(THOR).45 E F0(Oli)108 598.8 Q -.15(ve)-.25 G 2.5
(rL).15 G(aumann, net@cs.tu-berlin.de)-2.5 E F3 -.09(BU)72 615.6 S(GS)
.09 E F0 3.865(An)108 627.6 S 1.365(umber of lo)-3.865 F(w-le)-.25 E
-.15(ve)-.25 G 3.865(lf).15 G 1.365(ormatting features of trof)-3.865 F
3.865(f\()-.25 G 1.364
(such as the absolute position indicator in numerical)-3.865 F -.15(ex)
108 639.6 S 1.202(pressions\) are not yet supported by).15 F F2(unr)
3.703 E(of)-.45 E(f)-.18 E F0 -.15(ve)3.703 G 1.203
(rsion 1.0, which is not critical for higher).15 F(-le)-.2 E -.15(ve)
-.25 G 1.203(l, structure-).15 F(oriented tar)108 651.6 Q
(get languages such as the Hyperte)-.18 E(xt Markup Language.)-.15 E(Di)
108 668.4 Q -.15(ve)-.25 G(rsions are not supported, although speci\214\
c back-ends are free to add this functionality).15 E(.)-.65 E .358
(Special characters are not treated right in certain conte)108 685.2 R
.357(xts; in particular)-.15 F 2.857(,s)-.4 G .357
(pecial characters may not be used)-2.857 F(in place of plain character\
s where the characters act as some kind of delimiter as in)108 697.2 Q
F1(.if \\\(bsf)144 715.2 Q(oo\\\(bsbar\\\(bs ...)-.25 E F0 203.72
(1995/08/23 5)283.22 768 R EP
%%Page: 6 6
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF(unrof)72 48 Q 392.7(f\(1\) unrof)-.25 F(f\(1\))
-.25 E(Spaces in an)108 84 Q/F1 10/Times-Bold@0 SF(.if)2.5 E F0
(condition do not w)2.5 E(ork; e.)-.1 E(g. the follo)1.666 E(wing f)-.25
E(ails:)-.1 E F1(.if ' ' ' ...)144 102 Q F0 .513
(Conditional input is subject to string and number re)108 124.8 R .513
(gister e)-.15 F .513(xpansion e)-.15 F -.15(ve)-.25 G 3.013(ni).15 G
3.013(ft)-3.013 G .513(he corresponding if-condition)-3.013 F -.25(eva)
108 136.8 S(luates to f).25 E(alse.)-.1 E(There are no number re)108
153.6 Q(gister formats, i.)-.15 E(e. the request)1.666 E F1(.af)2.5 E F0
(does not w)2.5 E(ork.)-.1 E(The set of punctuation marks that indicate\
end of sentence should be con\214gurable.)108 170.4 Q 1.224
(Empty input lines and leading space should trigger a special e)108
187.2 R -.15(ve)-.25 G 1.223(nt, so that their break semantics can be)
.15 F(implemented correctly)108 199.2 Q(.)-.65 E 2.5(Ac)108 216 S
(omment in a line by itself currently does not generate a blank line.)
-2.5 E 203.72(1995/08/23 6)283.22 768 R EP
%%Trailer
end
%%EOF

2436
www/examples/RELNOTES.ms Normal file

File diff suppressed because it is too large Load Diff

218
www/examples/XtSetArg.3 Normal file
View File

@ -0,0 +1,218 @@
.\" Copyright 1993 X Consortium
.\"
.\" Permission is hereby granted, free of charge, to any person obtaining
.\" a copy of this software and associated documentation files (the
.\" "Software"), to deal in the Software without restriction, including
.\" without limitation the rights to use, copy, modify, merge, publish,
.\" distribute, sublicense, and/or sell copies of the Software, and to
.\" permit persons to whom the Software is furnished to do so, subject to
.\" the following conditions:
.\"
.\" The above copyright notice and this permission notice shall be
.\" included in all copies or substantial portions of the Software.
.\"
.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
.\" EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
.\" OTHER DEALINGS IN THE SOFTWARE.
.\"
.\" Except as contained in this notice, the name of the X Consortium shall
.\" not be used in advertising or otherwise to promote the sale, use or
.\" other dealings in this Software without prior written authorization
.\" from the X Consortium.
.ds tk X Toolkit
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xI Intrinsics
.ds xW X Toolkit Athena Widgets \- C Language Interface
.ds xL Xlib \- C Language X Interface
.ds xC Inter-Client Communication Conventions Manual
.ds Rn 3
.ds Vn 2.2
.hw XtSet-Arg XtMerge-Arg-Lists wid-get
.na
.de Ds
.nf
.\\$1D \\$2 \\$1
.ft 1
.ps \\n(PS
.\".if \\n(VS>=40 .vs \\n(VSu
.\".if \\n(VS<=39 .vs \\n(VSp
..
.de De
.ce 0
.if \\n(BD .DF
.nr BD 0
.in \\n(OIu
.if \\n(TM .ls 2
.sp \\n(DDu
.fi
..
.de FD
.LP
.KS
.TA .5i 3i
.ta .5i 3i
.nf
..
.de FN
.fi
.KE
.LP
..
.de IN \" send an index entry to the stderr
..
.de C{
.KS
.nf
.D
.\"
.\" choose appropriate monospace font
.\" the imagen conditional, 480,
.\" may be changed to L if LB is too
.\" heavy for your eyes...
.\"
.ie "\\*(.T"480" .ft L
.el .ie "\\*(.T"300" .ft L
.el .ie "\\*(.T"202" .ft PO
.el .ie "\\*(.T"aps" .ft CW
.el .ft R
.ps \\n(PS
.ie \\n(VS>40 .vs \\n(VSu
.el .vs \\n(VSp
..
.de C}
.DE
.R
..
.de Pn
.ie t \\$1\fB\^\\$2\^\fR\\$3
.el \\$1\fI\^\\$2\^\fP\\$3
..
.de ZN
.ie t \fB\^\\$1\^\fR\\$2
.el \fI\^\\$1\^\fP\\$2
..
.de NT
.ne 7
.ds NO Note
.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
.ie n .sp
.el .sp 10p
.TB
.ce
\\*(NO
.ie n .sp
.el .sp 5p
.if '\\$1'C' .ce 99
.if '\\$2'C' .ce 99
.in +5n
.ll -5n
.R
..
. \" Note End -- doug kraft 3/85
.de NE
.ce 0
.in -5n
.ll +5n
.ie n .sp
.el .sp 10p
..
.ny0
.TH XtSetArg 3Xt "Release 6" "X Version 11" "XT FUNCTIONS"
.SH NAME
XtSetArg, XtMergeArgLists \- set and merge ArgLists
.SH SYNTAX
XtSetArg(\fIarg\fP, \fIname\fP, \fIvalue\fP)
.br
Arg \fIarg\fP;
.br
String \fIname\fP;
.br
XtArgVal \fIvalue\fP;
.LP
ArgList XtMergeArgLists(\fIargs1\fP, \fInum_args1\fP, \fIargs2\fP, \
\fInum_args2\fP)
.br
ArgList \fIargs1\fP;
.br
Cardinal \fInum_args1\fP;
.br
ArgList \fIargs2\fP;
.br
Cardinal \fInum_args2\fP;
.SH ARGUMENTS
.IP \fIarg\fP 1i
Specifies the name-value pair to set.
.IP \fIargs1\fP 1i
Specifies the first
.ZN ArgList .
.IP \fIargs2\fP 1i
Specifies the second
.ZN ArgList .
.IP \fInum_args1\fP 1i
Specifies the number of arguments in the first argument list.
.IP \fInum_args2\fP 1i
Specifies the number of arguments in the second argument list.
.IP \fIname\fP 1i
Specifies the name of the resource.
.IP \fIvalue\fP 1i
Specifies the value of the resource if it will fit in an
.ZN XtArgVal
or the address.
.SH DESCRIPTION
The
.ZN XtSetArg
function is usually used in a highly stylized manner to
minimize the probability of making a mistake; for example:
.LP
.Ds
.TA .5i 3i
.ta .5i 3i
Arg args[20];
int n;
n = 0;
XtSetArg(args[n], XtNheight, 100); n++;
XtSetArg(args[n], XtNwidth, 200); n++;
XtSetValues(widget, args, n);
.De
.LP
Alternatively, an application can statically declare the argument list
and use
.ZN XtNumber :
.LP
.Ds
.TA .5i 3i
.ta .5i 3i
static Args args[] = {
{XtNheight, (XtArgVal) 100},
{XtNwidth, (XtArgVal) 200},
};
XtSetValues(Widget, args, XtNumber(args));
.De
.LP
Note that you should not use auto-increment or auto-decrement
within the first argument to
.ZN XtSetArg .
.ZN XtSetArg
can be implemented as a macro that dereferences the first argument twice.
.LP
The
.ZN XtMergeArgLists
function allocates enough storage to hold the combined
.ZN ArgList
structures and copies them into it.
Note that it does not check for duplicate entries.
When it is no longer needed,
free the returned storage by using
.ZN XtFree .
.SH "SEE ALSO"
XtOffset(3Xt)
.br
\fI\*(xT\fP
.br
\fI\*(xL\fP

View File

@ -0,0 +1,126 @@
<html>
<head>
<!-- This file has been generated by unroff 1.0, 03/21/96 19:25:31. -->
<!-- Do not edit! -->
<link rev="made" href="mailto:net@informatik.uni-bremen.de">
<!-- Copyright 1993 X Consortium -->
<!-- Permission is hereby granted, free of charge, to any person obtaining -->
<!-- a copy of this software and associated documentation files (the -->
<!-- "Software"), to deal in the Software without restriction, including -->
<!-- without limitation the rights to use, copy, modify, merge, publish, -->
<!-- distribute, sublicense, and/or sell copies of the Software, and to -->
<!-- permit persons to whom the Software is furnished to do so, subject to -->
<!-- the following conditions: -->
<!-- The above copyright notice and this permission notice shall be -->
<!-- included in all copies or substantial portions of the Software. -->
<!-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -->
<!-- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -->
<!-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -->
<!-- IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR -->
<!-- OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -->
<!-- ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -->
<!-- OTHER DEALINGS IN THE SOFTWARE. -->
<!-- Except as contained in this notice, the name of the X Consortium shall -->
<!-- not be used in advertising or otherwise to promote the sale, use or -->
<!-- other dealings in this Software without prior written authorization -->
<!-- from the X Consortium. -->
<!-- send an index entry to the stderr -->
<!-- Note End -- doug kraft 3/85 -->
<title>Manual page for XtSetArg(3Xt)</title>
</head>
<body>
<h2>
XtSetArg, XtMergeArgLists - set and merge ArgLists
<hr></h2>
<h2>SYNTAX</h2>
XtSetArg(<i>arg</i>, <i>name</i>, <i>value</i>)
<br>
Arg <i>arg</i>;
<br>
String <i>name</i>;
<br>
XtArgVal <i>value</i>;
<p>
ArgList XtMergeArgLists(<i>args1</i>, <i>num_args1</i>, <i>args2</i>, <i>num_args2</i>)
<br>
ArgList <i>args1</i>;
<br>
Cardinal <i>num_args1</i>;
<br>
ArgList <i>args2</i>;
<br>
Cardinal <i>num_args2</i>;
<h2>ARGUMENTS</h2>
<dl>
<dt><i>arg</i><dd>
Specifies the name-value pair to set.<tt> </tt>
<dt><i>args1</i><dd>
Specifies the first
<b>ArgList</b>.<tt> </tt>
<dt><i>args2</i><dd>
Specifies the second
<b>ArgList</b>.<tt> </tt>
<dt><i>num_args1</i><dd>
Specifies the number of arguments in the first argument list.<tt> </tt>
<dt><i>num_args2</i><dd>
Specifies the number of arguments in the second argument list.<tt> </tt>
<dt><i>name</i><dd>
Specifies the name of the resource.<tt> </tt>
<dt><i>value</i><dd>
Specifies the value of the resource if it will fit in an
<b>XtArgVal</b>
or the address.<tt> </tt>
</dl>
<h2>DESCRIPTION</h2>
The
<b>XtSetArg</b>
function is usually used in a highly stylized manner to
minimize the probability of making a mistake; for example:
<p>
<pre>
Arg args[20];
int n;
n = 0;
XtSetArg(args[n], XtNheight, 100); n++;
XtSetArg(args[n], XtNwidth, 200); n++;
XtSetValues(widget, args, n);
</pre>
<p>
Alternatively, an application can statically declare the argument list
and use
<b>XtNumber</b>:
<p>
<pre>
static Args args[] = {
{XtNheight, (XtArgVal) 100},
{XtNwidth, (XtArgVal) 200},
};
XtSetValues(Widget, args, XtNumber(args));
</pre>
<p>
Note that you should not use auto-increment or auto-decrement
within the first argument to
<b>XtSetArg</b>.<tt> </tt>
<b>XtSetArg</b>
can be implemented as a macro that dereferences the first argument twice.<tt> </tt>
<p>
The
<b>XtMergeArgLists</b>
function allocates enough storage to hold the combined
<b>ArgList</b>
structures and copies them into it.<tt> </tt>
Note that it does not check for duplicate entries.<tt> </tt>
When it is no longer needed,
free the returned storage by using
<b>XtFree</b>.<tt> </tt>
<h2>SEE ALSO</h2>
XtOffset(3Xt)
<br>
<i>X Toolkit Intrinsics - C Language Interface</i>
<br>
<i>Xlib - C Language X Interface</i>
<p><hr>
Markup created by <em>unroff</em> 1.0,&#160;<tt> </tt>&#160;<tt> </tt>March 21, 1996.
</body>
</html>

278
www/examples/pathconf.2 Normal file
View File

@ -0,0 +1,278 @@
'\" t
.\" @(#)pathconf.2v 1.20 90/02/15 SMI; new for 4.1, POSIX
.TH PATHCONF 2V "21 January 1990"
.SH NAME
pathconf, fpathconf \- query file system related limits and options
.SH SYNOPSIS
.nf
.ft B
#include <unistd.h>
.ft R
.fi
.LP
.nf
.ft B
long pathconf(path, name)
char *path;
int name;
.ft R
.fi
.LP
.nf
.ft B
long fpathconf(fd, name)
int fd, name;
.ft R
.fi
.SH DESCRIPTION
.IX "pathconf get" "" "\fLpathconf()\fP \(em query file system related limits and options" ""
.IX "fpathconf get" "" "\fLfpathconf()\fP \(em query file system related limits and options" ""
.IX path "query file system related limits and options"
.IX configure "query file system related limits and options"
.LP
.B pathconf(\|)
and
.B fpathconf(\|)
provide a
method for the application to determine the current value of a
configurable limit or option that is associated with a file
or directory,
.LP
For
.BR pathconf(\|) ,
.I path
points to the pathname of a file or
directory.
For
.BR fpathconf(\|) ,
.I fd
is an open file descriptor.
.LP
The convention used throughout sections 2 and 3
is that
.SM {LIMIT}
means that
.SM LIMIT
is something that
can change from file to file (due to multiple file systems on the same
machine). The actual value for
.SM LIMIT is typically
not defined in any header file since
it is not invariant. Instead, pathconf must be called to retrieve the value.
.B pathconf(\|)
understands a list of flags that are named similarly to the value
being queried.
.LP
The following table lists the name and meaning of each conceptual limit.
.LP
.RS
.TS
lI lI
l l .
Limit Meaning Notes
_
\s-1{LINK_MAX}\s0 Max links to an object. 1
\s-1{MAX_CANON}\s0 Max tty input line size. 2
\s-1{MAX_INPUT}\s0 Max packet a tty can accept at once. 2
\s-1{NAME_MAX}\s0 Max filename length. 3,4
\s-1{PATH_MAX}\s0 Max pathname length. 4,5
\s-1{PIPE_BUF}\s0 Pipe buffer size. 6
\s-1{_POSIX_CHOWN_RESTRICTED}\s0 T{
If true only root can chown() files,
otherwise anyone may give away
files.
T} 7
\s-1{_POSIX_NO_TRUNC}\s0 T{
If false filenames > {NAME_MAX} are
truncated, otherwise an error.
T} 3,4
\s-1{_POSIX_VDISABLE}\s0 A char to use to disable tty special chars. 2
.TE
.RE
.LP
The following table lists the name of each limit, the flag
passed to
.B pathconf(\|)
to retrieve the value of each variable, and some notes about usage.
.LP
.RS
.TS
lI lI lI
l lB l .
Limit Pathconf Flag Notes
_
\s-1{LINK_MAX}\s0 \s-1_PC_LINK_MAX\s0 1
\s-1{MAX_CANON}\s0 \s-1_PC_MAX_CANON\s0 2
\s-1{MAX_INPUT}\s0 \s-1_PC_MAX_INPUT\s0 2
\s-1{NAME_MAX}\s0 \s-1_PC_NAME_MAX\s0 3,4
\s-1{PATH_MAX}\s0 \s-1_PC_PATH_MAX\s0 4,5
\s-1{PIPE_BUF}\s0 \s-1_PC_PIPE_BUF\s0 6
\s-1{_POSIX_CHOWN_RESTRICTED}\s0 \s-1_PC_CHOWN_RESTRICTED\s0 7,8
\s-1{_POSIX_NO_TRUNC}\s0 \s-1_PC_NO_TRUNC\s0 3,4,8
\s-1{_POSIX_VDISABLE}\s0 \s-1_PC_VDISABLE\s0 2,8
.TE
.RE
.LP
.LP
The following notes apply to the entries in the preceding table.
.LP
.TP
1
If
.I path
or
.I fd
refers to a directory, the value returned applies to the
directory itself.
.TP
2
The behavior is undefined if
.I path
or
.I fd
does not refer to a terminal file.
.TP
3
If
.I path
or
.I fd
refers to a directory, the value returned applies to the
file names within the directory.
.TP
4
The behavior is undefined if
.I path
or
.I fd
does not refer to a directory.
.TP
5
If
.I path
or
.I fd
refers to a directory, the value returned is the maximum
length of a relative pathname when the specified directory
is the working directory.
.TP
6
If
.I path
refers to a
.SM FIFO\s0,
or
.I fd
refers to a pipe of
.SM FIFO\s-1,
the value returned applies to the referenced object itself.
If
.I path
or
.I fd
refers to a directory, the value returned applies to any
.SM FIFO\s-1s
that exist or can be created within the directory.
If
.I path
or
.I fd
refer to any other type of file, the behavior is undefined.
.TP
7
If
.I path
or
.I fd
refer to a directory, the value returned applies
to any files, other than directories, that
exist or can be created within the directory.
.TP
8
The option in question is a boolean; the return value is 0 or 1.
.SH RETURN VALUES
.LP
On success,
.B pathconf(\|)
and
.B fpathconf(\|)
return
the current
variable value for the file or directory.
On failure,
they return
\-1
and set
.B errno
to indicate the error.
.LP
If the variable corresponding to
.I name
has no limit for the path or file
descriptor,
.B pathconf(\|)
and
.B fpathconf(\|)
return \-1 without changing
.BR errno .
.SH ERRORS
.LP
.B pathconf(\|)
and
.B fpathconf(\|)
may set
.B errno
to:
.TP 20
.SM EINVAL
The value of name is invalid.
.LP
For each of the following conditions,
if the condition is detected,
.B pathconf(\|)
fails and sets
.B errno
to:
.TP 20
.SM EACCES
Search permission is denied for a component of the path prefix.
.TP
.SM EINVAL
The implementation does not support an association of the
variable name with the specified file.
.TP
.SM ENAMETOOLONG
The length of the path argument exceeds
.SM {PATH_MAX}\s0.
.IP
A pathname component is longer than
.SM {NAME_MAX}
while
.SM {POSIX_NO_TRUNC}
is in effect.
.TP
.SM ENOENT
The named file does not exist.
.IP
.I path
points to an empty string.
.TP
.SM ENOTDIR
A component of the path prefix is not a directory.
.LP
For each of the following conditions,
if the condition is detected,
.B fpathconf(\|)
fails and sets
.B errno
to:
.TP 20
.SM EBADF
The
.I fd
argument is not a valid file descriptor.
.TP
.SM EINVAL
The implementation does not support an association of the
variable name with the specified file.

View File

@ -0,0 +1,279 @@
<html>
<head>
<!-- This file has been generated by unroff 1.0, 03/21/96 19:25:27. -->
<!-- Do not edit! -->
<link rev="made" href="mailto:net@informatik.uni-bremen.de">
<!-- t -->
<!-- @(#)pathconf.2v 1.20 90/02/15 SMI; new for 4.1, POSIX -->
<title>Manual page for PATHCONF(2V)</title>
</head>
<body>
<h2>
pathconf, fpathconf - query file system related limits and options
<hr></h2>
<h2>SYNOPSIS</h2>
<pre>
<b>#include &lt;unistd.h&gt;
</b></pre>
<p>
<pre>
<b>long pathconf(path, name)
char *path;
int name;
</b></pre>
<p>
<pre>
<b>long fpathconf(fd, name)
int fd, name;
</b></pre>
<h2>DESCRIPTION</h2>
<p>
<b>pathconf()
</b>and
<b>fpathconf()
</b>provide a
method for the application to determine the current value of a
configurable limit or option that is associated with a file
or directory,
<p>
For
<b>pathconf()</b>,
<i>path
</i>points to the pathname of a file or
directory.<tt> </tt>
For
<b>fpathconf()</b>,
<i>fd
</i>is an open file descriptor.<tt> </tt>
<p>
The convention used throughout sections 2 and 3
is that
{LIMIT}
means that
LIMIT
is something that
can change from file to file (due to multiple file systems on the same
machine). The actual value for
LIMIT is typically
not defined in any header file since
it is not invariant. Instead, pathconf must be called to retrieve the value.<tt> </tt>
<b>pathconf()
</b>understands a list of flags that are named similarly to the value
being queried.
<p>
The following table lists the name and meaning of each conceptual limit.<tt> </tt>
<p>
<dl><dt><dd>
<pre>
Limit Meaning
------------------------------------------------------------------------
{LINK_MAX} Max links to an object.
{MAX_CANON} Max tty input line size.
{MAX_INPUT} Max packet a tty can accept at once.
{NAME_MAX} Max filename length.
{PATH_MAX} Max pathname length.
{PIPE_BUF} Pipe buffer size.
{_POSIX_CHOWN_RESTRICTED} If true only root can chown() files, other­
wise anyone may give away files.
{_POSIX_NO_TRUNC} If false filenames &gt; {NAME_MAX} are trun­
cated, otherwise an error.
{_POSIX_VDISABLE} A char to use to disable tty special chars.
</pre>
</dl>
<p>
The following table lists the name of each limit, the flag
passed to
<b>pathconf()
</b>to retrieve the value of each variable, and some notes about usage.<tt> </tt>
<p>
<dl><dt><dd>
<pre>
Limit Pathconf Flag Notes
---------------------------------------------------------
{LINK_MAX} _PC_LINK_MAX 1
{MAX_CANON} _PC_MAX_CANON 2
{MAX_INPUT} _PC_MAX_INPUT 2
{NAME_MAX} _PC_NAME_MAX 3,4
{PATH_MAX} _PC_PATH_MAX 4,5
{PIPE_BUF} _PC_PIPE_BUF 6
{_POSIX_CHOWN_RESTRICTED} _PC_CHOWN_RESTRICTED 7,8
{_POSIX_NO_TRUNC} _PC_NO_TRUNC 3,4,8
{_POSIX_VDISABLE} _PC_VDISABLE 2,8
</pre>
</dl>
<p>
<p>
The following notes apply to the entries in the preceding table.<tt> </tt>
<p>
<dl>
<dt>1
<dd>
If
<i>path
</i>or
<i>fd
</i>refers to a directory, the value returned applies to the
directory itself.<tt> </tt>
<dt>2
<dd>
The behavior is undefined if
<i>path
</i>or
<i>fd
</i>does not refer to a terminal file.<tt> </tt>
<dt>3
<dd>
If
<i>path
</i>or
<i>fd
</i>refers to a directory, the value returned applies to the
file names within the directory.<tt> </tt>
<dt>4
<dd>
The behavior is undefined if
<i>path
</i>or
<i>fd
</i>does not refer to a directory.<tt> </tt>
<dt>5
<dd>
If
<i>path
</i>or
<i>fd
</i>refers to a directory, the value returned is the maximum
length of a relative pathname when the specified directory
is the working directory.<tt> </tt>
<dt>6
<dd>
If
<i>path
</i>refers to a
FIFO,
or
<i>fd
</i>refers to a pipe of
FIFO,
the value returned applies to the referenced object itself.<tt> </tt>
If
<i>path
</i>or
<i>fd
</i>refers to a directory, the value returned applies to any
FIFOs
that exist or can be created within the directory.<tt> </tt>
If
<i>path
</i>or
<i>fd
</i>refer to any other type of file, the behavior is undefined.<tt> </tt>
<dt>7
<dd>
If
<i>path
</i>or
<i>fd
</i>refer to a directory, the value returned applies
to any files, other than directories, that
exist or can be created within the directory.<tt> </tt>
<dt>8
<dd>
The option in question is a boolean; the return value is 0 or 1.<tt> </tt>
</dl>
<h2>RETURN VALUES</h2>
<p>
On success,
<b>pathconf()
</b>and
<b>fpathconf()
</b>return
the current
variable value for the file or directory.<tt> </tt>
On failure,
they return
-1
and set
<b>errno
</b>to indicate the error.<tt> </tt>
<p>
If the variable corresponding to
<i>name
</i>has no limit for the path or file
descriptor,
<b>pathconf()
</b>and
<b>fpathconf()
</b>return -1 without changing
<b>errno</b>.<tt> </tt>
<h2>ERRORS</h2>
<p>
<b>pathconf()
</b>and
<b>fpathconf()
</b>may set
<b>errno
</b>to:
<dl>
<dt>EINVAL
<dd>
The value of name is invalid.<tt> </tt>
</dl>
<p>
For each of the following conditions,
if the condition is detected,
<b>pathconf()
</b>fails and sets
<b>errno
</b>to:
<dl>
<dt>EACCES
<dd>
Search permission is denied for a component of the path prefix.<tt> </tt>
<dt>EINVAL
<dd>
The implementation does not support an association of the
variable name with the specified file.<tt> </tt>
<dt>ENAMETOOLONG
<dd>
The length of the path argument exceeds
{PATH_MAX}.<tt> </tt>
<dt><dd><p>
A pathname component is longer than
{NAME_MAX}
while
{POSIX_NO_TRUNC}
is in effect.<tt> </tt>
<dt>ENOENT
<dd>
The named file does not exist.<tt> </tt>
<dt><dd><p>
<i>path
</i>points to an empty string.<tt> </tt>
<dt>ENOTDIR
<dd>
A component of the path prefix is not a directory.<tt> </tt>
</dl>
<p>
For each of the following conditions,
if the condition is detected,
<b>fpathconf()
</b>fails and sets
<b>errno
</b>to:
<dl>
<dt>EBADF
<dd>
The
<i>fd
</i>argument is not a valid file descriptor.<tt> </tt>
<dt>EINVAL
<dd>
The implementation does not support an association of the
variable name with the specified file.<tt> </tt>
</dl>
<p><hr>
Markup created by <em>unroff</em> 1.0,&#160;<tt> </tt>&#160;<tt> </tt>March 21, 1996.
</body>
</html>

68
www/examples/r-1.html Normal file
View File

@ -0,0 +1,68 @@
<html>
<head>
<!-- This file has been generated by unroff 1.0, 03/21/96 19:25:18. -->
<!-- Do not edit! -->
<link rev="made" href="mailto:net@informatik.uni-bremen.de">
<title>X11R6 Release Notes, section 1.</title>
</head><body>
<h2><a name="section1">1.</a>&#160;<tt> </tt>Easy Build Instructions
<a name="toc1">&#160;</a>
</h2>
<p>
This quick summary is no substitute for reading the full build
instructions later in this document.<tt> </tt>
<p>
Edit <b>xc/config/cf/site.def</b> for local preferences.<tt> </tt>
If you want to build with <i>gcc</i>
uncomment the <b>HasGcc2</b> line.<tt> </tt>
If you want to install somewhere other than <b>/usr/X11R6</b>,
change
<b>ProjectRoot</b>. (Do <i>not</i> use <b>DESTDIR</b>.)
<p>
If any fixes have been released by the X Consortium,
stop here and follow the instructions at the top of each patch,
but don't do any of the <i>make</i>
commands suggested in the patches. Then continue here.<tt> </tt>
<p>
Check the appropriate <b>xc/config/cf/</b><i>vendor</i><b>.cf</b> file to
make sure that <b>OSMajorVersion</b> and <b>OSMinorVersion</b> are
set correctly for your system (change them if necessary).<tt> </tt>
<p>
See if there is a <b>BootstrapCFlags</b> mentioned in the comments
in the <i>vendor</i><b>.cf</b> file.<tt> </tt>
If there isn't one, <i>cd</i> to the <b>xc</b> directory and type:
<dl><dt><dd>
<pre>
make World &gt;&amp; world.log
</pre>
</dl>
<p>
If there is a <b>BootstrapCFlags</b>, take its value
and type:
<dl><dt><dd>
<pre>
make World BOOTSTRAPCFLAGS="<i>value</i>" &gt;&amp; world.log
</pre>
</dl>
<p>
Do not call the output file ``make.log''.<tt> </tt>
If the build is successful, you can install most of it with:
<dl><dt><dd>
<pre>
make install &gt;&amp; install.log
</pre>
</dl>
<p>
You can install manual pages with:
<dl><dt><dd>
<pre>
make install.man &gt;&amp; man.log
</pre>
</dl>
<p>
While the system is building (or if things fail), read the rest of
these Release Notes.<tt> </tt>
<p><hr>
Markup created by <em>unroff</em> 1.0,&#160;<tt> </tt>&#160;<tt> </tt>March 21, 1996,&#160;<tt> </tt>&#160;<tt> </tt>net@informatik.uni-bremen.de</body>
</html>

279
www/examples/r-2.html Normal file
View File

@ -0,0 +1,279 @@
<html>
<head>
<!-- This file has been generated by unroff 1.0, 03/21/96 19:25:18. -->
<!-- Do not edit! -->
<link rev="made" href="mailto:net@informatik.uni-bremen.de">
<title>X11R6 Release Notes, section 2.</title>
</head><body>
<h2><a name="section2">2.</a>&#160;<tt> </tt>What Is Release 6
<a name="toc2">&#160;</a>
</h2>
<p>
This is the 6th release of X Window System software from the X Consortium.<tt> </tt>
X is a network-transparent window system which runs
on a wide range of computing and graphics machines.<tt> </tt>
<p>
The X Consortium is an independent, not-for-profit corporation,
the successor to the MIT X Consortium, which was part of the MIT
Laboratory for Computer Science.<tt> </tt>
See the <i>XConsortium</i> manual page for details.<tt> </tt>
<h2><a name="section3">2.1.</a>&#160;<tt> </tt>Overview of the X Consortium Release
<a name="toc3">&#160;</a>
</h2>
<p>
There are two parts to Release 6: X Consortium software and
documentation, and user-contributed software and documentation.<tt> </tt>
The X Consortium part contains the following:
<dl>
<dt><b>X Consortium Standards</b><dd>
The X Consortium produces standards: documents which define
network protocols, programming interfaces, and other aspects of
the X environment. See the <i>XStandards</i> manual page for a
list of standards.<tt> </tt>
<dt><b>Sample Implementations</b><dd>
For most of our standards, we provide <i>sample</i> implementations
to demonstrate proof of concept. These are not <i>reference</i>
implementations; the written specifications define the standards.<tt> </tt>
<dt><b>Fonts</b><dd>
<br>
A collection of bitmap and outline fonts are included in the
distribution, contributed by various individuals and companies.<tt> </tt>
<dt><b>Utility Libraries</b><dd>
A number of libraries, such as the <i>Athena Widget Set</i>, are
included. These are not standards, but are used in building
X Consortium applications and may be useful in building other applications.<tt> </tt>
<dt><b>Sample Programs</b><dd>
We also provide a number of application programs.<tt> </tt>
A few of these programs, such as <i>xdm</i>,
should be considered essential in almost all environments.<tt> </tt>
The rest of the applications carry no special status; they
are simply programs that have been developed and/or maintained
by X Consortium staff.<tt> </tt>
In some cases, you will find better substitutes for these
programs in the user-contributed part.<tt> </tt>
</dl>
<p>
The user-contributed part contains whatever people contribute.<tt> </tt>
You'll find a variety of software and documentation here:
programs, demos, games, libraries,
X server extensions, etc.<tt> </tt>
<h2><a name="section4">2.2.</a>&#160;<tt> </tt>Supported Systems
<a name="toc4">&#160;</a>
</h2>
<p>
We built and tested this release on the following systems:
<dl><dt><dd>
<pre>
A/UX 3.0.1
AIX 3.2.5
BSD/386 1.0
HP-UX 9.1
IRIX 5.2
Mach 2.5 Vers 2.00.1
Microsoft Windows NT 3.1
NCR Unix System V Release 4/MP-RAS
NEWS-OS 6.0
OSF/1 1.3
OSF/1 1.0
SunOS 4.1.3
SunOS 5.3
UNICOS 8.0
UNIX System V/386 Release 4.2 Version 1
Unix System V/860 Release 4.0 Version 3
Ultrix-32 4.3
</pre>
</dl>
On NT, most of the release builds with the Microsoft SDK. Missing are
<i>Fresco</i>, <i>twm</i>, <i>xterm</i>, <i>xdm</i>, <i>xconsole</i>,
<i>xinit</i>, <i>xhost</i>, <i>xsm</i>, and the X server. Xt, Xaw, and
Xmu libraries are not built as DLLs. Imake works, albeit with some
restrictions.<tt> </tt>
<h2><a name="section5">2.3.</a>&#160;<tt> </tt>The XC Tree
<a name="toc5">&#160;</a>
</h2>
<p>
The first thing you may notice is that you can't find anything.<tt> </tt>
The source tree has undergone a major reorganization since R5.<tt> </tt>
The top-level directory has been renamed from <b>mit/</b> to <b>xc/</b>.<tt> </tt>
The general layout under <b>xc/</b> is now as
follows:
<pre>
config/ config files, <i>imake</i>, <i>makedepend</i>, build utilities
doc/ all documentation other than per-program manual pages
fonts/ BDF, Speedo, Type1 fonts
include/ include files shared by multiple directories
lib/ all libraries
nls/ localization files
programs/ all programs, including the X server and <i>rgb</i>
test/ X Test Suite and other test suites
util/ <i>patch</i>, <i>compress</i>, other utilities
workInProgress/ snapshots of work in progress
bug-report bug reporting template
registry X Registry
</pre>
<h2><a name="section6">2.3.1.</a>&#160;<tt> </tt>config/
<a name="toc6">&#160;</a>
</h2>
<p>
The <b>xc/config</b> directory now has subdirectories:
<pre>
config/cf/ all the config files: Imake.tmpl, Project.tmpl, etc.
config/imake/ the <i>imake</i> program
config/makedepend/ the <i>makedepend</i> program
config/util/ other configuration utility programs and scripts
</pre>
<h2><a name="section7">2.3.2.</a>&#160;<tt> </tt>lib/
<a name="toc7">&#160;</a>
</h2>
<p>
Xlib sources are in <b>xc/lib/X11</b>; we've renamed directories to match the
lib<i>name</i>.a names.<tt> </tt>
<h2><a name="section8">2.3.3.</a>&#160;<tt> </tt>doc/
<a name="toc8">&#160;</a>
</h2>
<p>
<pre>
doc/specs/ X Consortium standards and other specifications
doc/man/ manual pages for libraries and general manual pages
doc/util/ macro packages and utilities for formatting
doc/hardcopy/ PostScript versions of the documentation
</pre>
<p>
The <b>xc/doc/hardcopy</b> directory contains compressed, pre-formatted
PostScript versions of documentation elsewhere in the
<b>doc</b> tree and the program manual pages, which are in each
program's source directory. These files can be uncompressed with the
<i>compress</i> program, which is included in <b>xc/util/compress</b>.<tt> </tt>
<h2><a name="section9">2.3.4.</a>&#160;<tt> </tt>extensions
<a name="toc9">&#160;</a>
</h2>
<p>
There is no longer a top-level extensions directory. Extension
libraries are now under <b>xc/lib/</b>, server extension code is
under <b>xc/programs/Xserver/Xext/</b>, and extension header files are
under <b>xc/include/extensions/</b>.<tt> </tt>
<h2><a name="section10">2.4.</a>&#160;<tt> </tt>Extensions supported
<a name="toc10">&#160;</a>
</h2>
<p>
The core distribution includes the following extensions:
BIG-REQUESTS,
LBX,
MIT-SHM,
MIT-SUNDRY-NONSTANDARD,
Multi-Buffering,
RECORD,
SHAPE,
SYNC,
X3D-PEX,
XC-MISC,
XIE,
XInputExtension,
XKEYBOARD,
XTEST, and
XTestExtension1.<tt> </tt>
<h2><a name="section11">2.5.</a>&#160;<tt> </tt>Implementation Parameters
<a name="toc11">&#160;</a>
</h2>
<p>
Some of the specifications define some behavior as
implementation-dependent.<tt> </tt>
Implementations of X Consortium standards need to document how those
parameters are implemented; this section does so.<tt> </tt>
<dl>
<dt>XFILESEARCHPATH default<dd>
This default can be set at build time by setting the <i>imake</i> variables
XFileSearchPathDefault, XAppLoadDir, XFileSearchPathBase, and
ProjectRoot in <b>site.def</b>. See <b>xc/config/cf/Project.tmpl</b>
for how they are used.<tt> </tt>
<dt><dd><p>
By default, XFILESEARCHPATH has these components:
<dl><dt><dd>
<pre>
/usr/X11R6/lib/X11/%L/%T/%N%C%S
/usr/X11R6/lib/X11/%l/%T/%N%C%S
/usr/X11R6/lib/X11/%T/%N%C%S
/usr/X11R6/lib/X11/%L/%T/%N%S
/usr/X11R6/lib/X11/%l/%T/%N%S
/usr/X11R6/lib/X11/%T/%N%S
</pre>
</dl>
<dt>XUSERFILESEARCHPATH default<dd>
If the environment variable XAPPLRESDIR is defined, the default value
of XUSERFILESEARCHPATH has the following components:
<dl><dt><dd>
<pre>
$XAPPLRESDIR/%L/%N%C
$XAPPLRESDIR/%l/%N%C
$XAPPLRESDIR/%N%C
$HOME/%N%C
$XAPPLRESDIR/%L/%N
$XAPPLRESDIR/%l/%N
$XAPPLRESDIR/%N
$HOME/%N
</pre>
</dl>
Otherwise it has these components:
<dl><dt><dd>
<pre>
$HOME/%L/%N%C
$HOME/%l/%N%C
$HOME/%N%C
$HOME/%L/%N
$HOME/%l/%N
$HOME/%N
</pre>
</dl>
<dt>XKEYSYMDB default<dd>
Defaults to <b>/usr/X11R6/lib/X11/XKeysymDB</b>, assuming
<b>ProjectRoot</b> is set to <b>/usr/X11R6</b>.<tt> </tt>
<dt>XCMSDB default<dd>
Defaults to <b>/usr/X11R6/lib/X11/Xcms.txt</b>, assuming
<b>ProjectRoot</b> is set to <b>/usr/X11R6</b>.<tt> </tt>
<dt>XLOCALEDIR default<dd>
Defaults to the directory <b>/usr/X11R6/lib/X11/locale</b>, assuming
<b>ProjectRoot</b> is set to <b>/usr/X11R6</b>.<tt> </tt>
<dt>XErrorDB location<dd>
The Xlib error database file is <b>/usr/X11R6/lib/X11/XErrorDB</b>, assuming
<b>ProjectRoot</b> is set to <b>/usr/X11R6</b>.<tt> </tt>
<dt>XtErrorDB location<dd>
The Xt error database file is <b>/usr/X11R6/lib/X11/XtErrorDB</b>, assuming
<b>ProjectRoot</b> is set to <b>/usr/X11R6</b>.<tt> </tt>
<dt>Supported Locales<dd>
For a list of locales supported, see the files <b>locale.dir</b> and
<b>locale.alias</b> in the <b>xc/nls/X11/locale/</b> directory.<tt> </tt>
<dt>Input Methods supported<dd>
The core distribution does not include any input methods servers.<tt> </tt>
However, in
Latin-1 locales, a default method that supports European compose
processing is enabled. See <b>xc/nls/X11/locale/Compose/iso8859-1</b>
for the supported compositions.<tt> </tt>
There are input method servers in contrib.<tt> </tt>
</dl>
<p><hr>
Markup created by <em>unroff</em> 1.0,&#160;<tt> </tt>&#160;<tt> </tt>March 21, 1996,&#160;<tt> </tt>&#160;<tt> </tt>net@informatik.uni-bremen.de</body>
</html>

648
www/examples/r-3.html Normal file
View File

@ -0,0 +1,648 @@
<html>
<head>
<!-- This file has been generated by unroff 1.0, 03/21/96 19:25:19. -->
<!-- Do not edit! -->
<link rev="made" href="mailto:net@informatik.uni-bremen.de">
<title>X11R6 Release Notes, section 3.</title>
</head><body>
<h2><a name="section12">3.</a>&#160;<tt> </tt>Building X
<a name="toc12">&#160;</a>
</h2>
<p>
This section gives detailed instructions for building Release 6:
getting it off the
distribution medium, configuring,
compiling, installing, running, and updating.<tt> </tt>
<p>
More recent information about newly-discovered problems may be found
in the <i>Frequently Asked Questions</i> posting appearing monthly on
the comp.windows.x newsgroup and xpert mailing list. It is also
available via anonymous FTP
on <b>ftp.x.org</b> in the file <b>contrib/faqs/FAQ.Z</b>,
or on your local X mirror site.<tt> </tt>
<h2><a name="section13">3.1.</a>&#160;<tt> </tt>Unpacking the Distribution
<a name="toc13">&#160;</a>
</h2>
<p>
The distribution normally comes as multiple tar files, either on
tape or across a network, or as a CD-ROM.<tt> </tt>
<p>
If you are unpacking tar files, you will need about 150 megabytes to
hold the <b>xc/</b> part.<tt> </tt>
<h2><a name="section14">3.1.1.</a>&#160;<tt> </tt>Unpacking a Compressed FTP Distribution
<a name="toc14">&#160;</a>
</h2>
<p>
If you have obtained compressed tar files over the network,
create a directory to hold the sources and <i>cd</i> into it:
<dl><dt><dd>
<pre>
mkdir <i>sourcedir</i>
cd <i>sourcedir</i>
</pre>
</dl>
Then for each tar file <b>xc-*.tar.Z</b>, execute this:
<dl><dt><dd>
<pre>
zcat <i>ftp-dir</i>/xc-<i>N</i>.tar.Z | tar xpf -
</pre>
</dl>
<p>
For each tar file <b>contrib-*.tar.Z</b>, execute this:
<dl><dt><dd>
<pre>
zcat <i>ftp-dir</i>/contrib-<i>N</i>.tar.Z | tar xpf -
</pre>
</dl>
<h2><a name="section15">3.1.2.</a>&#160;<tt> </tt>Unpacking a gzipped FTP Distribution
<a name="toc15">&#160;</a>
</h2>
<p>
If you have obtained gzipped tar files over the network,
create a directory to hold the sources and <i>cd</i> into it:
<dl><dt><dd>
<pre>
mkdir <i>sourcedir</i>
cd <i>sourcedir</i>
</pre>
</dl>
Then for each tar file <b>xc-*.tar.gz</b>, execute this:
<dl><dt><dd>
<pre>
gunzip -c <i>ftp-dir</i>/xc-<i>N</i>.tar.gz | tar xpf -
</pre>
</dl>
<p>
For each tar file <b>contrib-*.tar.gz</b>, execute this:
<dl><dt><dd>
<pre>
gunzip -c <i>ftp-dir</i>/contrib-<i>N</i>.tar.gz | tar xpf -
</pre>
</dl>
<h2><a name="section16">3.1.3.</a>&#160;<tt> </tt>Unpacking a Split Compressed FTP Distribution
<a name="toc16">&#160;</a>
</h2>
<p>
If you have obtained compressed and split tar files over the network,
create a directory to hold the sources:
<dl><dt><dd>
<pre>
mkdir <i>sourcedir</i>
</pre>
</dl>
Then for each directory <b>xc-*</b>:
<dl><dt><dd>
<pre>
cd <i>ftp-dir</i>/xc-<i>N</i>
cat xc-<i>N</i>.?? | uncompress | (cd <i>sourcedir</i>; tar xpf -)
</pre>
</dl>
<p>
For each directory <b>contrib-*</b>, execute this:
<dl><dt><dd>
<pre>
cd <i>ftp-dir</i>/contrib-<i>N</i>
cat contrib-<i>N</i>.?? | uncompress | (cd <i>sourcedir</i>; tar xpf -)
</pre>
</dl>
<h2><a name="section17">3.1.4.</a>&#160;<tt> </tt>Unpacking the Tape Distribution
<a name="toc17">&#160;</a>
</h2>
<p>
If you have obtained a tape,
create a directory to hold the sources and untar everything into that
directory:
<dl><dt><dd>
<pre>
mkdir <i>sourcedir</i>
cd <i>sourcedir</i>
tar xpf <i>tape-device</i>
</pre>
</dl>
<h2><a name="section18">3.1.5.</a>&#160;<tt> </tt>Using the CD-ROM
<a name="toc18">&#160;</a>
</h2>
<p>
If you have obtained a CD-ROM, you don't have to do anything to unpack
it. However, you will have to create a symbolic link tree to build X.<tt> </tt>
See the next section.<tt> </tt>
<h2><a name="section19">3.2.</a>&#160;<tt> </tt>Apply Patches
<a name="toc19">&#160;</a>
</h2>
<p>
If there are fixes released, apply them now.<tt> </tt>
Follow the instructions at the top
of each patch, but don't do any make commands. Then
continue here.<tt> </tt>
<h2><a name="section20">3.3.</a>&#160;<tt> </tt>Symbolic Link Trees
<a name="toc20">&#160;</a>
</h2>
<p>
If you expect to build the distribution on more than one machine using
a shared source tree,
or you are building from CD-ROM,
or you just want to keep the source tree pure,
you may want to use the program <b>xc/config/util/lndir.c</b> to create
a symbolic link tree on each build machine.<tt> </tt>
The links may use an additional 10 megabytes, but it is cheaper
than having multiple copies of the source tree.<tt> </tt>
<p>
It may be tricky to compile <i>lndir</i> before the distribution is
built. If you have a copy from Release 5, use that.<tt> </tt>
<b>Makefile.ini</b> can be used for building <i>lndir</i> the first time.<tt> </tt>
You may have to specify <b>OSFLAGS=-D</b><i>something</i> to
get it to compile.<tt> </tt>
What you would pass as <b>BOOTSTRAPCFLAGS</b> might work.<tt> </tt>
The command line looks something like this:
<dl><dt><dd>
<pre>
make -f Makefile.ini OSFLAGS=-D<i>flag</i>
</pre>
</dl>
<p>
To use a symbolic link tree, create a directory for the build, <i>cd</i>
to it, and type this:
<dl><dt><dd>
<pre>
lndir <i>sourcedir</i>
</pre>
</dl>
<p>
where <i>sourcedir</i> is the pathname of the
directory where you stored the sources. All of the build instructions
given below should then be done in the build directory on each machine,
rather than in the source directory.<tt> </tt>
<p>
<b>xc/config/util/mkshadow/</b> contains <i>mkshadow</i>, an alternative
program to <i>lndir</i>.<tt> </tt>
<h2><a name="section21">3.4.</a>&#160;<tt> </tt>Configuration Parameters
<a name="toc21">&#160;</a>
</h2>
<p>
Build information for each source directory is in files called
<b>Imakefile</b>. An <b>Imakefile</b>, along with local configuration
information in <b>xc/config/cf/</b>, is used by the program <i>imake</i>
to generate a <b>Makefile</b>.<tt> </tt>
<p>
Most of the configuration work prior to building the release is to
set parameters so that <i>imake</i> will generate correct files.<tt> </tt>
Most of those parameters are set in <b>xc/config/cf/site.def</b>.<tt> </tt>
You will also need to check the appropriate
<b>xc/config/cf/</b><i>vendor</i><b>.cf</b> file to make sure that
OSMajorVersion, OSMinorVersion, and OsTeenyVersion are set correctly
for your system (change them if necessary).<tt> </tt>
<p>
The <b>site.def</b> file has two parts, one protected with
``#ifdef BeforeVendorCF'' and one with ``#ifdef AfterVendorCF''.<tt> </tt>
The file is actually processed twice, once before the <b>.cf</b> file
and once after. About the only thing you need to set in the ``before''
section is <b>HasGcc2</b>; just about everything else can be set in the
``after'' section.<tt> </tt>
<p>
The sample <b>site.def</b> also has commented out support to include another
file, <b>host.def</b>. This scheme may be useful if you want to set most
parameters site-wide, but some parameters vary from machine to machine.<tt> </tt>
If you use a symbolic link tree, you can share <b>site.def</b> across
all machines, and give each machine its own copy of <b>host.def</b>.<tt> </tt>
<p>
The config parameters are listed in <b>xc/config/cf/README</b>, but
here are some of the more common parameters that you may wish to set in
<b>site.def</b>.<tt> </tt>
<dl>
<dt><b>ProjectRoot</b><dd>
The destination where X will be installed. This variable needs to be
set before you build, as some programs that read files at run-time
have the installation directory compiled in to them. Assuming you
have set the variable to some value /<i>path</i>, files will be
installed into /<i>path</i>/bin, /<i>path</i>/include/X11,
/<i>path</i>/lib, and /<i>path</i>/man.<tt> </tt>
<dt><b>HasGcc</b><dd>
Set to <b>YES</b> to build with <i>gcc</i> version 1.<tt> </tt>
<dt><b>HasGcc2</b><dd>
Set to <b>YES</b> to build with <i>gcc</i> version 2.<tt> </tt>
Both this option and <b>HasGcc</b> look for a compiler named <i>gcc</i>,
but <b>HasGcc2</b> will cause the build to use more features of
<i>gcc</i> 2, such as the ability to compile shared libraries.<tt> </tt>
<dt><b>HasCplusplus</b><dd>
Declares the system has a C++ compiler. C++ is necessary to build
<i>Fresco</i>. On some systems, you may also have to set additional
variables to say what C++ compiler you have.<tt> </tt>
<dt><b>DefaultUsrBin</b><dd>
This is a directory where programs will be found even if PATH
is not set in the environment.<tt> </tt>
It is independent of ProjectRoot and defaults to <b>/usr/bin</b>.<tt> </tt>
It is used, for example, when connecting from a remote system via <i>rsh</i>.<tt> </tt>
The <i>rstart</i> program installs its server in this directory.<tt> </tt>
<dt><b>InstallServerSetUID</b><dd>
Some systems require the X server to run as root to access the devices
it needs. If you are on such a system and will not be using
<i>xdm</i>, you can set this variable to <b>YES</b> to install the X
server setuid to root. Note that the X server has not been analyzed
by the X Consortium for security in such an installation;
talk to your system manager before setting this variable.<tt> </tt>
<dt><b>MotifBC</b><dd>
Causes Xlib and Xt to work around some bugs in older versions of Motif.<tt> </tt>
Set to <b>YES</b> only if you will be linking with Motif version 1.1.1,
1.1.2, or 1.1.3.<tt> </tt>
<dt><b>GetValuesBC</b><dd>
Setting this variable to <b>YES</b> allows illegal XtGetValues requests
with NULL ArgVal to usually succeed, as R5 did. Some applications
erroneously rely on this behavior. Support for this will be removed
in a future release.<tt> </tt>
</dl>
<p>
The following <i>vendor</i><b>.cf</b> files are in the release but have
not been tested recently and hence probably need changes to work:
<b>DGUX.cf</b>, <b>Mips.cf</b>, <b>apollo.cf</b>, <b>bsd.cf</b>,
<b>convex.cf</b>, <b>moto.cf</b>, <b>pegasus.cf</b>, <b>x386.cf</b>.<tt> </tt>
<b>Amoeba.cf</b> is known to require additional patches.<tt> </tt>
<p>
The file <b>xc/lib/Xdmcp/Wraphelp.c</b>, for XDM-AUTHORIZATION-1, is not
included in this release. The file is available within the US;
for details get
<b>/pub/R6/xdm-auth/README</b> from ftp.x.org via anonymous FTP.<tt> </tt>
<h2><a name="section22">3.5.</a>&#160;<tt> </tt>System Notes
<a name="toc22">&#160;</a>
</h2>
<p>
This section contains hints on building X with specific compilers and
operating systems.<tt> </tt>
<h2><a name="section23">3.5.1.</a>&#160;<tt> </tt>gcc
<a name="toc23">&#160;</a>
</h2>
<p>
<i>gcc</i> version 2 is in regular use at the X Consortium.<tt> </tt>
You should have no
problems using it to build. Set the variable <b>HasGcc2</b>.<tt> </tt>
X will not compile on some systems with <i>gcc</i> version 2.5, 2.5.1, or
2.5.2 because of an incorrect declaration of memmove() in a gcc
include file.<tt> </tt>
<h2><a name="section24">3.5.2.</a>&#160;<tt> </tt>SparcWorks 2.0
<a name="toc24">&#160;</a>
</h2>
<p>
If you have a non-threaded
program and want to debug it with the old SparcWorks 2.0 dbx,
you will need to use the thread stubs library in
<b>xc/util/misc/thr_stubs.c</b>.<tt> </tt>
Compile it as follows:
<dl><dt><dd>
<pre>
cc -c thr_stubs.c
ar cq libthr_stubs.a thr_stubs.o
ranlib libthr_stubs.a
</pre>
</dl>
Install libthr_stubs.a in the same directory with your X libraries
(e.g., <b>/usr/X11R6/lib/libthr_stubs.a</b>).<tt> </tt>
Add the following line to <b>site.def</b>:
<dl><dt><dd>
<pre>
#define ExtraLibraries -lsocket -lnsl $(CDEBUGFLAGS:-g=-lthr_stubs)
</pre>
</dl>
This example uses a <i>make</i> macro substitution; not all <i>make</i>
implementations support this feature.<tt> </tt>
<h2><a name="section25">3.5.3.</a>&#160;<tt> </tt>CenterLine C under Solaris 2.3
<a name="toc25">&#160;</a>
</h2>
<p>
If you are using the CenterLine C compiler to compile the distribution
under Solaris 2.3,
place the following line in your <b>site.def</b>:
<dl><dt><dd>
<pre>
#define HasCenterLineC YES
</pre>
</dl>
If clcc is not in your default search path, add this line to <b>site.def</b>:
<dl><dt><dd>
<pre>
#define CcCmd /path/to/your/clcc
</pre>
</dl>
<p>
If you are using CodeCenter 4.0.4 or earlier, the following files
trigger bugs in the <i>clcc</i> optimizer:
<dl><dt><dd>
<pre>
xc/programs/Xserver/cfb16/cfbgetsp.c
xc/programs/Xserver/cfb16/cfbfillsp.c
xc/programs/Xserver/cfb/cfbgetsp.c
</pre>
</dl>
<p>
Thus to build the server, you will have to compile these files by hand
with the <b>-g</b> flag:
<dl><dt><dd>
<pre>
% cd xc/programs/Xserver/cfb16
% make CDEBUGFLAGS="-g" cfbgetsp.o cfbfillsp.o
% cd ../cfb
% make CDEBUGFLAGS="-g" cfbgetsp.o
</pre>
</dl>
This optimizer bug appears to be fixed in CodeCenter 4.0.6.<tt> </tt>
<h2><a name="section26">3.5.4.</a>&#160;<tt> </tt>Microsoft Windows NT
<a name="toc26">&#160;</a>
</h2>
<p>
The set of operating systems that the client-side code will run on has been
expanded to include Microsoft Windows NT. All of the base libraries are
supported, including multi-threading in Xlib and Xt, but some of the more
complicated applications, specifically <i>xterm</i> and <i>xdm</i>,
are not supported.<tt> </tt>
<p>
There are also some other rough edges in the
implementation, such as lack of support for non-socket file descriptors as Xt
alternate inputs and not using the registry for configurable parameters like
the system filenames and search paths.<tt> </tt>
<h2><a name="section27">3.6.</a>&#160;<tt> </tt>The Build
<a name="toc27">&#160;</a>
</h2>
<p>
On NT, type
<dl><dt><dd>
<pre>
nmake World.Win32 &gt; world.log
</pre>
</dl>
On other systems, find the BootstrapCFlags line, if any, in the
<i>vendor</i><b>.cf</b> file. If there isn't one, type
<dl><dt><dd>
<pre>
make World &gt;&amp; world.log
</pre>
</dl>
otherwise type
<dl><dt><dd>
<pre>
make World BOOTSTRAPCFLAGS="value" &gt;&amp; world.log
</pre>
</dl>
<p>
You can call the output file something other than ``world.log'', but
do not call it ``make.log'' because files with this name are
automatically deleted during the ``cleaning'' stage of the build.<tt> </tt>
<p>
Because the build can take several hours to complete, you will probably
want to run it in the background and keep a watch on the output.<tt> </tt>
For example:
<dl><dt><dd>
<pre>
make World &gt;&amp; world.log &amp;
tail -f world.log
</pre>
</dl>
<p>
If something goes wrong, the easiest thing is to just start over
(typing ``make World'' again) once you have corrected the problem.<tt> </tt>
It is possible that a failure will corrupt the top-level <b>Makefile</b>.<tt> </tt>
If that happens, simply delete the file and recreate a workable
substitute:
<dl><dt><dd>
<pre>
cp Makefile.ini Makefile
</pre>
</dl>
<h2><a name="section28">3.7.</a>&#160;<tt> </tt>Installing X
<a name="toc28">&#160;</a>
</h2>
<p>
If everything is built successfully, you can install the software
by typing the following as root:
<dl><dt><dd>
<pre>
make install &gt;&amp; install.log
</pre>
</dl>
<p>
Again, you might want to run this in the background and use <i>tail</i>
to watch the progress.<tt> </tt>
<p>
You can install the manual pages by typing the following as root:
<dl><dt><dd>
<pre>
make install.man &gt;&amp; man.log
</pre>
</dl>
<h2><a name="section29">3.8.</a>&#160;<tt> </tt>Shared Libraries
<a name="toc29">&#160;</a>
</h2>
<p>
Except on SunOS 4, the version number of all the shared libraries has
changed to <b>6.0</b>. If you want programs linked against previous
versions of the libraries to use the R6 libraries, create a link from
the old name to the new name.<tt> </tt>
<h2><a name="section30">3.9.</a>&#160;<tt> </tt>Setting Up xterm
<a name="toc30">&#160;</a>
</h2>
<p>
If your <b>/etc/termcap</b> and <b>/usr/lib/terminfo</b> databases do
not have correct entries for <i>xterm</i>, use the sample entries
provided in the directory <b>xc/programs/xterm/</b>. System V users
may need to compile and install the <b>terminfo</b> entry with the
<i>tic</i> utility.<tt> </tt>
<p>
Since each <i>xterm</i> will need a separate pseudoterminal,
you need a reasonable number of them for normal execution.<tt> </tt>
You probably will want at least 32 on a small, multiuser system.<tt> </tt>
On most systems, each pty has two devices, a master and a slave,
which are usually named /dev/tty[pqrstu][0-f] and /dev/pty[pqrstu][0-f].<tt> </tt>
If you don't have at least the ``p'' and ``q'' sets configured
(try typing ``ls /dev/?ty??''), you should have your system administrator
add them. This is commonly done by running the <i>MAKEDEV</i> script in
the <b>/dev</b> directory with appropriate arguments.<tt> </tt>
<h2><a name="section31">3.10.</a>&#160;<tt> </tt>Starting Servers at System Boot
<a name="toc31">&#160;</a>
</h2>
<p>
The <i>xfs</i> and <i>xdm</i> programs are designed to be run
automatically at system startup. Please read the manual pages for
details on setting up configuration files; reasonable sample files are
in <b>xc/programs/xdm/config/</b> and <b>xc/programs/xfs/</b>.<tt> </tt>
<p>
If your system uses an <b>/etc/rc</b> file at boot time, you can
usually enable these programs by placing the following at or near the end
of the file:
<dl><dt><dd>
<pre>
if [ -f /usr/X11R6/bin/xfs ]; then
/usr/X11R6/bin/xfs &amp;; echo -n ' xfs'
fi
if [ -f /usr/X11R6/bin/xdm ]; then
/usr/X11R6/bin/xdm; echo -n ' xdm'
fi
</pre>
</dl>
<p>
Since <i>xfs</i> can serve fonts over the network,
you do not need to run a font server on every machine with
an X display. You should start <i>xfs</i> before <i>xdm</i>, since
<i>xdm</i> may start an X server which is a client of the font server.<tt> </tt>
<p>
The examples here use <b>/usr/X11R6/bin</b>, but if you have installed into
a different directory by setting (or unsetting) <b>ProjectRoot</b> then you
need to substitute the correct directory.<tt> </tt>
<p>
If you are unsure about how system boot works, or if your system does
not use <b>/etc/rc</b>, consult your system administrator for help.<tt> </tt>
<h2><a name="section32">3.11.</a>&#160;<tt> </tt>Using OPEN LOOK applications
<a name="toc32">&#160;</a>
</h2>
<p>
You can use the X11R6 Xsun server with OPEN LOOK applications, but you
must pass the new <b>-swapLkeys</b> flag to the server on startup, or the
OPEN LOOK Undo, Copy, Paste, Find, and Cut keys may not work correctly.<tt> </tt>
For example, to run Sun's OpenWindows 3.3 desktop environment with an
X11R6 server, use the command:
<dl><dt><dd>
<pre>
% openwin -server /usr/X11R6/bin/Xsun -swapLkeys
</pre>
</dl>
<p>
The keysyms reported by keys on the numeric keypad have also changed
since X11R5; if you find that OpenWindows applications do not respond
to keypad keys and cursor control keys when using the R6 server, you
can remap the keypad to generate R5 style keysyms using the following
<i>xmodmap</i> commands:
<dl><dt><dd>
<pre>
keysym Pause = F21
keysym Print = F22
keysym Break = F23
keysym KP_Equal = F24
keysym KP_Divide = F25
keysym KP_Multiply = F26
keysym KP_Home = F27
keysym KP_Up = Up
keysym KP_Prior = F29
keysym KP_Left = Left
keycode 100 = F31
keysym KP_Right = Right
keysym KP_End = F33
keysym KP_Down = Down
keysym KP_Next = F35
keysym KP_Insert = Insert
keysym KP_Delete = Delete
</pre>
</dl>
<h2><a name="section33">3.12.</a>&#160;<tt> </tt>Rebuilding after Patches
<a name="toc33">&#160;</a>
</h2>
<p>
You shouldn't need this right away, but eventually you are probably
going to make changes to the sources, for example by applying
X Consortium public patches.<tt> </tt>
<p>
Each patch comes with explicit instructions at the top of it saying
what to do. Thus the procedure here is only an overview of the types
of commands that might be necessary to rebuild X after changing it.<tt> </tt>
<p>
If you are building from CD-ROM, apply the patches to the symbolic
link tree. The links to changed files will be replaced with a local
file containing the new contents.<tt> </tt>
<p>
If only source files are
changed, you should be able to rebuild just by going to the <b>xc</b>
directory in your build tree and typing:
<dl><dt><dd>
<pre>
make &gt;&amp; make.log
</pre>
</dl>
<p>
If configuration files are changed, the safest thing to do is type:
<dl><dt><dd>
<pre>
make Everything &gt;&amp; every.log
</pre>
</dl>
<p>
``Everything'' is similar to ``World'' in that it rebuilds every
<b>Makefile</b>, but unlike ``World'' it does not delete the
existing objects, libraries, and executables, and only rebuilds
what is out of date.<tt> </tt>
<p>
Note that in both kinds of rebuilds you do not need to supply the
<b>BootstrapCFlags</b> value any more; the information is already recorded.<tt> </tt>
<h2><a name="section34">3.13.</a>&#160;<tt> </tt>Building Contributed Software
<a name="toc34">&#160;</a>
</h2>
<p>
The software in <b>contrib</b> is not set up to have everything
built automatically. It is assumed that you will build individual
pieces as you find the desire, time, and/or disk space. You need
to have the X Consortium part built and installed before building the
contributed software. To build a program or library in <b>contrib</b>,
look in its directory for any special build instructions (for example,
a <b>README</b> file). If there are none, and there is an <b>Imakefile</b>,
<i>cd</i> to the directory and type:
<dl><dt><dd>
<pre>
xmkmf -a
make &gt;&amp; make.log
</pre>
</dl>
<p>
This will build a <b>Makefile</b> in the directory and all subdirectories,
and then build the software. If the build is successful, you should be
able to install it using the same commands used for the <b>xc</b>
software:
<dl><dt><dd>
<pre>
make install &gt;&amp; install.log
make install.man &gt;&amp; man.log
</pre>
</dl>
<p><hr>
Markup created by <em>unroff</em> 1.0,&#160;<tt> </tt>&#160;<tt> </tt>March 21, 1996,&#160;<tt> </tt>&#160;<tt> </tt>net@informatik.uni-bremen.de</body>
</html>

1470
www/examples/r-4.html Normal file

File diff suppressed because it is too large Load Diff

35
www/examples/r-5.html Normal file
View File

@ -0,0 +1,35 @@
<html>
<head>
<!-- This file has been generated by unroff 1.0, 03/21/96 19:25:24. -->
<!-- Do not edit! -->
<link rev="made" href="mailto:net@informatik.uni-bremen.de">
<title>X11R6 Release Notes, section 5.</title>
</head><body>
<h2><a name="section89">5.</a>&#160;<tt> </tt>Filing Bug Reports
<a name="toc89">&#160;</a>
</h2>
<p>
If you find a reproducible bug in software in the <b>xc</b> directory,
or find bugs in the <b>xc</b> documentation, please send a bug report
to the X Consortium using the form in the file <b>xc/bug-report</b> and
this destination address:
<dl><dt><dd>
<pre>
xbugs@x.org
</pre>
</dl>
<p>
Please try to provide all of the information requested on the form if it is
applicable; the little extra time you spend on the report will make it
much easier for us to reproduce, find, and fix the bug. Receipt of bug
reports is generally acknowledged, but sometimes it can be delayed by a
few weeks.<tt> </tt>
<p>
Bugs in <b>contrib</b> software should not be reported to the X
Consortium. Consult the documentation for the individual software to
see where (if anywhere) to report the bug.<tt> </tt>
<p><hr>
Markup created by <em>unroff</em> 1.0,&#160;<tt> </tt>&#160;<tt> </tt>March 21, 1996,&#160;<tt> </tt>&#160;<tt> </tt>net@informatik.uni-bremen.de</body>
</html>

63
www/examples/r-6.html Normal file
View File

@ -0,0 +1,63 @@
<html>
<head>
<!-- This file has been generated by unroff 1.0, 03/21/96 19:25:24. -->
<!-- Do not edit! -->
<link rev="made" href="mailto:net@informatik.uni-bremen.de">
<title>X11R6 Release Notes, section 6.</title>
</head><body>
<h2><a name="section90">6.</a>&#160;<tt> </tt>Public Fixes
<a name="toc90">&#160;</a>
</h2>
<p>
We occasionally put out patches to X Consortium software, to fix any
serious problems that are discovered. Such fixes (if any) can be found
on <b>ftp.x.org</b> in the directory <b>pub/R6/fixes</b>,
or on your local X mirror site,
using anonymous FTP.<tt> </tt>
<p>
For those without FTP access, individual fixes can be obtained by
electronic mail by sending a message to
<dl><dt><dd>
<pre>
xstuff@x.org
</pre>
</dl>
<p>
In the usual case,
the message should have a subject line and no body, or a single-line body and
no subject, in either case the line looking like:
<dl><dt><dd>
<pre>
send fixes <i>number</i>
</pre>
</dl>
<p>
where <i>number</i> is a decimal number, starting from one. To get a
summary of available fixes, make the line:
<dl><dt><dd>
<pre>
index fixes
</pre>
</dl>
<p>
If you need help, make the line:
<dl><dt><dd>
<pre>
help
</pre>
</dl>
<p>
Some mailers produce mail headers that are unusable for extracting return
addresses. If you use such a mailer, you won't get any response. If you
happen to know an explicit return path, you can include include one in the
body of your message, and the daemon will use it. For example:
<dl><dt><dd>
<pre>
path <i>user</i>%<i>host</i>.bitnet@mitvma.mit.edu
</pre>
</dl>
<p><hr>
Markup created by <em>unroff</em> 1.0,&#160;<tt> </tt>&#160;<tt> </tt>March 21, 1996,&#160;<tt> </tt>&#160;<tt> </tt>net@informatik.uni-bremen.de</body>
</html>

251
www/examples/r-7.html Normal file
View File

@ -0,0 +1,251 @@
<html>
<head>
<!-- This file has been generated by unroff 1.0, 03/21/96 19:25:25. -->
<!-- Do not edit! -->
<link rev="made" href="mailto:net@informatik.uni-bremen.de">
<title>X11R6 Release Notes, section 7.</title>
</head><body>
<h2><a name="section91">7.</a>&#160;<tt> </tt>Acknowledgements
<a name="toc91">&#160;</a>
</h2>
<p>
Release 6 of X Version 11 is brought to you by X Consortium, Inc:
Bob Scheifler,
Janet O'Halloran,
Ralph Swick,
Matt Landau,
Donna Converse,
Stephen Gildea,
Jay Hersh,
Kaleb Keithley,
Ralph Mor,
Dave Wiggins,
and Gary Cutbill.<tt> </tt>
<p>
Many companies and individuals have cooperated and worked extremely hard to
make this release a reality, and our thanks go out to them. You will find
many of them listed in the acknowledgements in the individual specifications.<tt> </tt>
Major implementation contributions come from
Data General, Digital, Fujitsu, HP, NCD, NCR, Omron, SGI, Sony, SunSoft,
and XFree86.<tt> </tt>
<p>
Contributions were received from the follow people at various
X Consortium member companies.<tt> </tt>
Each X Window System release is the work of many, many people, and
this list is surely incomplete.<tt> </tt>
<dl>
<dt>Fresco<dd>
<br>
Mark Linton (Silicon Graphics);
Chuck Price (SunSoft);
Charles Brauer (Fujitsu);
Steve Churchill (Fujitsu);
Steve Tang (Stanford University);
Douglas Pan (Fujitsu);
Jean-Daniel Fekete (2001 S.A.)
<dt>Xlib<dd>
<br>
Courtney Loomis (Hewlett-Packard Company);
Daniel Dardailler (Open Software Foundation)
<dt>Xlib internationalization<dd>
The manager of the internationalization project is
Masahiko Narita (Fujitsu).<tt> </tt>
The principal authors of Input Method Protocol document are
Hideki Hiura (SunSoft) and Masahiko Narita (Fujitsu).<tt> </tt>
The principal authors of Xlib specification Chapter 13 are
Hideki Hiura (SunSoft) and Shigeru Yamada (Fujitsu OSSI).<tt> </tt>
The principal producers of the sample implementation of the
internationalization facilities are
Jeffrey Bloomfield (Fujitsu OSSI), Takashi Fujiwara (Fujitsu),
Hideki Hiura (SunSoft), Yoshio Horiuchi (IBM),
Makoto Inada (Digital), Hiromu Inukai (Nihon SunSoft),
Song JaeKyung (KAIST), Riki Kawaguchi (Fujitsu),
Franky Ling (Digital), Hiroyuki Miyamoto (Digital),
Hidetoshi Tajima (HP), Toshimitsu Terazono (Fujitsu),
Makoto Wakamatsu (Sony), Masaki Wakao (IBM),
Shigeru Yamada (Fujitsu OSSI) and Katsuhisa Yano (Toshiba).<tt> </tt>
The coordinators of the integration, testing, and release of this
implementation are
Nobuyuki Tanaka (Sony) and Makoto Wakamatsu (Sony).<tt> </tt>
Others who have contributed on the architectural design or
the testing of sample implementation are
Hector Chan (Digital), Michael Kung (IBM), Joseph Kwok (Digital),
Hiroyuki Machida (Sony), Nelson Ng (SunSoft), Frank Rojas (IBM),
Yoshiyuki Segawa (Fujitsu OSSI), Makiko Shimamura (Fujitsu),
Shoji Sugiyama (IBM), Lining Sun (SGI), Masaki Takeuchi (Sony),
Jinsoo Yoon (KAIST) and Akiyasu Zen (HP).<tt> </tt>
<dt>Xt Intrinsics<dd>
Douglas Rand (Open Software Foundation), parameterized selections;
Paul Asente (Adobe Systems Incorporated), extension event handling;
Ajay Vohra (SunSoft), support for multithreading;
Sam Chang (Novell), widget caching research;
Larry Cable (SunSoft), object allocation and change managed set;
Vania Joloboff (Open Software Foundation);
Courtney Loomis (Hewlett-Packard Company);
Daniel Dardailler (Open Software Foundation);
and Ellis Cohen (Open Software Foundation).<tt> </tt>
The following people at Georgia Tech contributed the
extensions for disability access:
Keith Edwards,
Susan Liebeskind,
Beth Mynatt, and
Tom Rodriguez.<tt> </tt>
<dt>Athena Widget Set<dd>
Frank Sheeran (Omron Data General)
<dt>X Logical Font Description<dd>
Paul Asente (Adobe Systems Incorporated);
Nathan Meyers (Hewlett-Packard Company);
Jim Graham (Sun);
Perry A. Caro (Adobe Systems Incorporated)
<dt>Font Support Enhancments<dd>
Nathan Meyers (Hewlett-Packard Company), implementation of matrix
enhancement, glyph caching, scalable aliases, sample
authorization protocol
<dt>X Transport Library<dd>
Stuart R. Anderson (AT&amp;T Global Information Solutions)
<dt>X Keyboard Extension<dd>
Erik Fortune (Silicon Graphics), design and sample implementation;
Jordan Brown (Quarterdeck Office Systems);
Will Walker (Digital Equipment Corporation), AccessX portion;
Mark Novak (Trace Center), AccessX portion
<dt>Low-Bandwidth X<dd>
Jim Fulton (Network Computing Devices);
Dave Lemke (Network Computing Devices);
Dale Tonogai (Network Computing Devices);
Keith Packard (Network Computing Devices);
Chris Kantarjiev (Xerox PARC)
<dt>X Image Extension<dd>
Bob Shelley (AGE Logic), protocol architect, lead implementation architect;
Larry Hare (AGE Logic), server implementation;
Dean Verheiden (AGE Logic), server implementation;
Syd Logan (AGE Logic), xieperf;
Gary Rogers (AGE Logic), JPEG code, XIElib documentation;
Ben Fahy (AGE Logic), client and server implementation
<dt>ICCCM<dd>
Stuart Marks (SunSoft);
Gabe Beged-Dov (Hewlett-Packard Company);
Chan Benson (Hewlett-Packard Company);
Jordan Brown (Quarterdeck Office Systems);
Larry Cable (SunSoft);
Ellis Cohen (Open Software Foundation);
Brian Cripe (Hewlett-Packard Company);
Susan Dahlberg (Silicon Graphics);
Peter Daifuku (Silicon Graphics);
Andrew deBlois (Open Software Foundation);
Clive Feather (IXI);
Christian Jacobi (Xerox PARC);
Bill Janssen (Xerox PARC);
Vania Joloboff (Open Software Foundation);
Phil Karlton (Silicon Graphics);
Mark Manasse (Digital Equipment Corporation);
Todd Newman (Silicon Graphics);
Keith Taylor (Hewlett-Packard Company);
Jim VanGilder (Digital Equipment Corporation);
Mike Wexler (Kubota Pacific);
Michael Yee (Apple Computer)
<dt>ICE<dd>
<br>
Jordan Brown (Quarterdeck Office Systems);
Vania Joloboff (Open Software Foundation);
Stuart Marks (SunSoft)
<dt>XSMP<dd>
<br>
Mike Wexler (Kubota Pacific);
Jordan Brown (Quarterdeck Office Systems);
Ellis Cohen (Open Software Foundation);
Vania Joloboff (Open Software Foundation);
Stuart Marks (SunSoft)
<dt>SYNC Extension<dd>
Tim Glauert (Olivetti Research Limited);
Dave Carver (Digital Equipment Corporation);
Jim Gettys (Digital Equipment Corporation);
Pete Snider (Digital Equipment Corporation)
<dt>RECORD<dd>
Martha Zimet (Network Computing Devices);
Robert Chesler (Absol-puter);
Kieron Drake (UniSoft);
Marc Evans (Synergytics);
Jim Fulton (Network Computing Devices);
Ken Miller (Digital Equipment Corporation)
<dt>X Input Extension tests<dd>
George Sachs (Hewlett-Packard Company)
<dt>PEX<dd>
Ken Garnett (Shographics);
Cheryl Huntington (Sun Microsystems);
Karl Schultz (IBM);
Jeff Stevenson (Hewlett-Packard Company);
Paula Womack (Digital Equipment Corporation)
<dt>Multi-Buffering Extension<dd>
Eng-Shien Wu (IBM);
John Marks (Hewlett-Packard Company);
Ian Elliott (Hewlett-Packard Company)
<dt>X server<dd>
Milind Pansare (SunSoft), pixmap privates;
Peter Daifuku (SGI), layered window support;
David Lister (Adobe Systems Incorporated), callback manager;
Ken Whaley (Kubota Pacific), thin line pixelization;
Joel McCormack (Digital Equipment Corporation), 64-bit mfb and cfb;
Rob Lembree (Digital Equipment Corporation), 64-bit mfb and cfb;
Davor Matic (MIT), xnest ddx;
Nathan Meyers (Hewlett-Packard Company), font support;
Jordan Brown (Quarterdeck Office Systems), -config option;
Michael Brenner (Apple Computer), macII ddx;
Thomas Roell, svga ddx
<dt>Multi-Threaded X Server<dd>
John A. Smith (while at Data General), team leader;
H. Chiba (Omron), ddx;
Akeio Harada (Omron), ddx;
Mike Haynes (Data General), dix;
Hidenobu Kanaoka (Omron), ddx;
Paul Layne (Data General), dix and ddx;
Takayuki Miyake (Omron), ddx;
Keith Packard (Network Computing Devices), design;
Richard Potts (Data General), dix;
Sid Manning (IBM), integration with core server;
Rob Chesler (Absol-puter), integration with core server
<dt>xdm modular loadable greeter<dd>
Peter Derr (Digital Equipment Corporation)
<dt>x11perf<dd>
Joel McCormack (Digital Equipment Corporation);
Graeme Gill (Labtam Australia);
Mark Martin (CETIA)
<dt>config<dd>
Stuart R. Anderson (AT&amp;T Global Information Solutions);
David Brooks (Open Software Foundation);
Kendall Collett (Motorola);
John Freeman (Cray);
John Freitas (Digital Equipment Corporation);
Patrick E. Kane (Motorola);
Mark Kilgard (Silicon Graphics);
Akira Kon (NEC);
Masahiko Narita (Fujitsu);
Paul Shearer (Sequent);
Mark Snitily (SGCS)
<dt>XFree86 port<dd>
Stuart R. Anderson (AT&amp;T Global Information Solutions);
Doug Anson; Gertjan Akkerman; Mike Bernson; David Dawes; Marc Evans;
Pascal Haible; Matthieu Herrb; Dirk Hohndel; David Holland; Alan Hourihane;
Jeffrey Hsu; Glenn Lai; Ted Lemon; Rich Murphey; Hans Nasten; Mark Snitily;
Randy Terbush; Jon Tombs; Kees Verstoep; Paul Vixie; Mark Weaver;
David Wexelblat; Philip Wheatley; Thomas Wolfram; Orest Zborowski
<dt>fonts<dd>
<br>
Under <b>xc/fonts/</b>, the <b>misc/</b> directory
contains a family of fixed-width fonts from Dale Schumacher,
several Kana fonts from Sony Corporation,
two Hangul fonts from Daewoo Electronics,
two Hebrew fonts from Joseph Friedman,
two cursor fonts from
Digital Equipment Corporation, and cursor and glyph fonts
from Sun Microsystems.<tt> </tt>
The <b>Speedo</b> directory contains outline fonts contributed by
Bitstream, Inc.<tt> </tt>
The <b>75dpi</b> and <b>100dpi</b> directories contain
bitmap fonts contributed by Adobe Systems, Inc.,
Digital Equipment Corporation, Bitstream, Inc.,
Bigelow and Holmes, and Sun Microsystems, Inc.<tt> </tt>
</dl>
<p><hr>
Markup created by <em>unroff</em> 1.0,&#160;<tt> </tt>&#160;<tt> </tt>March 21, 1996,&#160;<tt> </tt>&#160;<tt> </tt>net@informatik.uni-bremen.de</body>
</html>

362
www/examples/r.html Normal file
View File

@ -0,0 +1,362 @@
<html>
<head>
<!-- This file has been generated by unroff 1.0, 03/21/96 19:25:18. -->
<!-- Do not edit! -->
<link rev="made" href="mailto:net@informatik.uni-bremen.de">
<title>X11R6 Release Notes</title>
</head><body>
<!-- $XConsortium: RELNOTES.ms,v 1.6 94/05/16 14:35:14 gildea Exp $ -->
<!-- X11R6 Release Notes. Use troff -ms macros -->
<!-- as nothing -->
<p>
<p>
<p>
<p>
<p>
<p>
<p>
<p>
<h1>
X Window System, Version 11, Release 6
Release Notes
</h1>
<p>
<i></i><p>
<p>
<p>
<p>
<p>
<p>
<i></i><i>Stephen Gildea</i><i>
<br>
<br>
</i>
<br>
X Consortium
<br>
<p>
<p>
<p>
<p>
<p>
<p>
<br>
May 16, 1994
<br>
<hr>
<p>
<p>
<p>
<p>
<p>
<p>
<p>
<p>
<p>
Copyright &#169; 1994 X Consortium
<p>
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
``Software''), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
<p>
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.<tt> </tt>
<p>
THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.<tt> </tt>
IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.<tt> </tt>
<p>
Except as contained in this notice, the name of the X Consortium shall
not be used in advertising or otherwise to promote the sale, use or
other dealings in this Software without prior written authorization
from the X Consortium.<tt> </tt>
<p>
<i>X Window System</i> is a trademark of X Consortium, Inc.<tt> </tt>
<h2>Table of Contents</h2>
<ul><li><a href="r-1.html#section1">1. </a>
Easy Build Instructions
<a name="toc1">&#160;</a>
<li><a href="r-2.html#section2">2. </a>
What Is Release 6
<a name="toc2">&#160;</a>
<ul><li><a href="r-2.html#section3">2.1. </a>
Overview of the X Consortium Release
<a name="toc3">&#160;</a>
<li><a href="r-2.html#section4">2.2. </a>
Supported Systems
<a name="toc4">&#160;</a>
<li><a href="r-2.html#section5">2.3. </a>
The XC Tree
<a name="toc5">&#160;</a>
<ul><li><a href="r-2.html#section6">2.3.1. </a>
config/
<a name="toc6">&#160;</a>
<li><a href="r-2.html#section7">2.3.2. </a>
lib/
<a name="toc7">&#160;</a>
<li><a href="r-2.html#section8">2.3.3. </a>
doc/
<a name="toc8">&#160;</a>
<li><a href="r-2.html#section9">2.3.4. </a>
extensions
<a name="toc9">&#160;</a>
</ul><li><a href="r-2.html#section10">2.4. </a>
Extensions supported
<a name="toc10">&#160;</a>
<li><a href="r-2.html#section11">2.5. </a>
Implementation Parameters
<a name="toc11">&#160;</a>
</ul><li><a href="r-3.html#section12">3. </a>
Building X
<a name="toc12">&#160;</a>
<ul><li><a href="r-3.html#section13">3.1. </a>
Unpacking the Distribution
<a name="toc13">&#160;</a>
<ul><li><a href="r-3.html#section14">3.1.1. </a>
Unpacking a Compressed FTP Distribution
<a name="toc14">&#160;</a>
<li><a href="r-3.html#section15">3.1.2. </a>
Unpacking a gzipped FTP Distribution
<a name="toc15">&#160;</a>
<li><a href="r-3.html#section16">3.1.3. </a>
Unpacking a Split Compressed FTP Distribution
<a name="toc16">&#160;</a>
<li><a href="r-3.html#section17">3.1.4. </a>
Unpacking the Tape Distribution
<a name="toc17">&#160;</a>
<li><a href="r-3.html#section18">3.1.5. </a>
Using the CD-ROM
<a name="toc18">&#160;</a>
</ul><li><a href="r-3.html#section19">3.2. </a>
Apply Patches
<a name="toc19">&#160;</a>
<li><a href="r-3.html#section20">3.3. </a>
Symbolic Link Trees
<a name="toc20">&#160;</a>
<li><a href="r-3.html#section21">3.4. </a>
Configuration Parameters
<a name="toc21">&#160;</a>
<li><a href="r-3.html#section22">3.5. </a>
System Notes
<a name="toc22">&#160;</a>
<ul><li><a href="r-3.html#section23">3.5.1. </a>
gcc
<a name="toc23">&#160;</a>
<li><a href="r-3.html#section24">3.5.2. </a>
SparcWorks 2.0
<a name="toc24">&#160;</a>
<li><a href="r-3.html#section25">3.5.3. </a>
CenterLine C under Solaris 2.3
<a name="toc25">&#160;</a>
<li><a href="r-3.html#section26">3.5.4. </a>
Microsoft Windows NT
<a name="toc26">&#160;</a>
</ul><li><a href="r-3.html#section27">3.6. </a>
The Build
<a name="toc27">&#160;</a>
<li><a href="r-3.html#section28">3.7. </a>
Installing X
<a name="toc28">&#160;</a>
<li><a href="r-3.html#section29">3.8. </a>
Shared Libraries
<a name="toc29">&#160;</a>
<li><a href="r-3.html#section30">3.9. </a>
Setting Up xterm
<a name="toc30">&#160;</a>
<li><a href="r-3.html#section31">3.10. </a>
Starting Servers at System Boot
<a name="toc31">&#160;</a>
<li><a href="r-3.html#section32">3.11. </a>
Using OPEN LOOK applications
<a name="toc32">&#160;</a>
<li><a href="r-3.html#section33">3.12. </a>
Rebuilding after Patches
<a name="toc33">&#160;</a>
<li><a href="r-3.html#section34">3.13. </a>
Building Contributed Software
<a name="toc34">&#160;</a>
</ul><li><a href="r-4.html#section35">4. </a>
What Is New in Release 6
<a name="toc35">&#160;</a>
<ul><li><a href="r-4.html#section36">4.1. </a>
New Standards
<a name="toc36">&#160;</a>
<li><a href="r-4.html#section37">4.2. </a>
XIE (X Image Extension)
<a name="toc37">&#160;</a>
<li><a href="r-4.html#section38">4.3. </a>
Inter-Client Communications Conventions Manual
<a name="toc38">&#160;</a>
<ul><li><a href="r-4.html#section39">4.3.1. </a>
Window Management
<a name="toc39">&#160;</a>
<li><a href="r-4.html#section40">4.3.2. </a>
Selections
<a name="toc40">&#160;</a>
<li><a href="r-4.html#section41">4.3.3. </a>
Resource Sharing
<a name="toc41">&#160;</a>
<li><a href="r-4.html#section42">4.3.4. </a>
Session Management
<a name="toc42">&#160;</a>
</ul><li><a href="r-4.html#section43">4.4. </a>
ICE (Inter-Client Exchange)
<a name="toc43">&#160;</a>
<li><a href="r-4.html#section44">4.5. </a>
SM (Session Management)
<a name="toc44">&#160;</a>
<li><a href="r-4.html#section45">4.6. </a>
Input Method Protocol
<a name="toc45">&#160;</a>
<li><a href="r-4.html#section46">4.7. </a>
X Logical Font Description
<a name="toc46">&#160;</a>
<li><a href="r-4.html#section47">4.8. </a>
SYNC extension
<a name="toc47">&#160;</a>
<li><a href="r-4.html#section48">4.9. </a>
BIG-REQUESTS extension
<a name="toc48">&#160;</a>
<li><a href="r-4.html#section49">4.10. </a>
XC-MISC extension
<a name="toc49">&#160;</a>
<li><a href="r-4.html#section50">4.11. </a>
XTEST extension
<a name="toc50">&#160;</a>
<li><a href="r-4.html#section51">4.12. </a>
Tree Reorganization
<a name="toc51">&#160;</a>
<li><a href="r-4.html#section52">4.13. </a>
Configuration Files
<a name="toc52">&#160;</a>
<li><a href="r-4.html#section53">4.14. </a>
Kerberos
<a name="toc53">&#160;</a>
<li><a href="r-4.html#section54">4.15. </a>
X Transport Library (xtrans)
<a name="toc54">&#160;</a>
<li><a href="r-4.html#section55">4.16. </a>
Xlib
<a name="toc55">&#160;</a>
<li><a href="r-4.html#section56">4.17. </a>
Internationalization
<a name="toc56">&#160;</a>
<li><a href="r-4.html#section57">4.18. </a>
Xt
<a name="toc57">&#160;</a>
<li><a href="r-4.html#section58">4.19. </a>
Xaw
<a name="toc58">&#160;</a>
<ul><li><a href="r-4.html#section59">4.19.1. </a>
AsciiText
<a name="toc59">&#160;</a>
<li><a href="r-4.html#section60">4.19.2. </a>
Command, Label, List, MenuButton, Repeater, SmeBSB, and Toggle
<a name="toc60">&#160;</a>
</ul><li><a href="r-4.html#section61">4.20. </a>
PEX
<a name="toc61">&#160;</a>
<ul><li><a href="r-4.html#section62">4.20.1. </a>
PEX Standards and Functionality
<a name="toc62">&#160;</a>
</ul><li><a href="r-4.html#section63">4.21. </a>
Header Files
<a name="toc63">&#160;</a>
<li><a href="r-4.html#section64">4.22. </a>
Fonts
<a name="toc64">&#160;</a>
<li><a href="r-4.html#section65">4.23. </a>
Font library
<a name="toc65">&#160;</a>
<li><a href="r-4.html#section66">4.24. </a>
Font server
<a name="toc66">&#160;</a>
<li><a href="r-4.html#section67">4.25. </a>
X server
<a name="toc67">&#160;</a>
<ul><li><a href="r-4.html#section68">4.25.1. </a>
Xnest
<a name="toc68">&#160;</a>
<li><a href="r-4.html#section69">4.25.2. </a>
Xvfb
<a name="toc69">&#160;</a>
<li><a href="r-4.html#section70">4.25.3. </a>
ddx
<a name="toc70">&#160;</a>
</ul><li><a href="r-4.html#section71">4.26. </a>
New Programs
<a name="toc71">&#160;</a>
<li><a href="r-4.html#section72">4.27. </a>
Old Software
<a name="toc72">&#160;</a>
<li><a href="r-4.html#section73">4.28. </a>
xhost
<a name="toc73">&#160;</a>
<li><a href="r-4.html#section74">4.29. </a>
xrdb
<a name="toc74">&#160;</a>
<li><a href="r-4.html#section75">4.30. </a>
twm
<a name="toc75">&#160;</a>
<li><a href="r-4.html#section76">4.31. </a>
xdm
<a name="toc76">&#160;</a>
<li><a href="r-4.html#section77">4.32. </a>
xterm
<a name="toc77">&#160;</a>
<li><a href="r-4.html#section78">4.33. </a>
xset
<a name="toc78">&#160;</a>
<li><a href="r-4.html#section79">4.34. </a>
X Test Suite
<a name="toc79">&#160;</a>
<li><a href="r-4.html#section80">4.35. </a>
Work in Progress
<a name="toc80">&#160;</a>
<ul><li><a href="r-4.html#section81">4.35.1. </a>
Fresco
<a name="toc81">&#160;</a>
<li><a href="r-4.html#section82">4.35.2. </a>
XKB (X Keyboard Extension)
<a name="toc82">&#160;</a>
<li><a href="r-4.html#section83">4.35.3. </a>
LBX (Low Bandwidth X)
<a name="toc83">&#160;</a>
<li><a href="r-4.html#section84">4.35.4. </a>
RECORD extension
<a name="toc84">&#160;</a>
<li><a href="r-4.html#section85">4.35.5. </a>
Simple Session Manager
<a name="toc85">&#160;</a>
<li><a href="r-4.html#section86">4.35.6. </a>
Multi-Threaded X Server
<a name="toc86">&#160;</a>
</ul><li><a href="r-4.html#section87">4.36. </a>
ANSIfication
<a name="toc87">&#160;</a>
<li><a href="r-4.html#section88">4.37. </a>
Miscellaneous
<a name="toc88">&#160;</a>
</ul><li><a href="r-5.html#section89">5. </a>
Filing Bug Reports
<a name="toc89">&#160;</a>
<li><a href="r-6.html#section90">6. </a>
Public Fixes
<a name="toc90">&#160;</a>
<li><a href="r-7.html#section91">7. </a>
Acknowledgements
<a name="toc91">&#160;</a>
</ul>
<p><hr>
Markup created by <em>unroff</em> 1.0,&#160;<tt> </tt>&#160;<tt> </tt>March 21, 1996,&#160;<tt> </tt>&#160;<tt> </tt>net@informatik.uni-bremen.de</body>
</html>

3106
www/examples/rel.html Normal file

File diff suppressed because it is too large Load Diff

BIN
www/fig1.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

BIN
www/fig2.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

BIN
www/fig3.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

326
www/index.html Normal file
View File

@ -0,0 +1,326 @@
<html>
<head>
<link rev="made" href="mailto:net@informatik.uni-bremen.de">
<title>unroff release 1.0 information</title>
</head>
<body>
<h1>Unroff</h1>
<i>Unroff</i>
is a Scheme-based, programmable, extensible troff translator
with a back-end for the Hypertext Markup Language.<tt> </tt>
Unroff is free software and is distributed both as source and
as precompiled binaries.
<h2>Contents</h2>
<ul>
<li><a href="#overview">Overview</a>
<li><a href="#troff">Unroff and Troff</a>
<li><a href="#scheme">Unroff and Scheme</a>
<li><a href="#hypertext">Unroff and Hypertext</a>
<li><a href="#managing">Managing Hypertext Documents with Troff</a>
<li><a href="#dist">Source and Binary Distributions</a>
<li><a href="#browse">Browsing Source, Documentation, Examples</a>
<li><a href="#patches">Patches</a>
<li><a href="#news">What's New?</a>
</ul>
<h2><a name=overview>Overview</a></h2>
Unroff reads and parses UNIX troff documents and translates the embedded
markup into a different format (see <b>Figure 1</b>).<tt> </tt>
Neither the actual output format nor any knowledge about particular
troff macro sets (-man, -ms, etc.) are hard-wired into unroff.<tt> </tt>
Instead, the translation process is controlled by a set of
user-supplied procedures written in the
<a href="https://en.wikipedia.org/wiki/Scheme_%28programming_language%29"><i>Scheme</i></a>
programming language.
<p>
Translation rules for new output formats and troff macro packages can
be added easily by providing a corresponding set of Scheme procedures
(a ``back-end'').<tt> </tt>
Version 1.0 of unroff includes back-ends for translating
documents using the ``man'' and ``ms'' macros into the Hypertext Markup
Language (HTML) version 2.0.<tt> </tt>
Additional requests facilitate use of arbitrary hypertext links in
troff documents.
<p>
<hr>
<img src=fig1.gif alt="[Overview of unroff functionality]">
<hr>
<h2><a name=troff>Unroff and Troff</a></h2>
<p>
In contrast to conventional troff ``converters'' (usually Perl scripts
some of which process nroff output) unroff includes a full troff parser
and closely mimics the troff processing engine.<tt> </tt>
This enables unroff to handle user-defined macros, strings, and
number registers, nested if-else requests, arbitrary fonts and font
positions, low-level formatting requests such as \l, \c, and \h, and
idiosyncrasies such as troff <i>copy mode</i> and the subtle differences
between request and macro invocations.<tt> </tt>
Unroff has adopted a number of <i>groff</i> extensions, among them long names
for macros, strings, number registers, and special characters, and the
escape sequences \$@ and \$*.
<h2><a name=scheme>Unroff and Scheme</a></h2>
Unroff uses
<a href="http://www.informatik.uni-bremen.de/~net/elk"><i>Elk</i></a>,
the Scheme-based Extension Language Kit, to achieve
programmability (see <b>Figure 2</b>).<tt> </tt>
It includes a full Scheme language implementation
with the usual amenities such as garbage collection, interactive
programming and testing, and dynamic loading.<tt> </tt>
To help writing new unroff back-ends, unroff has augmented
standard Scheme by a set of new Scheme data types
and primitives.
<p>
<hr>
<img src=fig2.gif alt="[unroff and Elk/Scheme-code relationship]">
<hr>
<p>
A new troff request and an extension to the `.ig' request allow for
Scheme code to be embedded in troff documents; the code is then
evaluated on the fly as the documents are processed by unroff.
<p>
Unroff may be viewed as a prototype for hybrid applications that use
Scheme (in particular Elk) as their extension language.<tt> </tt>
Approximately half of its source consists of portable ANSI C code,
and the other half is written in Scheme and can be configured and
tailored easily without the need to recompile unroff.<tt> </tt>
Authors of Elk-based applications are encouraged to look into the
source code or reuse parts of it for their own projects.
<p>
As the time-critical Scheme primitives provided of unroff have been
coded in (efficient) C, its performance comes close to that of nroff
processing the same troff input.
<h2><a name=hypertext>Unroff and Hypertext</a></h2>
troff documents that were originally written without intentions to
make them available in the World Wide Web (such as UNIX manual pages)
can easily be translated to the Hypertext Markup Language using the
predefined HTML back-ends.
<p>
As unroff closely simulates ordinary troff, even large or complex
documents (like technical reports or theses with many user-defined
macros) can be translated to HTML automatically without having to
add any structural cues to the documents.
<p>
The ``-man'' support has been tested with several hundred vendor- and
user-supplied manual pages and has produced good results in all but
less than a dozen cases (a few manual pages were found to make excessive
use of low-level troff constructs or to include <i>tbl</i> output verbatim).
<h2><a name=managing>Managing Hypertext Documents with Troff</a></h2>
Authors can benefit from unroff not only as a converter for existing
documents, but also when writing new documents that must exist both
in high-quality paper form and in the World Wide Web as hypertext.
<p>
Rather than writing hypertext documents directly in HTML (which is
cumbersome for long or complex texts), authors can continue using
ordinary troff together with the usual preprocessors and macro
packages.<tt> </tt>
Unroff is then employed to produce the WWW form, while troff is used
in the normal way to typeset the same text, producing the printed
version (or, using nroff, an ASCII version if desired).
<p>
In this way authors of hypertext documents can take full advantage of
the usual troff facilities such as user-defined macros, conditional text,
tables, equations, and drawings, automatic table of contents generation,
footnotes/endnotes, indexes, etc., none of which are available when
composing documents directly in plain HTML.
<p>
Two new troff requests for embedding hypertext links in troff documents
are provided by the unroff HTML back-end.<tt> </tt>
Arbitrary forward and backward references using symbolic labels
(rather than actual file names) among
groups of troff source files are supported (see <b>Figure 3</b>).<tt> </tt>
Another new request and another extension to `.ig' allow for HTML code
to be embedded directly in troff documents.<tt> </tt>
The hypertext capabilities are demonstrated by the troff source of the
Programmer's Manual that is part of the unroff distribution.
<p>
<hr>
<img src=fig3.gif alt="[troff document with hypertext links]">
<hr>
<h2><a name=dist>Source and Binary Distributions</a></h2>
You need Elk 2.2 or
<a href="http://www.informatik.uni-bremen.de/~net/elk">Elk 3.0</a>
and an ANSI C compiler to compile and
install unroff from the source distribution.
<p>
If you do not have Elk at your site and do not want
to install it, or if you just wish to have a quick look at unroff,
download the binary distribution for your system.<tt> </tt>
Otherwise, use of the source distribution is recommended.
<p>
The unroff executable is linked dynamically in the binary distributions
for systems with shared libraries.<tt> </tt>
Please send a message to
<a href="mailto:net@informatik.uni-bremen.de">net@informatik.uni-bremen.de</a>
if you need a statically linked version, or if you think that statically
linked executables should be offered in addition to or in place of
the dynamically linked ones (or if you need an entirely different format).
<p>
<ul>
<li><b>Source Distribution</b> (about 80 Kbytes)
<ul>
<li><a href="dist/unroff-1.0.tar.gz">unroff-1.0.tar.gz</a>
</ul>
</ul>
<ul>
<li><b>Binary Distributions</b> (about 200 Kbytes each)
<ul>
<li><a href="dist/unroff-1.0-alpha-dec-osf3.0.tar.gz">
unroff-1.0-alpha-dec-osf3.0.tar.gz</a>
<li><a href="dist/unroff-1.0-hppa1.1-hp-hpux9.tar.gz">
unroff-1.0-hppa1.1-hp-hpux9.tar.gz</a>
<li><a href="dist/unroff-1.0-i486-unknown-linux1.2.8.tar.gz">
unroff-1.0-i486-unknown-linux1.2.8.tar.gz</a>
<li><a href="dist/unroff-1.0-m68k-next-ns3.tar.gz">
unroff-1.0-m68k-next-ns3.tar.gz</a>
<li><a href="dist/unroff-1.0-mips-dec-ultrix4.2.tar.gz">
unroff-1.0-mips-dec-ultrix4.2.tar.gz</a>
<li><a href="dist/unroff-1.0-mips-sgi-irix5.3.tar.gz">
unroff-1.0-mips-sgi-irix5.2.tar.gz</a>
<li><a href="dist/unroff-1.0-rs6000-ibm-aix3.2.tar.gz">
unroff-1.0-rs6000-ibm-aix3.2.tar.gz</a>
<li><a href="dist/unroff-1.0-sparc-sun-solaris2.tar.gz">
unroff-1.0-sparc-sun-solaris2.tar.gz</a>
<li><a href="dist/unroff-1.0-sparc-sun-sunos4.tar.gz">
unroff-1.0-sparc-sun-sunos4.tar.gz</a>
</ul>
</ul>
<ul>
<li>The <b>Elk 3.0 Distribution</b> is available here:
<ul>
<li><a href="ftp://ftp.x.org/contrib/devel_tools/elk-3.0.tar.gz">
X Consortium Public FTP Server</a>
<li><a href=
"ftp://ftp.cs.indiana.edu/pub/scheme-repository/imp/elk-3.0.tar.gz">
Scheme Repository at Indiana University</a>
<li><a href=
"ftp://ftp.tzi.uni-bremen.de/tzi/dmn/elk/elk-3.0.tar.gz">
Universität Bremen, Germany</a>
</ul>
</ul>
<h2><a name=browse>Browsing Source, Documentation, Examples</a></h2>
You can have a look at the unroff source code and documentation
without having to download the distribution.<tt> </tt>
All the HTML documents mentioned below have been
produced with unroff from the corresponding troff source
(observe the automatically created hypertext links in the
Programmer's Manual).
<p>
<ul>
<li><b>Source Code</b>
<ul><li>Snoop around in the unroff 1.0 <a href="unroff-1.0">
source tree</a>
</ul>
</ul>
<ul>
<li><b>Documentation</b>
<ul>
<li>Manual page <b>unroff.1</b> as
<a href="doc/unroff.1.html">HTML</a>,
<a href="doc/unroff.1.ps">PostScript</a>,
<a href="doc/unroff.1">source</a>
<li>Manual page <b>unroff-html.1</b> as
<a href="doc/unroff-html.1.html">HTML</a>,
<a href="doc/unroff-html.1.ps">PostScript</a>,
<a href="doc/unroff-html.1">source</a>
<li>Manual page <b>unroff-html-man.1</b> as
<a href="doc/unroff-html-man.1.html">HTML</a>,
<a href="doc/unroff-html-man.1.ps">PostScript</a>,
<a href="doc/unroff-html-man.1">source</a>
<li>Manual page <b>unroff-html-ms.1</b> as
<a href="doc/unroff-html-ms.1.html">HTML</a>,
<a href="doc/unroff-html-ms.1.ps">PostScript</a>,
<a href="doc/unroff-html-ms.1">source</a>
<li><b>Programmer's Manual</b> as HTML
<menu>
<li><a href="doc/manual.html">single document</a>
<li><a href="doc/m.html">split at level-1 headers</a>
</menu>
<li><b>Programmer's Manual</b> as
<a href="doc/manual.ps">PostScript</a> or
<a href="doc/manual.ms">source</a>
</ul>
</ul>
<ul>
<li><b>More Examples</b>
<ul>
<li>X11R6 Release Notes in -ms format
(<a href="examples/RELNOTES.ms">source</a>)
<menu>
<li><a href="examples/rel.html">
single HTML document</a>
<br>with user-defined TOC at end (-ms index macros)
<li><a href="examples/r.html">
split at level-1 headers</a>
<br>with automatic TOC at first page
</menu>
<li>UNIX <a href="examples/pathconf.2.html">man page</a> with tables
(<a href="examples/pathconf.2">pathconf.2</a>)
<li>X11 <a href="examples/XtSetArg.3.html">man page</a> with
user-defined macros
(<a href="examples/XtSetArg.3">XtSetArg.3</a>)
</ul>
</ul>
<h2><a name=patches>Official Patches</a></h2>
To determine whether your source or binary unroff distribution
needs any of the official patches,
check out the file <a href="unroff-1.0/PATCHLEVEL">PATCHLEVEL</a>
(a non-existent file indicates a patch level of zero).<tt> </tt>
The distributions offered here always have the highest patchlevel.<tt> </tt>
Patches marked with an asterisk (*) only affect the Scheme code can
therefore be applied to the binary distribution; all other patches
must be applied to the source distribution.
<ul>
<li>Currently available <b>Patches</b>
<ul>
<li><a href="unroff-1.0/patches/1">Patch #1</a>
<li><a href="unroff-1.0/patches/2">Patch #2</a>
</ul>
</ul>
<h2><a name=news>What's New?</a></h2>
<p>
<i>January 28, 1996:</i>&#160;<tt> </tt><b>Unofficial Patch
with -me support</b>
<dl><dt><dd>
George Helffrich (<a href="mailto:george@geology.bristol.ac.uk">
george@geology.bristol.ac.uk</a>)
has contributed a patch for unroff-1.0 that includes, among other things,
an experimental implementation of a backend for the -me macros and several
fixes for the code that deals with equations.<tt> </tt>
A detailed table of contents of at the beginning of the
patch kit:
<p>
<a href="contrib/me-misc-patch"><b>me-misc-patch</b></a>
<i>(39 kbytes)</i> &#183;
<a href="contrib/me-misc-patch.gz"><b>me-misc-patch.gz</b></a>
<i>(11 kbytes)</i>
</dl>
<p>
<i>February 13, 1997:</i>&#160;<tt> </tt><b>Another Unofficial Patch</b>
<dl><dt><dd>
George Helffrich (<a href="mailto:george@geology.bristol.ac.uk">
george@geology.bristol.ac.uk</a>)
has contributed another large patch kit for unroff-1.0 that fixes
several things in the -me support contributed earlier and in the -ms
package and also adds some new functionality.
<p>
<a href="contrib/misc-patch-2"><b>misc-patch-2</b></a>
<i>(79 kbytes)</i> &#183;
<a href="contrib/misc-patch-2.gz"><b>misc-patch-2.gz</b></a>
<i>(20 kbytes)</i>
</dl>
<hr>
<i>Oliver Laumann</i> &#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>
<a href="mailto:net@informatik.uni-bremen.de">net@informatik.uni-bremen.de</a>
</body>
</html>

326
www/unroff.html Normal file
View File

@ -0,0 +1,326 @@
<html>
<head>
<link rev="made" href="mailto:net@informatik.uni-bremen.de">
<title>unroff release 1.0 information</title>
</head>
<body>
<h1>Unroff</h1>
<i>Unroff</i>
is a Scheme-based, programmable, extensible troff translator
with a back-end for the Hypertext Markup Language.<tt> </tt>
Unroff is free software and is distributed both as source and
as precompiled binaries.
<h2>Contents</h2>
<ul>
<li><a href="#overview">Overview</a>
<li><a href="#troff">Unroff and Troff</a>
<li><a href="#scheme">Unroff and Scheme</a>
<li><a href="#hypertext">Unroff and Hypertext</a>
<li><a href="#managing">Managing Hypertext Documents with Troff</a>
<li><a href="#dist">Source and Binary Distributions</a>
<li><a href="#browse">Browsing Source, Documentation, Examples</a>
<li><a href="#patches">Patches</a>
<li><a href="#news">What's New?</a>
</ul>
<h2><a name=overview>Overview</a></h2>
Unroff reads and parses UNIX troff documents and translates the embedded
markup into a different format (see <b>Figure 1</b>).<tt> </tt>
Neither the actual output format nor any knowledge about particular
troff macro sets (-man, -ms, etc.) are hard-wired into unroff.<tt> </tt>
Instead, the translation process is controlled by a set of
user-supplied procedures written in the
<a href="http://www-swiss.ai.mit.edu/scheme-home.html"><i>Scheme</i></a>
programming language.
<p>
Translation rules for new output formats and troff macro packages can
be added easily by providing a corresponding set of Scheme procedures
(a ``back-end'').<tt> </tt>
Version 1.0 of unroff includes back-ends for translating
documents using the ``man'' and ``ms'' macros into the Hypertext Markup
Language (HTML) version 2.0.<tt> </tt>
Additional requests facilitate use of arbitrary hypertext links in
troff documents.
<p>
<hr>
<img src=fig1.gif alt="[Overview of unroff functionality]">
<hr>
<h2><a name=troff>Unroff and Troff</a></h2>
<p>
In contrast to conventional troff ``converters'' (usually Perl scripts
some of which process nroff output) unroff includes a full troff parser
and closely mimics the troff processing engine.<tt> </tt>
This enables unroff to handle user-defined macros, strings, and
number registers, nested if-else requests, arbitrary fonts and font
positions, low-level formatting requests such as \l, \c, and \h, and
idiosyncrasies such as troff <i>copy mode</i> and the subtle differences
between request and macro invocations.<tt> </tt>
Unroff has adopted a number of <i>groff</i> extensions, among them long names
for macros, strings, number registers, and special characters, and the
escape sequences \$@ and \$*.
<h2><a name=scheme>Unroff and Scheme</a></h2>
Unroff uses
<a href="http://www.informatik.uni-bremen.de/~net/elk"><i>Elk</i></a>,
the Scheme-based Extension Language Kit, to achieve
programmability (see <b>Figure 2</b>).<tt> </tt>
It includes a full Scheme language implementation
with the usual amenities such as garbage collection, interactive
programming and testing, and dynamic loading.<tt> </tt>
To help writing new unroff back-ends, unroff has augmented
standard Scheme by a set of new Scheme data types
and primitives.
<p>
<hr>
<img src=fig2.gif alt="[unroff and Elk/Scheme-code relationship]">
<hr>
<p>
A new troff request and an extension to the `.ig' request allow for
Scheme code to be embedded in troff documents; the code is then
evaluated on the fly as the documents are processed by unroff.
<p>
Unroff may be viewed as a prototype for hybrid applications that use
Scheme (in particular Elk) as their extension language.<tt> </tt>
Approximately half of its source consists of portable ANSI C code,
and the other half is written in Scheme and can be configured and
tailored easily without the need to recompile unroff.<tt> </tt>
Authors of Elk-based applications are encouraged to look into the
source code or reuse parts of it for their own projects.
<p>
As the time-critical Scheme primitives provided of unroff have been
coded in (efficient) C, its performance comes close to that of nroff
processing the same troff input.
<h2><a name=hypertext>Unroff and Hypertext</a></h2>
troff documents that were originally written without intentions to
make them available in the World Wide Web (such as UNIX manual pages)
can easily be translated to the Hypertext Markup Language using the
predefined HTML back-ends.
<p>
As unroff closely simulates ordinary troff, even large or complex
documents (like technical reports or theses with many user-defined
macros) can be translated to HTML automatically without having to
add any structural cues to the documents.
<p>
The ``-man'' support has been tested with several hundred vendor- and
user-supplied manual pages and has produced good results in all but
less than a dozen cases (a few manual pages were found to make excessive
use of low-level troff constructs or to include <i>tbl</i> output verbatim).
<h2><a name=managing>Managing Hypertext Documents with Troff</a></h2>
Authors can benefit from unroff not only as a converter for existing
documents, but also when writing new documents that must exist both
in high-quality paper form and in the World Wide Web as hypertext.
<p>
Rather than writing hypertext documents directly in HTML (which is
cumbersome for long or complex texts), authors can continue using
ordinary troff together with the usual preprocessors and macro
packages.<tt> </tt>
Unroff is then employed to produce the WWW form, while troff is used
in the normal way to typeset the same text, producing the printed
version (or, using nroff, an ASCII version if desired).
<p>
In this way authors of hypertext documents can take full advantage of
the usual troff facilities such as user-defined macros, conditional text,
tables, equations, and drawings, automatic table of contents generation,
footnotes/endnotes, indexes, etc., none of which are available when
composing documents directly in plain HTML.
<p>
Two new troff requests for embedding hypertext links in troff documents
are provided by the unroff HTML back-end.<tt> </tt>
Arbitrary forward and backward references using symbolic labels
(rather than actual file names) among
groups of troff source files are supported (see <b>Figure 3</b>).<tt> </tt>
Another new request and another extension to `.ig' allow for HTML code
to be embedded directly in troff documents.<tt> </tt>
The hypertext capabilities are demonstrated by the troff source of the
Programmer's Manual that is part of the unroff distribution.
<p>
<hr>
<img src=fig3.gif alt="[troff document with hypertext links]">
<hr>
<h2><a name=dist>Source and Binary Distributions</a></h2>
You need Elk 2.2 or
<a href="http://www.informatik.uni-bremen.de/~net/elk">Elk 3.0</a>
and an ANSI C compiler to compile and
install unroff from the source distribution.
<p>
If you do not have Elk at your site and do not want
to install it, or if you just wish to have a quick look at unroff,
download the binary distribution for your system.<tt> </tt>
Otherwise, use of the source distribution is recommended.
<p>
The unroff executable is linked dynamically in the binary distributions
for systems with shared libraries.<tt> </tt>
Please send a message to
<a href="mailto:net@informatik.uni-bremen.de">net@informatik.uni-bremen.de</a>
if you need a statically linked version, or if you think that statically
linked executables should be offered in addition to or in place of
the dynamically linked ones (or if you need an entirely different format).
<p>
<ul>
<li><b>Source Distribution</b> (about 80 Kbytes)
<ul>
<li><a href="dist/unroff-1.0.tar.gz">unroff-1.0.tar.gz</a>
</ul>
</ul>
<ul>
<li><b>Binary Distributions</b> (about 200 Kbytes each)
<ul>
<li><a href="dist/unroff-1.0-alpha-dec-osf3.0.tar.gz">
unroff-1.0-alpha-dec-osf3.0.tar.gz</a>
<li><a href="dist/unroff-1.0-hppa1.1-hp-hpux9.tar.gz">
unroff-1.0-hppa1.1-hp-hpux9.tar.gz</a>
<li><a href="dist/unroff-1.0-i486-unknown-linux1.2.8.tar.gz">
unroff-1.0-i486-unknown-linux1.2.8.tar.gz</a>
<li><a href="dist/unroff-1.0-m68k-next-ns3.tar.gz">
unroff-1.0-m68k-next-ns3.tar.gz</a>
<li><a href="dist/unroff-1.0-mips-dec-ultrix4.2.tar.gz">
unroff-1.0-mips-dec-ultrix4.2.tar.gz</a>
<li><a href="dist/unroff-1.0-mips-sgi-irix5.3.tar.gz">
unroff-1.0-mips-sgi-irix5.2.tar.gz</a>
<li><a href="dist/unroff-1.0-rs6000-ibm-aix3.2.tar.gz">
unroff-1.0-rs6000-ibm-aix3.2.tar.gz</a>
<li><a href="dist/unroff-1.0-sparc-sun-solaris2.tar.gz">
unroff-1.0-sparc-sun-solaris2.tar.gz</a>
<li><a href="dist/unroff-1.0-sparc-sun-sunos4.tar.gz">
unroff-1.0-sparc-sun-sunos4.tar.gz</a>
</ul>
</ul>
<ul>
<li>The <b>Elk 3.0 Distribution</b> is available here:
<ul>
<li><a href="ftp://ftp.x.org/contrib/devel_tools/elk-3.0.tar.gz">
X Consortium Public FTP Server</a>
<li><a href=
"ftp://ftp.cs.indiana.edu/pub/scheme-repository/imp/elk-3.0.tar.gz">
Scheme Repository at Indiana University</a>
<li><a href=
"ftp://ftp.tzi.uni-bremen.de/tzi/dmn/elk/elk-3.0.tar.gz">
Universität Bremen, Germany</a>
</ul>
</ul>
<h2><a name=browse>Browsing Source, Documentation, Examples</a></h2>
You can have a look at the unroff source code and documentation
without having to download the distribution.<tt> </tt>
All the HTML documents mentioned below have been
produced with unroff from the corresponding troff source
(observe the automatically created hypertext links in the
Programmer's Manual).
<p>
<ul>
<li><b>Source Code</b>
<ul><li>Snoop around in the unroff 1.0 <a href="unroff-1.0">
source tree</a>
</ul>
</ul>
<ul>
<li><b>Documentation</b>
<ul>
<li>Manual page <b>unroff.1</b> as
<a href="doc/unroff.1.html">HTML</a>,
<a href="doc/unroff.1.ps">PostScript</a>,
<a href="doc/unroff.1">source</a>
<li>Manual page <b>unroff-html.1</b> as
<a href="doc/unroff-html.1.html">HTML</a>,
<a href="doc/unroff-html.1.ps">PostScript</a>,
<a href="doc/unroff-html.1">source</a>
<li>Manual page <b>unroff-html-man.1</b> as
<a href="doc/unroff-html-man.1.html">HTML</a>,
<a href="doc/unroff-html-man.1.ps">PostScript</a>,
<a href="doc/unroff-html-man.1">source</a>
<li>Manual page <b>unroff-html-ms.1</b> as
<a href="doc/unroff-html-ms.1.html">HTML</a>,
<a href="doc/unroff-html-ms.1.ps">PostScript</a>,
<a href="doc/unroff-html-ms.1">source</a>
<li><b>Programmer's Manual</b> as HTML
<menu>
<li><a href="doc/manual.html">single document</a>
<li><a href="doc/m.html">split at level-1 headers</a>
</menu>
<li><b>Programmer's Manual</b> as
<a href="doc/manual.ps">PostScript</a> or
<a href="doc/manual.ms">source</a>
</ul>
</ul>
<ul>
<li><b>More Examples</b>
<ul>
<li>X11R6 Release Notes in -ms format
(<a href="examples/RELNOTES.ms">source</a>)
<menu>
<li><a href="examples/rel.html">
single HTML document</a>
<br>with user-defined TOC at end (-ms index macros)
<li><a href="examples/r.html">
split at level-1 headers</a>
<br>with automatic TOC at first page
</menu>
<li>UNIX <a href="examples/pathconf.2.html">man page</a> with tables
(<a href="examples/pathconf.2">pathconf.2</a>)
<li>X11 <a href="examples/XtSetArg.3.html">man page</a> with
user-defined macros
(<a href="examples/XtSetArg.3">XtSetArg.3</a>)
</ul>
</ul>
<h2><a name=patches>Official Patches</a></h2>
To determine whether your source or binary unroff distribution
needs any of the official patches,
check out the file <a href="unroff-1.0/PATCHLEVEL">PATCHLEVEL</a>
(a non-existent file indicates a patch level of zero).<tt> </tt>
The distributions offered here always have the highest patchlevel.<tt> </tt>
Patches marked with an asterisk (*) only affect the Scheme code can
therefore be applied to the binary distribution; all other patches
must be applied to the source distribution.
<ul>
<li>Currently available <b>Patches</b>
<ul>
<li><a href="unroff-1.0/patches/1">Patch #1</a>
<li><a href="unroff-1.0/patches/2">Patch #2</a>
</ul>
</ul>
<h2><a name=news>What's New?</a></h2>
<p>
<i>January 28, 1996:</i>&#160;<tt> </tt><b>Unofficial Patch
with -me support</b>
<dl><dt><dd>
George Helffrich (<a href="mailto:george@geology.bristol.ac.uk">
george@geology.bristol.ac.uk</a>)
has contributed a patch for unroff-1.0 that includes, among other things,
an experimental implementation of a backend for the -me macros and several
fixes for the code that deals with equations.<tt> </tt>
A detailed table of contents of at the beginning of the
patch kit:
<p>
<a href="contrib/me-misc-patch"><b>me-misc-patch</b></a>
<i>(39 kbytes)</i> &#183;
<a href="contrib/me-misc-patch.gz"><b>me-misc-patch.gz</b></a>
<i>(11 kbytes)</i>
</dl>
<p>
<i>February 13, 1997:</i>&#160;<tt> </tt><b>Another Unofficial Patch</b>
<dl><dt><dd>
George Helffrich (<a href="mailto:george@geology.bristol.ac.uk">
george@geology.bristol.ac.uk</a>)
has contributed another large patch kit for unroff-1.0 that fixes
several things in the -me support contributed earlier and in the -ms
package and also adds some new functionality.
<p>
<a href="contrib/misc-patch-2"><b>misc-patch-2</b></a>
<i>(79 kbytes)</i> &#183;
<a href="contrib/misc-patch-2.gz"><b>misc-patch-2.gz</b></a>
<i>(20 kbytes)</i>
</dl>
<hr>
<i>Oliver Laumann</i> &#160;<tt> </tt>&#160;<tt> </tt>&#160;<tt> </tt>
<a href="mailto:net@informatik.uni-bremen.de">net@informatik.uni-bremen.de</a>
</body>
</html>