diff options
author | Ruslan Ermilov <ru@FreeBSD.org> | 2001-04-17 12:12:05 +0000 |
---|---|---|
committer | Ruslan Ermilov <ru@FreeBSD.org> | 2001-04-17 12:12:05 +0000 |
commit | 1d5f6a94a87add2c3eb035043f48bb7fe1906661 (patch) | |
tree | f3137c4283de8869ebcae1dd0fe43f590276c1dc /contrib | |
parent | c8d1b47c7fde3a8a3f5530bd5e3939bba340ab4b (diff) | |
download | src-1d5f6a94a87add2c3eb035043f48bb7fe1906661.tar.gz src-1d5f6a94a87add2c3eb035043f48bb7fe1906661.zip |
Virgin import of FSF groff v1.17
Notes
Notes:
svn path=/vendor/groff/dist/; revision=75584
Diffstat (limited to 'contrib')
624 files changed, 227190 insertions, 4270 deletions
diff --git a/contrib/groff/ChangeLog b/contrib/groff/ChangeLog index 897767e919dd..e9b435aafa04 100644 --- a/contrib/groff/ChangeLog +++ b/contrib/groff/ChangeLog @@ -1,3 +1,1755 @@ +Version 1.17 released +===================== + +2001-04-17 Werner LEMBERG <wl@gnu.org> + + * tmac/Makefile.sub (install-data): mdoc.local-s is in current + directory, not in $(srcdir). + +2001-04-16 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: More info on conditionals. + +2001-04-15 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Added some info about groff internals. + + * src/roff/troff/node.cc (make_glyph_node): Emit warning message + about missing special character only if the name is non-null. + +2001-04-14 Werner LEMBERG <wl@gnu.org> + + Removing the grohtml-old device driver which is now obsolete. + + * src/devices/grohtml-old/*: Removed. + * font/devhtml-old/*: Removed. + * src/libgroff/htmlindicate.cc (graphic_start, graphic_end): Remove + comments. + * Makefile.in (CCPROGDIRS, DEVDIRS): Updated. + * test-groff (PATH): Updated. + * tmac/Makefile.sub (NORMALFILES): Updated. + * tmac/an-old.tmac: Remove special code for html-old device. + Replace `html-or-html-old' register with `an-html'. + * tmac/eqnrc: Updated. + * tmac/html-old.tmac: Removed. + * tmac/troffrc, tmac/troffrc-end: Updated. + * tmac/www.tmac: Remove special code for html-old device. + Replace `html-or-html-old' register with `www-html'. + + * src/libgroff/tmpfile.cc (remove_tmp_files), + src/libgroff/htmlindicate.cc (graphic_end), include/htmlindicate.h, + src/preproc/grn/*.cc, src/roff/groff/env.{cc,h}: Remove `void' + parameter if used as a single argument for consistency with rest of + source code. + + * aclocal.m4, tmac/an-old.tmac: Fix copyright. + +2001-04-13 Ruslan Ermilov <ru@FreeBSD.org> + + * src/roff/troff/troff.man: Fixing typos. + +2001-04-13 Werner LEMBERG <wl@gnu.org> + + * doc/pic.ms: Fixing many font switches. + * doc/groff.texinfo: Fixes, additions. + * MORE.STUFF: Updated. + +2001-04-12 Gaius Mulley <gaius@glam.ac.uk> + + * src/devices/grohtml/grohtml.man: Updated manual page regarding + simple anchor. + * src/preproc/html/pre-html.cc (createImage): Fixed right hand + cropping of images. + (removeTempFiles): New function to tidy up temporary files. + * src/preproc/html/pre-html.cc (main): Calls `removeTempFiles()'. + Many fixes to do with the new inline suppress node and image regions + are much tighter. + * src/devices/grohtml/post-html.cc: New method `is_auto_img'. + (generate_img_src): New function. + (html_printer::do_auto_image): Utilizes it. + (do_heading, do_title): Include inline images within their contents. + (html_printer::begin_page): Tidied up comments that are issued to + the html output file. + (html_printer::do_fill): Fixed so that `.nf' works with fonts other + than courier. + (text_glob::is_br): New method used by do_heading. + * tmac/s.tmac: If -Thtml then emit $1 in .IP rather than its + equivalent diversion. + * src/include/html-strings.h: Altered image tags to reflect the + inline image node. + * src/include/htmlindicate.h (html_end_suppress): Added `is_inline' + parameter. + * src/preproc/eqn/main.cc: Will suppress generation of image tags if + it is already inside a pic image. Only emit tags if the argument + `-Tps:html' is present. + * src/preproc/tbl/main.cc: Changes to reflect additional + `html_end_suppress' parameter. + * src/roff/troff/env.cc: Only emit eol tag if a node has been + emitted since the last eol tag was written. + * src/roff/troff/env.h: New boolean `emitted_node'. + * src/roff/troff/input.cc (do_suppress): Handles extra suppress + nodes \O3, \O4, \O5. No longer use `output_low_mark_miny'. + * src/roff/troff/node.cc (check_charinfo): New method. + (troff_output_file::determine_line_limits): Alterations to limit + checking. + * tmac/www.tmac: Changes to reflect new suppress nodes. + +2001-04-12 Bruno Haible <haible@clisp.cons.org> + + * src/devices/grohtml/post-html.cc (html_printer::add_to_sbuf): + Escape the html_glyph in the buffer. + (str_translate_to_html): Output the unescaped escaped_char. + * src/devices/grohtml/html-text.cc (issue_table_begin): Set + `frame=void', not `frame=none'. Add `border=0'. + +2001-04-12 Ruslan Ermilov <ru@FreeBSD.org> + + * contrib/mm/groff_mm.man: Fixing some typos. + +2001-04-12 Werner LEMBERG <wl@gnu.org> + + * PROBLEMS: Add some words on how to avoid wrapper macros. + +2001-04-11 Blake McBride <blake@florida-software.com> + + * src/include/nonposix.h (fileno) [_MSC_VER]: Removed. + +2001-04-11 Werner LEMBERG <wl@gnu.org> + + * font/devlbp/Makefile.sub (CLEANADD): Set it. + * tmac/Makefile.sub (CLEANADD): Add tmac.local-s. + * Makefile.in (dist): Don't remove src/xditview/Imakefile, but ... + * Makefile.sub (DISTCLEANFILES): Here. + + * libs/libgroff/new.cc: Include `nonposix.h'. + * win32-diffs: Updated. + +2001-04-10 Ruslan Ermilov <ru@FreeBSD.org> + + Added skeleton macro for defunct macros. + + Updated documentation. + + When inside displays, an empty input line warning should be + suppressed. If another macro call is put inside a display, + all subsequent empty lines found in that display caused a + warning to be emitted. + + * tmac/doc.tmac (doc-defunct-macro): New macro. + (Db, Ds, Ex, Or, Sf): Reimplemented using this macro. + (doc-restore-global-vars): Fixed typo. + (doc-empty-line): Check the `doc-display-depth' register to + determine whether we are inside display or not. + + * tmac/doc-common: Removed `Or' and `Sf' registers. + Moved obsolete `Ds' macro to doc.tmac. + + * tmac/groff_mdoc.man: Bump document date. + Document `.Vt' under ``Variable Types''. + Removed documentation for obsolete `.Or' macro. + +2001-04-10 Werner LEMBERG <wl@gnu.org> + + * NEWS: Updated. + * doc/groff.texinfo: Many fixes, additions, clarifications, etc. + +2001-04-10 Bruno Haible <haible@clisp.cons.org> + + * src/devices/grodvi/dvi.cc (main): Accept --help and --version. + (usage): Add stream argument. Don't exit. + * src/devices/grohtml/post-html.cc (main): Accept --help and --version. + Write --version output to stdout, not stderr. + (usage): Add stream argument. Don't exit. + * src/devices/grohtml-old/html.cc (main): Accept --help and --version. + (usage): Add stream argument. Don't exit. + * src/devices/grolbp/lbp.cc (long_options): Use symbolic getopt.h + constants. + (usage): Add stream argument. Don't exit. + (main): Write --help output to stdout, not stderr. + * src/devices/grolj4/lj4.cc (main): Accept --help and --version. + (usage): Add stream argument. Don't exit. + * src/devices/grops/ps.cc (main): Accept --help and --version. + (usage): Add stream argument. Don't exit. + * src/devices/grotty/tty.cc (main): Accept --help and --version. + (usage): Add stream argument. Don't exit. + * src/preproc/eqn/main.cc (usage): Add stream argument. Don't exit. + (main): Accept --help and --version. + * src/preproc/grn/main.cc (usage): Add stream argument. Don't exit. + (main): Accept --help and --version. + * src/preproc/html/pre-html.cc (usage): Add stream argument. + (scanArguments): Accept --help and --version. + * src/preproc/pic/main.cc (usage): Add stream argument. Don't exit. + (main): Accept --help and --version. + * src/preproc/refer/refer.cc (main): Accept --help and --version. + (usage): Add stream argument. Don't exit. + * src/preproc/soelim/soelim.cc (usage): Add stream argument. Don't + exit. + (main): Accept --help and --version. + * src/preproc/tbl/main.cc (usage): Add stream argument. Don't exit. + (main): Accept --help and --version. + * src/roff/groff/groff.cc (main): Accept --help and --version. + (synopsis): Add stream argument. + (help): Write --help output to stdout, not stderr. + (usage): Add stream argument. Don't exit. + * src/roff/grog/grog.pl: Accept --help and --version. + (help): New sub. + * src/roff/grog/grog.sh: Accept --help and --version. + * src/roff/nroff/nroff.sh: Accept --help and --version. + * src/roff/troff/input.cc (USAGE_EXIT_CODE): Remove macro. + (usage): Add stream argument. Don't exit. + (main): Accept --help and --version. + * src/utils/addftinfo/addftinfo.cc (main): Accept --help and --version. + (usage): New function with stream argument, doesn't exit. + * src/utils/hpftodit/hpftodit.cc (main): Accept --help and --version. + (usage): New function with stream argument, doesn't exit. + * src/utils/indxbib/indxbib.cc (main): Accept --help and --version. + (usage): Add stream argument. Don't exit. + * src/utils/lkbib/lkbib.cc (usage): Add stream argument. Don't exit. + (main): Accept --help and --version. + * src/utils/lookbib/lookbib.cc (usage): Add stream argument. Don't + exit. + (main): Accept --help and --version. + * src/utils/pfbtops/pfbtops.c (usage): Add stream argument. Don't exit. + (main): Accept --help and --version. + * src/utils/tfmtodit/tfmtodit.cc (main): Accept --help and --version. + (usage): Add stream argument. Don't exit. + +2001-04-10 Ruslan Ermilov <ru@freebsd.org> + + Fix indentation in SYNOPSIS. + + Updated to include changes of latest BSD mdoc version (basically, + the only change is that `.Fn' and `.Fc' put a final semicolon after + a function declaration in the SYNOPSIS section). + + * tmac/doc.tmac (doc-in-synopsis-count): Replaced with ... + (doc-in-synopsis-section): New variable. Updated all related + functions. + (doc-indent-synopsis-active): New register. + (Nd, Fn, Fo): Use it. + (Cd): It requires manipulation of \n[doc-indent-synopsis] so that + `.Cd' with long argument line produces indented wrapped lines. + Also, the misplaced `.nop \*[doc-Nm-font]\c'' caused extra + undesirable line break to be output. + (doc-do-func-decl, Nm, Vt, Fn, Fo): Remove extraneous calls to + `.rs'. + (Fn, Fc): Add final `;' to output. + (doc-save-global-vars, doc-restore-global-vars): Updated. + * tmac/doc-common: Remove `Ex' register. + Updated. + * tmac/doc-ditroff, tmac/doc-nroff, tmac/doc-syms: Updated + copyright. + +2001-04-06 Ruslan Ermilov <ru@freebsd.org> + + * tmac/doc.tmac (Cd): Simplify code. + * tmac/groff_mdoc.man: Document some behaviour of `Cd' request. + +2001-04-06 Werner Lemberg <wl@gnu.org> + + Implement continuous underlining for nroff mode. To do that, a new + request in the ditroff language has been added: `x u N' (N is 0 + or 1). + + \X and \Y are now transparent to end-of-sentence recognition. + + * src/include/printer.h (printer): Add `type' parameter to `special' + method. + * src/libs/libdriver/printer.cc (printer::special): Updated. + * src/libs/libdriver/input.cc (do_file): Handle `x u N'. + + * src/devices/dvi/dvi.cc (dvi_printer::special): Handle only + specials of type `p'. + * src/devices/grohtml/post-html.cc (html_printer::special): Ditto. + * src/devices/grohtml-old/html.cc (html_printer::special): Ditto. + * src/devices/grops/ps.cc (ps_printer::special): Ditto. + * src/devices/grotty/tty.cc: Add new enum CU_MODE. + (glyph::order): New method. + (tty_printer::add_char): Use it. + (tty_printer::special): New method. + (tty_printer::end_page): Implement it. + + * src/roff/troff/node.h (special_node): Add `no_init_string' member. + * src/roff/troff/node.cc (special_node::special_node): Add parameter + to set `no_init_string'. + (special_node::tprint_start): Use it. + (special_node::same, special_node::copy): Updated. + (special_node::ends_sentence): New method. + (troff_output_file::start_special): Add parameter to include + inititialization of special conditionally. + + * src/roff/troff/env.h (environment): New member `underline_spaces'. + * src/roff/troff/env.cc (do_underline_special): New function. + (environment::set_font): Use it. + (do_underline): Use it. This was `underline()'. + (underline): Call `do_underline()'. + (continuous_underline): New function which calls `do_underline()'. + (environment::newline): Use `do_underline_special()'. + (init_env_requests): Updated. + + * NEWS, man/troff_out.man: Updated. + +2001-04-06 Bruno Haible <haible@clisp.cons.org> + + * font/devutf8/R.proto: Fix code of 'shc'. + +2001-04-06 Ruslan Ermilov <ru@freebsd.org> + + Many fixes. Diag lists can now be nested also; additionally, + `-compact' and `-offset' are supported. + + * tmac/doc.tmac (doc-have-indent): Replaced with ... + (doc-list-have-indent-stackXXX): A new register stack. + (doc-have-diag-list): Removed. + (Bl): Use `doc-list-have-indent-stackXXX'. + (El): Updated. + (doc-diag-list): Use `doc-compact-list-stackXXX'. + (doc-tag-list): Use `doc-list-have-indent-stackXXX'. + (doc-set-vertical-and-indent): Ditto. + (doc-next-list-depth): Removed. + (doc-increment-list-stack): Updated. + (doc-decrement-list-stack): Use `doc-list-depth' instead of + `doc-next-list-depth'. + (doc-end-list, doc-end-column-list): Don't use + `doc-increment-list-stack'. + (doc-set-column-tab): Don't use `doc-list-offset-stackXXX'. + (doc-save-global-vars, doc-restore-global-vars): Updated. + * tmac/doc-common: Updated. + * tmac/groff_mdoc.man: Updated. + * NEWS: Fix typo. + +2001-04-02 Werner LEMBERG <wl@gnu.org> + + * src/devices/grotty/grotty.man: Fix grammatical error. + +2001-03-30 Ruslan Ermilov <ru@freebsd.org> + + Remove .Ld from mdoc package; replace it with special handling of + `...'. + + * tmac/doc-common: Remove `Ld' register. + Uncomment `doc-volume-ds-*' strings. + Remove `doc-operating-system-default'. + (Os): Updated. + * tmac/doc-syms (Ld): Removed. + * tmac/doc.tmac (doc-parse-args, doc-parse-arg-vector): Handle + `...' specially. + * NEWS: Updated. + + * tmac/groff_mdoc.man: Many fixes and updates. + +2001-03-29 Werner LEMBERG <wl@gnu.org> + + * tmac/troffrc-end: Protect data with `.do'. Reported by T. Kurt + Bond <tkb@tkb.mpl.com>. + * tmac/www.tmac: Save compatibility mode. + +2001-03-28 Ruslan Ermilov <ru@freebsd.org> + + * tmac/groff_mdoc.man: Many fixes. + +2001-03-28 Werner LEMBERG <wl@gnu.org> + + * src/preproc/soelim/soelim.man: Document that `.<whitespace>so' + isn't recognized. + +2001-03-27 Werner LEMBERG <wl@gnu.org> + + * tmac/an-old.tmac (TP, an-do-tag): Reduce line length while in + diversion. This fixes overlong tags. + +2001-03-26 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Fixed and improved documentation of fonts. + * tmac/doc-syms: Fix error messages. + * tmac/an-old.tmac: Remove incorrect double backslashes. + +2001-03-24 Ruslan Ermilov <ru@freebsd.org> + + * tmac/Makefile.sub: Strip mdoc.local also + * tmac/strip.sed: Fixed. + +2001-03-24 Werner LEMBERG <wl@gnu.org> + + * tmac/doc-nroff, tmac/doc-ditroff: Implement -rSxx switch for + selecting the font size. + * tmac/groff_mdoc.man, NEWS: Document it. + +2001-03-23 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/div.cc (save_vertical_space): Add default argument + to `sv' request. + * src/roff/troff/env.cc (family_change): Make `.fam' accept no + argument to restore previous font family. + * src/roff/troff/troff.man, man/groff.man, NEWS: Updated. + + * doc/groff.texinfo: More fixes and additions (mainly for font + manipulating commands). + + * tmac/groff_mdoc.reference.man: Small updates and renamed to ... + * tmac/groff_mdoc.man: This. The quick reference has been removed. + * tmac/Makefile.sub, NEWS: Updated. + +2001-03-23 Werner LEMBERG <wl@gnu.org> + + Replaced mdoc implementation. The new version is `state of the + art', using almost all new features of groff 1.17 -- it won't run + with older versions. + + * tmac/doc.tmac: Completely rewritten. + * tmac/doc-common: Ditto. + * tmac/doc-nroff: Ditto. + * tmac/doc-ditroff: Ditto. + * tmac/doc-syms: Ditto. + * tmac/mdoc.local: New file. + * tmac/groff_mdoc.samples.man: Replaced with ... + * tmac/groff_mdoc.reference.man: New file, covering mdoc completely. + * tmac/strip.sed: Updated. + * tmac/Makefile.sub: Updated. + * INSTALL: Updated. + + * tmac/groff_man.man: Add `man.local' to the FILES section. + +2001-03-22 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Added many @noindent. + Replaced @end_Example -> @endExample. + Added info whether registers are r/o. + Many other additions and fixes. + +2001-03-21 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Added macro @Var (and some hacks due to bugs + in makeinfo of texinfo 4.0) to be used in @Def* macros. + Improved @Def* macros: Now the exact syntax of request, register, + and escapes is shown. + Added macros for parentheses and brackets to be used in @Def*. + Many fixes and improvements of the documentation. + +2001-03-20 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Added new index: `st' (for strings). + Added macros @Defstr(x). + Added macro @Example (adding @group). + Other minor improvements. + +2001-03-19 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Added two new indices: `es' (for escapes) and + `rq' for requests. `fn' is no longer used. + Added macros @Defreq(x), @Defreg(x), and @Defesc(x). + Removed @Deffn(x). + + * tmac/an-old.tmac (an-p-footer): If `cR' is set, replace page + number with name of man page. + +2001-03-19 Larry Kollar <kollar@alltel.net> + + * doc/groff.texinfo: Complete revision. Added many @Deffn to gain + consistency. + +2001-03-19 Werner LEMBERG <wl@gnu.org> + + * man/groff_font.man: Document `prepro', `postpro', and `print'. + * src/roff/groff/groff.man: Improve documentation of `-l' and `-L'. + * src/devices/grohtml/grohtml.man: Fixing typos. + +2001-03-19 Gaius Mulley <gaius@glam.ac.uk> + + * tmac/s.tmac (@IP): Pass `.ip' html tag. + * tmac/groff_mwww.man: Remove .LINE macro + * tmac/www.tmac (LINE): Add `.ti'. + + * src/devices/grohtml/post-html.cc (html_printer): New member + `indent'. + (html_printer::emit_raw): Use it. + (html_printer::do_linelength): Ditto. + (html_printer::do_pageoffset): Ditto. + (html_printer::do_indentation): Ditto. + (html_printer::do_tempindent): Ditto. + (html_printer::do_break): Ditto. + (html_printer::begin_page): Ditto. + (html_printer::do_indentedparagraph): New function. + (html_printer::troff_tag): Handle `.ip'. + * src/devices/grohtml/html-text.cc (html_text::issue_table_begin): + Add `<td width=...>' handling. + (html_text::do_table): Add parameter. + (html_text::do_indent): Updated. + * src/devices/groohtml/html-text.h: Updated. + +2001-03-16 Gaius Mulley <gaius@glam.ac.uk> + + Introduced simple html tables to implement indentation. + + * src/devices/grohtml/html.h (word, word_list): New structures. + (simple_output): Use it. + * src/devices/grohtml/post-html.cc: Add `INDENTATION'. + (html_printer): Improve indentation handling. + (html_printer::emit_raw): Set `in_table' element. Handle + indentation if set. + (html_printer::write_header): Move conditional downwards. + Don't allow whitespace in tags. + (html_printer::do_linelength): Handle line length and indentation + conditionally. + (html_printer::do_pageoffset): Handle indentation conditionally. + (html_printer::do_indentation): Ditto. + (html_printer::do_tempindent): New function member. + (html_printer::do_fill): Take care of indentation. + (html_printer::do_flush): Finish table. + (html_printer::do_links): Ditto. + (html_printer::do_break): New function for handling `.br' and `.ti'. + (html_printer::troff_tag): Use it. + Handle `.ti'. + (html_printer::flush_globs): Fix. + (html_printer::flush_page): Finish table. + (html_printer::html_printer): Fix error message. Set up + `linelength'. + (html_printer::add_to_sbuf): Remove special handling of character + code 255. + (to_unicode): Remove `stop()'. + (html_printer::write_title): Cleanup. + (html_printer::begin_page): Use `put_string()'. Handle indentation. + (html_printer::~html_printer): Flush text and end the line. + Use `put_string()'. + * src/devices/grohtml/html_text.h: Add more *_TAG enum values. + * src/devices/grohtml/html_text.cc (html_text::end_tag): Fix + emission of tags. + (html_text::start_tag): Disable newlines. + (html_text::table_is_void): New function. + (html_text::issue_table_begin): Ditto. + (html_text::issue_table_end): Ditto. + (html_text::push_para): Better table handling. + (html_text::do_indent): New function. + (html_text::do_table): Ditto. + (html_text::done_table): Ditto. + (html_text::do_tt): Handle PRE_TAG. + (html_text::is_in_table): New function. + (html_text::check_emit_text): Handle tables. + (html_text::do_emittext): Use `nl()'. + (html_text::do_para): Handle table. + (html_text::remove_def): New function. + * src/devices/grohtml/output.cc (word, word_list): Implement + methods. + (simple_output::end_line): Flush last word. + (simple_output::simple_comment): Ditto. + (simple_output::begin_comment): Recoded. + (simple_output::end_comment): Ditto. + (simple_output::comment_arg): Removed. + (simple_output::check_newline): Improve test and flush last word. + (simple_output::space_or_newline): Improved. + (simple_output::write_newline): Replaced with... + (simple_output::nl): This. + (simple_output::put_raw_char): Flush last word. + (simple_output::check_space): Removed. + (simple_output::put_translated_string): Ditto. + (simple_output::put_string): Simplified. + (simple_output::put_number): Updated. + (simple_output::put_float): Ditto. + (simple_output::put_symbol): Removed. + (simple_output::enable_newlines): Add `check_newline()'. + (simple_output::flush_last_word): New function. + + * src/roff/troff/enc.cc (no_fill): Remove call to add_html_tag(). + * src/roff/troff/div.cc (page_offset): Add call to add_html_tag(). + + * tmac/s.tmac (@PP, @IP): Add html conditional code. + * tmac/an-old.tmac (TP): Ditto. + +2001-03-09 Ruslan Ermilov <ru@freebsd.org> + + * mdate.sh: Make it POSIX compliant. + +2001-03-09 Werner LEMBERG <wl@gnu.org> + + Added the `return' request to end a macro immediately. It simply + pops iterators from the input stack until a macro iterator is found. + + * src/roff/troff/input.cc (input_iterator::is_macro, + macro_iterator::is_macro): New member. + (input_return_boundary): New class to signal an immediate return + to while_request(). + (input_stack::add_return_boundary, input_stack::is_return_boundary): + New functions. + (input_stack::clear): Use it. + (input_stack::pop_macro): New function. + (while_request): Use `is_return_boundary()'. + (return_macro_request): New function. + (init_input_requests): Use it. + + * src/roff/troff/TODO: Updated. + * NEWS, src/roff/troff/troff.man, man/groff.man: Document it. + +2001-03-08 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/input.cc (input_iterator::is_boundary): Minor + cleanup. + +2001-03-07 Werner LEMBERG <wl@gnu.org> + + Make `\B' more rigid. + + * src/roff/troff/number.cc (parse_expr, parse_term): Add `rigid' + parameter. + (get_number_rigidly): New function. + * src/roff/troff/input.cc (do_expr_test): Use it. + * src/roff/troff/token.h: Updated. + + * src/roff/troff/request.h: Fix typo (init_html_request -> + init_markup_request). + +2001-03-04 Gaius Mulley <gaius@glam.ac.uk> + + Fixed grohtml handling of any named glyph for glyph indexes < 0x80. + Cosmetic changes to `.html-begin', `.html-end', `.html-image' which + are now `.begin', `.end', `.image'. + + * src/devices/grohtml/post-html.cc: Adding UNICODE_DESC_START. + (html_printer::add_to_sbuf): Changing type of `code' parameter. + Use add_char_to_sbuf(). + (to_unicode): New function. + (char_translate_to_html): Changing type of `ch' parameter. + Use `to_unicode()'. + (html_printer::~html_printer): Comment out doctype string. + * src/preproc/html/pre-html.cc (write_end_image): Use `.end' + instead of `.html-end'. + (write_start_image): Use `.begin' and `.image' instead of + `.html-begin' and `.html-image'. + * src/roff/troff/input.cc: Rename `html_level' to `begin_level'. + (html_begin): Renamed to ... + (begin): This. + (html_end): Renamed to ... + (end): This. + (html_image): Renamed to ... + (image): This. + (init_html_requests): Renamed to ... + (init_markup_requests): This. + * tmac/www.tmac: Updated. + +2001-02-28 Bram <bram@avontuur.org> + + * src/libs/libgroff/font.cc (font_widths_cache): Fixing syntax of + constructor. + +2001-02-26 David Leonard <david.leonard@csee.uq.edu.au> + + * doc/meref.me: Fixing some typos. + +2001-02-16 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/node.cc (space_node::get_hyphenation_type): New + method. Return `HYPHEN_MIDDLE' if it was `\:'. + * src/roff/troff/node.h: Updated. + +2001-02-17 Ruslan Ermilov <ru@FreeBSD.org> + + * tmac/groff_tmac.man: Fix typo. + +2001-02-16 Werner LEMBERG <wl@gnu.org> + + Fixing a bug which prevented proper end-of-sentence recognition + between an `unformatted' box and the following text. As a + consequence, vertical line distances are no longer preserved in + boxes after a call to `.unformat' -- because boxes aren't + line-oriented (contrary to diversions), this doesn't make sense + anyway. + + * src/roff/troff/node.cc (*node::set_unformat_flag): Add return + value. + (vertical_size_node::set_unformat_flag): New method. + * src/roff/troff/node.hh: Updated. + * src/roff/troff/input.cc (word_space_node::reread, + hmotion_node::reread): Reset `unformat' flag after usage. + (unformat_macro): Append only if `set_unformat_flag()' returns + non-zero. + * src/roff/troff/troff.man: Updated. + +2001-02-15 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/troff.man, NEWS, man/groff.man: Improved + documentation of `asciify' and `unformat' requests. + +2001-02-13 Werner LEMBERG <wl@gnu.org> + + Redesigned the `unformat' request. It is no longer connected with + `asciify' but rather uses new `reread()' methods if the `unformat' + flag is set. Additionally, the handling of space characters after + unformatting has been fixed so that they retain their width. + + * src/roff/troff/node.h (width_list): New structure to store + original widths of spaces. + (node): Added `unformat' member. + Replaced `num_spaces' variable with `orig_width' list. + * src/roff/troff/node.cc (*node::asciify, + asciify_reverse_node_list): Removed `unformat_only' flag and related + code. + (word_space_node::asciify, word_space_node::word_space_node): Use + `orig_width'. + (word_space_node::~word_space_node): New destructor. + (word_space_node::copy): Updated to handle `orig_width'. + (hmotion_node::copy, unbreakable_space_node::copy): Updated. + (*node::merge_space): Update `orig_width' list if necessary. + (*node::set_unformat_flag): New methods to set the `unformat' flag. + * src/roff/troff/enc.cc (environment::space_newline): Use + `width_list'. + (environment::space): Added method to handle space width and + sentence space width as parameters. Use `width_list'. + (environment::make_tab_node): Updated. + * src/roff/troff/env.h: Updated. + * src/roff/troff/input.cc (word_space_node::reread, + unbreakable_space_node::reread, hmotion_node::reread): New methods + to handle nodes specially if `unformat' flag is set. + (do_asciify_macro): Renamed back to ... + (asciify_macro): This. + (unformat_macro): New implementation to simply set the `unformat' + flag. + + * MORE.STUFF: Added more info about deroff. + +2001-02-08 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/node.h (unbreakable_space_node, hmotion_node, + space_char_hmotion_node, overstrike_node): Add `get_hyphen_list()' + and `add_self()' methods to avoid hyphenation. For example, the + hyphen list for `foo\0\0bar' was `foobar', causing insertion of a + soft hyphen after `foo'. Now the hyphen list is correctly + `foo<ignore><ignore>bar'. + +2001-02-05 Yoshiteru Kageyama <yt-kage@cb3.so-net.ne.jp> + + * tmac/groff_tmac.man: Fix `BIR' macro. + +2001-02-04 Werner LEMBERG <wl@gnu.org> + + A new escape sequence `\:', inserting a zero-width break point. + + * src/roff/troff/input.h: Adding `ESCAPE_COLON'. + * src/roff/troff/input.cc (get_copy, token::next, asciify): + Implement it. + * src/roff/troff/node.h (node): Add `is_escape_colon()' virtual + method. + (space_node): Add `was_escape_colon' member. Add `is_escape_colon()' + and `asciify()' methods. + * src/roff/troff/node.cc (space_node::space_node): Updated. + (space_node::asciify): Handle `was_escape_colon'. + * NEWS, src/roff/troff/troff.man, man/groff.man: Document it. + + Handle `\~' similar to other comparable requests. + + * src/roff/troff/input.cc (process_input_stack): Remove now obsolete + label. + (token::next): Move creation of an unbreakable_space_node to... + (token::add_to_node_list): Here. + + Fix a bug which sometimes prevented hyphenation of words connected + with `\~' or `\ ' (and other escape sequences handled as + TOKEN_NODE). This also fixes a hyphenation problem with boxes + (after a call to the `unformat' request). + + * src/roff/troff/env.h (environment::possibly_break_line, + environment::hyphenate_line): Introducing `start_here' parameter. + * src/roff/troff/env.cc (environment::space_newline, + environment::space): Use it. + (environment::possibly_break_line, environment::hyphenate_line): + Implement it. + * src/roff/troff/input.cc (process_input_stack): Use it. + * src/roff/troff/node.h (unbreakable_space_node, hmotion_node, + space_char_hmotion_node, overstrike_node): Add + `get_hyphenation_type()' method. + * src/roff/troff/node.cc (break_char_node::asciify): Don't asciify + if `unformat_only' is active. + +2001-01-30 Werner LEMBERG <wl@gnu.org> + + Implemented new read-only number register `.linetabs' which + returns 1 if in line-tabs mode, 0 otherwise. + + * src/roff/troff/env.h (environment): Add get_line_tabs() member. + * src/roff/troff/env.cc (get_line_tabs): New function. + (init_env_requests): Use it. + * NEWS, src/roff/troff/troff.man, man/groff.man: Document it. + + * VERSION, REVISION: Changing to 1.17.0. + +2001-01-28 Werner LEMBERG <wl@gnu.org> + + Fixed a bug which prevented hyphenation of words which are finished + with `\)'. + + * src/roff/troff/token.h (token): Add enum type + `TOKEN_TRANSPARENT_DUMMY' and method `transparent_dummy()'. + * src/roff/troff/input.cc (token::next, token::description, + get_line_arg, token::add_to_node_list, token::process): Use it. + +2001-01-27 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/div.h (diversion): Add `saved_prev_line_interrupted'. + * src/roff/troff/div.cc (do_divert): Use it. + + * src/roff/troff/input.cc (asciify): Add ESCAPE_RIGHT_PARENTHESIS. + +2001-01-25 Werner LEMBERG <wl@gnu.org> + + Adding the `linetabs' request. If set, tab distances are not + computed relative to the input line but relative to the output line. + + * src/roff/troff/env.h (environment): New member `line_tabs'. + * src/roff/troff/env.cc (line_tabs_request): Implement request. + (environment::environment, environment::copy): Updated. + (environment::distance_to_next_tab): Use `line_tabs'. + (init_env_requests): Register request. + * src/roff/troff/troff.man, man/groff.man, NEWS: Document it. Other + fixes. + +2001-01-24 Werner LEMBERG <wl@gnu.org> + + Introducing a new read-only register `.int' which is set to a + positive value if the last output line is interrupted (i.e., if it + contains `\c'). + + * src/roff/troff/env.cc (init_env_requests): Add it. + * NEWS, src/roff/troff/troff.man, man/groff.man: Document it. + +2001-01-23 Gaius Mulley <gaius@glam.ac.uk> + + * tmac/mwww.tmac: Call `www.tmac', not `arkup.tmac'. + * src/preproc/html/pre-html.cc (findPrefix): New function which + generates the troff executable name via the system prefix. + * src/preproc/eqn/main.cc: Modified warning message. + +2001-01-23 Werner LEMBERG <wl@gnu.org> + + troff's `box' and `boxa' requests didn't preserve temporary + indentation. + + * src/roff/troff/div.h (diversion): Add `saved_saved_indent' and + `saved_target_text_length' members. + * src/roff/troff/div.cc (do_divert): Use them. + + Tabs (but not yet leaders and fields) are now handled correctly by + `asciify' request. + + * node.h (hmotion_node): Add field `was_tab'. + * env.cc (environment::make_tab_node): Set it. + * node.cc (hmotion_node::copy, hmotion_node::asciify): Use it. + + Added new request `unformat' which will, contrary to `asciify', + preserve font information after unformatting (i.e., only nodes + dealing with horizontal space are converted back to input + characters). + + * input.cc (asciify_macro): Renamed to ... + (do_asciify_macro): this, having a new parameter `unformat_only'. + (asciify_macro, unformat_macro): New; using do_asciify_macro. + (init_input_requests): Added `unformat'. + * node.cc (*_node::asciify), asciify_reverse_node_list: Added + parameter to control asciification process. + * node.h (*_node::asciify): Ditto. + * NEWS, src/roff/troff/troff.man, man/groff.man: Document it. + +2001-01-20 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Minor improvement of `.in' documentation. + +2001-01-18 Werner LEMBERG <wl@gnu.org> + + * tmac/ps.tmac: Remove call of psold.tmac. + * tmac/psold.tmac: Comment updated. + * tmac/psnew.tmac: Removed since no longer needed. + * tmac/Makefile.sub, NEWS, src/devices/grops/grops.man: Updated. + + * font/devutf8/R.proto: Adding `shc' glyph. + * font/devutf8/NOTES: Updated. + + * test-groff: Updated. + +2001-01-15 Gaius Mulley <gaius@glam.ac.uk> + + First cut of the new html device driver. Changes to pre-html and + the new grohtml are too numerous to be documented here. + + Stuff related to `html' has been renamed to `html-old' and `html2' + stuff has been renamed to `html' (including directories). The new + html device driver is therefore invoked as `-Thtml'. + + Added new `\O' escape to suppress output (needed by html driver). + + Added functions and code to pass info about input-level commands + (`.in', `.fl', etc.) to html driver. + + Three new functions (.html-begin, .html-end, and .html-image) for + better html handling: `html-begin' will execute the remaining line + if at the outermost nesting level, increasing an internal counter. + `html-end' does the same but decreases the internal counter. + `html_image' puts its arguments into a special node (suppress_node) + to define an image region. + + The `output' request has been removed. + + * tmac/html-tags.tmac: Removed. + * tmac/arkup.tmac: Updated and renamed to ... + * tmac/www.tmac: New file. + * tmac/markup.tmac Updated and renamed to ... + * tmac/mwww.tmac: New file. + * tmac/Makefile.sub: Updated. + * tmac/an-old.tmac: Updated. + * tmac/eqnrc: Updated. + * tmac/groff_man.man + * tmac/groff_markup.man: Updated and renamed to ... + * tmac/groff_mwww.man: New file. + * tmac/groff_tmac.man: Updated. + * tmac/html-old.tmac: Updated and Renamed from html.tmac. + * tmac/html.tmac: Updated and renamed from html2.tmac. + * tmac/pspic.tmac: Updated html support. + * tmac/s.tmac: Added html output support. + * tmac/troffrc, tmac/troffrc-end: Updated. + + * Makefile.in, doc/Makefile: Updated. + * doc/groff.texinfo: Added info about new `\O' escape. + * doc/homepage.ms: Use `MAILTO' macro. + + * font/devhtml/DESC.proto: Add `C' font. + * font/devhtml/Makefile.sub: Updated. + * font/devhtml/R.proto: Minor fixes. + * font/devhtml-old/Makefile.sub: Updated. + + * src/devices/grohtml-old/Makefile.sub: Updated. + + * src/libs/libdriver/printer.cc (printer::get_font_from_index): New + method. + * src/libs/libgroff/htmlindicate.cc (html_begin_suppress, + graphic_start): Add `inline' parameter. Update. + (html_end_suppress, graphic_end): Update. + + * src/include/html-strings.h: New file. + * src/include/htmlindicate.h: Comments updated. + * src/include/printer.h: Updated. + + * src/preproc/eqn/main.cc (do_file, main): Updated. + * src/preproc/pic/troff.cc (troff_output::start_picture, + troff_output::finish_picture): Updated. + * src/preproc/tbl/main.cc (process_input_file): Updated. + + * src/roff/groff/groff.cc (main): Updated. + Pass device arguments to predrivers also. + Use `ps' device for `eqn' preprocessor if `-Thtml' is given. + * src/roff/troff/env.h (environment): Updated. + New elements `need_eol' and `ignore_next_eol' (for html output). + * src/roff/troff/env.cc (environment::environment): Add initializers + for `need_eol' and `ignore_next_eol'. + (environment::add_html_tag_eol, environment::add_html_tag_tabs): New + functions. + (point_size, fill, no_fill, center, right_justify, line_length, + indent, temporary_indent, break_request, handle_tab): Use + `add_html_tag()'. + (set_tabs): Use `add_html_tag_tabs()'. + (environment::add_html_tag): Updated. + (environment::do_break): Updated. + * src/roff/troff/div.cc (space_request, flush_output): Use + `environment::add_html_tag()'. + * src/roff/troff/input.cc: Updated. + New variable `html_level' to indicate nested `html-begin' requests. + (file_iterator::fill): Use `environment::add_html_tag_eol()'. + (non_interpreted_char_node, token_node, non_interpreted_node): Add + `force_tprint()' method. + (token::next): Handle `\O'. + (do_suppress): Implement it. + (html_begin, html_end, html_image): New functions. + (init_output_requests): Renamed to ... + (init_html_requests): this. + (main): Use it. + (macro::append_str, macro::append_unsigned, macro::append_int): New + methods. + New variable `output_low_mark_miny' to limit minimal value of y. + (reset_output_registers): Use it. + (output_request): Removed. + (get_output_registers): New function. + * src/roff/troff/node.h (node): Make `force_tprint()' virtual. + (*_node): Added `force_tprint()' if necessary. + (special_node): New elements `tf' and `get_tfont()'. + (suppress_node): New class. + * src/roff/troff/node.cc: + New global variables `image_no' and `suppress_start_page'. + (real_output_file): New method `is_on()'. + (troff_output_file): New method `start_special(tfont)'. + (troff_output_file::really_print_line): Use `tprint' conditionally. + (real_output_file::print_line): Updated. + (real_output_file::on): Updated. + (*_node): Added `force_tprint()'. + (special_node::special_node): Initializer updated. + (special_node::same, special_node::copy, special_node::tprint_start): + Updated. + (get_reg_int, get_reg_str): New functions. + (suppress_node::*): New methods. + New global variables last_position, last_image_filename; + (min): New inline function. + * src/roff/troff/reg.h, src/roff/troff/request.h, + src/roff/troff/troff.h: Updated. + +2001-01-13 Werner LEMBERG <wl@gnu.org> + + * NEWS, src/roff/troff/troff.man, doc/groff.texinfo: Fix + documentation of `asciify' request. + +2001-01-12 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/input.cc: Move definition of special characters + like `ESCAPE_TILDE' to ... + * src/roff/troff/input.h: New file. + * src/roff/troff/Makefile.sub (HDRS): Add it. + + Extending the .asciify request to `unformat' space characters also. + + * src/roff/troff/node.h (word_space_node): Add `num_spaces' element + to count input space characters. + Update constructors to take care of it. + * src/roff/troff/node.cc (space_char_hmotion_node::asciify): Use + `ESCAPE_SPACE' instead of normal space. + (word_space_node::asciify): New method. + (unbreakable_space_node::asciify): New method. + (word_space_node::merge_space): New method. + * src/roff/troff/env.cc (environment::space_newline, + environment::space): Add code to initialize `num_spaces' (using the + constructor of `word_space_node'). + * NEWS, src/roff/troff/troff.man, man/groff.man, doc/groff.texinfo: + Document it. + +2001-01-09 Werner LEMBERG <wl@gnu.org> + + * man/groff_char.man: Use table header traps only conditionally. + +2001-01-09 Bjarni Ingi Gíslason <bjarniig@hi.is> + + * man/groff_char.man: Add `ý' and `Ý' to the `acute' group. + +2001-01-08 Werner LEMBERG <wl@gnu.org> + + Introducing the `box' and `boxa' requests which are similar to + `di' resp. `da' but omitting a partially filled line (which is + restored after ending the diversion). + + * src/roff/troff/div.h (diversion): Add elements to save partially + filled line. + * src/roff/troff/div.cc (do_divert): Add parameter `boxing' to save + partially filled line. + (divert, divert_append): Updated. + (box, box_append): New functions. + (init_div_requests): Use them. + * src/roff/troff/env.h (environment): do_divert() is now a friend. + * NEWS, src/roff/troff/troff.man, man/groff.man: Document it. + + * doc/groff.texinfo: Fix documentation of `lf' request. + +2000-12-25 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/troff.man, NEWS: Document `writem' request. + +2000-12-21 Werner LEMBERG <wl@gnu.org> + + Ignore `ss' request if in compatibility mode. + + * src/roff/troff/input.cc: Make `compatible_flag' non-static. + * src/roff/troff/env.h: Added extern `compatible_flag' declaration. + * src/roff/troff/env.cc (space_size): Use it. + + * doc/groff.texinfo, src/roff/troff/troff.man: Fix documentation of + `ss' request in nroff mode. + + * tmac/an-old.tmac: Fixed some serious bugs introduced with latest + changes. + +2000-12-15 Ruslan Ermilov <ru@FreeBSD.org> + + * tmac/troffrc, tmac/troffrc-end: Convert tmac.* to *.tmac. + +2000-12-13 Werner LEMBERG <wl@gnu.org> + + * src/preproc/eqn/Makefile.sub (MAN1): Added neqn.man. + * src/preproc/eqn/neqn.man: Small fixes and additions. + +2000-12-13 Ruslan Ermilov <ru@FreeBSD.org> + + * src/utils/addftinfo/addftinfo.man, src/devices/grops/grops.man: + Fixing typo. + + * src/preproc/eqn/neqn.man: New file. + + * src/preproc/tbl/table.cc (table::print): Fix `indent cannot be + negative' warning. + + * tmac/e.tmac: Add `T&' macro. + Fix `indent cannot be negative' warning. + * tmac/s.tmac: Fix `indent cannot be negative' warning. + +2000-12-07 Werner LEMBERG <wl@gnu.org> + + * src/include/lib.h: Replaced __ALPHA with __alpha symbol. + +2000-12-06 Werner LEMBERG <wl@gnu.org> + + * PROBLEMS: Added info about adding -lPW on HP-UX to satisfy the + `alloca' symbol . + + * MORE.STUFF: Added info about deroff for djgpp. + + * tmac/an-old.tmac, tmac/groff_man.man, doc/groff.texinfo, NEWS: Fix + documentation of -rcR switch. + +2000-12-03 Werner LEMBERG <wl@gnu.org> + + * tmac/an-old.tmac: Implementing the -rcR switch (similar to mdoc); + if -rcR=1 (which is now the default in nroff mode), a single, very + long page is created instead of multiple pages: All `ne' and `wh' + requests are put into conditionals; a new macro `an-end' is added to + be called with `em'. + + Some other minor cleanups. + + * NEWS, tmac/groff_man.man, doc/groff.texinfo: Updated. + +2000-12-02 Werner LEMBERG <wl@gnu.org> + + Fixing a bug which prevented hyphenation in words followed + immediately by a TOKEN_NODE (e.g. `\ ', `\~', etc.). + + * src/roff/troff/input.cc (process_input_stack <token::TOKEN_NODE>): + Adding possibly_break_line(). + * src/roff/troff/env.h (environment): Make possibly_break_line() + public. + + Make `\~' usable in .tr request. + + * src/roff/troff/token.h (token_type): Add TOKEN_STRETCHABLE_SPACE. + (token): Add stretchable_space(). + * src/roff/troff/input.cc (token::next, token::delimiter, + token::description, process_input_stack, do_translate, + add_to_node_list, token::process): Use it. + * src/roff/troff/node.h (node): Add fourth parameter to add_char() + for adjusting the space. + * src/roff/troff/node.cc (node::add_char): Implement it. Add code + for stretchable space. + * src/roff/troff/input.cc (token::add_to_node_list): Use it. + (make_node): Add code for stretchable space. + * src/roff/troff/env.cc (environment::add_char): Use it. + * src/roff/troff/input.cc: Add ESCAPE_TILDE special character. + (get_copy, token::next, transparent_translate, asciify): Use it. + + * NEWS, src/roff/troff/troff.man, src/roff/troff/TODO, + doc/groff.texinfo: Updated. + * man/groff.man: Small reorderings. + +2000-11-23 Werner LEMBERG <wl@gnu.org> + + * NEWS: Fixes. + * src/preproc/eqn/main.cc (main): Use `config_macro_path' for -M + option. + * src/roff/troff/input.cc (main): Add `config_macro_path' and + `safer_macro_path' to -M option. + * src/roff/troff/troff.man: Fixes. + +2000-11-22 Werner LEMBERG <wl@gnu.org> + + Use safer path (except for config files) if -U isn't specified. Add + a special macro path (without home and current directory) for config + files. Add home directory to unsafe path for consistency. Don't + include the home directory in the font path. + + * src/lib/libgroff/macropath.cc: Add `config_macro_path', change + `macro_path'. + * src/include/macropath.h: Add `config_macrp_path'. + * src/lib/libgroff/fontfile.cc: Fix font path. + * src/roff/troff/input.cc (process_startup_file): Use + `config_macro_path'. + (main): Select unsafe path if -U is given. + + * src/preproc/eqn/main.cc (main): Fixing search path for + configuration file. + * src/preproc/eqn/eqn.man: Updated. + + * src/roff/troff/troff.man, man/roff.man, tmac/groff_tmac.man: + Updated. + + * src/preproc/grn/grn.man, src/devices/grodvi/grodvi.man, + src/devices/grohtml/grohtml.man, src/devices/grolbp/grplbp.man, + src/devices/grolj4/grolj4.man, src/devices/grops/grops.man, + src/devices/grotty/grotty.man: Updated. + + * Makefile.in: Fix comments. + +2000-11-17 Werner LEMBERG <wl@gnu.org> + + * tmac/safer.tmac: Empty file added (again) for compatibility + reasons. + * tmac/Makefile.sub: Updated. + +2000-11-16 Werner LEMBERG <wl@gnu.org> + + * src/devices/grodvi/dvi.cc (main), + src/devices/grohtml2/post-html.cc (main), + src/devices/grolbp/lbp.cc (main), src/devices/grolj4/lj4.cc + (main), src/devices/grops/ps.cc (main), src/devices/grotty/tty.cc + (main), src/preproc/eqn/main.cc (main), src/preproc/grn/main.cc + (main), src/preproc/html2/pre-html.cc (main), + src/preproc/pic/main.cc (main), src/preproc/refer/refer.cc (main), + src/preproc/soelim/soelim.cc (main), src/preproc/tbl/main.cc + (main), src/roff/groff/groff.cc (main), src/roff/troff/input.cc + (main), src/utils/hpftodit/hpftodit.cc (main), + src/utils/indxbib/indxbib.cc (main), src/utils/lkbib/lkbib.cc + (main), src/utils/lookbib/lookbib.cc (main), + src/utils/pfbtops/pfbtops.c (main), src/utils/tfmtodit/tfmtodit.cc + (main): Use stdout for -v. + * src/roff/groff/groff.cc (run_commands), + src/roff/groff/pipeline.c (run_pipeline): New parameter `no_pipe' + to make direct printing to stdout possible. + * src/roff/groff/pipeline.h: Updated. + + * src/utils/afmtodit/afmtodit.pl: Add -v switch. + * src/utils/afmtodit/Makefile.sub (afmtodit): Use @VERSION@. + * src/utils/afmtodit/afmtodit.man: Updated. + + * src/utils/addftinfo/addftinfo.cc (main): Add -v switch. + (version): New function. + (usage): Updated. + * src/utils/addftinfo/addftinfo.man: Updated. + + * src/devices/*/*, src/preproc/*/*, src/roff/*/*, src/utils/*/*: + Fixing copyright dates. + + * src/preproc/eqn/neqn.sh: Adding GROFF_BIN_PATH to path instead of + replacing it. + + * src/devices/grolbp/lbp.cc (main): Use Version_string instead of + version_string. + + * src/roff/nroff/Makefile.sub (nroff): Fix use of @VERSION@. + +2000-11-15 Werner LEMBERG <wl@gnu.org> + + In all programs, make -v return immediately with exit status 0 to + be compliant with the GNU standard. + + * src/devices/grodvi/dvi.cc (main), + src/devices/grohtml2/post-html.cc (main), + src/devices/grolbp/lbp.cc (main), src/devices/grolj4/lj4.cc + (main), src/devices/grops/ps.cc (main), src/devices/grotty/tty.cc + (main) src/preproc/eqn/main.cc (main), src/preproc/grn/main.cc + (main), src/preproc/html2/pre-html.cc (main), + src/preproc/pic/main.cc (main), src/preproc/refer/refer.cc (main), + src/preproc/soelim/soelim.cc (main), src/preproc/tbl/main.cc + (main), src/roff/groff/groff.cc (main), src/roff/troff/input.cc + (main): Implement it. + * NEWS: Updated. + + * src/roff/groff/groff.cc (main): Add copyright notice. Add refer + and postprocessors to the -v option. + + * src/roff/grog/grog.pl: Implement -v. + * src/roff/grog/Makefile.sub (grog): Use @VERSION@. + * src/roff/grog/grog.man, doc/groff.texinfo: Updated. + + * src/roff/nroff/nroff.sh: Implement -v. + * src/roff/nroff/Makefile.sub (nroff): Use @VERSION@. + * src/roff/nroff/nroff.man: Updated. + + * src/preproc/eqn/main.cc (main): Fix comment typo. + + * MORE.STUFF: Added info about djgpp port of grap. + +2000-11-14 Werner LEMBERG <wl@gnu.org> + + * src/roff/grog/grog.{pl,sh}: Implemented -C switch for compatibility + mode (or rather, implemented non-compatibility mode). + * NEWS, src/roff/grog/grog.man, doc/groff.texinfo: Updated. + + * src/roff/groff/groff.cc (main): Add BIN_PATH to PATH instead of + replacing it -- we don't find gxditview otherwise. + * NEWS, src/roff/groff/groff.man, doc/groff.texinfo: Updated. + + * src/preproc/pic/depend: Removed. Unnecessary. + + Implemented dummy keyword `solid' in pic for compatibility with + AT&T pic. + + * lex.cc (lookup_keyword): Added `solid'. + * pic.y: Added SOLID with dummy rule. + * pic.cc, pic_tab.h: Regenerated. + * doc/pic.ms: Updated. + +2000-11-13 Werner LEMBERG <wl@gnu.org> + + For security reasons, don't use the current directory but the home + directory while searching and scanning troffrc and troffrc-end. + Similarly, replace the current directory with the home directory + in the font path. + + * Makefile.in (fontpath, tmacpath): Remove current directory. + + * src/libs/libgroff/searchpath.cc (search_path::search_path): Add + two parameters `add_home' and `add_current'. + (search_path::~search_path, search_path::command_line_dir, + search_path::open_file): Remove tests for `dirs' being zero. + * src/include/searchpath.h: Adjust. + * src/libs/libgroff/macropath.cc, src/include/macropath.h: Add + `safer_macro_path'. + * src/libs/libgroff/fontfile.cc: Adjust `font_path'. + + * src/roff/troff/troff.h: Add `searchpath.h' and `mac_path'. + * src/roff/troff/input.cc: Use `mac_path', initialized with + `macro_path'. + (process_startup_file): Set `mac_path' to `safer_macro_path'. + * src/roff/troff/env.cc: Use `mac_path'. + + * src/preproc/eqn/main.cc (main): Use `safer_macro_path'. + + * NEWS, man/roff.man, src/roff/troff/troff.man, + src/roff/groff/groff.man, tmac/groff_tmac.man, arch/djgpp/README: + Updated. + +2000-11-12 Werner LEMBERG <wl@gnu.org> + + * src/include/lib.h: Don't include groff-getopt.h for OSF/1. + + * aclocal.m4 (GROFF_SYS_ERRLIST): Do test in C, not in C++. + * configure.in: Fix typo in comment. + * configure: Regenerated. + + * src/libgroff/*, src/include/*, src/roff/troff/*: Fixing copyright + dates. + +2000-11-08 Werner LEMBERG <wl@gnu.org> + + Add system tmac directory (/usr/local/lib/groff/site-tmac). + + * Makefile.in: Add $(libdir), $(libprogramdir), and $(systemtmacdir). + (uninstall_dirs): Add $(libdir), $(libprogramdir), and + $(systemtmacdir). + Use @libdir@. + * Makefile.comm (.man.n): Add @SYSTEMMACRODIR@. + * tmac/Makefile.sub (install_data): Create + $(systemtmacdir) and $(localtmacdir). + (uninstall_sub): Use $(systemtmacdir) for wrapper macros. + * man/roff.man, src/roff/troff/troff.man, src/roff/groff/groff.man, + NEWS, doc/groff.texinfo: Updated and minor fixes. + + * Makefile.comm, Makefile.in: Added tmac_{s,an}_prefix stuff again. + * tmac/Makefile.sub: Added `wrap' stuff again, but installing into + $(systemtmacdir) since the wrapper files are platform-dependent. + +2000-11-01 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Fix typo. + +2000-10-26 Werner LEMBERG <wl@gnu.org> + + Convert macros `tmac.XXX' to `XXX.tmac'. Special cases: + tmac.doc.old -> doc-old.tmac + tmac.an.old -> an-old.tmac + + * tmac/tmac.*: Moved to ... + * tmac/*.tmac: this. + * tmac/man.local: Fix comment. + * tmac/groff_man.man, tmac/groff_markup.man, tmac/groff_mdoc.man, + tmac/groff_me.man, tmac/groff_ms.man, tmac/groff_tmac.man: Updated. + Added some `FILES' sections. More use of @...@ directives. Other + minor updates. + * arch/djgpp/README, font/devutf8/NOTES: Updated. + * doc/homepage.ms, doc/groff.texinfo: Updated. + * man/groff.man, man/roff.man: Updated. + * src/devices/grodvi/grodvi.man, src/devices/grolbp/grolbp.man, + src/devices/grolj4/grolj4.man, src/devices/grops/grops.man, + src/devices/grotty/grotty.man: Updated. + * src/preproc/pic/pic.man: Updated. + * src/roff/grog/grog.pl, src/roff/grog/grog.sh: Use -mdoc-old + instead of -mdoc.old. + * src/roff/grog/grog.man: Document -mdoc and -mdoc-old. + * src/roff/nroff/nroff.man: Updated. + * NEWS: Updated. + + * tmac/fixmacros.sed, tmac/strip.sed: Add explanatory comment. + + * tmac/mm.diff: Removed -- it has no use now since the mm package + is part of groff. + + * tmac/*: Removed trailing spaces. + + * arch/djgpp/t-groff.bat: Fix GROFF_TMAC_PATH (hyphen.us is now in + the tmac subdirectory also). + + * Makefile.comm, Makefile.in: Remove tmac_{s,an}_prefix stuff. + * tmac/Makefile.sub: Adapted to new macro names; removed `wrap' + stuff since it is no longer needed. + + * README, PROBLEMS: Updated. + +2000-10-25 Werner LEMBERG <wl@gnu.org> + + Invert current behaviour: Search first FOOBAR.tmac, then + tmac.FOOBAR. + + * src/roff/troff/input.cc: Introduce MACRO_POSTFIX. + (open_mac_file, macro_source): Implement it. + * src/roff/troff/troff.man, tmac/groff_tmac.man, man/roff.man, + doc/groff.texinfo, NEWS: Document it. + + * src/roff/nroff/nroff.man, src/roff/groff/groff.man, man/groff.man: + Small documentation improvements. + + * test-groff: Fix GROFF_TMAC_PATH (hyphen.us is now in the tmac + subdirectory also). + + * font/devps/Makefile.sub: Fix rules for dingbats.*map. + +2000-10-24 Werner LEMBERG <wl@gnu.org> + + Add local tmac directory (groff/site-tmac). + + * Makefile.in: Add $(localtmacdir). + (uninstall_dirs): Add $(localtmacdir). + * Makefile.comm (.man.n): Add @LOCALMACRODIR@. + * tmac/Makefile.sub (install_data, uninstall_sub): Handle man.local + in $(localtmacdir). Create $(localtmacdir). + * man/roff.man, src/roff/troff/troff.man, NEWS, doc/groff.texinfo: + Updated and minor fixes. + + Rename font/devps/generate/dingbats[r]map to dingbats.[r]map. + + * font/devps/generate/Makefile.sub, arch/djgpp/README: Adjust. + +2000-10-23 Werner LEMBERG <wl@gnu.org> + + Move hyphen.us to tmac directory. + + * src/roff/troff/hyphen.us: Removed. + * src/tmac/hyphen.us: Added. + * src/roff/troff/Makefile.sub, tmac/Makefile.sub: Updated. + + Change installation structure for data files from .../groff/... to + .../groff/<version><revision>/... to be conform with other GNU + programs. + + * Makefile.in, Makefile.comm, src/utils/indxbib/Makefile.sub, + doc/Makefile: Implement it. + * aclocal.m4 (GROFF_PAGE): Add test for new directory structure. + * configure: Updated. + * arch/djgpp/README, font/devutf8/NOTES: Use it. + * NEWS: Document it. + * man/roff.man, tmac/groff_tmac.man: Use @FONTPATH@, @FONTDIR@, and + @MACRODIR@ instead of hard-coded directories. + +2000-10-22 Werner LEMBERG <wl@gnu.org> + + Implement $GROFF_BIN_PATH environment variable (which defaults to + $bindir) used for child programs of groff and similar wrappers. + + * gendefs.sh: Improve documentation. + * Makefile.comm (,man.n), src/include/Makefile.sub (defs.h), + src/preproc/eqn/Makefile.sub (neqn), + src/roff/nroff/Makefile.sub (nroff): Add $(bindir). + * src/preproc/eqn/neqn.sh, src/roff/nroff/nroff.sh: Implement + $GROFF_BIN_PATH. + * src/roff/groff/groff.cc (main): Implement $GROFF_BIN_PATH and + $GROFF_PATH__ (the latter for communication with troff). + * src/roff/troff/input.cc (main): Use $GROFF_PATH__ for $PATH if + set. + * NEWS, src/roff/nroff/nroff.man, src/roff/groff/groff.man, + doc/groff.texinfo: Document it. + + * doc/groff.texinfo: Improve documentation of troff's -a option. + +2000-10-17 Gaius Mulley <gaius@glam.ac.uk> + + * src/roff/troff/node.cc: Fixed calculation of opminx and fixed + non-intrusive eol marker. + (troff_output_file::determine_line_limits): New function. + (troff_output_file::draw): Use it. + * src/roff/troff/env.cc (environment::add_html_tag): Use output() + + output_pending_lines() instead of output_line(). + * src/preproc/eqn/main.cc (do_file): Fix graphic_end(). + * src/preproc/html2/pre-html.cc (char_buffer::write_file_troff, + createImage): Small fixes. + +2000-10-14 Werner LEMBERG <wl@gnu.org> + + Replace tmac.safer with a real secure solution. + + * src/roff/troff/input.cc (open_request, opena_request, pipe_source, + system_request, pipe_output): Disable requests if in safer mode. + * src/roff/groff/groff.cc (main): Remove reference to tmac.safer. + * tmac/tmac.safer, tmac/groff_msafer.man: Removed. + * tmac/Makefile.sub, NEWS, man/roff.man, tmac/groff_tmac.man, + doc/groff.texinfo, src/roff/groff/groff.man, + src/roff/troff/troff.man, arch/djgpp/README: Updated. + + * src/devices/grops/ps.cc (main), src/devices/grops/psrm.cc + (resource_manager::output_prolog): Replace setenv() with putenv(). + +2000-10-09 Werner LEMBERG <wl@gnu.org> + + * src/libs/libbib/map.c, src/libs/libgroff/getcwd.c, + src/libs/libgroff/strtol.c, src/preproc/html2/image.cc, + src/preproc/html2/pre-html.cc, src/preproc/html2/pushbackbuffer.cc, + src/roff/groff/pipeline.c: Removing `#ifndef errno' to avoid + compilation errors with some compilers. It seems that this code + is no longer necessary -- if yes, it is easy to add some #ifdef's + for that particular old-fashioned compiler. + + * MORE.STUFF: Added info about Meta-tbl. + + * doc/groff.texinfo: Added more info about `.if "..."..."'. + +2000-10-07 Werner LEMBERG <wl@gnu.org> + + Adding a new escape sequence \B'...': If the string between + the delimiters is a valid numeric expression, return the character + `1', and `0' otherwise. This is an analogon to \A. + + * src/roff/troff/input.cc (do_expr_test): Implement it. + (token::next): Use it. + * src/roff/troff/troff.man, NEWS, man/groff.man: Document it. + + * tmac/tmac.trace: Made independent from escape character. + +2000-10-06 Werner LEMBERG <wl@gnu.org> + + Adding a new request .dei: define indirect. The first and second + parameter of .dei are taken from string registers instead directly; + this very special request is needed to make tmac.trace independent + from the escape character (which might even be disabled). + + * src/roff/troff/input.cc (do_define_macro): Implement it. + (define_macro_indirect): New function. + (init_input_requests): Use it. + + Adding two requests .ecs and .ecr: Save and restore the escape + character. These two requests are needed to make tmac.trace + independent from the escape character (which might even be + disabled). + + * src/roff/troff/input.cc (save_escape_char, restore_escape_char): + Implement it. + (init_input_requests): Use it. + + * src/roff/troff/troff.man, NEWS, man/groff.man: Updated. + +2000-09-22 Ricardo Soares Guimarães <ricardo@conectiva.com.br> + + Adding a new option -P and new environment variable GROPS_PROLOGUE + to grops, selecting a different prologue file (minor modifications + by WL). + + * src/devices/grops/psrm.cc (resource_manager::output_prolog), + src/devices/grops/ps.cc (main): Implement it. + * src/devices/grops/grops.man, NEWS: Document it. + +2000-09-22 Werner LEMBERG <wl@gnu.org> + + * INSTALL: Add info about selecting paper format. + +2000-09-21 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/input.cc (main): Fixing compiler warning. + * src/include/{driver.h, lib.h}: Move inclusion of string.h and + strings.h from the former to the latter. + * src/devices/grolbp/lpb.cc, src/include/lib.h: Move strncasecmp() + stuff from the former to the latter. + +2000-09-11 Werner LEMBERG <wl@gnu.org> + + Implementing two new requests .tm1 and .tmc: The former is similar + to .tm but can output leading spaces; its syntax is similar to + defining a string, i.e., a `"' can be used to mark the beginning of + the string to be written to stderr: `.tm1 " test'. The latter is + similar to .tm1 but doesn't write out a final newline character. + + * src/roff/troff/input.cc (terminal1, terminal_continue, + do_terminal): New functions. + (init_input_requests): Use them. + * src/roff/troff/troff.man, NEWS, man/groff.man: Updated. + +2000-09-09 Werner LEMBERG <wl@gnu.org> + + * tmac/groff_mdoc.samples.man: Small fixes. + +2000-09-08 Werner LEMBERG <wl@gnu.org> + + * tmac/groff_mdoc.man: Fixing typo. + +2000-09-02 Werner LEMBERG <wl@gnu.org> + + Implementing a .nop request which does nothing. + + * src/roff/troff/input.cc (nop_request): New function. + (init_input_requests): Use it. + * src/roff/troff/troff.man, NEWS, man/groff.man: Updated. + +2000-09-01 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Added some comments. + +2000-08-30 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/TODO: Updated. + +2000-08-28 Bruno Haible <haible@clisp.cons.org> + + * contrib/mm/Makefile.sub: New target 'all', makes all prerequisites + of 'install'. + +2000-08-25 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Fix comment how to compile the DVI file. + +2000-08-25 Eli Zaretskii <eliz@is.elta.co.il> + + * font/devps/generate/Makefile (SHELL): Define explicitly to + "/bin/sh", for non-Unix platforms. + (extraclean): Use a more portable "" quoting instead of a + backslash (which doesn't work on DOS/Windows). + + * font/devlj4/generate/Makefile (extraclean): Ditto. + + * font/devdvi/generate/Makefile (extraclean): Ditto. + +2000-08-25 Werner LEMBERG <wl@gnu.org> + + * NEWS, doc/groff.texinfo, tmac/groff_tmac.man, man/roff.man, + src/roff/troff/troff.man: Document Eli's latest changes. + +2000-08-25 Eli Zaretskii <eliz@is.elta.co.il> + + * src/roff/troff/input.cc (open_mac_file, macro_source): Support + macro file names of the form NAME.tmac as well as tmac.NAME. + +2000-08-25 Werner LEMBERG <wl@gnu.org> + + * src/include/posix.h: Remove definition of FILENAME_MAX. + + * src/preproc/html2/pre-html.h, pre-html.cc: Add return type to + `sys_fatal' and `stop' function(). + + * test-groff: Updated. + +2000-08-24 Gaius Mulley <gaius@glam.ac.uk> + + Added the new troff command .output <arg> to suppress output (while + still obeying motion) and also the opminx, opminy, opmaxx, opmaxy + registers (for passing the output dimensions to the output device). + + * src/roff/troff/div.cc (top_level_diversion::output): Use `width' + parameter. + * src/roff/troff/node.h, src/roff/troff/node.cc + (troff_output_file::really_print_line, + ascii_output_file::really_print_line, + supress_output_file::really_print_line): Use `width' parameter. + (troff_output_file::really_on, troff_output_file::really_off, + output_file::on, output_file::off, real_output_file::on, + real_output_file::off, real_output_file::really_on, + real_output_file::really_off): New functions. + (real_output_file:public output_file): New variable `output_on'. + (real_output_file::begin_page, real_output_file::copy_file, + real_output_file::transparent_char, real_output_file::print_line): + Use it. + (real_output_file::print_line): Use check_output_limits. + * src/roff/troff/reg.h, src/roff/troff/request.h, + src/roff/troff/input.cc (assign_registers): New function to remove + two `goto's. + (do_ps_file): Use it. + (check_output_limits, reset_output_registers, output_request, + init_output_requests): New functions. + (init_input_requests): Updated. + + Added new grohtml2 device and html2 preprocessor (coding + not yet finished) which will eventually replace grohtml. + + * Makefile.in, tmac/Makefile.sub, tmac/eqnrc, tmac/troffrc-end: + Updated. + * src/include/htmlindicate.h, src/include/htmlindicate + (html_begin_suppress, html_end_suppress): New functions. + * src/preproc/tbl/main.cc: Use it. + * src/roff/groff/groff.cc: Add support for html2 device (which will + automatically invoke the html2 preprocessor). + * src/roff/troff/input.cc (is_html2): New variable. + * src/roff/troff/troff.h, src/roff/troff/env.h, + src/roff/troff/env.cc (environment::add_html_tag): New function + (uses `is_html2'). + (environment::do_break): Use it. + * font/devhtml2/*: New files. + * src/devices/grohtml2: New device. + * src/preproc/html2: New preprocessor. + * tmac/tmac.html-tags, tmac/tmac.html2: New files. + +2000-08-23 Werner LEMBERG <wl@gnu.org> + + * src/devices/grolbp/lbp.cc: Same workaround for sinix as for AIX. + +2000-08-22 Werner LEMBERG <wl@gnu.org> + + * src/include/lib.h: Provide a fix for IRIX to not include + groff-getopt.h. + +2000-08-18 Werner LEMBERG <wl@gnu.org> + + * configure.in: Don't provide an empty value for SH_SCRIPT_SED_CMD + since some non-GNU sed programs can't handle null regexps. + * configure, src/preproc/eqn/Makefile.sub, + src/roff/grog/Makefile.sub, src/roff/nroff/Makefile.sub: Updated. + + * src/devices/grolbp/lbp.cc: Add an AIX workaround for an autoconf + bug (string.h and strings.h are both needed according to latest + POSIX standard). + + * MORE.STUFF: Added info about unroff and troffcvt. + +2000-08-08 Werner LEMBERG <wl@gnu.org> + + * tmac/tmac.a4: Will now work with ms macros also; -ma4 should be + used before -ms. + + * tmac/tmac.man.old: Remove unused number register. + + * tmac.doc: Minor documentation fix. + +2000-08-07 Paul Eggert <eggert@twinsun.com> + + * src/roff/groff/pipeline.c (is_system_shell): + Fix typo: "monocased_shell" no longer exists. + +2000-08-07 Paul Eggert <eggert@twinsun.com> + + Remove FILENAME_MAX limits. + + * src/roff/groff/pipeline.c (is_system_shell): Do not assume + that the argument length is less than FILENAME_MAX. + * src/libs/libgroff/tmpfile.cc (add_tmp_file): Likewise. + Use struct hack to allocate and free file name. + (struct xtmpfile_list): fname is now part of the structure, + not a pointer to another string. + +2000-08-07 Tom Schmidt <tschmidt@micron.com> + + * src/include/posix.h: Add a default value for FILENAME_MAX. + +2000-08-06 Paul Eggert <eggert@twinsun.com> + + Add support for new BSD-style man pages (with ".Dd" instead of + ".TH"), so that "groff -man" understands both styles, even + when running "groff -man" on a host whose system man page + macros don't support ".Dd". + + * tmac/Makefile.sub (NORMALFILES): Add tmac.an.old. + (stamp-wrap): Source tmac.andoc first when wrapping man macros, + in case the system man macros don't define Dd or TH. + + * tmac/tmac.an.old: Renamed from tmac/tmac.an. + * tmac/tmac.an: New one-line file. + * tmac/tmac.andoc (TH): Adjust to the tmac.an.old file renaming. + +2000-08-06 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/troff.man: Fixing typos. + +Version 1.16.1 released +======================= + 2000-07-31 Werner LEMBERG <wl@gnu.org> Preparing release 1.16.1. @@ -1620,8 +3372,6 @@ Version 1.12 released * PROJECTS, PROBLEMS, NEWS: Updated. - * xditview/Makefile: Removed. - * VERSION: Updated to 1.12beta. * BUG-REPORT: Some cosmetic fixes. Corrected email address. @@ -1806,7 +3556,7 @@ Fri Aug 15 08:51:47 1997 Eric S. Raymond <esr@snark.thyrsus.com> * README, PROJECTS, NEWS, INSTALL, VERSION, doc/Makefile. doc/pic.ms, groff/groff.man: Prepare for 1.11 release. No code changes. - Documentation for pic added (doc/pic.ms). + Documentation for pic added (doc/pic.ms). Sun Nov 26 11:45:13 1995 James Clark <jjc@jclark.com> @@ -7524,4 +9274,5 @@ Sat Jul 14 11:23:01 1990 James Clark (jjc at yquem) Local Variables: version-control: never +coding: latin-1 End: diff --git a/contrib/groff/INSTALL b/contrib/groff/INSTALL index 0465f4e5890e..cdf7eb989f10 100644 --- a/contrib/groff/INSTALL +++ b/contrib/groff/INSTALL @@ -19,6 +19,16 @@ usual malloc, it is good idea to include it in LIBS. For example, using the malloc that comes with GNU Emacs version 20 can give a worthwhile (and sometimes spectacular) performance improvement. +If you want A4 or letter paper format and the configure script produces +an incorrect guess, say + + PAGE=xxx ./configure + +where `xxx' should be either `A4' or `letter'. Note that this will only +affect the paper selection for grops. For compatibility with ditroff, +the default page length in gtroff is always 11 inches. The page length +can be changed with the `pl' request. + When you have built groff, you can use the test-groff script to try groff out on one of the man pages. (Use the .n files not the .man files.) The test-groff script sets up environment variables to allow diff --git a/contrib/groff/MORE.STUFF b/contrib/groff/MORE.STUFF index ef29efc7dc65..6f06cef0b66a 100644 --- a/contrib/groff/MORE.STUFF +++ b/contrib/groff/MORE.STUFF @@ -12,8 +12,7 @@ Here two ports using the gcc compiler and other GNU tools: Kees Zeelenberg <c.zeelenberg@hccnet.nl>: - ftp://ftp.franken.de/pub/win32/develop/gnuwin32/ - cygwin/porters/Zeelenberg_Kees/B20/index.html + http://gnuwin32.sourceforge.net/ dos --- @@ -34,6 +33,13 @@ can be found at http://www.lunabase.org/~faber/Vault/software/grap/ +A djgpp port which runs on MS-DOS and all Win32 systems (Win95, Win98, +WinNT) done by Kees Zeelenberg <c.zeelenberg@hccnet.nl> is available from + + ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2apps/ + +It is intended to be used with the djgpp port of groff. + plot2dev -------- @@ -44,6 +50,59 @@ driver). The actual version can be found as ftp://ftp.ffii.org/pub/groff/plot2dev-x.x.tar.gz +troffcvt +-------- + +From the web page: + + troffcvt is a translator that turns troff input into a form that can be + more easily processed. The troffcvt distribution comes with + postprocessors that turn troffcvt into various destination formats such + as HTML (Hypertext Markup Language), RTF (Rich Text Format) or plain + text. + +Note that you need a lot of additional packages to compile troffcvt; +everything is available from + + http://www.primate.wisc.edu/software/troffcvt/ + +unroff +______ + +From the README file: + + Unroff is a Scheme-based, programmable, extensible troff translator with + a back-end for the Hypertext Markup Language. Unroff is free software + and is distributed both as source and as precompiled binaries. + + http://www.informatik.uni-bremen.de/~net/unroff/unroff.html + +You need als Elk, the Scheme based Extension Language Kit, which is +available from + + http://www.informatik.uni-bremen.de/~net/elk + +deroff +------ + +Deroff removes roff constructs from documents for the purpose of indexing, +spell checking etc. + +Michael Haardt's <michael@moria.de> implementation is a little smarter than +traditional implementations, because it knows about certain -man and +-mm macros. It is able to generate a word list for spell checking tools +or omit headers for sentence analysis tools. It can further generate +cpp-style #line lines. + + http://www.moria.de/deroff/ + +Version 1.6 compiled with DJGPP (for MS-DOS and all Win32 systems, i.e. +Win95, Win98, WinNT) is available from + + ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2apps/ + +and its mirrors. + miscellaneous ------------- @@ -80,6 +139,12 @@ miscellaneous of AT&T, and so should be invoked with the UNIX troff -mm flag; they should also work with the GNU troff -mm flag. +. Thomas Baruchel <baruchel@libertysurf.fr> has developed Meta-tbl, a tbl + postprocessor to manipulate table cells (like adding gray shades). The + latest version can be found at + + http://perso.libertysurf.fr/baruchel/ + documentation ------------- diff --git a/contrib/groff/Makefile.comm b/contrib/groff/Makefile.comm index b6cb4eb617c2..b9c9c85bca6f 100644 --- a/contrib/groff/Makefile.comm +++ b/contrib/groff/Makefile.comm @@ -119,9 +119,12 @@ revision=`sed -e 's/^0$$//' -e 's/^[1-9].*$$/.&/' $(top_srcdir)/REVISION` .man.n: @echo Making $@ from $< @-rm -f $@ - @sed -e "s|@FONTDIR@|$(fontdir)|g" \ + @sed -e "s|@BINDIR@|$(bindir)|g" \ + -e "s|@FONTDIR@|$(fontdir)|g" \ -e "s|@FONTPATH@|$(fontpath)|g" \ -e "s|@MACRODIR@|$(tmacdir)|g" \ + -e "s|@SYSTEMMACRODIR@|$(systemtmacdir)|g" \ + -e "s|@LOCALMACRODIR@|$(localtmacdir)|g" \ -e "s|@MACROPATH@|$(tmacpath)|g" \ -e "s|@DEVICE@|$(DEVICE)|g" \ -e "s|@DEFAULT_INDEX@|$(indexdir)/$(indexname)|g" \ @@ -205,6 +208,7 @@ uninstall_prog: .PHONY: install_dev install_dev: -test -d $(datadir) || $(mkinstalldirs) $(datadir) + -test -d $(dataprogramdir) || $(mkinstalldirs) $(dataprogramdir) -test -d $(datasubdir) || $(mkinstalldirs) $(datasubdir) -test -d $(fontdir) || $(mkinstalldirs) $(fontdir) -test -d $(fontsubdir) || $(mkinstalldirs) $(fontsubdir) diff --git a/contrib/groff/Makefile.in b/contrib/groff/Makefile.in index 9856aabe8911..63073ec3707e 100644 --- a/contrib/groff/Makefile.in +++ b/contrib/groff/Makefile.in @@ -1,4 +1,4 @@ -# Copyright (C) 1989-2000 Free Software Foundation, Inc. +# Copyright (C) 1989-2000, 2001 Free Software Foundation, Inc. # Written by James Clark (jjc@jclark.com) # # This file is part of groff. @@ -17,6 +17,15 @@ # with groff; see the file COPYING. If not, write to the Free Software # Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +srcdir=@srcdir@ +top_srcdir=@top_srcdir@ +VPATH=@srcdir@ +top_builddir=@top_builddir@ + +version=`cat $(top_srcdir)/VERSION` +# No additional number if revision is zero +revision=`sed -e 's/^0$$//' -e 's/^[1-9].*$$/.&/' $(top_srcdir)/REVISION` + # Define `page' to be letter if your PostScript printer uses 8.5x11 # paper (USA) and define it to be A4, if it uses A4 paper (rest of the # world). @@ -71,27 +80,41 @@ g=@g@ # Used in definitions of exec_prefix, datasubdir, fontpath, manroot. # This must already exist when you do make install. prefix=@prefix@ - exec_prefix=@exec_prefix@ # bindir says where to install executables. -bindir=$(exec_prefix)/bin +bindir=@bindir@ -# datasubdir says where to install data files +# libdir says where to install platform-dependent data +libdir=@libdir@ +libprogramdir=$(libdir)/groff + +# datasubdir says where to install platform-independent data files datadir=@datadir@ -datasubdir=$(datadir)/groff +dataprogramdir=$(datadir)/groff +datasubdir=$(dataprogramdir)/$(version)$(revision) # fontdir says where to install dev*/*. fontdir=$(datasubdir)/font # fontpath says where to look for dev*/*. -fontpath=.:$(fontdir):/usr/lib/font +fontpath=$(fontdir):/usr/lib/font # tmacdir says where to install macros. tmacdir=$(datasubdir)/tmac +# systemtmacdir says where to install platform-dependent macros +systemtmacdir=$(libprogramdir)/site-tmac + +# localtmacdir says where local files will be installed +localtmacdir=$(dataprogramdir)/site-tmac + # tmacpath says where to look for macro files. -tmacpath=.:$(tmacdir) +# The current directory will be prepended in unsafe mode only; the home +# directory will be always added. +# `troffrc' and `troffrc-end' (and `eqnrc') are searched neither in the +# current nor in the home directory. +tmacpath=$(systemtmacdir):$(localtmacdir):$(tmacdir) # sys_tmac_prefix is prefix (if any) for system macro packages sys_tmac_prefix=@sys_tmac_prefix@ @@ -225,11 +248,6 @@ PERLPATH=@PERLPATH@ # Sed command with which to edit sh scripts. SH_SCRIPT_SED_CMD=@SH_SCRIPT_SED_CMD@ -srcdir=@srcdir@ -top_srcdir=@top_srcdir@ -VPATH=@srcdir@ -top_builddir=@top_builddir@ - # the program to create directory hierarchies mkinstalldirs=$(top_srcdir)/mkinstalldirs @@ -253,13 +271,18 @@ MDEFINES= \ "top_builddir=$(top_builddir)" \ "prefix=$(prefix)" \ "exec_prefix=$(exec_prefix)" \ - "bindir=$(bindir)" \ "g=$(g)" \ "datadir=$(datadir)" \ + "dataprogramdir=$(dataprogramdir)" \ "datasubdir=$(datasubdir)" \ + "libdir=$(libdir)" \ + "libprogramdir=$(libprogramdir)" \ + "bindir=$(bindir)" \ "fontdir=$(fontdir)" \ "fontpath=$(fontpath)" \ "tmacdir=$(tmacdir)" \ + "systemtmacdir=$(systemtmacdir)" \ + "localtmacdir=$(localtmacdir)" \ "tmacpath=$(tmacpath)" \ "indexext=$(indexext)" \ "indexdir=$(indexdir)" \ @@ -318,6 +341,7 @@ CCPROGDIRS=\ src/preproc/grn \ src/preproc/refer \ src/preproc/soelim \ + src/preproc/html \ src/devices/grops \ src/devices/grotty \ src/devices/grodvi \ @@ -461,15 +485,10 @@ $(INCDIRS) $(OTHERDIRS): FORCE -f $$srcdir/Makefile.sub \ -f $(top_srcdir)/Makefile.man $(do) -version=`cat $(top_srcdir)/VERSION` -# No additional number for the groff archive if revision is zero -revision=`sed -e 's/^0$$//' -e 's/^[1-9].*$$/.&/' $(top_srcdir)/REVISION` - .PHONY: dist dist: -rm -fr tmp rm -f groff-$(version)$(revision).tar.gz - rm -f src/xditview/Imakefile; mkdir tmp for d in $(DISTDIRS); do \ $(mkinstalldirs) tmp/$$d; \ @@ -518,7 +537,9 @@ uninstall: uninstall_sub uninstall_dirs uninstall_dirs: # Use rmdir here so that the directories are only removed if they're empty -rmdir $(man1dir) $(man5dir) $(man7dir) $(manroot) \ - $(tmacdir) $(fontdir) $(bindir) $(datasubdir) $(datadir) + $(tmacdir) $(systemtmacdir) $(localtmacdir) $(fontdir) $(bindir) \ + $(datasubdir) $(dataprogramdir) $(datadir) \ + $(libprogramdir) $(libdir) .PHONY: check diff --git a/contrib/groff/Makefile.sub b/contrib/groff/Makefile.sub index ab72a5f74ef4..77c701f9bfc0 100644 --- a/contrib/groff/Makefile.sub +++ b/contrib/groff/Makefile.sub @@ -1,4 +1,5 @@ -DISTCLEANFILES=config.status config.log config.cache Makefile +DISTCLEANFILES=config.status config.log config.cache Makefile \ + src/xditview/Imakefile CLEANADD=Makefile.cfg conftest* distfiles: configure diff --git a/contrib/groff/NEWS b/contrib/groff/NEWS index 855a2689e66d..4866f4f53d6a 100644 --- a/contrib/groff/NEWS +++ b/contrib/groff/NEWS @@ -1,6 +1,244 @@ This file describes recent user-visible changes in groff. Bug fixes are not described. There are more details in the man pages. +Groff +----- + +o `-mFOO' will now search first for `FOO.tmac' and then for `tmac.FOO'. The + old behaviour has been changed to overcome problems with platforms which + have an 8+3 file name limit, and platforms which have other versions of + troff installed also. Additionally, all macro files have been renamed + using the latter scheme to avoid 8+3 name clashes. + +o The new environment variable GROFF_BIN_PATH will be checked for programs + groff is calling (preprocessors, troff, and output devices) before PATH. + If not set, it defaults to the directory where the groff binary is + located. Previously, it was PATH only. The nroff script will only use + GROFF_BIN_PATH to find the groff binary but passes both the GROFF_BIN_PATH + and PATH environment variable to groff. + +Troff +----- + +o The mdoc package has been completely rewritten, using the full power of + GNU troff to remove limitations of Unix troff (which is no longer + supported). Most important changes are: + + . No argument limit. + . Almost all macros are parsed and callable (if it makes sense). + . `.Lb': prints library names + . `.Nm <punctuation>' now works as expected; `.Nm "" <punctuation>' has + been withdrawn. + . Updated `.St' command + . `.Fx': prints FreeBSD + . `.Ox': prints OpenBSD + . `.Bsx': prints BSD/OS + . `.Brq', `.Bro', `.Brc': brace enclosure macros + . `.Bd -centered': center lines + . `.Bl -xwidth <string>': interpret <string> and use the resulting width + . support for double-sided printing (-rD1 command line switch) + . support for 11pt and 12pt document sizes (-rS11, -rS12 command line + switches) + + `groff_mdoc.man' replaces `groff_mdoc.samples.man'; it now completely + documents the mdoc package. + + Great care has been taken to assure backwards compatibility. If you + encounter any abnormal results, please report them to bug-groff@gnu.org. + +o A new command line option for the `man' macros (similar to the `mdoc' + package has been implemented: `-rcR=1' (now the default in nroff mode) will + produce one single, very long page instead of multiple pages. `-rcR=0' + will deactivate it. + +o The `return' request has been added to return immediately from a macro. + +o A new request `nop' (no operation) has been added which is similar to + `if 1'. For example, + + .if t \{\ + Hallo! + .\} + + can now be written as + + .if t \{\ + . nop Hallo! + .\} + +o `box' and `boxa' are two new requests which behave similarly to `di' and + `da' but don't include a partially filled line (which is restored after + ending the diversion). + +o The `asciify' request has been extended to `unformat' space characters + and some other escape sequences also. + + `\ ' will no longer be unformatted as a space but remains an unpaddable, + unbreakable space character. + +o The new `unformat' request is similar to `asciify' but only handles space + characters and tabs specially if the diversion is reread, retaining font + information. This makes it possible to reformat diversions; for example + the following + + .ll 3i + . + a01 a02 a03 a04 a05 a06 a07 a08 a09 a10. + . + .box box1 + .ev 1 + .nf + \f[B]b01 b02 b03 b04 b05 b06 b07 b08 b09 b10.\f[P] + .br + .ev + .box + . + c01 c02 c03 c04 c05 c06 c07 c08 c09 c10. + . + .unformat box1 + .box1 + + gives + + a01 a02 a03 a04 a05 a06 a07 + a08 a09 a10. c01 c02 c03 c04 + c05 c06 c07 c08 c09 c10. b01 + b02 b03 b04 b05 b06 b07 b08 + b09 b10. + + Without the `unformat' request, space characters are converted to word + space nodes which are no longer stretchable, and the result would be + + a01 a02 a03 a04 a05 a06 a07 + a08 a09 a10. c01 c02 c03 c04 + c05 c06 c07 c08 c09 c10. b01 + b02 b03 b04 b05 b06 b07 b08 + b09 b10. + +o The new request `linetabs' controls the `line-tabs' mode. In line-tabs + mode, tab distances are computed relative to the (current) output line. + Otherwise they are taken relative to the input line. For example, the + following + + .ds x a\t\c + .ds y b\t\c + .ds z c + .ta 1i 3i + \*x + \*y + \*z + + yields + + a b c + + In line-tabs mode, the same code gives + + a b c + + The new read-only number register `.linetabs' returns 1 if in line-tabs + mode, and 0 otherwise. + +o Two new requests `tm1' and `tmc' have been added to improve writing + messages to the terminal. `tm1' is similar to `tm' but allows leading + whitespace. `tmc' is similar to `tm1' but doesn't emit a final newline. + +o A new request `dei' (define indirect) has been added. The first and + second parameter of `dei' are taken from string registers rather than + directly; this very special request is needed to make `trace.tmac' + independent from the escape character (which might even be disabled). + +o It is now possible to save and restore the escape character with two new + requests `ecs' and `ecr'. + +o The new escape sequence \B'...' is an analogon to `\A': If the string + within the delimiters is a valid numeric expression, return character `1', + and `0' otherwise. + +o The new escape sequence `\:' inserts a zero-width break point. This is + similar to `\%' but without a soft hyphen character. + +o The `tr' request can now map characters onto `\~'. + +o Calling the `fam' request without an argument switches back to the + previous font family. + +o The new read-only register `.int' is set to a positive value if the last + output line is interrupted (i.e., if it contains `\c'). + +o The `writem' request is not new, but hasn't been documented before. This + is similar to `write' but instead of a string the contents of a given + macro or string is written to a stream. + +o The read/write number register `hp' to get/set the current horizontal + position relative to the input line isn't new but hasn't been documented + properly before. + +o `\X' and `\Y' are no transparent for end-of-sentence recognition. + +o The `cu' request in nroff mode now works as documented (i.e., it does + underline spaces also). + +Nroff +----- + +Option -v shows the version number. + +Grog +---- + +o The grog script will now work in non-compatibility mode also (which is the + default). As usual, use the `-C' option to activate compatibility mode. + +o Option -v shows the version number. + +Grops +----- + +A new option `-P' resp. a new environment variable `GROPS_PROLOGUE' has been +added to select a different prologue file. + +The effect of the former `-mpsnew' option to access more Type 1 characters +is now the default and no longer available. To get the old behaviour (i.e., +emulation of some glyphs by composition) use `-mpsold'. + +Miscellaneous +------------- + +o For security reasons the following changes have been done: + + . The tmac.safer file has been replaced with a built-in solution; .open, + .opena, .pso, .sy, and .pi are completely disabled in safer mode (which + is the default); to enable these requests the `-U' command line flag + must be used. + + . Files specified with the .mso request or given with the `-m' command + line option, and hyphenation patterns loaded with `.hpf' are no longer + searched in the current directory by default (besides the usual tmac + path). Instead, the home directory is used. To add the current + directory, either use the `-U' or `-M' command line option or set the + GROFF_TMAC_PATH environment variable to an appropriate value. + + . troffrc, troffrc-end, and eqnrc are neither searched in the current nor + in the home directory (even if -U is given). Use -M or GROFF_TMAC_PATH + to change that. + + . Similarly, the current directory is no longer part of the font path. + Use the `-F' command line option or the GROFF_FONT_PATH environment + variable if you really need the current directory. + +o groff will now install its data files into + /usr/local/share/groff/<version> by default, following the GNU standard. + Additionally, a local tmac directory (by default + /usr/local/share/groff/site-tmac) will be scanned before the standard tmac + directory. Wrapper files for system-specific macro packages (if + necessary) are put into /usr/local/lib/groff/site-tmac; this directory + will be searched before the local tmac directory. + +o All programs now have option `-v' to show the version number; they will + exit immediately afterwards, following the GNU standards. Additionally, + `--version' and `--help' have been added, doing the obvious actions. + VERSION 1.16.1 ============== diff --git a/contrib/groff/PROBLEMS b/contrib/groff/PROBLEMS index b73db2f4fbd0..001610e697f9 100644 --- a/contrib/groff/PROBLEMS +++ b/contrib/groff/PROBLEMS @@ -118,11 +118,11 @@ on the Software Companion CD and is installed as /opt/sfw/bin/gmake. * On Ultrix, the make stops with the message - *** Error code 1 + *** Error code 1 - Stop. + Stop. -for no apparent reason. + for no apparent reason. Use GNU make. @@ -172,10 +172,10 @@ No. Real dependency files are created with a `make depend' call. ---------------------------------------------------------------------- -* Groff can't handle my troff document. It works fine with AT&T troff. +* Groff can't handle my troff document. It works fine with AT&T troff. Read the section on incompatibilities in gtroff(1). Try using the -C -option. Alternatively there's the sed script in tmac/fixmacros.sed +option. Alternatively there's the sed script `tmac/fixmacros.sed' which will attempt to edit a file of macros so that it can be used with groff without the -C flag. @@ -186,7 +186,8 @@ with groff without the -C flag. Yes, it does. You may need to compile fonts with Metafont at these magnifications. The CompileFonts script in the devdvi/generate -directory may help you to do this. (It will take a *long* time.) +directory may help you to do this. (It will take a *long* time on +slow computers.) ---------------------------------------------------------------------- @@ -222,7 +223,7 @@ ps-file-server@adobe.com.) ---------------------------------------------------------------------- * I've configured groff for A4 paper, but gtroff still seems to think - that the length of a page (as returned by \n(.p) is 11 inches. + that the length of a page (as returned by `\n(.p') is 11 inches. This is intentional. The PAGE option is used only by grops. For compatibility with ditroff, the default page length in gtroff is @@ -231,9 +232,22 @@ request. ---------------------------------------------------------------------- +* groff produces wrapper macros for `ms' and friends which call the + system's original macros. Then, to get groff's ms macro package I + have to use `-mgs' instead `-ms'. Can I avoid this? + +Yes. Configure and compile groff as usual, but install it with + + make install tmac_wrap="" + +Then no wrapper files are produced, and `-ms' will use groff's `ms' +macros. + +---------------------------------------------------------------------- + * Groff doesn't use the font names I'm used to. -Use the `ftr' request. See gtroff(1). +Use the `ftr' request. See (g)troff(1). ---------------------------------------------------------------------- @@ -326,11 +340,7 @@ files produced by TeX. Try getting a more up to date driver. * I get lots of errors when I use groff with the AT&T -mm macros. -The AT&T -mm macros need a few changes to work with groff; `make -install.dwbmm' will copy your -mm macros to groff's macro directory -and make the necessary changes. You may need to edit the commands for -the install.mm target in the Makefile. Alternatively use the groff --mm macros. +Use the groff -mm macros. ---------------------------------------------------------------------- @@ -369,7 +379,7 @@ comments, you can do it like this: There seem to be many different styles of page header and footer produced by different versions of the -man macros. You will need to -modify macros/tmac.an to suit your personal taste. For example, if +modify tmac/an-old.tmac to suit your personal taste. For example, if you want the center of the page header to say System Programmer's Manual @@ -410,10 +420,9 @@ The solution is to fix the manual page: The Ultrix man pages use a number of non-standard extensions to the Unix man macros. One solution is to use the Ultrix -man macros with -groff. Rename /usr/local/lib/groff/tmac/tmac.an to -/usr/local/lib/groff/tmac/tmac.an.gnu, copy /usr/lib/tmac/tmac.an to -/usr/local/lib/groff/tmac/tmac.an and apply the following patch (from -Frank Wortner): +groff. Copy /usr/lib/tmac/tmac.an to +/usr/local/share/groff/site-tmac/an.tmac and apply the following patch +(from Frank Wortner): *** /usr/local/lib/groff/tmac/tmac.an Wed Sep 9 12:29:28 1992 --- /usr/lib/tmac/tmac.an Fri Jul 24 19:58:19 1992 @@ -436,17 +445,25 @@ Frank Wortner): .}f Another possible solution is to install tmac/man.ultrix as -/usr/local/lib/groff/tmac/man.local. +/usr/local/share/groff/site-tmac/man.local. ---------------------------------------------------------------------- * I'm having problems formatting HP-UX 9.0 man pages with groff -man. -Rename /usr/local/lib/groff/tmac/tmac.an to (for example) -/usr/local/lib/groff/tmac/tmac.gan, copy HP's tmac.an into -/usr/local/lib/groff/tmac/tmac.an, and either put `.cp 1' at the -beginning or filter it (and any files it .so's) through -tmac/fixmacros.sed. +Copy HP's tmac.an into /usr/local/share/groff/site-tmac/an.tmac, and +either put `.cp 1' at the beginning or filter it (and any files it .so's) +through tmac/fixmacros.sed. + +---------------------------------------------------------------------- + +* On HP-UX, the compiler complains about missing symbol `alloca'. + +Say + + export LDFLAGS=-lPW + +before starting the configure script. ---------------------------------------------------------------------- diff --git a/contrib/groff/README b/contrib/groff/README index 62ea08d81384..88f8f8780f25 100644 --- a/contrib/groff/README +++ b/contrib/groff/README @@ -20,7 +20,7 @@ The file PROBLEMS describes various problems that have been encountered in compiling, installing, and running groff. For the moment, the documentation assumes that you are already familiar -with the Unix versions of troff, -man, -ms, and the preprocessors. +with the Unix versions of troff, -ms, and the preprocessors. The most recent released version of groff is always available by anonymous ftp from ftp.gnu.org in the directory pub/gnu/groff. diff --git a/contrib/groff/REVISION b/contrib/groff/REVISION index d00491fd7e5b..573541ac9702 100644 --- a/contrib/groff/REVISION +++ b/contrib/groff/REVISION @@ -1 +1 @@ -1 +0 diff --git a/contrib/groff/VERSION b/contrib/groff/VERSION index e71519696fb2..b48f32260980 100644 --- a/contrib/groff/VERSION +++ b/contrib/groff/VERSION @@ -1 +1 @@ -1.16 +1.17 diff --git a/contrib/groff/aclocal.m4 b/contrib/groff/aclocal.m4 index 1cd92ce2e7cf..34ee4f1f7788 100644 --- a/contrib/groff/aclocal.m4 +++ b/contrib/groff/aclocal.m4 @@ -1,5 +1,5 @@ dnl Autoconf macros for groff. -dnl Copyright (C) 1989, 1990, 1991, 1992, 1995 Free Software Foundation, Inc. +dnl Copyright (C) 1989-1995, 2001 Free Software Foundation, Inc. dnl dnl This file is part of groff. dnl @@ -129,15 +129,12 @@ AC_LANG_RESTORE])dnl dnl dnl AC_DEFUN(GROFF_SYS_ERRLIST, -[AC_LANG_SAVE -AC_LANG_CPLUSPLUS -AC_MSG_CHECKING([for sys_errlist[] in <errno.h> or <stdio.h>]) +[AC_MSG_CHECKING([for sys_errlist[] in <errno.h> or <stdio.h>]) AC_TRY_COMPILE([#include <errno.h> #include <stdio.h>], [int k; k = (int)sys_errlist[0];], AC_MSG_RESULT(yes);AC_DEFINE(HAVE_SYS_ERRLIST), -AC_MSG_RESULT(no)) -AC_LANG_RESTORE])dnl +AC_MSG_RESULT(no))])dnl dnl dnl AC_DEFUN(GROFF_OSFCN_H, @@ -238,6 +235,13 @@ if test -z "$PAGE"; then descfile=$prefix/share/groff/font/devps/DESC elif test -r $prefix/lib/groff/font/devps/DESC; then descfile=$prefix/lib/groff/font/devps/DESC + else + for f in $prefix/share/groff/*/font/devps/DESC; do + if test -r $f; then + descfile=$f + break + fi + done fi if test -n "$descfile" \ && grep "^paperlength 841890" $descfile >/dev/null 2>&1; then diff --git a/contrib/groff/configure b/contrib/groff/configure index 31d9341e8952..061a6581fbad 100755 --- a/contrib/groff/configure +++ b/contrib/groff/configure @@ -1389,7 +1389,7 @@ chmod +x conftest.sh if echo ./conftest.sh | (csh >/dev/null 2>&1) >/dev/null 2>&1; then echo "$ac_t""yes" 1>&6; SH_SCRIPT_SED_CMD='1s/.*/:/' else - echo "$ac_t""no" 1>&6; SH_SCRIPT_SED_CMD='' + echo "$ac_t""no" 1>&6; SH_SCRIPT_SED_CMD='1s/a/a/' fi rm -f conftest.sh @@ -1963,18 +1963,10 @@ ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' cross_compiling=$ac_cv_prog_cc_cross - -ac_ext=C -# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cxx_cross - echo $ac_n "checking for sys_errlist in <errno.h> or <stdio.h>""... $ac_c" 1>&6 -echo "configure:1976: checking for sys_errlist in <errno.h> or <stdio.h>" >&5 +echo "configure:1968: checking for sys_errlist in <errno.h> or <stdio.h>" >&5 cat > conftest.$ac_ext <<EOF -#line 1978 "configure" +#line 1970 "configure" #include "confdefs.h" #include <errno.h> #include <stdio.h> @@ -1982,7 +1974,7 @@ int main() { int k; k = (int)sys_errlist[0]; ; return 0; } EOF -if { (eval echo configure:1986: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1978: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6;cat >> confdefs.h <<\EOF #define HAVE_SYS_ERRLIST 1 @@ -1995,13 +1987,6 @@ else echo "$ac_t""no" 1>&6 fi rm -f conftest* -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - ac_ext=C # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -2011,16 +1996,16 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes cross_compiling=$ac_cv_prog_cxx_cross echo $ac_n "checking C++ <osfcn.h>""... $ac_c" 1>&6 -echo "configure:2015: checking C++ <osfcn.h>" >&5 +echo "configure:2000: checking C++ <osfcn.h>" >&5 cat > conftest.$ac_ext <<EOF -#line 2017 "configure" +#line 2002 "configure" #include "confdefs.h" #include <osfcn.h> int main() { read(0, 0, 0); open(0, 0); ; return 0; } EOF -if { (eval echo configure:2024: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2009: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6;cat >> confdefs.h <<\EOF #define HAVE_CC_OSFCN_H 1 @@ -2049,16 +2034,16 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes cross_compiling=$ac_cv_prog_cxx_cross echo $ac_n "checking C++ <limits.h>""... $ac_c" 1>&6 -echo "configure:2053: checking C++ <limits.h>" >&5 +echo "configure:2038: checking C++ <limits.h>" >&5 cat > conftest.$ac_ext <<EOF -#line 2055 "configure" +#line 2040 "configure" #include "confdefs.h" #include <limits.h> int main() { int x = INT_MIN; int y = INT_MAX; int z = UCHAR_MAX; ; return 0; } EOF -if { (eval echo configure:2062: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2047: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6;cat >> confdefs.h <<\EOF #define HAVE_CC_LIMITS_H 1 @@ -2087,16 +2072,16 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes cross_compiling=$ac_cv_prog_cxx_cross echo $ac_n "checking for declaration of time_t""... $ac_c" 1>&6 -echo "configure:2091: checking for declaration of time_t" >&5 +echo "configure:2076: checking for declaration of time_t" >&5 cat > conftest.$ac_ext <<EOF -#line 2093 "configure" +#line 2078 "configure" #include "confdefs.h" #include <time.h> int main() { time_t t = time(0); struct tm *p = localtime(&t); ; return 0; } EOF -if { (eval echo configure:2100: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2085: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 else @@ -2117,12 +2102,12 @@ ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$a cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6 -echo "configure:2121: checking return type of signal handlers" >&5 +echo "configure:2106: checking return type of signal handlers" >&5 if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 2126 "configure" +#line 2111 "configure" #include "confdefs.h" #include <sys/types.h> #include <signal.h> @@ -2139,7 +2124,7 @@ int main() { int i; ; return 0; } EOF -if { (eval echo configure:2143: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2128: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_type_signal=void else @@ -2158,16 +2143,16 @@ EOF echo $ac_n "checking struct exception""... $ac_c" 1>&6 -echo "configure:2162: checking struct exception" >&5 +echo "configure:2147: checking struct exception" >&5 cat > conftest.$ac_ext <<EOF -#line 2164 "configure" +#line 2149 "configure" #include "confdefs.h" #include <math.h> int main() { struct exception e; ; return 0; } EOF -if { (eval echo configure:2171: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2156: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6;cat >> confdefs.h <<\EOF #define HAVE_STRUCT_EXCEPTION 1 @@ -2181,7 +2166,7 @@ else fi rm -f conftest* echo $ac_n "checking for sin in -lm""... $ac_c" 1>&6 -echo "configure:2185: checking for sin in -lm" >&5 +echo "configure:2170: checking for sin in -lm" >&5 ac_lib_var=`echo m'_'sin | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2189,7 +2174,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lm $LIBS" cat > conftest.$ac_ext <<EOF -#line 2193 "configure" +#line 2178 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -2200,7 +2185,7 @@ int main() { sin() ; return 0; } EOF -if { (eval echo configure:2204: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2189: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2225,17 +2210,17 @@ for ac_hdr in unistd.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2229: checking for $ac_hdr" >&5 +echo "configure:2214: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 2234 "configure" +#line 2219 "configure" #include "confdefs.h" #include <$ac_hdr> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2239: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2224: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2264,12 +2249,12 @@ done for ac_func in getpagesize do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2268: checking for $ac_func" >&5 +echo "configure:2253: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 2273 "configure" +#line 2258 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -2292,7 +2277,7 @@ $ac_func(); ; return 0; } EOF -if { (eval echo configure:2296: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2281: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -2317,7 +2302,7 @@ fi done echo $ac_n "checking for working mmap""... $ac_c" 1>&6 -echo "configure:2321: checking for working mmap" >&5 +echo "configure:2306: checking for working mmap" >&5 if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2325,7 +2310,7 @@ else ac_cv_func_mmap_fixed_mapped=no else cat > conftest.$ac_ext <<EOF -#line 2329 "configure" +#line 2314 "configure" #include "confdefs.h" /* Thanks to Mike Haertel and Jim Avera for this test. @@ -2465,7 +2450,7 @@ main() } EOF -if { (eval echo configure:2469: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2454: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_mmap_fixed_mapped=yes else @@ -2492,12 +2477,12 @@ LIBS="$LIBS -lc $LIBM" for ac_func in fmod strtol getcwd strerror putenv do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2496: checking for $ac_func" >&5 +echo "configure:2481: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 2501 "configure" +#line 2486 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -2520,7 +2505,7 @@ $ac_func(); ; return 0; } EOF -if { (eval echo configure:2524: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2509: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -2550,12 +2535,12 @@ LIBS="$saved_libs" for ac_func in rename mkstemp strcasecmp strncasecmp strsep strdup do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2554: checking for $ac_func" >&5 +echo "configure:2539: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 2559 "configure" +#line 2544 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -2578,7 +2563,7 @@ $ac_func(); ; return 0; } EOF -if { (eval echo configure:2582: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2567: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -2603,12 +2588,12 @@ fi done echo $ac_n "checking for sys_siglist declaration in signal.h or unistd.h""... $ac_c" 1>&6 -echo "configure:2607: checking for sys_siglist declaration in signal.h or unistd.h" >&5 +echo "configure:2592: checking for sys_siglist declaration in signal.h or unistd.h" >&5 if eval "test \"`echo '$''{'ac_cv_decl_sys_siglist'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 2612 "configure" +#line 2597 "configure" #include "confdefs.h" #include <sys/types.h> #include <signal.h> @@ -2620,7 +2605,7 @@ int main() { char *msg = *(sys_siglist + 1); ; return 0; } EOF -if { (eval echo configure:2624: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2609: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_decl_sys_siglist=yes else @@ -2649,16 +2634,16 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes cross_compiling=$ac_cv_prog_cxx_cross echo $ac_n "checking whether ANSI array delete syntax supported""... $ac_c" 1>&6 -echo "configure:2653: checking whether ANSI array delete syntax supported" >&5 +echo "configure:2638: checking whether ANSI array delete syntax supported" >&5 cat > conftest.$ac_ext <<EOF -#line 2655 "configure" +#line 2640 "configure" #include "confdefs.h" int main() { char *p = new char[5]; delete [] p; ; return 0; } EOF -if { (eval echo configure:2662: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2647: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 else @@ -2687,16 +2672,16 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes cross_compiling=$ac_cv_prog_cxx_cross echo $ac_n "checking traditional preprocessor""... $ac_c" 1>&6 -echo "configure:2691: checking traditional preprocessor" >&5 +echo "configure:2676: checking traditional preprocessor" >&5 cat > conftest.$ac_ext <<EOF -#line 2693 "configure" +#line 2678 "configure" #include "confdefs.h" #define name2(a,b) a/**/b int main() { int name2(foo,bar); ; return 0; } EOF -if { (eval echo configure:2700: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2685: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6;cat >> confdefs.h <<\EOF #define TRADITIONAL_CPP 1 @@ -2717,12 +2702,12 @@ ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$a cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking w_coredump""... $ac_c" 1>&6 -echo "configure:2721: checking w_coredump" >&5 +echo "configure:2706: checking w_coredump" >&5 if test "$cross_compiling" = yes; then echo "$ac_t""no" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 2726 "configure" +#line 2711 "configure" #include "confdefs.h" #include <sys/types.h> #include <sys/wait.h> @@ -2737,7 +2722,7 @@ main() #endif } EOF -if { (eval echo configure:2741: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2726: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then echo "$ac_t""yes" 1>&6;cat >> confdefs.h <<\EOF #define WCOREFLAG 0200 @@ -2753,18 +2738,25 @@ rm -fr conftest* fi echo $ac_n "checking default value for grops -b option""... $ac_c" 1>&6 -echo "configure:2757: checking default value for grops -b option" >&5 +echo "configure:2742: checking default value for grops -b option" >&5 test -n "${BROKEN_SPOOLER_FLAGS}" || BROKEN_SPOOLER_FLAGS=7 echo "$ac_t""$BROKEN_SPOOLER_FLAGS" 1>&6 echo $ac_n "checking default paper size""... $ac_c" 1>&6 -echo "configure:2762: checking default paper size" >&5 +echo "configure:2747: checking default paper size" >&5 if test -z "$PAGE"; then descfile= if test -r $prefix/share/groff/font/devps/DESC; then descfile=$prefix/share/groff/font/devps/DESC elif test -r $prefix/lib/groff/font/devps/DESC; then descfile=$prefix/lib/groff/font/devps/DESC + else + for f in $prefix/share/groff/*/font/devps/DESC; do + if test -r $f; then + descfile=$f + break + fi + done fi if test -n "$descfile" \ && grep "^paperlength 841890" $descfile >/dev/null 2>&1; then @@ -2793,7 +2785,7 @@ test -n "$PAGE" || PAGE=letter echo "$ac_t""$PAGE" 1>&6 echo $ac_n "checking for existing troff installation""... $ac_c" 1>&6 -echo "configure:2797: checking for existing troff installation" >&5 +echo "configure:2789: checking for existing troff installation" >&5 if test "x`(echo .tm '|n(.g' | tr '|' '\\\\' | troff -z -i 2>&1) 2>/dev/null`" = x0; then echo "$ac_t""yes" 1>&6 g=g @@ -2803,7 +2795,7 @@ else fi echo $ac_n "checking for prefix of system macro packages""... $ac_c" 1>&6 -echo "configure:2807: checking for prefix of system macro packages" >&5 +echo "configure:2799: checking for prefix of system macro packages" >&5 sys_tmac_prefix= sys_tmac_file_prefix= for d in /usr/share/lib/tmac /usr/lib/tmac; do @@ -2823,7 +2815,7 @@ echo "$ac_t""$sys_tmac_prefix" 1>&6 tmac_wrap= echo $ac_n "checking which system macro packages should be made available""... $ac_c" 1>&6 -echo "configure:2827: checking which system macro packages should be made available" >&5 +echo "configure:2819: checking which system macro packages should be made available" >&5 if test "x$sys_tmac_file_prefix" = "xtmac."; then for f in $sys_tmac_prefix*; do suff=`echo $f | sed -e "s;$sys_tmac_prefix;;"` diff --git a/contrib/groff/configure.in b/contrib/groff/configure.in index 081df0e6c4d8..92024e039202 100644 --- a/contrib/groff/configure.in +++ b/contrib/groff/configure.in @@ -15,7 +15,9 @@ AC_PROG_RANLIB GROFF_INSTALL_SH AC_PROG_INSTALL AC_PROG_LN_S -GROFF_CSH_HACK(SH_SCRIPT_SED_CMD='1s/.*/:/', SH_SCRIPT_SED_CMD='') +dnl use a dummy substitution if no csh hack is necessary to avoid errors +dnl with non-GNU sed programs +GROFF_CSH_HACK(SH_SCRIPT_SED_CMD='1s/.*/:/', SH_SCRIPT_SED_CMD='1s/a/a/') AC_SUBST(SH_SCRIPT_SED_CMD) dnl checks for headers AC_CHECK_HEADERS(stdlib.h unistd.h dirent.h limits.h sys/dir.h \ diff --git a/contrib/groff/contrib/mm/ChangeLog b/contrib/groff/contrib/mm/ChangeLog new file mode 100644 index 000000000000..ab3ed838b8ba --- /dev/null +++ b/contrib/groff/contrib/mm/ChangeLog @@ -0,0 +1,521 @@ +Mon Mar 5 09:30:18 2001 Jörgen Hägg (jh@axis.com) + + * S didn't reset to default point size + * (dummy line to force cvs update...) + +Sat Jan 06 10:30:00 2001 Werner Lemberg (wl@gnu.org) + + * Fixed assignment of page offset given as a command line argument. + +Fri Nov 17 05:34:17 2000 Jörgen Hägg (jh@axis.com) + + * Renamed tmac.m and tmac.mse to m.tmac and mse.tmac + +Thu Sep 14 05:52:48 2000 Jörgen Hägg (jh@axis.com) + + * New Changelog-format, it will show changes better. + Easier for other to use. (Somehow I didn't really + understand why the e-mail address was supposed to be + 'jh at axis.com' in the Changelog. :-) + +Thu Sep 7 06:17:42 2000 Jörgen Hägg (jh at axis.com) + + * version 2.0 + * Had to do something about my version numbering. + The main CVS archive was not in sync with mine. + So, now it is 2.0. :-) + +Sat Jun 17 23:00:00 2000 Eli Zaretskii (eliz@is.elta.co.il) + + * Makefile.sim (.man.n): Replace `;' with `|', since DOS/Windows + path lists use the semicolon as a separator. + +Sun Jun 4 21:39:00 2000 Kaneda Hiroshi (vanitas at ma3.seikyou.ne.jp) + + * Fixing a lot of typos in groff_mm.man + +Sun Jan 30 22:52:20 2000 Jörgen Hägg (jh at axis.com) + + * version 1.34 + * Changed the version number in the CVS repository + * MC had a bug in column calculation, (thanks to T. Kurt Bond) + +Fri Sep 3 07:33:14 1999 Jörgen Hägg (jh at axis.com) + + * version 1.33 + * At last! I finally tracked down the PGFORM bug! + It didn't setup the @pl, @ll and @po as it should, now it does. + * mgm_ref/mgm_roff renamed to mmroff [-x] + * fixed y2k-bug in \*[DT] + * \n[cov*year] removed, hope noone used that. + * ISODATE added with Iso as command line flag + (iso-date suggested by Paul Eggert) + * Added ISODATE to tmac.mse and removed local settings + of new-date. + * INITI syntax changed and enhanced. Index processing is now + done with mmroff. + * A few examples has been added, new subdirectory 'examples'. + * Fixed bug with SETR, header references are now only saved + when Ref > 0 + * Problem with register H1h fixed + * Added test for missing abstract in 4.MT + * Updated Makefile.sub, using tmac_m_prefix. + +Mon Mar 15 22:22:42 1999 Jörgen Hägg (jh at axis.com) + + * OK, let's release this as a beta, 1.33 will be better. :-) + * version 1.32 + * fixed .el-error + * Added number variable Hss + * Changed Hps1 and Hps2 to units + * added hd*h1-text to be used in user defined macro TP. + * -U needed for SETR (I really need 'mv', 'echo', 'rm' + and 'test' builtin!) + * Rewritten the reference system, SETR now prints to stderr + if the number register Qrf > 0. Store in the filename + that is the argument to .INITR + The old behaviour is returned if number register Initr > 0. + * Fixed bug with List of XXXX, long lines messed up the result. + * added number register H1dot. + * added string variable H1txt + * added string variable Tcst + * added number register Dsp. + * added alias APPX for user-defined appendix title. + * added string variable Apptxt + * added H1h for use in TP in headers + * added macro EPIC + * added macro PIC (safe replacement for PSPIC) + * fixed Hps-bug, should be 1, not 1v. + * fixed bug with APPSK, variable not set. + +Wed Feb 4 15:46:04 1998 Jörgen Hägg (jh at axis.se) + + * version 1.31 + * .LI will now honor a space mark. + * Another fix for .AU to let it be used without arguments. + * uninitialized eq*label fixed + +Fri Sep 6 07:13:07 1996 Jörgen Hägg (jh at axis.se) + + * version 1.30 + * This is more like a beta-release, bugs might pop up. :-) + * last line in TOC was not correctly terminated (missing .br) + * changed the indentation for displays, it will now + indent to the current indent, not the one at the definition + of the display. + * Equation marks should now work better, indentation also. + * included these bug fixes from Larry Jones: + * The documentation for the argument to .AS was incorrect for MT 4. + * \*(EM should be a double-dash for nroff. + * \nS is in points, not units. + * If \nO isn't set, the default page offset should be .75i for nroff + and .963i for troff. + * .S D should set the point size to \nS, not 10. + * .S was setting the vertical spacing based on the old point size + instead of the new point size. + * Got rid of a spurrious .br that prevented run-in headings from + working. + * Reset the .SP counters in pg@header so that spacing on one page + won't affect spacing on subsequent pages. + * Allow .AU and .AF with no arguments (real mm does, even though it + isn't documented). + * Do .init@reset first thing to initialize the default environment. + * For MT 4, the title should be 4 points larger than the default size, + not 12 point. + * The cover environment needs to be initialized. + * Printing the abstract on the first page needs to be controlled by + the .AS argument. + * Heading eject should be suppressed if the heading immediately + follows the first page stuff (title, author, etc.). + * support for table of contents numbering style (.nr Oc) + * changes the troff empty line height from .25v to .5v + * fixed section page numbering + * fixed a really nasty bug in footnotes that could cause you + to lose the page footer completely if the very first + footnote on the page occurred at just the wrong place + + +Wed May 15 07:39:32 1996 Jörgen Hägg (jh at axis.se) + + * version 1.29 + * Syntax and scaling errror fixed, (thanks to Frazer Williams) + * DF/DE will now do a line-break before printing the display. + * Updated the manual for TB,FG,EX and EC. + * Added support for the ms- (and mgs-)macro .IX + * Added indexmacro IX, INITI, IND and INDP, support for + TXIND, TYIND and TZIND. + * PGFORM will now always really reset to the default + values for unspecified arguments. + * Floating displays tested and repaired, it should + now (finanlly) work exactly as the original (I hope :-). + * Should now set year correctly even after 2000. + * Stupid bug in PGNH fixed. + * Corrected line length for figure caption (FG and friends) + + +Mon Apr 24 07:37:52 1995 Jörgen Hägg (jh at axis.se) + + * version 1.28 + * Added AVL (AV without date) + * Fixed nroff scaling for W and L. + * Added support for register E and roman/bold + for all Subject/Date/From strings. + * Added support for register C (1-4), (for DRAFTs and other types) + * Will protest if not used with groff. + * Change of the internal number registers @ps and @vs, they + are now in units, and is set in the new macros .@ps and .@vs. + @ps and @vs is now corrected to the real point and vertical size. + * Macro EQ has now correct pointsize. + * Figures should now get the right page number in the index. + * User-defined macros can now be defined for list of + figures, tables, equations and exhibits (T{X,Y}{FG,TB,EC,EX}. + * Space may be omitted between prefix and mark in automatic lists (.AL) + See .LI + +Tue Jan 10 07:51:37 1995 Jörgen Hägg (jh at axis.se) + + * version 1.27 + * Manual updated + * More bugs fixed in DS/DF + * added alias for :g + * LC can now be used without argument (as the manual says. :-) + * Register :R now supported (RS/RF) + * footnote line was printed even if there was no room for + any footnotes. Fixed. + * Fixed 1C so that it can be used without page eject + * Added support for EOP (TPs twin) + * Hyphenation turned off by default. (Hy == 0) + +Fri Nov 4 08:14:50 1994 Jörgen Hägg (jh at axis.se) + + * version 1.25 + * DS/DF separated and several bugs fixed. Watch out for new though. :-) + * string DT was emptied by mistake in the previous version. + * RD made prettier. + * typo in AV and let@print-head fixed. + +Mon Oct 31 08:19:24 1994 Jörgen Hägg (jh at axis.se) + + * version 1.24 + * Bug fixed and format extended in .SG and .FC. + * date is always printed unless .ND without argument is used. + (I wonder what's the right thing to do, this might change.) + * Swedish letter-standards implemented in tmac.mse. + * .ND can be used to turn off the date. (Empty argument) + +Mon Oct 31 08:14:09 1994 Jörgen Hägg (jh at axis.se) + + * version 1.23 + * An attempt to get in sync with RCS. This is the distributed + version. + +Thu Oct 27 08:29:34 1994 Jörgen Hägg (jh at axis.se) + + * version 1.22 + * (version 1.21 lost... :-) + * Letter macros added!! + * The following macros are added: + * AV, FC, IA ,IE, LT, LO, NE, NS, SG, WA, WE + * nP also added. + +Tue Dec 14 16:26:36 1993 Joergen Haegg (jh at efd.lth.se) + + * version 1.20 + * spelling-corrections + * Makefile.sim updated to the correct version, and a uninstall + target added. + * @cur-lib removed from tmac.m (obsolete) + * fixed check for references i .TC, .RP now resets the flag correctly. + * floating display should now be printed if there is space. + * first version using RCS. I've been avoiding version control until it + became necessary. + * WC WD now works in two-column-mode. + +Tue Sep 7 08:37:00 1993 Jörgen Hägg (jh at efd.lth.se) + + * version 1.19 + * .lt is called in the header for .TP also. + * Variable Pgps added to control the header and footer point-size. + * Error-text printed with .APP removed. + * Error with .FG, .TB, .EC and .EX indentation fixed. + * header and footer line-length is not changed by MC or 2C. + * Default for page-length and page-offset is now taken from + \n[.p] and \n[.o]. + * Argument to .ab (abort) is supplied. + * Argument to .1C added. + * Argument to .PGFORM added. + * RP/RS/RF totally rewritten. Should work with 2C now. + +Fri Apr 23 10:37:25 1993 Joergen Haegg (jh at efd.lth.se) + + * version 1.18 + * Height of display is now more exactly calculated. + * tabs and blankspaces where wrong in .VERBON. + * error in manual for escape-character in VERBON. + * Makefile.sub: installed tmac.m as tmac.m and tmac.mse + * Installation of tmac.mse now supports TMAC_M. + * bug with N fixed. + +Mon Apr 5 09:36:01 1993 Joergen Haegg (jh at efd.lth.se) + + * version 1.17 + * MULB preserves size. + * bug in VERBON fixed, causing strange errors. + * section-page footer fixed. + * added support for numberregister S + * fixed bug with floating displays wich made floats to + generate space on a page, but broke page anyway. + * end-of-page trap reinstalled. + +Mon Mar 29 10:53:13 1993 Joergen Haegg (jh at efd.lth.se) + + * version 1.16 + * MUL* now use the previous font and family. + * extra blank page at end-of-text eliminated. + +Mon Mar 8 10:27:47 1993 Joergen Haegg (jh at efd.lth.se) + + * version 1.15 + * Didn't restore pointsize to current size in .H. + * B1/B2 did not work with indent. (MULE and friends) + * fixed old problem with trailing empty pages. + +Fri Mar 5 15:20:49 1993 Joergen Haegg (jh at efd.lth.se) + + * version 1.14 + * Sigh. Amazing what a missing \} can do. If the string + HP was set, then all text disappeared... + +Fri Mar 5 14:12:43 1993 Joergen Haegg (jh at efd.lth.se) + + * version 1.13 + * Fixed bug with handling ps/vs in .H. (again, sigh... ) + +Wed Mar 3 09:21:20 1993 Joergen Haegg (jh at efd.lth.se) + + * version 1.12 + * Line-break added to PGFORM. + * added more features to VERBON + * .S is not used anymore in H, it caused confusion with + normal text, but it will still set .vs. + * SK was broken, will now produce the requested number of + empty pages. + * dotted lines added to LIST OF FIGURES adn friends. + Also better linespacing. + +Mon Feb 22 12:41:06 1993 Joergen Haegg (jh at efd.lth.se) + + * version 1.11 + * missing left-parenthesis gave ") .sp" when N=4. + * N=4 removed user-specified header also. + * MOVE made linelength pageoffset wider than wanted. + * fixed (again) parenthesis in RP. + +Thu Jan 21 12:10:39 1993 Joergen Haegg (jh at efd.lth.se) + + * version 1.10 + * changed PROG_PREFIX to g in the manual-pages. + * Better check if new page is needed in .H, when Ej>0. + * Usage of variable Lsp now more complete. + * Space added in TOC when mark is equal to size. + * Usermacro HY moved after font-calulations. + * .S used instead of .ps, which will use .vs correct. + * Now possible to set Hps1/2 inside HX. + * .FD "" 1 is now fixed. + * section-page numbering bug fixed. + * several bugs in VERBON/OFF fixed. + +Tue Dec 8 16:43:15 1992 Joergen Haegg (jh at efd.lth.se) + + * version 1.09 + * N==4 gives no default header + +Sat Nov 21 14:28:20 1992 Joergen Haegg (jh at efd.lth.se) + + * version 1.08 + * Escape-character disabled between + VERBON/VERBOFF (turned on by an argument). + Pointsize and fontchange also added as arguments. + * MULB, MULN and MULE added to get multicolumn output + with different width. + * Number register N can now use 1-5. + * Register Sectp and Sectf added. + * Register P is now updated correctly for "section-page" numbering. + +Thu Nov 19 11:19:33 1992 Joergen Haegg (jh at efd.lth.se) + + * version 1.07 + * .OP fixed to eject a blank page if not odd. + +Fri Nov 13 09:46:09 1992 Joergen Haegg (jh at efd.lth.se) + + * version 1.06 + * Macro TL rewritten. TL depends now on a following .AU. + * NOTES updated. + * .lt is now used more frequent when linelength is changed. + * macro AST added. + * removed PH/EH/OH not needed in ?.MT. + +Wed Oct 28 14:35:43 1992 Joergen Haegg (jh at efd.lth.se) + + * version 1.05 + * .VM implemented. + * Possible bug in page heading fixed. Changed .sp to 'sp in HEADER. + +Thu Aug 20 13:56:31 1992 Joergen Haegg (jh at efd.lth.se) + + * version 1.04 + * page-break in .EQ moved. + * changed unit for footer-size and header-size from units to lines. + Fixes problems with .S and page-breaks. + * \n[%] is now treated as a string, wich makes it possible + to assign new formats to it. Unfortunately, it was necessary + to change the page-number-variable in GETPN to a string. + * Makefile.sub included. (Thank you, James) + +Thu May 7 16:14:10 1992 Joergen Haegg (jh at efd.lth.se) + + * version 1.03 + * Typo and centering in DS/DE fixed. + Even and odd pageheaders were reversed. + * LI: pad and mark-indent was lost in some earlier versions. Now fixed. + * fixed bug in reference to .FG, .TB, ... + * APP did not clear headercounters. + * Pointsize in titles is now only set at the beginning and + when PH, PF, OH, OF, EH and EF are used. + +Thu May 6 16:01:35 1992 Joergen Haegg (jh at efd.lth.se) + + * version 1.02 + * OP fixed. + +Fri Mar 6 09:36:09 1992 Joergen Haegg (jh at efd.lth.se) + + * version 1.01 + * two .LI without text between should not be printed + on the same row. Now fixed. + * figure titles and friends fixed, now possible with many .FG + in a DS/DE. Didn't always position correctly in previous version, + but is now always printed as it should. + * Makefile fixed for Ultrix. + * DS/DF could not handle empty arguments correct + * Missing .br i EQ added. + +Sat Jan 25 15:47:21 1992 Joergen Haegg (jh at efd.lth.se) + + * version 1.00 + * No betaversion anymore! + * Fixed headernumbers within appendixes. + * DS did not keep the same font as before DS. + * mmse did a line break. + +Fri Jan 24 14:38:16 1992 Joergen Haegg (jh at efd.lth.se) + + * version 0.16 + * bug in TC, multiple line headers did not wrap correctly. + * added support for mm/locale and mm/language_locale. + * cov*default-firm in locale sets name of firm in the MT covers. + * cov*location-xxxx in locale sets location xxxx to the contents + of cov*location-xxxx. Used in the MT covers. + * hanging indent in lists fixed. + * use larger empty lines if .nroff is defined. + * macros, like .P, can now be used inside abstracts. + * .S do not reset indentation anymore. + * .RS aA now sets a string, not an integer. + * appendix with .APP or .APPSK added. + +Thu Nov 28 22:00:59 1991 Joergen Haegg (jh at efd.lth.se) + + * version 0.15 + * Fixed .AU in MT 0-3, added support for variable Au. + * Bug in the positioning of the foot-notes. + * lists not indented properly. + * Hps1 and Hps2 added. + * COVER had to have an argument. + * table of contents can now have multiline header. + * .HU now increments headingvariable H? + * added the inclusion of a locale file. + +Sat Nov 23 14:40:17 1991 Joergen Haegg (jh at efd.lth.se) + + * version 0.14 + * bug when using -rO fixed. + * MT 1-4 added. + * default is now MT 1 + * .EQ/.EN can be used outside of .DS/.DE without complaints. But + I don't recommend it. Neither does the DWB books. + * LI don't break lines now if arg too big. + * PGFORM did not reset indent. + * Added the numbervariable Hps. + * Rewritten and added MT 0-5 + "string". + * Added TM. + * Indent to AS added + +Wed Nov 6 15:18:40 1991 Joergen Haegg (jh at efd.lth.se) + + * version 0.13 + * ds*format nod defined if PS/PE is used without DS/DE. + * GETST added, fourth argument to EX, FG, TB and EC added. + +Mon Nov 4 13:38:01 1991 Joergen Haegg (jh at efd.lth.se) + + * version 0.12 + * Fixed C,D,P,+-size in .S + +Sun Jan 1 00:00:00 1991 Joergen Haegg (jh at efd.lth.se) + * Next version will have ChangeLog entries... + * Bug in INITR fixed. + * VERBON/VERBOFF added to include programlistings + * Bug in .DE fixed, addition overflow +Sun Jan 1 00:00:00 1991 Joergen Haegg (jh at efd.lth.se) + * spelling error in month-names. + * WC should work now (no warranty :-) + * FD almost finished, some details missing. + * incorrect calculation of foot-notes fixed. + * DS/DE did not break page when the size was smaller than the paper + * Forward/backward referencesystem added. Se .INITR in README. + * mgmsw changed name to mgmse. +Sun Jan 1 00:00:00 1991 Joergen Haegg (jh at efd.lth.se) + * embarrassing bug in .P fixed + * .H did always eject page, now fixed. + * lost floating displays now found. + * accents added (from mgs) + * empty line in .EQ/.EN removed + * indentation in .TC corrected. + * indentation of DS/DE in lists fixed. + * .TB and friends now work inside DS/DE and outside. + * .WC partially implemented (WF and WD). Still working on it. + * .mso used if version>=1.02 +Sun Jan 1 00:00:00 1991 Joergen Haegg (jh at efd.lth.se) + * register P was not working. + * support for register Fg, Tb, Ec and Ex. + * list items was left on the previous page at a page break. + * tlevel in .TC now defaults to 2. + * string DT, EM and Tm supported. + * new macro: PGNH, see comments. + * bug in MOVE fixed. + * pagenumber in .TC fixed. + * a blank page was ejected if Ej==1, now fixed + * bug in floating display fixed (did break and SP wrong) + * bug in .SP fixed, no lines is now printed at top of page + * There are still problems with footnotes and displays in two column mode. +Sun Jan 1 00:00:00 1991 Joergen Haegg (jh at efd.lth.se) + * register P added (same as %) + * bug in floating displays fixed + * MOVE added + * MT added, see comment below + * COVER/COVEND added + * fixed bug in figure titles + * extended S, se comment below + * MT 0 added + * ms-cover added (COVER ms) +Sun Jan 1 00:00:00 1991 Joergen Haegg (jh at efd.lth.se) + * bugs in RD and comb. fonts fixed +Sun Jan 1 00:00:00 1991 Joergen Haegg (jh at efd.lth.se) + * HC added + * Combined fonts (IB,BI...) + * HM added + * RD added + * OP added + * TP&PX supported + * warnings for unimplemented macros diff --git a/contrib/groff/contrib/mm/Makefile.sim b/contrib/groff/contrib/mm/Makefile.sim new file mode 100644 index 000000000000..e1d4a142b73f --- /dev/null +++ b/contrib/groff/contrib/mm/Makefile.sim @@ -0,0 +1,66 @@ +# +# $Id: Makefile.sim,v 2.1 2000/11/17 04:26:02 jhaegg Exp $ +# +# To install mgm separately as gm.tmac: +# make -f Makefile.sub tmacdir=/usr/local/lib/groff/tmac srcdir=. \ +# INSTALL_DATA='install -m 644' tmac_m=gm install +# +# or as m.tmac: +# +# tmacdir is the destination for your groff/tmac-directory, srcdir is +# this directory and INSTALL_DATA is the command to install a file with. +# If you dont have 'install': use 'cp'. + + +# change this to whatever you like +tmacdir=/usr/local/lib/groff/tmac +#tmac_m = gm +tmac_m = m +indexdir = xx +install = install -m 644 + +# Do not change anything below this line +srcdir = . +version = 1.32 +mdate = 1999-09-03 + +.SUFFIXES: .n .man + +all: + + +install: groff_mm.n groff_mmse.n + $(MAKE) -f Makefile.sub tmacdir=$(tmacdir) srcdir=$(srcdir) \ + INSTALL_DATA='$(install)' tmac_m=$(tmac_m) install + + uninstall: groff_mm.n groff_mmse.n + $(MAKE) -f Makefile.sub tmacdir=$(tmacdir) srcdir=$(srcdir) \ + INSTALL_DATA='$(install)' tmac_m=$(tmac_m) uninstall_sub + + +.man.n: + @echo Making $@ from $< + @-rm -f $@ + @sed -e "s|@HYPHENFILE@|$(hyphenfile)|g" \ + -e "s|@FONTDIR@|$(fontdir)|g" \ + -e "s|@FONTPATH@|$(fontpath)|g" \ + -e "s|@MACRODIR@|$(tmacdir)|g" \ + -e "s|@MACROPATH@|$(tmacpath)|g" \ + -e "s|@DEVICE@|$(DEVICE)|g" \ + -e "s|@DEFAULT_INDEX@|$(indexdir)/$(indexname)|g" \ + -e "s|@DEFAULT_INDEX_NAME@|$(indexname)|g" \ + -e "s|@INDEX_SUFFIX@|$(indexext)|g" \ + -e "s|@COMMON_WORDS_FILE@|$(common_words_file)|g" \ + -e "s|@MAN1EXT@|$(man1ext)|g" \ + -e "s|@MAN5EXT@|$(man5ext)|g" \ + -e "s|@MAN7EXT@|$(man7ext)|g" \ + -e "s|@TMAC_S@|$(tmac_s)|g" \ + -e "s|@TMAC_M@|$(tmac_m)|g" \ + -e "s|@TMAC_MDIR@|$(tmacdir)/mm|g" \ + -e "s|@BROKEN_SPOOLER_FLAGS@|$(BROKEN_SPOOLER_FLAGS)|g" \ + -e "s|@VERSION@|$(version)|g" \ + -e "s|@MDATE@|$(mdate)|g" \ + -e "s|@g@|$(g)|g" \ + -e "s!@G@;`echo $(g) | tr [a-z] [A-Z]`!g" \ + $< >$@ + diff --git a/contrib/groff/contrib/mm/Makefile.sub b/contrib/groff/contrib/mm/Makefile.sub new file mode 100644 index 000000000000..87cf0504fe4d --- /dev/null +++ b/contrib/groff/contrib/mm/Makefile.sub @@ -0,0 +1,55 @@ +# +# $Id: Makefile.sub,v 2.1 2000/11/17 04:26:02 jhaegg Exp $ +# +PROG=mmroff +MAN7=\ + groff_mm.n \ + groff_mmse.n \ + mmroff.n +FILES=0.MT 5.MT 4.MT ms.cov se_ms.cov +# Local configuration files with default values. +LOCALE = locale se_locale +CLEANADD=temp + +all: mmroff + +install: install_mm + +install_mm: install_mmroff install_m + -test -d $(tmacdir)/mm || $(mkinstalldirs) $(tmacdir)/mm + -for f in $(FILES); do \ + rm -f $(tmacdir)/mm/$$f; \ + $(INSTALL_DATA) $(srcdir)/mm/$$f $(tmacdir)/mm/$$f; \ + done + -for f in $(LOCALE); do \ + test -f $(tmacdir)/mm/$$f || touch $(tmacdir)/mm/$$f; \ + done + +install_m: + -test -d $(tmacdir) || $(mkinstalldirs) $(tmacdir) + -rm -f $(tmacdir)/tmac.$(tmac_m_prefix)m + -rm -f $(tmacdir)/$(tmac_m_prefix)m.tmac + $(INSTALL_DATA) $(srcdir)/m.tmac $(tmacdir)/$(tmac_m_prefix)m.tmac + @sed -e "s;^.mso m.tmac;.mso $(tmac_m_prefix)m.tmac;g" \ + $(srcdir)/mse.tmac > $(tmacdir)/$(tmac_m_prefix)mse.tmac +install_mmroff : mmroff + -test -d $(bindir) || $(mkinstalldirs) $(bindir) + -rm -f $(bindir)/mmroff + $(INSTALL_SCRIPT) mmroff $(bindir)/mmroff + +mmroff: mmroff.pl + -rm -f $@ + -sed -e 's;/usr/bin/perl;$(PERLPATH);' $(srcdir)/mmroff.pl >$@ + -chmod +x $@ + + +uninstall_sub: + -for f in $(FILES); do rm -f $(tmacdir)/mm/$$f; done + -for f in $(LOCALE); do \ + test -s $(tmacdir)/mm/$$f || rm -f $(tmacdir)/mm/$$f; \ + done + -rm -f $(tmacdir)/tmac.$(tmac_m_prefix)m + -rm -f $(tmacdir)/$(tmac_m_prefix)m.tmac + -rm -f $(tmacdir)/$(tmac_m_prefix)mse.tmac + -rmdir $(tmacdir)/mm + -rm -f $(bindir)/mmroff diff --git a/contrib/groff/contrib/mm/NOTES b/contrib/groff/contrib/mm/NOTES new file mode 100644 index 000000000000..7643c10067c7 --- /dev/null +++ b/contrib/groff/contrib/mm/NOTES @@ -0,0 +1,105 @@ +###################################################################### +$Id: NOTES,v 2.0 2000/09/14 03:40:24 jhaegg Exp $ + +Beware! +This may be old information. Trust only the source. :-) + +Implementation notes. (Or how to make your own national mm) + +Different commands: + +COVER [arg] +MT [arg [addressee]] +The arg is part of a filename in mm/*.MT or mm/*.cov. +This file is read when the macro is executed. Therefore it must be +put before any text output. +In each file there are definitions of all extra macros needed for the +cover sheet. MT files is only for compatibility reasons, and has several +limits due to that it don't know when the cover starts, and cannot +change sizes. Use COVER for new coversheet macros. + +But with MT it is possible to write all of the AT&T covers. +An example can be found in mm/0.MT. + +When writing a new cover using COVER, have in mind that the cover +should print the page with the COVEND macro. This macro +should be defined by the new macrofile. + +Here is a part of ms.cov: +> .\"----------------- +> .de COVEND +> .sp |4.2c +> .cov@print-title +> .cov@print-authors +> .cov@print-firm +> .cov@print-abstract +> .cov@print-date +This is important, since COVER disables the page header. +> .pg@enable-top-trap +Should begin with page one (normally). +> .bp 1 +And enable the trap at the page footer. +> .pg@enable-trap +> .. + +######################### + +Variables for covers: +I = integer +S = string +D = diversion +M = macro + +Name Type Desc. +cov*au I The number of authors. + +cov*title M Title collected with .TL. + +cov*au!x!y S Author(s) given to .AU +cov*at!x!y S Author(s) title given to .AT + x is the author-index [1-cov*au], + y is the argument-index [1-9]. + Look at the table with indexes. + +cov*firm I Author(s) firm. + +cov*abs-arg I Argument to abstract. + +cov*abs-ind I Indent for abstract. + +cov*abs-name S The string 'ABSTRACT', changed with .AST + +cov*abstract M The abstract. + +cov*new-date S The date (todays date if ND is not used) + +cov*mt-type S MT type +cov*mt-addresse S MT addressee + + +########################## +Argument-index for cov*au: + +Index Desc. +1 name +2 initials +3 location +4 department +5 extension +6 room +7 arg 7 +8 arg 8 +9 arg 9 + +The location is set to the contents of string cov*location-xxxx +if location is equal to xxxx and cov*location-xxxx is defined +in the file locale. + + +Argument-index for cov*at: + +Index Desc. +1 title 1 +. . +. . +9 title 9 diff --git a/contrib/groff/contrib/mm/README b/contrib/groff/contrib/mm/README new file mode 100644 index 000000000000..15901ddc974a --- /dev/null +++ b/contrib/groff/contrib/mm/README @@ -0,0 +1,37 @@ + +$Id: README,v 2.1 2000/11/17 04:27:03 jhaegg Exp $ + +This is mgm, a macro package for groff. + +It is supposed to be compatible with the DWB mm macros, +and has several extensions. + +Send bug reports to jh@axis.com with a description of the problem +and a sample of text which reproduces the error. + +Don't forget to mention the version of mgm (look in the beginning +of m.tmac) and the version of groff. + +Any new ideas or improvements are welcome. + +Newest version is available here or at the groff CVS repository. +ftp://ftp.axis.se/pub/groff/mm<something>.gz + +You can install mgm as a separate package without the configure in groff +with the following command: + +make -f Makefile.sim install + +This README should be bigger :-) + +/Jörgen Hägg + +Thanks to everyone who have sent me bug-reports and fixes. + + +Yes, my version numbering differs from the groff CVS, but I +like mine better. :-) + +More likely, I'm too lazy to change it, but someday I'll +try to sync them... +The step to 2.0 is an attempt, let's see if it works. diff --git a/contrib/groff/contrib/mm/examples/APP b/contrib/groff/contrib/mm/examples/APP new file mode 100644 index 000000000000..82352e58c3e4 --- /dev/null +++ b/contrib/groff/contrib/mm/examples/APP @@ -0,0 +1,352 @@ +.H 1 " granary grand grandchild grandchildren granddaughter grandeur" +granary +grapheme +graphic +graphite +grapple +grasp +grass +grassland +grassy +grata +grate +grateful +grater +gratify +gratis +gratitude +gratuitous +gratuity +grave +gravel +.H 2 "grapefruit grapevine graph grapheme graphic graphite" +granary +grand +graphic +graphite +grapple +grasp +grass +grassland +grassy +grata +grate +grateful +grater +gratify +gratis +gratitude +gratuitous +gratuity +grave +gravel +.H 3 "grapple" +granary +grand +grandchild +grandchildren +granddaughter +grandeur +grandfather +grandiloquent +grandiose +grandma +grandmother +grateful +grater +gratify +gratis +gratitude +gratuitous +gratuity +grave +gravel +.H 1 "Graves gravestone graveyard gravid gravitate gravy gray" +granary +grand +grandchild +grandchildren +granddaughter +grandeur +grandfather +grandiloquent +grandiose +grata +grate +grateful +grater +gratify +gratis +gratitude +gratuitous +gratuity +grave +gravel +.H 1 "Greenfield greengrocer greenhouse greenish Greenland Greensboro" +granary +grand +grandchild +grandchildren +granddaughter +grandeur +grandfather +grandiloquent +grassy +grata +grate +grateful +grater +gratify +gratis +gratitude +gratuitous +gratuity +grave +gravel +.H 1 "greensward greenware Greenwich greenwood Greer greet" +graven +Graves +gravestone +graveyard +gravid +gravitate +gravy +gray +graybeard +grayish +Grayson +graywacke +graze +grease +.APP "" "Graves app a gravestone graveyard gravid gravitate gravy gray" +granary +grand +grandchild +grandchildren +granddaughter +grandeur +grandfather +grandiloquent +grandiose +grata +grate +grateful +grater +gratify +gratis +gratitude +gratuitous +gratuity +grave +gravel +.APP "" "Greenfield app b greengrocer greenhouse greenish Greenland Greensboro" +granary +grand +grandchild +grandchildren +granddaughter +grandeur +.H 2 "grandfather grandiloquent grandiose grandma grandmother grandnephew" +.H 2 "grandniece grandpa grandparent grandson grandstand granite granitic" +.H 2 "granny granola grant grantee grantor granular granulate" +.H 2 "granule Granville grape" +.H 2 "grapefruit grapevine graph grapheme graphic graphite" +.H 3 "grapple" +grandfather +grandiloquent +grassy +grata +grate +grateful +grater +gratify +gratis +gratitude +gratuitous +gratuity +grave +gravel +.APP ABC "greensward app abc greenware Greenwich greenwood Greer greet" +graven +Graves +.APP "" "handstand app f handwrite handwritten handy handyman handymen" +gravestone +graveyard +gravid +gravitate +gravy +gray +graybeard +grayish +Grayson +graywacke +graze +grease +.APPSK "" 10 "Handel app c 10 handhold handicap handicapped handicapper" +.APPSK "" 23 "handicapping app d 23 handicraftsmen handiwork" +.APPSK "" 99 "handmade app e 99 handset handshake handsome handspike" +.nr Aph 0 +.APP "" "handstand app f handwrite handwritten handy handyman handymen" +headsmen +headstand +headstone +headstrong +headwall +headwater +headway +headwind +.H 2 "graybeard grayish Grayson graywacke graze grease greasy great greatcoat" +.H 2 "greater grebe Grecian Greece greed greedy Greek green Greenbelt Greenberg" +.H 2 "Greenblatt Greenbriar Greene greenery" +.H 3 "Greenfield greengrocer greenhouse greenish Greenland Greensboro" +.H 3 "greensward greenware Greenwich greenwood Greer greet" +heady +heal +Healey +health +healthful +healthy +Healy +heap +hear +heard +hearken +hearsay +hearse +Hearst +heart +heartbeat +heartbreak +hearten +heartfelt +hearth +hearty +heat +heater +heath +heathen +heathenish +Heathkit +heave +heaven +heavenward +heavy +heavyweight +Hebe +hebephrenic +Hebraic +Hebrew +Hecate +hecatomb +heck +heckle +Heckman +hectic +hector +.APP "" "hang hangable app f hangar hangman hangmen hangout hangover hank" +Hecuba +he'd +hedge +.H 2 "graybeard grayish Grayson graywacke graze grease greasy great greatcoat" +hedgehog +hedonism +hedonist +heed +heel +.H 2 "greater grebe Grecian Greece greed greedy Greek green Greenbelt Greenberg" +heft +hefty +Hegelian +hegemony +Heidelberg +heigh +height +heighten +Heine +Heinrich +Heinz +heir +heiress +Heisenberg +held +Helen +Helena +Helene +Helga +helical +helicopter +heliocentric +heliotrope +helium +helix +he'll +hell +hellbender +hellebore +Hellenic +hellfire +hellgrammite +hellish +hello +helm +helmet +Helmholtz +helmsman +helmsmen +Helmut +help +helpful +helpmate +.APP "" "Hankel app g Hanley Hanlon Hanna Hannah Hannibal Hanoi Hanover" +Helsinki +Helvetica +hem +hematite +Hemingway +hemisphere +hemispheric +hemlock +hemoglobin +hemolytic +hemorrhage +hemorrhoid +hemosiderin +hemp +Hempstead +hen +henbane +hence +henceforth +henchman +henchmen +.H 2 "greater grebe Grecian Greece greed greedy Greek green Greenbelt Greenberg" +Henderson +Hendrick +Hendricks +Hendrickson +henequen +Henley +henpeck +Henri +Henrietta +henry +hepatica +hepatitis +Hepburn +heptane +her +Hera +Heraclitus +herald +herb +Herbert +Herculean +Hercules +herd +herdsman +here +hereabout +hereafter +hereby +hereditary +.TC diff --git a/contrib/groff/contrib/mm/examples/B1B2 b/contrib/groff/contrib/mm/examples/B1B2 new file mode 100644 index 000000000000..a2bb3add57d9 --- /dev/null +++ b/contrib/groff/contrib/mm/examples/B1B2 @@ -0,0 +1,91 @@ +abetting +abeyance +abeyant +abhorred +abhorrent +abide +Abidjan +Abigail +abject +ablate +ablaze +able +ablution +Abner +abnormal +Abo +aboard +abode +abolish +.B1 +abolition +abominable +abominate +aboriginal +AAA +ABORIGINE +ABORNING +ABORT +ABOUND +ABOUT +ABOVE +ABOVEBOARD +ABOVEGROUND +abovementioned +abrade +Abraham +Abram +Abramson +abrasion +abrasive +abreact +.B2 +abreast +abrogate +abrupt +abscess +abscissa +abscissae +absence +absent +absentee +absenteeism +absentia +absentminded +absinthe +absolute +absolution +absolve +absorb +absorbent +absorption +absorptive +abstain +abstention +abstract +abstracter +abstractor +ABSURD +ABUILDING +ABUNDANT +ABUSABLE +ABUSE +ABUSIVE +ABUT +ABUTTED +ABUTTING +ABYSMAL +ABYSS +ABYSSINIA +AC +ACADEME +ACADEMIA +ACADEMIC +ACADEMICIAN +ACADEMY +ACADIA +ACANTHUS +ACAPULCO +ACCEDE +ACCELERATE +ACCELEROMETER diff --git a/contrib/groff/contrib/mm/examples/COVER b/contrib/groff/contrib/mm/examples/COVER new file mode 100644 index 000000000000..d23597f0a897 --- /dev/null +++ b/contrib/groff/contrib/mm/examples/COVER @@ -0,0 +1,235 @@ +.COVER +.ND 911123 +.TL "charge" "filing" +This is a test +granary +grand +grandchild +grandchildren +granddaughter +grandeur +grandfather +grandiloquent +grandiose +grandma +grandmother +grandnephew +grandniece +grandpa +grandparent +grandson +.AU "Nisse Svensson" "DGY" "BF" "Computer Center" "5488" "5-2115" "nisse@vira.sture.elm" +.AF "MT GRANDSTAND GRANITE GRANITIC" +.AS 1 10 +grant +grantee +grantor +granular +granulate +granule +Granville +grape +grapefruit +grapevine +graph +grapheme +graphic +graphite +grapple +grasp +grass +grassland +grassy +grata +grate +grateful +grater +gratify +gratis +gratitude +gratuitous +gratuity +grave +gravel +graven +Graves +gravestone +graveyard +gravid +gravitate +gravy +gray +graybeard +grayish +Grayson +graywacke +graze +grease +greasy +great +greatcoat +greater +grebe +Grecian +.AE +.COVEND +Greece +greed +greedy +Greek +green +Greenbelt +Greenberg +Greenblatt +Greenbriar +Greene +greenery +Greenfield +greengrocer +greenhouse +greenish +Greenland +Greensboro +greensward +greenware +Greenwich +greenwood +Greer +greet +Greg +gregarious +Gregg +Gregory +gremlin +grenade +Grendel +Grenoble +Gresham +Greta +Gretchen +grew +grey +greyhound +greylag +grid +griddle +gridiron +grief +grievance +grieve +grievous +griffin +Griffith +grill +grille +grilled +grillwork +grim +grimace +Grimaldi +grime +Grimes +Grimm +grin +grind +grindstone +grip +gripe +grippe +grisly +grist +gristmill +Griswold +grit +gritty +grizzle +granary +grand +grandchild +grandchildren +granddaughter +grandeur +grandfather +grandiloquent +grandiose +grandma +grandmother +grandnephew +grandniece +grandpa +grandparent +grandson +grandstand +granite +granitic +granny +granola +grant +grantee +grantor +granular +granulate +granule +Granville +grape +grapefruit +grapevine +graph +grapheme +graphic +graphite +grapple +grasp +grass +grassland +grassy +grata +grate +grateful +grater +gratify +gratis +gratitude +gratuitous +gratuity +grave +gravel +graven +Graves +gravestone +graveyard +gravid +gravitate +gravy +gray +graybeard +grayish +Grayson +graywacke +graze +grease +greasy +great +greatcoat +greater +grebe +Grecian +Greece +greed +greedy +Greek +green +Greenbelt +Greenberg +Greenblatt +Greenbriar +Greene +greenery +Greenfield +greengrocer +greenhouse +greenish +Greenland +Greensboro +greensward +greenware diff --git a/contrib/groff/contrib/mm/examples/IND b/contrib/groff/contrib/mm/examples/IND new file mode 100644 index 000000000000..fbf6c43a031a --- /dev/null +++ b/contrib/groff/contrib/mm/examples/IND @@ -0,0 +1,4191 @@ +.de foo +a=\\$1, b=\\$2 +.br +.. +.INITI N ind-data +.H 1 "halve" +.IND granary +grand +grandchild +grandchildren +granddaughter +grandeur +grandfather +grandiloquent +grandiose +grandma +grandmother +.IND grandnephew +grandniece +grandpa +grandparent +grandson +grandstand +granite +granitic +granny +granola +grant +grantee +grantor +granular +.IND granulate +granule +Granville +grape +.H 2 "grandfather grandiloquent grandiose grandma grandmother grandnephew" +grapefruit +grapevine +graph +grapheme +graphic +.H 1 "halo halocarbon halogen Halpern Halsey Halstead halt halvah" +graphite +grapple +grasp +grass +grassland +grassy +grata +grate +grateful +grater +gratify +gratis +gratitude +gratuitous +gratuity +.IND grave +gravel +graven +Graves +gravestone +graveyard +gravid +gravitate +gravy +gray +graybeard +grayish +Grayson +graywacke +graze +grease +greasy +great +greatcoat +greater +.H 1 "Han Hancock hand handbag handbook handclasp handcuff Handel handful" +grebe +Grecian +Greece +greed +greedy +.IND Greek +green +Greenbelt +Greenberg +.H 1 " granary grand grandchild grandchildren granddaughter grandeur" +Greenblatt +Greenbriar +Greene +greenery +Greenfield +greengrocer +greenhouse +greenish +Greenland +Greensboro +greensward +.H 1 "handgun" +greenware +Greenwich +greenwood +Greer +greet +Greg +gregarious +Gregg +Gregory +.IND gremlin +grenade +Grendel +Grenoble +Gresham +Greta +Gretchen +grew +grey +greyhound +greylag +grid +griddle +gridiron +grief +grievance +grieve +grievous +griffin +Griffith +grill +grille +grilled +grillwork +grim +.IND grimace +Grimaldi +grime +Grimes +Grimm +grin +grind +grindstone +grip +gripe +grippe +grisly +grist +gristmill +Griswold +grit +gritty +grizzle +grizzly +groan +groat +grocer +grocery +groggy +.IND groin +grommet +groom +groove +grope +grosbeak +gross +.H 1 "handicapped handicapper handicapping handicraft handicraftsman" +Grosset +Grossman +Grosvenor +grotesque +Groton +ground +groundsel +groundskeep +groundwork +group +groupoid +grout +grove +grovel +Grover +grow +growl +grown +grownup +.IND growth +grub +grubby +grudge +gruesome +gruff +grumble +Grumman +grunt +gryphon +g's +GSA +GU +Guam +guanidine +guanine +guano +guarantee +guaranteeing +guarantor +guaranty +guard +guardhouse +.IND Guardia +guardian +Guatemala +.IND gubernatorial +Guelph +Guenther +guerdon +guernsey +guerrilla +guess +guesswork +guest +guffaw +Guggenheim +Guiana +guidance +guide +guidebook +guideline +guidepost +guiding +guignol +guild +.H 1 "handicraftsmen handiwork handkerchief handle" +guildhall +guile +Guilford +guillemot +guillotine +guilt +.IND guilty +guinea +guise +guitar +gules +gulf +.H 1 "handleable handlebar handline handmade handmaiden handout" +gull +Gullah +gullet +gullible +gully +gulp +gum +gumbo +gumdrop +gummy +gumption +gumshoe +gun +Gunderson +.IND gunfight +gunfire +gunflint +gunk +gunky +gunman +.IND gunmen +gunnery +gunny +gunplay +gunpowder +gunshot +gunsling +Gunther +gurgle +Gurkha +guru +Gus +gush +gusset +gust +Gustafson +Gustav +Gustave +Gustavus +gusto +gusty +gut +.H 1 "handset" +Gutenberg +Guthrie +gutsy +guttural +.IND guy +Guyana +guzzle +Gwen +Gwyn +gym +gymnasium +gymnast +gymnastic +gymnosperm +gyp +gypsite +gypsum +gypsy +gyrate +gyrfalcon +gyro +.IND gyrocompass +gyroscope +h +ha +Haag +Haas +habeas +haberdashery +Haberman +.IND Habib +habit +habitant +habitat +habitation +habitual +habituate +hacienda +hack +hackberry +Hackett +hackle +hackmatack +.H 1 "handshake handsome handspike handstand handwaving handwrite handwritten" +hackney +hackneyed +hacksaw +had +Hadamard +Haddad +haddock +Hades +Hadley +hadn't +Hadrian +hadron +hafnium +.IND Hagen +Hager +haggard +haggle +Hagstrom +Hague +Hahn +Haifa +haiku +hail +hailstone +hailstorm +Haines +hair +.IND haircut +hairdo +hairpin +hairy +Haiti +Haitian +Hal +halcyon +hale +Haley +half +halfback +.IND halfhearted +halfway +halibut +halide +.H 1 "handy handyman handymen Haney Hanford hang hangable hangar" +Halifax +halite +hall +hallelujah +Halley +hallmark +hallow +Halloween +hallucinate +hallway +halma +halo +halocarbon +halogen +Halpern +Halsey +Halstead +halt +halvah +halve +Halverson +ham +.IND Hamal +Hamburg +hamburger +Hamilton +hamlet +Hamlin +hammerhead +hammock +Hammond +hamper +Hampshire +.IND Hampton +hamster +Han +.H 1 "hangman hangmen hangout hangover hank Hankel Hanley" +Hancock +hand +handbag +handbook +handclasp +handcuff +Handel +handful +handgun +handhold +handicap +handicapped +.IND handicapper +handicapping +handicraft +handicraftsman +handicraftsmen +handiwork +handkerchief +handle +handleable +handlebar +handline +handmade +handmaiden +handout +handset +handshake +handsome +handspike +handstand +handwaving +.H 1 "Hanlon Hanna Hannah Hannibal Hanoi Hanover Hanoverian Hans" +handwrite +handwritten +handy +handyman +handymen +Haney +.IND Hanford +hang +hangable +hangar +hangman +hangmen +hangout +hangover +.IND hank +Hankel +Hanley +Hanlon +Hanna +Hannah +Hannibal +Hanoi +Hanover +Hanoverian +Hans +Hansel +Hansen +hansom +Hanson +Hanukkah +hap +.H 1 "Hansel" +haphazard +.IND haploid +haploidy +haplology +happen +happenstance +happy +Hapsburg +harangue +harass +Harbin +harbinger +Harcourt +hard +hardbake +hardboard +hardboiled +hardcopy +harden +hardhat +Hardin +.H 1 "Hansen hansom Hanson Hanukkah hap haphazard haploid haploidy" +Harding +hardscrabble +hardtack +hardtop +hardware +hardwood +.IND hardworking +hardy +hare +harelip +harem +.IND hark +Harlan +Harlem +Harley +harm +harmful +Harmon +harmonic +harmonica +harmonious +.H 1 "haplology happen happenstance happy Hapsburg harangue harass Harbin" +harmony +harness +Harold +harp +harpoon +harpsichord +Harpy +Harriet +Harriman +Harrington +Harris +.IND Harrisburg +Harrison +harrow +harry +harsh +harshen +hart +Hartford +Hartley +Hartman +Harvard +harvest +harvestman +Harvey +hash +hashish +hasn't +hasp +hassle +hast +haste +hasten +Hastings +hasty +hat +hatch +.IND hatchet +hatchway +.IND hate +hateful +hater +Hatfield +hath +Hathaway +hatred +Hatteras +Hattie +Hattiesburg +Haugen +haughty +haul +haulage +haunch +haunt +Hausdorff +Havana +have +haven +haven't +Havilland +havoc +haw +.IND Hawaii +Hawaiian +hawk +Hawkins +Hawley +hawthorn +.H 2 "hammock Hammond hamper Hampshire Hampton hamster" +Hawthorne +hay +Hayden +Haydn +Hayes +hayfield +Haynes +Hays +haystack +Hayward +hayward +hazard +hazardous +haze +hazel +hazelnut +hazy +he +head +.IND headache +.IND headboard +headdress +headland +headlight +headline +headmaster +headphone +headquarter +headquarters +headroom +headset +headsman +headsmen +headstand +headstone +headstrong +headwall +headwater +headway +headwind +heady +heal +Healey +health +healthful +healthy +.IND Healy +heap +hear +heard +hearken +hearsay +hearse +Hearst +heart +heartbeat +heartbreak +hearten +heartfelt +hearth +hearty +heat +heater +heath +heathen +heathenish +Heathkit +heave +.IND heaven +heavenward +heavy +heavyweight +.IND Hebe +hebephrenic +Hebraic +Hebrew +Hecate +hecatomb +heck +heckle +Heckman +hectic +hector +Hecuba +he'd +hedge +hedgehog +hedonism +hedonist +heed +heel +heft +hefty +Hegelian +hegemony +Heidelberg +heigh +height +.IND heighten +Heine +Heinrich +Heinz +heir +heiress +Heisenberg +held +Helen +Helena +Helene +Helga +helical +helicopter +heliocentric +heliotrope +helium +helix +he'll +.IND hell +hellbender +hellebore +Hellenic +hellfire +hellgrammite +hellish +.IND hello +helm +helmet +.H 1 "Halverson ham Hamal Hamburg hamburger Hamilton hamlet Hamlin hammerhead" +Helmholtz +helmsman +helmsmen +Helmut +help +helpful +helpmate +Helsinki +Helvetica +hem +hematite +Hemingway +hemisphere +hemispheric +hemlock +hemoglobin +hemolytic +hemorrhage +hemorrhoid +hemosiderin +hemp +Hempstead +hen +.IND henbane +hence +henceforth +henchman +henchmen +Henderson +Hendrick +Hendricks +Hendrickson +henequen +Henley +henpeck +Henri +Henrietta +henry +hepatica +.IND hepatitis +Hepburn +heptane +her +Hera +Heraclitus +herald +herb +Herbert +Herculean +.IND Hercules +herd +herdsman +here +hereabout +hereafter +hereby +hereditary +heredity +Hereford +herein +hereinabove +hereinafter +hereinbelow +hereof +heresy +heretic +hereto +heretofore +hereunder +hereunto +herewith +heritable +heritage +Herkimer +Herman +.IND Hermann +hermeneutic +Hermes +hermetic +Hermite +hermitian +Hermosa +Hernandez +hero +Herodotus +heroes +heroic +heroin +.IND heroine +heroism +heron +herpes +herpetology +Herr +herringbone +Herschel +herself +Hershel +Hershey +hertz +Hertzog +.IND hesitant +hesitate +hesitater +Hesperus +Hess +Hesse +Hessian +Hester +heterocyclic +heterodyne +heterogamous +heterogeneity +heterogeneous +heterosexual +heterostructure +heterozygous +Hetman +Hettie +Hetty +Heublein +heuristic +Heusen +Heuser +hew +Hewett +Hewitt +.IND Hewlett +hewn +hex +hexachloride +hexadecimal +hexafluoride +hexagon +hexagonal +hexameter +hexane +.IND hey +heyday +hi +Hiatt +hiatus +Hiawatha +hibachi +Hibbard +hibernate +Hibernia +hick +Hickey +Hickman +hickory +Hicks +hid +.IND hidalgo +hidden +hide +hideaway +hideous +hideout +hierarchal +hierarchic +hierarchy +hieratic +hieroglyphic +Hieronymus +hifalutin +Higgins +high +highball +highboy +highest +highfalutin +highhanded +highland +highlight +highroad +hightail +highway +highwayman +.IND highwaymen +hijack +hijinks +hike +hilarious +hilarity +Hilbert +.IND Hildebrand +hill +hillbilly +Hillcrest +Hillel +hillman +hillmen +hillock +hillside +hilltop +hilly +hilt +Hilton +hilum +him +Himalaya +himself +hind +hindmost +.IND hindrance +hindsight +Hindu +Hinduism +Hines +hinge +Hinman +hint +hinterland +hip +hippo +Hippocrates +Hippocratic +hippodrome +hippopotamus +hippy +hipster +Hiram +hire +hireling +Hiroshi +Hiroshima +Hirsch +hirsute +his +Hispanic +.IND hiss +histamine +histidine +histochemic +.IND histochemistry +histogram +histology +historian +historic +historiography +history +histrionic +hit +Hitachi +hitch +Hitchcock +.H 1 "harbinger" +hither +hitherto +Hitler +hive +ho +hoagie +Hoagland +hoagy +hoar +hoard +.IND hoarfrost +hoarse +hob +Hobart +Hobbes +hobble +Hobbs +hobby +hobbyhorse +hobgoblin +hobo +Hoboken +hoc +hock +hockey +hocus +hodge +hodgepodge +Hodges +Hodgkin +hoe +Hoff +Hoffman +hog +hogan +hogging +.IND hoi +.IND Hokan +Holbrook +Holcomb +hold +holden +holdout +holdover +holdup +hole +holeable +holiday +Holland +Hollandaise +holler +Hollerith +Hollingsworth +Hollister +hollow +Holloway +hollowware +holly +hollyhock +Hollywood +Holm +Holman +.IND Holmdel +Holmes +holmium +holocaust +Holocene +hologram +holography +Holst +Holstein +holster +holt +Holyoke +.IND holystone +.INDP +inject injudicious Injun injunct injunction injure injurious injury +injustice ink inkling inlaid inland inlay inlet Inman inmate inn innards +innate inner innermost innkeeper innocent innocuous innovate innuendo +innumerable inoculate inoffensive inoperable inoperative inopportune +inordinate inorganic input inputting inquest inquire inquiry inquisition +inquisitive inquisitor inroad insane insatiable inscribe inscription +inscrutable insect insecticide insecure inseminate insensible insensitive +inseparable insert inset inshore inside insidious insight insightful +insignia insignificant insincere insinuate insipid insist insistent +insofar insolent insoluble insolvable insolvent insomnia insomniac +insouciant inspect inspector inspiration inspire instable install +installation instalment instance instant instantaneous instantiate +.INITI H ind-data2 +.H 1 "halve" +.IND granary +grand +grandchild +grandchildren +granddaughter +grandeur +grandfather +grandiloquent +grandiose +grandma +grandmother +.IND grandnephew +grandniece +grandpa +grandparent +grandson +grandstand +granite +granitic +granny +granola +grant +grantee +grantor +granular +.IND granulate +granule +Granville +grape +.H 2 "grandfather grandiloquent grandiose grandma grandmother grandnephew" +grapefruit +grapevine +graph +grapheme +graphic +.H 1 "halo halocarbon halogen Halpern Halsey Halstead halt halvah" +graphite +grapple +grasp +grass +grassland +grassy +grata +grate +grateful +grater +gratify +gratis +gratitude +gratuitous +gratuity +.IND grave +gravel +graven +Graves +gravestone +graveyard +gravid +gravitate +gravy +gray +graybeard +grayish +Grayson +graywacke +graze +grease +greasy +great +greatcoat +greater +.H 1 "Han Hancock hand handbag handbook handclasp handcuff Handel handful" +grebe +Grecian +Greece +greed +greedy +.IND Greek +green +Greenbelt +Greenberg +.H 1 " granary grand grandchild grandchildren granddaughter grandeur" +Greenblatt +Greenbriar +Greene +greenery +Greenfield +greengrocer +greenhouse +greenish +Greenland +Greensboro +greensward +.H 1 "handgun" +greenware +Greenwich +greenwood +Greer +greet +Greg +gregarious +Gregg +Gregory +.IND gremlin +grenade +Grendel +Grenoble +Gresham +Greta +Gretchen +grew +grey +greyhound +greylag +grid +griddle +gridiron +grief +grievance +grieve +grievous +griffin +Griffith +grill +grille +grilled +grillwork +grim +.IND grimace +Grimaldi +grime +Grimes +Grimm +grin +grind +grindstone +grip +gripe +grippe +grisly +grist +gristmill +Griswold +grit +gritty +grizzle +grizzly +groan +groat +grocer +grocery +groggy +.IND groin +grommet +groom +groove +grope +grosbeak +gross +.H 1 "handicapped handicapper handicapping handicraft handicraftsman" +Grosset +Grossman +Grosvenor +grotesque +Groton +ground +groundsel +groundskeep +groundwork +group +groupoid +grout +grove +grovel +Grover +grow +growl +grown +grownup +.IND growth +grub +grubby +grudge +gruesome +gruff +grumble +Grumman +grunt +gryphon +g's +GSA +GU +Guam +guanidine +guanine +guano +guarantee +guaranteeing +guarantor +guaranty +guard +guardhouse +.IND Guardia +guardian +Guatemala +.IND gubernatorial +Guelph +Guenther +guerdon +guernsey +guerrilla +guess +guesswork +guest +guffaw +Guggenheim +Guiana +guidance +guide +guidebook +guideline +guidepost +guiding +guignol +guild +.H 1 "handicraftsmen handiwork handkerchief handle" +guildhall +guile +Guilford +guillemot +guillotine +guilt +.IND guilty +guinea +guise +guitar +gules +gulf +.H 1 "handleable handlebar handline handmade handmaiden handout" +gull +Gullah +gullet +gullible +gully +gulp +gum +gumbo +gumdrop +gummy +gumption +gumshoe +gun +Gunderson +.IND gunfight +gunfire +gunflint +gunk +gunky +gunman +.IND gunmen +gunnery +gunny +gunplay +gunpowder +gunshot +gunsling +Gunther +gurgle +Gurkha +guru +Gus +gush +gusset +gust +Gustafson +Gustav +Gustave +Gustavus +gusto +gusty +gut +.H 1 "handset" +Gutenberg +Guthrie +gutsy +guttural +.IND guy +Guyana +guzzle +Gwen +Gwyn +gym +gymnasium +gymnast +gymnastic +gymnosperm +gyp +gypsite +gypsum +gypsy +gyrate +gyrfalcon +gyro +.IND gyrocompass +gyroscope +h +ha +Haag +Haas +habeas +haberdashery +Haberman +.IND Habib +habit +habitant +habitat +habitation +habitual +habituate +hacienda +hack +hackberry +Hackett +hackle +hackmatack +.H 1 "handshake handsome handspike handstand handwaving handwrite handwritten" +hackney +hackneyed +hacksaw +had +Hadamard +Haddad +haddock +Hades +Hadley +hadn't +Hadrian +hadron +hafnium +.IND Hagen +Hager +haggard +haggle +Hagstrom +Hague +Hahn +Haifa +haiku +hail +hailstone +hailstorm +Haines +hair +.IND haircut +hairdo +hairpin +hairy +Haiti +Haitian +Hal +halcyon +hale +Haley +half +halfback +.IND halfhearted +halfway +halibut +halide +.H 1 "handy handyman handymen Haney Hanford hang hangable hangar" +Halifax +halite +hall +hallelujah +Halley +hallmark +hallow +Halloween +hallucinate +hallway +halma +halo +halocarbon +halogen +Halpern +Halsey +Halstead +halt +halvah +halve +Halverson +ham +.IND Hamal +Hamburg +hamburger +Hamilton +hamlet +Hamlin +hammerhead +hammock +Hammond +hamper +Hampshire +.IND Hampton +hamster +Han +.H 1 "hangman hangmen hangout hangover hank Hankel Hanley" +Hancock +hand +handbag +handbook +handclasp +handcuff +Handel +handful +handgun +handhold +handicap +handicapped +.IND handicapper +handicapping +handicraft +handicraftsman +handicraftsmen +handiwork +handkerchief +handle +handleable +handlebar +handline +handmade +handmaiden +handout +handset +handshake +handsome +handspike +handstand +handwaving +.H 1 "Hanlon Hanna Hannah Hannibal Hanoi Hanover Hanoverian Hans" +handwrite +handwritten +handy +handyman +handymen +Haney +.IND Hanford +hang +hangable +hangar +hangman +hangmen +hangout +hangover +.IND hank +Hankel +Hanley +Hanlon +Hanna +Hannah +Hannibal +Hanoi +Hanover +Hanoverian +Hans +Hansel +Hansen +hansom +Hanson +Hanukkah +hap +.H 1 "Hansel" +haphazard +.IND haploid +haploidy +haplology +happen +happenstance +happy +Hapsburg +harangue +harass +Harbin +harbinger +Harcourt +hard +hardbake +hardboard +hardboiled +hardcopy +harden +hardhat +Hardin +.H 1 "Hansen hansom Hanson Hanukkah hap haphazard haploid haploidy" +Harding +hardscrabble +hardtack +hardtop +hardware +hardwood +.IND hardworking +hardy +hare +harelip +harem +.IND hark +Harlan +Harlem +Harley +harm +harmful +Harmon +harmonic +harmonica +harmonious +.H 1 "haplology happen happenstance happy Hapsburg harangue harass Harbin" +harmony +harness +Harold +harp +harpoon +harpsichord +Harpy +Harriet +Harriman +Harrington +Harris +.IND Harrisburg +Harrison +harrow +harry +harsh +harshen +hart +Hartford +Hartley +Hartman +Harvard +harvest +harvestman +Harvey +hash +hashish +hasn't +hasp +hassle +hast +haste +hasten +Hastings +hasty +hat +hatch +.IND hatchet +hatchway +.IND hate +hateful +hater +Hatfield +hath +Hathaway +hatred +Hatteras +Hattie +Hattiesburg +Haugen +haughty +haul +haulage +haunch +haunt +Hausdorff +Havana +have +haven +haven't +Havilland +havoc +haw +.IND Hawaii +Hawaiian +hawk +Hawkins +Hawley +hawthorn +.H 2 "hammock Hammond hamper Hampshire Hampton hamster" +Hawthorne +hay +Hayden +Haydn +Hayes +hayfield +Haynes +Hays +haystack +Hayward +hayward +hazard +hazardous +haze +hazel +hazelnut +hazy +he +head +.IND headache +.IND headboard +headdress +headland +headlight +headline +headmaster +headphone +headquarter +headquarters +headroom +headset +headsman +headsmen +headstand +headstone +headstrong +headwall +headwater +headway +headwind +heady +heal +Healey +health +healthful +healthy +.IND Healy +heap +hear +heard +hearken +hearsay +hearse +Hearst +heart +heartbeat +heartbreak +hearten +heartfelt +hearth +hearty +heat +heater +heath +heathen +heathenish +Heathkit +heave +.IND heaven +heavenward +heavy +heavyweight +.IND Hebe +hebephrenic +Hebraic +Hebrew +Hecate +hecatomb +heck +heckle +Heckman +hectic +hector +Hecuba +he'd +hedge +hedgehog +hedonism +hedonist +heed +heel +heft +hefty +Hegelian +hegemony +Heidelberg +heigh +height +.IND heighten +Heine +Heinrich +Heinz +heir +heiress +Heisenberg +held +Helen +Helena +Helene +Helga +helical +helicopter +heliocentric +heliotrope +helium +helix +he'll +.IND hell +hellbender +hellebore +Hellenic +hellfire +hellgrammite +hellish +.IND hello +helm +helmet +.H 1 "Halverson ham Hamal Hamburg hamburger Hamilton hamlet Hamlin hammerhead" +Helmholtz +helmsman +helmsmen +Helmut +help +helpful +helpmate +Helsinki +Helvetica +hem +hematite +Hemingway +hemisphere +hemispheric +hemlock +hemoglobin +hemolytic +hemorrhage +hemorrhoid +hemosiderin +hemp +Hempstead +hen +.IND henbane +hence +henceforth +henchman +henchmen +Henderson +Hendrick +Hendricks +Hendrickson +henequen +Henley +henpeck +Henri +Henrietta +henry +hepatica +.IND hepatitis +Hepburn +heptane +her +Hera +Heraclitus +herald +herb +Herbert +Herculean +.IND Hercules +herd +herdsman +here +hereabout +hereafter +hereby +hereditary +heredity +Hereford +herein +hereinabove +hereinafter +hereinbelow +hereof +heresy +heretic +hereto +heretofore +hereunder +hereunto +herewith +heritable +heritage +Herkimer +Herman +.IND Hermann +hermeneutic +Hermes +hermetic +Hermite +hermitian +Hermosa +Hernandez +hero +Herodotus +heroes +heroic +heroin +.IND heroine +heroism +heron +herpes +herpetology +Herr +herringbone +Herschel +herself +Hershel +Hershey +hertz +Hertzog +.IND hesitant +hesitate +hesitater +Hesperus +Hess +Hesse +Hessian +Hester +heterocyclic +heterodyne +heterogamous +heterogeneity +heterogeneous +heterosexual +heterostructure +heterozygous +Hetman +Hettie +Hetty +Heublein +heuristic +Heusen +Heuser +hew +Hewett +Hewitt +.IND Hewlett +hewn +hex +hexachloride +hexadecimal +hexafluoride +hexagon +hexagonal +hexameter +hexane +.IND hey +heyday +hi +Hiatt +hiatus +Hiawatha +hibachi +Hibbard +hibernate +Hibernia +hick +Hickey +Hickman +hickory +Hicks +hid +.IND hidalgo +hidden +hide +hideaway +hideous +hideout +hierarchal +hierarchic +hierarchy +hieratic +hieroglyphic +Hieronymus +hifalutin +Higgins +high +highball +highboy +highest +highfalutin +highhanded +highland +highlight +highroad +hightail +highway +highwayman +.IND highwaymen +hijack +hijinks +hike +hilarious +hilarity +Hilbert +.IND Hildebrand +hill +hillbilly +Hillcrest +Hillel +hillman +hillmen +hillock +hillside +hilltop +hilly +hilt +Hilton +hilum +him +Himalaya +himself +hind +hindmost +.IND hindrance +hindsight +Hindu +Hinduism +Hines +hinge +Hinman +hint +hinterland +hip +hippo +Hippocrates +Hippocratic +hippodrome +hippopotamus +hippy +hipster +Hiram +hire +hireling +Hiroshi +Hiroshima +Hirsch +hirsute +his +Hispanic +.IND hiss +histamine +histidine +histochemic +.IND histochemistry +histogram +histology +historian +historic +historiography +history +histrionic +hit +Hitachi +hitch +Hitchcock +.H 1 "harbinger" +hither +hitherto +Hitler +hive +ho +hoagie +Hoagland +hoagy +hoar +hoard +.IND hoarfrost +hoarse +hob +Hobart +Hobbes +hobble +Hobbs +hobby +hobbyhorse +hobgoblin +hobo +Hoboken +hoc +hock +hockey +hocus +hodge +hodgepodge +Hodges +Hodgkin +hoe +Hoff +Hoffman +hog +hogan +hogging +.IND hoi +.IND Hokan +Holbrook +Holcomb +hold +holden +holdout +holdover +holdup +hole +holeable +holiday +Holland +Hollandaise +holler +Hollerith +Hollingsworth +Hollister +hollow +Holloway +hollowware +holly +hollyhock +Hollywood +Holm +Holman +.IND Holmdel +Holmes +holmium +holocaust +Holocene +hologram +holography +Holst +Holstein +holster +holt +Holyoke +.IND holystone +.INDP +inject injudicious Injun injunct injunction injure injurious injury +injustice ink inkling inlaid inland inlay inlet Inman inmate inn innards +innate inner innermost innkeeper innocent innocuous innovate innuendo +innumerable inoculate inoffensive inoperable inoperative inopportune +inordinate inorganic input inputting inquest inquire inquiry inquisition +.INITI B ind-data3 +.H 1 "halve" +.IND granary +grand +grandchild +grandchildren +granddaughter +grandeur +grandfather +grandiloquent +grandiose +grandma +grandmother +.IND grandnephew +grandniece +grandpa +grandparent +grandson +grandstand +granite +granitic +granny +granola +grant +grantee +grantor +granular +.IND granulate +granule +Granville +grape +.H 2 "grandfather grandiloquent grandiose grandma grandmother grandnephew" +grapefruit +grapevine +graph +grapheme +graphic +.H 1 "halo halocarbon halogen Halpern Halsey Halstead halt halvah" +graphite +grapple +grasp +grass +grassland +grassy +grata +grate +grateful +grater +gratify +gratis +gratitude +gratuitous +gratuity +.IND grave +gravel +graven +Graves +gravestone +graveyard +gravid +gravitate +gravy +gray +graybeard +grayish +Grayson +graywacke +graze +grease +greasy +great +greatcoat +greater +.H 1 "Han Hancock hand handbag handbook handclasp handcuff Handel handful" +grebe +Grecian +Greece +greed +greedy +.IND Greek +green +Greenbelt +Greenberg +.H 1 " granary grand grandchild grandchildren granddaughter grandeur" +Greenblatt +Greenbriar +Greene +greenery +Greenfield +greengrocer +greenhouse +greenish +Greenland +Greensboro +greensward +.H 1 "handgun" +greenware +Greenwich +greenwood +Greer +greet +Greg +gregarious +Gregg +Gregory +.IND gremlin +grenade +Grendel +Grenoble +Gresham +Greta +Gretchen +grew +grey +greyhound +greylag +grid +griddle +gridiron +grief +grievance +grieve +grievous +griffin +Griffith +grill +grille +grilled +grillwork +grim +.IND grimace +Grimaldi +grime +Grimes +Grimm +grin +grind +grindstone +grip +gripe +grippe +grisly +grist +gristmill +Griswold +grit +gritty +grizzle +grizzly +groan +groat +grocer +grocery +groggy +.IND groin +grommet +groom +groove +grope +grosbeak +gross +.H 1 "handicapped handicapper handicapping handicraft handicraftsman" +Grosset +Grossman +Grosvenor +grotesque +Groton +ground +groundsel +groundskeep +groundwork +group +groupoid +grout +grove +grovel +Grover +grow +growl +grown +grownup +.IND growth +grub +grubby +grudge +gruesome +gruff +grumble +Grumman +grunt +gryphon +g's +GSA +GU +Guam +guanidine +guanine +guano +guarantee +guaranteeing +guarantor +guaranty +guard +guardhouse +.IND Guardia +guardian +Guatemala +.IND gubernatorial +Guelph +Guenther +guerdon +guernsey +guerrilla +guess +guesswork +guest +guffaw +Guggenheim +Guiana +guidance +guide +guidebook +guideline +guidepost +guiding +guignol +guild +.H 1 "handicraftsmen handiwork handkerchief handle" +guildhall +guile +Guilford +guillemot +guillotine +guilt +.IND guilty +guinea +guise +guitar +gules +gulf +.H 1 "handleable handlebar handline handmade handmaiden handout" +gull +Gullah +gullet +gullible +gully +gulp +gum +gumbo +gumdrop +gummy +gumption +gumshoe +gun +Gunderson +.IND gunfight +gunfire +gunflint +gunk +gunky +gunman +.IND gunmen +gunnery +gunny +gunplay +gunpowder +gunshot +gunsling +Gunther +gurgle +Gurkha +guru +Gus +gush +gusset +gust +Gustafson +Gustav +Gustave +Gustavus +gusto +gusty +gut +.H 1 "handset" +Gutenberg +Guthrie +gutsy +guttural +.IND guy +Guyana +guzzle +Gwen +Gwyn +gym +gymnasium +gymnast +gymnastic +gymnosperm +gyp +gypsite +gypsum +gypsy +gyrate +gyrfalcon +gyro +.IND gyrocompass +gyroscope +h +ha +Haag +Haas +habeas +haberdashery +Haberman +.IND Habib +habit +habitant +habitat +habitation +habitual +habituate +hacienda +hack +hackberry +Hackett +hackle +hackmatack +.H 1 "handshake handsome handspike handstand handwaving handwrite handwritten" +hackney +hackneyed +hacksaw +had +Hadamard +Haddad +haddock +Hades +Hadley +hadn't +Hadrian +hadron +hafnium +.IND Hagen +Hager +haggard +haggle +Hagstrom +Hague +Hahn +Haifa +haiku +hail +hailstone +hailstorm +Haines +hair +.IND haircut +hairdo +hairpin +hairy +Haiti +Haitian +Hal +halcyon +hale +Haley +half +halfback +.IND halfhearted +halfway +halibut +halide +.H 1 "handy handyman handymen Haney Hanford hang hangable hangar" +Halifax +halite +hall +hallelujah +Halley +hallmark +hallow +Halloween +hallucinate +hallway +halma +halo +halocarbon +halogen +Halpern +Halsey +Halstead +halt +halvah +halve +Halverson +ham +.IND Hamal +Hamburg +hamburger +Hamilton +hamlet +Hamlin +hammerhead +hammock +Hammond +hamper +Hampshire +.IND Hampton +hamster +Han +.H 1 "hangman hangmen hangout hangover hank Hankel Hanley" +Hancock +hand +handbag +handbook +handclasp +handcuff +Handel +handful +handgun +handhold +handicap +handicapped +.IND handicapper +handicapping +handicraft +handicraftsman +handicraftsmen +handiwork +handkerchief +handle +handleable +handlebar +handline +handmade +handmaiden +handout +handset +handshake +handsome +handspike +handstand +handwaving +.H 1 "Hanlon Hanna Hannah Hannibal Hanoi Hanover Hanoverian Hans" +handwrite +handwritten +handy +handyman +handymen +Haney +.IND Hanford +hang +hangable +hangar +hangman +hangmen +hangout +hangover +.IND hank +Hankel +Hanley +Hanlon +Hanna +Hannah +Hannibal +Hanoi +Hanover +Hanoverian +Hans +Hansel +Hansen +hansom +Hanson +Hanukkah +hap +.H 1 "Hansel" +haphazard +.IND haploid +haploidy +haplology +happen +happenstance +happy +Hapsburg +harangue +harass +Harbin +harbinger +Harcourt +hard +hardbake +hardboard +hardboiled +hardcopy +harden +hardhat +Hardin +.H 1 "Hansen hansom Hanson Hanukkah hap haphazard haploid haploidy" +Harding +hardscrabble +hardtack +hardtop +hardware +hardwood +.IND hardworking +hardy +hare +harelip +harem +.IND hark +Harlan +Harlem +Harley +harm +harmful +Harmon +harmonic +harmonica +harmonious +.H 1 "haplology happen happenstance happy Hapsburg harangue harass Harbin" +harmony +harness +Harold +harp +harpoon +harpsichord +Harpy +Harriet +Harriman +Harrington +Harris +.IND Harrisburg +Harrison +harrow +harry +harsh +harshen +hart +Hartford +Hartley +Hartman +Harvard +harvest +harvestman +Harvey +hash +hashish +hasn't +hasp +hassle +hast +haste +hasten +Hastings +hasty +hat +hatch +.IND hatchet +hatchway +.IND hate +hateful +hater +Hatfield +hath +Hathaway +hatred +Hatteras +Hattie +Hattiesburg +Haugen +haughty +haul +haulage +haunch +haunt +Hausdorff +Havana +have +haven +haven't +Havilland +havoc +haw +.IND Hawaii +Hawaiian +hawk +Hawkins +Hawley +hawthorn +.H 2 "hammock Hammond hamper Hampshire Hampton hamster" +Hawthorne +hay +Hayden +Haydn +Hayes +hayfield +Haynes +Hays +haystack +Hayward +hayward +hazard +hazardous +haze +hazel +hazelnut +hazy +he +head +.IND headache +.IND headboard +headdress +headland +headlight +headline +headmaster +headphone +headquarter +headquarters +headroom +headset +headsman +headsmen +headstand +headstone +headstrong +headwall +headwater +headway +headwind +heady +heal +Healey +health +healthful +healthy +.IND Healy +heap +hear +heard +hearken +hearsay +hearse +Hearst +heart +heartbeat +heartbreak +hearten +heartfelt +hearth +hearty +heat +heater +heath +heathen +heathenish +Heathkit +heave +.IND heaven +heavenward +heavy +heavyweight +.IND Hebe +hebephrenic +Hebraic +Hebrew +Hecate +hecatomb +heck +heckle +Heckman +hectic +hector +Hecuba +he'd +hedge +hedgehog +hedonism +hedonist +heed +heel +heft +hefty +Hegelian +hegemony +Heidelberg +heigh +height +.IND heighten +Heine +Heinrich +Heinz +heir +heiress +Heisenberg +held +Helen +Helena +Helene +Helga +helical +helicopter +heliocentric +heliotrope +helium +helix +he'll +.IND hell +hellbender +hellebore +Hellenic +hellfire +hellgrammite +hellish +.IND hello +helm +helmet +.H 1 "Halverson ham Hamal Hamburg hamburger Hamilton hamlet Hamlin hammerhead" +Helmholtz +helmsman +helmsmen +Helmut +help +helpful +helpmate +Helsinki +Helvetica +hem +hematite +Hemingway +hemisphere +hemispheric +hemlock +hemoglobin +hemolytic +hemorrhage +hemorrhoid +hemosiderin +hemp +Hempstead +hen +.IND henbane +hence +henceforth +henchman +henchmen +Henderson +Hendrick +Hendricks +Hendrickson +henequen +Henley +henpeck +Henri +Henrietta +henry +hepatica +.IND hepatitis +Hepburn +heptane +her +Hera +Heraclitus +herald +herb +Herbert +Herculean +.IND Hercules +herd +herdsman +here +hereabout +hereafter +hereby +hereditary +heredity +Hereford +herein +hereinabove +hereinafter +hereinbelow +hereof +heresy +heretic +hereto +heretofore +hereunder +hereunto +herewith +heritable +heritage +Herkimer +Herman +.IND Hermann +hermeneutic +Hermes +hermetic +Hermite +hermitian +Hermosa +Hernandez +hero +Herodotus +heroes +heroic +heroin +.IND heroine +heroism +heron +herpes +herpetology +Herr +herringbone +Herschel +herself +Hershel +Hershey +hertz +Hertzog +.IND hesitant +hesitate +hesitater +Hesperus +Hess +Hesse +Hessian +Hester +heterocyclic +heterodyne +heterogamous +heterogeneity +heterogeneous +heterosexual +heterostructure +heterozygous +Hetman +Hettie +Hetty +Heublein +heuristic +Heusen +Heuser +hew +Hewett +Hewitt +.IND Hewlett +hewn +hex +hexachloride +hexadecimal +hexafluoride +hexagon +hexagonal +hexameter +hexane +.IND hey +heyday +hi +Hiatt +hiatus +Hiawatha +hibachi +Hibbard +hibernate +Hibernia +hick +Hickey +Hickman +hickory +Hicks +hid +.IND hidalgo +hidden +hide +hideaway +hideous +hideout +hierarchal +hierarchic +hierarchy +hieratic +hieroglyphic +Hieronymus +hifalutin +Higgins +high +highball +highboy +highest +highfalutin +highhanded +highland +highlight +highroad +hightail +highway +highwayman +.IND highwaymen +hijack +hijinks +hike +hilarious +hilarity +Hilbert +.IND Hildebrand +hill +hillbilly +Hillcrest +Hillel +hillman +hillmen +hillock +hillside +hilltop +hilly +hilt +Hilton +hilum +him +Himalaya +himself +hind +hindmost +.IND hindrance +hindsight +Hindu +Hinduism +Hines +hinge +Hinman +hint +hinterland +hip +hippo +Hippocrates +Hippocratic +hippodrome +hippopotamus +hippy +hipster +Hiram +hire +hireling +Hiroshi +Hiroshima +Hirsch +hirsute +his +Hispanic +.IND hiss +histamine +histidine +histochemic +.IND histochemistry +histogram +histology +historian +historic +historiography +history +histrionic +hit +Hitachi +hitch +Hitchcock +.H 1 "harbinger" +hither +hitherto +Hitler +hive +ho +hoagie +Hoagland +hoagy +hoar +hoard +.IND hoarfrost +hoarse +hob +Hobart +Hobbes +hobble +Hobbs +hobby +hobbyhorse +hobgoblin +hobo +Hoboken +hoc +hock +hockey +hocus +hodge +hodgepodge +Hodges +Hodgkin +hoe +Hoff +Hoffman +hog +hogan +hogging +.IND hoi +.IND Hokan +Holbrook +Holcomb +hold +holden +holdout +holdover +holdup +hole +holeable +holiday +Holland +Hollandaise +holler +Hollerith +Hollingsworth +Hollister +hollow +Holloway +hollowware +holly +hollyhock +Hollywood +Holm +Holman +.IND Holmdel +Holmes +holmium +holocaust +Holocene +hologram +holography +Holst +Holstein +holster +holt +Holyoke +.IND holystone +.INDP +inject injudicious Injun injunct injunction injure injurious injury +injustice ink inkling inlaid inland inlay inlet Inman inmate inn innards +innate inner innermost innkeeper innocent innocuous innovate innuendo +innumerable inoculate inoffensive inoperable inoperative inopportune +inordinate inorganic input inputting inquest inquire inquiry inquisition +.INITI B ind-data4 foo +.H 1 "halve" +.IND granary +grand +grandchild +grandchildren +granddaughter +grandeur +grandfather +grandiloquent +grandiose +grandma +grandmother +.IND grandnephew +grandniece +grandpa +grandparent +grandson +grandstand +granite +granitic +granny +granola +grant +grantee +grantor +granular +.IND granulate +granule +Granville +grape +.H 2 "grandfather grandiloquent grandiose grandma grandmother grandnephew" +grapefruit +grapevine +graph +grapheme +graphic +.H 1 "halo halocarbon halogen Halpern Halsey Halstead halt halvah" +graphite +grapple +grasp +grass +grassland +grassy +grata +grate +grateful +grater +gratify +gratis +gratitude +gratuitous +gratuity +.IND grave +gravel +graven +Graves +gravestone +graveyard +gravid +gravitate +gravy +gray +graybeard +grayish +Grayson +graywacke +graze +grease +greasy +great +greatcoat +greater +.H 1 "Han Hancock hand handbag handbook handclasp handcuff Handel handful" +grebe +Grecian +Greece +greed +greedy +.IND Greek +green +Greenbelt +Greenberg +.H 1 " granary grand grandchild grandchildren granddaughter grandeur" +Greenblatt +Greenbriar +Greene +greenery +Greenfield +greengrocer +greenhouse +greenish +Greenland +Greensboro +greensward +.H 1 "handgun" +greenware +Greenwich +greenwood +Greer +greet +Greg +gregarious +Gregg +Gregory +.IND gremlin +grenade +Grendel +Grenoble +Gresham +Greta +Gretchen +grew +grey +greyhound +greylag +grid +griddle +gridiron +grief +grievance +grieve +grievous +griffin +Griffith +grill +grille +grilled +grillwork +grim +.IND grimace +Grimaldi +grime +Grimes +Grimm +grin +grind +grindstone +grip +gripe +grippe +grisly +grist +gristmill +Griswold +grit +gritty +grizzle +grizzly +groan +groat +grocer +grocery +groggy +.IND groin +grommet +groom +groove +grope +grosbeak +gross +.H 1 "handicapped handicapper handicapping handicraft handicraftsman" +Grosset +Grossman +Grosvenor +grotesque +Groton +ground +groundsel +groundskeep +groundwork +group +groupoid +grout +grove +grovel +Grover +grow +growl +grown +grownup +.IND growth +grub +grubby +grudge +gruesome +gruff +grumble +Grumman +grunt +gryphon +g's +GSA +GU +Guam +guanidine +guanine +guano +guarantee +guaranteeing +guarantor +guaranty +guard +guardhouse +.IND Guardia +guardian +Guatemala +.IND gubernatorial +Guelph +Guenther +guerdon +guernsey +guerrilla +guess +guesswork +guest +guffaw +Guggenheim +Guiana +guidance +guide +guidebook +guideline +guidepost +guiding +guignol +guild +.H 1 "handicraftsmen handiwork handkerchief handle" +guildhall +guile +Guilford +guillemot +guillotine +guilt +.IND guilty +guinea +guise +guitar +gules +gulf +.H 1 "handleable handlebar handline handmade handmaiden handout" +gull +Gullah +gullet +gullible +gully +gulp +gum +gumbo +gumdrop +gummy +gumption +gumshoe +gun +Gunderson +.IND gunfight +gunfire +gunflint +gunk +gunky +gunman +.IND gunmen +gunnery +gunny +gunplay +gunpowder +gunshot +gunsling +Gunther +gurgle +Gurkha +guru +Gus +gush +gusset +gust +Gustafson +Gustav +Gustave +Gustavus +gusto +gusty +gut +.H 1 "handset" +Gutenberg +Guthrie +gutsy +guttural +.IND guy +Guyana +guzzle +Gwen +Gwyn +gym +gymnasium +gymnast +gymnastic +gymnosperm +gyp +gypsite +gypsum +gypsy +gyrate +gyrfalcon +gyro +.IND gyrocompass +gyroscope +h +ha +Haag +Haas +habeas +haberdashery +Haberman +.IND Habib +habit +habitant +habitat +habitation +habitual +habituate +hacienda +hack +hackberry +Hackett +hackle +hackmatack +.H 1 "handshake handsome handspike handstand handwaving handwrite handwritten" +hackney +hackneyed +hacksaw +had +Hadamard +Haddad +haddock +Hades +Hadley +hadn't +Hadrian +hadron +hafnium +.IND Hagen +Hager +haggard +haggle +Hagstrom +Hague +Hahn +Haifa +haiku +hail +hailstone +hailstorm +Haines +hair +.IND haircut +hairdo +hairpin +hairy +Haiti +Haitian +Hal +halcyon +hale +Haley +half +halfback +.IND halfhearted +halfway +halibut +halide +.H 1 "handy handyman handymen Haney Hanford hang hangable hangar" +Halifax +halite +hall +hallelujah +Halley +hallmark +hallow +Halloween +hallucinate +hallway +halma +halo +halocarbon +halogen +Halpern +Halsey +Halstead +halt +halvah +halve +Halverson +ham +.IND Hamal +Hamburg +hamburger +Hamilton +hamlet +Hamlin +hammerhead +hammock +Hammond +hamper +Hampshire +.IND Hampton +hamster +Han +.H 1 "hangman hangmen hangout hangover hank Hankel Hanley" +Hancock +hand +handbag +handbook +handclasp +handcuff +Handel +handful +handgun +handhold +handicap +handicapped +.IND handicapper +handicapping +handicraft +handicraftsman +handicraftsmen +handiwork +handkerchief +handle +handleable +handlebar +handline +handmade +handmaiden +handout +handset +handshake +handsome +handspike +handstand +handwaving +.H 1 "Hanlon Hanna Hannah Hannibal Hanoi Hanover Hanoverian Hans" +handwrite +handwritten +handy +handyman +handymen +Haney +.IND Hanford +hang +hangable +hangar +hangman +hangmen +hangout +hangover +.IND hank +Hankel +Hanley +Hanlon +Hanna +Hannah +Hannibal +Hanoi +Hanover +Hanoverian +Hans +Hansel +Hansen +hansom +Hanson +Hanukkah +hap +.H 1 "Hansel" +haphazard +.IND haploid +haploidy +haplology +happen +happenstance +happy +Hapsburg +harangue +harass +Harbin +harbinger +Harcourt +hard +hardbake +hardboard +hardboiled +hardcopy +harden +hardhat +Hardin +.H 1 "Hansen hansom Hanson Hanukkah hap haphazard haploid haploidy" +Harding +hardscrabble +hardtack +hardtop +hardware +hardwood +.IND hardworking +hardy +hare +harelip +harem +.IND hark +Harlan +Harlem +Harley +harm +harmful +Harmon +harmonic +harmonica +harmonious +.H 1 "haplology happen happenstance happy Hapsburg harangue harass Harbin" +harmony +harness +Harold +harp +harpoon +harpsichord +Harpy +Harriet +Harriman +Harrington +Harris +.IND Harrisburg +Harrison +harrow +harry +harsh +harshen +hart +Hartford +Hartley +Hartman +Harvard +harvest +harvestman +Harvey +hash +hashish +hasn't +hasp +hassle +hast +haste +hasten +Hastings +hasty +hat +hatch +.IND hatchet +hatchway +.IND hate +hateful +hater +Hatfield +hath +Hathaway +hatred +Hatteras +Hattie +Hattiesburg +Haugen +haughty +haul +haulage +haunch +haunt +Hausdorff +Havana +have +haven +haven't +Havilland +havoc +haw +.IND Hawaii +Hawaiian +hawk +Hawkins +Hawley +hawthorn +.H 2 "hammock Hammond hamper Hampshire Hampton hamster" +Hawthorne +hay +Hayden +Haydn +Hayes +hayfield +Haynes +Hays +haystack +Hayward +hayward +hazard +hazardous +haze +hazel +hazelnut +hazy +he +head +.IND headache +.IND headboard +headdress +headland +headlight +headline +headmaster +headphone +headquarter +headquarters +headroom +headset +headsman +headsmen +headstand +headstone +headstrong +headwall +headwater +headway +headwind +heady +heal +Healey +health +healthful +healthy +.IND Healy +heap +hear +heard +hearken +hearsay +hearse +Hearst +heart +heartbeat +heartbreak +hearten +heartfelt +hearth +hearty +heat +heater +heath +heathen +heathenish +Heathkit +heave +.IND heaven +heavenward +heavy +heavyweight +.IND Hebe +hebephrenic +Hebraic +Hebrew +Hecate +hecatomb +heck +heckle +Heckman +hectic +hector +Hecuba +he'd +hedge +hedgehog +hedonism +hedonist +heed +heel +heft +hefty +Hegelian +hegemony +Heidelberg +heigh +height +.IND heighten +Heine +Heinrich +Heinz +heir +heiress +Heisenberg +held +Helen +Helena +Helene +Helga +helical +helicopter +heliocentric +heliotrope +helium +helix +he'll +.IND hell +hellbender +hellebore +Hellenic +hellfire +hellgrammite +hellish +.IND hello +helm +helmet +.H 1 "Halverson ham Hamal Hamburg hamburger Hamilton hamlet Hamlin hammerhead" +Helmholtz +helmsman +helmsmen +Helmut +help +helpful +helpmate +Helsinki +Helvetica +hem +hematite +Hemingway +hemisphere +hemispheric +hemlock +hemoglobin +hemolytic +hemorrhage +hemorrhoid +hemosiderin +hemp +Hempstead +hen +.IND henbane +hence +henceforth +henchman +henchmen +Henderson +Hendrick +Hendricks +Hendrickson +henequen +Henley +henpeck +Henri +Henrietta +henry +hepatica +.IND hepatitis +Hepburn +heptane +her +Hera +Heraclitus +herald +herb +Herbert +Herculean +.IND Hercules +herd +herdsman +here +hereabout +hereafter +hereby +hereditary +heredity +Hereford +herein +hereinabove +hereinafter +hereinbelow +hereof +heresy +heretic +hereto +heretofore +hereunder +hereunto +herewith +heritable +heritage +Herkimer +Herman +.IND Hermann +hermeneutic +Hermes +hermetic +Hermite +hermitian +Hermosa +Hernandez +hero +Herodotus +heroes +heroic +heroin +.IND heroine +heroism +heron +herpes +herpetology +Herr +herringbone +Herschel +herself +Hershel +Hershey +hertz +Hertzog +.IND hesitant +hesitate +hesitater +Hesperus +Hess +Hesse +Hessian +Hester +heterocyclic +heterodyne +heterogamous +heterogeneity +heterogeneous +heterosexual +heterostructure +heterozygous +Hetman +Hettie +Hetty +Heublein +heuristic +Heusen +Heuser +hew +Hewett +Hewitt +.IND Hewlett +hewn +hex +hexachloride +hexadecimal +hexafluoride +hexagon +hexagonal +hexameter +hexane +.IND hey +heyday +hi +Hiatt +hiatus +Hiawatha +hibachi +Hibbard +hibernate +Hibernia +hick +Hickey +Hickman +hickory +Hicks +hid +.IND hidalgo +hidden +hide +hideaway +hideous +hideout +hierarchal +hierarchic +hierarchy +hieratic +hieroglyphic +Hieronymus +hifalutin +Higgins +high +highball +highboy +highest +highfalutin +highhanded +highland +highlight +highroad +hightail +highway +highwayman +.IND highwaymen +hijack +hijinks +hike +hilarious +hilarity +Hilbert +.IND Hildebrand +hill +hillbilly +Hillcrest +Hillel +hillman +hillmen +hillock +hillside +hilltop +hilly +hilt +Hilton +hilum +him +Himalaya +himself +hind +hindmost +.IND hindrance +hindsight +Hindu +Hinduism +Hines +hinge +Hinman +hint +hinterland +hip +hippo +Hippocrates +Hippocratic +hippodrome +hippopotamus +hippy +hipster +Hiram +hire +hireling +Hiroshi +Hiroshima +Hirsch +hirsute +his +Hispanic +.IND hiss +histamine +histidine +histochemic +.IND histochemistry +histogram +histology +historian +historic +historiography +history +histrionic +hit +Hitachi +hitch +Hitchcock +.H 1 "harbinger" +hither +hitherto +Hitler +hive +ho +hoagie +Hoagland +hoagy +hoar +hoard +.IND hoarfrost +hoarse +hob +Hobart +Hobbes +hobble +Hobbs +hobby +hobbyhorse +hobgoblin +hobo +Hoboken +hoc +hock +hockey +hocus +hodge +hodgepodge +Hodges +Hodgkin +hoe +Hoff +Hoffman +hog +hogan +hogging +.IND hoi +.IND Hokan +Holbrook +Holcomb +hold +holden +holdout +holdover +holdup +hole +holeable +holiday +Holland +Hollandaise +holler +Hollerith +Hollingsworth +Hollister +hollow +Holloway +hollowware +holly +hollyhock +Hollywood +Holm +Holman +.IND Holmdel +Holmes +holmium +holocaust +Holocene +hologram +holography +Holst +Holstein +holster +holt +Holyoke +.IND holystone +.INDP +inject injudicious Injun injunct injunction injure injurious injury +injustice ink inkling inlaid inland inlay inlet Inman inmate inn innards +innate inner innermost innkeeper innocent innocuous innovate innuendo +innumerable inoculate inoffensive inoperable inoperative inopportune +inordinate inorganic input inputting inquest inquire inquiry inquisition diff --git a/contrib/groff/contrib/mm/examples/LT b/contrib/groff/contrib/mm/examples/LT new file mode 100644 index 000000000000..cf063897371c --- /dev/null +++ b/contrib/groff/contrib/mm/examples/LT @@ -0,0 +1,1058 @@ +.ND 1994-10-26 +.\" .WA "Nisse Nilsson" notitle +.\" .WE +.WA "Sven Olsson" title +Return address +Street +City, State Zip Code +Text +.WE +.IA "Inside address" title +Addressee name XXXXXXX +Title XXXXXXXXXXXXXXX +Company xxxxxxxxxxxx +Street xxxxxxxxxxxxxx +City, State Zip Code +Text xxxxxxxxxxxxxxxxxx +.IE +.LO CN +.LO RN "referens" +.LO AT Attention +.LO SA "Hej hopp" +.LO SJ "Subject line" +.LT BL +hepp +granary +grand +grandchild +grandchildren +granddaughter +grandeur +grandfather +grandiloquent +grandiose +grandma +grandmother +grandnephew +grandniece +grandpa +grandparent +grandson +grandstand +granite +granitic +granny +granola +grant +grantee +grantor +granular +granulate +granule +Granville +grape +grapefruit +grapevine +graph +grapheme +graphic +graphite +grapple +grasp +grass +grassland +grassy +grata +grate +grateful +grater +gratify +gratis +gratitude +gratuitous +gratuity +grave +gravel +graven +Graves +gravestone +graveyard +gravid +gravitate +gravy +gray +graybeard +grayish +Grayson +graywacke +graze +grease +greasy +great +greatcoat +greater +grebe +Grecian +Greece +greed +greedy +Greek +green +Greenbelt +Greenberg +Greenblatt +Greenbriar +Greene +greenery +Greenfield +greengrocer +greenhouse +greenish +Greenland +Greensboro +greensward +greenware +Greenwich +greenwood +Greer +greet +Greg +gregarious +Gregg +Gregory +gremlin +grenade +Grendel +Grenoble +Gresham +Greta +Gretchen +grew +grey +greyhound +greylag +grid +griddle +gridiron +grief +grievance +grieve +grievous +griffin +Griffith +grill +grille +grilled +grillwork +grim +grimace +Grimaldi +grime +Grimes +Grimm +grin +grind +grindstone +grip +.P +gripe +grippe +grisly +grist +gristmill +Griswold +grit +gritty +grizzle +grizzly +groan +groat +grocer +grocery +groggy +groin +grommet +groom +groove +grope +grosbeak +gross +Grosset +Grossman +Grosvenor +grotesque +Groton +ground +groundsel +groundskeep +groundwork +group +groupoid +grout +grove +grovel +Grover +grow +growl +grown +grownup +growth +grub +grubby +grudge +gruesome +gruff +grumble +Grumman +grunt +gryphon +g's +GSA +GU +Guam +guanidine +guanine +guano +guarantee +guaranteeing +guarantor +guaranty +guard +guardhouse +Guardia +guardian +Guatemala +gubernatorial +Guelph +Guenther +guerdon +guernsey +guerrilla +guess +guesswork +guest +guffaw +Guggenheim +Guiana +guidance +guide +guidebook +guideline +guidepost +guiding +guignol +guild +guildhall +guile +Guilford +guillemot +guillotine +guilt +guilty +guinea +guise +guitar +gules +gulf +gull +Gullah +gullet +gullible +gully +gulp +gum +gumbo +gumdrop +gummy +gumption +gumshoe +gun +Gunderson +gunfight +gunfire +gunflint +gunk +gunky +gunman +gunmen +gunnery +gunny +gunplay +gunpowder +gunshot +gunsling +Gunther +gurgle +Gurkha +guru +Gus +gush +gusset +gust +Gustafson +Gustav +Gustave +Gustavus +gusto +gusty +gut +Gutenberg +Guthrie +gutsy +guttural +guy +.P +Guyana +guzzle +Gwen +Gwyn +gym +gymnasium +gymnast +gymnastic +gymnosperm +gyp +gypsite +gypsum +gypsy +gyrate +gyrfalcon +gyro +gyrocompass +gyroscope +h +ha +Haag +Haas +habeas +haberdashery +Haberman +Habib +habit +habitant +habitat +habitation +habitual +habituate +hacienda +hack +hackberry +Hackett +hackle +hackmatack +hackney +hackneyed +hacksaw +had +Hadamard +Haddad +haddock +Hades +Hadley +hadn't +Hadrian +hadron +hafnium +Hagen +Hager +haggard +haggle +Hagstrom +Hague +Hahn +Haifa +haiku +hail +hailstone +hailstorm +Haines +hair +haircut +hairdo +hairpin +hairy +Haiti +Haitian +Hal +halcyon +hale +Haley +half +halfback +halfhearted +halfway +halibut +halide +Halifax +halite +hall +hallelujah +Halley +hallmark +hallow +Halloween +hallucinate +hallway +halma +halo +halocarbon +halogen +Halpern +Halsey +Halstead +halt +halvah +halve +Halverson +ham +Hamal +Hamburg +hamburger +Hamilton +hamlet +Hamlin +hammerhead +hammock +Hammond +hamper +Hampshire +Hampton +hamster +Han +Hancock +hand +handbag +handbook +handclasp +handcuff +Handel +handful +handgun +handhold +handicap +handicapped +handicapper +handicapping +handicraft +handicraftsman +handicraftsmen +handiwork +handkerchief +handle +handleable +handlebar +handline +handmade +handmaiden +handout +handset +handshake +handsome +handspike +handstand +handwaving +handwrite +handwritten +handy +handyman +handymen +Haney +Hanford +hang +hangable +hangar +hangman +hangmen +hangout +hangover +hank +Hankel +Hanley +Hanlon +Hanna +Hannah +Hannibal +Hanoi +Hanover +Hanoverian +Hans +Hansel +Hansen +hansom +Hanson +Hanukkah +hap +haphazard +haploid +haploidy +haplology +happen +happenstance +happy +Hapsburg +harangue +harass +Harbin +harbinger +Harcourt +hard +hardbake +hardboard +hardboiled +hardcopy +harden +hardhat +Hardin +Harding +hardscrabble +hardtack +hardtop +hardware +hardwood +hardworking +hardy +hare +harelip +harem +hark +Harlan +Harlem +Harley +harm +harmful +Harmon +harmonic +harmonica +harmonious +harmony +harness +Harold +harp +harpoon +harpsichord +Harpy +Harriet +Harriman +Harrington +Harris +Harrisburg +Harrison +harrow +harry +harsh +harshen +hart +Hartford +Hartley +Hartman +Harvard +.P +harvest +harvestman +Harvey +hash +hashish +hasn't +hasp +hassle +hast +haste +hasten +Hastings +hasty +hat +hatch +hatchet +hatchway +hate +hateful +hater +Hatfield +hath +Hathaway +hatred +Hatteras +Hattie +Hattiesburg +Haugen +haughty +haul +haulage +haunch +haunt +Hausdorff +Havana +have +haven +haven't +Havilland +havoc +haw +Hawaii +Hawaiian +hawk +Hawkins +Hawley +hawthorn +Hawthorne +hay +Hayden +Haydn +Hayes +hayfield +Haynes +Hays +haystack +Hayward +hayward +hazard +hazardous +haze +hazel +hazelnut +hazy +he +head +headache +headboard +headdress +headland +headlight +headline +headmaster +headphone +headquarter +headquarters +headroom +headset +headsman +headsmen +headstand +headstone +headstrong +headwall +headwater +headway +headwind +heady +heal +Healey +health +healthful +healthy +Healy +heap +hear +heard +hearken +hearsay +hearse +Hearst +heart +heartbeat +heartbreak +hearten +heartfelt +hearth +hearty +heat +heater +heath +heathen +heathenish +Heathkit +heave +heaven +heavenward +heavy +heavyweight +Hebe +hebephrenic +Hebraic +Hebrew +Hecate +hecatomb +heck +heckle +Heckman +hectic +hector +Hecuba +he'd +hedge +hedgehog +hedonism +hedonist +heed +heel +heft +hefty +Hegelian +hegemony +Heidelberg +heigh +height +heighten +Heine +Heinrich +Heinz +heir +heiress +Heisenberg +held +Helen +Helena +Helene +Helga +helical +helicopter +heliocentric +heliotrope +helium +helix +he'll +hell +hellbender +hellebore +Hellenic +hellfire +hellgrammite +hellish +hello +helm +helmet +Helmholtz +helmsman +helmsmen +Helmut +help +helpful +helpmate +Helsinki +Helvetica +hem +hematite +Hemingway +hemisphere +hemispheric +hemlock +hemoglobin +hemolytic +hemorrhage +hemorrhoid +hemosiderin +hemp +Hempstead +hen +henbane +hence +henceforth +henchman +henchmen +Henderson +Hendrick +Hendricks +Hendrickson +henequen +Henley +henpeck +Henri +Henrietta +henry +hepatica +hepatitis +Hepburn +heptane +her +Hera +Heraclitus +herald +herb +Herbert +Herculean +Hercules +herd +herdsman +here +hereabout +hereafter +hereby +hereditary +heredity +Hereford +herein +hereinabove +hereinafter +hereinbelow +hereof +heresy +heretic +hereto +heretofore +hereunder +hereunto +.P +herewith +heritable +heritage +Herkimer +Herman +Hermann +hermeneutic +Hermes +hermetic +Hermite +hermitian +Hermosa +Hernandez +hero +Herodotus +heroes +heroic +heroin +heroine +heroism +heron +herpes +herpetology +Herr +herringbone +Herschel +herself +Hershel +Hershey +hertz +Hertzog +hesitant +hesitate +hesitater +Hesperus +Hess +Hesse +Hessian +Hester +heterocyclic +heterodyne +heterogamous +heterogeneity +heterogeneous +heterosexual +heterostructure +heterozygous +Hetman +Hettie +Hetty +Heublein +heuristic +Heusen +Heuser +hew +Hewett +Hewitt +Hewlett +hewn +hex +hexachloride +hexadecimal +hexafluoride +hexagon +hexagonal +hexameter +hexane +hey +heyday +hi +Hiatt +hiatus +Hiawatha +hibachi +Hibbard +hibernate +Hibernia +hick +Hickey +Hickman +hickory +Hicks +hid +hidalgo +hidden +hide +hideaway +hideous +hideout +hierarchal +hierarchic +hierarchy +hieratic +hieroglyphic +Hieronymus +hifalutin +Higgins +high +highball +highboy +highest +highfalutin +highhanded +highland +highlight +highroad +hightail +highway +highwayman +highwaymen +hijack +hijinks +hike +hilarious +hilarity +Hilbert +Hildebrand +hill +hillbilly +Hillcrest +Hillel +hillman +hillmen +hillock +hillside +hilltop +hilly +hilt +Hilton +hilum +him +Himalaya +himself +hind +hindmost +hindrance +hindsight +Hindu +Hinduism +Hines +hinge +Hinman +hint +hinterland +hip +hippo +Hippocrates +Hippocratic +hippodrome +hippopotamus +hippy +hipster +Hiram +hire +hireling +Hiroshi +Hiroshima +Hirsch +hirsute +his +Hispanic +hiss +histamine +histidine +histochemic +histochemistry +histogram +histology +historian +historic +historiography +history +histrionic +hit +Hitachi +hitch +Hitchcock +hither +hitherto +Hitler +hive +ho +hoagie +Hoagland +hoagy +hoar +hoard +hoarfrost +hoarse +hob +Hobart +Hobbes +hobble +Hobbs +hobby +.P +hobbyhorse +hobgoblin +hobo +Hoboken +hoc +hock +hockey +hocus +hodge +hodgepodge +Hodges +Hodgkin +hoe +Hoff +Hoffman +hog +hogan +hogging +hoi +Hokan +Holbrook +Holcomb +hold +holden +holdout +holdover +holdup +hole +holeable +holiday +Holland +Hollandaise +holler +Hollerith +Hollingsworth +Hollister +hollow +Holloway +hollowware +holly +hollyhock +Hollywood +Holm +Holman +Holmdel +Holmes +holmium +holocaust +Holocene +hologram +holography +Holst +Holstein +holster +holt +Holyoke +holystone +.FC +.SG +.NS 7 +text text text +text text text +.NS 12 +Holyoke +holystone +.NS +holt +.NE diff --git a/contrib/groff/contrib/mm/examples/LT.se b/contrib/groff/contrib/mm/examples/LT.se new file mode 100644 index 000000000000..bfbd77f5543e --- /dev/null +++ b/contrib/groff/contrib/mm/examples/LT.se @@ -0,0 +1,1062 @@ +.\" groff -mmse LT.se +.ND 1994-10-26 +.WA "Sven Olsson" title +Return address +Street +City, State Zip Code +Text +.WE +.IA "Inside address" title +Addressee name XXXXXXX +Title XXXXXXXXXXXXXXX +Company xxxxxxxxxxxx +Street xxxxxxxxxxxxxx +City, State Zip Code +Text xxxxxxxxxxxxxxxxxx +.IE +.LO DNAMN Dokumentnamn +.LO MDAT 1994-01-01 +.LO BIL 2 +.LO KOMP Kompletteringsuppgift +.LO DBET dokumentnummer +.LO BET ärendebeteckning +.LO MBET "Mottagarens b" +.LO SIDOR 22 +.\" vänster eller högerställt brev +.\" .LT SVH +.LT SVV +hepp +granary +grand +grandchild +grandchildren +granddaughter +grandeur +grandfather +grandiloquent +grandiose +grandma +grandmother +grandnephew +grandniece +grandpa +grandparent +grandson +grandstand +granite +granitic +granny +granola +grant +grantee +grantor +granular +granulate +granule +Granville +grape +grapefruit +grapevine +graph +grapheme +graphic +graphite +grapple +grasp +grass +grassland +grassy +grata +grate +grateful +grater +gratify +gratis +gratitude +gratuitous +gratuity +grave +gravel +graven +Graves +gravestone +graveyard +gravid +gravitate +gravy +gray +graybeard +grayish +Grayson +graywacke +graze +grease +greasy +great +greatcoat +greater +grebe +Grecian +Greece +greed +greedy +Greek +green +Greenbelt +Greenberg +Greenblatt +Greenbriar +Greene +greenery +Greenfield +greengrocer +greenhouse +greenish +Greenland +Greensboro +greensward +greenware +Greenwich +greenwood +Greer +greet +Greg +gregarious +Gregg +Gregory +gremlin +grenade +Grendel +Grenoble +Gresham +Greta +Gretchen +grew +grey +greyhound +greylag +grid +griddle +gridiron +grief +grievance +grieve +grievous +griffin +Griffith +grill +grille +grilled +grillwork +grim +grimace +Grimaldi +grime +Grimes +Grimm +grin +grind +grindstone +grip +.P +gripe +grippe +grisly +grist +gristmill +Griswold +grit +gritty +grizzle +grizzly +groan +groat +grocer +grocery +groggy +groin +grommet +groom +groove +grope +grosbeak +gross +Grosset +Grossman +Grosvenor +grotesque +Groton +ground +groundsel +groundskeep +groundwork +group +groupoid +grout +grove +grovel +Grover +grow +growl +grown +grownup +growth +grub +grubby +grudge +gruesome +gruff +grumble +Grumman +grunt +gryphon +g's +GSA +GU +Guam +guanidine +guanine +guano +guarantee +guaranteeing +guarantor +guaranty +guard +guardhouse +Guardia +guardian +Guatemala +gubernatorial +Guelph +Guenther +guerdon +guernsey +guerrilla +guess +guesswork +guest +guffaw +Guggenheim +Guiana +guidance +guide +guidebook +guideline +guidepost +guiding +guignol +guild +guildhall +guile +Guilford +guillemot +guillotine +guilt +guilty +guinea +guise +guitar +gules +gulf +gull +Gullah +gullet +gullible +gully +gulp +gum +gumbo +gumdrop +gummy +gumption +gumshoe +gun +Gunderson +gunfight +gunfire +gunflint +gunk +gunky +gunman +gunmen +gunnery +gunny +gunplay +gunpowder +gunshot +gunsling +Gunther +gurgle +Gurkha +guru +Gus +gush +gusset +gust +Gustafson +Gustav +Gustave +Gustavus +gusto +gusty +gut +Gutenberg +Guthrie +gutsy +guttural +guy +.P +Guyana +guzzle +Gwen +Gwyn +gym +gymnasium +gymnast +gymnastic +gymnosperm +gyp +gypsite +gypsum +gypsy +gyrate +gyrfalcon +gyro +gyrocompass +gyroscope +h +ha +Haag +Haas +habeas +haberdashery +Haberman +Habib +habit +habitant +habitat +habitation +habitual +habituate +hacienda +hack +hackberry +Hackett +hackle +hackmatack +hackney +hackneyed +hacksaw +had +Hadamard +Haddad +haddock +Hades +Hadley +hadn't +Hadrian +hadron +hafnium +Hagen +Hager +haggard +haggle +Hagstrom +Hague +Hahn +Haifa +haiku +hail +hailstone +hailstorm +Haines +hair +haircut +hairdo +hairpin +hairy +Haiti +Haitian +Hal +halcyon +hale +Haley +half +halfback +halfhearted +halfway +halibut +halide +Halifax +halite +hall +hallelujah +Halley +hallmark +hallow +Halloween +hallucinate +hallway +halma +halo +halocarbon +halogen +Halpern +Halsey +Halstead +halt +halvah +halve +Halverson +ham +Hamal +Hamburg +hamburger +Hamilton +hamlet +Hamlin +hammerhead +hammock +Hammond +hamper +Hampshire +Hampton +hamster +Han +Hancock +hand +handbag +handbook +handclasp +handcuff +Handel +handful +handgun +handhold +handicap +handicapped +handicapper +handicapping +handicraft +handicraftsman +handicraftsmen +handiwork +handkerchief +handle +handleable +handlebar +handline +handmade +handmaiden +handout +handset +handshake +handsome +handspike +handstand +handwaving +handwrite +handwritten +handy +handyman +handymen +Haney +Hanford +hang +hangable +hangar +hangman +hangmen +hangout +hangover +hank +Hankel +Hanley +Hanlon +Hanna +Hannah +Hannibal +Hanoi +Hanover +Hanoverian +Hans +Hansel +Hansen +hansom +Hanson +Hanukkah +hap +haphazard +haploid +haploidy +haplology +happen +happenstance +happy +Hapsburg +harangue +harass +Harbin +harbinger +Harcourt +hard +hardbake +hardboard +hardboiled +hardcopy +harden +hardhat +Hardin +Harding +hardscrabble +hardtack +hardtop +hardware +hardwood +hardworking +hardy +hare +harelip +harem +hark +Harlan +Harlem +Harley +harm +harmful +Harmon +harmonic +harmonica +harmonious +harmony +harness +Harold +harp +harpoon +harpsichord +Harpy +Harriet +Harriman +Harrington +Harris +Harrisburg +Harrison +harrow +harry +harsh +harshen +hart +Hartford +Hartley +Hartman +Harvard +.P +harvest +harvestman +Harvey +hash +hashish +hasn't +hasp +hassle +hast +haste +hasten +Hastings +hasty +hat +hatch +hatchet +hatchway +hate +hateful +hater +Hatfield +hath +Hathaway +hatred +Hatteras +Hattie +Hattiesburg +Haugen +haughty +haul +haulage +haunch +haunt +Hausdorff +Havana +have +haven +haven't +Havilland +havoc +haw +Hawaii +Hawaiian +hawk +Hawkins +Hawley +hawthorn +Hawthorne +hay +Hayden +Haydn +Hayes +hayfield +Haynes +Hays +haystack +Hayward +hayward +hazard +hazardous +haze +hazel +hazelnut +hazy +he +head +headache +headboard +headdress +headland +headlight +headline +headmaster +headphone +headquarter +headquarters +headroom +headset +headsman +headsmen +headstand +headstone +headstrong +headwall +headwater +headway +headwind +heady +heal +Healey +health +healthful +healthy +Healy +heap +hear +heard +hearken +hearsay +hearse +Hearst +heart +heartbeat +heartbreak +hearten +heartfelt +hearth +hearty +heat +heater +heath +heathen +heathenish +Heathkit +heave +heaven +heavenward +heavy +heavyweight +Hebe +hebephrenic +Hebraic +Hebrew +Hecate +hecatomb +heck +heckle +Heckman +hectic +hector +Hecuba +he'd +hedge +hedgehog +hedonism +hedonist +heed +heel +heft +hefty +Hegelian +hegemony +Heidelberg +heigh +height +heighten +Heine +Heinrich +Heinz +heir +heiress +Heisenberg +held +Helen +Helena +Helene +Helga +helical +helicopter +heliocentric +heliotrope +helium +helix +he'll +hell +hellbender +hellebore +Hellenic +hellfire +hellgrammite +hellish +hello +helm +helmet +Helmholtz +helmsman +helmsmen +Helmut +help +helpful +helpmate +Helsinki +Helvetica +hem +hematite +Hemingway +hemisphere +hemispheric +hemlock +hemoglobin +hemolytic +hemorrhage +hemorrhoid +hemosiderin +hemp +Hempstead +hen +henbane +hence +henceforth +henchman +henchmen +Henderson +Hendrick +Hendricks +Hendrickson +henequen +Henley +henpeck +Henri +Henrietta +henry +hepatica +hepatitis +Hepburn +heptane +her +Hera +Heraclitus +herald +herb +Herbert +Herculean +Hercules +herd +herdsman +here +hereabout +hereafter +hereby +hereditary +heredity +Hereford +herein +hereinabove +hereinafter +hereinbelow +hereof +heresy +heretic +hereto +heretofore +hereunder +hereunto +.P +herewith +heritable +heritage +Herkimer +Herman +Hermann +hermeneutic +Hermes +hermetic +Hermite +hermitian +Hermosa +Hernandez +hero +Herodotus +heroes +heroic +heroin +heroine +heroism +heron +herpes +herpetology +Herr +herringbone +Herschel +herself +Hershel +Hershey +hertz +Hertzog +hesitant +hesitate +hesitater +Hesperus +Hess +Hesse +Hessian +Hester +heterocyclic +heterodyne +heterogamous +heterogeneity +heterogeneous +heterosexual +heterostructure +heterozygous +Hetman +Hettie +Hetty +Heublein +heuristic +Heusen +Heuser +hew +Hewett +Hewitt +Hewlett +hewn +hex +hexachloride +hexadecimal +hexafluoride +hexagon +hexagonal +hexameter +hexane +hey +heyday +hi +Hiatt +hiatus +Hiawatha +hibachi +Hibbard +hibernate +Hibernia +hick +Hickey +Hickman +hickory +Hicks +hid +hidalgo +hidden +hide +hideaway +hideous +hideout +hierarchal +hierarchic +hierarchy +hieratic +hieroglyphic +Hieronymus +hifalutin +Higgins +high +highball +highboy +highest +highfalutin +highhanded +highland +highlight +highroad +hightail +highway +highwayman +highwaymen +hijack +hijinks +hike +hilarious +hilarity +Hilbert +Hildebrand +hill +hillbilly +Hillcrest +Hillel +hillman +hillmen +hillock +hillside +hilltop +hilly +hilt +Hilton +hilum +him +Himalaya +himself +hind +hindmost +hindrance +hindsight +Hindu +Hinduism +Hines +hinge +Hinman +hint +hinterland +hip +hippo +Hippocrates +Hippocratic +hippodrome +hippopotamus +hippy +hipster +Hiram +hire +hireling +Hiroshi +Hiroshima +Hirsch +hirsute +his +Hispanic +hiss +histamine +histidine +histochemic +histochemistry +histogram +histology +historian +historic +historiography +history +histrionic +hit +Hitachi +hitch +Hitchcock +hither +hitherto +Hitler +hive +ho +hoagie +Hoagland +hoagy +hoar +hoard +hoarfrost +hoarse +hob +Hobart +Hobbes +hobble +Hobbs +hobby +.P +hobbyhorse +hobgoblin +hobo +Hoboken +hoc +hock +hockey +hocus +hodge +hodgepodge +Hodges +Hodgkin +hoe +Hoff +Hoffman +hog +hogan +hogging +hoi +Hokan +Holbrook +Holcomb +hold +holden +holdout +holdover +holdup +hole +holeable +holiday +Holland +Hollandaise +holler +Hollerith +Hollingsworth +Hollister +hollow +Holloway +hollowware +holly +hollyhock +Hollywood +Holm +Holman +Holmdel +Holmes +holmium +holocaust +Holocene +hologram +holography +Holst +Holstein +holster +holt +Holyoke +holystone +.FC +.SG +.NS 7 +text text text +text text text +.NS 12 +Holyoke +holystone +.NS +holt +.NE diff --git a/contrib/groff/contrib/mm/examples/ML b/contrib/groff/contrib/mm/examples/ML new file mode 100644 index 000000000000..bbfca3def549 --- /dev/null +++ b/contrib/groff/contrib/mm/examples/ML @@ -0,0 +1,169 @@ +granary +grand +grandchild +grandchildren +granddaughter +grandeur +grandfather +grandiloquent +grandiose +grandma +grandmother +grandnephew +grandniece +grandpa +.ML MARK +.LI "LOCALMARK" +granola +grant +grantee +grantor +granular +granulate +granule +Granville +grape +grapefruit +grapevine +.LI +.DS +Where shall we put this. +Where shall we put this. +Where shall we put this. +.DE +.LI +granola +grant +grantee +grantor +granular +granulate +granule +Granville +grape +grapefruit +grapevine +.LI +.DS +Where shall we put this. +.DE +.LI +graphic +graphite +grapple +grasp +grass +grassland +grassy +.LI +grata +grate +grateful +grater +gratify +gratis +gratitude +gratuitous +.LI +gratuity +grave +gravel +.LE +.SP 3 +.ML $ 1c +.LI +graven +Graves +gravestone +graveyard +gravid +gravitate +gravy +gray +.LI +graybeard +grayish +Grayson +graywacke +graze +grease +greasy +great +greatcoat +.LI +greater +grebe +Grecian +Greece +greed +greedy +Greek +green +.LI +Greenbelt +Greenberg +Greenblatt +Greenbriar +Greene +greenery +.LE +.SP 3 +.ML X 1c 1 +.LI +Greenfield +greengrocer +grandson +grandstand +granite +granitic +granny +graph +.LI +grapheme +greenhouse +greenish +Greenland +Greensboro +granary +grand +grandchild +grandchildren +granddaughter +grandeur +grandfather +grandiloquent +grandiose +.LI +grandma +grandmother +grandnephew +grandniece +grandpa +grandparent +grandson +grandstand +granite +granitic +granny +.LI +granola +grant +grantee +grantor +granular +granulate +granule +Granville +grape +grapefruit +.LI +grapevine +graph +grapheme +graphic +graphite +grapple +grasp +grass +grassland +.LE diff --git a/contrib/groff/contrib/mm/examples/MOVE b/contrib/groff/contrib/mm/examples/MOVE new file mode 100644 index 000000000000..0f0399cc7a35 --- /dev/null +++ b/contrib/groff/contrib/mm/examples/MOVE @@ -0,0 +1,175 @@ +.PH "'hej'hopp'i skogen'" +.PF "'livet'är'härligt'" +.OH "'ojämn'%'sida'" +.EH "'ojämn'%'sida'" +.OF "'ojämn'%'sida'" +.EF "'ojämn'%'sida'" +10th +1st +2nd +3rd +4th +5th +6th +7th +8th +9th +a +AAA +AAAS +Aarhus +Aaron +AAU +ABA +Ababa +aback +abacus +abalone +abandon +abase +abash +abate +abater +abbas +abbe +abbey +abbot +Abbott +abbreviate +abc +abdicate +abdomen +abdominal +abet +abetted +abetting +abeyance +abeyant +abhorred +abhorrent +abide +Abidjan +Abigail +abject +ablate +ablaze +able +ablution +Abner +.MOVE 50 20 +abnormal +Abo +aboard +abode +abolish +abolition +abominable +abominate +aboriginal +AAA +ABORIGINE +ABORNING +ABORT +ABOUND +ABOUT +ABOVE +ABOVEBOARD +ABOVEGROUND +abovementioned +abrade +Abraham +Abram +Abramson +abrasion +abrasive +abreact +abreast +BBB +ABRIDGE +ABRIDGMENT +ABROAD +abrogate +abrupt +abscess +abscissa +abscissae +absence +absent +absentee +absenteeism +absentia +absentminded +.MOVE 30 10 +absinthe +absolute +absolution +absolve +absorb +absorbent +absorption +absorptive +abstain +abstention +abstinent +abstract +abstracter +abstractor +CCC +ABSTRUSE +ABSURD +ABUILDING +ABUNDANT +ABUSABLE +ABUSE +ABUSIVE +ABUT +ABUTTED +ABUTTING +ABYSMAL +ABYSS +ABYSSINIA +AC +ACADEME +ACADEMIA +ACADEMIC +ACADEMICIAN +ACADEMY +ACADIA +ACANTHUS +ACAPULCO +ACCEDE +ACCELERATE +ACCELEROMETER +ACCENT +ACCENTUAL +ACCENTUATE +ACCEPT +ACCEPTANT +acceptor +access +.MOVE 62 0 20 +accessible +accession +accessory +accident +accidental +accipiter +acclaim +acclamation +acclimate +accolade +accommodate +accompaniment +accompanist +accompany +accomplice +accomplish +accord +accordant +DDD +ACCORDION +ACCOST +ACCOUNT +ACCOUNTANT +ACCRA +.PGFORM diff --git a/contrib/groff/contrib/mm/examples/MUL b/contrib/groff/contrib/mm/examples/MUL new file mode 100644 index 000000000000..ae91fae0d404 --- /dev/null +++ b/contrib/groff/contrib/mm/examples/MUL @@ -0,0 +1,535 @@ +inject +injudicious +Injun +injunct +injunction +injure +injurious +injury +injustice +ink +inkling +inlaid +inland +inlay +inlet +Inman +inmate +inn +innards +innate +inner +innermost +innkeeper +innocent +innocuous +innovate +innuendo +innumerable +inoculate +inoffensive +inoperable +inoperative +inopportune +inordinate +inorganic +input +inputting +inquest +inquire +inquiry +inquisition +inquisitive +inquisitor +inroad +insane +insatiable +inscribe +inscription +inscrutable +insect +insecticide +insecure +inseminate +insensible +insensitive +inseparable +insert +inset +inshore +inside +insidious +insight +insightful +insignia +insignificant +insincere +insinuate +insipid +insist +insistent +insofar +insolent +insoluble +insolvable +insolvent +insomnia +insomniac +insouciant +inspect +inspector +inspiration +inspire +instable +install +installation +instalment +instance +instant +instantaneous +instantiate +instead +instep +instigate +instill +instillation +instinct +instinctual +institute +institution +instruct +instructor +instrument +instrumentation +insubordinate +insubstantial +insufferable +insufficient +insular +insulate +insulin +insult +insuperable +insupportable +insuppressible +insurance +insure +insurgent +insurmountable +insurrect +insurrection +intact +intake +intangible +integer +integrable +.MULB 4c 1 5c 1 4c 1 3c +Grenoble +Gresham +Greta +Gretchen +grew +grieve +grievous +griffin +Griffith +grill +grille +grilled +grillwork +grim +grimace +Grimaldi +grime +Grimes +Grimm +grin +grind +grindstone +grip +gripe +grippe +grisly +grist +gristmill +Griswold +grit +gritty +grizzle +grizzly +groan +groat +grocer +grocery +groggy +groin +grommet +groom +groove +grope +grosbeak +gross +.MULN +h +ha +Haag +Haas +habeas +haberdashery +Haberman +Habib +habit +habitant +habitat +habitation +habitual +habituate +hacienda +hack +hackberry +Hackett +hackle +hackmatack +hackney +hackneyed +hacksaw +had +Hadamard +Haddad +haddock +Hades +Hadley +hadn't +Hadrian +hadron +hafnium +Hagen +Hager +haggard +haggle +Hagstrom +Hague +Hahn +Haifa +haiku +hail +hailstone +hailstorm +Haines +hair +haircut +hairdo +hairpin +hairy +Haiti +Haitian +Hal +halcyon +hale +Haley +half +halfback +halfhearted +halfway +halibut +halide +Halifax +halite +hall +hallelujah +Halley +hallmark +hallow +Halloween +hallucinate +hallway +halma +halo +halocarbon +halogen +Halpern +Halsey +Halstead +halt +halvah +halve +Halverson +ham +Hamal +Hamburg +hamburger +Hamilton +hamlet +Hamlin +hammerhead +hammock +Hammond +hamper +Hampshire +Hampton +hamster +Han +Hancock +hand +handbag +handbook +handclasp +handcuff +.MULN +coliform +coliseum +collaborate +collage +collagen +collapse +collapsible +collar +collarbone +collard +collate +collateral +colleague +collect +collectible +collector +college +collegial +collegian +collegiate +collet +collide +collie +Collier +collimate +collinear +Collins +collision +collocation +colloidal +Colloq +colloquia +colloquial +colloquium +colloquy +command +commandant +commandeer +commando +commemorate +commend +commendation +commendatory +commensurable +commensurate +comment +commentary +commentator +commerce +commercial +commingle +commiserate +commissariat +commissary +commission +commit +committable +committal +committed +committee +committeeman +committeemen +committeewoman +committeewomen +committing +commodious +commodity +commodore +common +commonality +.MULN +locoweed +lunch +luncheon +lunchroom +lunchtime +Lund +Lundberg +Lundquist +lung +lunge +lupine +Lura +lurch +lure +lurid +lurk +Lusaka +luscious +lush +lust +lustful +lustrous +lusty +lutanist +lute +lutetium +Luther +Lutheran +Lutz +lymphocyte +lymphoma +lynch +Lynchburg +Lynn +lynx +Lyon +Lyons +Lyra +lyric +lyricism +Lysenko +lysergic +lysine +.MULE +m +ma +Mabel +Mac +macabre +macaque +MacArthur +Macassar +Macbeth +MacDonald +MacDougall +mace +Macedon +Macedonia +MacGregor +Mach +Machiavelli +machination +machine +machinelike +machinery +machismo +macho +macintosh +mack +MacKenzie +mackerel +Mackey +Mackinac +Mackinaw +mackintosh +MacMillan +Macon +macrame +macro +macromolecular +macromolecule +macrophage +macroprocessor +macroscopic +macrostructure +mad +Madagascar +madam +Madame +madcap +madden +Maddox +made +Madeira +Madeleine +Madeline +madhouse +Madison +madman +madmen +Madonna +Madras +Madrid +madrigal +Madsen +madstone +Mae +Maelstrom +maestro +Mafia +magazine +Magdalene +magenta +Maggie +maggot +maggoty +magi +magic +magician +magisterial +magistrate +magma +magna +magnanimity +magnanimous +magnate +magnesia +magnesite +magnesium +magnet +magnetic +magnetite +magneto +magnetron +magnificent +magnify +magnitude +magnolia +magnum +Magnuson +Magog +magpie +Magruder +Mahayana +Mahayanist +mahogany +Mahoney +maid +maiden +maidenhair +maidservant +Maier +mail +mailbox +mailman +mailmen +maim +main +Maine +mainland +mainline +mainstay +mainstream +maintain +maintenance +maitre +majestic +majesty +major +make +makeshift +makeup +Malabar +maladapt +maladaptive +maladjust +maladroit +malady +Malagasy +malaise +malaprop +malaria +malarial +Malawi +Malay +Malaysia diff --git a/contrib/groff/contrib/mm/examples/NCOL b/contrib/groff/contrib/mm/examples/NCOL new file mode 100644 index 000000000000..82c6f8d50812 --- /dev/null +++ b/contrib/groff/contrib/mm/examples/NCOL @@ -0,0 +1,196 @@ +granary +grand +grandchild +grandchildren +granddaughter +grandeur +grandfather +grandiloquent +grandiose +grandma +grandmother +grandnephew +grandniece +grandpa +grandparent +grandson +grandstand +granite +granitic +granny +granola +grant +grantee +grantor +granular +granulate +granule +Granville +grape +grapefruit +grapevine +graph +grapheme +graphic +graphite +grapple +grasp +grass +grassland +grassy +.MC 3c +grata +grate +grateful +grater +gratify +gratis +gratitude +gratuitous +gratuity +grave +gravel +graven +Graves +gravestone +graveyard +gravid +gravitate +gravy +gray +graybeard +grayish +Grayson +graywacke +graze +grease +greasy +great +greatcoat +greater +grebe +Grecian +Greece +greed +greedy +.NCOL +Greek +green +Greenbelt +Greenberg +Greenblatt +Greenbriar +Greene +greenery +Greenfield +greengrocer +greenhouse +greenish +Greenland +Greensboro +greensward +greenware +Greenwich +greenwood +Greer +greet +Greg +gregarious +Gregg +Gregory +gremlin +grenade +Grendel +Grenoble +Gresham +Greta +Gretchen +grew +grey +greyhound +greylag +grid +griddle +gridiron +grief +grievance +grieve +grievous +griffin +Griffith +grill +grille +grilled +grillwork +.NCOL +grim +grimace +Grimaldi +grime +Grimes +Grimm +grin +grind +grindstone +grip +gripe +grippe +grisly +grist +gristmill +Griswold +grit +gritty +grizzle +grizzly +groan +groat +grocer +grocery +groggy +groin +grommet +groom +groove +grope +grosbeak +gross +Grosset +Grossman +Grosvenor +grotesque +Groton +ground +groundsel +groundskeep +groundwork +group +groupoid +grout +grove +grovel +Grover +grow +growl +grown +grownup +growth +grub +grubby +grudge +gruesome +gruff +grumble +Grumman +grunt +gryphon +g's +GSA +GU +Guam +guanidine +guanine +guano +guarantee +guaranteeing +guarantor diff --git a/contrib/groff/contrib/mm/examples/ND b/contrib/groff/contrib/mm/examples/ND new file mode 100644 index 000000000000..4b3694a37261 --- /dev/null +++ b/contrib/groff/contrib/mm/examples/ND @@ -0,0 +1,17 @@ +.nf +---------------------------------------------------------------------- +.ce +Testing +---------------------------------------------------------------------- +Date = \*[DT] +.ISODATE +Date = \*[DT] +.ISODATE 0 + +.ND "13 August 1992" +Date = \*[DT] + +.ISODATE +.ND "14 August 1992" +Date = \*[DT] +---------------------------------------------------------------------- diff --git a/contrib/groff/contrib/mm/examples/README b/contrib/groff/contrib/mm/examples/README new file mode 100644 index 000000000000..cb6980f85327 --- /dev/null +++ b/contrib/groff/contrib/mm/examples/README @@ -0,0 +1,32 @@ + +This directory contains examples of my enhancements to MM. + +APP The appendix macro +B1B2 Box macro with text +COVER My general cover macro, this example is using + ms.cov. +IND A general indexing method, see manual for INITI +LT The letter macro +LT.se A swedish example with the extra + swedish macros for getting a letter conforming + to swedish standard letter, both left and right adjusted. +ML Marked list, an extended list type +MOVE The MOVE macro, how to begin to print on an exact position. +MUL Enhanced multicolumn mode. +NCOL Start on next column. (Not for MUL*) +ND New date, with iso date example +References How to use references +SETR General reference system, see manual for INITR + + +Examples that I should have: + +PIC How to include postscript pictures, see manual for PIC +VERBON Begin verbatim output + + +And remember, check the manual for all string and number registers, +I've made shure that mgm will be useful in several languages +and all english output can be redefined. +Check the manual for groff_mse (swedish format) and the +macro file, tmac.mse. diff --git a/contrib/groff/contrib/mm/examples/References b/contrib/groff/contrib/mm/examples/References new file mode 100644 index 000000000000..72f648220903 --- /dev/null +++ b/contrib/groff/contrib/mm/examples/References @@ -0,0 +1,975 @@ +.PH "'this'is'a header'" +.PF "'this'is'a footer'" +.OH "'odd'%'page'" +.EH "'even'%'page'" +.OF "'odd'%'page'" +.EF "'even'%'page'" +10th +1st +2nd +3rd +4th +5th +6th +7th +8th +9th +a +AAA +.B +AAAS +Aarhus +Aaron +.R +AAU +ABA +Ababa +aback +abacus +abalone +abandon +abase +.H 1 "hej hopp" +abash +abate +abater +abbas +abbe +abbey +abbot +Abbott +abbreviate +abc +abdicate +abdomen +abet +abetted +abetting +abeyance +abeyant +.H 2 "hej hopp" +abhorred +abhorrent +abide +Abidjan +Abigail +abject +ablate +ablaze +able +ablution +Abner +abnormal +.H 2 "hej hopp" +Abo +aboard +abode +abolish +.HU "hej hopp" +.B1 +abolition +abominable +abominate\*(Rf +aboriginal +.RS +AAA +ABORIGINE +ABORNING +ABORT +ABOUND +ABOUT +ABOVE +ABOVEBOARD +ABOVEGROUND +.RF +abovementioned +abrade +Abraham\*(Rf +Abram\*(Rf +Abramson\*(Rf +abrasion\*(Rf +abrasive\*(Rf +abreact\*(Rf +.B2 +abreast\*(Rf +.RS +BBB +ABRIDGE +ABRIDGMENT +ABROAD +.RF +abrogate +abrupt +abscess\*(Rf +abscissa\*(Rf +abscissae\*(Rf +absence\*(Rf +absent +absentee +absenteeism +absentia +.H 3 "hej hopp" +absentminded +absinthe +absolute +absolution +absolve +absorb +absorbent +absorption +absorptive +abstain +abstention +abstinent\*(Rf +abstract +abstracter +abstractor +.RS nisse +CCC +ABSTRUSE +ABSURD +ABUILDING +ABUNDANT +ABUSABLE +ABUSE +ABUSIVE +ABUT +ABUTTED +ABUTTING +ABYSMAL +ABYSS +ABYSSINIA +AC +ACADEME +ACADEMIA +ACADEMIC +ACADEMICIAN +ACADEMY +ACADIA +ACANTHUS +ACAPULCO +ACCEDE +ACCELERATE +ACCELEROMETER +ACCENT +ACCENTUAL +ACCENTUATE +ACCEPT +ACCEPTANT +.RF +acceptor +access +accessible +accession +Ref \*[nisse] +accessory +.H 4 "hej hopp" +accident +accidental +accipiter +acclaim +acclamation +acclimate +accolade +accommodate +accompaniment +accompanist +accompany +accomplice +accomplish\*(Rf +accord +accordant +.RS +DDD +ACCORDION +ACCOST +ACCOUNT +ACCOUNTANT +ACCRA +ACCREDIT +ACCREDITATE +ACCREDITATION +ACCRETION +ACCRUAL +ACCRUE +.RF +acculturate +accumulate +accuracy +accurate +accusation +accusative +accusatory +accuse +accustom +ace +acerbic +acerbity +acetate +acetic +acetone +acetylene +ache +achieve +Achilles +aching +achromatic +acid +acidic +acidulous +.H 5 "hej hopp" +Ackerman +Ackley +acknowledge +acknowledgeable +ACM +acme +acolyte +acorn +acoustic +acquaint +acquaintance +acquiesce +acquiescent +acquire +acquisition +acquisitive +acquit +acquittal +acquitting +acre +acreage +acrid +acrimonious +acrimony +acrobacy +acrobat +acrobatic +acronym +acropolis +across +acrylate +acrylic +ACS +act +Actaeon +actinic +actinide +actinium +actinolite +actinometer +activate +activation +activism +Acton +actor +actress +Acts +actual +actuarial +actuate +.H 6 "hej hopp" +acuity +acumen +acute +acyclic +ad +Ada +adage +adagio +Adair +Adam +adamant +Adams +Adamson +adapt +adaptation +adaptive +add +added +addend +addenda +addendum +addict +Addis +Addison +addition +additional +additive +addle +address +addressee +Addressograph +adduce +Adelaide +Adele +Adelia +Aden +adenine +adenoma +adenosine +adept +adequacy +adequate +adhere +adherent +adhesion +adhesive +adiabatic +adieu +adipic +Adirondack +.H 7 "hej hopp" +adjacent +adject +adjectival +adjective +adjoin +adjoint +adjourn +adjudge +adjudicate +adjunct +adjust +adjutant +Adkins +Adler +administer +administrable +administrate +administratrix +admiral +admiralty +admiration +admire +admissible +admission +admit +admittance +admitted +admitting +admix +admixture +admonish +admonition +ado +adobe +adolescent +Adolph +Adolphus +Adonis +adopt +adoption +adoptive +adore +adorn +adposition +adrenal +adrenaline +Adrian +Adriatic +Adrienne +adrift +adroit +adsorb +adsorbate +adsorption +adsorptive +adulate +adult +adulterate +adulterous +adultery +adulthood +advance +advantage +advantageous +advent +adventitious +adventure +adventurous +adverb +adverbial +adversary +adverse +advert +advertise +advice +advisable +advise +advisee +advisor +advisory +advocacy +advocate +Aegean +aegis +Aeneas +Aeneid +aeolian +Aeolus +aerate +aerial +Aerobacter +aerobic +aerodynamic +aerogene +aeronautic +aerosol +aerospace +Aeschylus +aesthete +aesthetic +10th +1st +2nd +3rd +4th +5th +6th +7th +8th +9th +a +AAA +AAAS +Aarhus +Aaron +AAU +ABA +Ababa +aback +abacus +abalone +abandon +abase +.H 1 "hej hopp" +abash +abate +abater +abbas +abbe +abbey +abbot +Abbott +abbreviate +abc +abdicate +abdomen +abdominal +abduct +Abe +abed +Abel +Abelian +Abelson +Aberdeen +Abernathy +aberrant +aberrate +abet +abetted +abetting +abeyance +abeyant +.H 2 "hej hopp" +abhorred +abhorrent +abide +Abidjan +Abigail +abject +ablate +ablaze +able +ablution +Abner +abnormal +Abo +aboard +abode +abolish +abolition +abominable +abominate +aboriginal +aborigine +aborning +abort +abound +about +above +aboveboard +aboveground +abovementioned +abrade +Abraham +Abram +Abramson +abrasion +abrasive +abreact +abreast +abridge +abridgment +abroad +abrogate +abrupt +abscess +abscissa +abscissae +absence +absent +absentee +absenteeism +absentia +.H 3 "hej hopp" +absentminded +absinthe +absolute +absolution +absolve +absorb +absorbent +absorption +absorptive +abstain +abstention +abstinent +abstract +abstracter +abstractor +abstruse +absurd +abuilding +abundant +abusable +abuse +abusive +abut +abutted +abutting +abysmal +abyss +Abyssinia +AC +academe +academia +academic +academician +academy +Acadia +acanthus +Acapulco +accede +accelerate +accelerometer +accent +accentual +accentuate +accept +acceptant +acceptor +access +accessible +accession +accessory +.H 4 "hej hopp" +accident +accidental +accipiter +acclaim +acclamation +acclimate +accolade +accommodate +accompaniment +accompanist +accompany +accomplice +accomplish +accord +accordant +accordion +accost +account +accountant +Accra +accredit +accreditate +accreditation +accretion +accrual +accrue +acculturate +accumulate +accuracy +accurate +accusation +accusative +accusatory +accuse +accustom +ace +acerbic +acerbity +acetate +acetic +acetone +acetylene +ache +achieve +Achilles +aching +achromatic +acid +acidic +acidulous +.H 5 "hej hopp" +Ackerman +Ackley +acknowledge +acknowledgeable +ACM +acme +acolyte +acorn +acoustic +acquaint +acquaintance +acquiesce +acquiescent +acquire +acquisition +acquisitive +acquit +acquittal +acquitting +acre +acreage +acrid +acrimonious +acrimony +acrobacy +acrobat +acrobatic +acronym +acropolis +across +acrylate +acrylic +ACS +act +Actaeon +actinic +actinide +actinium +actinolite +actinometer +activate +activation +activism +Acton +actor +actress +Acts +actual +actuarial +actuate +.H 6 "hej hopp" +acuity +acumen +acute +acyclic +ad +Ada +adage +adagio +Adair +Adam +adamant +Adams +Adamson +adapt +adaptation +adaptive +add +added +addend +addenda +addendum +addict +Addis +Addison +addition +additional +additive +addle +address +addressee +Addressograph +adduce +Adelaide +Adele +Adelia +Aden +adenine +adenoma +adenosine +adept +adequacy +adequate +adhere +adherent +adhesion +adhesive +adiabatic +adieu +adipic +Adirondack +.H 7 "hej hopp" +adjacent +adject +adjectival +adjective +adjoin +adjoint +adjourn +adjudge +adjudicate +adjunct +adjust +adjutant +Adkins +Adler +administer +administrable +administrate +administratrix +admiral +admiralty +admiration +admire +admissible +admission +admit +admittance +admitted +admitting +admix +admixture +admonish +admonition +ado +adobe +adolescent +Adolph +Adolphus +Adonis +adopt +adoption +adoptive +adore +adorn +adposition +adrenal +adrenaline +Adrian +Adriatic +Adrienne +adrift +adroit +adsorb +adsorbate +adsorption +adsorptive +adulate +adult +adulterate +adulterous +adultery +adulthood +advance +advantage +advantageous +advent +adventitious +adverse +advert +advertise +advice +advisable +advise +advisee +advisor +advisory +advocacy +advocate +Aegean +aegis +Aeneas +Aeneid +aeolian +Aeolus +aerate +aerial +Aerobacter +aerobic +aerodynamic +aerogene +aeronautic +aerosol +aerospace +Aeschylus +aesthete +aesthetic +.H 1 "hej hopp" +acuity +acumen +acute +acyclic +ad +Ada +adage +adagio +Adair +Adam +adamant +Adams +Adamson +adapt +adaptation +adaptive +add +added +addend +addenda +addendum +addict +Addis +Addison +addition +additional +additive +addle +address +addressee +Addressograph +adduce +Adelaide +Adele +Adelia +Aden +adenine +adenoma +adenosine +adept +adequacy +adequate +adhere +adherent +adhesion +adhesive +adiabatic +adieu +adipic +Adirondack +.H 2 "hej hopp" +adjacent +adject +adjectival +adjective +adjoin +adjoint +adjourn +adjudge +adjudicate +.H 2 "hej hopp" +adjunct +adjust +adjutant +Adkins +Adler +administer +administrable +administrate +administratrix +admiral +admiralty +admiration +admire +admissible +admission +admit +admittance +admitted +admitting +admix +admixture +admonish +admonition +ado +adobe +adolescent +Adolph +Adolphus +Adonis +adopt +adoption +adoptive +adore +adorn +adposition +adrenal +adrenaline +Adrian +Adriatic +Adrienne +adrift +adroit +adsorb +adsorbate +adsorption +adsorptive +adulate +adult +adulterate +adulterous +adultery +adulthood +advance +advantage +advantageous +advent +adventitious +adverse +advert +advertise +advice +advisable +advise +advisee +advisor +advisory +advocacy +advocate +Aegean +aegis +Aeneas +Aeneid +aeolian +Aeolus +aerate +aerial +Aerobacter +aerobic +aerodynamic +aerogene +aeronautic +aerosol +aerospace +Aeschylus +aesthete +aesthetic +.RP 0 1 +.TC diff --git a/contrib/groff/contrib/mm/examples/SETR b/contrib/groff/contrib/mm/examples/SETR new file mode 100644 index 000000000000..0a922415895e --- /dev/null +++ b/contrib/groff/contrib/mm/examples/SETR @@ -0,0 +1,109 @@ +.nr Cl 6 +.INITR setr +.H 1 " granary grand grandchild grandchildren granddaughter grandeur" +.SETR ref1 +.H 2 "grandfather grandiloquent grandiose grandma grandmother grandnephew" +.H 2 "grandniece grandpa grandparent grandson grandstand granite granitic" +.H 2 "granny granola grant grantee grantor granular granulate" +.SETR ref2 +.H 2 "granule Granville grape" +grant +grantee +grantor +granular +granulate +.br +granule +.B +REF 9: +.GETHN ref9 +, page number +.GETPN ref9 +.R +Granville +grape +.br +grapefruit +grapevine +graph +grapheme +graphic +graphite +\fBExhibit\fP +.GETHN ex1 + +grapple +grasp +grass +grassland +grassy +grata +grate +.H 2 "grapefruit grapevine graph grapheme graphic graphite" +.H 3 "grapple" +.SETR ref3 +.H 3 "grasp grass grassland grassy grata grate grateful" +.H 3 "grater gratify gratis gratitude" +.H 4 "gratuitous gratuity grave" +.H 4 "gravel graven" +.SETR ref4 +.H 1 "Graves gravestone graveyard gravid gravitate gravy gray" +.H 2 "graybeard grayish Grayson graywacke graze grease greasy great greatcoat" +.H 2 "greater grebe Grecian Greece greed greedy Greek green Greenbelt Greenberg" +.H 2 "Greenblatt Greenbriar Greene greenery" +.SETR ref5 +.H 1 "Greenfield greengrocer greenhouse greenish Greenland Greensboro" +.H 1 "greensward greenware Greenwich greenwood Greer greet" +grant +grantee +.DS + +Advertisements contain the only truths to be relied on in a newspaper. + -- Thomas Jefferson +.EX fortune "" "" ex1 +.DE +grantor +granular +.GETR ref1 +granulate +granule +.H 2 "Using variables" +.B +REF 2: +.GETHN ref2 c +.GETPN ref2 bbb +\*c, page number \*[bbb] +.R +Granville +grape +grapefruit +grapevine +graph +grapheme +.H 2 "Greg gregarious Gregg Gregory gremlin grenade Grendel" +.H 2 "Grenoble Gresham Greta Gretchen" +.SETR ref6 +.H 2 "grew" +.H 1 "grey greyhound greylag grid griddle gridiron grief" +.H 1 "grievance grieve grievous griffin Griffith grill grille grilled grillwork" +.H 3 "grim grimace Grimaldi grime Grimes Grimm grin grind grindstone" +.H 3 "grip gripe grippe grisly grist gristmill Griswold grit" +.SETR ref7 +.H 3 "gritty grizzle grizzly groan groat grocer grocery groggy groin" +.H 1 "grommet groom groove grope grosbeak gross Grosset Grossman Grosvenor grotesque" +.H 1 "Groton ground groundsel groundskeep groundwork group groupoid" +.H 4 "grout grove grovel Grover grow growl grown grownup growth grub grubby" +.H 4 "grudge gruesome gruff grumble Grumman grunt gryphon g's" +.SETR ref8 +.H 4 "GSA GU Guam guanidine guanine guano guarantee guaranteeing guarantor" +.H 4 "guaranty" +.H 1 "guard guardhouse Guardia guardian Guatemala gubernatorial Guelph Guenther" +.H 1 "guerdon guernsey guerrilla guess guesswork guest guffaw Guggenheim" +.SETR ref9 +.H 1 "Guiana guidance guide guidebook guideline guidepost guiding" +.H 1 "guignol" +.GETR ref6 +.H 1 "guild guildhall guile Guilford guillemot guillotine guilt" +.SETR ref10 +.H 1 "guilty guinea guise guitar gules gulf gull Gullah" +.H 1 "gullet gullible gully gulp gum gumbo gumdrop gummy gumption" diff --git a/contrib/groff/contrib/mm/groff_mm.man b/contrib/groff/contrib/mm/groff_mm.man new file mode 100644 index 000000000000..6af75c66de15 --- /dev/null +++ b/contrib/groff/contrib/mm/groff_mm.man @@ -0,0 +1,1897 @@ +.\" +.\" $Id: groff_mm.man,v 2.1 2001/04/13 09:03:52 wlemb Exp $ +.\" +.de T2 +.ne 2v +.ti -.5i +\\$1 +.sp -1 +.. +.de T3 +.ne 2v +.ti -.5i +\fB\\$1\fP +.br +.. +.TH GROFF_MM @MAN7EXT@ "@MDATE@" "Groff Version @VERSION@" +.SH NAME +groff_mm \- groff mm macros +.SH SYNOPSIS +.B groff +.B \-m@TMAC_M_PREFIX@m +[ +.IR options .\|.\|. +] +[ +.IR files .\|.\|. +] +.SH DESCRIPTION +The groff mm macros are intended to be compatible with the DWB mm macros +with the following limitations: +.TP +.B \(bu +no Bell Labs localisms implemented. +.TP +.B \(bu +the macros OK and PM is not implemented. +.TP +.B \(bu +groff mm does not support cut marks +.LP +\fBm@TMAC_M_PREFIX@m\fP is intended to be international. Therefore it is +possible to write short national macrofiles which change all +english text to the preferred language. Use \fBm@TMAC_M_PREFIX@mse\fP as an example. +.\"######################################################################## +.LP +A file called \fBlocale\fP or \fIlang\fP\fB_locale\fP is read +after the initiation of the global variables. It is therefore +possible to localize the macros with companyname and so on. +.sp +In this manual square brackets is used to show optional arguments. +.sp 3 +\fBNumber registers and strings\fP +.br +Many macros can be controlled by number registers and strings. +A number register is assigned with the \fBnr\fP command: +.br +\fB\&.nr\fP \fIXXX\fP \fI[+-]n [i]\fP +.br +\fBXXX\fP is the name of the register, \fBn\fP is the value to +be assigned, and \fBi\fP is increment value for auto-increment. +\fBn\fP can have a plus or minus sign as prefix if an increment +or decrement of the current value is wanted. (Auto-increment or decrement +occurs if the number register is used with a plus or minus sign, +\fB\en+[XXX]\fP or \fB\en-[XXX]\fP.) +.sp +Strings is defined with \fBds\fP. +.br +\fB\&.ds\fP \fIYYY string\fP +.br +The string is assigned everything to the end of the line, even blanks. +Initial blanks in \fIstring\fP should be prefixed with +a double-quote. (Strings are used in the text as \fB\e*[YYY]\fP.) +.sp +\fBSpecial formatting of number registers\fP +.br +A number register is printed with normal digits if no format has been +given. +Set the format with \fBaf\fP: +.br +\fB\&.af\fP \fIR c\fP +.br +\fIR\fP is the name of the register, \fIc\fP is the format. +.in +.5i +.T2 \fBForm\fP +\fBSequence\fP +.T2 1 +0, 1, 2, 3, ... +.T2 001 +000, 001, 002, 003, ... +.T2 i +0, i, ii, iii, iv, ... +.T2 I +0, I, II, III, IV, ... +.T2 a +0, a, b, c, ..., z, aa, ab, ... +.T2 A +0, A, B, C, ..., Z, AA, AB, ... +.in + +.LP +\fBMacros:\fP +.TP +.B ")E level text" +Adds \fBtext\fP (heading-text) to the table of contents +with \fBlevel\fP either 0 +or between 1-7. See also \fB.H\fP. This macro is used for customized +table of contents. +.TP +.B "1C [1]" +Begin one column processing. An \fB1\fP as argument disables the page-break. +Use wide footnotes, small footnotes may be overprinted. +.TP +.B 2C +Begin two column processing. Splits the page in two columns. It is +a special case of \fBMC\fP. See also \fB1C\fP. +.TP +.B AE +Abstract end, see \fBAS\fP. +.TP +.B "AF [name of firm]" +Authors firm, should be called before \fBAU\fP, see also \fBCOVER\fP. +.TP +.B "AL [type [text-indent [1]]]" +Start autoincrement list. Items are numbered beginning on one. +The \fItype\fP argument controls the type of numbers. +.in +.5i +.T2 Arg +Description +.T2 1 +Arabic (the default) +.T2 A +Upper-case letters (A-Z) +.T2 a +Lower-case letters (a-z) +.T2 I +Upper-case roman +.T2 i +Lower-case roman +.in +\fIText-indent\fP sets the indent and overrides \fBLi\fP. +A third argument will prohibit printing of a blank line before each +item. +.TP +.B "APP name text" +Begin an appendix with name \fIname\fP. Automatic naming occurs if +\fIname\fP is "". The appendixes starts with \fBA\fP if auto is used. +An new page is ejected, and a header is also produced if the number +variable \fBAph\fP is non-zero. This is the default. +The appendix always appear in the 'List of contents' with correct +pagenumber. The name \fIAPPENDIX\fP can be changed by setting +the string \fBApp\fP to the desired text. +The string \fBApptxt\fP contains the current appendix text. +.TP +.B "APPSK name pages text" +Same as \fB.APP\fP, but the pagenr is incremented with \fIpages\fP. +This is used when diagrams or other non-formatted documents are +included as appendixes. +.TP +.B "AS [arg [indent]]" +Abstract start. Indent is specified in 'ens', but scaling is allowed. +Argument \fIarg\fP controls where the abstract is printed. +.in +.5i +.T2 Arg +Placement +.T2 0 +Abstract will be printed on page 1 and on the cover sheet if +used in the released-paper style (\fBMT 4\fP), otherwise +it will be printed on page 1 without a cover sheet. +.T2 1 +Abstract will only be printed on the cover sheet (\fBMT 4\fP only). +.T2 2 +Abstract will be printed only on the cover sheet (other than \fBMT 4\fP only). +The cover sheet is printed without need for \fBCS\fP. +.in +Abstract is not printed at all in external letters (\fBMT 5\fP). +The \fIindent\fP controls the indentation of both margins, otherwise +will normal text indent be used. +.TP +.B "AST [title]" +Abstract title. Default is \fBABSTRACT\fP. +Sets the text above the abstract text. +.TP +.B "AT title1 [title2 ...]" +Authors title. \fBAT\fP must appear just after each \fBAU\fP. +The title will show up after the name in the signature block. +.TP +.B "AU [name [initials [loc [dept [ext [room [arg [arg [arg]]]]]]]]]" +Author information, specifies the author of the memo or paper, and +will be printed on the cover sheet and on other similar places. +\fBAU\fP must not appear before \fBTL\fP. The author information +can contain initials, location, department, telephone extension, +room number or name and up to three extra arguments. +.TP +.B "AV [name [1]]" +Approval signature, generates an approval line with place for +signature and date. The string \fBAPPROVED:\fP can be changed +with variable \fBLetapp\fP, and the string \fBDate\fP in \fBLetdate\fP. +.TP +.B "AVL [name]" +Letter signature, generates a line with place for signature. +.TP +.B "B [bold-text [prev-font-text [bold...]]]" +Begin boldface. +No limit on the number of arguments. +All arguments will be concatenated to one word, the first, third and so +on will be printed in boldface. +.TP +.B B1 +Begin box (as the ms macro). +Draws a box around the text. The text will be indented one character, +and the right margin will be one character shorter. +.TP +.B B2 +End box. Finish the box started by \fBB1\fP. +.TP +.B BE +End bottom block, see \fBBS\fP. +.TP +.B "BI [bold-text [italic-text [bold-text [...]]]]" +Bold-italic. +No limit on the number of arguments, see \fBB\fP. +.TP +.B "BL [text-indent [1]]" +Start bullet list, initialize a list with a bullet and a space +in the beginning of each list item (see \fBLI\fP). +\fIText-indent\fP +overrides the default indentation of the list items set by +number register \fBPi\fP. +A third argument will prohibit printing of a blank line before each +item. +.TP +.B "BR [bold-text [roman-text [bold-text [...]]]]" +Bold-roman. +No limit on the number of arguments. +.TP +.B BS +Bottom block start. Begins the definition of a text block which is +printed at the bottom of each page. Block ends with \fBBE\fP. +.TP +.B "BVL text-indent [mark-indent [1]]" +Start of +broken variable-item list. +Broken variable-item list has no fixed mark, it assumes that +every \fBLI\fP has a mark instead. +The text will always begin at the next line after the mark. +\fIText-indent\fP sets the indent to the text, and \fImark-indent\fP +the distance from the current indent to the mark. +A third argument will prohibit printing of a blank line before each +item. +.TP +.B "COVER [arg]" +\&\fBCOVER\fP begins a coversheet definition. It is important +that \fB.COVER\fP appears before any normal text. +\&\fB.COVER\fP uses \fIarg\fP to build the filename +@TMAC_MDIR@/\fIarg\fP.cov. Therefore it is possible to create unlimited +types of coversheets. +\fIms.cov\fP is supposed to look like the \fBms\fP coversheet. +\&\fB.COVER\fP requires a \fB.COVEND\fP at the end of the coverdefinition. +Always use this order of the covermacros: +.nf +\&.COVER +\&.TL +\&.AF +\&.AU +\&.AT +\&.AS +\&.AE +\&.COVEND +.fi +However, only \fB.TL\fP and \fB.AU\fP are required. +.TP +.B COVEND +This finish the cover description and prints the cover-page. +It is defined in the cover file. +.TP +.B DE +Display end. Ends a block of text, display, that begins +with \fBDS\fP or \fBDF\fP. +.TP +.B "DF [format [fill [rindent]]]" +Begin floating display (no nesting allowed). +A floating display is saved in a queue and is printed in the +order entered. \fIFormat\fP, \fIfill\fP and \fIrindent\fP is the same +as in \fBDS\fP. +Floating displays are controlled by the two number registers \fBDe\fP +and \fBDf\fP. +.sp +\fBDe register\fP +.in +.5i +.T2 0 +Nothing special, this is the default. +.T2 1 +A page eject will occur after each printed display, giving only +one display per page and no text following it. +.in +.sp +\fBDf register\fP +.in +.5i +.T2 0 +Displays are printed at the end of each section (when section-page +numbering is active) or at the end of the document. +.T2 1 +A new display will be printed on the current page if there is enough +space, otherwise it will be printed at the end of the document. +.T2 2 +One display will be printed at the top of each page or column +(in multi-column mode). +.T2 3 +Print one display if there is enough space for it, otherwise it will +be printed at the top of the next page or column. +.T2 4 +Print as many displays that will fit in a new page or column. +A page break will occur between each display if \fBDe\fP is not zero. +.T2 5 +Fill the current page with displays and the rest beginning at a new page +or column. (This is the default.) +A page break will occur between each display +if \fBDe\fP is not zero. +.in +.TP +.B "DL [text-indent [1 [1]]]" +Dash list start. Begins a list where each item is printed +after a dash. \fIText-indent\fP changes the default indentation +of the list items set by +number register \fBPi\fP. +A second argument prevents the empty line between each list item +to be printed. See \fBLI\fP. +A third argument will prohibit printing of a blank line before each +item. +.TP +.B "DS [format [fill [rindent]]]" +Static display start. +Begins collection of text until \fBDE\fP. +The text is printed together on the same page, unless it is longer +than the height of the page. +\fBDS\fP can be nested to a unlimited depth (reasonably :-). +.sp +\fBformat\fP +.in +.5i +.ds x " +.T2 """""" +No indentation. +.T2 none +No indentation. +.T2 L +No indentation. +.T2 I +Indent text with the value of number register \fBSi\fP. +.T2 C +Center each line +.T2 CB +Center the whole display as a block. +.T2 R +Right adjust the lines. +.T2 RB +Right adjust the whole display as a block +.in +.sp +L, I, C and CB can also be specified as 0, 1, 2 or 3 for compatibility +reasons. (Don't use it. :-) +.sp +\fBfill\fP +.in +.5i +.T2 """""" +Line-filling turned off. +.T2 none +Line-filling turned off. +.T2 N +Line-filling turned off. +.T2 F +Line-filling turned on. +.in +.sp +N and F can also be specified as 0 or 1. +An empty line will normally be printed before and after the +display. Setting number register \fBDs\fP to 0 will prevent this. +\fIRindent\fP shortens the line length by that amount. +.TP +.B "EC [title [override [flag [refname]]]]" +Equation title. +Sets a title for an equation. The \fIoverride\fP argument +change the numbering. +.sp +\fBflag\fP +.in +.5i +.T2 none +\fIoverride\fP is a prefix to the number. +.T2 0 +\fIoverride\fP is a prefix to the number. +.T2 1 +\fIoverride\fP is a suffix to the number. +.T2 2 +\fIoverride\fP replaces the number. +.in +\fBEC\fP uses the number register \fBEc\fP as counter. +It is possible to use \fB.af\fP to change the format of the number. +If number register \fBOf\fP is 1, then the format of title +will use a dash instead of a dot after the number. +.br +The string \fBLe\fP controls the title of the +List of Equations, default is \fILIST OF EQUATIONS\fP. +The List of Equations will only be printed if number register \fBLe\fP +is 1, default 0. +The string \fBLiec\fP contains the word \fIEquation\fP, wich +is printed before the number. +If \fIrefname\fP is used, then the equation number is saved with +\&\fB.SETR\fP, and can be retrieved with \fB.GETST\fP \fIrefname\fP. +.br +Special handling of the title will occur if +\fBEC\fP is used inside \fBDS\fP/\fBDE\fP, it will not be +affected by the format of \fBDS\fP. +.TP +.B "EF [arg]" +Even-page footer, printed just above the normal page footer +on even pages, see \fBPF\fP. +.TP +.B "EH [arg]" +Even-page header, printed just below the normal page header +on even pages, see \fBPH\fP. +.TP +.B EN +Equation end, see \fBEQ\fP. +.TP +.B EOP +End of page user-defined macro. This macro will be called +instead of the normal printing of the footer. The macro +will be executed in a separate environment, without any +trap active. See \fBTP\fP. +.sp +\fBStrings available to EOP\fP +.in +.5i +.T2 EOPf +Argument from \fBPF\fP. +.T2 EOPef +Argument from \fBEF\fP. +.T2 EOPof +Argument from \fBOF\fP. +.in +.TP +.B "EPIC width height [name]" +\fBEPIC\fP draws a box with the given \fIwidth\fP and \fIheight\fP, it will +also print the text \fIname\fP or a default string if +\fIname\fP is not specified.. +This is used to include external pictures, just give the size +of the picture. +See \fBPIC\fP +.TP +.B "EQ [label]" +Equation start. +\fBEQ\fP/\fBEN\fP are the delimiters for equations written for \fBeqn\fP. +\fBEQ\fP/\fBEN\fP must be inside a \fBDS\fP/\fBDE\fP-pair, except +when \fBEQ\fP is only used to set options in \fBeqn\fP. +The \fIlabel\fP will appear at the right margin of the equation, unless +number register \fBEq\fP is 1. Then the label will appear at the +left margin. +.TP +.B "EX [title [override [flag [refname]]]]" +Exhibit title, arguments are the same as for \fBEC\fP. +\fBEX\fP uses the number register \fBEx\fP as counter. +The string \fBLx\fP controls the title of the +List of Exhibits, default is \fILIST OF EXHIBITS\fP. +The List of Exhibits will only be printed if number register \fBLx\fP +is 1, default 1. +The string \fBLiex\fP contains the word \fIExhibit\fP, which +is printed before the number. +If \fIrefname\fP is used, then the exhibit number is saved with +\&\fB.SETR\fP, and can be retrieved with \fB.GETST\fP \fIrefname\fP. +.br +Special handling of the title will occur if +\fBEX\fP is used inside \fBDS\fP/\fBDE\fP, it will not be +affected by the format of \fBDS\fP. +.TP +.B "FC [closing]" +Prints \fIYours\ very\ truly,\fP as a formal closing of a letter or +memorandum. The argument replaces the defualt string. +The default is stored in string variable \fBLetfc\fP. +.TP +.B "FD [arg [1]]" +Footnote default format. +Controls the hyphenation (hyphen), right margin justification (adjust), +indentation of footnote text (indent). It can also change the label +justification (ljust). +.sp +.ne 14v +.nf +.ta .5i +.8i +.8i +.8i +.8i +\fBarg hyphen adjust indent ljust\fP +0 no yes yes left +1 yes yes yes left +2 no no yes left +3 yes no yes left +4 no yes no left +5 yes yes no left +6 no no no left +7 yes no no left +8 no yes yes right +9 yes yes yes right +10 no no yes right +11 yes no yes right +.sp +.fi +.DT +Argument greater than or equal to 11 is considered as arg 0. +Default for m@TMAC_M_PREFIX@m is 10. +.TP +.B FE +Footnote end. +.TP +.B "FG [title [override [flag [refname]]]]" +Figure title, arguments are the same as for \fBEC\fP. +\fBFG\fP uses the number register \fBFg\fP as counter. +The string \fBLf\fP controls the title of the +List of Figures, default is \fILIST OF FIGURES\fP. +The List of Figures will only be printed if number register \fBLf\fP +is 1, default 1. +The string \fBLifg\fP contains the word \fIFigure\fP, wich +is printed before the number. +If \fIrefname\fP is used, then the figure number is saved with +\&\fB.SETR\fP, and can be retrieved with \fB.GETST\fP \fIrefname\fP. +.br +Special handling of the title will occur if +\fBFG\fP is used inside \fBDS\fP/\fBDE\fP, it will not be +affected by the format of \fBDS\fP. +.TP +.B "FS [label]" +Footnote start. +The footnote is ended by \fBFE\fP. Footnotes is normally automatically +numbered, the number is available in string \fBF\fP. +Just add \fB\e*F\fP in the text. By adding \fIlabel\fP, it is possible +to have other number or names on the footnotes. +Footnotes in displays is now possible. +An empty line separates footnotes, the height of the line +is controlled by number register \fBFs\fP, default value is 1. +.TP +.B "GETHN refname [varname]" +Includes the headernumber where the corresponding \fBSETR\fP \fIrefname\fP +was placed. Will be X.X.X. in pass 1. See \fBINITR\fP. +If \fIvarname\fP is used, \fBGETHN\fP sets the stringvariable \fIvarname\fP to the +headernumber. +.TP +.B "GETPN refname [varname]" +Includes the pagenumber where the corresponding \fBSETR\fP \fIrefname\fP +was placed. Will be 9999 in pass 1. See \fBINITR\fP. +If \fIvarname\fP is used, \fBGETPN\fP sets the stringvariable \fIvarname\fP +to the pagenumber. +.TP +.B "GETR refname" +Combines \fBGETHN\fP and \fBGETPN\fP with the text 'chapter' and ', page'. +The string \fIQrf\fP contains the text for reference: +.ti +.5i +\&.ds Qrf See chapter \e\e*[Qrfh], page \e\e*[Qrfp]. +.br +\fIQrf\fP may be changed to support other languages. +Strings \fIQrfh\fP and \fIQrfp\fP are set by \fBGETR\fP +and contains the page and headernumber. +.TP +.B "GETST refname [varname]" +Includes the string saved with the second argument to \fB.SETR\fP. +Will be dummystring in pass 1. +If varname is used, \fBGETST\fP sets the stringvariable \fIvarname\fP to the +saved string. See \fBINITR\fP. +.TP +.B "H level [heading-text [heading-suffix]]" +Numbered section heading. +Section headers can have a level between 1 and 7, level 1 is the +top level. The text is given in \fIheading-text\fP, and must be +surrounded by double quotes if it contains spaces. +\fBHeading-suffix\fP is added to the header in the text but not in +the table of contents. This is normally used for footnote marks +and similar things. Don't use \fB\e*F\fP in \fIheading-suffix\fP, it won't +work. A manual label must be used, see \fBFS\fP. +.sp +An eventual paragraph, \fBP\fP, directly after \fBH\fP will be +ignored, \fBH\fP is taking care of spacing and indentation. +.sp +\fBPage ejection before heading\fP +.br +Number register \fBEj\fP controls page ejection before the heading. +Normally, a level one heading gets two blank lines before it, higher levels +gets only one. A new page is ejected before each +first-level heading if number register \fBEj\fP is 1. +All levels below or equal the value of \fBEj\fP gets a new page. +Default value for \fBEj\fP is 0. +.sp +\fBHeading break level\fP +.br +A line break occurs after the heading if the heading level is less +or equal to number register \fBHb\fP. +Default value 2. +.sp +\fBHeading space level\fP +.br +A blank line is inserted after the heading if the heading level is less +or equal to number register \fBHs\fP. +Default value 2. +.sp +Text will follow the heading on the same line if the level is greater +than both \fBHb\fP and \fBHs\fP. +.sp +\fBPost-heading indent\fP +.br +Indentation of the text after the heading is controlled by number +register \fBHi\fP, default value 0. +.sp +\fBHi\fP +.in +.5i +.T2 0 +The text will be left-justified. +.T2 1 +Indentation of the text will follow the value of number register \fBPt\fP, +see \fBP\fP. +.T2 2 +The text will be lined up with the first word of the heading. +.in +.sp +\fBCentered section headings\fP +.br +All headings whose level is equal or below number register \fBHc\fP +and also less than or equal to \fBHb\fP or \fBHs\fP +is centerered. +.sp +\fBFont control of the heading\fP +.br +The font of each heading level is controlled by string \fBHF\fP. +It contains a fontnumber or fontname for each level. Default +is \fB2\ 2\ 2\ 2\ 2\ 2\ 2\fP (all headings in italic). +Could also be written as \fBI\ I\ I\ I\ I\ I\ I\fP. +All omitted values are presumed to be a 1. +.sp +\fBPoint size control\fP. +.br +String \fBHP\fP controls the pointsize of each heading, in the +same way as \fBHF\fP controls the font. +A value of 0 selects the default point size. +Default value is \fB0\ 0\ 0\ 0\ 0\ 0\ 0\fP. Beware that only the +point size changes, not the vertical size. +That can be controlled by the user specified macro \fBHX\fP and/or +\fBHZ\fP. +.sp +\fBHeading counters\fP +.br +Seven number registers, named \fBH1\fP thru \fBH7\fP contains +the counter for each heading level. +The values are printed using arabic numerals, this can be changed +with the macro \fBHM\fP (see below). +All marks are concatenated before printing. To avoid this, set +number register \fBHt\fP to 1. That will only print the current +heading counter at each heading. +.sp +\fBAutomatic table of contents\fP +.br +All headings whose level is equal or below number register \fBCl\fP +is saved to be printed in the table of contents. Default value is 2. +.sp +\fBSpecial control of the heading, user-defined macros\fP. +.br +These macros can be defined by the user to get a finer control +of vertical spacing, fonts or other features. +Argument \fIlevel\fP is the level-argument to \fBH\fP, but +0 for unnumbered headings (see \fBHU\fP). +Argument \fIrlevel\fP is the real level, it is +set to number register \fBHu\fP for unnumbered headings. +Argument \fIheading-text\fP is the text argument to \fBH\fP and \fBHU\fP. +.sp +\fBHX\ \fP\fIlevel\ rlevel\ heading-text\fP +.br +\fBHX\fP is called just before the printing of the heading. +The following register is available for \fBHX\fP. +\fBHX\fP may alter \fB}0\fP, \fB}2\fP and \fB;3\fP. +.in +.5i +.T3 "string }0" +Contains the heading mark plus two spaces if \fIrlevel\fP is non-zero, +otherwise empty. +.T3 "register ;0" +Contains the position of the text after the heading. +0 means that the text should follow the heading on the same line, 1 +means that a line break should occur before the text and +2 means that a blank line should separate the heading and the text. +.T3 "string }2" +Contains two spaces if register \fB;0\fP is 0. It is used to +separate the heading from the text. The string +is empty if \fB;0\fP is non-zero. +.T3 "register ;3" +Contains the needed space in units after the heading. +Default is 2v. + +Can be used to change things like numbering (\fB}0\fP), +vertical spacing (\fB}2\fP) +and the needed space after the heading. +.in +.sp +\fBHY\ \fP\fIdlevel\ rlevel\ heading-text\fP +.br +\fBHY\fP is called after size and font calculations and +might be used to change indentation. +.sp +\fBHZ\ \fP\fIdlevel\ rlevel\ heading-text\fP +.br +\fBHZ\fP is called after the printing of the heading, just before +\fBH\fP or \fBHU\fP exits. +Could be used to change the page header according to the section heading. +.TP +.B "HC [hyphenation-character]" +Set hyphenation character. +Default value is \e%. +Resets to the default if called without argument. +Hyphenation can be turned off by setting number +register \fBHy\fP to 0 in the beginning of the file. +.TP +.B "HM [arg1 [arg2 [... [arg7]]]]" +Heading mark style. +Controls the type of marking for printing of the heading counters. +Default is 1 for all levels. +.sp +\fBArgument\fP +.in +.5i +.T2 1 +Arabic numerals. +.T2 0001 +Arabic numerals with leading zeroes, one or more. +.T2 A +Upper-case alphabetic +.T2 a +Lower-case alphabetic +.T2 I +Upper-case roman numerals +.T2 i +lower-case roman numerals +.T2 \fIempty\fP +Arabic numerals. +.in +.TP +.B "HU heading-text" +Unnumbered section header. +\fBHU\fP behavies like \fBH\fP at the level in number register \fBHu\fP. +See \fBH\fP. +.TP +.B "HX dlevel rlevel heading-text" +Userdefined heading exit. +Called just before printing the header. +See \fBH\fP. +.TP +.B "HY dlevel rlevel heading-text" +Userdefined heading exit. +Called just before printing the header. +See \fBH\fP. +.TP +.B "HZ dlevel rlevel heading-text" +Userdefined heading exit. +Called just after printing the header. +See \fBH\fP. +.TP +.B "I [italic-text [prev-font-text [italic-text [...]]]]" +Italic. +Changes the font to italic if called without arguments. +With one argument it will set the word in italic. +With two argument it will concatenate them and set the first +word in italic and the second in the previous font. +There is no limit on the number of argument, all will be concatenated. +.TP +.B "IA [addressee-name [title]]" +Begins specification of the addressee and addressee's address in +letter style. +Several names can be specified with empty \fBIA\fP/\fBIE\fP-pairs, but +only one address. +See \fBLT\fP. +.TP +.B "IB [italic-text [bold-text [italic-text [...]]]]" +Italic-bold. +Even arguments is printed in italic, odd in boldface. +See \fBI\fP. +.TP +.B IE +Ends the address-specification after \fPIA\fP. +.TP +.B "INITI type filename [macro]" +Initialize the new index system, sets the filename to collect +index lines in with \fBIND\fP. Argument \fItype\fP selects +the type of index, page number, header marks or both. +The default is \fIN\fP. + +It is also possible to create a macro that is responsible +for formatting each row. Add the name of the macro as argument 3. +The macro will be called with the index as argument(s). +.sp +\fBtype\fP +.in +.5i +.T2 N +Page numbers +.T2 H +Header marks +.T2 B +Both page numbers and header marks, tab separated +.in +.TP +.B "INITR filename" +Initialize the refencemacros. References will be written to +\fIfilename.tmp\fP and \fIfilename.qrf\fP. Requires two passes with groff. +The first looks for references and the second includes them. +\fBINITR\fP can be used several times, but it is only the first +occurrence of \fBINITR\fP that is active. +Option \fB-U\fP might be needed if \fBunsafe\fP-errors occur. +See also \fBSETR\fP, \fBGETPN\fP and \fBGETHN\fP. +.TP +.B "IND arg1 [arg2 [...]]" +\fBIND\fP writes a line in the index file selected by \fBINITI\fP +with all arguments and the page number or header mark separated by tabs. +.in +.5i +\fBExamples\fP +.br +arg1\etpage number +.br +arg1\etarg2\etpage number +.br +arg1\etheader mark +.br +arg1\etpage number\etheader mark +.in +.TP +.B "INDP" +\fBINDP\fP prints the index by running the command specified +by string variable \fBIndcmd\fP, normally \fIsort\ -t\et\fP. +\fBINDP\fP reads the output from the command to form +the index, normally in two columns (can be changed by defining \fBTYIND\fP). +The index is printed with string variable \fBIndex\fP as header, +default is \fBINDEX\fP. One-column processing is +returned after the list. \fBINDP\fP will call the +user-defined macros \fBTXIND\fP, \fBTYIND\fP and \fBTZIND\fP if defined. +\fBTXIND\fP is called before printing \fBINDEX\fP, \fBTYIND\fP +is called instead of printing \fBINDEX\fP. \fBTZIND\fP is called +after the printing and should take care of restoring to normal +operation again. +.TP +.B "ISODATE [0]" +\fBISODATE\fP changes the predefined date string in \fBDT\fP to +ISO-format, ie YYYY-MM-DD. This can also be done by +adding \fB-rIso=1\fP on the command line. +Reverts to old date format if argument is \fB0\fP. +.TP +.B "IR [italic-text [roman-text [italic-text [...]]]]" +Italic-roman. +Even arguments is printed in italic, odd in roman. +See \fBI\fP. +.TP +.B "LB text-indent mark-indent pad type [mark [LI-space [LB-space]]]" +List begin macro. +This is the common macro used for all lists. +\fIText-indent\fP is the number of spaces to indent the text from the +current indent. +.sp +\fIPad\fP and \fImark-indent\fP controls where to put the mark. +The mark is placed within the mark area, and \fImark-indent\fP +sets the number of spaces before this area. It is normally 0. +The mark area ends where the text begins. The start of the text +is still controlled by \fItext-indent\fP. +.sp +The mark is left justified whitin the mark area if \fIpad\fP is 0. +If \fIpad\fP is greater than 0, then \fImark-indent\fP is ignored, and +the mark is placed \fIpad\fP spaces before the text. +This will right justify the mark. +.sp +If \fItype\fP is 0 the list will have either a hanging indent or, if +argument \fImark\fP is given, the string \fImark\fP as mark. +.sp +If \fItype\fP is greater than 0 automatic numbering will occur, arabic +if \fImark\fP is empty. \fIMark\fP can then be any of \fB1\fP, \fBA\fP, +\fBa\fP, \fBI\fP or \fBi\fP. +.sp +\fIType\fP selects one of six possible ways to display the mark. +.br +\fBtype\fP +.in +.6i +.T2 1 +x. +.T2 2 +x) +.T2 3 +(x) +.T2 4 +[x] +.T2 5 +<x> +.T2 6 +{x} +.in +.sp +Every item in the list will get \fILI-space\fP number of blank lines +before them. Default is 1. +.sp +\fBLB\fP itself will print \fILB-space\fP blank lines. Default is 0. +.TP +.B "LC [list-level]" +List-status clear. +Terminates all current active lists down to \fIlist-level\fP, or 0 +if no argmuent is given. This is used by \fBH\fP to clear any +active list. +.TP +.B "LE [1]" +List end. +Terminate the current list. \fBLE\fP outputs a blank line +if an argument is given. +.TP +.B "LI [mark [1]]" +List item precedes every item in a list. Without argument \fBLI\fP +will print the mark determined by the current list type. By giving +\fBLI\fP one argument, it will use that as the mark instead. +Two arguments to \fBLI\fP will make \fImark\fP a prefix to +the current mark. +There will be no separating space between the prefix +and the mark if the second argument is \fB2\fP instead of \fB1\fP. +This behaviour can also be achieved by setting number register +\fBLimsp\fP to zero. +A zero length \fImark\fP will make a hanging +indent instead. +.sp +A blank line is normally printed before the list item. This behaviour +can be controlled by number register \fBLs\fP. Pre-spacing +will occur for each list-level less than or equal to \fBLs\fP. +Default value is 99. (Nesting of lists is unlimited. :-) +.sp +The indentation can be changed thru number register \fBLi\fP. +Default is 6. +.sp +All lists begins with a list initialization macro, \fBLB\fP. +There are, however, seven predefined listtypes to +make lists easier to use. They all call \fBLB\fP with different +default values. +.in +.5i +.T2 \fBAL\fP +Automatically Incremented List +.T2 \fBML\fP +Marked List +.T2 \fBVL\fP +Variable-Item List +.T2 \fBBL\fP +Bullet List +.T2 \fBDL\fP +Dash List +.T2 \fBRL\fP +Reference List +.T2 \fBBVL\fP +Broken Varable List. +.in +These lists are described at other places in this manual. See also \fBLB\fP. +.TP +.B "LT [arg]" +Formats a letter in one of four different styles depending +on the argument. +See also \fBINTERNALS\fP. +.in +.5i +.T2 \fBArg +Style\fP +.T2 BL +Blocked. Date line, return address, writer's address and closing +begins at the center of the line. All other lines begin at the left margin. +.T2 SB +Semi-blocked. Same as blocked, except that the first line in every +paragraph is indented five spaces. +.T2 FB +Full-blocked. All lines begin at the left margin. +.T2 SP +Simplified. Almost the same as the full-blocked style. Subject and +the writer's identification are printed in all-capital. +.in +.TP +.B "LO type [arg]" +Specify options in letter (see \fB.LT\fP). +This is a list of the standard options: +.in +.5i +.T2 CN +Confidential notation. Prints \fBCONFIDENTIAL\fP on the second line +below the date line. Any argument replaces \fBCONFIDENTIAL\fP. +See also string variable \fBLetCN\fP. +.T2 RN +Reference notation. Prints \fBIn reference to:\fP and the argument +two lines below the date line. +See also string variable \fBLetRN\fP. +.T2 AT +Attention. Prints \fBATTENTION:\fP and the argument below the inside address. +See also string variable \fBLetAT\fP. +.T2 SA +Salutation. Prints \fBTo Whom It May Concern:\fP or the argument if +it was present. The salutation is printed two lines below the inside address. +See also string variable \fBLetSA\fP. +.T2 SJ +Subject line. Prints the argument as subject prefixed with \fBSUBJECT:\fP +two lines below the inside address, except in letter type \fBSP\fP. +Then the subject is printed in all-captial without any prefix. +See also string variable \fBLetSJ\fP. +.in +.TP +.B "MC column-size [column-separation] " +Begin multiple columns. Return to normal with \fB1C\fP. +\fBMC\fP will create as many columns as the current line length permits. +\fIColumn-size\fP is the width of each column, and \fIcolumn-separation\fP +is the space between two columns. Default separation is the +column-size/15. +See also \fB1C\fP. +.TP +.B "ML mark [text-indent [1]]" +Marked list start. The \fImark\fP argument will be printed before +each list item. +\fIText-indent\fP sets the indent and overrides \fBLi\fP. +A third argument will prohibit printing of a blank line before each +item. +.TP +.B "MT [arg [addressee]]" +Memorandum type. +The \fIarg\fP is part of a filename in \fI@TMAC_MDIR@/*.MT\fP. +Memorandum type 0 thru 5 are supported, including \fI"string"\fP. +\fIAddressee\fP just sets a variable, used in the AT&T macros. +.br +\fBarg\fP +.in +.5i +.T2 0 +Normal memorandum, no type printed +.T2 1 +Memorandum with \fIMEMORANDUM FOR FILE\fP printed +.T2 2 +Memorandum with \fIPROGRAMMER'S NOTES\fP printed +.T2 3 +Memorandum with \fIENGINEER'S NOTES\fP printed +.T2 4 +Released paper style +.T2 5 +External letter style +.in +See also \fBCOVER\fP/\fBCOVEND\fP, a more flexible type of front page. +.TP +.B "MOVE y-pos [x-pos [line-length]]" +Move to a position, pageoffset set to \fIx-pos\fP. +If \fIline-length\fP is not given, the difference between +current and new pageoffset is used. +Use \fBPGFORM\fP without arguments to return to normal. +.TP +.B "MULB cw1 space1 [cw2 space2 [cw3 ...]]" +Begin a special multi-column mode. Every columns width must be specified. +Also the space between the columns must be specified. The last column +does not need any space-definition. \fBMULB\fP starts a diversion and \fBMULE\fP +ends the diversion and prints the columns. +The unit for width and space is 'n', but \fBMULB\fP accepts all +normal unitspecifications like 'c' and 'i'. +\fBMULB\fP operates in a separate environment. +.TP +.B "MULN" +Begin the next column. This is the only way to switch column. +.TP +.B "MULE" +End the multi-column mode and print the columns. +.TP +.B "nP [type]" +Print numbered paragraph with header level two. See \fB.P\fP. +.TP +.B "NCOL" +Force printing to the next column, don't use this together with +the \fBMUL*\fP macros, see \fB2C\fP. +.TP +.B "NS [arg [1]]" +Prints different types of notations. The argument selects between +the predefined type of notations. If the second argument is available, +then the argument becomes the entire notation. +If the argument doesn't exist in the predefined, it will be +printed as \fBCopy (\fP\fIarg\fP\fB) to\fP. +It is possible to add more standard notations, see the string variable +\fBLetns\fP and \fBLetnsdef\fP. +.nf +.in +.5i +.T2 \fBArg +Notation\fP +.T2 \fInone\fP +Copy To +.T2 """"" +Copy To +.T2 1 +Copy To (with att.) to +.T2 2 +Copy To (without att.) to +.T2 3 +Att. +.T2 4 +Atts. +.T2 5 +Enc. +.T2 6 +Encs. +.T2 7 +Under separate cover +.T2 8 +Letter to +.T2 9 +Memorandum to +.T2 10 +Copy (with atts.) to +.T2 11 +Copy (without atts.) to +.T2 12 +Abstract Only to +.T2 13 +Complete Memorandum to +.T2 14 +CC +.in +.fi +.TP +.B "ND new-date" +New date. Override the current date. Date is not +printed if \fInew-date\fP is an empty string. +.TP +.B "OF [arg]" +Odd-page footer, a line printed just above the normal footer. +See \fBEF\fP and \fBPF\fP. +.TP +.B "OH [arg]" +Odd-page header, a line printed just below the normal header. +See \fBEH\fP and \fBPH\fP. +.TP +.B OP +Make sure that the following text is printed at the top +of an odd-numbered page. Will not output an empty page +if currently at the top of an odd page. +.TP +.B "P [type]" +Begin new paragraph. +\fBP\fP without argument will produce left justified text, even +the first line of the paragraph. This is the same as setting +\fItype\fP to 0. If the argument is 1, then the first line +of text following \fBP\fP will be indented by the number of +spaces in number register \fBPi\fP, normally 5. +.sp +Instead of giving 1 as argument to \fBP\fP it is possible to set the +paragraph type in number register \fBPt\fP. Using 0 and 1 +will be the same as adding that value to \fBP\fP. +A value of 2 will indent all paragraphs, except after +headings, lists and displays. +.sp +The space between two paragraphs is controlled by number register \fBPs\fP, +and is 1 by default (one blank line). +.TP +.B "PGFORM [linelength [pagelength [pageoffset [1]]]]" +Sets linelength, pagelength and/or pageoffset. +This macro can be used for special formatting, like letterheads +and other. +It is normally the first command in a file, though it's not necessary. +\fBPGFORM\fP can be used without arguments +to reset everything after a \fBMOVE\fP. +A line-break is done unless the fourth argument is given. +This can be used to avoid the pagenumber on the first page while setting +new width and length. +(It seems as if this macro sometimes doesn't work too well. +Use the command line arguments +to change linelength, pagelength and pageoffset instead. Sorry.) +.TP +.B PGNH +No header is printed on the next page. Used to get rid of +the header in letters or other special texts. +This macro must be used before any text to inhibit the pageheader +on the first page. +.TP +.B PIC [-L] [-C] [-R] [-I n] filename [width [height]] +\fBPIC\fP includes a Postscript file in the document. +The macro depends on \fBmmroff\fP and \fBINITR\fP. +\fB-L\fP, \fB-C\fP, \fB-R\fP and \fB-I n\fP adjusts the picture +or indents it. The optionally \fIwidth\fP and \fIheight\fP +can also be given to resize the picture. +.TP +.B PE +Picture end. +Ends a picture for \fB@TMAC_M_PREFIX@pic\fP, see the manual for \fB@TMAC_M_PREFIX@pic\fP. +.TP +.B "PF [arg]" +Page footer. +\fBPF\fP sets the line to be printed at the bottom of each page. +Normally empty. See \fBPH\fP for the argument specification. +.TP +.B "PH [arg]" +Page header, a line printed at the top of each page. +The argument should be specified as "'left-part'center-part'right-part'", +where left-, center- and right-part is printed left-justified, centered +and right justified. The character \fB%\fP is changed to the current +page number. The default page-header is "''- % -''", the page +number between two dashes. +.TP +.B PS +Picture start (from pic). Begins a picture for \fB@g@pic\fP, see +the manual. +.TP +.B PX +Page-header user-defined exit. +\fBPX\fP is called just after the printing of the page header +in \fIno-space\fP mode. +.TP +.B R +Roman. +Return to roman font, see also \fBI\fP. +.TP +.B "RB [roman-text [bold-text [roman-text [...]]]]" +Roman-bold. +Even arguments is printed in roman, odd in boldface. +See \fBI\fP. +.TP +.B "RD [prompt [diversion [string]]]" +Read from standard input to diversion and/or string. +The text will be saved in a diversion named \fIdiversion\fP. +Recall the text by writing the name of the diversion after a dot +on an empty line. A string will also be defined if +\fIstring\fP is given. \fIDiversion\fP and/or \fIprompt\fP can +be empty (""). +.TP +.B RF +Reference end. Ends a reference definition and returns to normal +processing. See \fBRS\fP. +.TP +.B "RI [roman-text [italic-text [roman-text [...]]]]" +Even arguments are printed in roman, odd in italic. +See \fBI\fP. +.TP +.B "RL [text-indent [1]]" +Reference list start. +Begins a list where each item is preceded with a automatically +incremented number between +square brackets. +\fIText-indent\fP changes the default indentation. +.TP +.B "RP [arg1 [arg2]]" +Produce reference page. +\fBRP\fP can be used if a reference page is wanted somewhere in the +document. It is not needed if \fBTC\fP is used to produce +a table of content. The reference page will then be printed automatically. +.sp +The reference counter will not be reset if \fIarg1\fP is 1. +.sp +\fIArg2\fP tells \fBRP\fP whether to eject a page or not. +.br +\fBArg2\fP +.in +.5i +.T2 0 +The reference page will be printed on a separate page. +This is +the default. +.T2 1 +Do not eject page after the list. +.T2 2 +Do not eject page before the list. +.T2 3 +Do not eject page before and after the list. +.in +The reference items will be separated by a blank line. +Setting number register \fBLs\fP to 0 will suppress the line. +.sp +The string \fBRp\fP contains the reference page title and +is normally set to \fIREFERENCES\fP. +.TP +.B "RS [string-name]" +\fBRS\fP begins an automatically numbered reference definition. +Put the string \fB\e*(Rf\fP where the reference mark +should be and write the reference between \fBRS\fP/\fBRF\fP +at next new line after the reference mark. The reference number +is stored in number register \fB:R\fP. +If \fIstring-name\fP is given, a string with that name +will be defined and contain the current reference mark. +The string can be referenced as \fB\e*[\fIstring-name\fP]\fP later in +the text. +.TP +.B "S [size [spacing]]" +Set point size and vertical spacing. If any argument is equal 'P', then +the previous value is used. A 'C' means current value, and 'D' default value. +If '+' or '-' is used before the value, then increment or decrement of +the current value will be done. +.TP +.B "SA [arg]" +Set right-margin justification. +Justification is normally turned on. +No argumenent or \fB0\fP turns off justification, a \fB1\fP turns on +justification. +.TP +.B "SETR refname [string]" +Remember the current header and page-number as \fIrefname\fP. +Saves \fIstring\fP if \fIstring\fP is defined. \fIstring\fP is retrieved +with \fB.GETST\fP. +See \fBINITR\fP. +.TP +.B "SG [arg [1]]" +Signature line. Prints the authors name(s) after the formal closing. +The argument will be appended to the reference data, printed +at either the first or last author. The reference data is the location, +department and initials specified with \fB.AU\fP. +It will be printed at the first author if the second argument is given, +otherwise at the last. +No reference data will be printed if the author(s) is specifed +thru \fB.WA\fP/\fB.WE\fP. +See \fBINTERNALS\fP. +.TP +.B "SK [pages]" +Skip pages. +If \fIpages\fP is \fB0\fP or omitted, a skip to the next page +will occur unless it is already at the top of a page. +Otherwise it will skip \fIpages\fP pages. +.TP +.B "SM string1 [string2 [string3]]" +Make a string smaller. +If \fIstring2\fP is given, \fIstring1\fP will be smaller and \fIstring2\fP +normal, concatenated with \fIstring1\fP. With three argument, all is +concatenated, but only \fIstring2\fP is made smaller. +.TP +.B "SP [lines]" +Space vertically. \fIlines\fP can have any scalingfactor, like \fI3i\fP or +\fI8v\fP. Several \fBSP\fP in a line will only produce the +maximum number of lines, not the sum. \fBSP\fP will also be ignored +until the first textline in a page. Add a \fB\e&\fP before \fBSP\fP +to avoid this. +.TP +.B TAB +reset tabs to every 5n. Normally used to reset any previous tabpositions. +.TP +.B "TB [title [override [flag [refname]]]]" +Table title, arguments are the same as for \fBEC\fP. +\fBTB\fP uses the number register \fBTb\fP as counter. +The string \fBLt\fP controls the title of the +List of Tables, default is \fILIST OF TABLES\fP. +The List of Tables will only be printed if number register \fBLt\fP +is 1, default 1. +The string \fBLitb\fP contains the word \fITABLE\fP, wich +is printed before the number. +.br +Special handling of the title will occur if +\fBTB\fP is used inside \fBDS\fP/\fBDE\fP, it will not be +affected by the format of \fBDS\fP. +.TP +.B "TC [slevel [spacing [tlevel [tab [h1 [h2 [h3 [h4 [h5]]]]]]]]]" +Table of contents. +This macro is normally used at the last line of the document. +It generates a table of contents with headings up to the level +controlled by number register \fBCl\fP. Note that \fBCl\fP controls +the saving of headings, it has nothing to do with \fBTC\fP. +Headings with level less than or equal to \fIslevel\fP will get +\fIspacing\fP number of lines before them. +Headings with level less than or equal to \fItlevel\fP will have +their page numbers right justified with dots or spaces separating +the text and the page number. Spaces is used if \fItab\fP +is greater than zero, otherwise dots. +Other headings will have the +page number directly at the end of the heading text (\fIragged right\fP). +.sp +The rest of the arguments will be printed, centered, before the +table of contents. +.sp +The user-defined macros \fBTX\fP and \fBTY\fP are used if \fBTC\fP is called +with at most four arguments. \fBTX\fP is called before the printing +of \fICONTENTS\fP, and \fBTY\fP is called instead of printing \fICONTENTS\fP. +.sp +Equivalent macros can be defined for list of figures, tables, equations +and excibits by defining \fBTXxx\fP or \fBTYxx\fP, where \fBxx\fP +is \fBFg\fP, \fBTB\fP, \fBEC\fP or \fBEX\fP. +.sp +String \fBCi\fP can be set to control the indentations for each heading-level. +It must be scaled, like \fB.ds\ Ci\ .25i\ .5i\ .75i\ 1i\ 1i\fP. +The indentation is normally controlled by the maxlength of headings +in each level. +.sp +All texts can be redefined, new stringvariables +\fILifg\fP, \fILitb\fP, \fILiex\fP, \fILiec\fP and \fILicon\fP contain +"Figure", "TABLE", "Exhibit", "Equation" and "CONTENTS". +These can be redefined to other languages. +.TP +.B TE +Table end. See \fBTS\fP. +.TP +.B "TH [N]" +Table header. See \fBTS\fP. +\fBTH\fP ends the header of the table. This header will +be printed again if a page-break occurs. +Argument \fIN\fP isn't implemented yet. +.TP +.B TL [charging-case number(s) [filing-case number(s)]] +Begin title of memorandum. +All text up to the next \fBAU\fP is included in the title. +\fICharging-case number\fP and \fIfiling-case\fP are saved +for use in the front page processing. +.TP +.B TM [num1 [num2 [...]]] +Technical memorandumnumbers used in \fB.MT\fP. Unlimited number +of arguments may be given. +.TP +.B TP +Top of page user-defined macro. +This macro is called instead of the normal page header. It is +possible to get complete control over the header. +Note that header and footer is printed in a separate environment. +Linelength is preserved though. +.TP +.B "TS [H]" +Table start. This is the start of a table specification +to \fB@g@tbl\fP. See separate manual for \fB@g@tbl\fP. +\fBTS\fP ends with \fBTE\fP. +Argument \fIH\fP tells \fBm@TMAC_M_PREFIX@m\fP that the table +has a header. See \fBTH\fP. +.TP +.B TX +Userdefined table of contents exit. +This macro is called just before \fBTC\fP prints the word \fICONTENTS\fP. +See \fBTC\fP. +.TP +.B TY +Userdefined table of contents exit (no "CONTENTS"). +This macro is called instead of printing \fICONTENTS\fP. +See \fBTC\fP. +.TP +.B VERBON [flag [pointsize [font]]] +Begin verbatim output using courier font. +Usually for printing programs. +All character has equal width. +The pointsize can be changed with +the second argument. By specifying the font-argument +it is possible to use another font instead of courier. +\fIflag\fP controls several special features. +It contains the sum of all wanted features. +.in +.5i +.T2 Value +Description +.T2 1 +Disable the escape-character (\e). This is normally turned on during +verbose output. +.T2 2 +Add an empty line before the verbose text. +.T2 4 +Add an empty line after the verbose text. +.T2 8 +Print the verbose text with numbered lines. This adds four digitsized +spaces in the beginning of each line. Finer control is available with +the string-variable \fBVerbnm\fP. It contains all arguments to the +\fBtroff\fP-command \fB.nm\fP, normally '1'. +.T2 16 +Indent the verbose text with five 'n':s. This is controlled by the +number-variable \fBVerbin\fP (in units). +.in +.TP +.B VERBOFF +End verbatim output. +.TP +.B "VL text-indent [mark-indent [1]]" +Variable-item list has no fixed mark, it assumes that +every \fBLI\fP have a mark instead. +\fIText-indent\fP sets the indent to the text, and \fImark-indent\fP +the distance from the current indent to the mark. +A third argument will prohibit printing of a blank line before each +item. +.TP +.B "VM [top [bottom]]" +Vertical margin. +.TP +.B "WA [writer-name [title]]" +Begins specification of the writer and writer's address. +Several names can be specified with empty \fBWA\fP/\fBWE\fP-pairs, but +only one address. +.TP +.B WE +Ends the address-specification after \fP.WA\fP. +.TP +.B "WC [format]" +Footnote and display width control. +.in +.5i +.T2 N +Set default mode, \fB-WF\fP, \fB-FF\fP, \fB-WD\fP and \fBFB\fP. +.T2 WF +Wide footnotes, wide also in two-column mode. +.T2 -WF +Normal footnote width, follow column mode. +.T2 FF +All footnotes gets the same width as the first footnote encountered. +.T2 -FF +Normal footnotes, width follows \fBWF\fP and \fB-WF\fP. +.T2 WD +Wide displays, wide also in two-column mode. +.T2 -WD +Normal display width, follow column mode. +.T2 FB +Floating displays generates a line break when printed on the current page. +.T2 -FB +Floating displays does not generate line break. +.in +.sp 3 +.LP +.\"######################################################################## +.LP +.B "Strings used in m@TMAC_M_PREFIX@m:" +.TP +.B App +A string containing the word "APPENDIX". +.TP +.B Apptxt +.TP +The current appendix text. +.B "EM" +Em dash string +.TP +.B H1txt +Will be updated by \fB.H\fP and \fB.HU\fP to the current heading text. +Also updated in table of contents & friends. +.TP +.B HF +Fontlist for headings, normally "2 2 2 2 2 2 2". +Nonnumeric fontnames may also be used. +.TP +.B HP +Pointsize list for headings. Normally "0 0 0 0 0 0 0" which is the same as +"10 10 10 10 10 10 10". +.TP +.B Index +.TP +Contains \fIINDEX\fP. +.B Indcmd +.TP +Contains the index command, \fIsort\ -t\et\fP. +.B Lifg +String containing \fIFigure\fP. +.TP +.B Litb +String containing \fITABLE\fP. +.TP +.B Liex +String containing \fIExhibit\fP. +.TP +.B Liec +String containing \fIEquation\fP. +.TP +.B Licon +String containing \fICONTENTS\fP. +.TP +.B Lf +Contains "LIST OF FIGURES". +.TP +.B Lt +Contains "LIST OF TABLES". +.TP +.B Lx +Contains "LIST OF EXHIBITS". +.TP +.B Le +Contains "LIST OF EQUATIONS". +.TP +.B Letfc +Contains "Yours very truly,", used in \fB.FC\fP. +.TP +.B Letapp +Contains "APPROVED:", used in \fB.AV\fP. +.TP +.B Letdate +Contains "Date", used in \fB.AV\fP. +.TP +.B LetCN +Contains "CONFIDENTIAL", used in \fB.LO CN\fP. +.TP +.B LetSA +Contains "To Whom It May Concern:", used in \fB.LO SA\fP. +.TP +.B LetAT +Contains "ATTENTION:", used in \fB.LO AT\fP. +.TP +.B LetSJ +Contains "SUBJECT:", used in \fB.LO SJ\fP. +.TP +.B LetRN +Contains "In reference to:", used in \fB.LO RN\fP. +.TP +.B Letns +is an array containing the different strings used in \fB.NS\fP. +It is really a number of stringvariables prefixed with \fBLetns!\fP. +If the argument doesn't exist, it will be included +between \fB()\fP with \fBLetns!copy\fP as prefix and \fBLetns!to\fP as suffix. +Observe the space after \fBcopy\fP and before \fBto\fP. +.nf +.ta 1.5i +\fBName Value\fP +Letns!0 Copy to +Letns!1 Copy (with att.) to +Letns!2 Copy (without att.) to +Letns!3 Att. +Letns!4 Atts. +Letns!5 Enc. +Letns!6 Encs. +Letns!7 Under separate cover +Letns!8 Letter to +Letns!9 Memorandum to +Letns!10 Copy (with atts.) to +Letns!11 Copy (without atts.) to +Letns!12 Abstract Only to +Letns!13 Complete Memorandum to +Letns!14 CC +Letns!copy Copy " +Letns!to " to +.fi +.TP +.B Letnsdef +Defines the standard-notation used when no argument is given +to \fB.NS\fP. Default is \fB0\fP. +.TP +.B "MO1 - MO12" +Strings containing \fIJanuary\fP thru \fIDecember\fP. +.TP +.B Qrf +String containing "See chapter \e\e*[Qrfh], page \e\en[Qrfp].". +.TP +.B Rp +Contains "REFERENCES". +.TP +.B Tcst +Contains current status of table of contents and list of XXXX. +Empty outside \fB.TC\fP. +Useful in user-defined macros like \fB.TP\fP. +.nf +.ta 1.5i +\fBValue Meaning\fP +co Table of contents +fg List of figures +tb List of tables +ec List of equations +ex List of exhibits +ap Appendix +.fi +.ta +.TP +.B Tm +Contains \e(tm, trade mark. +.TP +.B Verbnm +Argument to \fB.nm\fP in \fB.VERBON\fP, default: \fB1\fP. +.\"----------------------------------- +.LP +.B "Number variables used in m@TMAC_M_PREFIX@m:" +.TP +.B Aph +Print an appendix-page for every new appendix +if this numbervariable is non-zero. +No output will occur if \fBAph\fP is zero, but there will always +be an appendix-entry in the 'List of contents'. +.TP +.B Cl +Contents level [0:7], contents saved if heading level <= Cl, default 2. +.TP +.B Cp +Eject page between LIST OF XXXX if Cp == 0, default 0. +.TP +.B D +Debugflag, values >0 produces varying degree of debug. A value of 1 +gives information about the progress of formatting, default 0. +.TP +.B De +Eject after floating display is output [0:1], default 0. +.TP +.B Dsp +Controls the space output before and after static displays +if defined. Otherwise is the value of Lsp used. +.TP +.B Df +Floating keep output [0:5], default 5. +.TP +.B Ds +\fBLsp\fP space before and after display if == 1 [0:1], default 1. +.TP +.B Ej +Eject page, default 0. +.TP +.B Eq +Equation lable adjust 0=left, 1=right. Default 0. +.TP +.B Fs +Footnote spacing, default 1. +.TP +.B "H1-H7" +Heading counters +.TP +.B H1dot +Append a dot after the level one heading number if > 0. Default is 1. +.TP +.B H1h +.TP +Copy of number register \fBH1\fP, but it is incremented +just before the page break. Useful in user defined header macros. +.B Hb +Heading break level [0:7], default 2. +.TP +.B Hc +Heading centering level, [0:7]. Default 0. +.TP +.B Hi +Heading temporary indent [0:2], default 1. +.br +0\ ->\ 0 indent, left margin +.br +1\ ->\ indent to right , like .P 1 +.br +2\ ->\ indent to line up with text part of preceding heading +.TP +.B Hps +Numbervariable with the heading pre-space level. If the heading-level +is less than or equal to \fBHps\fP, then two lines will precede the +section heading instead of one. Default is first level only. +The real amount of lines is controlled by the variables \fBHps1\fP and +\fBHps2\fP. +.TP +.B Hps1 +This is the number of lines preceding \fB.H\fP when the heading-level +is greater than \fBHps\fP. Value is in units, normally 0.5. +.TP +.B Hps2 +This is the number of lines preceding \fB.H\fP when the heading-level +is less than or equal to \fBHps\fP. Value is in units, normally 1. +.TP +.B Hs +Heading space level [0:7], default 2. +.TP +.B Hss +This is the number of lines that follows \fB.H\fP when the heading-level +is less than or equal to \fBHs\fP. Value is in units, normally 1. +.TP +.B Ht +Heading numbering type, default 0. +0 -> multiple (1.1.1 ...) +.br +1 -> single +.TP +.B Hu +Unnumbered heading level, default 2. +.TP +.B Hy +Hyphenation in body, default 1. +.br +0\ ->\ no hyphenation +.br +1\ ->\ hyphenation 14 on +.TP +.B Iso +Set this variable to 1 on the command line to get ISO-formatted date string. +(\fB-rIso=1\fP) +Useless inside a document. +.TP +.B Letwam +Max lines in return-address, used in \fB.WA\fP/\fB.WE\fP. Default 14. +.TP +.B "Lf, Lt, Lx, Le" +Enables (1) or disables (0) the printing of List of figures, +List of tables, List of exhibits and List of equations. +Default: Lf=1, Lt=1, Lx=1, Le=0. +.TP +.B Li +List indent, used by .AL, default 6. +.TP +.B Limsp +Flag for space between prefix and mark in automatic lists (.AL). +.br +0\ ==\ no space +.br +1\ ==\ space +.TP +.B Ls +List space, if current listlevel > Ls then no spacing will occur around lists. +Default 99. +.TP +.B Lsp +The size of an empty line. Normally 0.5v, but it is 1v +if \fBn\fP is set (\fB.nroff\fP). +.TP +.B N +Numbering style [0:5], default 0. +.br +0\ ==\ (default) normal header for all pages. +.br +1\ ==\ header replaces footer on first page, header is empty. +.br +2\ ==\ page header is removed on the first page. +.br +3\ ==\ "section-page" numbering enabled. +.br +4\ ==\ page header is removed on the first page. +.br +5\ ==\ "section-page" and "section-figure" numbering enabled. +See also the number-register Sectf and Sectp. +.TP +.B Np +Numbered paragraphs, default 0. +.br +0\ ==\ not numbered +.br +1\ ==\ numbered in first level headings. +.TP +.B Of +Format of figure,table,exhibit,equation titles, default 0. +.br +0\ =\ ". " +.br +1\ =\ " - " +.TP +.B P +Current page-number, normally the same as % unless "section-page" numbering +is enabled. +.TP +.B Pi +paragraph indent, default 5. +.TP +.B Pgps +Controls whether header and footer pointsize should follow the current +setting or just change when the header and footer is defined. +.in +.5i +.ti -.5i +.T2 Value +Description +.T2 0 +Pointsize will only change to the current setting when \fB.PH\fP, \fB.PF\fP, +\&\fB.OH\fP, \fP.EH\fP, \fB.OF\fP or \fB.OE\fP is executed. +.T2 1 +Pointsize will change after every \fB.S\fP. This is the default. +.in +.TP +.B Ps +paragraph spacing, default 1. +.TP +.B Pt +Paragraph type, default 0. +.br +0\ ==\ left-justified +.br +1\ ==\ indented .P +.br +2\ ==\ indented .P except after .H, .DE or .LE. +.TP +.B Sectf +Flag controlling "section-figures". A non-zero value enables this. +See also register N. +.TP +.B Sectp +Flag controlling "section-page-numbers". A non-zero value enables this. +See also register N. +.TP +.B Si +Display indent, default 5. +.TP +.B Verbin +Indent for \fB.VERBON\fP, default 5n. +.TP +.B .mgm +Always 1. +.LP +.SH INTERNALS +The letter macros is using different submacros depending on +the letter type. The name of the submacro has the letter type +as suffix. It is therefore possible to define other letter types, either +in the national macro-file, or as local additions. +\&\fB.LT\fP will set the number variables \fBPt\fP and \fBPi\fP to 0 and 5. +The following strings and macros must be defined for a new letter type: +.TP +\fBlet@init_\fP\fItype\fP +This macro is called directly by \fB.LT\fP. It is supposed to initialize +variables and other stuff. +.TP +\fBlet@head_\fP\fItype\fP +This macro prints the letter head, and is called instead of the +normal page header. It is supposed to remove the alias \fBlet@header\fP, +otherwise it will be called for all pages. +.TP +\fBlet@sg_\fP\fItype\ name\ title\ n\ flag\ [arg1\ [arg2\ [...]]]\fP +\&\fB.SG\fP is calling this macro only for letters, memorandums has +its own processing. \fIname\fP and \fItitle\fP is specified +thru \fB.WA\fP/\fB.WB\fP. \fIn\fP is the counter, 1-max, and +\fIflag\fP is true for the last name. Any other argument to \fB.SG\fP +is appended. +.TP +\fBlet@fc_\fP\fItype\ closing\fP +This macro is called by \fB.FC\fP, and has the +formal closing as argument. +.LP +\&\fB.LO\fP is implemented as a general option-macro. \fB.LO\fP demands +that a string named \fBLet\fP\fItype\fP is defined, where \fItype\fP +is the letter type. +\&\fB.LO\fP will then assign the argument to the string +variable \fBlet*lo-\fP\fItype\fP. +.LP +.\".SH BUGS +.SH AUTHOR +Jörgen Hägg, Lund, Sweden <jh@axis.se>. +.SH FILES +.TP +.B @MACRODIR@/tmac.@TMAC_M_PREFIX@m +.TP +.B @TMAC_MDIR@/*.cov +.TP +.B @TMAC_MDIR@/*.MT +.TP +.B @TMAC_MDIR@/locale +.SH "SEE ALSO" +.BR groff (@MAN1EXT@), +.BR @g@troff (@MAN1EXT@), +.BR @g@tbl (@MAN1EXT@), +.BR @g@pic (@MAN1EXT@), +.BR @g@eqn (@MAN1EXT@) +.br +.BR mm (@MAN7EXT@) +.BR m@TMAC_M_PREFIX@mse (@MAN7EXT@) diff --git a/contrib/groff/contrib/mm/groff_mmse.man b/contrib/groff/contrib/mm/groff_mmse.man new file mode 100644 index 000000000000..1e1f4a0d7408 --- /dev/null +++ b/contrib/groff/contrib/mm/groff_mmse.man @@ -0,0 +1,82 @@ +.\" +.\" $Id: groff_mmse.man,v 2.0 2000/09/14 03:40:24 jhaegg Exp $ +.\" Skrivet av Jörgen Hägg, Lund, Sverige +.\" +.TH GROFF_MMSE @MAN7EXT@ "@MDATE@" "Groff Version @VERSION@" +.SH NAMN +groff_mmse \- svenska mm makro för groff +.SH SYNTAX +.B groff +.B \-m@TMAC_M_PREFIX@mse +[ +.IR flaggor .\|.\|. +] +[ +.IR filer .\|.\|. +] +.SH BESKRIVNING +\fBm@TMAC_M_PREFIX@mse\fP är en svensk variant av \fBm@TMAC_M_PREFIX@m\fP. Alla texter +är översatta. En A4 sida får text som är 13 cm bred, 3.5 cm indragning +samt är 28.5 cm hög. +Det finns stöd för brevuppställning enligt svensk standard +för vänster och högerjusterad text. +.LP +\fBCOVER\fP kan använda \fIse_ms\fP som argument. Detta ger ett +svenskt försättsblad. +Se \fBgroff_mm(@MAN7EXT@)\fP för övriga detaljer. +.SH BREV +Tillgängliga brevtyper: +.TP +.B ".LT SVV" +Vänsterställd löptext med adressat i position T0 (vänsterställt). +.TP +.B ".LT SVH" +Högerställd löptext med adressat i position T4 (passar +fönsterkuvert). +.LP +Följande extra LO-variabler används. +.TP +.B ".LO DNAMN\fI namn\fP" +Anger dokumentets namn. +.TP +.br +.B ".LO MDAT\fI datum\fP" +Mottagarens datum, anges under \fBErt datum:\fP (\fBLetMDAT\fP). +.TP +.br +.B ".LO BIL\fI sträng\fP" +Anger bilaga, nummer eller sträng med \fBBilaga\fP (\fBLetBIL\fP) +som prefix. +.TP +.br +.B ".LO KOMP\fI text\fP" +Anger kompletteringsuppgift. +.TP +.br +.B ".LO DBET\fI beteckning\fP" +Anger dokumentbeteckning eller dokumentnummer. +.TP +.br +.B ".LO BET\fI beteckning\fP" +Anger beteckning (ärendebeteckning i form av diarienummer eller liknande). +.TP +.br +.B ".LO SIDOR\fI antal\fP" +Anger totala antalet sidor och skrivs ut efter sidnumret inom +parenteser. +.LP +Om makrot \fB.TP\fP är definierat anropas det efter utskrift av brevhuvudet. +Där lägger man lämpligen in postadress och annat som brevfot. +.SH "SKRIVET AV" +Jörgen Hägg, Lund, Sweden <Jorgen.Hagg@axis.se> +.SH FILER +.B @MACRODIR@/tmac.@TMAC_M_PREFIX@mse +.B @TMAC_MDIR@/se_*.cov +.SH "SE OCKSÅ" +.BR groff (@MAN1EXT@), +.BR @g@troff (@MAN1EXT@), +.BR @g@tbl (@MAN1EXT@), +.BR @g@pic (@MAN1EXT@), +.BR @g@eqn (@MAN1EXT@) +.br +.BR m@TMAC_M_PREFIX@m (@MAN7EXT@) diff --git a/contrib/groff/contrib/mm/m.tmac b/contrib/groff/contrib/mm/m.tmac new file mode 100644 index 000000000000..af60f769359e --- /dev/null +++ b/contrib/groff/contrib/mm/m.tmac @@ -0,0 +1,3477 @@ +.\" +.de @revision +.ds RE \\$2 +.. +.\" +.\" $Id: m.tmac,v 2.3 2001/03/05 09:56:29 jhaegg Exp $ +.@revision $Revision: 2.3 $ +.ig + +Copyright (C) 1991-2000 Free Software Foundation, Inc. +mgm is written by Jörgen Hägg <jh@axis.com> + +mgm is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +mgm is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with groff; see the file COPYING. If not, write to the Free Software +Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + +Please send bugreports with examples to jh@axis.com. + +Naming convention stolen from mgs. +Local names module*name +Extern names module@name +Env.var environ:name +Index array!index +.. +.if !\n(.g .ab These mm macros require groff. +.if \n(.C .ab The groff mm macros do not work in compatibility mode. +.warn +.\" ######## init ####### +.\" Contents level [0:7], contents saved if heading level <= Cl +.nr Cl 2 +.\" Eject page between LIST OF XXXX if Cp == 0 +.nr Cp 0 +.\" Debugflag +.if !r D .nr D 0 +.\" Eject after floating display is output [0:1] +.nr De 0 +.\" Floating keep output [0;5] +.nr Df 5 +.\" space before and after display if == 1 [0:1] +.nr Ds 1 +.\" Eject page +.nr Ej 0 +.\" Equation label adjust 0=left, 1=right +.nr Eq 0 +.\" Em dash string +.ie n .ds EM " -- +.el .ds EM \(em +.\" Footnote spacing +.nr Fs 1 +.\" H1-H7 heading counters +.nr H1 0 1 +.nr H2 0 1 +.nr H3 0 1 +.nr H4 0 1 +.nr H5 0 1 +.nr H6 0 1 +.nr H7 0 1 +.\" Heading break level [0:7] +.nr Hb 2 +.\" heading centering level, [0:7] +.nr Hc 0 +.\" header format +.ds HF 2 2 2 2 2 2 2 +.\" heading temp. indent [0:2] +.\" 0 -> 0 indent, left margin +.\" 1 -> indent to right , like .P 1 +.\" 2 -> indent to line up with text part of preceding heading +.nr Hi 1 +.\" header pointsize +.ds HP 0 0 0 0 0 0 0 +.\" heading space level [0:7] +.nr Hs 2 +.\" heading numbering type +.\" 0 -> multiple (1.1.1 ...) +.\" 1 -> single +.nr Ht 0 +.\" Unnumbered heading level +.nr Hu 2 +.\" hyphenation in body +.\" 0 -> no hyphenation +.\" 1 -> hyphenation 14 on +.nr Hy 0 +.\" text for toc, selfexplanatory. Look in the new variable section +.ds Lf LIST OF FIGURES +.nr Lf 1 +.ds Lt LIST OF TABLES +.nr Lt 1 +.ds Lx LIST OF EXHIBITS +.nr Lx 1 +.ds Le LIST OF EQUATIONS +.nr Le 0 +.\" List indent, used by .AL +.nr Li 6 +.\" List space, if listlevel > Ls then no spacing will occur around lists. +.nr Ls 99 +.\" Numbering style [0:5] +.if !r N .nr N 0 +.\" numbered paragraphs +.\" 0 == not numbered +.\" 1 == numbered in first level headings. +.nr Np 0 +.\" Format of figure,table,exhibit,equation titles. +.\" 0= ". ", 1=" - " +.nr Of 0 +.\" Table of contents page numbering style +.nr Oc 0 +.\" Page-number, normally same as %. +.nr P 0 +.\" paragraph indent +.nr Pi 5 +.\" paragraph spacing +.nr Ps 1 +.\" paragraph type +.\" 0 == left-justified +.\" 1 == indented .P +.\" 2 == indented .P except after .H, .DE or .LE. +.nr Pt 0 +.\" Reference title +.ds Rp REFERENCES +.\" Display indent +.nr Si 5 +.\" +.\" Current state of TOC, empty outside TC, inside +.\" it will be set to co,fg,tb,ec,ex or ap. +.ds Tcst +.\" +.ds Tm \(tm +.\" +.\"--------------------------------------------- +.\" Internal global variables +.\" +.\" This is for cover macro .MT +.\" .ds @language +.\" +.nr @copy_type 0 +.if r C .nr @copy_type \n[C] +.\" >0 if Subject/Date/From should be bold, roman otherwise +.ie n .ds @sdf_font R +.el .ds @sdf_font B +.if \n[@copy_type]=4 \{\ +. ls 2 +. nr Pi 10 +. nr Pt 1 +.\} +.\" +.\" +.if r E \{\ +. ie \n[E] .ds @sdf_font B +. el .ds @sdf_font R +.\} +.\" +.\" Current pointsize and vertical space, always in points. +.if !r S .nr S 10 +.ps \n[S] +.vs \n[S]+2 +.\" +.nr @ps \n[.ps] +.nr @vs \n[.v] +.if \n[D]>1 .tm @ps=\n[@ps], @vs=\n[@vs] +.if \n[D]>3 .tm INIT: l:\n[.l] p:\n[.p] o:\n[.o] +.\" +.\" Page length +.if r L \{\ +. ie n .pl \n[L]u +. el .pl \n[L]u +.\} +.nr @pl \n[.p] +.\" +.\" page width +.ie r W \{\ +. ie n .ll \n[W]u +. el .ll \n[W]u +.\} +.el .ll 6i +.nr @ll \n[.l] +.nr @cur-ll \n[@ll] +.lt \n[@ll]u +.\" +.\" page offset +.ie r O .po \n[O]u +.el \{\ +. ie n .po .75i +. el .po .963i +.\} +.\" +.nr @po \n[.o] +.\" +.\" non-zero if escape mechanism is turned off. Used by VERBON/OFF +.nr @verbose-flag 0 +.\"--------------------------------------------- +.\" New variables +.\" +.\" Appendix name +.ds App APPENDIX +.\" print appendixheader, 0 == don't +.nr Aph 1 +.\" +.\" Current appendix text +.ds Apptext +.\" Controls the space before and after static displays if defined. +.\" Lsp is used otherwise +.\" .nr Dsp 1v +.\" +.\" Add a dot after level one heading number if >0 +.nr H1dot 1 +.\" +.\" header prespace level. If level <= Hps, then two lines will be printed +.\" before the header instead of one. +.nr Hps 1 +.\" +.\" These variables controls the number of lines preceding .H. +.\" Hps1 is the number of lines when level > Hps +.nr Hps1 0.5 +.if n .nr Hps1 1 +.\" +.\" Hps2 is the number of lines when level <= Hps +.nr Hps2 1 +.if n .nr Hps2 2 +.\" +.\" Hss is the number of lines (Lsp) after the header. +.nr Hss 1 +.\" +.\" H1txt will be updated by .H and .HU, containing the heading text. +.\" Will also be updated in table of contents & friends +.\" +.ds H1txt +.\" +.\" header text for the index +.ds Index INDEX +.\" command to sort the index +.ds Indcmd sort +.\" +.\" flag for mkindex +.if !r Idxf .nr Idxf 0 +.\" Change these in the national configuration file +.ds Lifg Figure +.ds Litb TABLE +.ds Liex Exhibit +.ds Liec Equation +.ds Licon CONTENTS +.\" Flag for space between mark and prefix 1==space, 0==no space +.\" Can also be controlled by using '.LI mark 2' +.nr Limsp 1 +.\" +.\" Lsp controls the height of an empty line. Normally 0.5v +.\" Normally used for nroff compatibility. +.nr Lsp 0.5v +.if n .nr Lsp 1v +.ds MO1 January +.ds MO2 February +.ds MO3 March +.ds MO4 April +.ds MO5 May +.ds MO6 June +.ds MO7 July +.ds MO8 August +.ds MO9 September +.ds MO10 October +.ds MO11 November +.ds MO12 December +.\" for GETR +.ds Qrf See chapter \\*[Qrfh], page \\*[Qrfp]. +.\" +.\" header- and footer-size will only change to the current +.\" if Pgps is > 0. +.nr Pgps 1 +.\" +.\" section-page if Sectp > 0 +.nr Sectp 0 +.if (\n[N]=3):(\n[N]=5) \{\ +. nr Sectp 1 +. nr Ej 1 +.\} +.\" section-figure if Sectf > 0 +.nr Sectf 0 +.if \n[N]=5 .nr Sectf 1 +.\" +.\" argument to .nm in .VERBON. +.ds Verbnm "1 +.\" indent for VERBON +.nr Verbin 5n +.\" +.\" Letter section +.\" Formal closing (.FC) +.ds Letfc Yours very truly, +.\" +.\" Approval line +.ds Letapp APPROVED: +.\" Approval date-string +.ds Letdate Date +.\" +.ds LetCN CONFIDENTIAL\" Confidential default +.ds LetSA To Whom It May Concern:\" Salutation default +.ds LetAT ATTENTION:\" Attention string +.ds LetSJ SUBJECT:\" Subject string +.ds LetRN In reference to:\" Reference string +.\" +.\" Copy to (.NS) +.ds Letnsdef 0 +.ds Letns!copy Copy \" space! +.ds Letns!to " to +.ds Letns!0 Copy to +.ds Letns!1 Copy (with att.) to +.ds Letns!2 Copy (without att.) to +.ds Letns!3 Att. +.ds Letns!4 Atts. +.ds Letns!5 Enc. +.ds Letns!6 Encs. +.ds Letns!7 Under separate cover +.ds Letns!8 Letter to +.ds Letns!9 Memorandum to +.ds Letns!10 Copy (with atts.) to +.ds Letns!11 Copy (without atts.) to +.ds Letns!12 Abstract Only to +.ds Letns!13 Complete Memorandum to +.ds Letns!14 CC: +.\" +.\" Text printed below the footer. Controlled by @copy_type (C). +.ds Pg_type!0 +.ds Pg_type!1 OFFICIAL FILE COPY +.ds Pg_type!2 DATE FILE COPY +.ds Pg_type!3 D\ R\ A\ F\ T +.ds Pg_type!4 D\ R\ A\ F\ T +.\" Max lines in return address +.nr Letwam 14 +.\"-------------------------- +.\" test for mgm macro. This can be used if the text must test +.\" what macros is used. +.nr .mgm 1 +.\" +.\" Due to security problems with groff I had to rewrite +.\" the reference system. It's not as elegant as before, you +.\" have to run groff with '-z -rRef=1' and put stderr into the filename +.\" for .INITR +.\" +.\" Output references to stderr if non-zero +.ie !r Ref \{\ +. nr Ref 0 +.\} +.el .warn 0 +.\" +.\"--------------------------------------------- +.\" set local variables. +.ie d @language .mso mm/\*[@language]_locale +.el .mso mm/locale +.\"--------------------------------------------- +.if \n[D] .tm Groff mm, version \*[RE]. +.\" ####### module init ###### +.\" reset all things +.de init@reset +.ie \\n[misc@adjust] 'ad +.el 'na +.ie \\n[Hy] 'hy 14 +.el 'nh +'in 0 +'ti 0 +.ps \\n[@ps]u +.vs \\n[@vs]u +.. +.de @warning +'tm WARNING:(\\n[.F]) input line \\n[.c]:\\$* +.if \\n[D] .backtrace +.. +.de @error +'tm ****************** +'tm ERROR:(\\n[.F]) input line \\n[.c]:\\$* +.if \\n[D] .backtrace +'tm ****************** +.ab "Input aborted, syntax error" +.. +.de misc@toupper +.tr aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ +.br +\\$1 +.tr aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz +.br +.. +.\" ####### module debug ################################# +.de debug +'tm \\$1:\\n[.F]:\\n[c.] ll=\\n[.l] vs=\\n[.v] ps=\\n[.s],\\n[.ps] \ +in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%] +.. +.de debug-all +.nr debug*n 1n +.nr debug*m 1m +'tm \\$1:\\n[.F]:\\n[c.] ll=\\n[.l] vs=\\n[.v] ps=\\n[.s] in=\\n[.i]\ + ad=\\n[.j] fi=\\n[.u] pl=\\n[.p] page=\\n[%] .o=\\n[.o] +'tm _______ .d=\\n[.d] .f=\\n[.f] .h=\\n[.h] .k=\\n[.k] .n=\\n[.n]\ + .p=\\n[.p] .t=\\n[.t] .z=\\n[.z] nl=\\n[nl] dn=\\n[dn] n=\\n[debug*n] +.. +.\" ####### module par ################################# +.nr par@ind-flag 1 \" indent on following P if Pt=2 +.nr hd*last-pos -1 +.nr hd*last-hpos -1 +.nr par*number 0 1 +.af par*number 01 +.nr par*number2 0 1 +.af par*number2 01 +.nr par*num-count 0 1 +.af par*num-count 01 +.\" reset numbered paragraphs, arg1 = headerlevel +.de par@reset-num +.if \\$1<3 .nr par*num-count 0 +.if (\\$1=1)&(\\n[Np]=1) .nr par*number 0 +.. +.\"------------ +.\" paragraph +.de P +.\" skip P if previous heading +.ie !((\\n[nl]=\\n[hd*last-pos]):(\\n[nl]=(\\n[hd*last-pos]-.5v))) \{\ +. if \\n[D]>2 .tm Paragraph nl=\\n[nl] +. par@doit \\$* +. if \\n[Np] \\n[H1].\\n+[par*number]\ \ \c +.\} +.el .if !(\\n[hd*last-hpos]=\\n[.k]) \{\ +. if \\n[D]>2 .tm Paragraph nl=\\n[nl] +. par@doit \\$* +. if \\n[Np] \\n[H1].\\n+[par*number]\ \ \c +.\} +.nr par@ind-flag 1 +.. +.\"------------ +.de nP +.\" skip P if previous heading +.ie !((\\n[nl]=\\n[hd*last-pos]):(\\n[nl]=(\\n[hd*last-pos]-.5v))) \{\ +. if \\n[D]>2 .tm Paragraph nl=\\n[nl] +. par@doit \\$* +\\n[H2].\\n+[par*number2]\ \ \c +.\} +.el .if !(\\n[hd*last-hpos]=\\n[.k]) \{\ +. if \\n[D]>2 .tm Paragraph nl=\\n[nl] +. par@doit \\$* +\\n[H2].\\n+[par*number2]\ \ \c +.\} +.nr par@ind-flag 1 +.. +.\"------------ +.de par@doit +.SP (u;\\n[Ps]*\\n[Lsp]) +.ie \\n[.$] \{\ +. if \\$1=1 .ti +\\n[Pi]n +.\} +.el \{\ +. if \\n[Pt]=1 .ti +\\n[Pi]n +. if (\\n[Pt]=2)&\\n[par@ind-flag] .ti +\\n[Pi]n +.\} +.. +.\" ####### module line ####################################### +.de SP +.br +.if !r line*lp\\n[.z] .nr line*lp\\n[.z] 0 +.if !r line*ac\\n[.z] .nr line*ac\\n[.z] 0 +.ie \\n[.$] .nr line*temp (v;\\$1) +.el .nr line*temp 1v +.\" +.ie \\n[line*lp\\n[.z]]=\\n[.d] \{\ +. \" go here if no output since the last .SP +. nr line*output \\n[line*temp]-\\n[line*ac\\n[.z]] +. if \\n[line*output]<0 .nr line*output 0 +. nr line*ac\\n[.z] +\\n[line*output] +.\} +.el \{\ +. nr line*ac\\n[.z] \\n[line*temp] +. nr line*output \\n[line*temp] +. \" no extra space in the beginning of a page +. if (\\n[.d]<0):(\\n[pg*head-mark]=\\n[.d]) .nr line*output 0 +.\} +.if \\n[line*output] .sp \\n[line*output]u +.nr line*lp\\n[.z] \\n[.d] +.. +.\" ######## module misc ############### +.nr misc@adjust 14 +.de SA +.if \\n[.$] \{\ +. if \\$1-1 .@error "SA: bad arg: \\$1" +. nr misc@adjust 0\\$1 +.\} +.ie \\n[misc@adjust] 'ad +.el 'na +.. +.\"------------- +.\" switch environment, keep all important settings. +.de misc@ev-keep +.nr misc*ll \\n[.l] +.ev \\$1 +.ll \\n[misc*ll]u +.lt \\n[misc*ll]u +.. +.\"------------- +.\" .misc@push stackname value +.de misc@push +.ie d misc*st-\\$1 .ds misc*st-\\$1 \\$2 \\*[misc*st-\\$1] +.el .ds misc*st-\\$1 \\$2 +.. +.\"------------- +.\" .misc@pop stackname +.\" value returned in the string misc*pop +.de misc@pop +.misc@pop-set misc*st-\\$1 \\*[misc*st-\\$1] +.. +.\"------------- +.de misc@pop-set +.ds misc*st-name \\$1 +.shift +.if \\n[.$]<1 .@error "stack \\*[misc*st-name] empty" +.ds misc*pop \\$1 +.shift +.ds \\*[misc*st-name] \\$* +.. +.\"------------- +.\" .misc@pop-nr stackname varname +.de misc@pop-nr +.misc@pop \\$1 +.nr \\$2 \\*[misc*pop] +.. +.\"------------- +.\" .misc@pop-ds stackname varname +.de misc@pop-ds +.misc@pop \\$1 +.ds \\$2 \\*[misc*pop] +.. +.\"----------- +.\" reset tabs +.de TAB +.ta T 5n +.. +.\"------------- +.\" .PGFORM linelength [ pagelength [ pageoffset [1]]] +.de PGFORM +.\" Break here to avoid problems with new linesetting of the previous line. +.\" Hope this doesn't break anything else :-) +.\" Don't break if arg_4 is a '1'. +.if \\n[D]>2 .tm PGFORM: \\$* +.if ''\\$4' .br +.if \\n[D]>3 .tm PGFORM: IN l:\\n[.l] p:\\n[.p] o:\\n[.o] +.ie !''\\$1' \{\ +. ll \\$1 +. nr @ll \\n[.l] +. nr @cur-ll \\n[@ll] +. lt \\n[@ll]u +.\} +.el \{\ +. ll \\n[@ll]u +. lt \\n[@ll]u +.\} +.\" +.ie !''\\$2' \{\ +. pl \\$2 +. nr @pl \\n[.p] +.\} +.el .pl \\n[@pl]u +.\" +.ie !''\\$3' \{\ +. po \\$3 +. nr @po \\n[.o] +.\} +.el .po \\n[@po]u +.if \\n[D]>3 .tm PGFORM: OUT l:\\n[.l] p:\\n[.p] o:\\n[.o] +.if \\n[D]>2 .tm PGFORM: ll=\\n[@ll], pl=\\n[@pl], po=\\n[@po] +'in 0 +.pg@move-trap +.if \\n[D]>2 \{\ +. tm Traps: +. ptr +.\} +.. +.\"------------- +.\" .MOVE y [[x] linelength] +.\" move to line y, indent to x +.de MOVE +.if !\\n[.$] .@error "MOVE y [x]: no arguments" +.if \\n[nl]<0 \c +.\" move to Y-pos +.sp |(v;\\$1) +.\" calc linelength +.ie \\n[.$]>2 .nr pg*i (n;\\$3) +.el \{\ +. ie \\n[.$]>1 .nr pg*i (n;\\n[@ll]u-\\$2) +. el .nr pg*i \\n[@ll]u +.\} +.\" move to X-pos, if any +.if !''\\$2' .po \\$2 +.\" set linelength +.ll \\n[pg*i]u +.. +.\"------------- +.de SM +.if !\\n[.$] .@error "SM: no arguments" +.if \\n[.$]=1 \s-1\\$1\s0 +.if \\n[.$]=2 \s-1\\$1\s0\\$2 +.if \\n[.$]=3 \\$1\s-1\\$2\s0\\$3 +.. +.\"------------- +.nr misc*S-ps \n[@ps] +.nr misc*S-vs \n[@vs] +.nr misc*S-ps1 \n[@ps] +.nr misc*S-vs1 \n[@vs] +.ds misc*a +.ds misc*b +.de S +.ie !\\n[.$] \{\ +. ds misc*a P +. ds misc*b P +.\} +.el \{\ +. ie \\n[.$]=1 .ds misc*b D +. el \{\ +. ie \w@\\$2@=0 .ds misc*b C +. el .ds misc*b \\$2 +. \} +. ie \w@\\$1@=0 .ds misc*a C +. el .ds misc*a \\$1 +.\} +.\" +.\" set point size +.if !'\\*[misc*a]'C' \{\ +. ie '\\*[misc*a]'P' .ps \\n[misc*S-ps]u +. el \{\ +. ie '\\*[misc*a]'D' .ps \\n[S] +. el .ps \\*[misc*a] +. if \\n[D]>2 .tm S: .ps \\*[misc*a] +. \} +.\} +.\" +.\" set vertical spacing +.if !'\\*[misc*b]'C' \{\ +. ie '\\*[misc*b]'P' .vs \\n[misc*S-vs]u +. el \{\ +. ie '\\*[misc*b]'D' .vs \\n[.ps]u+2p +. el .vs \\*[misc*b] +. if \\n[D]>2 .tm S: .vs \\*[misc*b] +. \} +.\} +.nr @ps \\n[.ps] +.nr @vs \\n[.v] +.\" +.if \\n[D]>1 .tm S(\\$*): ma:\\*[misc*a], mb:\\*[misc*b] => ps:\\n[@ps]u, vs:\\n[@vs]u +.nr misc*S-ps \\n[misc*S-ps1] +.nr misc*S-vs \\n[misc*S-vs1] +.nr misc*S-ps1 \\n[@ps] +.nr misc*S-vs1 \\n[@vs] +.pg@move-trap +.. +.\"------------ +.de HC +.ev 0 +.hc \\$1 +.ev +.ev 1 +.hc \\$1 +.ev +.ev 2 +.hc \\$1 +.ev +.. +.\"------------ +.de RD +.di misc*rd +'fl +.rd \\$1\t +.br +.di +.ie !''\\$3' \{\ +. di misc*rd2 +. ds \\$3 "\\*[misc*rd] +. br +. di +.\} +.if !''\\$2' .rn misc*rd \\$2 +.rm misc*rd misc*rd2 +.. +.\"------------ +.\" VERBON [flag [pointsize [font]]] +.\" flag +.\" bit function +.\" 0 escape on +.\" 1 add an empty line before verbose text +.\" 2 add an empty line after verbose text +.\" 3 numbered lines (controlled by the string Verbnm) +.\" 4 indent text by the numbervariable Verbin. +.de VERBON +.br +.nr misc*verb 0\\$1 +.if (0\\n[misc*verb]%4)/2 .SP \\n[Lsp]u +.misc@ev-keep misc*verb-ev +.nf +.if (0\\n[misc*verb]%16)/8 .nm \\*[Verbnm] +.ie !'\\$3'' .ft \\$3 +.el .ft CR +.ie 0\\$2 \{\ +. ss \\$2 +. ps \\$2 +. vs \\$2 +.\} +.el .ss 12 +.ta T 8u*\w@n@u +.if (0\\n[misc*verb]%32)/16 .in +\\n[Verbin]u +.if 0\\n[misc*verb]%2 \{\ +. eo +. nr @verbose-flag 1 \" tell pageheader to set ec/eo +.\} +.. +.de VERBOFF +.ec +.br +.if (0\\n[misc*verb]%8)/4 .SP \\n[Lsp]u +.if (0\\n[misc*verb]%16)/8 .nm +.if (0\\n[misc*verb]%32)/16 .in +.ev +.nr @verbose-flag 0 +.. +.\" ######## module pict ################# +.nr pict*width 0 +.nr pict*height 0 +.nr pict*mode 0 +.nr pict*ind 0 +.nr pict*id 0 1 +.\" I assume that the number variable pict*id is the same +.\" between two runs. +.de PIC +.br +.nr pict*ind 0 +.nr pict*box 0 +.while \\n[.$]>0 \{\ +. if '-B'\\$1' \{\ +. nr pict*box 1 +. shift +. continue +. \} +. if '-L'\\$1' \{\ +. nr pict*mode 0 +. shift +. continue +. \} +. if '-R'\\$1' \{\ +. nr pict*mode 1 +. shift +. continue +. \} +. if '-I'\\$1' \{\ +. nr pict*ind (m;\\$2) +. nr pict*mode 2 +. shift 2 +. continue +. \} +. if '-C'\\$1' \{\ +. nr pict*mode 3 +. shift +. continue +. \} +. ds pict*f \\$1 +. nr pict*id +1 +. shift +. if \\n[.$]>0 \{\ +. nr pict*width (i;\\$1) +. shift +. \} +. if \\n[.$]>0 \{\ +. nr pict*height (i;\\$1) +. shift +. \} +.\} +.if \\n[Ref]>0 \{\ +. tm .\\\\" PIC id \\n[pict*id] +. tm .\\\\" PIC file \\*[pict*f] +.\} +.if d pict*file!\\n[pict*id] \{\ +. ds pict*f \\*[pict*file!\\n[pict*id]] +. nr pict*llx \\n[pict*llx!\\n[pict*id]] +. nr pict*lly \\n[pict*lly!\\n[pict*id]] +. nr pict*urx \\n[pict*urx!\\n[pict*id]] +. nr pict*ury \\n[pict*ury!\\n[pict*id]] +. \" +. nr pict*w (p;\\n[pict*urx]-\\n[pict*llx]) +. if \\n[pict*w]<0 .nr pict*w 0-\\n[pict*w] +. nr pict*h (p;\\n[pict*ury]-\\n[pict*lly]) +. if \\n[pict*h]<0 .nr pict*h 0-\\n[pict*h] +. if \\n[pict*width]>0 \{\ +. nr pict*rs (u;1000*\\n[pict*width]/\\n[pict*w]) +. nr pict*w (u;\\n[pict*w]*\\n[pict*rs]/1000) +. nr pict*h (u;\\n[pict*h]*\\n[pict*rs]/1000) +. \} +. if \\n[pict*height]>0 \{\ +. nr pict*rs (u;1000*\\n[pict*height]/\\n[pict*h]) +. nr pict*h (u;\\n[pict*h]*\\n[pict*rs]/1000) +. \} +. if '0'\\n[pict*mode]' \{\ +. nr pict*in \\n[.i]u +. \} +. if '1'\\n[pict*mode]' \{\ +. nr pict*in (u;\\n[.l]-\\n[.i]-\\n[pict*w]) +. \} +. if '2'\\n[pict*mode]' \{\ +. nr pict*in \\n[pict*ind]u +. \} +. if '3'\\n[pict*mode]' \{\ +. nr pict*in (u;(\\n[.l]-\\n[.i]-\\n[pict*w])/2) +. \} +. ds pict*h " +. if \\n[pict*h]>0 .ds pict*h \\n[pict*h] +. \" +. ne \\n[pict*h]u +. \" +. \" these lines are copied and modified from tmac.pspic. +. \" Originally written by James Clark +. br +. ie \\n[pict*box]>0 \{\ +\h'\\n[pict*in]u'\ +\Z'\D'p 0 \\n[pict*h]u \\n[pict*w]u 0 0 -\\n[pict*h]u''\ +\v'\\n[pict*h]u'\X'ps: import \\*[pict*f] \ +\\n[pict*llx] \\n[pict*lly] \\n[pict*urx] \\n[pict*ury] \\n[pict*w] \\n[pict*h]' +.\} +. el \{\ +\h'\\n[pict*in]u'\ +\X'ps: invis'\ +\Z'\D'p 0 \\n[pict*h]u \\n[pict*w]u 0 0 -\\n[pict*h]u''\ +\X'ps: endinvis'\ +\v'\\n[pict*h]u'\X'ps: import \\*[pict*f] \ +\\n[pict*llx] \\n[pict*lly] \\n[pict*urx] \\n[pict*ury] \\n[pict*w] \\n[pict*h]' +. \} +. br +. sp \\n[pict*h]u +.\} +.. +.\" external picture +.de EPIC +.if \\n[.$]< 2 .@error "EPIC: Not enough arguments" +.nr pict*w \\$1 +.nr pict*h \\$2 +.ds pict*name "External picture +.if !''$3' .ds pict*name \\$3 +\& +.br +.ne \\n[pict*h]u +.sp \\n[pict*h]u +.nr pict*ind (u;(\\n[.l]-\\n[.i]-\\n[pict*w])/2) +.in +\\n[pict*ind]u +\D'l \\n[pict*w]u 0'\ +\D'l 0 -\\n[pict*h]u'\ +\D'l -\\n[pict*w]u 0'\ +\D'l 0 \\n[pict*h]u'\ +\v'-(u;\\n[pict*h]/2)'\ +\h'(u;(\\n[pict*w]-\w'\\*[pict*name]'/2))'\\*[pict*name] +.in +.. +.\" ######## module acc ################# +.\"----------- +.\" accents. These are copied from mgs, written by James Clark. +.de acc@over-def +.ds \\$1 \Z'\v'(u;\w'x'*0+\En[rst]-\En[.cht])'\ +\h'(u;-\En[skw]+(-\En[.w]-\w'\\$2'/2)+\En[.csk])'\\$2' +.. +.de acc@under-def +.ds \\$1 \Z'\v'\En[.cdp]u'\h'(u;-\En[.w]-\w'\\$2'/2)'\\$2' +.. +.acc@over-def ` \` +.acc@over-def ' \' +.acc@over-def ^ ^ +.acc@over-def ~ ~ +.acc@over-def : \(ad +.acc@over-def ; \(ad +.acc@under-def , \(ac +.\" ######## module uni ################# +.\" unimplemented macros +.de OK +'tm "OK: not implemented" +.. +.de PM +'tm "PM: not implemented" +.. +.\" ######## module hd ################# +.\" support for usermacro +.nr hd*h1-page 1 \" last page-number for level 1 header. +.nr hd*htype 0 +.ds hd*sect-pg +.ds hd*mark +.ds hd*suf-space +.nr hd*need 0 +.aln ;0 hd*htype +.als }0 hd*mark +.als }2 hd*suf-space +.aln ;3 hd*need +.\"------------- +.\" .hd@split varable index name val1 val2 ... +.de hd@split +.if \\$2>(\\n[.$]-3) .@error "\\$3 must have at least \\$2 values (\\*[\\$3]). +.nr hd*sp-tmp \\$2+3 +.ds \\$1 \\$[\\n[hd*sp-tmp]] +.. +.de HU +.H 0 "\\$1" +.. +.\"------------- +.de H +.if !r hd*cur-bline .nr hd*cur-bline \\n[nl] +.br +.df@print-float 2\" $$$ could be wrong... +.\" terminate all lists +.LC +.init@reset +.nr hd*level 0\\$1 +.nr hd*arg1 0\\$1 +.if !\\n[hd*level] .nr hd*level \\n[Hu] +.\" +.\" clear lower counters +.nr hd*i 1 1 +.while \\n+[hd*i]<8 .if \\n[hd*level]<\\n[hd*i] .nr H\\n[hd*i] 0 1 +.\" +.\" save last text for use in TP +.if \\n[hd*level]=1 .ds H1txt \\$2\\$3 +.\" +.\" This is a little fix to be able to get correct H1 heading number +.\" in page headers. Special attention was needed when other formats are used. +.ie !''\\g[H1]' \{\ +. ds hd*format \\g[H1] +. af H1 0 +. nr H1h \\n[H1] 1 +. af H1 \\*[hd*format] +.\} +.el .nr H1h \\n[H1] 1 +.if \\n[hd*level]=1 .nr H1h +1 +.\" +.\" Check if it's time for new page. Only if text has +.\" appeared before. +.if \\n[Ej]&(\\n[Ej]>=\\n[hd*level])&(\\n[nl]>\\n[hd*cur-bline]) .pg@next-page +.\" +.\" increment current counter +.nr H\\n[hd*level] +1 +.\" +.\" update pagenumber if section-page is used +.if (\\n[hd*level]=1)&(\\n[Sectp]>0) .hd@set-page 1 +.\" +.\" hd*mark is the text written to the left of the header. +.ds hd*mark \\n[H1]. +.\" +.if \\n[hd*level]>1 .as hd*mark \\n[H2] +.\" +.nr hd*i 2 1 +.while \\n+[hd*i]<8 .if \\n[hd*level]>(\\n[hd*i]-1) .as hd*mark .\\n[H\\n[hd*i]] +.if \\n[Ht] .ds hd*mark \\n[H\\n[hd*level]]. +.\" +.\" special case, no dot after level one heading if not H1dot true +.if (\\n[hd*level]=1)&(\\n[H1dot]=0) .ds hd*mark \\n[H1] +.\" +.as hd*mark \ \ \" add spaces between mark and heading +.if !\\n[hd*arg1] .ds hd*mark\" no mark for unnumbered +.\" +.if \\n[D]>1 .tm At header \\*[hd*mark] "\\$2" +.nr hd*htype 0 \" hd*htype = check break and space +. \" 0 = run-in, 1 = break only, 2 = space +.if \\n[hd*level]<=\\n[Hb] .nr hd*htype 1 +.if \\n[hd*level]<=\\n[Hs] .nr hd*htype 2 +. \" two spaces if hd*htype == 0 +.ie (\\n[hd*htype]=0)&(\w@\\$2@) .ds hd*suf-space " \" +.el .ds hd*suf-space +.nr hd*need 2v \" hd*need = header need space +.\"---------- user macro HX ------------ +.\" User exit macro to override numbering. +.\" May change hd*mark (}0), hd*suf-space (}2) and hd*need (;3) +.\" Can also change Hps1/2. +.if d HX .HX \\n[hd*level] \\n[hd*arg1] "\\$2\\$3" +.\"-------------------------------------- +.\" pre-space +.ie \\n[hd*level]<=\\n[Hps] .SP (u;\\n[Hps2]) +.el .SP (u;\\n[Hps1]) +.\" +.par@reset-num \\n[hd*level]\" reset numbered paragraph +.\" start diversion to measure size of header +.di hd*div +\\*[hd*mark]\\$2\\$3\\*[hd*suf-space] +.br +.di +.rm hd*div +.if \\n[hd*htype] .na \" no adjust if run-in +.if \\n[hd*htype]<2 .nr hd*need +\\n[Lsp]u \" add some extra space +.ne \\n[hd*need]u+\\n[dn]u+.5p-1v \" this is the needed space for a header +.\" +.\" size and font calculations +.hd@split hd*font \\n[hd*level] HF \\*[HF]\" get font for this level +.ft \\*[hd*font]\" set new font +.hd@split hd*new-ps \\n[hd*level] HP \\*[HP]\" get point size +.ie (\\*[hd*new-ps]=0):(\w@\\*[hd*new-ps]@=0) \{\ +. if \\n[hd*htype] \{\ +. if '\\*[hd*font]'3' \{\ +. ps -1 +. vs -1 +. \} +. if '\\*[hd*font]'B' \{\ +. ps -1 +. vs -1 +. \} +. \} +.\} +.el \{\ +. ps \\*[hd*new-ps] +. vs \\*[hd*new-ps]+2 +.\} +.\" +.\"---------- user macro HY ------------- +.\" user macro to reset indents +.if d HY .HY \\n[hd*level] \\n[hd*arg1] "\\$2\\$3" +.\"-------------------------------------- +.nr hd*mark-size \w@\\*[hd*mark]@ +.if (\\n[hd*level]<=\\n[Hc])&\\n[hd*htype] .ce\" center if level<=Hc +.\" +.\" finally, output the header +\\*[hd*mark]\&\c +.\" and the rest of the header +.ie \\n[hd*htype] \{\ +\\$2\\$3 +. br +.\} +.el \\$2\\$3\\*[hd*suf-space]\&\c +.ft 1 +.\" restore pointsize and vertical size. +.ps \\n[@ps]u +.vs \\n[@vs]u +.\" +.\" table of contents +.if (\\n[hd*level]<=\\n[Cl])&\w@\\$2@ .toc@entry \\n[hd*level] "\\$2" +.\" set adjust to previous value +.SA +.\" do break or space +.if \\n[hd*htype] .br +.if \\n[hd*htype]>1 .SP (u;\\n[Lsp]*\\n[Hss]) +.if \\n[hd*htype] \{\ +. \" indent if Hi=1 and Pt=1 +. if (\\n[Hi]=1)&(\\n[Pt]=1) .ti +\\n[Pi]n +. \" indent size of mark if Hi=2 +. if \\n[hd*htype]&(\\n[Hi]>1) .ti +\\n[hd*mark-size]u +.\} +.nr par@ind-flag 0 \" no indent on .P if Pt=2 +.\" +.\" check if it is time to reset footnotes +.if (\\n[hd*level]=1)&\\n[ft*clear-at-header] .nr ft*nr 0 1 +.\" +.\" check if it is time to reset indexes +.if (\\n[hd*level]=1)&\\n[Sectf] \{\ +. nr lix*fg-nr 0 1 +. nr lix*tb-nr 0 1 +. nr lix*ec-nr 0 1 +. nr lix*ex-nr 0 1 +.\} +.\"---------- user macro HZ ---------- +.if d HZ .HZ \\n[hd*level] \\n[hd*arg1] "\\$2\\$3" +.nr hd*last-pos \\n[nl] +.nr hd*last-hpos \\n[.k] +.nr par@ind-flag 0 +.. +.\"-------- +.de HM +.nr hd*i 0 1 +.while \\n+[hd*i]<8 .af H\\n[hd*i] \\$[\\n[hd*i]] 1 +.. +.\"---------------------- +.\" set page-nr, called from header +.\" +.de hd@set-page +.\" +.ie \\n[.$]>0 .nr P \\$1 +.el .nr P +1 +.\" Set section-page-string +.ds hd*sect-pg \\n[H1]-\\n[P] +.if \\n[Sectp]>1 .if '\\n[H1]'0' .ds hd*sect-pg " +.. +.\"########### module pg #################### +.\" set end of text trap +.wh 0 pg@header +.em pg@end-of-text +.\" +.ds pg*header ''- \\nP -'' +.ds pg*footer +.if \n[N]=4 .ds pg*header '''' +.if (\n[N]=3):(\n[N]=5) \{\ +. ds pg*header '''' +. ds pg*footer ''\\*[hd*sect-pg]'' +.\} +.ds pg*even-footer +.ds pg*odd-footer +.ds pg*even-header +.ds pg*odd-header +.\" +.nr pg*top-margin 0 +.nr pg*foot-margin 0 +.nr pg*block-size 0 +.nr pg*footer-size 5\" 1v+footer+even/odd footer+2v +.nr pg*header-size 7\" 3v+header+even/odd header+2v +.nr pg*extra-footer-size 0 +.nr pg*extra-header-size 0 +.nr ft*note-size 0 +.nr pg*cur-column 0 +.nr pg*cols-per-page 1 +.nr pg*cur-po \n[@po] +.nr pg*head-mark 0 +.\" +.nr pg*ps \n[@ps] +.nr pg*vs \n[@vs] +.\"------------------------- +.\" footer TRAPS: set, enable and disable +.de pg@set-new-trap +.nr pg*foot-trap \\n[@pl]u-(\\n[pg*block-size]u+\\n[ft*note-size]u+\\n[pg*foot-margin]u+\\n[pg*footer-size]v+\\n[pg*extra-footer-size]u) +.\" +.if \\n[D]>2 .tm pg*foot-trap \\n[@pl]u-(\\n[pg*block-size]u+\\n[ft*note-size]u+\\n[pg*foot-margin]u+\\n[pg*footer-size]v+\\n[pg*extra-footer-size]u) = \\n[pg*foot-trap] +.\" +.\" last-pos points to the position of the footer and bottom +.\" block below foot-notes. +.nr pg*last-pos \\n[@pl]u-(\\n[pg*block-size]u+\\n[pg*foot-margin]u+\\n[pg*footer-size]v) +.if \\n[D]>2 .tm pg*last-pos \\n[@pl]u-(\\n[pg*block-size]u+\\n[pg*foot-margin]u+\\n[pg*footer-size]v) = \\n[pg*last-pos] +.. +.de pg@enable-trap +.wh \\n[pg*foot-trap]u pg@footer +.if \\n[D]>2 .tm pg@enable-trap .t=\\n[.t] nl=\\n[nl] +.if \\n[D]>2 .ptr +.. +.de pg@disable-trap +.ch pg@footer +.. +.\" move to new trap (if changed). +.de pg@move-trap +.pg@disable-trap +.pg@set-new-trap +.pg@enable-trap +.. +.de pg@enable-top-trap +.\" set trap for pageheader. +.nr pg*top-enabled 1 +.. +.de pg@disable-top-trap +.\" remove trap for pageheader. +.nr pg*top-enabled 0 +.. +.\" no header on the next page +.de PGNH +.nr pg*top-enabled (-1) +.. +.\" set first trap for pagefooter +.pg@enable-top-trap +.pg@set-new-trap +.pg@enable-trap +.\"------------------------- +.\" stop output and begin on next page. Fix footnotes and all that. +.de pg@next-page +.\".debug next-page +.ne 999i \" activate trap +.\" .pg@footer +.. +.\"------------------------- +.\" support for PX, TP and EOP. +.als }t pg*header +.als }e pg*even-header +.als }o pg*odd-header +.als TPh pg*header +.als TPeh pg*even-header +.als TPoh pg*odd-header +.\" +.als EOPf pg*footer +.als EOPef pg*even-footer +.als EOPof pg*odd-footer +.\"------------------------------------------------------------ +.\" HEADER +.de pg@header +.if \\n[D]>1 .tm Page# \\n[%] (\\n[.F]:\\n[c.]) +.if \\n[Idxf] \{\ +.tl '<pagenr\ \\n[%]>''' +.\} +.\" assign current page-number to P +.hd@set-page +.\" reset spacing +.nr line*lp\\n[.z] 0 +.nr line*ac\\n[.z] 0 +.\" +.\" suppress pageheader if pagenumber == 1 and N == [124] +.if \\n[pg*top-enabled] \{\ +.\" must be fixed!! +.\". pg@disable-top-trap +. if \\n[pg*extra-header-size] 'sp \\n[pg*extra-header-size]u +. if \\n[pg*top-margin] 'sp \\n[pg*top-margin]u +. ev pg*tl-ev +. pg@set-env +. ie d let@header .let@header +. el \{\ +. ie d TP .TP +. el \{\ +' sp 3 +. ie ((\\n[%]=1)&((\\n[N]=1):(\\n[N]=2))) .sp +. el .tl \\*[pg*header] +. ie o .tl \\*[pg*odd-header] +. el .tl \\*[pg*even-header] +' sp 2 +. \} +. \} +. ev +. \" why no-space?? +. if d PX \{\ +. ns +. PX +. rs +. \} +. \" check for pending footnotes +. ft@check-old +. \" +. \" back to normal text processing +. pg@enable-trap +. \" mark for multicolumn +. nr pg*head-mark \\n[nl]u +. \" reset NCOL pointer at each new page. +. nr pg*last-ncol 0 +. \" set multicolumn +. \" +. pg@set-po +. \" print floating displays +. df@print-float 4 +. tbl@top-hook +. ns +.\} +.if \\n[pg*top-enabled]<0 .nr pg*top-enabled 1 +.nr hd*cur-bline \\n[nl] \" .H needs to know if output has occured +.. +.\"--------------------------------------------------------- +.\" FOOTER +.de pg@footer +.ec +.if \\n[D]>2 .tm Footer# \\n[%] (\\n[.F]:\\n[c.]) +.pg@disable-trap +.\".debug footer +.tbl@bottom-hook +.\" increment pageoffset for MC +.\" move to the exact start of footer. +'sp |\\n[pg*foot-trap]u+1v +.\" +.if \\n[D]>3 .tm FOOTER after .sp +.\" print footnotes +.if d ft*div .ft@print +.\" +.pg@inc-po +.if !\\n[pg*cur-column] .pg@print-footer +.\" next column +.pg@set-po +.pg@enable-trap +.if \\n[@verbose-flag] .eo \" to help VERBON/VERBOFF +.. +.\"------------------------- +.de pg@print-footer +.\" jump to the position just below the foot-notes. +'sp |\\n[pg*last-pos]u+1v +.\" check if there are any bottom block +.if d pg*block-div .pg@block +.\" +.\" print the footer and eject new page +.ev pg*tl-ev +.pg@set-env +.\" user defined end-of-page macro +.ie d EOP .EOP +.el \{\ +. ie o .tl \\*[pg*odd-footer] +. el .tl \\*[pg*even-footer] +. ie (\\n[%]=1)&(\\n[N]=1) .tl \\*[pg*header] +. el .tl \\*[pg*footer] +. tl ''\\*[Pg_type!\\n[@copy_type]]'' +.\} +.ev +.\" be sure that floating displays and footnotes will be +.\" printed at the end of the document. +.ie (\\n[df*fnr]>=\\n[df*o-fnr]):\\n[ft*exist] \{\ +. ev ne +' bp +. ev +.\} +.el 'bp +.. +.\"------------------------- +.\" +.\" Initialize the title environment +.de pg@set-env +'na +'nh +'in 0 +'ti 0 +.ie \\n[Pgps] \{\ +. ps \\n[@ps]u +. vs \\n[@vs]u +.\} +.el \{\ +. ps \\n[pg*ps]u +. vs \\n[pg*vs]u +.\} +.lt \\n[@ll]u +.. +.\"------------------------- +.de PH +.ds pg*header "\\$1 +.pg@set-new-size +.. +.de PF +.ds pg*footer "\\$1 +.pg@set-new-size +.. +.de OH +.ds pg*odd-header "\\$1 +.pg@set-new-size +.. +.de EH +.ds pg*even-header "\\$1 +.pg@set-new-size +.. +.de OF +.ds pg*odd-footer "\\$1 +.pg@set-new-size +.. +.de EF +.ds pg*even-footer "\\$1 +.pg@set-new-size +.. +.de pg@clear-hd +.ds pg*even-header +.ds pg*odd-header +.ds pg*header +.. +.de pg@clear-ft +.ds pg*even-footer +.ds pg*odd-footer +.ds pg*footer +.. +.de pg@set-new-size +.nr pg*ps \\n[@ps] +.nr pg*vs \\n[@vs] +.pg@move-trap +.. +.\"------------------------- +.\" end of page processing +.de pg@footnotes +.\".debug footnotes +.\" output footnotes. set trap for block +.\" +.. +.\"------------------------- +.\" print bottom block +.de pg@block +.ev pg*block-ev +'nf +'in 0 +.ll 100i +.pg*block-div +.br +.ev +.. +.\"------------------------- +.\" define bottom block +.de BS +.misc@ev-keep pg*block-ev +.init@reset +.br +.di pg*block-div +.. +.\"------------------------- +.de BE +.br +.di +.nr pg*block-size \\n[dn]u +.ev +.pg@move-trap +.. +.\"------------------------- +.\" print out all pending text +.de pg@end-of-text +.if \\n[D]>2 .tm ---------- End of text processing ---------------- +.df@eot-print +.ref@eot-print +.. +.\"------------------------- +.\" set top and bottom margins +.de VM +.if \\n[.$]=0 \{\ +. nr pg*extra-footer-size 0 +. nr pg*extra-header-size 0 +.\} +.if \\n[.$]>0 .nr pg*extra-header-size (v;\\$1) +.if \\n[.$]>1 .nr pg*extra-footer-size (v;\\$2) +.if \\n[D]>2 \{\ +. tm extra top \\n[pg*extra-footer-size] +. tm extra bottom \\n[pg*extra-header-size] +.\} +.pg@move-trap +.. +.\"--------------------- +.\" multicolumn output. +.de pg@set-po +.if \\n[pg*cols-per-page]>1 \{\ +. ll \\n[pg*column-size]u +.\} +.. +.de pg@inc-po +.if \\n[pg*cols-per-page]>1 \{\ +. ie \\n+[pg*cur-column]>=\\n[pg*cols-per-page] \{\ +. nr pg*cur-column 0 1 +. nr pg*cur-po \\n[@po]u +. po \\n[@po]u +. ll \\n[@ll]u +. \} +. el \{\ +. nr pg*cur-po +(\\n[pg*column-size]u+\\n[pg*column-sep]u) +. po \\n[pg*cur-po]u +' sp |\\n[pg*head-mark]u +. tbl@top-hook +. \} +.\} +.. +.\" An argument disables the page-break. +.de 1C +.br +.if \\n[pg*cols-per-page]<=1 .@error "1C: multicolumn mode not active" +.nr pg*cols-per-page 1 +.nr pg*column-sep 0 +.nr pg*column-size \\n[@ll] +.nr pg*ncol-i \\n[pg*cur-column]\" temp variable +.nr pg*cur-column 0 1 +.nr pg*cur-po \\n[@po]u +.PGFORM +.ie !'\\$1'1' .SK +.el \{\ +. if d ft*div \{\ +. if \\n[pg*ncol-i]>0 \{\ +. @warning 1C: footnotes will be messy +. \} +. \} +. if \\n[pg*last-ncol]>0 \{\ +. sp |\\n[pg*last-ncol]u +. nr pg*last-ncol 0 +. \} +.\} +.. +.de 2C +.br +.nr pg*head-mark \\n[nl]u +.if \\n[pg*cols-per-page]>1 .@error "2C: multicolumn mode already active" +.nr pg*cols-per-page 2 +.nr pg*column-sep \\n[@ll]/15 +.nr pg*column-size (\\n[@ll]u*7)/15 +.nr pg*cur-column 0 1 +.nr pg*cur-po \\n[@po]u +.ll \\n[pg*column-size]u +.\" .lt \\n[pg*column-size]u +.. +.\" MC column-size [ column-separation ] +.de MC +.br +.nr pg*head-mark \\n[nl]u +.if \\n[pg*cols-per-page]>1 .@error "MC: multicolumn mode already active" +.ie ''\\$1' .nr pg*column-size \\n[.l] +.el .nr pg*column-size (n;\\$1) +.ie ''\\$2' .nr pg*column-sep \\n[pg*column-size]/15 +.el .nr pg*column-sep (n;\\$2) +.\" +.\" calculate the number of columns/page +.nr pg*cols-per-page 0 +.nr pg*i \\n[pg*column-size] +.while \\n[pg*i]<=\\n[.l] \{\ +. nr pg*cols-per-page \\n[pg*cols-per-page]+1 +. nr pg*i \\n[pg*i]+\\n[pg*column-sep]+\\n[pg*column-size] +.\} +.nr pg*cur-column 0 1 +.nr pg*cur-po \\n[@po]u +.ll \\n[pg*column-size]u +.\" .lt \\n[pg*column-size]u +.. +.\" begin a new column +.de NCOL +.br +.if \\n[nl]>\\n[pg*last-ncol] .nr pg*last-ncol \\n[nl] +.pg@footer +.. +.\" skip pages +.de SK +.br +.bp +.nr pg*i 0 1 +.\" force new page by writing something invisible. +.while \\n+[pg*i]<=(0\\$1) \{\ +\& +. bp +.\} +.. +.\"------------------------------- +.\" MULB width1 space1 width2 space2 width3 space3 ... +.de MULB +.br +.nr pg*i 0 1 +.nr pg*mul-x 0 1 +.nr pg*mul-ind 0 +.nr pg*mul-last 0 +.while \\n[.$] \{\ +. nr pg*mul!\\n+[pg*i] (n;0\\$1) +. nr pg*muls!\\n[pg*i] (n;0\\$2) +. shift 2 +.\} +.nr pg*mul-max-col \\n[pg*i] +.ds pg*mul-fam \\n[.fam] +.nr pg*mul-font \\n[.f] +.ev pg*mul-ev +.ps \\n[@ps]u +.vs \\n[@vs]u +.fam \\*[pg*mul-fam] +.ft \\n[pg*mul-font] +.fi +.hy 14 +.di pg*mul-div +.MULN +.. +.\"----------- +.de MULN +.if \\n[pg*mul-x]>=\\n[pg*mul-max-col] .@error "MULN: Undefined columnwidth" +.br +.if \\n[.d]>\\n[pg*mul-last] .nr pg*mul-last \\n[.d] +.rt +0 +.in \\n[pg*mul-ind]u +.ll (u;\\n[.i]+\\n[pg*mul!\\n+[pg*mul-x]])u +.nr pg*mul-ind +(u;\\n[pg*mul!\\n[pg*mul-x]]+\\n[pg*muls!\\n[pg*mul-x]]) +.. +.\"----------- +.\" MULE +.de MULE +.br +.if \\n[.d]>\\n[pg*mul-last] .nr pg*mul-last \\n[.d] +.di +.ev +.ne \\n[pg*mul-last]u +.nf +.mk +.pg*mul-div +.rt +.sp \\n[pg*mul-last]u +.fi +.. +.\"----------- +.de OP +.br +.ie o .if !\\n[pg*head-mark]=\\n[nl] \{\ +. bp +1 +. bp +1 +.\} +.el .bp +.. +.\"########### module footnotes ################### +.nr ft*note-size 0 +.nr ft*busy 0 +.nr ft*nr 0 1 +.nr ft*wide 0 +.nr ft*hyphen 0\" hyphenation value +.nr ft*adjust 1\" >0 if adjust true +.nr ft*indent 1\" >0 if text indent true (not imp. $$$) +.nr ft*just 0\" 0=left justification, 1=right (not imp. $$$) +.nr ft*exist 0\" not zero if there are any footnotes to be printed +.nr ft*clear-at-header 0\" >0 if footnotes should be reset at first level head. +.\" +.ds F \v'-.4m'\s-3\\n+[ft*nr]\s0\v'.4m' +.\" +.\"----------------- +.\" init footnote environment +.de ft@init +.\" indentcontrol not implemented $$$ +.\" label justification not implemented $$$ +'in 0 +'fi +.ie \\n[ft*adjust] 'ad +.el 'na +.ie \\n[ft*hyphen] 'hy 14 +.el 'hy 0 +.ll \\n[@cur-ll]u +.lt \\n[@cur-ll]u +.ps (p;\\n[@ps]u-2) +.vs (p;\\n[@vs]u-1) +.. +.\"----------------- +.\" set footnote format +.\" no support for two column processing (yet). $$$ +.de FD +.if \\n[.$]=0 .@error "FD: bad arg \\$1" +.ie \\n[.$]=2 .nr ft*clear-at-header 1 +.el .nr ft*clear-at-header 0 +.\" +.if !'\\$1'' \{\ +. ie \\$1>11 .nr ft*format 0 +. el .nr ft*format \\$1 +. \" +. nr ft*hyphen (\\n[ft*format]%2)*14 +. nr ft*format \\n[ft*format]/2 +. \" +. nr ft*adjust 1-(\\n[ft*format]%2) +. nr ft*format \\n[ft*format]/2 +. \" +. nr ft*indent 1-(\\n[ft*format]%2) +. nr ft*format \\n[ft*format]/2 +. \" +. nr ft*just \\n[ft*format]%2 +.\} +.. +.\"--------------- +.\" Footnote and display width control $$$ +.de WC +.nr ft*i 0 1 +.while \\n+[ft*i]<=\\n[.$] \{\ +. ds ft*x \\$[\\n[ft*i]] +. if '\\*[ft*x]'N' \{\ +. nr ft*wide 0 +. nr ft*first-fn 0 +. nr ds*wide 0 +. nr ds*float-break 1 +. \} +. if '\\*[ft*x]'-WF' .nr ft*wide 0 +. if '\\*[ft*x]'WF' .nr ft*wide 1 +. if '\\*[ft*x]'-FF' .nr ft*first-fn 0 +. if '\\*[ft*x]'FF' .nr ft*first-fn 1 +. if '\\*[ft*x]'-WD' \{\ +. nr ds*wide 0 +. if r ft*df-save \{\ +. nr Df \\n[ft*df-save] +. rm ft*df-save +. \} +. \} +. if '\\*[ft*x]'WD' \{\ +. nr ds*wide 1 +. nr ft*df-save \\n[Df] +. nr Df 4 +. \} +. if '\\*[ft*x]'-FB' .nr ds*float-break 0 +. if '\\*[ft*x]'FB' .nr ds*float-break 1 +. if \\n[D]>1 .tm WC WF=\\n[ft*wide] WD=\\n[ds*wide] +.\} +.. +.\"----------------- +.\" begin footnote +.\" Change environment, switch to diversion and print the foot-note mark. +.de FS +.if \\n[ft*busy] .@error "FS: missing FE" +.nr ft*busy 1 +.ev ft*ev +.ft@init +.if !\\n[ft*wide] .pg@set-po +.di ft*tmp-div +.nr ft*space (u;\\n[Fs]*\\n[Lsp]) +.sp \\n[ft*space]u +.\" print mark +.ie \\n[.$] .ds ft*mark \\$1 +.el .ds ft*mark \\n[ft*nr]. +\\*[ft*mark] +.in +.75c +.sp -1 +.nr ft*exist 1 +.. +.\"----------------- +.\" init footnote diversion +.de ft@init-footnote +.di ft*div +\l'20n' +.br +.di +.nr ft*note-size \\n[dn] +.. +.\"----------------- +.\" end footnote +.\" End the diversion, back to previous environment, and adjust +.\" the trap to the new foot-note size. +.de FE +.nr ft*busy 0 +.br +.di +'in 0 +'nf +.if \\n[@pl]u<\\n[dn]u .@error "FE: too big footnote" +.if !d ft*div .nr dn +1v +.if \\n[D]>3 .tm FE: foot-trap=\\n[pg*foot-trap] .d=\\n[.d] dn=\\n[dn] +.ie (\\n[pg*foot-trap]u-\\n[.d]u)<\\n[dn]u \{\ +. da ft*next-div +. ft*tmp-div +. br +. di +.\} +.el \{\ +. if !d ft*div .ft@init-footnote +. da ft*div +. ft*tmp-div +. di +. nr ft*note-size +\\n[dn] +.\} +.rm ft*tmp-div +.ev +.pg@move-trap +.. +.\"----------------- +.\" print footnotes, see pg@footer +.de ft@print +.ev ft*print-ev +'nf +'in 0 +.ll 100i +.ft*div +.br +.ev +.rm ft*div +.nr ft*note-size 0 +.pg@move-trap +.. +.\"----------------- +.\" check if any pending footnotes, see pg@header +.de ft@check-old +.if d ft*next-div \{\ +. ev ft*ev +. ft@init +. ft@init-footnote +. nf +. in 0 +. da ft*div +. ft*next-div +. di +. nr ft*note-size +\\n[dn] +. rm ft*next-div +. ev +. nr ft*exist 0 +. pg@move-trap +.\} +.. +.\"########### module display ################### +.nr ds*wide 0\" >0 if wide displays wanted +.nr df*fnr 0 1\" floating display counter +.nr df*o-fnr 1\" floating display counter, already printed +.nr ds*snr 0 1\" static display counter +.nr ds*lvl 0 1\" display level +.nr ds*float-busy 0\" >0 if printing float +.nr df*float 0 >0 if previous display was floating +.\"-------------------------------------------- +.de DE +.ie \\n[df*float] .df@end \\$@ +.el .ds@end \\$@ +.. +.\"-------------------------------------------- +.\" floating display start +.\" nested DF/DE is not allowed. +.de DF +.if \\n[df*float] .@error "DF:nested floating is not allowed. Use DS." +.ds@set-format \\$@ +.\" +.nr df*old-ll \\n[.l] +.nr ds*ftmp \\n[.f] +.misc@ev-keep df*ev +.ft \\n[ds*ftmp] +.\" +.init@reset +.di df*div +'in 0 +.\" +.ds@set-new-ev \\n[df*old-ll] +.SP \\n[Lsp]u +.nr df*float 1 +.. +.\"-------------------------------------------- +.de df@end +.br +.SP \\n[Lsp]u +.di +.nr df*width!\\n+[df*fnr] \\n[dl] +.nr df*height!\\n[df*fnr] \\n[dn] +.nr df*wide!\\n[df*fnr] \\n[ds*wide] +.nr df*format!\\n[df*fnr] \\n[ds*format] +.ev +.if \\n[D]>2 .tm DF:fnr=\\n[df*fnr] w=\\n[dl] h=\\n[dn] wide=\\n[ds*wide] \ + form=\\n[ds*format] +.\" move div to the floating display list +.rn df*div df*fdiv!\\n[df*fnr] +.\" +.nr par@ind-flag 0 +.\" print float if queue is empty and the display fits into +.\" the current page +.if ((\\n[df*fnr]>=\\n[df*o-fnr])&(\\n[dn]<\\n[.t])) .df@print-float 1 +.nr df*float 0 +.. +.\"------------- +.\" called by end-of-text +.de df@eot-print +.br +.if \\n[df*o-fnr]<=\\n[df*fnr] \{\ +. if \\n[D]>2 .tm Print remaining displays. +.\" still some floats left, make non-empty environment +. misc@ev-keep ne +. init@reset +\c +. df@print-float 3 +. ev +.\} +.. +.\"--------------- +.\" print according to Df and De. +.\" .df@print-float type +.\" type called from +.\" 1 .DE +.\" 2 end of section +.\" 3 end of document +.\" 4 beginning of new page +.\" +.de df@print-float +.if \\n[Df]>5 .@error "Df=\\n[Df], max value is 5" +.if !\\n[ds*float-busy] \{\ +. nr ds*float-busy 1 +.\" at .DE +. if \\n[D]>3 .tm print-float: .t=\\n[.t], h=\\n[df*height!\\n[df*o-fnr]] +. \" Df = 1 or 5 +. if (\\$1=1)&((\\n[Df]=1):(\\n[Df]=5)) \{\ +. if \\n[.t]>\\n[df*height!\\n[df*o-fnr]] \{\ +. \" Print only new displays. +. if \\n[df*o-fnr]=\\n[df*fnr] \{\ +. br +. ds@print-one-float +. \} +. \} +. \} +. \" Df = 3 +. if (\\$1=1)&(\\n[Df]=3) \{\ +. if \\n[.t]>\\n[df*height!\\n[df*o-fnr]] \{\ +. br +. ds@print-one-float +. \} +. \} +.\" print all if Df<2 and end of section +. if (\\$1=2)&(\\n[Sectp]>0)&(\\n[Df]<2) \{\ +. br +. ds@print-all-floats +. \} +.\" print all if end of document. Where should they go instead? +. if \\$1=3 \{\ +. br +. ds@print-all-floats +.\} +.\" new page +. if (\\$1=4)&(\\n[Df]>1) \{\ +. if \\n[Df]=2 .ds@print-one-float +. if \\n[Df]=3 .ds@print-one-float +. if \\n[Df]>3 \{\ +. ie \\n[De] .ds@print-all-floats +. el .ds@print-this-page +. \} +. \} +. nr ds*float-busy 0 +.\} +.. +.\"--------------- +.\" DF out +.\" print a floating diversion +.de ds@output-float +.nr df*old-ll \\n[.l] +.nr df*old-in \\n[.i] +.ev ds*fev +.nf +.nr df*i \\n[df*o-fnr] +.nr df*f \\n[df*format!\\n[df*i]] +.\" +.in \\n[df*old-in]u +.if \\n[df*f]=1 'in +\\n[Si]n +.if \\n[df*f]>=2 'in 0 +.if \\n[df*f]=2 'ce 9999 +.if \\n[df*f]=3 'in (u;(\\n[.l]-\\n[df*width!\\n[df*i]])/2) +.if \\n[df*f]=4 'rj 9999 +.if \\n[df*f]=5 'in (u;\\n[.l]-\\n[df*width!\\n[df*i]]) +.\" +.\" +.df*fdiv!\\n[df*o-fnr] +.\" +.if \\n[df*f]=2 'ce 0 +.if \\n[df*f]=4 'rj 0 +.ev +.rm df*fdiv!\\n[df*i] +.rm df*height!\\n[df*i] +.rm df*format!\\n[df*i] +.if \\n[df*wide!\\n[df*i]] .nr pg*head-mark \\n[nl]u +.nr df*o-fnr +1 +.. +.\"--------------- +.\" print one floating display if there is one. +.de ds@print-one-float +.if \\n[df*o-fnr]<=\\n[df*fnr] \{\ +. if \\n[D]>3 .tm print-one-float: .t=\\n[.t], h=\\n[df*height!\\n[df*o-fnr]] +. if \\n[.t]<\\n[df*height!\\n[df*o-fnr]] .pg@next-page +. ds@output-float +. if \\n[De] .pg@next-page +.\} +.. +.\"--------------- +.\" print all queued floats. +.\" if De>0 do a page eject between the floats. +.de ds@print-all-floats +.while \\n[df*o-fnr]<=\\n[df*fnr] \{\ +. if \\n[D]>3 .tm print-all-floats: .t=\\n[.t], h=\\n[df*height!\\n[df*o-fnr]] +. if \\n[.t]<\\n[df*height!\\n[df*o-fnr]] .pg@next-page +. br +\c +. ds@output-float +. if \\n[De] .pg@next-page +.\} +.. +.\"--------------- +.\" print as many floats as will fit on the current page +.de ds@print-this-page +.while \\n[df*o-fnr]<=\\n[df*fnr] \{\ +. if \\n[D]>3 .tm print-this-page: .t=\\n[.t], h=\\n[df*height!\\n[df*o-fnr]] +. if \\n[.t]<\\n[df*height!\\n[df*o-fnr]] .break +. ds@output-float +.\} +.. +.\"--------------------------------------------------- +.\" get format of the display +.de ds@set-format +.ie \\n[.$] \{\ +. ie r ds*format!\\$1 .nr ds*format \\n[ds*format!\\$1] +. el .@error "DS/DF:wrong format:\\$1" +.\} +.el .nr ds*format 0 +.if \\n[D]>2 .tm set format=\\n[ds*format] +.\" fill or not to fill, that is the... +.nr ds*fill 0 +.ie \\n[.$]>1 \{\ +. ie r ds*fill!\\$2 .nr ds*fill \\n[ds*fill!\\$2] +. el .@error "\\*[ds*type]:wrong fill:\\$2" +.\} +.if \\n[D]>2 .tm set fill=\\n[ds*fill] +.nr ds*rindent 0 +.if \\n[.$]>2 .nr ds*rindent \\$3 +.if \\n[D]>2 .tm set indent=\\n[ds*rindent] +.. +.\"----------------------------- +.\" .ds@set-new-ev previous-line-length +.de ds@set-new-ev +.ll \\$1u +.lt \\$1u +.if \\n[ds*rindent] \{\ +. ll -\\n[ds*rindent]n +. lt -\\n[ds*rindent]n +.\} +.if \\n[ds*wide] \{\ +. ll \\n[@ll]u +. lt \\n[@ll]u +.\} +.\" +.ie \\n[ds*fill] 'fi +.el 'nf +.. +.\"-------------------------------------------------------- +.nr ds*format 0\" dummy value for .En/.EQ +.nr ds*format! 0\" no indent +.nr ds*format!0 0\" no indent +.nr ds*format!L 0\" no indent +.nr ds*format!I 1\" indent +.nr ds*format!1 1\" indent +.nr ds*format!C 2\" center each line +.nr ds*format!2 2\" center each line +.nr ds*format!CB 3\" center as block +.nr ds*format!3 3\" center as block +.nr ds*format!R 4\" right justify each line +.nr ds*format!4 4\" right justify each line +.nr ds*format!RB 5\" right justify as block +.nr ds*format!5 5\" right justify as block +.\"--------------- +.nr ds*fill! 0\" no fill +.nr ds*fill!N 0\" no fill +.nr ds*fill!0 0\" no fill +.nr ds*fill!F 1\" fill on +.nr ds*fill!1 1\" fill on +.\"-------------------------------------------- +.\" static display start +.\" nested DS/DE is allowed. No limit on depth. +.de DS +.br +.nr ds*lvl +1 +.ds@set-format \\$@ +.\" +.nr ds*old-ll \\n[.l] +.nr ds*old-in \\n[.i] +.misc@push ds-ll \\n[.l] +.misc@push ds-form \\n[ds*format] +.nr ds*i \\n[.i] +.nr ds*ftmp \\n[.f] +.misc@ev-keep ds*ev!\\n+[ds*snr] +.ft \\n[ds*ftmp] +.\" +.init@reset +.\" indent in a diversion doesn't seem like a good idea. +'in 0 +.di ds*div!\\n[ds*snr] +.\" +.ds@set-new-ev \\n[ds*old-ll] +.nr df*float 0 +.. +.\"-------------------------------------------- +.de ds@end +.if \\n-[ds*lvl]<0 .@error "DE: no corresponding DS" +.br +.di +.\" ********** +.nr ds*width \\n[dl] +.nr ds*height \\n[dn] +.misc@pop-nr ds-ll ds*old-ll +.misc@pop-nr ds-form ds*format +.\" +.\" ********** +'nf +.\" calculate needed space +.nr ds*need \\n[ds*height] +.nr ds*i \\n[pg*foot-trap]-\\n[pg*header-size]v-\\n[pg*extra-header-size]v +.if (\\n[ds*height]>\\n[ds*i])&(\\n[.t]<(\\n[ds*i]/2)) .nr ds*need \\n[.t]u+1v +.if (\\n[ds*height]<\\n[ds*i])&(\\n[.t]<(\\n[ds*height])) .nr ds*need \\n[.t]u+1v +.\" Eject page if display will fit one page and +.\" there are less than half of the page left. +.if \\n[ds*need] .ne \\n[ds*need]u +.\" +.\" check if pending equation label +.eq@check \\n[ds*need] +'in \\n[ds*old-in]u +.if \\n[ds*format]=1 'in \\n[ds*old-in]u+\\n[Si]n +.if \\n[ds*format]>=2 'in 0 +.if \\n[ds*format]=2 'ce 9999 +.if \\n[ds*format]=3 'in (u;(\\n[.l]-\\n[ds*width])/2) +.if \\n[ds*format]=4 'rj 9999 +.if \\n[ds*format]=5 'in (u;\\n[.l]-\\n[ds*width]) +.\" ********** +.\" +.\" Print static display +.nr ds*i \\n[Lsp] +.if r Dsp .nr ds*i \\n[Dsp] +.\" +.if \\n[Ds] .SP \\n[ds*i]u +.ds*div!\\n[ds*snr] +.if \\n[Ds] .SP \\n[ds*i]u +.\" +.if \\n[ds*format]=2 'ce 0 +.if \\n[ds*format]=4 'rj 0 +.rm ds*div!\\n[ds*snr] +.nr ds*snr -1 +.nr par@ind-flag 0 +.ev +.. +.\"########### module list ################### +.\" .LI text-indent mark-indent pad type [mark [LI-space [LB-space] ] ] +.\" +.nr li*tind 0 +.nr li*mind 0 +.nr li*pad 0 +.nr li*type 0 +.ds li*mark 0 +.nr li*li-spc 0 +.nr li*lvl 0 1 +.aln :g li*lvl +.nr li*cur-vpos 0 +.\"-------------------------- +.\" the major list-begin macro. +.\" If type == -1 a 'break' will occur. +.de LB +.if \\n[.$]<4 .@error "LB: not enough arguments, min 4" +.misc@push cind \\n[.i] +.misc@push tind \\n[li*tind] +.misc@push mind \\n[li*mind] +.misc@push pad \\n[li*pad] +.misc@push type \\n[li*type] +.misc@push li-spc \\n[li*li-spc] +.ds li*mark-list!\\n[li*lvl] \\*[li*mark] +.nr li*lvl +1 +.\" +.nr li*tind (n;0\\$1)\" text-indent +.nr li*mind (n;0\\$2)\" mark-indent +.nr li*pad (n;0\\$3)\" pad +.nr li*type 0\\$4\" type +.ds li*mark \\$5\" mark +.ie !'\\$6'' .nr li*li-spc \\$6\" LI-space +.el .nr li*li-spc 1 +.ie !'\\$7'' .nr li*lb-spc \\$6\" LB-space +.el .nr li*lb-spc 0 +.\" init listcounter +.nr li*cnt!\\n[li*lvl] 0 1 +.\" assign format +.af li*cnt!\\n[li*lvl] 1 +.if \\n[li*type] .if !'\\*[li*mark]'' .af li*cnt!\\n[li*lvl] \\*[li*mark] +.\" +.if \\n[li*lb-spc] .SP (u;\\n[li*lb-spc]*\\n[Lsp]) +.in +\\n[li*tind]u +.. +.\"--------------- +.de LI +.if \\n[li*lvl]<1 .@error "LI:no lists active" +.if \\n[li*li-spc]&(\\n[Ls]>=\\n[li*lvl]) .SP (u;\\n[li*li-spc]*\\n[Lsp]) +.ne 2v +.\" +.ds li*c-mark \\*[li*mark] +.nr li*cnt!\\n[li*lvl] +1 +.if \\n[li*type]=1 .ds li*c-mark \\n[li*cnt!\\n[li*lvl]]. +.if \\n[li*type]=2 .ds li*c-mark \\n[li*cnt!\\n[li*lvl]]) +.if \\n[li*type]=3 .ds li*c-mark (\\n[li*cnt!\\n[li*lvl]]) +.if \\n[li*type]=4 .ds li*c-mark [\\n[li*cnt!\\n[li*lvl]]] +.if \\n[li*type]=5 .ds li*c-mark <\\n[li*cnt!\\n[li*lvl]]> +.if \\n[li*type]=6 .ds li*c-mark {\\n[li*cnt!\\n[li*lvl]]} +.if \\n[.$]=1 .ds li*c-mark \\$1 +.ie \\n[.$]=2 \{\ +. ie (\\$2=2):(\\n[Limsp]=0) .ds li*c-mark \\$1\\*[li*c-mark] +. el .ds li*c-mark \\$1\ \\*[li*c-mark] +.\} +.\" +.\" determine where the text begins +.nr li*text-begin \\n[li*tind]>?\w@\\*[li*c-mark]\ @ +.nr x \w@\\*[li*c-mark]\ @ +.\" +.\" determine where the mark begin +.ie !\\n[li*pad] .nr li*in \\n[li*mind] +.el .nr li*in \\n[li*text-begin]-\\n[li*pad]-\w@\\*[li*c-mark]@ +.if !\\n[li*in] .nr li*in 0 +.\" +.ti -\\n[li*tind]u +.\" no indentation if hanging indent +.if (\w@\\*[li*c-mark]@=0)&((\\n[.$]=0):(\w@\\$1@=0)) .nr li*text-begin 0 +\Z'\&\h'\\n[li*in]u'\\*[li*c-mark]'\h'\\n[li*text-begin]u'\&\c +.if \\n[li*type]=-1 .br +.. +.\" +.\"------------- +.de li@pop +.nr li*lvl -1 +.misc@pop-nr cind li*tmp +.in \\n[li*tmp]u +.misc@pop-nr tind li*tind +.misc@pop-nr mind li*mind +.misc@pop-nr pad li*pad +.misc@pop-nr type li*type +.misc@pop-nr li-spc li*li-spc +.ds li*mark \\*[li*mark-list!\\n[li*lvl]] +.. +.de LE +.if \\n[li*lvl]<1 .@error "LE:mismatched" +.li@pop +.if '\\$1'1' .SP \\n[Lsp]u +.. +.\"------------- +.\" list status clear. +.\" terminate all lists to level i +.de LC +.ie \\n[.$]<1 .nr li*i 0 +.el .nr li*i \\$1 +.if \\n[li*i]>\\n[li*lvl] .@error "LC: incorrect argument: \\n[li*i] (too big)" +.while \\n[li*lvl]>\\n[li*i] .li@pop +.nr par@ind-flag 0 +.. +.\"------------- +.de AL +.if \\n[.$]>3 .@error "AL: too many arguments" +.if \\n[D]>2 .tm AL $* +.ie \\n[.$]<=1 .LB \\n[Li] 0 2 1 "\\$1" +.el \{\ +. ie \\n[.$]=2 .LB 0\\$2 0 2 1 "\\$1" +. el \{\ +. ie !'\\$2'' .LB \\$2 0 2 1 "\\$1" 0 1 +. el .LB \\n[Li] 0 2 1 "\\$1" 0 1 +. \} +.\} +.. +.de ML +.if \\n[.$]>3 .@error "ML: too many arguments" +.if \\n[D]>2 .tm ML $* +.nr li*ml-width \w@\\$1@u+1n +.if \\n[.$]<2 .LB \\n[li*ml-width]u 0 1 0 "\\$1" +.if \\n[.$]=2 .LB 0\\$2 0 1 0 "\\$1" +.if \\n[.$]=3 \{\ +. ie '\\$2'' .LB \\n[li*ml-width]u 0 1 0 "\\$1" 0 1 +. el .LB \\n[Li] 0 1 0 "\\$1" 0 1 +.\} +.. +.de VL +.if \\n[D]>2 .tm VL $* +.if \\n[.$]>3 .@error "VL: too many arguments" +.if \\n[.$]<1 .@error "VL: missing text-indent" +.ie \\n[.$]<3 .LB 0\\$1 0\\$2 0 0 +.el .LB 0\\$1 0\\$2 0 0 \& 0 1 +.. +.\" Bullet (for .BL) +.de BL +.if \\n[D]>2 .tm BL $* +.ds BU \s-2\(bu\s0 +.if \\n[.$]>2 .@error "BL: too many arguments" +.if \\n[.$]<1 .LB \\n[Pi] 0 1 0 \\*[BU] +.if \\n[.$]=1 .LB 0\\$1 0 1 0 \\*[BU] +.if \\n[.$]=2 \{\ +. ie '\\$1'' .LB \\n[Pi] 0 1 0 \\*[BU] 0 1 +. el .LB 0\\$1 0 1 0 \\*[BU] 0 1 +.\} +.. +.de DL +.if \\n[D]>2 .tm DL $* +.if \\n[.$]>2 .@error "DL: too many arguments" +.if \\n[.$]<1 .LB \\n[Pi] 0 1 0 \(em +.if \\n[.$]=1 .LB 0\\$1 0 1 0 \(em +.if \\n[.$]=2 \{\ +. ie '\\$1'' .LB \\n[Pi] 0 1 0 \(em 0 1 +. el .LB 0\\$1 0 1 0 \(em 0 1 +.\} +.. +.de RL +.if \\n[D]>2 .tm RL $* +.if \\n[.$]>2 .@error "RL: too many arguments" +.if \\n[.$]<1 .LB 6 0 2 4 +.if \\n[.$]=1 .LB 0\\$1 0 2 4 +.if \\n[.$]=2 \{\ +. ie '\\$1'' .LB 6 0 2 4 1 0 1 +. el .LB 0\\$1 0 2 4 1 0 1 +.\} +.. +.\" Broken Variable List. As .VL but text begin on the next line +.de BVL +.if \\n[D]>2 .tm BVL $* +.if \\n[.$]>3 .@error "BVL: too many arguments" +.if \\n[.$]<1 .@error "BVL: missing text-indent" +.ie \\n[.$]<3 .LB 0\\$1 0\\$2 0 -1 +.el .LB 0\\$1 0\\$2 0 -1 \& 0 1 +.. +.\" ####### module tbl ####################################### +.\" This module is copied from groff_ms and modified for mgm. +.\" Yes, it does not resemble the original anymore :-). +.\" Don't know if I missed something important. +.\" Groff_ms is written by James Clark. +.nr tbl*have-header 0 +.nr tbl*header-written 0 +.de TS +.br +.if ''\\n[.z]' .SP +.if '\\$1'H' .di tbl*header-div +.. +.de tbl@top-hook +.if \\n[tbl*have-header] \{\ +. ie \\n[.t]-\\n[tbl*header-ht]-1v .tbl@print-header +. el .sp \\n[.t]u +.\} +.. +.de tbl@bottom-hook +.if \\n[tbl*have-header] \{\ +. nr T. 1 +.\" draw bottom and side lines of boxed tables. +. T# +.\} +.nr tbl*header-written 0 +.. +.de tbl@print-header +.ev tbl*ev +'nf +.tbl*header-div +.ev +.mk #T +.nr tbl*header-written 1 +.. +.de TH +.if '\\$1'N' @error TH: N not implemented yet. Sorry. +.ie '\\n[.z]'tbl*header-div' \{\ +. nr T. 0 +. T# +. br +. di +. nr tbl*header-ht \\n[dn] +. ne \\n[dn]u+1v +. nr tbl*have-header 1 +. ie '\\$1'N' .if !\\n[tbl*header-written] .tbl@print-header +. el .tbl@print-header +.\} +.el .@error ".TH without .TS H" +.. +.de TE +.ie '\\n(.z'tbl*header-div' .@error ".TS H but no .TH before .TE" +.el \{\ +. nr tbl*have-header 0 +.\} +.\" reset tabs +.TAB +.. +.de T& +.. +.\" ####### module pic ####################################### +.de PS +.nr pic*in 0 +.br +.SP .5 +.ie \\n[.$]<2 .@error "PS: bad arguments. Probably not processed with pic." +.el \{\ +. if !\\n[ds*lvl] .ne (u;\\$1)+1v +.\" should be contained between .DS/.DE +.if r ds*format \{\ +. if \\n[ds*lvl]&((\\n[ds*format]=2):(\\n[ds*format]=3)) \{\ +. nr pic*in \\n[.i] +.\" . in +(u;\\n[.l]-\\n[.i]-\\$2/2) +. \} +. \} +.\} +.. +.de PE +.init@reset +.SP .5 +.. +.\" ####### module eq ####################################### +.\" +.nr eq*number 0 1 +.ds eq*label +.de EQ +.ds eq*label "\\$1 +.. +.de eq@check +.if !'\\*[eq*label]'' \{\ +. mk +' sp (u;\\$1/2-.45v) +. ie (\\n[Eq]%2) \{\ +. \" label to the left +\h'|0'\\*[eq*label]\c +. \} +. el \{\ +. \" label to the right +\h'|\\n[.l]u'\\*[eq*label] +. \} +. rt +.\} +.ds eq*label +.. +.de EN +.. +.\"########### module toc ################### +.\" table of contents +.nr toc*slevel 1 +.nr toc*spacing \n[Lsp]u +.nr toc*tlevel 2 +.nr toc*tab 0 +.\"----------- +.\" Table of contents with friends (module lix) +.de TC +.br +.\" print any pending displays and references +.df@print-float 3 +.if \\n[ref*flag] .RP 0 1 +.\" +.if \w@\\$1@>0 .nr toc*slevel \\$1 +.if \w@\\$2@>0 .nr toc*spacing (u;\\$2*\\n[Lsp]) +.if \w@\\$3@>0 .nr toc*tlevel \\$3 +.if \w@\\$4@>0 .nr toc*tab \\$4 +.if \\n[pg*cols-per-page]>1 .1C +.ds H1txt \\*[Licon] +.ds Tcst co +.pg@clear-hd +.EF "" +.OF "" +.pg@next-page +.\"------------- +.if d Ci .toc@read-Ci \\*[Ci] +.nf +.in 0 +.ie \\n[Oc] .hd@set-page 1 +.el \{\ +. nr toc*pn 1 1 +. af toc*pn i +. aln ;g toc*pn +. PF "''\\\\\\\\n[toc*pn]''" +. am pg@header +. nr toc*pn +1 +\\.. +.\} +.nr toc*i 4 1 +.while \\n+[toc*i]<10 \{\ +. if !'\\$\\n[toc*i]'' \{\ +. ce +\\$\\n[toc*i] +. br +. \} +.\} +.if \\n[.$]<=4 .if d TX .TX +.ie d TY .if \\n[.$]<=4 .TY +.el \{\ +. ce +\\*[Licon] +. br +. SP 3 +.\} +.if d toc*list .toc*list +.br +.\" print LIST OF XXX +.if d lix*dsfg .lix@print-ds fg FG "\\*[Lf]" \\n[.$] +.if d lix*dstb .lix@print-ds tb TB "\\*[Lt]" \\n[.$] +.if d lix*dsec .lix@print-ds ec EC "\\*[Le]" \\n[.$] +.if d lix*dsex .lix@print-ds ex EX "\\*[Lx]" \\n[.$] +.. +.\"----------- +.\" .toc@read-Ci lev1 lev2 lev3 lev4 ... lev7 +.de toc@read-Ci +.nr toc*i 0 1 +.while \\n+[toc*i]<8 \{\ +. nr toc*hl!\\n[toc*i] \\$\\n[toc*i] +.\} +.. +.\"----------- +.de toc@entry +.ie \\n[Sectp] \{\ +. toc@save \\$1 "\\*[hd*mark]" "\\$2" \\*[hd*sect-pg] +.\} +.el .toc@save \\$1 "\\*[hd*mark]" "\\$2" \\n[%] +.. +.als )E toc@entry +.\"----------- +.de toc@save +.\" collect maxsize of mark if string Ci don't exist. +.if !d Ci \{\ +. if !r toc*hl!\\$1 .nr toc*hl!\\$1 0 +. if \\n[toc*hl!\\$1]<=\w@\\$2@ \{\ +. nr toc*hl!\\$1 \w@\\$2@u +. \} +.\} +.am toc*list +.\" .toc@set level headernumber text pagenr +.toc@set \\$1 "\\$2" "\\$3" \\$4 +\\.. +.. +.\"----------- +.\" level mark text pagenumber +.de toc@set +.if \\$1<=\\n[toc*slevel] .SP \\n[toc*spacing]u +.na +.fi +.nr toc*ind 0 +.nr toc*i 0 1 +.ie d Ci \{\ +. nr toc*ind +\\n[toc*hl!\\$1]u +.\} +.el \{\ +. while \\n+[toc*i]<\\$1 \{\ +. nr toc*ind +\\n[toc*hl!\\n[toc*i]]u +. \} +.\} +.nr toc*text \\n[toc*ind]u+\\n[toc*hl!\\$1]u +.in \\n[toc*text]u +.ti -\\n[toc*hl!\\$1]u +.\" +.\" length of headernum space +.nr toc*i \\n[toc*hl!\\$1]-\w@\\$2@ +.\" +.ll \\n[@ll]u-\w@\\$4@u-2m +.ne 2v +.\" ragged right --------------------------------- +.ie \\$1>\\n[toc*tlevel] \{\ +\\$2 +. sp -1 +\\$3\ \ \ \\$4 +. br +.\} +.el \{\ +. \" unnumbered heading -------------------- +. ie '\\$2'' \{\ +. in \\n[toc*ind]u +\\$3\h'1m' +. \} +. \" normal heading ------------------------ +. el \{\ +\\$2 +. sp -1 +\\$3\h'1m' +. \} +. ll \\n[@ll]u +. sp -1 +. nr toc*sep (u;\\n[.l]-\\n[.n]-\\n[.i]-\w@\\$4@)-1m +\h'|\\n[.n]u'\l'\\n[toc*sep]u.'\h'1m'\\$4 +.\} +.ll \\n[@ll]u +.. +.\"########################### module lix ############################ +.\" LIST OF figures, tables, exhibits and equations +.nr lix*fg-nr 0 1 +.nr lix*tb-nr 0 1 +.nr lix*ec-nr 0 1 +.nr lix*ex-nr 0 1 +.aln Fg lix*fg-nr +.aln Tb lix*tb-nr +.aln Ec lix*ec-nr +.aln Ex lix*ex-nr +.\"------------ +.de FG +.lix@print-line fg Lf \\n+[lix*fg-nr] "\\$1" "\\$2" "\\$3" "\\$4" +.. +.de TB +.lix@print-line tb Lt \\n+[lix*tb-nr] "\\$1" "\\$2" "\\$3" "\\$4" +.. +.de EC +.lix@print-line ec Le \\n+[lix*ec-nr] "\\$1" "\\$2" "\\$3" "\\$4" +.. +.de EX +.lix@print-line ex Lx \\n+[lix*ex-nr] "\\$1" "\\$2" "\\$3" "\\$4" +.. +.\"------------ +.\" print line with 'figure' in the text +.\" type stringvar number text override flag refname +.de lix@print-line +.ds lix*text "\\$4 +.\" +.ie \\n[Sectf] .ds lix*numb \\n[H1]-\\$3 +.el .ds lix*numb \\$3 +.\" +.ie !\\n[Of] .ds lix*ds-form .\ \ \" +.el .ds lix*ds-form "\ \(em\ \" +.nr lix*in \\n[.i] +.ds lix*label \\*[Li\\$1]\ \\*[lix*numb]\\*[lix*ds-form] +.if !'\\$5'' \{\ +. if !0\\$6 .ds lix*label \\*[Li\\$1]\ \\$5\\*[lix*numb]\\*[lix*ds-form] +. if 0\\$6=1 .ds lix*label \\*[Li\\$1]\ \\*[lix*numb]\\$5\\*[lix*ds-form] +. if 0\\$6=2 .ds lix*label \\*[Li\\$1]\ \\$5\\*[lix*ds-form] +.\} +.\" print line if not between DS/DE +.ie \\n[ds*lvl]<1&\\n[df*float]=0 \{\ +. lix@print-text "\\*[lix*label]" "\\*[lix*text]" \\$1 \\$2 \\$7 +.\} +.el \{\ +. lix@embedded-text "\\*[lix*label]" "\\*[lix*text]" \\$1 \\$2 \\$7 +.\} +.\" +.. +.\"----------- +.\" label text type stringvar refname +.de lix@print-text +.ie \\n[Sectp] .ds lix*pgnr \\*[hd*sect-pg] +.el .ds lix*pgnr \\n[%] +.SP \\n[Lsp]u +.misc@ev-keep lix +.init@reset +.br +.ie (\w@\\$1\\$2@)>(\\n[.l]-\\n[.i]) \{\ +. in +\w@\\$1@u +. ti 0 +.\} +.el .ce 1 +\fB\\$1\fP\\$2 +.br +.ev +.\" save line for LIST OF XXX, wth is the width of the label +.if !r lix*wth\\$3 .nr lix*wth\\$3 0 +.\" find the maximum width +.if \w@\\*[lix*label]@>\\n[lix*wth\\$3] .nr lix*wth\\$3 \w@\\*[lix*label]@ +.if \\n[\\$4] .lix@ds-save \\$3 \\*[lix*pgnr] "\\*[lix*text]" "\\*[lix*label]" +.\" save reference to the figure +.if !'\\$5'' .SETR \\$5 \\*[lix*numb] +.. +.\" hide printout until diversion is evaluated +.de lix@embedded-text +\!.ie \\\\n[Sectp] .ds lix*pgnr \\\\*[hd*sect-pg] +\!.el .ds lix*pgnr \\\\n[%] +\!.SP \\\\n[Lsp]u +\!.misc@ev-keep lix +\!.ll \\n[.l]u +\!.init@reset +\!.fi +\!.ie (\w@\\$1\\$2@)>(\\\\n[.l]-\\\\n[.i]) \{\ +. in +\w@\\$1@u +\!. ti 0 +\!\fB\\$1\fP\\$2 +\!.\} +\!.el \{\ +. ce 1 +\!\fB\\$1\fP\\$2 +\!.\} +\!.br +\!.ev +.\" save line for LIST OF XXX, wth is the width of the label +\!.if !r lix*wth\\$3 .nr lix*wth\\$3 0 +.\" find the maximum width +\!.if \w@\\*[lix*label]@>\\\\n[lix*wth\\$3] .nr lix*wth\\$3 \w@\\*[lix*label]@ +\!.if \\\\n[\\$4] .lix@ds-save \\$3 \\\\*[lix*pgnr] "\\*[lix*text]" "\\*[lix*label]" +.\" save reference to the figure +\!.if !'\\$5'' .SETR \\$5 \\*[lix*numb] +.. +.\"------------ +.\" print complete list of XXXX +.de lix@print-ds +.\" arg: fg,tb,ec,ex text +.ds H1txt \\$3 +.ds Tcst \\$1 +.if !\\n[Cp] .pg@next-page +.\" print LIST OF XXXX +.\" execute user-defined macros +.if \\$4<=4 .if d TX\\$2 .TX\\$2 +.ie d TY\\$2 .if \\$4<=4 .TY\\$2 +.el \{\ +. ce +\\$3 +. SP 3 +.\} +.in \\n[lix*wth\\$1]u +.fi +.lix*ds\\$1 +.. +.\"------------ +.\" save line of list in macro +.de lix@ds-save +.\" type pagenumber text +.am lix*ds\\$1 +.lix@dsln \\$1 \\$2 "\\$3" "\\$4" \\$5 +\\.. +.. +.\"------------ +.\" print appended macro +.\" lix@dsln type pagenumber text headernr +.de lix@dsln +.nr lix*i \\n[lix*wth\\$1]-\w@\\$4@ +.ne 4v +. |